diff --git a/fusl/arch/aarch64/atomic_arch.h b/fusl/arch/aarch64/atomic_arch.h
index af93d87..54cf287 100644
--- a/fusl/arch/aarch64/atomic_arch.h
+++ b/fusl/arch/aarch64/atomic_arch.h
@@ -1,73 +1,72 @@
 #define a_ll a_ll
-static inline int a_ll(volatile int *p)
-{
-	int v;
-	__asm__ __volatile__ ("ldaxr %w0,%1" : "=r"(v) : "Q"(*p));
-	return v;
+static inline int a_ll(volatile int* p) {
+  int v;
+  __asm__ __volatile__("ldaxr %w0,%1" : "=r"(v) : "Q"(*p));
+  return v;
 }
 
 #define a_sc a_sc
-static inline int a_sc(volatile int *p, int v)
-{
-	int r;
-	__asm__ __volatile__ ("stlxr %w0,%w2,%1" : "=&r"(r), "=Q"(*p) : "r"(v) : "memory");
-	return !r;
+static inline int a_sc(volatile int* p, int v) {
+  int r;
+  __asm__ __volatile__("stlxr %w0,%w2,%1"
+                       : "=&r"(r), "=Q"(*p)
+                       : "r"(v)
+                       : "memory");
+  return !r;
 }
 
 #define a_barrier a_barrier
-static inline void a_barrier()
-{
-	__asm__ __volatile__ ("dmb ish" : : : "memory");
+static inline void a_barrier() {
+  __asm__ __volatile__("dmb ish" : : : "memory");
 }
 
 #define a_cas a_cas
-static inline int a_cas(volatile int *p, int t, int s)
-{
-	int old;
-	do {
-		old = a_ll(p);
-		if (old != t) {
-			a_barrier();
-			break;
-		}
-	} while (!a_sc(p, s));
-	return old;
+static inline int a_cas(volatile int* p, int t, int s) {
+  int old;
+  do {
+    old = a_ll(p);
+    if (old != t) {
+      a_barrier();
+      break;
+    }
+  } while (!a_sc(p, s));
+  return old;
 }
 
-static inline void *a_ll_p(volatile void *p)
-{
-	void *v;
-	__asm__ __volatile__ ("ldaxr %0, %1" : "=r"(v) : "Q"(*(void *volatile *)p));
-	return v;
+static inline void* a_ll_p(volatile void* p) {
+  void* v;
+  __asm__ __volatile__("ldaxr %0, %1" : "=r"(v) : "Q"(*(void* volatile*)p));
+  return v;
 }
 
-static inline int a_sc_p(volatile int *p, void *v)
-{
-	int r;
-	__asm__ __volatile__ ("stlxr %w0,%2,%1" : "=&r"(r), "=Q"(*(void *volatile *)p) : "r"(v) : "memory");
-	return !r;
+static inline int a_sc_p(volatile int* p, void* v) {
+  int r;
+  __asm__ __volatile__("stlxr %w0,%2,%1"
+                       : "=&r"(r), "=Q"(*(void* volatile*)p)
+                       : "r"(v)
+                       : "memory");
+  return !r;
 }
 
 #define a_cas_p a_cas_p
-static inline void *a_cas_p(volatile void *p, void *t, void *s)
-{
-	void *old;
-	do {
-		old = a_ll_p(p);
-		if (old != t) {
-			a_barrier();
-			break;
-		}
-	} while (!a_sc_p(p, s));
-	return old;
+static inline void* a_cas_p(volatile void* p, void* t, void* s) {
+  void* old;
+  do {
+    old = a_ll_p(p);
+    if (old != t) {
+      a_barrier();
+      break;
+    }
+  } while (!a_sc_p(p, s));
+  return old;
 }
 
 #define a_ctz_64 a_ctz_64
-static inline int a_ctz_64(uint64_t x)
-{
-	__asm__(
-		"	rbit %0, %1\n"
-		"	clz %0, %0\n"
-		: "=r"(x) : "r"(x));
-	return x;
+static inline int a_ctz_64(uint64_t x) {
+  __asm__(
+      "	rbit %0, %1\n"
+      "	clz %0, %0\n"
+      : "=r"(x)
+      : "r"(x));
+  return x;
 }
diff --git a/fusl/arch/aarch64/bits/fcntl.h b/fusl/arch/aarch64/bits/fcntl.h
index 9278797..b9420d0 100644
--- a/fusl/arch/aarch64/bits/fcntl.h
+++ b/fusl/arch/aarch64/bits/fcntl.h
@@ -1,31 +1,31 @@
-#define O_CREAT        0100
-#define O_EXCL         0200
-#define O_NOCTTY       0400
-#define O_TRUNC       01000
-#define O_APPEND      02000
-#define O_NONBLOCK    04000
-#define O_DSYNC      010000
-#define O_SYNC     04010000
-#define O_RSYNC    04010000
-#define O_DIRECTORY  040000
-#define O_NOFOLLOW  0100000
-#define O_CLOEXEC  02000000
+#define O_CREAT 0100
+#define O_EXCL 0200
+#define O_NOCTTY 0400
+#define O_TRUNC 01000
+#define O_APPEND 02000
+#define O_NONBLOCK 04000
+#define O_DSYNC 010000
+#define O_SYNC 04010000
+#define O_RSYNC 04010000
+#define O_DIRECTORY 040000
+#define O_NOFOLLOW 0100000
+#define O_CLOEXEC 02000000
 
-#define O_ASYNC      020000
-#define O_DIRECT    0200000
+#define O_ASYNC 020000
+#define O_DIRECT 0200000
 #define O_LARGEFILE 0400000
-#define O_NOATIME  01000000
-#define O_PATH    010000000
+#define O_NOATIME 01000000
+#define O_PATH 010000000
 #define O_TMPFILE 020040000
 #define O_NDELAY O_NONBLOCK
 
-#define F_DUPFD  0
-#define F_GETFD  1
-#define F_SETFD  2
-#define F_GETFL  3
-#define F_SETFL  4
-#define F_GETLK  5
-#define F_SETLK  6
+#define F_DUPFD 0
+#define F_GETFD 1
+#define F_SETFD 2
+#define F_GETFL 3
+#define F_SETFL 4
+#define F_GETLK 5
+#define F_SETLK 6
 #define F_SETLKW 7
 #define F_SETOWN 8
 #define F_GETOWN 9
diff --git a/fusl/arch/aarch64/bits/fenv.h b/fusl/arch/aarch64/bits/fenv.h
index 2f3279a..a370540 100644
--- a/fusl/arch/aarch64/bits/fenv.h
+++ b/fusl/arch/aarch64/bits/fenv.h
@@ -1,19 +1,19 @@
-#define FE_INVALID    1
-#define FE_DIVBYZERO  2
-#define FE_OVERFLOW   4
-#define FE_UNDERFLOW  8
-#define FE_INEXACT    16
+#define FE_INVALID 1
+#define FE_DIVBYZERO 2
+#define FE_OVERFLOW 4
+#define FE_UNDERFLOW 8
+#define FE_INEXACT 16
 #define FE_ALL_EXCEPT 31
-#define FE_TONEAREST  0
-#define FE_DOWNWARD   0x800000
-#define FE_UPWARD     0x400000
+#define FE_TONEAREST 0
+#define FE_DOWNWARD 0x800000
+#define FE_UPWARD 0x400000
 #define FE_TOWARDZERO 0xc00000
 
 typedef unsigned int fexcept_t;
 
 typedef struct {
-	unsigned int __fpcr;
-	unsigned int __fpsr;
+  unsigned int __fpcr;
+  unsigned int __fpsr;
 } fenv_t;
 
-#define FE_DFL_ENV      ((const fenv_t *) -1)
+#define FE_DFL_ENV ((const fenv_t*)-1)
diff --git a/fusl/arch/aarch64/bits/ioctl.h b/fusl/arch/aarch64/bits/ioctl.h
index 0345077..40835ba 100644
--- a/fusl/arch/aarch64/bits/ioctl.h
+++ b/fusl/arch/aarch64/bits/ioctl.h
@@ -1,213 +1,213 @@
-#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) )
-#define _IOC_NONE  0U
+#define _IOC(a, b, c, d) (((a) << 30) | ((b) << 8) | (c) | ((d) << 16))
+#define _IOC_NONE 0U
 #define _IOC_WRITE 1U
-#define _IOC_READ  2U
+#define _IOC_READ 2U
 
-#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0)
-#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c))
-#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c))
-#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c))
+#define _IO(a, b) _IOC(_IOC_NONE, (a), (b), 0)
+#define _IOW(a, b, c) _IOC(_IOC_WRITE, (a), (b), sizeof(c))
+#define _IOR(a, b, c) _IOC(_IOC_READ, (a), (b), sizeof(c))
+#define _IOWR(a, b, c) _IOC(_IOC_READ | _IOC_WRITE, (a), (b), sizeof(c))
 
-#define TCGETS		0x5401
-#define TCSETS		0x5402
-#define TCSETSW		0x5403
-#define TCSETSF		0x5404
-#define TCGETA		0x5405
-#define TCSETA		0x5406
-#define TCSETAW		0x5407
-#define TCSETAF		0x5408
-#define TCSBRK		0x5409
-#define TCXONC		0x540A
-#define TCFLSH		0x540B
-#define TIOCEXCL	0x540C
-#define TIOCNXCL	0x540D
-#define TIOCSCTTY	0x540E
-#define TIOCGPGRP	0x540F
-#define TIOCSPGRP	0x5410
-#define TIOCOUTQ	0x5411
-#define TIOCSTI		0x5412
-#define TIOCGWINSZ	0x5413
-#define TIOCSWINSZ	0x5414
-#define TIOCMGET	0x5415
-#define TIOCMBIS	0x5416
-#define TIOCMBIC	0x5417
-#define TIOCMSET	0x5418
-#define TIOCGSOFTCAR	0x5419
-#define TIOCSSOFTCAR	0x541A
-#define FIONREAD	0x541B
-#define TIOCINQ		FIONREAD
-#define TIOCLINUX	0x541C
-#define TIOCCONS	0x541D
-#define TIOCGSERIAL	0x541E
-#define TIOCSSERIAL	0x541F
-#define TIOCPKT		0x5420
-#define FIONBIO		0x5421
-#define TIOCNOTTY	0x5422
-#define TIOCSETD	0x5423
-#define TIOCGETD	0x5424
-#define TCSBRKP		0x5425
-#define TIOCTTYGSTRUCT	0x5426
-#define TIOCSBRK	0x5427
-#define TIOCCBRK	0x5428
-#define TIOCGSID	0x5429
-#define TIOCGRS485      0x542E
-#define TIOCSRS485      0x542F
-#define TIOCGPTN        _IOR('T', 0x30, unsigned int)
-#define TIOCSPTLCK      _IOW('T', 0x31, int)
-#define TIOCGDEV        _IOR('T', 0x32, unsigned int)
-#define TCGETX		0x5432
-#define TCSETX		0x5433
-#define TCSETXF		0x5434
-#define TCSETXW		0x5435
-#define TIOCSIG         0x40045436
-#define TIOCVHANGUP     0x5437
-#define TIOCGPKT        0x80045438
-#define TIOCGPTLCK      0x80045439
-#define TIOCGEXCL       0x80045440
+#define TCGETS 0x5401
+#define TCSETS 0x5402
+#define TCSETSW 0x5403
+#define TCSETSF 0x5404
+#define TCGETA 0x5405
+#define TCSETA 0x5406
+#define TCSETAW 0x5407
+#define TCSETAF 0x5408
+#define TCSBRK 0x5409
+#define TCXONC 0x540A
+#define TCFLSH 0x540B
+#define TIOCEXCL 0x540C
+#define TIOCNXCL 0x540D
+#define TIOCSCTTY 0x540E
+#define TIOCGPGRP 0x540F
+#define TIOCSPGRP 0x5410
+#define TIOCOUTQ 0x5411
+#define TIOCSTI 0x5412
+#define TIOCGWINSZ 0x5413
+#define TIOCSWINSZ 0x5414
+#define TIOCMGET 0x5415
+#define TIOCMBIS 0x5416
+#define TIOCMBIC 0x5417
+#define TIOCMSET 0x5418
+#define TIOCGSOFTCAR 0x5419
+#define TIOCSSOFTCAR 0x541A
+#define FIONREAD 0x541B
+#define TIOCINQ FIONREAD
+#define TIOCLINUX 0x541C
+#define TIOCCONS 0x541D
+#define TIOCGSERIAL 0x541E
+#define TIOCSSERIAL 0x541F
+#define TIOCPKT 0x5420
+#define FIONBIO 0x5421
+#define TIOCNOTTY 0x5422
+#define TIOCSETD 0x5423
+#define TIOCGETD 0x5424
+#define TCSBRKP 0x5425
+#define TIOCTTYGSTRUCT 0x5426
+#define TIOCSBRK 0x5427
+#define TIOCCBRK 0x5428
+#define TIOCGSID 0x5429
+#define TIOCGRS485 0x542E
+#define TIOCSRS485 0x542F
+#define TIOCGPTN _IOR('T', 0x30, unsigned int)
+#define TIOCSPTLCK _IOW('T', 0x31, int)
+#define TIOCGDEV _IOR('T', 0x32, unsigned int)
+#define TCGETX 0x5432
+#define TCSETX 0x5433
+#define TCSETXF 0x5434
+#define TCSETXW 0x5435
+#define TIOCSIG 0x40045436
+#define TIOCVHANGUP 0x5437
+#define TIOCGPKT 0x80045438
+#define TIOCGPTLCK 0x80045439
+#define TIOCGEXCL 0x80045440
 
-#define FIONCLEX	0x5450
-#define FIOCLEX		0x5451
-#define FIOASYNC	0x5452
-#define TIOCSERCONFIG	0x5453
-#define TIOCSERGWILD	0x5454
-#define TIOCSERSWILD	0x5455
-#define TIOCGLCKTRMIOS	0x5456
-#define TIOCSLCKTRMIOS	0x5457
-#define TIOCSERGSTRUCT	0x5458
-#define TIOCSERGETLSR   0x5459
+#define FIONCLEX 0x5450
+#define FIOCLEX 0x5451
+#define FIOASYNC 0x5452
+#define TIOCSERCONFIG 0x5453
+#define TIOCSERGWILD 0x5454
+#define TIOCSERSWILD 0x5455
+#define TIOCGLCKTRMIOS 0x5456
+#define TIOCSLCKTRMIOS 0x5457
+#define TIOCSERGSTRUCT 0x5458
+#define TIOCSERGETLSR 0x5459
 #define TIOCSERGETMULTI 0x545A
 #define TIOCSERSETMULTI 0x545B
 
-#define TIOCMIWAIT	0x545C
-#define TIOCGICOUNT	0x545D
-#define FIOQSIZE	0x5460
+#define TIOCMIWAIT 0x545C
+#define TIOCGICOUNT 0x545D
+#define FIOQSIZE 0x5460
 
-#define TIOCPKT_DATA		 0
-#define TIOCPKT_FLUSHREAD	 1
-#define TIOCPKT_FLUSHWRITE	 2
-#define TIOCPKT_STOP		 4
-#define TIOCPKT_START		 8
-#define TIOCPKT_NOSTOP		16
-#define TIOCPKT_DOSTOP		32
-#define TIOCPKT_IOCTL		64
+#define TIOCPKT_DATA 0
+#define TIOCPKT_FLUSHREAD 1
+#define TIOCPKT_FLUSHWRITE 2
+#define TIOCPKT_STOP 4
+#define TIOCPKT_START 8
+#define TIOCPKT_NOSTOP 16
+#define TIOCPKT_DOSTOP 32
+#define TIOCPKT_IOCTL 64
 
-#define TIOCSER_TEMT    0x01
+#define TIOCSER_TEMT 0x01
 
 struct winsize {
-	unsigned short ws_row;
-	unsigned short ws_col;
-	unsigned short ws_xpixel;
-	unsigned short ws_ypixel;
+  unsigned short ws_row;
+  unsigned short ws_col;
+  unsigned short ws_xpixel;
+  unsigned short ws_ypixel;
 };
 
-#define TIOCM_LE        0x001
-#define TIOCM_DTR       0x002
-#define TIOCM_RTS       0x004
-#define TIOCM_ST        0x008
-#define TIOCM_SR        0x010
-#define TIOCM_CTS       0x020
-#define TIOCM_CAR       0x040
-#define TIOCM_RNG       0x080
-#define TIOCM_DSR       0x100
-#define TIOCM_CD        TIOCM_CAR
-#define TIOCM_RI        TIOCM_RNG
-#define TIOCM_OUT1      0x2000
-#define TIOCM_OUT2      0x4000
-#define TIOCM_LOOP      0x8000
+#define TIOCM_LE 0x001
+#define TIOCM_DTR 0x002
+#define TIOCM_RTS 0x004
+#define TIOCM_ST 0x008
+#define TIOCM_SR 0x010
+#define TIOCM_CTS 0x020
+#define TIOCM_CAR 0x040
+#define TIOCM_RNG 0x080
+#define TIOCM_DSR 0x100
+#define TIOCM_CD TIOCM_CAR
+#define TIOCM_RI TIOCM_RNG
+#define TIOCM_OUT1 0x2000
+#define TIOCM_OUT2 0x4000
+#define TIOCM_LOOP 0x8000
 #define TIOCM_MODEM_BITS TIOCM_OUT2
 
-#define N_TTY           0
-#define N_SLIP          1
-#define N_MOUSE         2
-#define N_PPP           3
-#define N_STRIP         4
-#define N_AX25          5
-#define N_X25           6
-#define N_6PACK         7
-#define N_MASC          8
-#define N_R3964         9
-#define N_PROFIBUS_FDL  10
-#define N_IRDA          11
-#define N_SMSBLOCK      12
-#define N_HDLC          13
-#define N_SYNC_PPP      14
-#define N_HCI           15
-#define N_GIGASET_M101  16
-#define N_SLCAN         17
-#define N_PPS           18
-#define N_V253          19
-#define N_CAIF          20
-#define N_GSM0710       21
-#define N_TI_WL         22
-#define N_TRACESINK     23
-#define N_TRACEROUTER   24
+#define N_TTY 0
+#define N_SLIP 1
+#define N_MOUSE 2
+#define N_PPP 3
+#define N_STRIP 4
+#define N_AX25 5
+#define N_X25 6
+#define N_6PACK 7
+#define N_MASC 8
+#define N_R3964 9
+#define N_PROFIBUS_FDL 10
+#define N_IRDA 11
+#define N_SMSBLOCK 12
+#define N_HDLC 13
+#define N_SYNC_PPP 14
+#define N_HCI 15
+#define N_GIGASET_M101 16
+#define N_SLCAN 17
+#define N_PPS 18
+#define N_V253 19
+#define N_CAIF 20
+#define N_GSM0710 21
+#define N_TI_WL 22
+#define N_TRACESINK 23
+#define N_TRACEROUTER 24
 
-#define FIOSETOWN       0x8901
-#define SIOCSPGRP       0x8902
-#define FIOGETOWN       0x8903
-#define SIOCGPGRP       0x8904
-#define SIOCATMARK      0x8905
-#define SIOCGSTAMP      0x8906
-#define SIOCGSTAMPNS	0x8907
+#define FIOSETOWN 0x8901
+#define SIOCSPGRP 0x8902
+#define FIOGETOWN 0x8903
+#define SIOCGPGRP 0x8904
+#define SIOCATMARK 0x8905
+#define SIOCGSTAMP 0x8906
+#define SIOCGSTAMPNS 0x8907
 
-#define SIOCADDRT       0x890B
-#define SIOCDELRT       0x890C
-#define SIOCRTMSG       0x890D
+#define SIOCADDRT 0x890B
+#define SIOCDELRT 0x890C
+#define SIOCRTMSG 0x890D
 
-#define SIOCGIFNAME     0x8910
-#define SIOCSIFLINK     0x8911
-#define SIOCGIFCONF     0x8912
-#define SIOCGIFFLAGS    0x8913
-#define SIOCSIFFLAGS    0x8914
-#define SIOCGIFADDR     0x8915
-#define SIOCSIFADDR     0x8916
-#define SIOCGIFDSTADDR  0x8917
-#define SIOCSIFDSTADDR  0x8918
-#define SIOCGIFBRDADDR  0x8919
-#define SIOCSIFBRDADDR  0x891a
-#define SIOCGIFNETMASK  0x891b
-#define SIOCSIFNETMASK  0x891c
-#define SIOCGIFMETRIC   0x891d
-#define SIOCSIFMETRIC   0x891e
-#define SIOCGIFMEM      0x891f
-#define SIOCSIFMEM      0x8920
-#define SIOCGIFMTU      0x8921
-#define SIOCSIFMTU      0x8922
-#define SIOCSIFHWADDR   0x8924
-#define SIOCGIFENCAP    0x8925
-#define SIOCSIFENCAP    0x8926
-#define SIOCGIFHWADDR   0x8927
-#define SIOCGIFSLAVE    0x8929
-#define SIOCSIFSLAVE    0x8930
-#define SIOCADDMULTI    0x8931
-#define SIOCDELMULTI    0x8932
-#define SIOCGIFINDEX    0x8933
-#define SIOGIFINDEX     SIOCGIFINDEX
-#define SIOCSIFPFLAGS   0x8934
-#define SIOCGIFPFLAGS   0x8935
-#define SIOCDIFADDR     0x8936
+#define SIOCGIFNAME 0x8910
+#define SIOCSIFLINK 0x8911
+#define SIOCGIFCONF 0x8912
+#define SIOCGIFFLAGS 0x8913
+#define SIOCSIFFLAGS 0x8914
+#define SIOCGIFADDR 0x8915
+#define SIOCSIFADDR 0x8916
+#define SIOCGIFDSTADDR 0x8917
+#define SIOCSIFDSTADDR 0x8918
+#define SIOCGIFBRDADDR 0x8919
+#define SIOCSIFBRDADDR 0x891a
+#define SIOCGIFNETMASK 0x891b
+#define SIOCSIFNETMASK 0x891c
+#define SIOCGIFMETRIC 0x891d
+#define SIOCSIFMETRIC 0x891e
+#define SIOCGIFMEM 0x891f
+#define SIOCSIFMEM 0x8920
+#define SIOCGIFMTU 0x8921
+#define SIOCSIFMTU 0x8922
+#define SIOCSIFHWADDR 0x8924
+#define SIOCGIFENCAP 0x8925
+#define SIOCSIFENCAP 0x8926
+#define SIOCGIFHWADDR 0x8927
+#define SIOCGIFSLAVE 0x8929
+#define SIOCSIFSLAVE 0x8930
+#define SIOCADDMULTI 0x8931
+#define SIOCDELMULTI 0x8932
+#define SIOCGIFINDEX 0x8933
+#define SIOGIFINDEX SIOCGIFINDEX
+#define SIOCSIFPFLAGS 0x8934
+#define SIOCGIFPFLAGS 0x8935
+#define SIOCDIFADDR 0x8936
 #define SIOCSIFHWBROADCAST 0x8937
-#define SIOCGIFCOUNT    0x8938
+#define SIOCGIFCOUNT 0x8938
 
-#define SIOCGIFBR       0x8940
-#define SIOCSIFBR       0x8941
+#define SIOCGIFBR 0x8940
+#define SIOCSIFBR 0x8941
 
-#define SIOCGIFTXQLEN   0x8942
-#define SIOCSIFTXQLEN   0x8943
+#define SIOCGIFTXQLEN 0x8942
+#define SIOCSIFTXQLEN 0x8943
 
-#define SIOCDARP        0x8953
-#define SIOCGARP        0x8954
-#define SIOCSARP        0x8955
+#define SIOCDARP 0x8953
+#define SIOCGARP 0x8954
+#define SIOCSARP 0x8955
 
-#define SIOCDRARP       0x8960
-#define SIOCGRARP       0x8961
-#define SIOCSRARP       0x8962
+#define SIOCDRARP 0x8960
+#define SIOCGRARP 0x8961
+#define SIOCSRARP 0x8962
 
-#define SIOCGIFMAP      0x8970
-#define SIOCSIFMAP      0x8971
+#define SIOCGIFMAP 0x8970
+#define SIOCSIFMAP 0x8971
 
-#define SIOCADDDLCI     0x8980
-#define SIOCDELDLCI     0x8981
+#define SIOCADDDLCI 0x8980
+#define SIOCDELDLCI 0x8981
 
-#define SIOCDEVPRIVATE		0x89F0
-#define SIOCPROTOPRIVATE	0x89E0
+#define SIOCDEVPRIVATE 0x89F0
+#define SIOCPROTOPRIVATE 0x89E0
diff --git a/fusl/arch/aarch64/bits/ipc.h b/fusl/arch/aarch64/bits/ipc.h
index 9a47bc7..26161a2 100644
--- a/fusl/arch/aarch64/bits/ipc.h
+++ b/fusl/arch/aarch64/bits/ipc.h
@@ -1,15 +1,14 @@
-struct ipc_perm
-{
-	key_t __ipc_perm_key;
-	uid_t uid;
-	gid_t gid;
-	uid_t cuid;
-	gid_t cgid;
-	mode_t mode;
-	unsigned short __ipc_perm_seq;
+struct ipc_perm {
+  key_t __ipc_perm_key;
+  uid_t uid;
+  gid_t gid;
+  uid_t cuid;
+  gid_t cgid;
+  mode_t mode;
+  unsigned short __ipc_perm_seq;
 
-	unsigned long __pad1;
-	unsigned long __pad2;
+  unsigned long __pad1;
+  unsigned long __pad2;
 };
 
 #define IPC_64 0
diff --git a/fusl/arch/aarch64/bits/limits.h b/fusl/arch/aarch64/bits/limits.h
index 0226588..edfdc1c 100644
--- a/fusl/arch/aarch64/bits/limits.h
+++ b/fusl/arch/aarch64/bits/limits.h
@@ -1,7 +1,7 @@
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define LONG_BIT 64
 #endif
 
-#define LONG_MAX  0x7fffffffffffffffL
-#define LLONG_MAX  0x7fffffffffffffffLL
+#define LONG_MAX 0x7fffffffffffffffL
+#define LLONG_MAX 0x7fffffffffffffffLL
diff --git a/fusl/arch/aarch64/bits/mman.h b/fusl/arch/aarch64/bits/mman.h
index 31ece5b..6b41d69 100644
--- a/fusl/arch/aarch64/bits/mman.h
+++ b/fusl/arch/aarch64/bits/mman.h
@@ -1,58 +1,58 @@
-#define MAP_FAILED ((void *) -1)
+#define MAP_FAILED ((void*)-1)
 
-#define	PROT_NONE      0
-#define	PROT_READ      1
-#define	PROT_WRITE     2
-#define	PROT_EXEC      4
-#define PROT_GROWSDOWN  0x01000000
-#define PROT_GROWSUP    0x02000000
+#define PROT_NONE 0
+#define PROT_READ 1
+#define PROT_WRITE 2
+#define PROT_EXEC 4
+#define PROT_GROWSDOWN 0x01000000
+#define PROT_GROWSUP 0x02000000
 
-#define	MAP_SHARED     0x01
-#define	MAP_PRIVATE    0x02
-#define	MAP_FIXED      0x10
-#define MAP_TYPE       0x0f
-#define MAP_FILE       0x00
-#define MAP_ANON       0x20
-#define MAP_ANONYMOUS  MAP_ANON
-#define MAP_NORESERVE  0x4000
-#define MAP_GROWSDOWN  0x0100
-#define MAP_DENYWRITE  0x0800
+#define MAP_SHARED 0x01
+#define MAP_PRIVATE 0x02
+#define MAP_FIXED 0x10
+#define MAP_TYPE 0x0f
+#define MAP_FILE 0x00
+#define MAP_ANON 0x20
+#define MAP_ANONYMOUS MAP_ANON
+#define MAP_NORESERVE 0x4000
+#define MAP_GROWSDOWN 0x0100
+#define MAP_DENYWRITE 0x0800
 #define MAP_EXECUTABLE 0x1000
-#define MAP_LOCKED     0x2000
-#define MAP_POPULATE   0x8000
-#define MAP_NONBLOCK   0x10000
-#define MAP_STACK      0x20000
-#define MAP_HUGETLB    0x40000
+#define MAP_LOCKED 0x2000
+#define MAP_POPULATE 0x8000
+#define MAP_NONBLOCK 0x10000
+#define MAP_STACK 0x20000
+#define MAP_HUGETLB 0x40000
 
-#define POSIX_MADV_NORMAL       0
-#define POSIX_MADV_RANDOM       1
-#define POSIX_MADV_SEQUENTIAL   2
-#define POSIX_MADV_WILLNEED     3
-#define POSIX_MADV_DONTNEED     0
+#define POSIX_MADV_NORMAL 0
+#define POSIX_MADV_RANDOM 1
+#define POSIX_MADV_SEQUENTIAL 2
+#define POSIX_MADV_WILLNEED 3
+#define POSIX_MADV_DONTNEED 0
 
-#define MS_ASYNC        1
-#define MS_INVALIDATE   2
-#define MS_SYNC         4
+#define MS_ASYNC 1
+#define MS_INVALIDATE 2
+#define MS_SYNC 4
 
-#define MCL_CURRENT     1
-#define MCL_FUTURE      2
-#define MCL_ONFAULT     4
+#define MCL_CURRENT 1
+#define MCL_FUTURE 2
+#define MCL_ONFAULT 4
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#define MADV_NORMAL      0
-#define MADV_RANDOM      1
-#define MADV_SEQUENTIAL  2
-#define MADV_WILLNEED    3
-#define MADV_DONTNEED    4
-#define MADV_REMOVE      9
-#define MADV_DONTFORK    10
-#define MADV_DOFORK      11
-#define MADV_MERGEABLE   12
+#define MADV_NORMAL 0
+#define MADV_RANDOM 1
+#define MADV_SEQUENTIAL 2
+#define MADV_WILLNEED 3
+#define MADV_DONTNEED 4
+#define MADV_REMOVE 9
+#define MADV_DONTFORK 10
+#define MADV_DOFORK 11
+#define MADV_MERGEABLE 12
 #define MADV_UNMERGEABLE 13
-#define MADV_HUGEPAGE    14
-#define MADV_NOHUGEPAGE  15
-#define MADV_DONTDUMP    16
-#define MADV_DODUMP      17
-#define MADV_HWPOISON    100
+#define MADV_HUGEPAGE 14
+#define MADV_NOHUGEPAGE 15
+#define MADV_DONTDUMP 16
+#define MADV_DODUMP 17
+#define MADV_HWPOISON 100
 #define MADV_SOFT_OFFLINE 101
 #endif
diff --git a/fusl/arch/aarch64/bits/msg.h b/fusl/arch/aarch64/bits/msg.h
index 0135a08..68536f9 100644
--- a/fusl/arch/aarch64/bits/msg.h
+++ b/fusl/arch/aarch64/bits/msg.h
@@ -1,14 +1,13 @@
-struct msqid_ds
-{
-	struct ipc_perm msg_perm;
-	time_t msg_stime;
-	time_t msg_rtime;
-	time_t msg_ctime;
-	unsigned long msg_cbytes;
-	msgqnum_t msg_qnum;
-	msglen_t msg_qbytes;
-	pid_t msg_lspid;
-	pid_t msg_lrpid;
-	unsigned long __pad1;
-	unsigned long __pad2;
+struct msqid_ds {
+  struct ipc_perm msg_perm;
+  time_t msg_stime;
+  time_t msg_rtime;
+  time_t msg_ctime;
+  unsigned long msg_cbytes;
+  msgqnum_t msg_qnum;
+  msglen_t msg_qbytes;
+  pid_t msg_lspid;
+  pid_t msg_lrpid;
+  unsigned long __pad1;
+  unsigned long __pad2;
 };
diff --git a/fusl/arch/aarch64/bits/posix.h b/fusl/arch/aarch64/bits/posix.h
index c37b94c..8068ce9 100644
--- a/fusl/arch/aarch64/bits/posix.h
+++ b/fusl/arch/aarch64/bits/posix.h
@@ -1,2 +1,2 @@
-#define _POSIX_V6_LP64_OFF64  1
-#define _POSIX_V7_LP64_OFF64  1
+#define _POSIX_V6_LP64_OFF64 1
+#define _POSIX_V7_LP64_OFF64 1
diff --git a/fusl/arch/aarch64/bits/sem.h b/fusl/arch/aarch64/bits/sem.h
index e46ced9..db4102f 100644
--- a/fusl/arch/aarch64/bits/sem.h
+++ b/fusl/arch/aarch64/bits/sem.h
@@ -1,14 +1,14 @@
 struct semid_ds {
-	struct ipc_perm sem_perm;
-	time_t sem_otime;
-	time_t sem_ctime;
+  struct ipc_perm sem_perm;
+  time_t sem_otime;
+  time_t sem_ctime;
 #if __BYTE_ORDER == __LITTLE_ENDIAN
-	unsigned short sem_nsems;
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
+  unsigned short sem_nsems;
+  char __sem_nsems_pad[sizeof(time_t) - sizeof(short)];
 #else
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
-	unsigned short sem_nsems;
+  char __sem_nsems_pad[sizeof(time_t) - sizeof(short)];
+  unsigned short sem_nsems;
 #endif
-	time_t __unused3;
-	time_t __unused4;
+  time_t __unused3;
+  time_t __unused4;
 };
diff --git a/fusl/arch/aarch64/bits/shm.h b/fusl/arch/aarch64/bits/shm.h
index 4c3c9fb..a3b9dcc 100644
--- a/fusl/arch/aarch64/bits/shm.h
+++ b/fusl/arch/aarch64/bits/shm.h
@@ -1,25 +1,24 @@
 #define SHMLBA 4096
 
-struct shmid_ds
-{
-	struct ipc_perm shm_perm;
-	size_t shm_segsz;
-	time_t shm_atime;
-	time_t shm_dtime;
-	time_t shm_ctime;
-	pid_t shm_cpid;
-	pid_t shm_lpid;
-	unsigned long shm_nattch;
-	unsigned long __pad1;
-	unsigned long __pad2;
+struct shmid_ds {
+  struct ipc_perm shm_perm;
+  size_t shm_segsz;
+  time_t shm_atime;
+  time_t shm_dtime;
+  time_t shm_ctime;
+  pid_t shm_cpid;
+  pid_t shm_lpid;
+  unsigned long shm_nattch;
+  unsigned long __pad1;
+  unsigned long __pad2;
 };
 
 struct shminfo {
-	unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
+  unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
 };
 
 struct shm_info {
-	int __used_ids;
-	unsigned long shm_tot, shm_rss, shm_swp;
-	unsigned long __swap_attempts, __swap_successes;
+  int __used_ids;
+  unsigned long shm_tot, shm_rss, shm_swp;
+  unsigned long __swap_attempts, __swap_successes;
 };
diff --git a/fusl/arch/aarch64/bits/signal.h b/fusl/arch/aarch64/bits/signal.h
index ef07cc9..dec2fd9 100644
--- a/fusl/arch/aarch64/bits/signal.h
+++ b/fusl/arch/aarch64/bits/signal.h
@@ -1,5 +1,5 @@
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define MINSIGSTKSZ 6144
@@ -11,98 +11,95 @@
 typedef unsigned long gregset_t[34];
 
 typedef struct {
-	long double vregs[32];
-	unsigned int fpsr;
-	unsigned int fpcr;
+  long double vregs[32];
+  unsigned int fpsr;
+  unsigned int fpcr;
 } fpregset_t;
-typedef struct sigcontext
-{
-	unsigned long fault_address;
-	unsigned long regs[31];
-	unsigned long sp, pc, pstate;
-	long double __reserved[256];
+typedef struct sigcontext {
+  unsigned long fault_address;
+  unsigned long regs[31];
+  unsigned long sp, pc, pstate;
+  long double __reserved[256];
 } mcontext_t;
 
 #define FPSIMD_MAGIC 0x46508001
 #define ESR_MAGIC 0x45535201
 struct _aarch64_ctx {
-	unsigned int magic;
-	unsigned int size;
+  unsigned int magic;
+  unsigned int size;
 };
 struct fpsimd_context {
-	struct _aarch64_ctx head;
-	unsigned int fpsr;
-	unsigned int fpcr;
-	long double vregs[32];
+  struct _aarch64_ctx head;
+  unsigned int fpsr;
+  unsigned int fpcr;
+  long double vregs[32];
 };
 struct esr_context {
-	struct _aarch64_ctx head;
-	unsigned long esr;
+  struct _aarch64_ctx head;
+  unsigned long esr;
 };
 #else
-typedef struct {
-	long double __regs[18+256];
-} mcontext_t;
+typedef struct { long double __regs[18 + 256]; } mcontext_t;
 #endif
 
 struct sigaltstack {
-	void *ss_sp;
-	int ss_flags;
-	size_t ss_size;
+  void* ss_sp;
+  int ss_flags;
+  size_t ss_size;
 };
 
 typedef struct __ucontext {
-	unsigned long uc_flags;
-	struct ucontext *uc_link;
-	stack_t uc_stack;
-	sigset_t uc_sigmask;
-	mcontext_t uc_mcontext;
+  unsigned long uc_flags;
+  struct ucontext* uc_link;
+  stack_t uc_stack;
+  sigset_t uc_sigmask;
+  mcontext_t uc_mcontext;
 } ucontext_t;
 
-#define SA_NOCLDSTOP  1
-#define SA_NOCLDWAIT  2
-#define SA_SIGINFO    4
-#define SA_ONSTACK    0x08000000
-#define SA_RESTART    0x10000000
-#define SA_NODEFER    0x40000000
-#define SA_RESETHAND  0x80000000
-#define SA_RESTORER   0x04000000
+#define SA_NOCLDSTOP 1
+#define SA_NOCLDWAIT 2
+#define SA_SIGINFO 4
+#define SA_ONSTACK 0x08000000
+#define SA_RESTART 0x10000000
+#define SA_NODEFER 0x40000000
+#define SA_RESETHAND 0x80000000
+#define SA_RESTORER 0x04000000
 
 #endif
 
-#define SIGHUP    1
-#define SIGINT    2
-#define SIGQUIT   3
-#define SIGILL    4
-#define SIGTRAP   5
-#define SIGABRT   6
-#define SIGIOT    SIGABRT
-#define SIGBUS    7
-#define SIGFPE    8
-#define SIGKILL   9
-#define SIGUSR1   10
-#define SIGSEGV   11
-#define SIGUSR2   12
-#define SIGPIPE   13
-#define SIGALRM   14
-#define SIGTERM   15
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT SIGABRT
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
 #define SIGSTKFLT 16
-#define SIGCHLD   17
-#define SIGCONT   18
-#define SIGSTOP   19
-#define SIGTSTP   20
-#define SIGTTIN   21
-#define SIGTTOU   22
-#define SIGURG    23
-#define SIGXCPU   24
-#define SIGXFSZ   25
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
 #define SIGVTALRM 26
-#define SIGPROF   27
-#define SIGWINCH  28
-#define SIGIO     29
-#define SIGPOLL   29
-#define SIGPWR    30
-#define SIGSYS    31
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL 29
+#define SIGPWR 30
+#define SIGSYS 31
 #define SIGUNUSED SIGSYS
 
 #define _NSIG 65
diff --git a/fusl/arch/aarch64/bits/socket.h b/fusl/arch/aarch64/bits/socket.h
index b3fe643..1127d5b 100644
--- a/fusl/arch/aarch64/bits/socket.h
+++ b/fusl/arch/aarch64/bits/socket.h
@@ -1,35 +1,33 @@
 #include <endian.h>
 
-struct msghdr
-{
-	void *msg_name;
-	socklen_t msg_namelen;
-	struct iovec *msg_iov;
+struct msghdr {
+  void* msg_name;
+  socklen_t msg_namelen;
+  struct iovec* msg_iov;
 #if __BYTE_ORDER == __BIG_ENDIAN
-	int __pad1, msg_iovlen;
+  int __pad1, msg_iovlen;
 #else
-	int msg_iovlen, __pad1;
+  int msg_iovlen, __pad1;
 #endif
-	void *msg_control;
+  void* msg_control;
 #if __BYTE_ORDER == __BIG_ENDIAN
-	int __pad2;
-	socklen_t msg_controllen;
+  int __pad2;
+  socklen_t msg_controllen;
 #else
-	socklen_t msg_controllen;
-	int __pad2;
+  socklen_t msg_controllen;
+  int __pad2;
 #endif
-	int msg_flags;
+  int msg_flags;
 };
 
-struct cmsghdr
-{
+struct cmsghdr {
 #if __BYTE_ORDER == __BIG_ENDIAN
-	int __pad1;
-	socklen_t cmsg_len;
+  int __pad1;
+  socklen_t cmsg_len;
 #else
-	socklen_t cmsg_len;
-	int __pad1;
+  socklen_t cmsg_len;
+  int __pad1;
 #endif
-	int cmsg_level;
-	int cmsg_type;
+  int cmsg_level;
+  int cmsg_type;
 };
diff --git a/fusl/arch/aarch64/bits/stat.h b/fusl/arch/aarch64/bits/stat.h
index b7f4221..3ef1c77 100644
--- a/fusl/arch/aarch64/bits/stat.h
+++ b/fusl/arch/aarch64/bits/stat.h
@@ -1,18 +1,18 @@
 struct stat {
-	dev_t st_dev;
-	ino_t st_ino;
-	mode_t st_mode;
-	nlink_t st_nlink;
-	uid_t st_uid;
-	gid_t st_gid;
-	dev_t st_rdev;
-	unsigned long __pad;
-	off_t st_size;
-	blksize_t st_blksize;
-	int __pad2;
-	blkcnt_t st_blocks;
-	struct timespec st_atim;
-	struct timespec st_mtim;
-	struct timespec st_ctim;
-	unsigned __unused[2];
+  dev_t st_dev;
+  ino_t st_ino;
+  mode_t st_mode;
+  nlink_t st_nlink;
+  uid_t st_uid;
+  gid_t st_gid;
+  dev_t st_rdev;
+  unsigned long __pad;
+  off_t st_size;
+  blksize_t st_blksize;
+  int __pad2;
+  blkcnt_t st_blocks;
+  struct timespec st_atim;
+  struct timespec st_mtim;
+  struct timespec st_ctim;
+  unsigned __unused[2];
 };
diff --git a/fusl/arch/aarch64/bits/stdint.h b/fusl/arch/aarch64/bits/stdint.h
index 1bb147f..7cac025 100644
--- a/fusl/arch/aarch64/bits/stdint.h
+++ b/fusl/arch/aarch64/bits/stdint.h
@@ -3,18 +3,18 @@
 typedef uint32_t uint_fast16_t;
 typedef uint32_t uint_fast32_t;
 
-#define INT_FAST16_MIN  INT32_MIN
-#define INT_FAST32_MIN  INT32_MIN
+#define INT_FAST16_MIN INT32_MIN
+#define INT_FAST32_MIN INT32_MIN
 
-#define INT_FAST16_MAX  INT32_MAX
-#define INT_FAST32_MAX  INT32_MAX
+#define INT_FAST16_MAX INT32_MAX
+#define INT_FAST32_MAX INT32_MAX
 
 #define UINT_FAST16_MAX UINT32_MAX
 #define UINT_FAST32_MAX UINT32_MAX
 
-#define INTPTR_MIN      INT64_MIN
-#define INTPTR_MAX      INT64_MAX
-#define UINTPTR_MAX     UINT64_MAX
-#define PTRDIFF_MIN     INT64_MIN
-#define PTRDIFF_MAX     INT64_MAX
-#define SIZE_MAX        UINT64_MAX
+#define INTPTR_MIN INT64_MIN
+#define INTPTR_MAX INT64_MAX
+#define UINTPTR_MAX UINT64_MAX
+#define PTRDIFF_MIN INT64_MIN
+#define PTRDIFF_MAX INT64_MAX
+#define SIZE_MAX UINT64_MAX
diff --git a/fusl/arch/aarch64/bits/user.h b/fusl/arch/aarch64/bits/user.h
index d12cdf7..b06f324 100644
--- a/fusl/arch/aarch64/bits/user.h
+++ b/fusl/arch/aarch64/bits/user.h
@@ -1,14 +1,14 @@
 struct user_regs_struct {
-	unsigned long long regs[31];
-	unsigned long long sp;
-	unsigned long long pc;
-	unsigned long long pstate;
+  unsigned long long regs[31];
+  unsigned long long sp;
+  unsigned long long pc;
+  unsigned long long pstate;
 };
 
 struct user_fpsimd_struct {
-	long double vregs[32];
-	unsigned int fpsr;
-	unsigned int fpcr;
+  long double vregs[32];
+  unsigned int fpsr;
+  unsigned int fpcr;
 };
 
 #define ELF_NREG 34
diff --git a/fusl/arch/aarch64/crt_arch.h b/fusl/arch/aarch64/crt_arch.h
index b64fb3d..6f99fb5 100644
--- a/fusl/arch/aarch64/crt_arch.h
+++ b/fusl/arch/aarch64/crt_arch.h
@@ -1,15 +1,15 @@
 __asm__(
-".text \n"
-".global " START "\n"
-".type " START ",%function\n"
-START ":\n"
-"	mov x29, #0\n"
-"	mov x30, #0\n"
-"	mov x0, sp\n"
-".weak _DYNAMIC\n"
-".hidden _DYNAMIC\n"
-"	adrp x1, _DYNAMIC\n"
-"	add x1, x1, #:lo12:_DYNAMIC\n"
-"	and sp, x0, #-16\n"
-"	b " START "_c\n"
-);
+    ".text \n"
+    ".global " START
+    "\n"
+    ".type " START ",%function\n" START
+    ":\n"
+    "	mov x29, #0\n"
+    "	mov x30, #0\n"
+    "	mov x0, sp\n"
+    ".weak _DYNAMIC\n"
+    ".hidden _DYNAMIC\n"
+    "	adrp x1, _DYNAMIC\n"
+    "	add x1, x1, #:lo12:_DYNAMIC\n"
+    "	and sp, x0, #-16\n"
+    "	b " START "_c\n");
diff --git a/fusl/arch/aarch64/pthread_arch.h b/fusl/arch/aarch64/pthread_arch.h
index b2e2d8f..8dc54da 100644
--- a/fusl/arch/aarch64/pthread_arch.h
+++ b/fusl/arch/aarch64/pthread_arch.h
@@ -1,11 +1,10 @@
-static inline struct pthread *__pthread_self()
-{
-	char *self;
-	__asm__ __volatile__ ("mrs %0,tpidr_el0" : "=r"(self));
-	return (void*)(self + 16 - sizeof(struct pthread));
+static inline struct pthread* __pthread_self() {
+  char* self;
+  __asm__ __volatile__("mrs %0,tpidr_el0" : "=r"(self));
+  return (void*)(self + 16 - sizeof(struct pthread));
 }
 
 #define TLS_ABOVE_TP
-#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) - 16)
+#define TP_ADJ(p) ((char*)(p) + sizeof(struct pthread) - 16)
 
 #define MC_PC pc
diff --git a/fusl/arch/aarch64/reloc.h b/fusl/arch/aarch64/reloc.h
index 51b66e2..fae355f 100644
--- a/fusl/arch/aarch64/reloc.h
+++ b/fusl/arch/aarch64/reloc.h
@@ -12,15 +12,15 @@
 
 #define TPOFF_K 16
 
-#define REL_SYMBOLIC    R_AARCH64_ABS64
-#define REL_GOT         R_AARCH64_GLOB_DAT
-#define REL_PLT         R_AARCH64_JUMP_SLOT
-#define REL_RELATIVE    R_AARCH64_RELATIVE
-#define REL_COPY        R_AARCH64_COPY
-#define REL_DTPMOD      R_AARCH64_TLS_DTPMOD64
-#define REL_DTPOFF      R_AARCH64_TLS_DTPREL64
-#define REL_TPOFF       R_AARCH64_TLS_TPREL64
-#define REL_TLSDESC     R_AARCH64_TLSDESC
+#define REL_SYMBOLIC R_AARCH64_ABS64
+#define REL_GOT R_AARCH64_GLOB_DAT
+#define REL_PLT R_AARCH64_JUMP_SLOT
+#define REL_RELATIVE R_AARCH64_RELATIVE
+#define REL_COPY R_AARCH64_COPY
+#define REL_DTPMOD R_AARCH64_TLS_DTPMOD64
+#define REL_DTPOFF R_AARCH64_TLS_DTPREL64
+#define REL_TPOFF R_AARCH64_TLS_TPREL64
+#define REL_TLSDESC R_AARCH64_TLSDESC
 
-#define CRTJMP(pc,sp) __asm__ __volatile__( \
-	"mov sp,%1 ; br %0" : : "r"(pc), "r"(sp) : "memory" )
+#define CRTJMP(pc, sp) \
+  __asm__ __volatile__("mov sp,%1 ; br %0" : : "r"(pc), "r"(sp) : "memory")
diff --git a/fusl/arch/aarch64/syscall_arch.h b/fusl/arch/aarch64/syscall_arch.h
index 25f5ce6..89492c4 100644
--- a/fusl/arch/aarch64/syscall_arch.h
+++ b/fusl/arch/aarch64/syscall_arch.h
@@ -1,74 +1,68 @@
 #define __SYSCALL_LL_E(x) (x)
 #define __SYSCALL_LL_O(x) (x)
 
-#define __asm_syscall(...) do { \
-	__asm__ __volatile__ ( "svc 0" \
-	: "=r"(x0) : __VA_ARGS__ : "memory", "cc"); \
-	return x0; \
-	} while (0)
+#define __asm_syscall(...)                                                   \
+  do {                                                                       \
+    __asm__ __volatile__("svc 0" : "=r"(x0) : __VA_ARGS__ : "memory", "cc"); \
+    return x0;                                                               \
+  } while (0)
 
-static inline long __syscall0(long n)
-{
-	register long x8 __asm__("x8") = n;
-	register long x0 __asm__("x0");
-	__asm_syscall("r"(x8));
+static inline long __syscall0(long n) {
+  register long x8 __asm__("x8") = n;
+  register long x0 __asm__("x0");
+  __asm_syscall("r"(x8));
 }
 
-static inline long __syscall1(long n, long a)
-{
-	register long x8 __asm__("x8") = n;
-	register long x0 __asm__("x0") = a;
-	__asm_syscall("r"(x8), "0"(x0));
+static inline long __syscall1(long n, long a) {
+  register long x8 __asm__("x8") = n;
+  register long x0 __asm__("x0") = a;
+  __asm_syscall("r"(x8), "0"(x0));
 }
 
-static inline long __syscall2(long n, long a, long b)
-{
-	register long x8 __asm__("x8") = n;
-	register long x0 __asm__("x0") = a;
-	register long x1 __asm__("x1") = b;
-	__asm_syscall("r"(x8), "0"(x0), "r"(x1));
+static inline long __syscall2(long n, long a, long b) {
+  register long x8 __asm__("x8") = n;
+  register long x0 __asm__("x0") = a;
+  register long x1 __asm__("x1") = b;
+  __asm_syscall("r"(x8), "0"(x0), "r"(x1));
 }
 
-static inline long __syscall3(long n, long a, long b, long c)
-{
-	register long x8 __asm__("x8") = n;
-	register long x0 __asm__("x0") = a;
-	register long x1 __asm__("x1") = b;
-	register long x2 __asm__("x2") = c;
-	__asm_syscall("r"(x8), "0"(x0), "r"(x1), "r"(x2));
+static inline long __syscall3(long n, long a, long b, long c) {
+  register long x8 __asm__("x8") = n;
+  register long x0 __asm__("x0") = a;
+  register long x1 __asm__("x1") = b;
+  register long x2 __asm__("x2") = c;
+  __asm_syscall("r"(x8), "0"(x0), "r"(x1), "r"(x2));
 }
 
-static inline long __syscall4(long n, long a, long b, long c, long d)
-{
-	register long x8 __asm__("x8") = n;
-	register long x0 __asm__("x0") = a;
-	register long x1 __asm__("x1") = b;
-	register long x2 __asm__("x2") = c;
-	register long x3 __asm__("x3") = d;
-	__asm_syscall("r"(x8), "0"(x0), "r"(x1), "r"(x2), "r"(x3));
+static inline long __syscall4(long n, long a, long b, long c, long d) {
+  register long x8 __asm__("x8") = n;
+  register long x0 __asm__("x0") = a;
+  register long x1 __asm__("x1") = b;
+  register long x2 __asm__("x2") = c;
+  register long x3 __asm__("x3") = d;
+  __asm_syscall("r"(x8), "0"(x0), "r"(x1), "r"(x2), "r"(x3));
 }
 
-static inline long __syscall5(long n, long a, long b, long c, long d, long e)
-{
-	register long x8 __asm__("x8") = n;
-	register long x0 __asm__("x0") = a;
-	register long x1 __asm__("x1") = b;
-	register long x2 __asm__("x2") = c;
-	register long x3 __asm__("x3") = d;
-	register long x4 __asm__("x4") = e;
-	__asm_syscall("r"(x8), "0"(x0), "r"(x1), "r"(x2), "r"(x3), "r"(x4));
+static inline long __syscall5(long n, long a, long b, long c, long d, long e) {
+  register long x8 __asm__("x8") = n;
+  register long x0 __asm__("x0") = a;
+  register long x1 __asm__("x1") = b;
+  register long x2 __asm__("x2") = c;
+  register long x3 __asm__("x3") = d;
+  register long x4 __asm__("x4") = e;
+  __asm_syscall("r"(x8), "0"(x0), "r"(x1), "r"(x2), "r"(x3), "r"(x4));
 }
 
-static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
-{
-	register long x8 __asm__("x8") = n;
-	register long x0 __asm__("x0") = a;
-	register long x1 __asm__("x1") = b;
-	register long x2 __asm__("x2") = c;
-	register long x3 __asm__("x3") = d;
-	register long x4 __asm__("x4") = e;
-	register long x5 __asm__("x5") = f;
-	__asm_syscall("r"(x8), "0"(x0), "r"(x1), "r"(x2), "r"(x3), "r"(x4), "r"(x5));
+static inline long
+__syscall6(long n, long a, long b, long c, long d, long e, long f) {
+  register long x8 __asm__("x8") = n;
+  register long x0 __asm__("x0") = a;
+  register long x1 __asm__("x1") = b;
+  register long x2 __asm__("x2") = c;
+  register long x3 __asm__("x3") = d;
+  register long x4 __asm__("x4") = e;
+  register long x5 __asm__("x5") = f;
+  __asm_syscall("r"(x8), "0"(x0), "r"(x1), "r"(x2), "r"(x3), "r"(x4), "r"(x5));
 }
 
 #define VDSO_USEFUL
diff --git a/fusl/arch/arm/atomic_arch.h b/fusl/arch/arm/atomic_arch.h
index 706fa1f..a9a562e 100644
--- a/fusl/arch/arm/atomic_arch.h
+++ b/fusl/arch/arm/atomic_arch.h
@@ -1,31 +1,31 @@
-__attribute__((__visibility__("hidden")))
-extern const void *__arm_atomics[3]; /* gettp, cas, barrier */
+__attribute__((__visibility__(
+    "hidden"))) extern const void* __arm_atomics[3]; /* gettp, cas, barrier */
 
-#if ((__ARM_ARCH_6__ || __ARM_ARCH_6K__ || __ARM_ARCH_6ZK__) && !__thumb__) \
- || __ARM_ARCH_7A__ || __ARM_ARCH_7R__ ||  __ARM_ARCH >= 7
+#if ((__ARM_ARCH_6__ || __ARM_ARCH_6K__ || __ARM_ARCH_6ZK__) && !__thumb__) || \
+    __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7
 
 #define a_ll a_ll
-static inline int a_ll(volatile int *p)
-{
-	int v;
-	__asm__ __volatile__ ("ldrex %0, %1" : "=r"(v) : "Q"(*p));
-	return v;
+static inline int a_ll(volatile int* p) {
+  int v;
+  __asm__ __volatile__("ldrex %0, %1" : "=r"(v) : "Q"(*p));
+  return v;
 }
 
 #define a_sc a_sc
-static inline int a_sc(volatile int *p, int v)
-{
-	int r;
-	__asm__ __volatile__ ("strex %0,%2,%1" : "=&r"(r), "=Q"(*p) : "r"(v) : "memory");
-	return !r;
+static inline int a_sc(volatile int* p, int v) {
+  int r;
+  __asm__ __volatile__("strex %0,%2,%1"
+                       : "=&r"(r), "=Q"(*p)
+                       : "r"(v)
+                       : "memory");
+  return !r;
 }
 
-#if __ARM_ARCH_7A__ || __ARM_ARCH_7R__ ||  __ARM_ARCH >= 7
+#if __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7
 
 #define a_barrier a_barrier
-static inline void a_barrier()
-{
-	__asm__ __volatile__ ("dmb ish" : : : "memory");
+static inline void a_barrier() {
+  __asm__ __volatile__("dmb ish" : : : "memory");
 }
 
 #endif
@@ -36,41 +36,41 @@
 #else
 
 #define a_cas a_cas
-static inline int a_cas(volatile int *p, int t, int s)
-{
-	for (;;) {
-		register int r0 __asm__("r0") = t;
-		register int r1 __asm__("r1") = s;
-		register volatile int *r2 __asm__("r2") = p;
-		int old;
-		__asm__ __volatile__ (
-			"bl __a_cas"
-			: "+r"(r0) : "r"(r1), "r"(r2)
-			: "memory", "r3", "lr", "ip", "cc" );
-		if (!r0) return t;
-		if ((old=*p)!=t) return old;
-	}
+static inline int a_cas(volatile int* p, int t, int s) {
+  for (;;) {
+    register int r0 __asm__("r0") = t;
+    register int r1 __asm__("r1") = s;
+    register volatile int* r2 __asm__("r2") = p;
+    int old;
+    __asm__ __volatile__("bl __a_cas"
+                         : "+r"(r0)
+                         : "r"(r1), "r"(r2)
+                         : "memory", "r3", "lr", "ip", "cc");
+    if (!r0)
+      return t;
+    if ((old = *p) != t)
+      return old;
+  }
 }
 
 #endif
 
 #ifndef a_barrier
 #define a_barrier a_barrier
-static inline void a_barrier()
-{
-	__asm__ __volatile__("bl __a_barrier"
-		: : : "memory", "cc", "ip", "lr" );
+static inline void a_barrier() {
+  __asm__ __volatile__("bl __a_barrier" : : : "memory", "cc", "ip", "lr");
 }
 #endif
 
 #define a_crash a_crash
-static inline void a_crash()
-{
-	__asm__ __volatile__(
+static inline void a_crash() {
+  __asm__ __volatile__(
 #ifndef __thumb__
-		".word 0xe7f000f0"
+      ".word 0xe7f000f0"
 #else
-		".short 0xdeff"
+      ".short 0xdeff"
 #endif
-		: : : "memory");
+      :
+      :
+      : "memory");
 }
diff --git a/fusl/arch/arm/bits/fcntl.h b/fusl/arch/arm/bits/fcntl.h
index 4cb1753..6796d1d 100644
--- a/fusl/arch/arm/bits/fcntl.h
+++ b/fusl/arch/arm/bits/fcntl.h
@@ -1,29 +1,29 @@
-#define O_CREAT        0100
-#define O_EXCL         0200
-#define O_NOCTTY       0400
-#define O_TRUNC       01000
-#define O_APPEND      02000
-#define O_NONBLOCK    04000
-#define O_DSYNC      010000
-#define O_SYNC     04010000
-#define O_RSYNC    04010000
-#define O_DIRECTORY  040000
-#define O_NOFOLLOW  0100000
-#define O_CLOEXEC  02000000
+#define O_CREAT 0100
+#define O_EXCL 0200
+#define O_NOCTTY 0400
+#define O_TRUNC 01000
+#define O_APPEND 02000
+#define O_NONBLOCK 04000
+#define O_DSYNC 010000
+#define O_SYNC 04010000
+#define O_RSYNC 04010000
+#define O_DIRECTORY 040000
+#define O_NOFOLLOW 0100000
+#define O_CLOEXEC 02000000
 
-#define O_ASYNC      020000
-#define O_DIRECT    0200000
+#define O_ASYNC 020000
+#define O_DIRECT 0200000
 #define O_LARGEFILE 0400000
-#define O_NOATIME  01000000
-#define O_PATH    010000000
+#define O_NOATIME 01000000
+#define O_PATH 010000000
 #define O_TMPFILE 020040000
 #define O_NDELAY O_NONBLOCK
 
-#define F_DUPFD  0
-#define F_GETFD  1
-#define F_SETFD  2
-#define F_GETFL  3
-#define F_SETFL  4
+#define F_DUPFD 0
+#define F_GETFD 1
+#define F_SETFD 2
+#define F_GETFL 3
+#define F_SETFL 4
 
 #define F_SETOWN 8
 #define F_GETOWN 9
diff --git a/fusl/arch/arm/bits/fenv.h b/fusl/arch/arm/bits/fenv.h
index d85fc86..2bf1835 100644
--- a/fusl/arch/arm/bits/fenv.h
+++ b/fusl/arch/arm/bits/fenv.h
@@ -1,23 +1,21 @@
 #ifndef __ARM_PCS_VFP
 #define FE_ALL_EXCEPT 0
-#define FE_TONEAREST  0
+#define FE_TONEAREST 0
 #else
-#define FE_INVALID    1
-#define FE_DIVBYZERO  2
-#define FE_OVERFLOW   4
-#define FE_UNDERFLOW  8
-#define FE_INEXACT    16
+#define FE_INVALID 1
+#define FE_DIVBYZERO 2
+#define FE_OVERFLOW 4
+#define FE_UNDERFLOW 8
+#define FE_INEXACT 16
 #define FE_ALL_EXCEPT 31
-#define FE_TONEAREST  0
-#define FE_DOWNWARD   0x800000
-#define FE_UPWARD     0x400000
+#define FE_TONEAREST 0
+#define FE_DOWNWARD 0x800000
+#define FE_UPWARD 0x400000
 #define FE_TOWARDZERO 0xc00000
 #endif
 
 typedef unsigned long fexcept_t;
 
-typedef struct {
-	unsigned long __cw;
-} fenv_t;
+typedef struct { unsigned long __cw; } fenv_t;
 
-#define FE_DFL_ENV      ((const fenv_t *) -1)
+#define FE_DFL_ENV ((const fenv_t*)-1)
diff --git a/fusl/arch/arm/bits/limits.h b/fusl/arch/arm/bits/limits.h
index 65a3dd6..6d8b298 100644
--- a/fusl/arch/arm/bits/limits.h
+++ b/fusl/arch/arm/bits/limits.h
@@ -1,8 +1,8 @@
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define PAGE_SIZE 4096
 #define LONG_BIT 32
 #endif
 
-#define LONG_MAX  0x7fffffffL
-#define LLONG_MAX  0x7fffffffffffffffLL
+#define LONG_MAX 0x7fffffffL
+#define LLONG_MAX 0x7fffffffffffffffLL
diff --git a/fusl/arch/arm/bits/mman.h b/fusl/arch/arm/bits/mman.h
index ea6f6a7..e5f3215 100644
--- a/fusl/arch/arm/bits/mman.h
+++ b/fusl/arch/arm/bits/mman.h
@@ -1,59 +1,59 @@
-#define MAP_FAILED ((void *) -1)
+#define MAP_FAILED ((void*)-1)
 
-#define	PROT_NONE      0
-#define	PROT_READ      1
-#define	PROT_WRITE     2
-#define	PROT_EXEC      4
-#define	PROT_GROWSDOWN 0x01000000
-#define	PROT_GROWSUP   0x02000000
+#define PROT_NONE 0
+#define PROT_READ 1
+#define PROT_WRITE 2
+#define PROT_EXEC 4
+#define PROT_GROWSDOWN 0x01000000
+#define PROT_GROWSUP 0x02000000
 
-#define	MAP_SHARED     0x01
-#define	MAP_PRIVATE    0x02
-#define	MAP_FIXED      0x10
+#define MAP_SHARED 0x01
+#define MAP_PRIVATE 0x02
+#define MAP_FIXED 0x10
 
-#define MAP_TYPE       0x0f
-#define MAP_FILE       0x00
-#define MAP_ANON       0x20
-#define MAP_ANONYMOUS  MAP_ANON
-#define MAP_NORESERVE  0x4000
-#define MAP_GROWSDOWN  0x0100
-#define MAP_DENYWRITE  0x0800
+#define MAP_TYPE 0x0f
+#define MAP_FILE 0x00
+#define MAP_ANON 0x20
+#define MAP_ANONYMOUS MAP_ANON
+#define MAP_NORESERVE 0x4000
+#define MAP_GROWSDOWN 0x0100
+#define MAP_DENYWRITE 0x0800
 #define MAP_EXECUTABLE 0x1000
-#define MAP_LOCKED     0x2000
-#define MAP_POPULATE   0x8000
-#define MAP_NONBLOCK   0x10000
-#define MAP_STACK      0x20000
-#define MAP_HUGETLB    0x40000
+#define MAP_LOCKED 0x2000
+#define MAP_POPULATE 0x8000
+#define MAP_NONBLOCK 0x10000
+#define MAP_STACK 0x20000
+#define MAP_HUGETLB 0x40000
 
-#define POSIX_MADV_NORMAL       0
-#define POSIX_MADV_RANDOM       1
-#define POSIX_MADV_SEQUENTIAL   2
-#define POSIX_MADV_WILLNEED     3
-#define POSIX_MADV_DONTNEED     0
+#define POSIX_MADV_NORMAL 0
+#define POSIX_MADV_RANDOM 1
+#define POSIX_MADV_SEQUENTIAL 2
+#define POSIX_MADV_WILLNEED 3
+#define POSIX_MADV_DONTNEED 0
 
-#define MS_ASYNC        1
-#define MS_INVALIDATE   2
-#define MS_SYNC         4
+#define MS_ASYNC 1
+#define MS_INVALIDATE 2
+#define MS_SYNC 4
 
-#define MCL_CURRENT     1
-#define MCL_FUTURE      2
-#define MCL_ONFAULT     4
+#define MCL_CURRENT 1
+#define MCL_FUTURE 2
+#define MCL_ONFAULT 4
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#define MADV_NORMAL      0
-#define MADV_RANDOM      1
-#define MADV_SEQUENTIAL  2
-#define MADV_WILLNEED    3
-#define MADV_DONTNEED    4
-#define MADV_REMOVE      9
-#define MADV_DONTFORK    10
-#define MADV_DOFORK      11
-#define MADV_MERGEABLE   12
+#define MADV_NORMAL 0
+#define MADV_RANDOM 1
+#define MADV_SEQUENTIAL 2
+#define MADV_WILLNEED 3
+#define MADV_DONTNEED 4
+#define MADV_REMOVE 9
+#define MADV_DONTFORK 10
+#define MADV_DOFORK 11
+#define MADV_MERGEABLE 12
 #define MADV_UNMERGEABLE 13
-#define MADV_HUGEPAGE    14
-#define MADV_NOHUGEPAGE  15
-#define MADV_DONTDUMP    16
-#define MADV_DODUMP      17
-#define MADV_HWPOISON    100
+#define MADV_HUGEPAGE 14
+#define MADV_NOHUGEPAGE 15
+#define MADV_DONTDUMP 16
+#define MADV_DODUMP 17
+#define MADV_HWPOISON 100
 #define MADV_SOFT_OFFLINE 101
 #endif
diff --git a/fusl/arch/arm/bits/posix.h b/fusl/arch/arm/bits/posix.h
index 30a3871..8897d37 100644
--- a/fusl/arch/arm/bits/posix.h
+++ b/fusl/arch/arm/bits/posix.h
@@ -1,2 +1,2 @@
-#define _POSIX_V6_ILP32_OFFBIG  1
-#define _POSIX_V7_ILP32_OFFBIG  1
+#define _POSIX_V6_ILP32_OFFBIG 1
+#define _POSIX_V7_ILP32_OFFBIG 1
diff --git a/fusl/arch/arm/bits/signal.h b/fusl/arch/arm/bits/signal.h
index 9d19eeb..30db397 100644
--- a/fusl/arch/arm/bits/signal.h
+++ b/fusl/arch/arm/bits/signal.h
@@ -1,5 +1,5 @@
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define MINSIGSTKSZ 2048
@@ -8,80 +8,77 @@
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 typedef int greg_t, gregset_t[18];
-typedef struct sigcontext
-{
-	unsigned long trap_no, error_code, oldmask;
-	unsigned long arm_r0, arm_r1, arm_r2, arm_r3;
-	unsigned long arm_r4, arm_r5, arm_r6, arm_r7;
-	unsigned long arm_r8, arm_r9, arm_r10, arm_fp;
-	unsigned long arm_ip, arm_sp, arm_lr, arm_pc;
-	unsigned long arm_cpsr, fault_address;
+typedef struct sigcontext {
+  unsigned long trap_no, error_code, oldmask;
+  unsigned long arm_r0, arm_r1, arm_r2, arm_r3;
+  unsigned long arm_r4, arm_r5, arm_r6, arm_r7;
+  unsigned long arm_r8, arm_r9, arm_r10, arm_fp;
+  unsigned long arm_ip, arm_sp, arm_lr, arm_pc;
+  unsigned long arm_cpsr, fault_address;
 } mcontext_t;
 #else
-typedef struct {
-	unsigned long __regs[21];
-} mcontext_t;
+typedef struct { unsigned long __regs[21]; } mcontext_t;
 #endif
 
 struct sigaltstack {
-	void *ss_sp;
-	int ss_flags;
-	size_t ss_size;
+  void* ss_sp;
+  int ss_flags;
+  size_t ss_size;
 };
 
 typedef struct __ucontext {
-	unsigned long uc_flags;
-	struct __ucontext *uc_link;
-	stack_t uc_stack;
-	mcontext_t uc_mcontext;
-	sigset_t uc_sigmask;
-	unsigned long long uc_regspace[64];
+  unsigned long uc_flags;
+  struct __ucontext* uc_link;
+  stack_t uc_stack;
+  mcontext_t uc_mcontext;
+  sigset_t uc_sigmask;
+  unsigned long long uc_regspace[64];
 } ucontext_t;
 
-#define SA_NOCLDSTOP  1
-#define SA_NOCLDWAIT  2
-#define SA_SIGINFO    4
-#define SA_ONSTACK    0x08000000
-#define SA_RESTART    0x10000000
-#define SA_NODEFER    0x40000000
-#define SA_RESETHAND  0x80000000
-#define SA_RESTORER   0x04000000
+#define SA_NOCLDSTOP 1
+#define SA_NOCLDWAIT 2
+#define SA_SIGINFO 4
+#define SA_ONSTACK 0x08000000
+#define SA_RESTART 0x10000000
+#define SA_NODEFER 0x40000000
+#define SA_RESETHAND 0x80000000
+#define SA_RESTORER 0x04000000
 
 #endif
 
-#define SIGHUP    1
-#define SIGINT    2
-#define SIGQUIT   3
-#define SIGILL    4
-#define SIGTRAP   5
-#define SIGABRT   6
-#define SIGIOT    SIGABRT
-#define SIGBUS    7
-#define SIGFPE    8
-#define SIGKILL   9
-#define SIGUSR1   10
-#define SIGSEGV   11
-#define SIGUSR2   12
-#define SIGPIPE   13
-#define SIGALRM   14
-#define SIGTERM   15
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT SIGABRT
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
 #define SIGSTKFLT 16
-#define SIGCHLD   17
-#define SIGCONT   18
-#define SIGSTOP   19
-#define SIGTSTP   20
-#define SIGTTIN   21
-#define SIGTTOU   22
-#define SIGURG    23
-#define SIGXCPU   24
-#define SIGXFSZ   25
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
 #define SIGVTALRM 26
-#define SIGPROF   27
-#define SIGWINCH  28
-#define SIGIO     29
-#define SIGPOLL   29
-#define SIGPWR    30
-#define SIGSYS    31
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL 29
+#define SIGPWR 30
+#define SIGSYS 31
 #define SIGUNUSED SIGSYS
 
 #define _NSIG 65
diff --git a/fusl/arch/arm/bits/stat.h b/fusl/arch/arm/bits/stat.h
index bb9314a..ab45e4c 100644
--- a/fusl/arch/arm/bits/stat.h
+++ b/fusl/arch/arm/bits/stat.h
@@ -1,22 +1,21 @@
 /* copied from kernel definition, but with padding replaced
  * by the corresponding correctly-sized userspace types. */
 
-struct stat
-{
-	dev_t st_dev;
-	int __st_dev_padding;
-	long __st_ino_truncated;
-	mode_t st_mode;
-	nlink_t st_nlink;
-	uid_t st_uid;
-	gid_t st_gid;
-	dev_t st_rdev;
-	int __st_rdev_padding;
-	off_t st_size;
-	blksize_t st_blksize;
-	blkcnt_t st_blocks;
-	struct timespec st_atim;
-	struct timespec st_mtim;
-	struct timespec st_ctim;
-	ino_t st_ino;
+struct stat {
+  dev_t st_dev;
+  int __st_dev_padding;
+  long __st_ino_truncated;
+  mode_t st_mode;
+  nlink_t st_nlink;
+  uid_t st_uid;
+  gid_t st_gid;
+  dev_t st_rdev;
+  int __st_rdev_padding;
+  off_t st_size;
+  blksize_t st_blksize;
+  blkcnt_t st_blocks;
+  struct timespec st_atim;
+  struct timespec st_mtim;
+  struct timespec st_ctim;
+  ino_t st_ino;
 };
diff --git a/fusl/arch/arm/bits/stdint.h b/fusl/arch/arm/bits/stdint.h
index d1b2712..93ec5df 100644
--- a/fusl/arch/arm/bits/stdint.h
+++ b/fusl/arch/arm/bits/stdint.h
@@ -3,18 +3,18 @@
 typedef uint32_t uint_fast16_t;
 typedef uint32_t uint_fast32_t;
 
-#define INT_FAST16_MIN  INT32_MIN
-#define INT_FAST32_MIN  INT32_MIN
+#define INT_FAST16_MIN INT32_MIN
+#define INT_FAST32_MIN INT32_MIN
 
-#define INT_FAST16_MAX  INT32_MAX
-#define INT_FAST32_MAX  INT32_MAX
+#define INT_FAST16_MAX INT32_MAX
+#define INT_FAST32_MAX INT32_MAX
 
 #define UINT_FAST16_MAX UINT32_MAX
 #define UINT_FAST32_MAX UINT32_MAX
 
-#define INTPTR_MIN      INT32_MIN
-#define INTPTR_MAX      INT32_MAX
-#define UINTPTR_MAX     UINT32_MAX
-#define PTRDIFF_MIN     INT32_MIN
-#define PTRDIFF_MAX     INT32_MAX
-#define SIZE_MAX        UINT32_MAX
+#define INTPTR_MIN INT32_MIN
+#define INTPTR_MAX INT32_MAX
+#define UINTPTR_MAX UINT32_MAX
+#define PTRDIFF_MIN INT32_MIN
+#define PTRDIFF_MAX INT32_MAX
+#define SIZE_MAX UINT32_MAX
diff --git a/fusl/arch/arm/bits/syscall.h b/fusl/arch/arm/bits/syscall.h
index 036c562..42ca76b 100644
--- a/fusl/arch/arm/bits/syscall.h
+++ b/fusl/arch/arm/bits/syscall.h
@@ -1,701 +1,701 @@
-#define __NR_restart_syscall	0
-#define __NR_exit	1
-#define __NR_fork	2
-#define __NR_read	3
-#define __NR_write	4
-#define __NR_open	5
-#define __NR_close	6
-#define __NR_creat	8
-#define __NR_link	9
-#define __NR_unlink	10
-#define __NR_execve	11
-#define __NR_chdir	12
-#define __NR_mknod	14
-#define __NR_chmod	15
-#define __NR_lchown	16
-#define __NR_lseek	19
-#define __NR_getpid	20
-#define __NR_mount	21
-#define __NR_setuid	23
-#define __NR_getuid	24
-#define __NR_ptrace	26
-#define __NR_pause	29
-#define __NR_access	33
-#define __NR_nice	34
-#define __NR_sync	36
-#define __NR_kill	37
-#define __NR_rename	38
-#define __NR_mkdir	39
-#define __NR_rmdir	40
-#define __NR_dup	41
-#define __NR_pipe	42
-#define __NR_times	43
-#define __NR_brk	45
-#define __NR_setgid	46
-#define __NR_getgid	47
-#define __NR_geteuid	49
-#define __NR_getegid	50
-#define __NR_acct	51
-#define __NR_umount2	52
-#define __NR_ioctl	54
-#define __NR_fcntl	55
-#define __NR_setpgid	57
-#define __NR_umask	60
-#define __NR_chroot	61
-#define __NR_ustat	62
-#define __NR_dup2	63
-#define __NR_getppid	64
-#define __NR_getpgrp	65
-#define __NR_setsid	66
-#define __NR_sigaction	67
-#define __NR_setreuid	70
-#define __NR_setregid	71
-#define __NR_sigsuspend	72
-#define __NR_sigpending	73
-#define __NR_sethostname	74
-#define __NR_setrlimit	75
-#define __NR_getrusage	77
-#define __NR_gettimeofday	78
-#define __NR_settimeofday	79
-#define __NR_getgroups	80
-#define __NR_setgroups	81
-#define __NR_symlink	83
-#define __NR_readlink	85
-#define __NR_uselib	86
-#define __NR_swapon	87
-#define __NR_reboot	88
-#define __NR_munmap	91
-#define __NR_truncate	92
-#define __NR_ftruncate	93
-#define __NR_fchmod	94
-#define __NR_fchown	95
-#define __NR_getpriority	96
-#define __NR_setpriority	97
-#define __NR_statfs	99
-#define __NR_fstatfs	100
-#define __NR_syslog	103
-#define __NR_setitimer	104
-#define __NR_getitimer	105
-#define __NR_stat	106
-#define __NR_lstat	107
-#define __NR_fstat	108
-#define __NR_vhangup	111
-#define __NR_wait4	114
-#define __NR_swapoff	115
-#define __NR_sysinfo	116
-#define __NR_fsync	118
-#define __NR_sigreturn	119
-#define __NR_clone	120
-#define __NR_setdomainname	121
-#define __NR_uname	122
-#define __NR_adjtimex	124
-#define __NR_mprotect	125
-#define __NR_sigprocmask	126
-#define __NR_init_module	128
-#define __NR_delete_module	129
-#define __NR_quotactl	131
-#define __NR_getpgid	132
-#define __NR_fchdir	133
-#define __NR_bdflush	134
-#define __NR_sysfs	135
-#define __NR_personality	136
-#define __NR_setfsuid	138
-#define __NR_setfsgid	139
-#define __NR__llseek	140
-#define __NR_getdents	141
-#define __NR__newselect	142
-#define __NR_flock	143
-#define __NR_msync	144
-#define __NR_readv	145
-#define __NR_writev	146
-#define __NR_getsid	147
-#define __NR_fdatasync	148
-#define __NR__sysctl	149
-#define __NR_mlock	150
-#define __NR_munlock	151
-#define __NR_mlockall	152
-#define __NR_munlockall	153
-#define __NR_sched_setparam	154
-#define __NR_sched_getparam	155
-#define __NR_sched_setscheduler	156
-#define __NR_sched_getscheduler	157
-#define __NR_sched_yield	158
-#define __NR_sched_get_priority_max	159
-#define __NR_sched_get_priority_min	160
-#define __NR_sched_rr_get_interval	161
-#define __NR_nanosleep	162
-#define __NR_mremap	163
-#define __NR_setresuid	164
-#define __NR_getresuid	165
-#define __NR_poll	168
-#define __NR_nfsservctl	169
-#define __NR_setresgid	170
-#define __NR_getresgid	171
-#define __NR_prctl	172
-#define __NR_rt_sigreturn	173
-#define __NR_rt_sigaction	174
-#define __NR_rt_sigprocmask	175
-#define __NR_rt_sigpending	176
-#define __NR_rt_sigtimedwait	177
-#define __NR_rt_sigqueueinfo	178
-#define __NR_rt_sigsuspend	179
-#define __NR_pread64	180
-#define __NR_pwrite64	181
-#define __NR_chown	182
-#define __NR_getcwd	183
-#define __NR_capget	184
-#define __NR_capset	185
-#define __NR_sigaltstack	186
-#define __NR_sendfile	187
-#define __NR_vfork	190
-#define __NR_ugetrlimit	191
-#define __NR_mmap2	192
-#define __NR_truncate64	193
-#define __NR_ftruncate64	194
-#define __NR_stat64	195
-#define __NR_lstat64	196
-#define __NR_fstat64	197
-#define __NR_lchown32	198
-#define __NR_getuid32	199
-#define __NR_getgid32	200
-#define __NR_geteuid32	201
-#define __NR_getegid32	202
-#define __NR_setreuid32	203
-#define __NR_setregid32	204
-#define __NR_getgroups32	205
-#define __NR_setgroups32	206
-#define __NR_fchown32	207
-#define __NR_setresuid32	208
-#define __NR_getresuid32	209
-#define __NR_setresgid32	210
-#define __NR_getresgid32	211
-#define __NR_chown32	212
-#define __NR_setuid32	213
-#define __NR_setgid32	214
-#define __NR_setfsuid32	215
-#define __NR_setfsgid32	216
-#define __NR_getdents64	217
-#define __NR_pivot_root	218
-#define __NR_mincore	219
-#define __NR_madvise	220
-#define __NR_fcntl64	221
-#define __NR_gettid	224
-#define __NR_readahead	225
-#define __NR_setxattr	226
-#define __NR_lsetxattr	227
-#define __NR_fsetxattr	228
-#define __NR_getxattr	229
-#define __NR_lgetxattr	230
-#define __NR_fgetxattr	231
-#define __NR_listxattr	232
-#define __NR_llistxattr	233
-#define __NR_flistxattr	234
-#define __NR_removexattr	235
-#define __NR_lremovexattr	236
-#define __NR_fremovexattr	237
-#define __NR_tkill	238
-#define __NR_sendfile64	239
-#define __NR_futex	240
-#define __NR_sched_setaffinity	241
-#define __NR_sched_getaffinity	242
-#define __NR_io_setup	243
-#define __NR_io_destroy	244
-#define __NR_io_getevents	245
-#define __NR_io_submit	246
-#define __NR_io_cancel	247
-#define __NR_exit_group	248
-#define __NR_lookup_dcookie	249
-#define __NR_epoll_create	250
-#define __NR_epoll_ctl	251
-#define __NR_epoll_wait	252
-#define __NR_remap_file_pages	253
-#define __NR_set_tid_address	256
-#define __NR_timer_create	257
-#define __NR_timer_settime	258
-#define __NR_timer_gettime	259
-#define __NR_timer_getoverrun	260
-#define __NR_timer_delete	261
-#define __NR_clock_settime	262
-#define __NR_clock_gettime	263
-#define __NR_clock_getres	264
-#define __NR_clock_nanosleep	265
-#define __NR_statfs64	266
-#define __NR_fstatfs64	267
-#define __NR_tgkill	268
-#define __NR_utimes	269
-#define __NR_fadvise64_64	270
-#define __NR_pciconfig_iobase	271
-#define __NR_pciconfig_read	272
-#define __NR_pciconfig_write	273
-#define __NR_mq_open	274
-#define __NR_mq_unlink	275
-#define __NR_mq_timedsend	276
-#define __NR_mq_timedreceive	277
-#define __NR_mq_notify	278
-#define __NR_mq_getsetattr	279
-#define __NR_waitid	280
-#define __NR_socket	281
-#define __NR_bind	282
-#define __NR_connect	283
-#define __NR_listen	284
-#define __NR_accept	285
-#define __NR_getsockname	286
-#define __NR_getpeername	287
-#define __NR_socketpair	288
-#define __NR_send	289
-#define __NR_sendto	290
-#define __NR_recv	291
-#define __NR_recvfrom	292
-#define __NR_shutdown	293
-#define __NR_setsockopt	294
-#define __NR_getsockopt	295
-#define __NR_sendmsg	296
-#define __NR_recvmsg	297
-#define __NR_semop	298
-#define __NR_semget	299
-#define __NR_semctl	300
-#define __NR_msgsnd	301
-#define __NR_msgrcv	302
-#define __NR_msgget	303
-#define __NR_msgctl	304
-#define __NR_shmat	305
-#define __NR_shmdt	306
-#define __NR_shmget	307
-#define __NR_shmctl	308
-#define __NR_add_key	309
-#define __NR_request_key	310
-#define __NR_keyctl	311
-#define __NR_semtimedop	312
-#define __NR_vserver	313
-#define __NR_ioprio_set	314
-#define __NR_ioprio_get	315
-#define __NR_inotify_init	316
-#define __NR_inotify_add_watch	317
-#define __NR_inotify_rm_watch	318
-#define __NR_mbind	319
-#define __NR_get_mempolicy	320
-#define __NR_set_mempolicy	321
-#define __NR_openat	322
-#define __NR_mkdirat	323
-#define __NR_mknodat	324
-#define __NR_fchownat	325
-#define __NR_futimesat	326
-#define __NR_fstatat64	327
-#define __NR_unlinkat	328
-#define __NR_renameat	329
-#define __NR_linkat	330
-#define __NR_symlinkat	331
-#define __NR_readlinkat	332
-#define __NR_fchmodat	333
-#define __NR_faccessat	334
-#define __NR_pselect6	335
-#define __NR_ppoll	336
-#define __NR_unshare	337
-#define __NR_set_robust_list	338
-#define __NR_get_robust_list	339
-#define __NR_splice	340
-#define __NR_sync_file_range2	341
-#define __NR_tee	342
-#define __NR_vmsplice	343
-#define __NR_move_pages	344
-#define __NR_getcpu	345
-#define __NR_epoll_pwait	346
-#define __NR_kexec_load	347
-#define __NR_utimensat	348
-#define __NR_signalfd	349
-#define __NR_timerfd_create	350
-#define __NR_eventfd	351
-#define __NR_fallocate	352
-#define __NR_timerfd_settime	353
-#define __NR_timerfd_gettime	354
-#define __NR_signalfd4	355
-#define __NR_eventfd2	356
-#define __NR_epoll_create1	357
-#define __NR_dup3	358
-#define __NR_pipe2	359
-#define __NR_inotify_init1	360
-#define __NR_preadv	361
-#define __NR_pwritev	362
-#define __NR_rt_tgsigqueueinfo	363
-#define __NR_perf_event_open	364
-#define __NR_recvmmsg	365
-#define __NR_accept4	366
-#define __NR_fanotify_init	367
-#define __NR_fanotify_mark	368
-#define __NR_prlimit64	369
-#define __NR_name_to_handle_at	370
-#define __NR_open_by_handle_at	371
-#define __NR_clock_adjtime	372
-#define __NR_syncfs	373
-#define __NR_sendmmsg	374
-#define __NR_setns	375
-#define __NR_process_vm_readv	376
-#define __NR_process_vm_writev	377
-#define __NR_kcmp		378
-#define __NR_finit_module	379
-#define __NR_sched_setattr	380
-#define __NR_sched_getattr	381
-#define __NR_renameat2	382
-#define __NR_seccomp	383
-#define __NR_getrandom	384
-#define __NR_memfd_create	385
-#define __NR_bpf	386
-#define __NR_execveat	387
-#define __NR_userfaultfd	388
-#define __NR_membarrier		389
-#define __NR_mlock2		390
+#define __NR_restart_syscall 0
+#define __NR_exit 1
+#define __NR_fork 2
+#define __NR_read 3
+#define __NR_write 4
+#define __NR_open 5
+#define __NR_close 6
+#define __NR_creat 8
+#define __NR_link 9
+#define __NR_unlink 10
+#define __NR_execve 11
+#define __NR_chdir 12
+#define __NR_mknod 14
+#define __NR_chmod 15
+#define __NR_lchown 16
+#define __NR_lseek 19
+#define __NR_getpid 20
+#define __NR_mount 21
+#define __NR_setuid 23
+#define __NR_getuid 24
+#define __NR_ptrace 26
+#define __NR_pause 29
+#define __NR_access 33
+#define __NR_nice 34
+#define __NR_sync 36
+#define __NR_kill 37
+#define __NR_rename 38
+#define __NR_mkdir 39
+#define __NR_rmdir 40
+#define __NR_dup 41
+#define __NR_pipe 42
+#define __NR_times 43
+#define __NR_brk 45
+#define __NR_setgid 46
+#define __NR_getgid 47
+#define __NR_geteuid 49
+#define __NR_getegid 50
+#define __NR_acct 51
+#define __NR_umount2 52
+#define __NR_ioctl 54
+#define __NR_fcntl 55
+#define __NR_setpgid 57
+#define __NR_umask 60
+#define __NR_chroot 61
+#define __NR_ustat 62
+#define __NR_dup2 63
+#define __NR_getppid 64
+#define __NR_getpgrp 65
+#define __NR_setsid 66
+#define __NR_sigaction 67
+#define __NR_setreuid 70
+#define __NR_setregid 71
+#define __NR_sigsuspend 72
+#define __NR_sigpending 73
+#define __NR_sethostname 74
+#define __NR_setrlimit 75
+#define __NR_getrusage 77
+#define __NR_gettimeofday 78
+#define __NR_settimeofday 79
+#define __NR_getgroups 80
+#define __NR_setgroups 81
+#define __NR_symlink 83
+#define __NR_readlink 85
+#define __NR_uselib 86
+#define __NR_swapon 87
+#define __NR_reboot 88
+#define __NR_munmap 91
+#define __NR_truncate 92
+#define __NR_ftruncate 93
+#define __NR_fchmod 94
+#define __NR_fchown 95
+#define __NR_getpriority 96
+#define __NR_setpriority 97
+#define __NR_statfs 99
+#define __NR_fstatfs 100
+#define __NR_syslog 103
+#define __NR_setitimer 104
+#define __NR_getitimer 105
+#define __NR_stat 106
+#define __NR_lstat 107
+#define __NR_fstat 108
+#define __NR_vhangup 111
+#define __NR_wait4 114
+#define __NR_swapoff 115
+#define __NR_sysinfo 116
+#define __NR_fsync 118
+#define __NR_sigreturn 119
+#define __NR_clone 120
+#define __NR_setdomainname 121
+#define __NR_uname 122
+#define __NR_adjtimex 124
+#define __NR_mprotect 125
+#define __NR_sigprocmask 126
+#define __NR_init_module 128
+#define __NR_delete_module 129
+#define __NR_quotactl 131
+#define __NR_getpgid 132
+#define __NR_fchdir 133
+#define __NR_bdflush 134
+#define __NR_sysfs 135
+#define __NR_personality 136
+#define __NR_setfsuid 138
+#define __NR_setfsgid 139
+#define __NR__llseek 140
+#define __NR_getdents 141
+#define __NR__newselect 142
+#define __NR_flock 143
+#define __NR_msync 144
+#define __NR_readv 145
+#define __NR_writev 146
+#define __NR_getsid 147
+#define __NR_fdatasync 148
+#define __NR__sysctl 149
+#define __NR_mlock 150
+#define __NR_munlock 151
+#define __NR_mlockall 152
+#define __NR_munlockall 153
+#define __NR_sched_setparam 154
+#define __NR_sched_getparam 155
+#define __NR_sched_setscheduler 156
+#define __NR_sched_getscheduler 157
+#define __NR_sched_yield 158
+#define __NR_sched_get_priority_max 159
+#define __NR_sched_get_priority_min 160
+#define __NR_sched_rr_get_interval 161
+#define __NR_nanosleep 162
+#define __NR_mremap 163
+#define __NR_setresuid 164
+#define __NR_getresuid 165
+#define __NR_poll 168
+#define __NR_nfsservctl 169
+#define __NR_setresgid 170
+#define __NR_getresgid 171
+#define __NR_prctl 172
+#define __NR_rt_sigreturn 173
+#define __NR_rt_sigaction 174
+#define __NR_rt_sigprocmask 175
+#define __NR_rt_sigpending 176
+#define __NR_rt_sigtimedwait 177
+#define __NR_rt_sigqueueinfo 178
+#define __NR_rt_sigsuspend 179
+#define __NR_pread64 180
+#define __NR_pwrite64 181
+#define __NR_chown 182
+#define __NR_getcwd 183
+#define __NR_capget 184
+#define __NR_capset 185
+#define __NR_sigaltstack 186
+#define __NR_sendfile 187
+#define __NR_vfork 190
+#define __NR_ugetrlimit 191
+#define __NR_mmap2 192
+#define __NR_truncate64 193
+#define __NR_ftruncate64 194
+#define __NR_stat64 195
+#define __NR_lstat64 196
+#define __NR_fstat64 197
+#define __NR_lchown32 198
+#define __NR_getuid32 199
+#define __NR_getgid32 200
+#define __NR_geteuid32 201
+#define __NR_getegid32 202
+#define __NR_setreuid32 203
+#define __NR_setregid32 204
+#define __NR_getgroups32 205
+#define __NR_setgroups32 206
+#define __NR_fchown32 207
+#define __NR_setresuid32 208
+#define __NR_getresuid32 209
+#define __NR_setresgid32 210
+#define __NR_getresgid32 211
+#define __NR_chown32 212
+#define __NR_setuid32 213
+#define __NR_setgid32 214
+#define __NR_setfsuid32 215
+#define __NR_setfsgid32 216
+#define __NR_getdents64 217
+#define __NR_pivot_root 218
+#define __NR_mincore 219
+#define __NR_madvise 220
+#define __NR_fcntl64 221
+#define __NR_gettid 224
+#define __NR_readahead 225
+#define __NR_setxattr 226
+#define __NR_lsetxattr 227
+#define __NR_fsetxattr 228
+#define __NR_getxattr 229
+#define __NR_lgetxattr 230
+#define __NR_fgetxattr 231
+#define __NR_listxattr 232
+#define __NR_llistxattr 233
+#define __NR_flistxattr 234
+#define __NR_removexattr 235
+#define __NR_lremovexattr 236
+#define __NR_fremovexattr 237
+#define __NR_tkill 238
+#define __NR_sendfile64 239
+#define __NR_futex 240
+#define __NR_sched_setaffinity 241
+#define __NR_sched_getaffinity 242
+#define __NR_io_setup 243
+#define __NR_io_destroy 244
+#define __NR_io_getevents 245
+#define __NR_io_submit 246
+#define __NR_io_cancel 247
+#define __NR_exit_group 248
+#define __NR_lookup_dcookie 249
+#define __NR_epoll_create 250
+#define __NR_epoll_ctl 251
+#define __NR_epoll_wait 252
+#define __NR_remap_file_pages 253
+#define __NR_set_tid_address 256
+#define __NR_timer_create 257
+#define __NR_timer_settime 258
+#define __NR_timer_gettime 259
+#define __NR_timer_getoverrun 260
+#define __NR_timer_delete 261
+#define __NR_clock_settime 262
+#define __NR_clock_gettime 263
+#define __NR_clock_getres 264
+#define __NR_clock_nanosleep 265
+#define __NR_statfs64 266
+#define __NR_fstatfs64 267
+#define __NR_tgkill 268
+#define __NR_utimes 269
+#define __NR_fadvise64_64 270
+#define __NR_pciconfig_iobase 271
+#define __NR_pciconfig_read 272
+#define __NR_pciconfig_write 273
+#define __NR_mq_open 274
+#define __NR_mq_unlink 275
+#define __NR_mq_timedsend 276
+#define __NR_mq_timedreceive 277
+#define __NR_mq_notify 278
+#define __NR_mq_getsetattr 279
+#define __NR_waitid 280
+#define __NR_socket 281
+#define __NR_bind 282
+#define __NR_connect 283
+#define __NR_listen 284
+#define __NR_accept 285
+#define __NR_getsockname 286
+#define __NR_getpeername 287
+#define __NR_socketpair 288
+#define __NR_send 289
+#define __NR_sendto 290
+#define __NR_recv 291
+#define __NR_recvfrom 292
+#define __NR_shutdown 293
+#define __NR_setsockopt 294
+#define __NR_getsockopt 295
+#define __NR_sendmsg 296
+#define __NR_recvmsg 297
+#define __NR_semop 298
+#define __NR_semget 299
+#define __NR_semctl 300
+#define __NR_msgsnd 301
+#define __NR_msgrcv 302
+#define __NR_msgget 303
+#define __NR_msgctl 304
+#define __NR_shmat 305
+#define __NR_shmdt 306
+#define __NR_shmget 307
+#define __NR_shmctl 308
+#define __NR_add_key 309
+#define __NR_request_key 310
+#define __NR_keyctl 311
+#define __NR_semtimedop 312
+#define __NR_vserver 313
+#define __NR_ioprio_set 314
+#define __NR_ioprio_get 315
+#define __NR_inotify_init 316
+#define __NR_inotify_add_watch 317
+#define __NR_inotify_rm_watch 318
+#define __NR_mbind 319
+#define __NR_get_mempolicy 320
+#define __NR_set_mempolicy 321
+#define __NR_openat 322
+#define __NR_mkdirat 323
+#define __NR_mknodat 324
+#define __NR_fchownat 325
+#define __NR_futimesat 326
+#define __NR_fstatat64 327
+#define __NR_unlinkat 328
+#define __NR_renameat 329
+#define __NR_linkat 330
+#define __NR_symlinkat 331
+#define __NR_readlinkat 332
+#define __NR_fchmodat 333
+#define __NR_faccessat 334
+#define __NR_pselect6 335
+#define __NR_ppoll 336
+#define __NR_unshare 337
+#define __NR_set_robust_list 338
+#define __NR_get_robust_list 339
+#define __NR_splice 340
+#define __NR_sync_file_range2 341
+#define __NR_tee 342
+#define __NR_vmsplice 343
+#define __NR_move_pages 344
+#define __NR_getcpu 345
+#define __NR_epoll_pwait 346
+#define __NR_kexec_load 347
+#define __NR_utimensat 348
+#define __NR_signalfd 349
+#define __NR_timerfd_create 350
+#define __NR_eventfd 351
+#define __NR_fallocate 352
+#define __NR_timerfd_settime 353
+#define __NR_timerfd_gettime 354
+#define __NR_signalfd4 355
+#define __NR_eventfd2 356
+#define __NR_epoll_create1 357
+#define __NR_dup3 358
+#define __NR_pipe2 359
+#define __NR_inotify_init1 360
+#define __NR_preadv 361
+#define __NR_pwritev 362
+#define __NR_rt_tgsigqueueinfo 363
+#define __NR_perf_event_open 364
+#define __NR_recvmmsg 365
+#define __NR_accept4 366
+#define __NR_fanotify_init 367
+#define __NR_fanotify_mark 368
+#define __NR_prlimit64 369
+#define __NR_name_to_handle_at 370
+#define __NR_open_by_handle_at 371
+#define __NR_clock_adjtime 372
+#define __NR_syncfs 373
+#define __NR_sendmmsg 374
+#define __NR_setns 375
+#define __NR_process_vm_readv 376
+#define __NR_process_vm_writev 377
+#define __NR_kcmp 378
+#define __NR_finit_module 379
+#define __NR_sched_setattr 380
+#define __NR_sched_getattr 381
+#define __NR_renameat2 382
+#define __NR_seccomp 383
+#define __NR_getrandom 384
+#define __NR_memfd_create 385
+#define __NR_bpf 386
+#define __NR_execveat 387
+#define __NR_userfaultfd 388
+#define __NR_membarrier 389
+#define __NR_mlock2 390
 
-#define __ARM_NR_breakpoint	0x0f0001
-#define __ARM_NR_cacheflush	0x0f0002
-#define __ARM_NR_usr26		0x0f0003
-#define __ARM_NR_usr32		0x0f0004
-#define __ARM_NR_set_tls	0x0f0005
+#define __ARM_NR_breakpoint 0x0f0001
+#define __ARM_NR_cacheflush 0x0f0002
+#define __ARM_NR_usr26 0x0f0003
+#define __ARM_NR_usr32 0x0f0004
+#define __ARM_NR_set_tls 0x0f0005
 
 /* Repeated with SYS_ prefix */
 
-#define SYS_restart_syscall	0
-#define SYS_exit	1
-#define SYS_fork	2
-#define SYS_read	3
-#define SYS_write	4
-#define SYS_open	5
-#define SYS_close	6
-#define SYS_creat	8
-#define SYS_link	9
-#define SYS_unlink	10
-#define SYS_execve	11
-#define SYS_chdir	12
-#define SYS_mknod	14
-#define SYS_chmod	15
-#define SYS_lchown	16
-#define SYS_lseek	19
-#define SYS_getpid	20
-#define SYS_mount	21
-#define SYS_setuid	23
-#define SYS_getuid	24
-#define SYS_ptrace	26
-#define SYS_pause	29
-#define SYS_access	33
-#define SYS_nice	34
-#define SYS_sync	36
-#define SYS_kill	37
-#define SYS_rename	38
-#define SYS_mkdir	39
-#define SYS_rmdir	40
-#define SYS_dup	41
-#define SYS_pipe	42
-#define SYS_times	43
-#define SYS_brk	45
-#define SYS_setgid	46
-#define SYS_getgid	47
-#define SYS_geteuid	49
-#define SYS_getegid	50
-#define SYS_acct	51
-#define SYS_umount2	52
-#define SYS_ioctl	54
-#define SYS_fcntl	55
-#define SYS_setpgid	57
-#define SYS_umask	60
-#define SYS_chroot	61
-#define SYS_ustat	62
-#define SYS_dup2	63
-#define SYS_getppid	64
-#define SYS_getpgrp	65
-#define SYS_setsid	66
-#define SYS_sigaction	67
-#define SYS_setreuid	70
-#define SYS_setregid	71
-#define SYS_sigsuspend	72
-#define SYS_sigpending	73
-#define SYS_sethostname	74
-#define SYS_setrlimit	75
-#define SYS_getrusage	77
-#define SYS_gettimeofday	78
-#define SYS_settimeofday	79
-#define SYS_getgroups	80
-#define SYS_setgroups	81
-#define SYS_symlink	83
-#define SYS_readlink	85
-#define SYS_uselib	86
-#define SYS_swapon	87
-#define SYS_reboot	88
-#define SYS_munmap	91
-#define SYS_truncate	92
-#define SYS_ftruncate	93
-#define SYS_fchmod	94
-#define SYS_fchown	95
-#define SYS_getpriority	96
-#define SYS_setpriority	97
-#define SYS_statfs	99
-#define SYS_fstatfs	100
-#define SYS_syslog	103
-#define SYS_setitimer	104
-#define SYS_getitimer	105
-#define SYS_stat	106
-#define SYS_lstat	107
-#define SYS_fstat	108
-#define SYS_vhangup	111
-#define SYS_wait4	114
-#define SYS_swapoff	115
-#define SYS_sysinfo	116
-#define SYS_fsync	118
-#define SYS_sigreturn	119
-#define SYS_clone	120
-#define SYS_setdomainname	121
-#define SYS_uname	122
-#define SYS_adjtimex	124
-#define SYS_mprotect	125
-#define SYS_sigprocmask	126
-#define SYS_init_module	128
-#define SYS_delete_module	129
-#define SYS_quotactl	131
-#define SYS_getpgid	132
-#define SYS_fchdir	133
-#define SYS_bdflush	134
-#define SYS_sysfs	135
-#define SYS_personality	136
-#define SYS_setfsuid	138
-#define SYS_setfsgid	139
-#define SYS__llseek	140
-#define SYS_getdents	141
-#define SYS__newselect	142
-#define SYS_flock	143
-#define SYS_msync	144
-#define SYS_readv	145
-#define SYS_writev	146
-#define SYS_getsid	147
-#define SYS_fdatasync	148
-#define SYS__sysctl	149
-#define SYS_mlock	150
-#define SYS_munlock	151
-#define SYS_mlockall	152
-#define SYS_munlockall	153
-#define SYS_sched_setparam	154
-#define SYS_sched_getparam	155
-#define SYS_sched_setscheduler	156
-#define SYS_sched_getscheduler	157
-#define SYS_sched_yield	158
-#define SYS_sched_get_priority_max	159
-#define SYS_sched_get_priority_min	160
-#define SYS_sched_rr_get_interval	161
-#define SYS_nanosleep	162
-#define SYS_mremap	163
-#define SYS_setresuid	164
-#define SYS_getresuid	165
-#define SYS_poll	168
-#define SYS_nfsservctl	169
-#define SYS_setresgid	170
-#define SYS_getresgid	171
-#define SYS_prctl	172
-#define SYS_rt_sigreturn	173
-#define SYS_rt_sigaction	174
-#define SYS_rt_sigprocmask	175
-#define SYS_rt_sigpending	176
-#define SYS_rt_sigtimedwait	177
-#define SYS_rt_sigqueueinfo	178
-#define SYS_rt_sigsuspend	179
-#define SYS_pread64	180
-#define SYS_pwrite64	181
-#define SYS_chown	182
-#define SYS_getcwd	183
-#define SYS_capget	184
-#define SYS_capset	185
-#define SYS_sigaltstack	186
-#define SYS_sendfile	187
-#define SYS_vfork	190
-#define SYS_ugetrlimit	191
-#define SYS_mmap2	192
-#define SYS_truncate64	193
-#define SYS_ftruncate64	194
-#define SYS_stat64	195
-#define SYS_lstat64	196
-#define SYS_fstat64	197
-#define SYS_lchown32	198
-#define SYS_getuid32	199
-#define SYS_getgid32	200
-#define SYS_geteuid32	201
-#define SYS_getegid32	202
-#define SYS_setreuid32	203
-#define SYS_setregid32	204
-#define SYS_getgroups32	205
-#define SYS_setgroups32	206
-#define SYS_fchown32	207
-#define SYS_setresuid32	208
-#define SYS_getresuid32	209
-#define SYS_setresgid32	210
-#define SYS_getresgid32	211
-#define SYS_chown32	212
-#define SYS_setuid32	213
-#define SYS_setgid32	214
-#define SYS_setfsuid32	215
-#define SYS_setfsgid32	216
-#define SYS_getdents64	217
-#define SYS_pivot_root	218
-#define SYS_mincore	219
-#define SYS_madvise	220
-#define SYS_fcntl64	221
-#define SYS_gettid	224
-#define SYS_readahead	225
-#define SYS_setxattr	226
-#define SYS_lsetxattr	227
-#define SYS_fsetxattr	228
-#define SYS_getxattr	229
-#define SYS_lgetxattr	230
-#define SYS_fgetxattr	231
-#define SYS_listxattr	232
-#define SYS_llistxattr	233
-#define SYS_flistxattr	234
-#define SYS_removexattr	235
-#define SYS_lremovexattr	236
-#define SYS_fremovexattr	237
-#define SYS_tkill	238
-#define SYS_sendfile64	239
-#define SYS_futex	240
-#define SYS_sched_setaffinity	241
-#define SYS_sched_getaffinity	242
-#define SYS_io_setup	243
-#define SYS_io_destroy	244
-#define SYS_io_getevents	245
-#define SYS_io_submit	246
-#define SYS_io_cancel	247
-#define SYS_exit_group	248
-#define SYS_lookup_dcookie	249
-#define SYS_epoll_create	250
-#define SYS_epoll_ctl	251
-#define SYS_epoll_wait	252
-#define SYS_remap_file_pages	253
-#define SYS_set_tid_address	256
-#define SYS_timer_create	257
-#define SYS_timer_settime	258
-#define SYS_timer_gettime	259
-#define SYS_timer_getoverrun	260
-#define SYS_timer_delete	261
-#define SYS_clock_settime	262
-#define SYS_clock_gettime	263
-#define SYS_clock_getres	264
-#define SYS_clock_nanosleep	265
-#define SYS_statfs64	266
-#define SYS_fstatfs64	267
-#define SYS_tgkill	268
-#define SYS_utimes	269
-#define SYS_fadvise64_64	270
-#define SYS_pciconfig_iobase	271
-#define SYS_pciconfig_read	272
-#define SYS_pciconfig_write	273
-#define SYS_mq_open	274
-#define SYS_mq_unlink	275
-#define SYS_mq_timedsend	276
-#define SYS_mq_timedreceive	277
-#define SYS_mq_notify	278
-#define SYS_mq_getsetattr	279
-#define SYS_waitid	280
-#define SYS_socket	281
-#define SYS_bind	282
-#define SYS_connect	283
-#define SYS_listen	284
-#define SYS_accept	285
-#define SYS_getsockname	286
-#define SYS_getpeername	287
-#define SYS_socketpair	288
-#define SYS_send	289
-#define SYS_sendto	290
-#define SYS_recv	291
-#define SYS_recvfrom	292
-#define SYS_shutdown	293
-#define SYS_setsockopt	294
-#define SYS_getsockopt	295
-#define SYS_sendmsg	296
-#define SYS_recvmsg	297
-#define SYS_semop	298
-#define SYS_semget	299
-#define SYS_semctl	300
-#define SYS_msgsnd	301
-#define SYS_msgrcv	302
-#define SYS_msgget	303
-#define SYS_msgctl	304
-#define SYS_shmat	305
-#define SYS_shmdt	306
-#define SYS_shmget	307
-#define SYS_shmctl	308
-#define SYS_add_key	309
-#define SYS_request_key	310
-#define SYS_keyctl	311
-#define SYS_semtimedop	312
-#define SYS_vserver	313
-#define SYS_ioprio_set	314
-#define SYS_ioprio_get	315
-#define SYS_inotify_init	316
-#define SYS_inotify_add_watch	317
-#define SYS_inotify_rm_watch	318
-#define SYS_mbind	319
-#define SYS_get_mempolicy	320
-#define SYS_set_mempolicy	321
-#define SYS_openat	322
-#define SYS_mkdirat	323
-#define SYS_mknodat	324
-#define SYS_fchownat	325
-#define SYS_futimesat	326
-#define SYS_fstatat64	327
-#define SYS_unlinkat	328
-#define SYS_renameat	329
-#define SYS_linkat	330
-#define SYS_symlinkat	331
-#define SYS_readlinkat	332
-#define SYS_fchmodat	333
-#define SYS_faccessat	334
-#define SYS_pselect6	335
-#define SYS_ppoll	336
-#define SYS_unshare	337
-#define SYS_set_robust_list	338
-#define SYS_get_robust_list	339
-#define SYS_splice	340
-#define SYS_sync_file_range2	341
-#define SYS_tee	342
-#define SYS_vmsplice	343
-#define SYS_move_pages	344
-#define SYS_getcpu	345
-#define SYS_epoll_pwait	346
-#define SYS_kexec_load	347
-#define SYS_utimensat	348
-#define SYS_signalfd	349
-#define SYS_timerfd_create	350
-#define SYS_eventfd	351
-#define SYS_fallocate	352
-#define SYS_timerfd_settime	353
-#define SYS_timerfd_gettime	354
-#define SYS_signalfd4	355
-#define SYS_eventfd2	356
-#define SYS_epoll_create1	357
-#define SYS_dup3	358
-#define SYS_pipe2	359
-#define SYS_inotify_init1	360
-#define SYS_preadv	361
-#define SYS_pwritev	362
-#define SYS_rt_tgsigqueueinfo	363
-#define SYS_perf_event_open	364
-#define SYS_recvmmsg	365
-#define SYS_accept4	366
-#define SYS_fanotify_init	367
-#define SYS_fanotify_mark	368
-#define SYS_prlimit64	369
-#define SYS_name_to_handle_at	370
-#define SYS_open_by_handle_at	371
-#define SYS_clock_adjtime	372
-#define SYS_syncfs	373
-#define SYS_sendmmsg	374
-#define SYS_setns	375
-#define SYS_process_vm_readv	376
-#define SYS_process_vm_writev	377
-#define SYS_kcmp		378
-#define SYS_finit_module	379
-#define SYS_sched_setattr	380
-#define SYS_sched_getattr	381
-#define SYS_renameat2	382
-#define SYS_seccomp	383
-#define SYS_getrandom	384
-#define SYS_memfd_create	385
-#define SYS_bpf	386
-#define SYS_execveat	387
-#define SYS_userfaultfd	388
-#define SYS_membarrier		389
-#define SYS_mlock2		390
+#define SYS_restart_syscall 0
+#define SYS_exit 1
+#define SYS_fork 2
+#define SYS_read 3
+#define SYS_write 4
+#define SYS_open 5
+#define SYS_close 6
+#define SYS_creat 8
+#define SYS_link 9
+#define SYS_unlink 10
+#define SYS_execve 11
+#define SYS_chdir 12
+#define SYS_mknod 14
+#define SYS_chmod 15
+#define SYS_lchown 16
+#define SYS_lseek 19
+#define SYS_getpid 20
+#define SYS_mount 21
+#define SYS_setuid 23
+#define SYS_getuid 24
+#define SYS_ptrace 26
+#define SYS_pause 29
+#define SYS_access 33
+#define SYS_nice 34
+#define SYS_sync 36
+#define SYS_kill 37
+#define SYS_rename 38
+#define SYS_mkdir 39
+#define SYS_rmdir 40
+#define SYS_dup 41
+#define SYS_pipe 42
+#define SYS_times 43
+#define SYS_brk 45
+#define SYS_setgid 46
+#define SYS_getgid 47
+#define SYS_geteuid 49
+#define SYS_getegid 50
+#define SYS_acct 51
+#define SYS_umount2 52
+#define SYS_ioctl 54
+#define SYS_fcntl 55
+#define SYS_setpgid 57
+#define SYS_umask 60
+#define SYS_chroot 61
+#define SYS_ustat 62
+#define SYS_dup2 63
+#define SYS_getppid 64
+#define SYS_getpgrp 65
+#define SYS_setsid 66
+#define SYS_sigaction 67
+#define SYS_setreuid 70
+#define SYS_setregid 71
+#define SYS_sigsuspend 72
+#define SYS_sigpending 73
+#define SYS_sethostname 74
+#define SYS_setrlimit 75
+#define SYS_getrusage 77
+#define SYS_gettimeofday 78
+#define SYS_settimeofday 79
+#define SYS_getgroups 80
+#define SYS_setgroups 81
+#define SYS_symlink 83
+#define SYS_readlink 85
+#define SYS_uselib 86
+#define SYS_swapon 87
+#define SYS_reboot 88
+#define SYS_munmap 91
+#define SYS_truncate 92
+#define SYS_ftruncate 93
+#define SYS_fchmod 94
+#define SYS_fchown 95
+#define SYS_getpriority 96
+#define SYS_setpriority 97
+#define SYS_statfs 99
+#define SYS_fstatfs 100
+#define SYS_syslog 103
+#define SYS_setitimer 104
+#define SYS_getitimer 105
+#define SYS_stat 106
+#define SYS_lstat 107
+#define SYS_fstat 108
+#define SYS_vhangup 111
+#define SYS_wait4 114
+#define SYS_swapoff 115
+#define SYS_sysinfo 116
+#define SYS_fsync 118
+#define SYS_sigreturn 119
+#define SYS_clone 120
+#define SYS_setdomainname 121
+#define SYS_uname 122
+#define SYS_adjtimex 124
+#define SYS_mprotect 125
+#define SYS_sigprocmask 126
+#define SYS_init_module 128
+#define SYS_delete_module 129
+#define SYS_quotactl 131
+#define SYS_getpgid 132
+#define SYS_fchdir 133
+#define SYS_bdflush 134
+#define SYS_sysfs 135
+#define SYS_personality 136
+#define SYS_setfsuid 138
+#define SYS_setfsgid 139
+#define SYS__llseek 140
+#define SYS_getdents 141
+#define SYS__newselect 142
+#define SYS_flock 143
+#define SYS_msync 144
+#define SYS_readv 145
+#define SYS_writev 146
+#define SYS_getsid 147
+#define SYS_fdatasync 148
+#define SYS__sysctl 149
+#define SYS_mlock 150
+#define SYS_munlock 151
+#define SYS_mlockall 152
+#define SYS_munlockall 153
+#define SYS_sched_setparam 154
+#define SYS_sched_getparam 155
+#define SYS_sched_setscheduler 156
+#define SYS_sched_getscheduler 157
+#define SYS_sched_yield 158
+#define SYS_sched_get_priority_max 159
+#define SYS_sched_get_priority_min 160
+#define SYS_sched_rr_get_interval 161
+#define SYS_nanosleep 162
+#define SYS_mremap 163
+#define SYS_setresuid 164
+#define SYS_getresuid 165
+#define SYS_poll 168
+#define SYS_nfsservctl 169
+#define SYS_setresgid 170
+#define SYS_getresgid 171
+#define SYS_prctl 172
+#define SYS_rt_sigreturn 173
+#define SYS_rt_sigaction 174
+#define SYS_rt_sigprocmask 175
+#define SYS_rt_sigpending 176
+#define SYS_rt_sigtimedwait 177
+#define SYS_rt_sigqueueinfo 178
+#define SYS_rt_sigsuspend 179
+#define SYS_pread64 180
+#define SYS_pwrite64 181
+#define SYS_chown 182
+#define SYS_getcwd 183
+#define SYS_capget 184
+#define SYS_capset 185
+#define SYS_sigaltstack 186
+#define SYS_sendfile 187
+#define SYS_vfork 190
+#define SYS_ugetrlimit 191
+#define SYS_mmap2 192
+#define SYS_truncate64 193
+#define SYS_ftruncate64 194
+#define SYS_stat64 195
+#define SYS_lstat64 196
+#define SYS_fstat64 197
+#define SYS_lchown32 198
+#define SYS_getuid32 199
+#define SYS_getgid32 200
+#define SYS_geteuid32 201
+#define SYS_getegid32 202
+#define SYS_setreuid32 203
+#define SYS_setregid32 204
+#define SYS_getgroups32 205
+#define SYS_setgroups32 206
+#define SYS_fchown32 207
+#define SYS_setresuid32 208
+#define SYS_getresuid32 209
+#define SYS_setresgid32 210
+#define SYS_getresgid32 211
+#define SYS_chown32 212
+#define SYS_setuid32 213
+#define SYS_setgid32 214
+#define SYS_setfsuid32 215
+#define SYS_setfsgid32 216
+#define SYS_getdents64 217
+#define SYS_pivot_root 218
+#define SYS_mincore 219
+#define SYS_madvise 220
+#define SYS_fcntl64 221
+#define SYS_gettid 224
+#define SYS_readahead 225
+#define SYS_setxattr 226
+#define SYS_lsetxattr 227
+#define SYS_fsetxattr 228
+#define SYS_getxattr 229
+#define SYS_lgetxattr 230
+#define SYS_fgetxattr 231
+#define SYS_listxattr 232
+#define SYS_llistxattr 233
+#define SYS_flistxattr 234
+#define SYS_removexattr 235
+#define SYS_lremovexattr 236
+#define SYS_fremovexattr 237
+#define SYS_tkill 238
+#define SYS_sendfile64 239
+#define SYS_futex 240
+#define SYS_sched_setaffinity 241
+#define SYS_sched_getaffinity 242
+#define SYS_io_setup 243
+#define SYS_io_destroy 244
+#define SYS_io_getevents 245
+#define SYS_io_submit 246
+#define SYS_io_cancel 247
+#define SYS_exit_group 248
+#define SYS_lookup_dcookie 249
+#define SYS_epoll_create 250
+#define SYS_epoll_ctl 251
+#define SYS_epoll_wait 252
+#define SYS_remap_file_pages 253
+#define SYS_set_tid_address 256
+#define SYS_timer_create 257
+#define SYS_timer_settime 258
+#define SYS_timer_gettime 259
+#define SYS_timer_getoverrun 260
+#define SYS_timer_delete 261
+#define SYS_clock_settime 262
+#define SYS_clock_gettime 263
+#define SYS_clock_getres 264
+#define SYS_clock_nanosleep 265
+#define SYS_statfs64 266
+#define SYS_fstatfs64 267
+#define SYS_tgkill 268
+#define SYS_utimes 269
+#define SYS_fadvise64_64 270
+#define SYS_pciconfig_iobase 271
+#define SYS_pciconfig_read 272
+#define SYS_pciconfig_write 273
+#define SYS_mq_open 274
+#define SYS_mq_unlink 275
+#define SYS_mq_timedsend 276
+#define SYS_mq_timedreceive 277
+#define SYS_mq_notify 278
+#define SYS_mq_getsetattr 279
+#define SYS_waitid 280
+#define SYS_socket 281
+#define SYS_bind 282
+#define SYS_connect 283
+#define SYS_listen 284
+#define SYS_accept 285
+#define SYS_getsockname 286
+#define SYS_getpeername 287
+#define SYS_socketpair 288
+#define SYS_send 289
+#define SYS_sendto 290
+#define SYS_recv 291
+#define SYS_recvfrom 292
+#define SYS_shutdown 293
+#define SYS_setsockopt 294
+#define SYS_getsockopt 295
+#define SYS_sendmsg 296
+#define SYS_recvmsg 297
+#define SYS_semop 298
+#define SYS_semget 299
+#define SYS_semctl 300
+#define SYS_msgsnd 301
+#define SYS_msgrcv 302
+#define SYS_msgget 303
+#define SYS_msgctl 304
+#define SYS_shmat 305
+#define SYS_shmdt 306
+#define SYS_shmget 307
+#define SYS_shmctl 308
+#define SYS_add_key 309
+#define SYS_request_key 310
+#define SYS_keyctl 311
+#define SYS_semtimedop 312
+#define SYS_vserver 313
+#define SYS_ioprio_set 314
+#define SYS_ioprio_get 315
+#define SYS_inotify_init 316
+#define SYS_inotify_add_watch 317
+#define SYS_inotify_rm_watch 318
+#define SYS_mbind 319
+#define SYS_get_mempolicy 320
+#define SYS_set_mempolicy 321
+#define SYS_openat 322
+#define SYS_mkdirat 323
+#define SYS_mknodat 324
+#define SYS_fchownat 325
+#define SYS_futimesat 326
+#define SYS_fstatat64 327
+#define SYS_unlinkat 328
+#define SYS_renameat 329
+#define SYS_linkat 330
+#define SYS_symlinkat 331
+#define SYS_readlinkat 332
+#define SYS_fchmodat 333
+#define SYS_faccessat 334
+#define SYS_pselect6 335
+#define SYS_ppoll 336
+#define SYS_unshare 337
+#define SYS_set_robust_list 338
+#define SYS_get_robust_list 339
+#define SYS_splice 340
+#define SYS_sync_file_range2 341
+#define SYS_tee 342
+#define SYS_vmsplice 343
+#define SYS_move_pages 344
+#define SYS_getcpu 345
+#define SYS_epoll_pwait 346
+#define SYS_kexec_load 347
+#define SYS_utimensat 348
+#define SYS_signalfd 349
+#define SYS_timerfd_create 350
+#define SYS_eventfd 351
+#define SYS_fallocate 352
+#define SYS_timerfd_settime 353
+#define SYS_timerfd_gettime 354
+#define SYS_signalfd4 355
+#define SYS_eventfd2 356
+#define SYS_epoll_create1 357
+#define SYS_dup3 358
+#define SYS_pipe2 359
+#define SYS_inotify_init1 360
+#define SYS_preadv 361
+#define SYS_pwritev 362
+#define SYS_rt_tgsigqueueinfo 363
+#define SYS_perf_event_open 364
+#define SYS_recvmmsg 365
+#define SYS_accept4 366
+#define SYS_fanotify_init 367
+#define SYS_fanotify_mark 368
+#define SYS_prlimit64 369
+#define SYS_name_to_handle_at 370
+#define SYS_open_by_handle_at 371
+#define SYS_clock_adjtime 372
+#define SYS_syncfs 373
+#define SYS_sendmmsg 374
+#define SYS_setns 375
+#define SYS_process_vm_readv 376
+#define SYS_process_vm_writev 377
+#define SYS_kcmp 378
+#define SYS_finit_module 379
+#define SYS_sched_setattr 380
+#define SYS_sched_getattr 381
+#define SYS_renameat2 382
+#define SYS_seccomp 383
+#define SYS_getrandom 384
+#define SYS_memfd_create 385
+#define SYS_bpf 386
+#define SYS_execveat 387
+#define SYS_userfaultfd 388
+#define SYS_membarrier 389
+#define SYS_mlock2 390
diff --git a/fusl/arch/arm/bits/user.h b/fusl/arch/arm/bits/user.h
index 3e5a4d2..e2cffe4 100644
--- a/fusl/arch/arm/bits/user.h
+++ b/fusl/arch/arm/bits/user.h
@@ -1,36 +1,36 @@
 typedef struct user_fpregs {
-	struct fp_reg {
-		unsigned sign1:1;
-		unsigned unused:15;
-		unsigned sign2:1;
-		unsigned exponent:14;
-		unsigned j:1;
-		unsigned mantissa1:31;
-		unsigned mantissa0:32;
-	} fpregs[8];
-	unsigned fpsr:32;
-	unsigned fpcr:32;
-	unsigned char ftype[8];
-	unsigned int init_flag;
+  struct fp_reg {
+    unsigned sign1 : 1;
+    unsigned unused : 15;
+    unsigned sign2 : 1;
+    unsigned exponent : 14;
+    unsigned j : 1;
+    unsigned mantissa1 : 31;
+    unsigned mantissa0 : 32;
+  } fpregs[8];
+  unsigned fpsr : 32;
+  unsigned fpcr : 32;
+  unsigned char ftype[8];
+  unsigned int init_flag;
 } elf_fpregset_t;
 
 struct user_regs {
-	unsigned long uregs[18];
+  unsigned long uregs[18];
 };
 #define ELF_NGREG 18
 typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG];
 
 struct user {
-	struct user_regs regs;
-	int u_fpvalid;
-	unsigned long u_tsize, u_dsize, u_ssize;
-	unsigned long start_code, start_stack;
-	long signal;
-	int reserved;
-	struct user_regs *u_ar0;
-	unsigned long magic;
-	char u_comm[32];
-	int u_debugreg[8];
-	struct user_fpregs u_fp;
-	struct user_fpregs *u_fp0;
+  struct user_regs regs;
+  int u_fpvalid;
+  unsigned long u_tsize, u_dsize, u_ssize;
+  unsigned long start_code, start_stack;
+  long signal;
+  int reserved;
+  struct user_regs* u_ar0;
+  unsigned long magic;
+  char u_comm[32];
+  int u_debugreg[8];
+  struct user_fpregs u_fp;
+  struct user_fpregs* u_fp0;
 };
diff --git a/fusl/arch/arm/crt_arch.h b/fusl/arch/arm/crt_arch.h
index 99508b1..a787e0b 100644
--- a/fusl/arch/arm/crt_arch.h
+++ b/fusl/arch/arm/crt_arch.h
@@ -1,18 +1,19 @@
 __asm__(
-".text \n"
-".global " START " \n"
-".type " START ",%function \n"
-START ": \n"
-"	mov fp, #0 \n"
-"	mov lr, #0 \n"
-"	ldr a2, 1f \n"
-"	add a2, pc, a2 \n"
-"	mov a1, sp \n"
-"2:	and ip, a1, #-16 \n"
-"	mov sp, ip \n"
-"	bl " START "_c \n"
-".weak _DYNAMIC \n"
-".hidden _DYNAMIC \n"
-".align 2 \n"
-"1:	.word _DYNAMIC-2b \n"
-);
+    ".text \n"
+    ".global " START
+    " \n"
+    ".type " START ",%function \n" START
+    ": \n"
+    "	mov fp, #0 \n"
+    "	mov lr, #0 \n"
+    "	ldr a2, 1f \n"
+    "	add a2, pc, a2 \n"
+    "	mov a1, sp \n"
+    "2:	and ip, a1, #-16 \n"
+    "	mov sp, ip \n"
+    "	bl " START
+    "_c \n"
+    ".weak _DYNAMIC \n"
+    ".hidden _DYNAMIC \n"
+    ".align 2 \n"
+    "1:	.word _DYNAMIC-2b \n");
diff --git a/fusl/arch/arm/pthread_arch.h b/fusl/arch/arm/pthread_arch.h
index 8b8a7fb..8702ead 100644
--- a/fusl/arch/arm/pthread_arch.h
+++ b/fusl/arch/arm/pthread_arch.h
@@ -1,30 +1,31 @@
-#if ((__ARM_ARCH_6K__ || __ARM_ARCH_6ZK__) && !__thumb__) \
- || __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7
+#if ((__ARM_ARCH_6K__ || __ARM_ARCH_6ZK__) && !__thumb__) || \
+    __ARM_ARCH_7A__ || __ARM_ARCH_7R__ || __ARM_ARCH >= 7
 
-static inline pthread_t __pthread_self()
-{
-	char *p;
-	__asm__ __volatile__ ( "mrc p15,0,%0,c13,c0,3" : "=r"(p) );
-	return (void *)(p+8-sizeof(struct pthread));
+static inline pthread_t __pthread_self() {
+  char* p;
+  __asm__ __volatile__("mrc p15,0,%0,c13,c0,3" : "=r"(p));
+  return (void*)(p + 8 - sizeof(struct pthread));
 }
 
 #else
 
-static inline pthread_t __pthread_self()
-{
+static inline pthread_t __pthread_self() {
 #ifdef __clang__
-	char *p;
-	__asm__ __volatile__ ( "bl __a_gettp\n\tmov %0,r0" : "=r"(p) : : "cc", "r0", "lr" );
+  char* p;
+  __asm__ __volatile__("bl __a_gettp\n\tmov %0,r0"
+                       : "=r"(p)
+                       :
+                       : "cc", "r0", "lr");
 #else
-	register char *p __asm__("r0");
-	__asm__ __volatile__ ( "bl __a_gettp" : "=r"(p) : : "cc", "lr" );
+  register char* p __asm__("r0");
+  __asm__ __volatile__("bl __a_gettp" : "=r"(p) : : "cc", "lr");
 #endif
-	return (void *)(p+8-sizeof(struct pthread));
+  return (void*)(p + 8 - sizeof(struct pthread));
 }
 
 #endif
 
 #define TLS_ABOVE_TP
-#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) - 8)
+#define TP_ADJ(p) ((char*)(p) + sizeof(struct pthread) - 8)
 
 #define MC_PC arm_pc
diff --git a/fusl/arch/arm/reloc.h b/fusl/arch/arm/reloc.h
index b175711..1feee96 100644
--- a/fusl/arch/arm/reloc.h
+++ b/fusl/arch/arm/reloc.h
@@ -18,15 +18,15 @@
 
 #define TPOFF_K 8
 
-#define REL_SYMBOLIC    R_ARM_ABS32
-#define REL_GOT         R_ARM_GLOB_DAT
-#define REL_PLT         R_ARM_JUMP_SLOT
-#define REL_RELATIVE    R_ARM_RELATIVE
-#define REL_COPY        R_ARM_COPY
-#define REL_DTPMOD      R_ARM_TLS_DTPMOD32
-#define REL_DTPOFF      R_ARM_TLS_DTPOFF32
-#define REL_TPOFF       R_ARM_TLS_TPOFF32
+#define REL_SYMBOLIC R_ARM_ABS32
+#define REL_GOT R_ARM_GLOB_DAT
+#define REL_PLT R_ARM_JUMP_SLOT
+#define REL_RELATIVE R_ARM_RELATIVE
+#define REL_COPY R_ARM_COPY
+#define REL_DTPMOD R_ARM_TLS_DTPMOD32
+#define REL_DTPOFF R_ARM_TLS_DTPOFF32
+#define REL_TPOFF R_ARM_TLS_TPOFF32
 //#define REL_TLSDESC     R_ARM_TLS_DESC
 
-#define CRTJMP(pc,sp) __asm__ __volatile__( \
-	"mov sp,%1 ; bx %0" : : "r"(pc), "r"(sp) : "memory" )
+#define CRTJMP(pc, sp) \
+  __asm__ __volatile__("mov sp,%1 ; bx %0" : : "r"(pc), "r"(sp) : "memory")
diff --git a/fusl/arch/arm/syscall_arch.h b/fusl/arch/arm/syscall_arch.h
index 64461ec..6405df5 100644
--- a/fusl/arch/arm/syscall_arch.h
+++ b/fusl/arch/arm/syscall_arch.h
@@ -1,76 +1,78 @@
 #define __SYSCALL_LL_E(x) \
-((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
-((union { long long ll; long l[2]; }){ .ll = x }).l[1]
+  ((union {               \
+    long long ll;         \
+    long l[2];            \
+  }){.ll = x})            \
+      .l[0],              \
+      ((union {           \
+        long long ll;     \
+        long l[2];        \
+      }){.ll = x})        \
+          .l[1]
 #define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x))
 
-#define __asm_syscall(...) do { \
-	__asm__ __volatile__ ( "svc 0" \
-	: "=r"(r0) : __VA_ARGS__ : "memory"); \
-	return r0; \
-	} while (0)
+#define __asm_syscall(...)                                             \
+  do {                                                                 \
+    __asm__ __volatile__("svc 0" : "=r"(r0) : __VA_ARGS__ : "memory"); \
+    return r0;                                                         \
+  } while (0)
 
-static inline long __syscall0(long n)
-{
-	register long r7 __asm__("r7") = n;
-	register long r0 __asm__("r0");
-	__asm_syscall("r"(r7));
+static inline long __syscall0(long n) {
+  register long r7 __asm__("r7") = n;
+  register long r0 __asm__("r0");
+  __asm_syscall("r"(r7));
 }
 
-static inline long __syscall1(long n, long a)
-{
-	register long r7 __asm__("r7") = n;
-	register long r0 __asm__("r0") = a;
-	__asm_syscall("r"(r7), "0"(r0));
+static inline long __syscall1(long n, long a) {
+  register long r7 __asm__("r7") = n;
+  register long r0 __asm__("r0") = a;
+  __asm_syscall("r"(r7), "0"(r0));
 }
 
-static inline long __syscall2(long n, long a, long b)
-{
-	register long r7 __asm__("r7") = n;
-	register long r0 __asm__("r0") = a;
-	register long r1 __asm__("r1") = b;
-	__asm_syscall("r"(r7), "0"(r0), "r"(r1));
+static inline long __syscall2(long n, long a, long b) {
+  register long r7 __asm__("r7") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  __asm_syscall("r"(r7), "0"(r0), "r"(r1));
 }
 
-static inline long __syscall3(long n, long a, long b, long c)
-{
-	register long r7 __asm__("r7") = n;
-	register long r0 __asm__("r0") = a;
-	register long r1 __asm__("r1") = b;
-	register long r2 __asm__("r2") = c;
-	__asm_syscall("r"(r7), "0"(r0), "r"(r1), "r"(r2));
+static inline long __syscall3(long n, long a, long b, long c) {
+  register long r7 __asm__("r7") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  __asm_syscall("r"(r7), "0"(r0), "r"(r1), "r"(r2));
 }
 
-static inline long __syscall4(long n, long a, long b, long c, long d)
-{
-	register long r7 __asm__("r7") = n;
-	register long r0 __asm__("r0") = a;
-	register long r1 __asm__("r1") = b;
-	register long r2 __asm__("r2") = c;
-	register long r3 __asm__("r3") = d;
-	__asm_syscall("r"(r7), "0"(r0), "r"(r1), "r"(r2), "r"(r3));
+static inline long __syscall4(long n, long a, long b, long c, long d) {
+  register long r7 __asm__("r7") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  register long r3 __asm__("r3") = d;
+  __asm_syscall("r"(r7), "0"(r0), "r"(r1), "r"(r2), "r"(r3));
 }
 
-static inline long __syscall5(long n, long a, long b, long c, long d, long e)
-{
-	register long r7 __asm__("r7") = n;
-	register long r0 __asm__("r0") = a;
-	register long r1 __asm__("r1") = b;
-	register long r2 __asm__("r2") = c;
-	register long r3 __asm__("r3") = d;
-	register long r4 __asm__("r4") = e;
-	__asm_syscall("r"(r7), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4));
+static inline long __syscall5(long n, long a, long b, long c, long d, long e) {
+  register long r7 __asm__("r7") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  register long r3 __asm__("r3") = d;
+  register long r4 __asm__("r4") = e;
+  __asm_syscall("r"(r7), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4));
 }
 
-static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
-{
-	register long r7 __asm__("r7") = n;
-	register long r0 __asm__("r0") = a;
-	register long r1 __asm__("r1") = b;
-	register long r2 __asm__("r2") = c;
-	register long r3 __asm__("r3") = d;
-	register long r4 __asm__("r4") = e;
-	register long r5 __asm__("r5") = f;
-	__asm_syscall("r"(r7), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4), "r"(r5));
+static inline long
+__syscall6(long n, long a, long b, long c, long d, long e, long f) {
+  register long r7 __asm__("r7") = n;
+  register long r0 __asm__("r0") = a;
+  register long r1 __asm__("r1") = b;
+  register long r2 __asm__("r2") = c;
+  register long r3 __asm__("r3") = d;
+  register long r4 __asm__("r4") = e;
+  register long r5 __asm__("r5") = f;
+  __asm_syscall("r"(r7), "0"(r0), "r"(r1), "r"(r2), "r"(r3), "r"(r4), "r"(r5));
 }
 
 #define VDSO_USEFUL
diff --git a/fusl/arch/generic/bits/errno.h b/fusl/arch/generic/bits/errno.h
index d2e1eee..b9ebc31 100644
--- a/fusl/arch/generic/bits/errno.h
+++ b/fusl/arch/generic/bits/errno.h
@@ -1,134 +1,134 @@
-#define EPERM            1
-#define ENOENT           2
-#define ESRCH            3
-#define EINTR            4
-#define EIO              5
-#define ENXIO            6
-#define E2BIG            7
-#define ENOEXEC          8
-#define EBADF            9
-#define ECHILD          10
-#define EAGAIN          11
-#define ENOMEM          12
-#define EACCES          13
-#define EFAULT          14
-#define ENOTBLK         15
-#define EBUSY           16
-#define EEXIST          17
-#define EXDEV           18
-#define ENODEV          19
-#define ENOTDIR         20
-#define EISDIR          21
-#define EINVAL          22
-#define ENFILE          23
-#define EMFILE          24
-#define ENOTTY          25
-#define ETXTBSY         26
-#define EFBIG           27
-#define ENOSPC          28
-#define ESPIPE          29
-#define EROFS           30
-#define EMLINK          31
-#define EPIPE           32
-#define EDOM            33
-#define ERANGE          34
-#define EDEADLK         35
-#define ENAMETOOLONG    36
-#define ENOLCK          37
-#define ENOSYS          38
-#define ENOTEMPTY       39
-#define ELOOP           40
-#define EWOULDBLOCK     EAGAIN
-#define ENOMSG          42
-#define EIDRM           43
-#define ECHRNG          44
-#define EL2NSYNC        45
-#define EL3HLT          46
-#define EL3RST          47
-#define ELNRNG          48
-#define EUNATCH         49
-#define ENOCSI          50
-#define EL2HLT          51
-#define EBADE           52
-#define EBADR           53
-#define EXFULL          54
-#define ENOANO          55
-#define EBADRQC         56
-#define EBADSLT         57
-#define EDEADLOCK       EDEADLK
-#define EBFONT          59
-#define ENOSTR          60
-#define ENODATA         61
-#define ETIME           62
-#define ENOSR           63
-#define ENONET          64
-#define ENOPKG          65
-#define EREMOTE         66
-#define ENOLINK         67
-#define EADV            68
-#define ESRMNT          69
-#define ECOMM           70
-#define EPROTO          71
-#define EMULTIHOP       72
-#define EDOTDOT         73
-#define EBADMSG         74
-#define EOVERFLOW       75
-#define ENOTUNIQ        76
-#define EBADFD          77
-#define EREMCHG         78
-#define ELIBACC         79
-#define ELIBBAD         80
-#define ELIBSCN         81
-#define ELIBMAX         82
-#define ELIBEXEC        83
-#define EILSEQ          84
-#define ERESTART        85
-#define ESTRPIPE        86
-#define EUSERS          87
-#define ENOTSOCK        88
-#define EDESTADDRREQ    89
-#define EMSGSIZE        90
-#define EPROTOTYPE      91
-#define ENOPROTOOPT     92
+#define EPERM 1
+#define ENOENT 2
+#define ESRCH 3
+#define EINTR 4
+#define EIO 5
+#define ENXIO 6
+#define E2BIG 7
+#define ENOEXEC 8
+#define EBADF 9
+#define ECHILD 10
+#define EAGAIN 11
+#define ENOMEM 12
+#define EACCES 13
+#define EFAULT 14
+#define ENOTBLK 15
+#define EBUSY 16
+#define EEXIST 17
+#define EXDEV 18
+#define ENODEV 19
+#define ENOTDIR 20
+#define EISDIR 21
+#define EINVAL 22
+#define ENFILE 23
+#define EMFILE 24
+#define ENOTTY 25
+#define ETXTBSY 26
+#define EFBIG 27
+#define ENOSPC 28
+#define ESPIPE 29
+#define EROFS 30
+#define EMLINK 31
+#define EPIPE 32
+#define EDOM 33
+#define ERANGE 34
+#define EDEADLK 35
+#define ENAMETOOLONG 36
+#define ENOLCK 37
+#define ENOSYS 38
+#define ENOTEMPTY 39
+#define ELOOP 40
+#define EWOULDBLOCK EAGAIN
+#define ENOMSG 42
+#define EIDRM 43
+#define ECHRNG 44
+#define EL2NSYNC 45
+#define EL3HLT 46
+#define EL3RST 47
+#define ELNRNG 48
+#define EUNATCH 49
+#define ENOCSI 50
+#define EL2HLT 51
+#define EBADE 52
+#define EBADR 53
+#define EXFULL 54
+#define ENOANO 55
+#define EBADRQC 56
+#define EBADSLT 57
+#define EDEADLOCK EDEADLK
+#define EBFONT 59
+#define ENOSTR 60
+#define ENODATA 61
+#define ETIME 62
+#define ENOSR 63
+#define ENONET 64
+#define ENOPKG 65
+#define EREMOTE 66
+#define ENOLINK 67
+#define EADV 68
+#define ESRMNT 69
+#define ECOMM 70
+#define EPROTO 71
+#define EMULTIHOP 72
+#define EDOTDOT 73
+#define EBADMSG 74
+#define EOVERFLOW 75
+#define ENOTUNIQ 76
+#define EBADFD 77
+#define EREMCHG 78
+#define ELIBACC 79
+#define ELIBBAD 80
+#define ELIBSCN 81
+#define ELIBMAX 82
+#define ELIBEXEC 83
+#define EILSEQ 84
+#define ERESTART 85
+#define ESTRPIPE 86
+#define EUSERS 87
+#define ENOTSOCK 88
+#define EDESTADDRREQ 89
+#define EMSGSIZE 90
+#define EPROTOTYPE 91
+#define ENOPROTOOPT 92
 #define EPROTONOSUPPORT 93
 #define ESOCKTNOSUPPORT 94
-#define EOPNOTSUPP      95
-#define ENOTSUP         EOPNOTSUPP
-#define EPFNOSUPPORT    96
-#define EAFNOSUPPORT    97
-#define EADDRINUSE      98
-#define EADDRNOTAVAIL   99
-#define ENETDOWN        100
-#define ENETUNREACH     101
-#define ENETRESET       102
-#define ECONNABORTED    103
-#define ECONNRESET      104
-#define ENOBUFS         105
-#define EISCONN         106
-#define ENOTCONN        107
-#define ESHUTDOWN       108
-#define ETOOMANYREFS    109
-#define ETIMEDOUT       110
-#define ECONNREFUSED    111
-#define EHOSTDOWN       112
-#define EHOSTUNREACH    113
-#define EALREADY        114
-#define EINPROGRESS     115
-#define ESTALE          116
-#define EUCLEAN         117
-#define ENOTNAM         118
-#define ENAVAIL         119
-#define EISNAM          120
-#define EREMOTEIO       121
-#define EDQUOT          122
-#define ENOMEDIUM       123
-#define EMEDIUMTYPE     124
-#define ECANCELED       125
-#define ENOKEY          126
-#define EKEYEXPIRED     127
-#define EKEYREVOKED     128
-#define EKEYREJECTED    129
-#define EOWNERDEAD      130
+#define EOPNOTSUPP 95
+#define ENOTSUP EOPNOTSUPP
+#define EPFNOSUPPORT 96
+#define EAFNOSUPPORT 97
+#define EADDRINUSE 98
+#define EADDRNOTAVAIL 99
+#define ENETDOWN 100
+#define ENETUNREACH 101
+#define ENETRESET 102
+#define ECONNABORTED 103
+#define ECONNRESET 104
+#define ENOBUFS 105
+#define EISCONN 106
+#define ENOTCONN 107
+#define ESHUTDOWN 108
+#define ETOOMANYREFS 109
+#define ETIMEDOUT 110
+#define ECONNREFUSED 111
+#define EHOSTDOWN 112
+#define EHOSTUNREACH 113
+#define EALREADY 114
+#define EINPROGRESS 115
+#define ESTALE 116
+#define EUCLEAN 117
+#define ENOTNAM 118
+#define ENAVAIL 119
+#define EISNAM 120
+#define EREMOTEIO 121
+#define EDQUOT 122
+#define ENOMEDIUM 123
+#define EMEDIUMTYPE 124
+#define ECANCELED 125
+#define ENOKEY 126
+#define EKEYEXPIRED 127
+#define EKEYREVOKED 128
+#define EKEYREJECTED 129
+#define EOWNERDEAD 130
 #define ENOTRECOVERABLE 131
-#define ERFKILL         132
-#define EHWPOISON       133
+#define ERFKILL 132
+#define EHWPOISON 133
diff --git a/fusl/arch/generic/bits/fcntl.h b/fusl/arch/generic/bits/fcntl.h
index ae233cc..7c6add0 100644
--- a/fusl/arch/generic/bits/fcntl.h
+++ b/fusl/arch/generic/bits/fcntl.h
@@ -1,29 +1,29 @@
-#define O_CREAT        0100
-#define O_EXCL         0200
-#define O_NOCTTY       0400
-#define O_TRUNC       01000
-#define O_APPEND      02000
-#define O_NONBLOCK    04000
-#define O_DSYNC      010000
-#define O_SYNC     04010000
-#define O_RSYNC    04010000
+#define O_CREAT 0100
+#define O_EXCL 0200
+#define O_NOCTTY 0400
+#define O_TRUNC 01000
+#define O_APPEND 02000
+#define O_NONBLOCK 04000
+#define O_DSYNC 010000
+#define O_SYNC 04010000
+#define O_RSYNC 04010000
 #define O_DIRECTORY 0200000
-#define O_NOFOLLOW  0400000
-#define O_CLOEXEC  02000000
+#define O_NOFOLLOW 0400000
+#define O_CLOEXEC 02000000
 
-#define O_ASYNC      020000
-#define O_DIRECT     040000
+#define O_ASYNC 020000
+#define O_DIRECT 040000
 #define O_LARGEFILE 0100000
-#define O_NOATIME  01000000
-#define O_PATH    010000000
+#define O_NOATIME 01000000
+#define O_PATH 010000000
 #define O_TMPFILE 020200000
 #define O_NDELAY O_NONBLOCK
 
-#define F_DUPFD  0
-#define F_GETFD  1
-#define F_SETFD  2
-#define F_GETFL  3
-#define F_SETFL  4
+#define F_DUPFD 0
+#define F_GETFD 1
+#define F_SETFD 2
+#define F_GETFL 3
+#define F_SETFL 4
 
 #define F_SETOWN 8
 #define F_GETOWN 9
diff --git a/fusl/arch/generic/bits/fenv.h b/fusl/arch/generic/bits/fenv.h
index edbdea2..65e9532 100644
--- a/fusl/arch/generic/bits/fenv.h
+++ b/fusl/arch/generic/bits/fenv.h
@@ -1,10 +1,8 @@
 #define FE_ALL_EXCEPT 0
-#define FE_TONEAREST  0
+#define FE_TONEAREST 0
 
 typedef unsigned long fexcept_t;
 
-typedef struct {
-	unsigned long __cw;
-} fenv_t;
+typedef struct { unsigned long __cw; } fenv_t;
 
-#define FE_DFL_ENV      ((const fenv_t *) -1)
+#define FE_DFL_ENV ((const fenv_t*)-1)
diff --git a/fusl/arch/generic/bits/ioctl.h b/fusl/arch/generic/bits/ioctl.h
index 9d75118..bc8d16a 100644
--- a/fusl/arch/generic/bits/ioctl.h
+++ b/fusl/arch/generic/bits/ioctl.h
@@ -1,197 +1,197 @@
-#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) )
-#define _IOC_NONE  0U
+#define _IOC(a, b, c, d) (((a) << 30) | ((b) << 8) | (c) | ((d) << 16))
+#define _IOC_NONE 0U
 #define _IOC_WRITE 1U
-#define _IOC_READ  2U
+#define _IOC_READ 2U
 
-#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0)
-#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c))
-#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c))
-#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c))
+#define _IO(a, b) _IOC(_IOC_NONE, (a), (b), 0)
+#define _IOW(a, b, c) _IOC(_IOC_WRITE, (a), (b), sizeof(c))
+#define _IOR(a, b, c) _IOC(_IOC_READ, (a), (b), sizeof(c))
+#define _IOWR(a, b, c) _IOC(_IOC_READ | _IOC_WRITE, (a), (b), sizeof(c))
 
-#define TCGETS		0x5401
-#define TCSETS		0x5402
-#define TCSETSW		0x5403
-#define TCSETSF		0x5404
-#define TCGETA		0x5405
-#define TCSETA		0x5406
-#define TCSETAW		0x5407
-#define TCSETAF		0x5408
-#define TCSBRK		0x5409
-#define TCXONC		0x540A
-#define TCFLSH		0x540B
-#define TIOCEXCL	0x540C
-#define TIOCNXCL	0x540D
-#define TIOCSCTTY	0x540E
-#define TIOCGPGRP	0x540F
-#define TIOCSPGRP	0x5410
-#define TIOCOUTQ	0x5411
-#define TIOCSTI		0x5412
-#define TIOCGWINSZ	0x5413
-#define TIOCSWINSZ	0x5414
-#define TIOCMGET	0x5415
-#define TIOCMBIS	0x5416
-#define TIOCMBIC	0x5417
-#define TIOCMSET	0x5418
-#define TIOCGSOFTCAR	0x5419
-#define TIOCSSOFTCAR	0x541A
-#define FIONREAD	0x541B
-#define TIOCINQ		FIONREAD
-#define TIOCLINUX	0x541C
-#define TIOCCONS	0x541D
-#define TIOCGSERIAL	0x541E
-#define TIOCSSERIAL	0x541F
-#define TIOCPKT		0x5420
-#define FIONBIO		0x5421
-#define TIOCNOTTY	0x5422
-#define TIOCSETD	0x5423
-#define TIOCGETD	0x5424
-#define TCSBRKP		0x5425
-#define TIOCTTYGSTRUCT	0x5426
-#define TIOCSBRK	0x5427
-#define TIOCCBRK	0x5428
-#define TIOCGSID	0x5429
-#define TIOCGPTN	0x80045430
-#define TIOCSPTLCK	0x40045431
-#define TCGETX		0x5432
-#define TCSETX		0x5433
-#define TCSETXF		0x5434
-#define TCSETXW		0x5435
+#define TCGETS 0x5401
+#define TCSETS 0x5402
+#define TCSETSW 0x5403
+#define TCSETSF 0x5404
+#define TCGETA 0x5405
+#define TCSETA 0x5406
+#define TCSETAW 0x5407
+#define TCSETAF 0x5408
+#define TCSBRK 0x5409
+#define TCXONC 0x540A
+#define TCFLSH 0x540B
+#define TIOCEXCL 0x540C
+#define TIOCNXCL 0x540D
+#define TIOCSCTTY 0x540E
+#define TIOCGPGRP 0x540F
+#define TIOCSPGRP 0x5410
+#define TIOCOUTQ 0x5411
+#define TIOCSTI 0x5412
+#define TIOCGWINSZ 0x5413
+#define TIOCSWINSZ 0x5414
+#define TIOCMGET 0x5415
+#define TIOCMBIS 0x5416
+#define TIOCMBIC 0x5417
+#define TIOCMSET 0x5418
+#define TIOCGSOFTCAR 0x5419
+#define TIOCSSOFTCAR 0x541A
+#define FIONREAD 0x541B
+#define TIOCINQ FIONREAD
+#define TIOCLINUX 0x541C
+#define TIOCCONS 0x541D
+#define TIOCGSERIAL 0x541E
+#define TIOCSSERIAL 0x541F
+#define TIOCPKT 0x5420
+#define FIONBIO 0x5421
+#define TIOCNOTTY 0x5422
+#define TIOCSETD 0x5423
+#define TIOCGETD 0x5424
+#define TCSBRKP 0x5425
+#define TIOCTTYGSTRUCT 0x5426
+#define TIOCSBRK 0x5427
+#define TIOCCBRK 0x5428
+#define TIOCGSID 0x5429
+#define TIOCGPTN 0x80045430
+#define TIOCSPTLCK 0x40045431
+#define TCGETX 0x5432
+#define TCSETX 0x5433
+#define TCSETXF 0x5434
+#define TCSETXW 0x5435
 
-#define FIONCLEX	0x5450
-#define FIOCLEX		0x5451
-#define FIOASYNC	0x5452
-#define TIOCSERCONFIG	0x5453
-#define TIOCSERGWILD	0x5454
-#define TIOCSERSWILD	0x5455
-#define TIOCGLCKTRMIOS	0x5456
-#define TIOCSLCKTRMIOS	0x5457
-#define TIOCSERGSTRUCT	0x5458
-#define TIOCSERGETLSR   0x5459
+#define FIONCLEX 0x5450
+#define FIOCLEX 0x5451
+#define FIOASYNC 0x5452
+#define TIOCSERCONFIG 0x5453
+#define TIOCSERGWILD 0x5454
+#define TIOCSERSWILD 0x5455
+#define TIOCGLCKTRMIOS 0x5456
+#define TIOCSLCKTRMIOS 0x5457
+#define TIOCSERGSTRUCT 0x5458
+#define TIOCSERGETLSR 0x5459
 #define TIOCSERGETMULTI 0x545A
 #define TIOCSERSETMULTI 0x545B
 
-#define TIOCMIWAIT	0x545C
-#define TIOCGICOUNT	0x545D
-#define TIOCGHAYESESP   0x545E
-#define TIOCSHAYESESP   0x545F
-#define FIOQSIZE	0x5460
+#define TIOCMIWAIT 0x545C
+#define TIOCGICOUNT 0x545D
+#define TIOCGHAYESESP 0x545E
+#define TIOCSHAYESESP 0x545F
+#define FIOQSIZE 0x5460
 
-#define TIOCPKT_DATA		 0
-#define TIOCPKT_FLUSHREAD	 1
-#define TIOCPKT_FLUSHWRITE	 2
-#define TIOCPKT_STOP		 4
-#define TIOCPKT_START		 8
-#define TIOCPKT_NOSTOP		16
-#define TIOCPKT_DOSTOP		32
-#define TIOCPKT_IOCTL		64
+#define TIOCPKT_DATA 0
+#define TIOCPKT_FLUSHREAD 1
+#define TIOCPKT_FLUSHWRITE 2
+#define TIOCPKT_STOP 4
+#define TIOCPKT_START 8
+#define TIOCPKT_NOSTOP 16
+#define TIOCPKT_DOSTOP 32
+#define TIOCPKT_IOCTL 64
 
-#define TIOCSER_TEMT    0x01
+#define TIOCSER_TEMT 0x01
 
 struct winsize {
-	unsigned short ws_row;
-	unsigned short ws_col;
-	unsigned short ws_xpixel;
-	unsigned short ws_ypixel;
+  unsigned short ws_row;
+  unsigned short ws_col;
+  unsigned short ws_xpixel;
+  unsigned short ws_ypixel;
 };
 
-#define TIOCM_LE        0x001
-#define TIOCM_DTR       0x002
-#define TIOCM_RTS       0x004
-#define TIOCM_ST        0x008
-#define TIOCM_SR        0x010
-#define TIOCM_CTS       0x020
-#define TIOCM_CAR       0x040
-#define TIOCM_RNG       0x080
-#define TIOCM_DSR       0x100
-#define TIOCM_CD        TIOCM_CAR
-#define TIOCM_RI        TIOCM_RNG
-#define TIOCM_OUT1      0x2000
-#define TIOCM_OUT2      0x4000
-#define TIOCM_LOOP      0x8000
+#define TIOCM_LE 0x001
+#define TIOCM_DTR 0x002
+#define TIOCM_RTS 0x004
+#define TIOCM_ST 0x008
+#define TIOCM_SR 0x010
+#define TIOCM_CTS 0x020
+#define TIOCM_CAR 0x040
+#define TIOCM_RNG 0x080
+#define TIOCM_DSR 0x100
+#define TIOCM_CD TIOCM_CAR
+#define TIOCM_RI TIOCM_RNG
+#define TIOCM_OUT1 0x2000
+#define TIOCM_OUT2 0x4000
+#define TIOCM_LOOP 0x8000
 #define TIOCM_MODEM_BITS TIOCM_OUT2
 
-#define N_TTY           0
-#define N_SLIP          1
-#define N_MOUSE         2
-#define N_PPP           3
-#define N_STRIP         4
-#define N_AX25          5
-#define N_X25           6
-#define N_6PACK         7
-#define N_MASC          8
-#define N_R3964         9
-#define N_PROFIBUS_FDL  10
-#define N_IRDA          11
-#define N_SMSBLOCK      12
-#define N_HDLC          13
-#define N_SYNC_PPP      14
-#define N_HCI           15
+#define N_TTY 0
+#define N_SLIP 1
+#define N_MOUSE 2
+#define N_PPP 3
+#define N_STRIP 4
+#define N_AX25 5
+#define N_X25 6
+#define N_6PACK 7
+#define N_MASC 8
+#define N_R3964 9
+#define N_PROFIBUS_FDL 10
+#define N_IRDA 11
+#define N_SMSBLOCK 12
+#define N_HDLC 13
+#define N_SYNC_PPP 14
+#define N_HCI 15
 
-#define FIOSETOWN       0x8901
-#define SIOCSPGRP       0x8902
-#define FIOGETOWN       0x8903
-#define SIOCGPGRP       0x8904
-#define SIOCATMARK      0x8905
-#define SIOCGSTAMP      0x8906
+#define FIOSETOWN 0x8901
+#define SIOCSPGRP 0x8902
+#define FIOGETOWN 0x8903
+#define SIOCGPGRP 0x8904
+#define SIOCATMARK 0x8905
+#define SIOCGSTAMP 0x8906
 
-#define SIOCADDRT       0x890B
-#define SIOCDELRT       0x890C
-#define SIOCRTMSG       0x890D
+#define SIOCADDRT 0x890B
+#define SIOCDELRT 0x890C
+#define SIOCRTMSG 0x890D
 
-#define SIOCGIFNAME     0x8910
-#define SIOCSIFLINK     0x8911
-#define SIOCGIFCONF     0x8912
-#define SIOCGIFFLAGS    0x8913
-#define SIOCSIFFLAGS    0x8914
-#define SIOCGIFADDR     0x8915
-#define SIOCSIFADDR     0x8916
-#define SIOCGIFDSTADDR  0x8917
-#define SIOCSIFDSTADDR  0x8918
-#define SIOCGIFBRDADDR  0x8919
-#define SIOCSIFBRDADDR  0x891a
-#define SIOCGIFNETMASK  0x891b
-#define SIOCSIFNETMASK  0x891c
-#define SIOCGIFMETRIC   0x891d
-#define SIOCSIFMETRIC   0x891e
-#define SIOCGIFMEM      0x891f
-#define SIOCSIFMEM      0x8920
-#define SIOCGIFMTU      0x8921
-#define SIOCSIFMTU      0x8922
-#define SIOCSIFHWADDR   0x8924
-#define SIOCGIFENCAP    0x8925
-#define SIOCSIFENCAP    0x8926
-#define SIOCGIFHWADDR   0x8927
-#define SIOCGIFSLAVE    0x8929
-#define SIOCSIFSLAVE    0x8930
-#define SIOCADDMULTI    0x8931
-#define SIOCDELMULTI    0x8932
-#define SIOCGIFINDEX    0x8933
-#define SIOGIFINDEX     SIOCGIFINDEX
-#define SIOCSIFPFLAGS   0x8934
-#define SIOCGIFPFLAGS   0x8935
-#define SIOCDIFADDR     0x8936
+#define SIOCGIFNAME 0x8910
+#define SIOCSIFLINK 0x8911
+#define SIOCGIFCONF 0x8912
+#define SIOCGIFFLAGS 0x8913
+#define SIOCSIFFLAGS 0x8914
+#define SIOCGIFADDR 0x8915
+#define SIOCSIFADDR 0x8916
+#define SIOCGIFDSTADDR 0x8917
+#define SIOCSIFDSTADDR 0x8918
+#define SIOCGIFBRDADDR 0x8919
+#define SIOCSIFBRDADDR 0x891a
+#define SIOCGIFNETMASK 0x891b
+#define SIOCSIFNETMASK 0x891c
+#define SIOCGIFMETRIC 0x891d
+#define SIOCSIFMETRIC 0x891e
+#define SIOCGIFMEM 0x891f
+#define SIOCSIFMEM 0x8920
+#define SIOCGIFMTU 0x8921
+#define SIOCSIFMTU 0x8922
+#define SIOCSIFHWADDR 0x8924
+#define SIOCGIFENCAP 0x8925
+#define SIOCSIFENCAP 0x8926
+#define SIOCGIFHWADDR 0x8927
+#define SIOCGIFSLAVE 0x8929
+#define SIOCSIFSLAVE 0x8930
+#define SIOCADDMULTI 0x8931
+#define SIOCDELMULTI 0x8932
+#define SIOCGIFINDEX 0x8933
+#define SIOGIFINDEX SIOCGIFINDEX
+#define SIOCSIFPFLAGS 0x8934
+#define SIOCGIFPFLAGS 0x8935
+#define SIOCDIFADDR 0x8936
 #define SIOCSIFHWBROADCAST 0x8937
-#define SIOCGIFCOUNT    0x8938
+#define SIOCGIFCOUNT 0x8938
 
-#define SIOCGIFBR       0x8940
-#define SIOCSIFBR       0x8941
+#define SIOCGIFBR 0x8940
+#define SIOCSIFBR 0x8941
 
-#define SIOCGIFTXQLEN   0x8942
-#define SIOCSIFTXQLEN   0x8943
+#define SIOCGIFTXQLEN 0x8942
+#define SIOCSIFTXQLEN 0x8943
 
-#define SIOCDARP        0x8953
-#define SIOCGARP        0x8954
-#define SIOCSARP        0x8955
+#define SIOCDARP 0x8953
+#define SIOCGARP 0x8954
+#define SIOCSARP 0x8955
 
-#define SIOCDRARP       0x8960
-#define SIOCGRARP       0x8961
-#define SIOCSRARP       0x8962
+#define SIOCDRARP 0x8960
+#define SIOCGRARP 0x8961
+#define SIOCSRARP 0x8962
 
-#define SIOCGIFMAP      0x8970
-#define SIOCSIFMAP      0x8971
+#define SIOCGIFMAP 0x8970
+#define SIOCSIFMAP 0x8971
 
-#define SIOCADDDLCI     0x8980
-#define SIOCDELDLCI     0x8981
+#define SIOCADDDLCI 0x8980
+#define SIOCDELDLCI 0x8981
 
-#define SIOCDEVPRIVATE		0x89F0
-#define SIOCPROTOPRIVATE	0x89E0
+#define SIOCDEVPRIVATE 0x89F0
+#define SIOCPROTOPRIVATE 0x89E0
diff --git a/fusl/arch/generic/bits/ipc.h b/fusl/arch/generic/bits/ipc.h
index b748d3b..48574c1 100644
--- a/fusl/arch/generic/bits/ipc.h
+++ b/fusl/arch/generic/bits/ipc.h
@@ -1,14 +1,13 @@
-struct ipc_perm
-{
-	key_t __ipc_perm_key;
-	uid_t uid;
-	gid_t gid;
-	uid_t cuid;
-	gid_t cgid;
-	mode_t mode;
-	int __ipc_perm_seq;
-	long __pad1;
-	long __pad2;
+struct ipc_perm {
+  key_t __ipc_perm_key;
+  uid_t uid;
+  gid_t gid;
+  uid_t cuid;
+  gid_t cgid;
+  mode_t mode;
+  int __ipc_perm_seq;
+  long __pad1;
+  long __pad2;
 };
 
 #define IPC_64 0x100
diff --git a/fusl/arch/generic/bits/msg.h b/fusl/arch/generic/bits/msg.h
index 3db8576..169683e 100644
--- a/fusl/arch/generic/bits/msg.h
+++ b/fusl/arch/generic/bits/msg.h
@@ -1,16 +1,15 @@
-struct msqid_ds
-{
-	struct ipc_perm msg_perm;
-	time_t msg_stime;
-	int __unused1;
-	time_t msg_rtime;
-	int __unused2;
-	time_t msg_ctime;
-	int __unused3;
-	unsigned long msg_cbytes;
-	msgqnum_t msg_qnum;
-	msglen_t msg_qbytes;
-	pid_t msg_lspid;
-	pid_t msg_lrpid;
-	unsigned long __unused[2];
+struct msqid_ds {
+  struct ipc_perm msg_perm;
+  time_t msg_stime;
+  int __unused1;
+  time_t msg_rtime;
+  int __unused2;
+  time_t msg_ctime;
+  int __unused3;
+  unsigned long msg_cbytes;
+  msgqnum_t msg_qnum;
+  msglen_t msg_qbytes;
+  pid_t msg_lspid;
+  pid_t msg_lrpid;
+  unsigned long __unused[2];
 };
diff --git a/fusl/arch/generic/bits/sem.h b/fusl/arch/generic/bits/sem.h
index c629b81..9ce719c 100644
--- a/fusl/arch/generic/bits/sem.h
+++ b/fusl/arch/generic/bits/sem.h
@@ -1,16 +1,16 @@
 struct semid_ds {
-	struct ipc_perm sem_perm;
-	time_t sem_otime;
-	time_t __unused1;
-	time_t sem_ctime;
-	time_t __unused2;
+  struct ipc_perm sem_perm;
+  time_t sem_otime;
+  time_t __unused1;
+  time_t sem_ctime;
+  time_t __unused2;
 #if __BYTE_ORDER == __LITTLE_ENDIAN
-	unsigned short sem_nsems;
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
+  unsigned short sem_nsems;
+  char __sem_nsems_pad[sizeof(time_t) - sizeof(short)];
 #else
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
-	unsigned short sem_nsems;
+  char __sem_nsems_pad[sizeof(time_t) - sizeof(short)];
+  unsigned short sem_nsems;
 #endif
-	time_t __unused3;
-	time_t __unused4;
+  time_t __unused3;
+  time_t __unused4;
 };
diff --git a/fusl/arch/generic/bits/shm.h b/fusl/arch/generic/bits/shm.h
index 547581f..c76fca8 100644
--- a/fusl/arch/generic/bits/shm.h
+++ b/fusl/arch/generic/bits/shm.h
@@ -1,29 +1,27 @@
 #define SHMLBA 4096
 
-struct shmid_ds
-{
-	struct ipc_perm shm_perm;
-	size_t shm_segsz;
-	time_t shm_atime;
-	int __unused1;
-	time_t shm_dtime;
-	int __unused2;
-	time_t shm_ctime;
-	int __unused3;
-	pid_t shm_cpid;
-	pid_t shm_lpid;
-	unsigned long shm_nattch;
-	unsigned long __pad1;
-	unsigned long __pad2;
+struct shmid_ds {
+  struct ipc_perm shm_perm;
+  size_t shm_segsz;
+  time_t shm_atime;
+  int __unused1;
+  time_t shm_dtime;
+  int __unused2;
+  time_t shm_ctime;
+  int __unused3;
+  pid_t shm_cpid;
+  pid_t shm_lpid;
+  unsigned long shm_nattch;
+  unsigned long __pad1;
+  unsigned long __pad2;
 };
 
 struct shminfo {
-	unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
+  unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
 };
 
 struct shm_info {
-	int __used_ids;
-	unsigned long shm_tot, shm_rss, shm_swp;
-	unsigned long __swap_attempts, __swap_successes;
+  int __used_ids;
+  unsigned long shm_tot, shm_rss, shm_swp;
+  unsigned long __swap_attempts, __swap_successes;
 };
-
diff --git a/fusl/arch/generic/bits/socket.h b/fusl/arch/generic/bits/socket.h
index 36febbc..6381b97 100644
--- a/fusl/arch/generic/bits/socket.h
+++ b/fusl/arch/generic/bits/socket.h
@@ -1,17 +1,15 @@
-struct msghdr
-{
-	void *msg_name;
-	socklen_t msg_namelen;
-	struct iovec *msg_iov;
-	int msg_iovlen;
-	void *msg_control;
-	socklen_t msg_controllen;
-	int msg_flags;
+struct msghdr {
+  void* msg_name;
+  socklen_t msg_namelen;
+  struct iovec* msg_iov;
+  int msg_iovlen;
+  void* msg_control;
+  socklen_t msg_controllen;
+  int msg_flags;
 };
 
-struct cmsghdr
-{
-	socklen_t cmsg_len;
-	int cmsg_level;
-	int cmsg_type;
+struct cmsghdr {
+  socklen_t cmsg_len;
+  int cmsg_level;
+  int cmsg_type;
 };
diff --git a/fusl/arch/generic/bits/statfs.h b/fusl/arch/generic/bits/statfs.h
index f103f4e..ef2bbe3 100644
--- a/fusl/arch/generic/bits/statfs.h
+++ b/fusl/arch/generic/bits/statfs.h
@@ -1,7 +1,7 @@
 struct statfs {
-	unsigned long f_type, f_bsize;
-	fsblkcnt_t f_blocks, f_bfree, f_bavail;
-	fsfilcnt_t f_files, f_ffree;
-	fsid_t f_fsid;
-	unsigned long f_namelen, f_frsize, f_flags, f_spare[4];
+  unsigned long f_type, f_bsize;
+  fsblkcnt_t f_blocks, f_bfree, f_bavail;
+  fsfilcnt_t f_files, f_ffree;
+  fsid_t f_fsid;
+  unsigned long f_namelen, f_frsize, f_flags, f_spare[4];
 };
diff --git a/fusl/arch/generic/bits/stdarg.h b/fusl/arch/generic/bits/stdarg.h
index fde3781..efdd1f9 100644
--- a/fusl/arch/generic/bits/stdarg.h
+++ b/fusl/arch/generic/bits/stdarg.h
@@ -1,4 +1,4 @@
-#define va_start(v,l)   __builtin_va_start(v,l)
-#define va_end(v)       __builtin_va_end(v)
-#define va_arg(v,l)     __builtin_va_arg(v,l)
-#define va_copy(d,s)    __builtin_va_copy(d,s)
+#define va_start(v, l) __builtin_va_start(v, l)
+#define va_end(v) __builtin_va_end(v)
+#define va_arg(v, l) __builtin_va_arg(v, l)
+#define va_copy(d, s) __builtin_va_copy(d, s)
diff --git a/fusl/arch/generic/bits/termios.h b/fusl/arch/generic/bits/termios.h
index f0d81b1..d9a7359 100644
--- a/fusl/arch/generic/bits/termios.h
+++ b/fusl/arch/generic/bits/termios.h
@@ -1,105 +1,104 @@
-struct termios
-{
-	tcflag_t c_iflag;
-	tcflag_t c_oflag;
-	tcflag_t c_cflag;
-	tcflag_t c_lflag;
-	cc_t c_line;
-	cc_t c_cc[NCCS];
-	speed_t __c_ispeed;
-	speed_t __c_ospeed;
+struct termios {
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
+  cc_t c_line;
+  cc_t c_cc[NCCS];
+  speed_t __c_ispeed;
+  speed_t __c_ospeed;
 };
 
-#define VINTR     0
-#define VQUIT     1
-#define VERASE    2
-#define VKILL     3
-#define VEOF      4
-#define VTIME     5
-#define VMIN      6
-#define VSWTC     7
-#define VSTART    8
-#define VSTOP     9
-#define VSUSP    10
-#define VEOL     11
+#define VINTR 0
+#define VQUIT 1
+#define VERASE 2
+#define VKILL 3
+#define VEOF 4
+#define VTIME 5
+#define VMIN 6
+#define VSWTC 7
+#define VSTART 8
+#define VSTOP 9
+#define VSUSP 10
+#define VEOL 11
 #define VREPRINT 12
 #define VDISCARD 13
-#define VWERASE  14
-#define VLNEXT   15
-#define VEOL2    16
+#define VWERASE 14
+#define VLNEXT 15
+#define VEOL2 16
 
-#define IGNBRK  0000001
-#define BRKINT  0000002
-#define IGNPAR  0000004
-#define PARMRK  0000010
-#define INPCK   0000020
-#define ISTRIP  0000040
-#define INLCR   0000100
-#define IGNCR   0000200
-#define ICRNL   0000400
-#define IUCLC   0001000
-#define IXON    0002000
-#define IXANY   0004000
-#define IXOFF   0010000
+#define IGNBRK 0000001
+#define BRKINT 0000002
+#define IGNPAR 0000004
+#define PARMRK 0000010
+#define INPCK 0000020
+#define ISTRIP 0000040
+#define INLCR 0000100
+#define IGNCR 0000200
+#define ICRNL 0000400
+#define IUCLC 0001000
+#define IXON 0002000
+#define IXANY 0004000
+#define IXOFF 0010000
 #define IMAXBEL 0020000
-#define IUTF8   0040000
+#define IUTF8 0040000
 
-#define OPOST  0000001
-#define OLCUC  0000002
-#define ONLCR  0000004
-#define OCRNL  0000010
-#define ONOCR  0000020
+#define OPOST 0000001
+#define OLCUC 0000002
+#define ONLCR 0000004
+#define OCRNL 0000010
+#define ONOCR 0000020
 #define ONLRET 0000040
-#define OFILL  0000100
-#define OFDEL  0000200
-#define NLDLY  0000400
-#define NL0    0000000
-#define NL1    0000400
-#define CRDLY  0003000
-#define CR0    0000000
-#define CR1    0001000
-#define CR2    0002000
-#define CR3    0003000
+#define OFILL 0000100
+#define OFDEL 0000200
+#define NLDLY 0000400
+#define NL0 0000000
+#define NL1 0000400
+#define CRDLY 0003000
+#define CR0 0000000
+#define CR1 0001000
+#define CR2 0002000
+#define CR3 0003000
 #define TABDLY 0014000
-#define TAB0   0000000
-#define TAB1   0004000
-#define TAB2   0010000
-#define TAB3   0014000
-#define BSDLY  0020000
-#define BS0    0000000
-#define BS1    0020000
-#define FFDLY  0100000
-#define FF0    0000000
-#define FF1    0100000
+#define TAB0 0000000
+#define TAB1 0004000
+#define TAB2 0010000
+#define TAB3 0014000
+#define BSDLY 0020000
+#define BS0 0000000
+#define BS1 0020000
+#define FFDLY 0100000
+#define FF0 0000000
+#define FF1 0100000
 
-#define VTDLY  0040000
-#define VT0    0000000
-#define VT1    0040000
+#define VTDLY 0040000
+#define VT0 0000000
+#define VT1 0040000
 
-#define B0       0000000
-#define B50      0000001
-#define B75      0000002
-#define B110     0000003
-#define B134     0000004
-#define B150     0000005
-#define B200     0000006
-#define B300     0000007
-#define B600     0000010
-#define B1200    0000011
-#define B1800    0000012
-#define B2400    0000013
-#define B4800    0000014
-#define B9600    0000015
-#define B19200   0000016
-#define B38400   0000017
+#define B0 0000000
+#define B50 0000001
+#define B75 0000002
+#define B110 0000003
+#define B134 0000004
+#define B150 0000005
+#define B200 0000006
+#define B300 0000007
+#define B600 0000010
+#define B1200 0000011
+#define B1800 0000012
+#define B2400 0000013
+#define B4800 0000014
+#define B9600 0000015
+#define B19200 0000016
+#define B38400 0000017
 
-#define B57600   0010001
-#define B115200  0010002
-#define B230400  0010003
-#define B460800  0010004
-#define B500000  0010005
-#define B576000  0010006
-#define B921600  0010007
+#define B57600 0010001
+#define B115200 0010002
+#define B230400 0010003
+#define B460800 0010004
+#define B500000 0010005
+#define B576000 0010006
+#define B921600 0010007
 #define B1000000 0010010
 #define B1152000 0010011
 #define B1500000 0010012
@@ -109,25 +108,25 @@
 #define B3500000 0010016
 #define B4000000 0010017
 
-#define CBAUD    0010017
+#define CBAUD 0010017
 
-#define CSIZE  0000060
-#define CS5    0000000
-#define CS6    0000020
-#define CS7    0000040
-#define CS8    0000060
+#define CSIZE 0000060
+#define CS5 0000000
+#define CS6 0000020
+#define CS7 0000040
+#define CS8 0000060
 #define CSTOPB 0000100
-#define CREAD  0000200
+#define CREAD 0000200
 #define PARENB 0000400
 #define PARODD 0001000
-#define HUPCL  0002000
+#define HUPCL 0002000
 #define CLOCAL 0004000
 
-#define ISIG   0000001
+#define ISIG 0000001
 #define ICANON 0000002
-#define ECHO   0000010
-#define ECHOE  0000020
-#define ECHOK  0000040
+#define ECHO 0000010
+#define ECHOE 0000020
+#define ECHOK 0000040
 #define ECHONL 0000100
 #define NOFLSH 0000200
 #define TOSTOP 0000400
@@ -140,21 +139,21 @@
 #define PENDIN 0040000
 
 #define TCOOFF 0
-#define TCOON  1
+#define TCOON 1
 #define TCIOFF 2
-#define TCION  3
+#define TCION 3
 
-#define TCIFLUSH  0
-#define TCOFLUSH  1
+#define TCIFLUSH 0
+#define TCOFLUSH 1
 #define TCIOFLUSH 2
 
-#define TCSANOW   0
+#define TCSANOW 0
 #define TCSADRAIN 1
 #define TCSAFLUSH 2
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define CBAUDEX 0010000
-#define CRTSCTS  020000000000
+#define CRTSCTS 020000000000
 #define EXTPROC 0200000
-#define XTABS  0014000
+#define XTABS 0014000
 #endif
diff --git a/fusl/arch/i386/atomic_arch.h b/fusl/arch/i386/atomic_arch.h
index 6e67c4c..b12269a 100644
--- a/fusl/arch/i386/atomic_arch.h
+++ b/fusl/arch/i386/atomic_arch.h
@@ -1,101 +1,82 @@
 #define a_cas a_cas
-static inline int a_cas(volatile int *p, int t, int s)
-{
-	__asm__ __volatile__ (
-		"lock ; cmpxchg %3, %1"
-		: "=a"(t), "=m"(*p) : "a"(t), "r"(s) : "memory" );
-	return t;
+static inline int a_cas(volatile int* p, int t, int s) {
+  __asm__ __volatile__("lock ; cmpxchg %3, %1"
+                       : "=a"(t), "=m"(*p)
+                       : "a"(t), "r"(s)
+                       : "memory");
+  return t;
 }
 
 #define a_swap a_swap
-static inline int a_swap(volatile int *p, int v)
-{
-	__asm__ __volatile__(
-		"xchg %0, %1"
-		: "=r"(v), "=m"(*p) : "0"(v) : "memory" );
-	return v;
+static inline int a_swap(volatile int* p, int v) {
+  __asm__ __volatile__("xchg %0, %1" : "=r"(v), "=m"(*p) : "0"(v) : "memory");
+  return v;
 }
 
 #define a_fetch_add a_fetch_add
-static inline int a_fetch_add(volatile int *p, int v)
-{
-	__asm__ __volatile__(
-		"lock ; xadd %0, %1"
-		: "=r"(v), "=m"(*p) : "0"(v) : "memory" );
-	return v;
+static inline int a_fetch_add(volatile int* p, int v) {
+  __asm__ __volatile__("lock ; xadd %0, %1"
+                       : "=r"(v), "=m"(*p)
+                       : "0"(v)
+                       : "memory");
+  return v;
 }
 
 #define a_and a_and
-static inline void a_and(volatile int *p, int v)
-{
-	__asm__ __volatile__(
-		"lock ; and %1, %0"
-		: "=m"(*p) : "r"(v) : "memory" );
+static inline void a_and(volatile int* p, int v) {
+  __asm__ __volatile__("lock ; and %1, %0" : "=m"(*p) : "r"(v) : "memory");
 }
 
 #define a_or a_or
-static inline void a_or(volatile int *p, int v)
-{
-	__asm__ __volatile__(
-		"lock ; or %1, %0"
-		: "=m"(*p) : "r"(v) : "memory" );
+static inline void a_or(volatile int* p, int v) {
+  __asm__ __volatile__("lock ; or %1, %0" : "=m"(*p) : "r"(v) : "memory");
 }
 
 #define a_inc a_inc
-static inline void a_inc(volatile int *p)
-{
-	__asm__ __volatile__(
-		"lock ; incl %0"
-		: "=m"(*p) : "m"(*p) : "memory" );
+static inline void a_inc(volatile int* p) {
+  __asm__ __volatile__("lock ; incl %0" : "=m"(*p) : "m"(*p) : "memory");
 }
 
 #define a_dec a_dec
-static inline void a_dec(volatile int *p)
-{
-	__asm__ __volatile__(
-		"lock ; decl %0"
-		: "=m"(*p) : "m"(*p) : "memory" );
+static inline void a_dec(volatile int* p) {
+  __asm__ __volatile__("lock ; decl %0" : "=m"(*p) : "m"(*p) : "memory");
 }
 
 #define a_store a_store
-static inline void a_store(volatile int *p, int x)
-{
-	__asm__ __volatile__(
-		"mov %1, %0 ; lock ; orl $0,(%%esp)"
-		: "=m"(*p) : "r"(x) : "memory" );
+static inline void a_store(volatile int* p, int x) {
+  __asm__ __volatile__("mov %1, %0 ; lock ; orl $0,(%%esp)"
+                       : "=m"(*p)
+                       : "r"(x)
+                       : "memory");
 }
 
 #define a_barrier a_barrier
-static inline void a_barrier()
-{
-	__asm__ __volatile__( "" : : : "memory" );
+static inline void a_barrier() {
+  __asm__ __volatile__("" : : : "memory");
 }
 
 #define a_pause a_pause
-static inline void a_spin()
-{
-	__asm__ __volatile__( "pause" : : : "memory" );
+static inline void a_spin() {
+  __asm__ __volatile__("pause" : : : "memory");
 }
 
 #define a_crash a_crash
-static inline void a_crash()
-{
-	__asm__ __volatile__( "hlt" : : : "memory" );
+static inline void a_crash() {
+  __asm__ __volatile__("hlt" : : : "memory");
 }
 
 #define a_ctz_64 a_ctz_64
-static inline int a_ctz_64(uint64_t x)
-{
-	int r;
-	__asm__( "bsf %1,%0 ; jnz 1f ; bsf %2,%0 ; add $32,%0\n1:"
-		: "=&r"(r) : "r"((unsigned)x), "r"((unsigned)(x>>32)) );
-	return r;
+static inline int a_ctz_64(uint64_t x) {
+  int r;
+  __asm__("bsf %1,%0 ; jnz 1f ; bsf %2,%0 ; add $32,%0\n1:"
+          : "=&r"(r)
+          : "r"((unsigned)x), "r"((unsigned)(x >> 32)));
+  return r;
 }
 
 #define a_ctz_l a_ctz_l
-static inline int a_ctz_l(unsigned long x)
-{
-	long r;
-	__asm__( "bsf %1,%0" : "=r"(r) : "r"(x) );
-	return r;
+static inline int a_ctz_l(unsigned long x) {
+  long r;
+  __asm__("bsf %1,%0" : "=r"(r) : "r"(x));
+  return r;
 }
diff --git a/fusl/arch/i386/bits/fenv.h b/fusl/arch/i386/bits/fenv.h
index 4430009..8cf3b13 100644
--- a/fusl/arch/i386/bits/fenv.h
+++ b/fusl/arch/i386/bits/fenv.h
@@ -1,33 +1,33 @@
-#define FE_INVALID    1
-#define __FE_DENORM   2
-#define FE_DIVBYZERO  4
-#define FE_OVERFLOW   8
-#define FE_UNDERFLOW  16
-#define FE_INEXACT    32
+#define FE_INVALID 1
+#define __FE_DENORM 2
+#define FE_DIVBYZERO 4
+#define FE_OVERFLOW 8
+#define FE_UNDERFLOW 16
+#define FE_INEXACT 32
 
 #define FE_ALL_EXCEPT 63
 
-#define FE_TONEAREST  0
-#define FE_DOWNWARD   0x400
-#define FE_UPWARD     0x800
+#define FE_TONEAREST 0
+#define FE_DOWNWARD 0x400
+#define FE_UPWARD 0x800
 #define FE_TOWARDZERO 0xc00
 
 typedef unsigned short fexcept_t;
 
 typedef struct {
-	unsigned short __control_word;
-	unsigned short __unused1;
-	unsigned short __status_word;
-	unsigned short __unused2;
-	unsigned short __tags;
-	unsigned short __unused3;
-	unsigned int __eip;
-	unsigned short __cs_selector;
-	unsigned int __opcode:11;
-	unsigned int __unused4:5;
-	unsigned int __data_offset;
-	unsigned short __data_selector;
-	unsigned short __unused5;
+  unsigned short __control_word;
+  unsigned short __unused1;
+  unsigned short __status_word;
+  unsigned short __unused2;
+  unsigned short __tags;
+  unsigned short __unused3;
+  unsigned int __eip;
+  unsigned short __cs_selector;
+  unsigned int __opcode : 11;
+  unsigned int __unused4 : 5;
+  unsigned int __data_offset;
+  unsigned short __data_selector;
+  unsigned short __unused5;
 } fenv_t;
 
-#define FE_DFL_ENV      ((const fenv_t *) -1)
+#define FE_DFL_ENV ((const fenv_t*)-1)
diff --git a/fusl/arch/i386/bits/float.h b/fusl/arch/i386/bits/float.h
index dd6e402..55e9fcd 100644
--- a/fusl/arch/i386/bits/float.h
+++ b/fusl/arch/i386/bits/float.h
@@ -5,8 +5,8 @@
 #endif
 
 #define LDBL_TRUE_MIN 3.6451995318824746025e-4951L
-#define LDBL_MIN     3.3621031431120935063e-4932L
-#define LDBL_MAX     1.1897314953572317650e+4932L
+#define LDBL_MIN 3.3621031431120935063e-4932L
+#define LDBL_MAX 1.1897314953572317650e+4932L
 #define LDBL_EPSILON 1.0842021724855044340e-19L
 
 #define LDBL_MANT_DIG 64
diff --git a/fusl/arch/i386/bits/io.h b/fusl/arch/i386/bits/io.h
index dd5bddc..1d715d9 100644
--- a/fusl/arch/i386/bits/io.h
+++ b/fusl/arch/i386/bits/io.h
@@ -1,77 +1,65 @@
-static __inline void outb(unsigned char __val, unsigned short __port)
-{
-	__asm__ volatile ("outb %0,%1" : : "a" (__val), "dN" (__port));
+static __inline void outb(unsigned char __val, unsigned short __port) {
+  __asm__ volatile("outb %0,%1" : : "a"(__val), "dN"(__port));
 }
 
-static __inline void outw(unsigned short __val, unsigned short __port)
-{
-	__asm__ volatile ("outw %0,%1" : : "a" (__val), "dN" (__port));
+static __inline void outw(unsigned short __val, unsigned short __port) {
+  __asm__ volatile("outw %0,%1" : : "a"(__val), "dN"(__port));
 }
 
-static __inline void outl(unsigned int __val, unsigned short __port)
-{
-	__asm__ volatile ("outl %0,%1" : : "a" (__val), "dN" (__port));
+static __inline void outl(unsigned int __val, unsigned short __port) {
+  __asm__ volatile("outl %0,%1" : : "a"(__val), "dN"(__port));
 }
 
-static __inline unsigned char inb(unsigned short __port)
-{
-	unsigned char __val;
-	__asm__ volatile ("inb %1,%0" : "=a" (__val) : "dN" (__port));
-	return __val;
+static __inline unsigned char inb(unsigned short __port) {
+  unsigned char __val;
+  __asm__ volatile("inb %1,%0" : "=a"(__val) : "dN"(__port));
+  return __val;
 }
 
-static __inline unsigned short inw(unsigned short __port)
-{
-	unsigned short __val;
-	__asm__ volatile ("inw %1,%0" : "=a" (__val) : "dN" (__port));
-	return __val;
+static __inline unsigned short inw(unsigned short __port) {
+  unsigned short __val;
+  __asm__ volatile("inw %1,%0" : "=a"(__val) : "dN"(__port));
+  return __val;
 }
 
-static __inline unsigned int inl(unsigned short __port)
-{
-	unsigned int __val;
-	__asm__ volatile ("inl %1,%0" : "=a" (__val) : "dN" (__port));
-	return __val;
+static __inline unsigned int inl(unsigned short __port) {
+  unsigned int __val;
+  __asm__ volatile("inl %1,%0" : "=a"(__val) : "dN"(__port));
+  return __val;
 }
 
-static __inline void outsb(unsigned short __port, const void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; outsb"
-		      : "+S" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void outsb(unsigned short __port,
+                           const void* __buf,
+                           unsigned long __n) {
+  __asm__ volatile("cld; rep; outsb" : "+S"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void outsw(unsigned short __port, const void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; outsw"
-		      : "+S" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void outsw(unsigned short __port,
+                           const void* __buf,
+                           unsigned long __n) {
+  __asm__ volatile("cld; rep; outsw" : "+S"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void outsl(unsigned short __port, const void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; outsl"
-		      : "+S" (__buf), "+c"(__n)
-		      : "d" (__port));
+static __inline void outsl(unsigned short __port,
+                           const void* __buf,
+                           unsigned long __n) {
+  __asm__ volatile("cld; rep; outsl" : "+S"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void insb(unsigned short __port, void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; insb"
-		      : "+D" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void insb(unsigned short __port,
+                          void* __buf,
+                          unsigned long __n) {
+  __asm__ volatile("cld; rep; insb" : "+D"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void insw(unsigned short __port, void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; insw"
-		      : "+D" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void insw(unsigned short __port,
+                          void* __buf,
+                          unsigned long __n) {
+  __asm__ volatile("cld; rep; insw" : "+D"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void insl(unsigned short __port, void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; insl"
-		      : "+D" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void insl(unsigned short __port,
+                          void* __buf,
+                          unsigned long __n) {
+  __asm__ volatile("cld; rep; insl" : "+D"(__buf), "+c"(__n) : "d"(__port));
 }
diff --git a/fusl/arch/i386/bits/limits.h b/fusl/arch/i386/bits/limits.h
index 65a3dd6..6d8b298 100644
--- a/fusl/arch/i386/bits/limits.h
+++ b/fusl/arch/i386/bits/limits.h
@@ -1,8 +1,8 @@
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define PAGE_SIZE 4096
 #define LONG_BIT 32
 #endif
 
-#define LONG_MAX  0x7fffffffL
-#define LLONG_MAX  0x7fffffffffffffffLL
+#define LONG_MAX 0x7fffffffL
+#define LLONG_MAX 0x7fffffffffffffffLL
diff --git a/fusl/arch/i386/bits/mman.h b/fusl/arch/i386/bits/mman.h
index 0c9022f..09d9d03 100644
--- a/fusl/arch/i386/bits/mman.h
+++ b/fusl/arch/i386/bits/mman.h
@@ -1,60 +1,60 @@
-#define MAP_FAILED ((void *) -1)
+#define MAP_FAILED ((void*)-1)
 
-#define	PROT_NONE      0
-#define	PROT_READ      1
-#define	PROT_WRITE     2
-#define	PROT_EXEC      4
-#define	PROT_GROWSDOWN 0x01000000
-#define	PROT_GROWSUP   0x02000000
+#define PROT_NONE 0
+#define PROT_READ 1
+#define PROT_WRITE 2
+#define PROT_EXEC 4
+#define PROT_GROWSDOWN 0x01000000
+#define PROT_GROWSUP 0x02000000
 
-#define	MAP_SHARED     0x01
-#define	MAP_PRIVATE    0x02
-#define	MAP_FIXED      0x10
+#define MAP_SHARED 0x01
+#define MAP_PRIVATE 0x02
+#define MAP_FIXED 0x10
 
-#define MAP_TYPE       0x0f
-#define MAP_FILE       0x00
-#define MAP_ANON       0x20
-#define MAP_ANONYMOUS  MAP_ANON
-#define MAP_32BIT      0x40
-#define MAP_NORESERVE  0x4000
-#define MAP_GROWSDOWN  0x0100
-#define MAP_DENYWRITE  0x0800
+#define MAP_TYPE 0x0f
+#define MAP_FILE 0x00
+#define MAP_ANON 0x20
+#define MAP_ANONYMOUS MAP_ANON
+#define MAP_32BIT 0x40
+#define MAP_NORESERVE 0x4000
+#define MAP_GROWSDOWN 0x0100
+#define MAP_DENYWRITE 0x0800
 #define MAP_EXECUTABLE 0x1000
-#define MAP_LOCKED     0x2000
-#define MAP_POPULATE   0x8000
-#define MAP_NONBLOCK   0x10000
-#define MAP_STACK      0x20000
-#define MAP_HUGETLB    0x40000
+#define MAP_LOCKED 0x2000
+#define MAP_POPULATE 0x8000
+#define MAP_NONBLOCK 0x10000
+#define MAP_STACK 0x20000
+#define MAP_HUGETLB 0x40000
 
-#define POSIX_MADV_NORMAL       0
-#define POSIX_MADV_RANDOM       1
-#define POSIX_MADV_SEQUENTIAL   2
-#define POSIX_MADV_WILLNEED     3
-#define POSIX_MADV_DONTNEED     0
+#define POSIX_MADV_NORMAL 0
+#define POSIX_MADV_RANDOM 1
+#define POSIX_MADV_SEQUENTIAL 2
+#define POSIX_MADV_WILLNEED 3
+#define POSIX_MADV_DONTNEED 0
 
-#define MS_ASYNC        1
-#define MS_INVALIDATE   2
-#define MS_SYNC         4
+#define MS_ASYNC 1
+#define MS_INVALIDATE 2
+#define MS_SYNC 4
 
-#define MCL_CURRENT     1
-#define MCL_FUTURE      2
-#define MCL_ONFAULT     4
+#define MCL_CURRENT 1
+#define MCL_FUTURE 2
+#define MCL_ONFAULT 4
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#define MADV_NORMAL      0
-#define MADV_RANDOM      1
-#define MADV_SEQUENTIAL  2
-#define MADV_WILLNEED    3
-#define MADV_DONTNEED    4
-#define MADV_REMOVE      9
-#define MADV_DONTFORK    10
-#define MADV_DOFORK      11
-#define MADV_MERGEABLE   12
+#define MADV_NORMAL 0
+#define MADV_RANDOM 1
+#define MADV_SEQUENTIAL 2
+#define MADV_WILLNEED 3
+#define MADV_DONTNEED 4
+#define MADV_REMOVE 9
+#define MADV_DONTFORK 10
+#define MADV_DOFORK 11
+#define MADV_MERGEABLE 12
 #define MADV_UNMERGEABLE 13
-#define MADV_HUGEPAGE    14
-#define MADV_NOHUGEPAGE  15
-#define MADV_DONTDUMP    16
-#define MADV_DODUMP      17
-#define MADV_HWPOISON    100
+#define MADV_HUGEPAGE 14
+#define MADV_NOHUGEPAGE 15
+#define MADV_DONTDUMP 16
+#define MADV_DODUMP 17
+#define MADV_HWPOISON 100
 #define MADV_SOFT_OFFLINE 101
 #endif
diff --git a/fusl/arch/i386/bits/posix.h b/fusl/arch/i386/bits/posix.h
index 30a3871..8897d37 100644
--- a/fusl/arch/i386/bits/posix.h
+++ b/fusl/arch/i386/bits/posix.h
@@ -1,2 +1,2 @@
-#define _POSIX_V6_ILP32_OFFBIG  1
-#define _POSIX_V7_ILP32_OFFBIG  1
+#define _POSIX_V6_ILP32_OFFBIG 1
+#define _POSIX_V7_ILP32_OFFBIG 1
diff --git a/fusl/arch/i386/bits/signal.h b/fusl/arch/i386/bits/signal.h
index 1f9085a..4260b7a 100644
--- a/fusl/arch/i386/bits/signal.h
+++ b/fusl/arch/i386/bits/signal.h
@@ -1,5 +1,5 @@
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define MINSIGSTKSZ 2048
@@ -7,117 +7,114 @@
 #endif
 
 #ifdef _GNU_SOURCE
-#define REG_GS          0
-#define REG_FS          1
-#define REG_ES          2
-#define REG_DS          3
-#define REG_EDI         4
-#define REG_ESI         5
-#define REG_EBP         6
-#define REG_ESP         7
-#define REG_EBX         8
-#define REG_EDX         9
-#define REG_ECX         10
-#define REG_EAX         11
-#define REG_TRAPNO      12
-#define REG_ERR         13
-#define REG_EIP         14
-#define REG_CS          15
-#define REG_EFL         16
-#define REG_UESP        17
-#define REG_SS          18
+#define REG_GS 0
+#define REG_FS 1
+#define REG_ES 2
+#define REG_DS 3
+#define REG_EDI 4
+#define REG_ESI 5
+#define REG_EBP 6
+#define REG_ESP 7
+#define REG_EBX 8
+#define REG_EDX 9
+#define REG_ECX 10
+#define REG_EAX 11
+#define REG_TRAPNO 12
+#define REG_ERR 13
+#define REG_EIP 14
+#define REG_CS 15
+#define REG_EFL 16
+#define REG_UESP 17
+#define REG_SS 18
 #endif
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 typedef int greg_t, gregset_t[19];
 typedef struct _fpstate {
-	unsigned long cw, sw, tag, ipoff, cssel, dataoff, datasel;
-	struct {
-		unsigned short significand[4], exponent;
-	} _st[8];
-	unsigned long status;
-} *fpregset_t;
+  unsigned long cw, sw, tag, ipoff, cssel, dataoff, datasel;
+  struct {
+    unsigned short significand[4], exponent;
+  } _st[8];
+  unsigned long status;
+} * fpregset_t;
 struct sigcontext {
-	unsigned short gs, __gsh, fs, __fsh, es, __esh, ds, __dsh;
-	unsigned long edi, esi, ebp, esp, ebx, edx, ecx, eax;
-	unsigned long trapno, err, eip;
-	unsigned short cs, __csh;
-	unsigned long eflags, esp_at_signal;
-	unsigned short ss, __ssh;
-	struct _fpstate *fpstate;
-	unsigned long oldmask, cr2;
+  unsigned short gs, __gsh, fs, __fsh, es, __esh, ds, __dsh;
+  unsigned long edi, esi, ebp, esp, ebx, edx, ecx, eax;
+  unsigned long trapno, err, eip;
+  unsigned short cs, __csh;
+  unsigned long eflags, esp_at_signal;
+  unsigned short ss, __ssh;
+  struct _fpstate* fpstate;
+  unsigned long oldmask, cr2;
 };
 typedef struct {
-	gregset_t gregs;
-	fpregset_t fpregs;
-	unsigned long oldmask, cr2;
+  gregset_t gregs;
+  fpregset_t fpregs;
+  unsigned long oldmask, cr2;
 } mcontext_t;
 #else
-typedef struct {
-	unsigned __space[22];
-} mcontext_t;
+typedef struct { unsigned __space[22]; } mcontext_t;
 #endif
 
 struct sigaltstack {
-	void *ss_sp;
-	int ss_flags;
-	size_t ss_size;
+  void* ss_sp;
+  int ss_flags;
+  size_t ss_size;
 };
 
 typedef struct __ucontext {
-	unsigned long uc_flags;
-	struct __ucontext *uc_link;
-	stack_t uc_stack;
-	mcontext_t uc_mcontext;
-	sigset_t uc_sigmask;
-	unsigned long __fpregs_mem[28];
+  unsigned long uc_flags;
+  struct __ucontext* uc_link;
+  stack_t uc_stack;
+  mcontext_t uc_mcontext;
+  sigset_t uc_sigmask;
+  unsigned long __fpregs_mem[28];
 } ucontext_t;
 
-#define SA_NOCLDSTOP  1
-#define SA_NOCLDWAIT  2
-#define SA_SIGINFO    4
-#define SA_ONSTACK    0x08000000
-#define SA_RESTART    0x10000000
-#define SA_NODEFER    0x40000000
-#define SA_RESETHAND  0x80000000
-#define SA_RESTORER   0x04000000
+#define SA_NOCLDSTOP 1
+#define SA_NOCLDWAIT 2
+#define SA_SIGINFO 4
+#define SA_ONSTACK 0x08000000
+#define SA_RESTART 0x10000000
+#define SA_NODEFER 0x40000000
+#define SA_RESETHAND 0x80000000
+#define SA_RESTORER 0x04000000
 
 #endif
 
-#define SIGHUP    1
-#define SIGINT    2
-#define SIGQUIT   3
-#define SIGILL    4
-#define SIGTRAP   5
-#define SIGABRT   6
-#define SIGIOT    SIGABRT
-#define SIGBUS    7
-#define SIGFPE    8
-#define SIGKILL   9
-#define SIGUSR1   10
-#define SIGSEGV   11
-#define SIGUSR2   12
-#define SIGPIPE   13
-#define SIGALRM   14
-#define SIGTERM   15
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT SIGABRT
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
 #define SIGSTKFLT 16
-#define SIGCHLD   17
-#define SIGCONT   18
-#define SIGSTOP   19
-#define SIGTSTP   20
-#define SIGTTIN   21
-#define SIGTTOU   22
-#define SIGURG    23
-#define SIGXCPU   24
-#define SIGXFSZ   25
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
 #define SIGVTALRM 26
-#define SIGPROF   27
-#define SIGWINCH  28
-#define SIGIO     29
-#define SIGPOLL   29
-#define SIGPWR    30
-#define SIGSYS    31
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL 29
+#define SIGPWR 30
+#define SIGSYS 31
 #define SIGUNUSED SIGSYS
 
 #define _NSIG 65
-
diff --git a/fusl/arch/i386/bits/stat.h b/fusl/arch/i386/bits/stat.h
index bb9314a..ab45e4c 100644
--- a/fusl/arch/i386/bits/stat.h
+++ b/fusl/arch/i386/bits/stat.h
@@ -1,22 +1,21 @@
 /* copied from kernel definition, but with padding replaced
  * by the corresponding correctly-sized userspace types. */
 
-struct stat
-{
-	dev_t st_dev;
-	int __st_dev_padding;
-	long __st_ino_truncated;
-	mode_t st_mode;
-	nlink_t st_nlink;
-	uid_t st_uid;
-	gid_t st_gid;
-	dev_t st_rdev;
-	int __st_rdev_padding;
-	off_t st_size;
-	blksize_t st_blksize;
-	blkcnt_t st_blocks;
-	struct timespec st_atim;
-	struct timespec st_mtim;
-	struct timespec st_ctim;
-	ino_t st_ino;
+struct stat {
+  dev_t st_dev;
+  int __st_dev_padding;
+  long __st_ino_truncated;
+  mode_t st_mode;
+  nlink_t st_nlink;
+  uid_t st_uid;
+  gid_t st_gid;
+  dev_t st_rdev;
+  int __st_rdev_padding;
+  off_t st_size;
+  blksize_t st_blksize;
+  blkcnt_t st_blocks;
+  struct timespec st_atim;
+  struct timespec st_mtim;
+  struct timespec st_ctim;
+  ino_t st_ino;
 };
diff --git a/fusl/arch/i386/bits/stdarg.h b/fusl/arch/i386/bits/stdarg.h
index 6b1830d..6ba75fd 100644
--- a/fusl/arch/i386/bits/stdarg.h
+++ b/fusl/arch/i386/bits/stdarg.h
@@ -1,9 +1,11 @@
-#define __VA_ALIGNED_SIZE(x) ((sizeof(x) + sizeof(int) - 1) & ~(sizeof(int) - 1))
+#define __VA_ALIGNED_SIZE(x) \
+  ((sizeof(x) + sizeof(int) - 1) & ~(sizeof(int) - 1))
 
-#define va_start(ap, last) ((ap) = (void *)(((char *)&(last)) + __VA_ALIGNED_SIZE(last)))
+#define va_start(ap, last) \
+  ((ap) = (void*)(((char*)&(last)) + __VA_ALIGNED_SIZE(last)))
 #define va_end(ap) ((void)0)
 #define va_copy(dest, src) ((dest) = (src))
 
-#define va_arg(ap, type) \
-	( ((ap) = (va_list)((char *)(ap) + __VA_ALIGNED_SIZE(type))), \
-	*(type *)(void *)((char *)(ap) - __VA_ALIGNED_SIZE(type)) )
+#define va_arg(ap, type)                                      \
+  (((ap) = (va_list)((char*)(ap) + __VA_ALIGNED_SIZE(type))), \
+   *(type*)(void*)((char*)(ap)-__VA_ALIGNED_SIZE(type)))
diff --git a/fusl/arch/i386/bits/stdint.h b/fusl/arch/i386/bits/stdint.h
index d1b2712..93ec5df 100644
--- a/fusl/arch/i386/bits/stdint.h
+++ b/fusl/arch/i386/bits/stdint.h
@@ -3,18 +3,18 @@
 typedef uint32_t uint_fast16_t;
 typedef uint32_t uint_fast32_t;
 
-#define INT_FAST16_MIN  INT32_MIN
-#define INT_FAST32_MIN  INT32_MIN
+#define INT_FAST16_MIN INT32_MIN
+#define INT_FAST32_MIN INT32_MIN
 
-#define INT_FAST16_MAX  INT32_MAX
-#define INT_FAST32_MAX  INT32_MAX
+#define INT_FAST16_MAX INT32_MAX
+#define INT_FAST32_MAX INT32_MAX
 
 #define UINT_FAST16_MAX UINT32_MAX
 #define UINT_FAST32_MAX UINT32_MAX
 
-#define INTPTR_MIN      INT32_MIN
-#define INTPTR_MAX      INT32_MAX
-#define UINTPTR_MAX     UINT32_MAX
-#define PTRDIFF_MIN     INT32_MIN
-#define PTRDIFF_MAX     INT32_MAX
-#define SIZE_MAX        UINT32_MAX
+#define INTPTR_MIN INT32_MIN
+#define INTPTR_MAX INT32_MAX
+#define UINTPTR_MAX UINT32_MAX
+#define PTRDIFF_MIN INT32_MIN
+#define PTRDIFF_MAX INT32_MAX
+#define SIZE_MAX UINT32_MAX
diff --git a/fusl/arch/i386/bits/syscall.h b/fusl/arch/i386/bits/syscall.h
index b1a389b..f7188ff 100644
--- a/fusl/arch/i386/bits/syscall.h
+++ b/fusl/arch/i386/bits/syscall.h
@@ -1,758 +1,757 @@
-#define __NR_restart_syscall      0
-#define __NR_exit		  1
-#define __NR_fork		  2
-#define __NR_read		  3
-#define __NR_write		  4
-#define __NR_open		  5
-#define __NR_close		  6
-#define __NR_waitpid		  7
-#define __NR_creat		  8
-#define __NR_link		  9
-#define __NR_unlink		 10
-#define __NR_execve		 11
-#define __NR_chdir		 12
-#define __NR_time		 13
-#define __NR_mknod		 14
-#define __NR_chmod		 15
-#define __NR_lchown		 16
-#define __NR_break		 17
-#define __NR_oldstat		 18
-#define __NR_lseek		 19
-#define __NR_getpid		 20
-#define __NR_mount		 21
-#define __NR_umount		 22
-#define __NR_setuid		 23
-#define __NR_getuid		 24
-#define __NR_stime		 25
-#define __NR_ptrace		 26
-#define __NR_alarm		 27
-#define __NR_oldfstat		 28
-#define __NR_pause		 29
-#define __NR_utime		 30
-#define __NR_stty		 31
-#define __NR_gtty		 32
-#define __NR_access		 33
-#define __NR_nice		 34
-#define __NR_ftime		 35
-#define __NR_sync		 36
-#define __NR_kill		 37
-#define __NR_rename		 38
-#define __NR_mkdir		 39
-#define __NR_rmdir		 40
-#define __NR_dup		 41
-#define __NR_pipe		 42
-#define __NR_times		 43
-#define __NR_prof		 44
-#define __NR_brk		 45
-#define __NR_setgid		 46
-#define __NR_getgid		 47
-#define __NR_signal		 48
-#define __NR_geteuid		 49
-#define __NR_getegid		 50
-#define __NR_acct		 51
-#define __NR_umount2		 52
-#define __NR_lock		 53
-#define __NR_ioctl		 54
-#define __NR_fcntl		 55
-#define __NR_mpx		 56
-#define __NR_setpgid		 57
-#define __NR_ulimit		 58
-#define __NR_oldolduname	 59
-#define __NR_umask		 60
-#define __NR_chroot		 61
-#define __NR_ustat		 62
-#define __NR_dup2		 63
-#define __NR_getppid		 64
-#define __NR_getpgrp		 65
-#define __NR_setsid		 66
-#define __NR_sigaction		 67
-#define __NR_sgetmask		 68
-#define __NR_ssetmask		 69
-#define __NR_setreuid		 70
-#define __NR_setregid		 71
-#define __NR_sigsuspend		 72
-#define __NR_sigpending		 73
-#define __NR_sethostname	 74
-#define __NR_setrlimit		 75
-#define __NR_getrlimit		 76   /* Back compatible 2Gig limited rlimit */
-#define __NR_getrusage		 77
-#define __NR_gettimeofday	 78
-#define __NR_settimeofday	 79
-#define __NR_getgroups		 80
-#define __NR_setgroups		 81
-#define __NR_select		 82
-#define __NR_symlink		 83
-#define __NR_oldlstat		 84
-#define __NR_readlink		 85
-#define __NR_uselib		 86
-#define __NR_swapon		 87
-#define __NR_reboot		 88
-#define __NR_readdir		 89
-#define __NR_mmap		 90
-#define __NR_munmap		 91
-#define __NR_truncate		 92
-#define __NR_ftruncate		 93
-#define __NR_fchmod		 94
-#define __NR_fchown		 95
-#define __NR_getpriority	 96
-#define __NR_setpriority	 97
-#define __NR_profil		 98
-#define __NR_statfs		99
-#define __NR_fstatfs		100
-#define __NR_ioperm		101
-#define __NR_socketcall		102
-#define __NR_syslog		103
-#define __NR_setitimer		104
-#define __NR_getitimer		105
-#define __NR_stat		106
-#define __NR_lstat		107
-#define __NR_fstat		108
-#define __NR_olduname		109
-#define __NR_iopl		110
-#define __NR_vhangup		111
-#define __NR_idle		112
-#define __NR_vm86old		113
-#define __NR_wait4		114
-#define __NR_swapoff		115
-#define __NR_sysinfo		116
-#define __NR_ipc		117
-#define __NR_fsync		118
-#define __NR_sigreturn		119
-#define __NR_clone		120
-#define __NR_setdomainname	121
-#define __NR_uname		122
-#define __NR_modify_ldt		123
-#define __NR_adjtimex		124
-#define __NR_mprotect		125
-#define __NR_sigprocmask	126
-#define __NR_create_module	127
-#define __NR_init_module	128
-#define __NR_delete_module	129
-#define __NR_get_kernel_syms	130
-#define __NR_quotactl		131
-#define __NR_getpgid		132
-#define __NR_fchdir		133
-#define __NR_bdflush		134
-#define __NR_sysfs		135
-#define __NR_personality	136
-#define __NR_afs_syscall	137
-#define __NR_setfsuid		138
-#define __NR_setfsgid		139
-#define __NR__llseek		140
-#define __NR_getdents		141
-#define __NR__newselect		142
-#define __NR_flock		143
-#define __NR_msync		144
-#define __NR_readv		145
-#define __NR_writev		146
-#define __NR_getsid		147
-#define __NR_fdatasync		148
-#define __NR__sysctl		149
-#define __NR_mlock		150
-#define __NR_munlock		151
-#define __NR_mlockall		152
-#define __NR_munlockall		153
-#define __NR_sched_setparam		154
-#define __NR_sched_getparam		155
-#define __NR_sched_setscheduler		156
-#define __NR_sched_getscheduler		157
-#define __NR_sched_yield		158
-#define __NR_sched_get_priority_max	159
-#define __NR_sched_get_priority_min	160
-#define __NR_sched_rr_get_interval	161
-#define __NR_nanosleep		162
-#define __NR_mremap		163
-#define __NR_setresuid		164
-#define __NR_getresuid		165
-#define __NR_vm86		166
-#define __NR_query_module	167
-#define __NR_poll		168
-#define __NR_nfsservctl		169
-#define __NR_setresgid		170
-#define __NR_getresgid		171
-#define __NR_prctl              172
-#define __NR_rt_sigreturn	173
-#define __NR_rt_sigaction	174
-#define __NR_rt_sigprocmask	175
-#define __NR_rt_sigpending	176
-#define __NR_rt_sigtimedwait	177
-#define __NR_rt_sigqueueinfo	178
-#define __NR_rt_sigsuspend	179
-#define __NR_pread64		180
-#define __NR_pwrite64		181
-#define __NR_chown		182
-#define __NR_getcwd		183
-#define __NR_capget		184
-#define __NR_capset		185
-#define __NR_sigaltstack	186
-#define __NR_sendfile		187
-#define __NR_getpmsg		188
-#define __NR_putpmsg		189
-#define __NR_vfork		190
-#define __NR_ugetrlimit		191
-#define __NR_mmap2		192
-#define __NR_truncate64		193
-#define __NR_ftruncate64	194
-#define __NR_stat64		195
-#define __NR_lstat64		196
-#define __NR_fstat64		197
-#define __NR_lchown32		198
-#define __NR_getuid32		199
-#define __NR_getgid32		200
-#define __NR_geteuid32		201
-#define __NR_getegid32		202
-#define __NR_setreuid32		203
-#define __NR_setregid32		204
-#define __NR_getgroups32	205
-#define __NR_setgroups32	206
-#define __NR_fchown32		207
-#define __NR_setresuid32	208
-#define __NR_getresuid32	209
-#define __NR_setresgid32	210
-#define __NR_getresgid32	211
-#define __NR_chown32		212
-#define __NR_setuid32		213
-#define __NR_setgid32		214
-#define __NR_setfsuid32		215
-#define __NR_setfsgid32		216
-#define __NR_pivot_root		217
-#define __NR_mincore		218
-#define __NR_madvise		219
-#define __NR_madvise1		219
-#define __NR_getdents64		220
-#define __NR_fcntl64		221
+#define __NR_restart_syscall 0
+#define __NR_exit 1
+#define __NR_fork 2
+#define __NR_read 3
+#define __NR_write 4
+#define __NR_open 5
+#define __NR_close 6
+#define __NR_waitpid 7
+#define __NR_creat 8
+#define __NR_link 9
+#define __NR_unlink 10
+#define __NR_execve 11
+#define __NR_chdir 12
+#define __NR_time 13
+#define __NR_mknod 14
+#define __NR_chmod 15
+#define __NR_lchown 16
+#define __NR_break 17
+#define __NR_oldstat 18
+#define __NR_lseek 19
+#define __NR_getpid 20
+#define __NR_mount 21
+#define __NR_umount 22
+#define __NR_setuid 23
+#define __NR_getuid 24
+#define __NR_stime 25
+#define __NR_ptrace 26
+#define __NR_alarm 27
+#define __NR_oldfstat 28
+#define __NR_pause 29
+#define __NR_utime 30
+#define __NR_stty 31
+#define __NR_gtty 32
+#define __NR_access 33
+#define __NR_nice 34
+#define __NR_ftime 35
+#define __NR_sync 36
+#define __NR_kill 37
+#define __NR_rename 38
+#define __NR_mkdir 39
+#define __NR_rmdir 40
+#define __NR_dup 41
+#define __NR_pipe 42
+#define __NR_times 43
+#define __NR_prof 44
+#define __NR_brk 45
+#define __NR_setgid 46
+#define __NR_getgid 47
+#define __NR_signal 48
+#define __NR_geteuid 49
+#define __NR_getegid 50
+#define __NR_acct 51
+#define __NR_umount2 52
+#define __NR_lock 53
+#define __NR_ioctl 54
+#define __NR_fcntl 55
+#define __NR_mpx 56
+#define __NR_setpgid 57
+#define __NR_ulimit 58
+#define __NR_oldolduname 59
+#define __NR_umask 60
+#define __NR_chroot 61
+#define __NR_ustat 62
+#define __NR_dup2 63
+#define __NR_getppid 64
+#define __NR_getpgrp 65
+#define __NR_setsid 66
+#define __NR_sigaction 67
+#define __NR_sgetmask 68
+#define __NR_ssetmask 69
+#define __NR_setreuid 70
+#define __NR_setregid 71
+#define __NR_sigsuspend 72
+#define __NR_sigpending 73
+#define __NR_sethostname 74
+#define __NR_setrlimit 75
+#define __NR_getrlimit 76 /* Back compatible 2Gig limited rlimit */
+#define __NR_getrusage 77
+#define __NR_gettimeofday 78
+#define __NR_settimeofday 79
+#define __NR_getgroups 80
+#define __NR_setgroups 81
+#define __NR_select 82
+#define __NR_symlink 83
+#define __NR_oldlstat 84
+#define __NR_readlink 85
+#define __NR_uselib 86
+#define __NR_swapon 87
+#define __NR_reboot 88
+#define __NR_readdir 89
+#define __NR_mmap 90
+#define __NR_munmap 91
+#define __NR_truncate 92
+#define __NR_ftruncate 93
+#define __NR_fchmod 94
+#define __NR_fchown 95
+#define __NR_getpriority 96
+#define __NR_setpriority 97
+#define __NR_profil 98
+#define __NR_statfs 99
+#define __NR_fstatfs 100
+#define __NR_ioperm 101
+#define __NR_socketcall 102
+#define __NR_syslog 103
+#define __NR_setitimer 104
+#define __NR_getitimer 105
+#define __NR_stat 106
+#define __NR_lstat 107
+#define __NR_fstat 108
+#define __NR_olduname 109
+#define __NR_iopl 110
+#define __NR_vhangup 111
+#define __NR_idle 112
+#define __NR_vm86old 113
+#define __NR_wait4 114
+#define __NR_swapoff 115
+#define __NR_sysinfo 116
+#define __NR_ipc 117
+#define __NR_fsync 118
+#define __NR_sigreturn 119
+#define __NR_clone 120
+#define __NR_setdomainname 121
+#define __NR_uname 122
+#define __NR_modify_ldt 123
+#define __NR_adjtimex 124
+#define __NR_mprotect 125
+#define __NR_sigprocmask 126
+#define __NR_create_module 127
+#define __NR_init_module 128
+#define __NR_delete_module 129
+#define __NR_get_kernel_syms 130
+#define __NR_quotactl 131
+#define __NR_getpgid 132
+#define __NR_fchdir 133
+#define __NR_bdflush 134
+#define __NR_sysfs 135
+#define __NR_personality 136
+#define __NR_afs_syscall 137
+#define __NR_setfsuid 138
+#define __NR_setfsgid 139
+#define __NR__llseek 140
+#define __NR_getdents 141
+#define __NR__newselect 142
+#define __NR_flock 143
+#define __NR_msync 144
+#define __NR_readv 145
+#define __NR_writev 146
+#define __NR_getsid 147
+#define __NR_fdatasync 148
+#define __NR__sysctl 149
+#define __NR_mlock 150
+#define __NR_munlock 151
+#define __NR_mlockall 152
+#define __NR_munlockall 153
+#define __NR_sched_setparam 154
+#define __NR_sched_getparam 155
+#define __NR_sched_setscheduler 156
+#define __NR_sched_getscheduler 157
+#define __NR_sched_yield 158
+#define __NR_sched_get_priority_max 159
+#define __NR_sched_get_priority_min 160
+#define __NR_sched_rr_get_interval 161
+#define __NR_nanosleep 162
+#define __NR_mremap 163
+#define __NR_setresuid 164
+#define __NR_getresuid 165
+#define __NR_vm86 166
+#define __NR_query_module 167
+#define __NR_poll 168
+#define __NR_nfsservctl 169
+#define __NR_setresgid 170
+#define __NR_getresgid 171
+#define __NR_prctl 172
+#define __NR_rt_sigreturn 173
+#define __NR_rt_sigaction 174
+#define __NR_rt_sigprocmask 175
+#define __NR_rt_sigpending 176
+#define __NR_rt_sigtimedwait 177
+#define __NR_rt_sigqueueinfo 178
+#define __NR_rt_sigsuspend 179
+#define __NR_pread64 180
+#define __NR_pwrite64 181
+#define __NR_chown 182
+#define __NR_getcwd 183
+#define __NR_capget 184
+#define __NR_capset 185
+#define __NR_sigaltstack 186
+#define __NR_sendfile 187
+#define __NR_getpmsg 188
+#define __NR_putpmsg 189
+#define __NR_vfork 190
+#define __NR_ugetrlimit 191
+#define __NR_mmap2 192
+#define __NR_truncate64 193
+#define __NR_ftruncate64 194
+#define __NR_stat64 195
+#define __NR_lstat64 196
+#define __NR_fstat64 197
+#define __NR_lchown32 198
+#define __NR_getuid32 199
+#define __NR_getgid32 200
+#define __NR_geteuid32 201
+#define __NR_getegid32 202
+#define __NR_setreuid32 203
+#define __NR_setregid32 204
+#define __NR_getgroups32 205
+#define __NR_setgroups32 206
+#define __NR_fchown32 207
+#define __NR_setresuid32 208
+#define __NR_getresuid32 209
+#define __NR_setresgid32 210
+#define __NR_getresgid32 211
+#define __NR_chown32 212
+#define __NR_setuid32 213
+#define __NR_setgid32 214
+#define __NR_setfsuid32 215
+#define __NR_setfsgid32 216
+#define __NR_pivot_root 217
+#define __NR_mincore 218
+#define __NR_madvise 219
+#define __NR_madvise1 219
+#define __NR_getdents64 220
+#define __NR_fcntl64 221
 /* 223 is unused */
-#define __NR_gettid		224
-#define __NR_readahead		225
-#define __NR_setxattr		226
-#define __NR_lsetxattr		227
-#define __NR_fsetxattr		228
-#define __NR_getxattr		229
-#define __NR_lgetxattr		230
-#define __NR_fgetxattr		231
-#define __NR_listxattr		232
-#define __NR_llistxattr		233
-#define __NR_flistxattr		234
-#define __NR_removexattr	235
-#define __NR_lremovexattr	236
-#define __NR_fremovexattr	237
-#define __NR_tkill		238
-#define __NR_sendfile64		239
-#define __NR_futex		240
-#define __NR_sched_setaffinity	241
-#define __NR_sched_getaffinity	242
-#define __NR_set_thread_area	243
-#define __NR_get_thread_area	244
-#define __NR_io_setup		245
-#define __NR_io_destroy		246
-#define __NR_io_getevents	247
-#define __NR_io_submit		248
-#define __NR_io_cancel		249
-#define __NR_fadvise64		250
+#define __NR_gettid 224
+#define __NR_readahead 225
+#define __NR_setxattr 226
+#define __NR_lsetxattr 227
+#define __NR_fsetxattr 228
+#define __NR_getxattr 229
+#define __NR_lgetxattr 230
+#define __NR_fgetxattr 231
+#define __NR_listxattr 232
+#define __NR_llistxattr 233
+#define __NR_flistxattr 234
+#define __NR_removexattr 235
+#define __NR_lremovexattr 236
+#define __NR_fremovexattr 237
+#define __NR_tkill 238
+#define __NR_sendfile64 239
+#define __NR_futex 240
+#define __NR_sched_setaffinity 241
+#define __NR_sched_getaffinity 242
+#define __NR_set_thread_area 243
+#define __NR_get_thread_area 244
+#define __NR_io_setup 245
+#define __NR_io_destroy 246
+#define __NR_io_getevents 247
+#define __NR_io_submit 248
+#define __NR_io_cancel 249
+#define __NR_fadvise64 250
 /* 251 is available for reuse (was briefly sys_set_zone_reclaim) */
-#define __NR_exit_group		252
-#define __NR_lookup_dcookie	253
-#define __NR_epoll_create	254
-#define __NR_epoll_ctl		255
-#define __NR_epoll_wait		256
-#define __NR_remap_file_pages	257
-#define __NR_set_tid_address	258
-#define __NR_timer_create	259
-#define __NR_timer_settime	(__NR_timer_create+1)
-#define __NR_timer_gettime	(__NR_timer_create+2)
-#define __NR_timer_getoverrun	(__NR_timer_create+3)
-#define __NR_timer_delete	(__NR_timer_create+4)
-#define __NR_clock_settime	(__NR_timer_create+5)
-#define __NR_clock_gettime	(__NR_timer_create+6)
-#define __NR_clock_getres	(__NR_timer_create+7)
-#define __NR_clock_nanosleep	(__NR_timer_create+8)
-#define __NR_statfs64		268
-#define __NR_fstatfs64		269
-#define __NR_tgkill		270
-#define __NR_utimes		271
-#define __NR_fadvise64_64	272
-#define __NR_vserver		273
-#define __NR_mbind		274
-#define __NR_get_mempolicy	275
-#define __NR_set_mempolicy	276
-#define __NR_mq_open 		277
-#define __NR_mq_unlink		(__NR_mq_open+1)
-#define __NR_mq_timedsend	(__NR_mq_open+2)
-#define __NR_mq_timedreceive	(__NR_mq_open+3)
-#define __NR_mq_notify		(__NR_mq_open+4)
-#define __NR_mq_getsetattr	(__NR_mq_open+5)
-#define __NR_kexec_load		283
-#define __NR_waitid		284
+#define __NR_exit_group 252
+#define __NR_lookup_dcookie 253
+#define __NR_epoll_create 254
+#define __NR_epoll_ctl 255
+#define __NR_epoll_wait 256
+#define __NR_remap_file_pages 257
+#define __NR_set_tid_address 258
+#define __NR_timer_create 259
+#define __NR_timer_settime (__NR_timer_create + 1)
+#define __NR_timer_gettime (__NR_timer_create + 2)
+#define __NR_timer_getoverrun (__NR_timer_create + 3)
+#define __NR_timer_delete (__NR_timer_create + 4)
+#define __NR_clock_settime (__NR_timer_create + 5)
+#define __NR_clock_gettime (__NR_timer_create + 6)
+#define __NR_clock_getres (__NR_timer_create + 7)
+#define __NR_clock_nanosleep (__NR_timer_create + 8)
+#define __NR_statfs64 268
+#define __NR_fstatfs64 269
+#define __NR_tgkill 270
+#define __NR_utimes 271
+#define __NR_fadvise64_64 272
+#define __NR_vserver 273
+#define __NR_mbind 274
+#define __NR_get_mempolicy 275
+#define __NR_set_mempolicy 276
+#define __NR_mq_open 277
+#define __NR_mq_unlink (__NR_mq_open + 1)
+#define __NR_mq_timedsend (__NR_mq_open + 2)
+#define __NR_mq_timedreceive (__NR_mq_open + 3)
+#define __NR_mq_notify (__NR_mq_open + 4)
+#define __NR_mq_getsetattr (__NR_mq_open + 5)
+#define __NR_kexec_load 283
+#define __NR_waitid 284
 /* #define __NR_sys_setaltroot	285 */
-#define __NR_add_key		286
-#define __NR_request_key	287
-#define __NR_keyctl		288
-#define __NR_ioprio_set		289
-#define __NR_ioprio_get		290
-#define __NR_inotify_init	291
-#define __NR_inotify_add_watch	292
-#define __NR_inotify_rm_watch	293
-#define __NR_migrate_pages	294
-#define __NR_openat		295
-#define __NR_mkdirat		296
-#define __NR_mknodat		297
-#define __NR_fchownat		298
-#define __NR_futimesat		299
-#define __NR_fstatat64		300
-#define __NR_unlinkat		301
-#define __NR_renameat		302
-#define __NR_linkat		303
-#define __NR_symlinkat		304
-#define __NR_readlinkat		305
-#define __NR_fchmodat		306
-#define __NR_faccessat		307
-#define __NR_pselect6		308
-#define __NR_ppoll		309
-#define __NR_unshare		310
-#define __NR_set_robust_list	311
-#define __NR_get_robust_list	312
-#define __NR_splice		313
-#define __NR_sync_file_range	314
-#define __NR_tee		315
-#define __NR_vmsplice		316
-#define __NR_move_pages		317
-#define __NR_getcpu		318
-#define __NR_epoll_pwait	319
-#define __NR_utimensat		320
-#define __NR_signalfd		321
-#define __NR_timerfd_create	322
-#define __NR_eventfd		323
-#define __NR_fallocate		324
-#define __NR_timerfd_settime	325
-#define __NR_timerfd_gettime	326
-#define __NR_signalfd4		327
-#define __NR_eventfd2		328
-#define __NR_epoll_create1	329
-#define __NR_dup3		330
-#define __NR_pipe2		331
-#define __NR_inotify_init1	332
-#define __NR_preadv		333
-#define __NR_pwritev		334
-#define __NR_rt_tgsigqueueinfo	335
-#define __NR_perf_event_open	336
-#define __NR_recvmmsg		337
-#define __NR_fanotify_init	338
-#define __NR_fanotify_mark	339
-#define __NR_prlimit64		340
-#define __NR_name_to_handle_at	341
-#define __NR_open_by_handle_at	342
-#define __NR_clock_adjtime	343
-#define __NR_syncfs		344
-#define __NR_sendmmsg		345
-#define __NR_setns		346
-#define __NR_process_vm_readv	347
-#define __NR_process_vm_writev	348
-#define __NR_kcmp		349
-#define __NR_finit_module	350
-#define __NR_sched_setattr	351
-#define __NR_sched_getattr	352
-#define __NR_renameat2		353
-#define __NR_seccomp		354
-#define __NR_getrandom		355
-#define __NR_memfd_create	356
-#define __NR_bpf		357
-#define __NR_execveat		358
-#define __NR_socket		359
-#define __NR_socketpair		360
-#define __NR_bind		361
-#define __NR_connect		362
-#define __NR_listen		363
-#define __NR_accept4		364
-#define __NR_getsockopt		365
-#define __NR_setsockopt		366
-#define __NR_getsockname	367
-#define __NR_getpeername	368
-#define __NR_sendto		369
-#define __NR_sendmsg		370
-#define __NR_recvfrom		371
-#define __NR_recvmsg		372
-#define __NR_shutdown		373
-#define __NR_userfaultfd	374
-#define __NR_membarrier		375
-#define __NR_mlock2		376
-
+#define __NR_add_key 286
+#define __NR_request_key 287
+#define __NR_keyctl 288
+#define __NR_ioprio_set 289
+#define __NR_ioprio_get 290
+#define __NR_inotify_init 291
+#define __NR_inotify_add_watch 292
+#define __NR_inotify_rm_watch 293
+#define __NR_migrate_pages 294
+#define __NR_openat 295
+#define __NR_mkdirat 296
+#define __NR_mknodat 297
+#define __NR_fchownat 298
+#define __NR_futimesat 299
+#define __NR_fstatat64 300
+#define __NR_unlinkat 301
+#define __NR_renameat 302
+#define __NR_linkat 303
+#define __NR_symlinkat 304
+#define __NR_readlinkat 305
+#define __NR_fchmodat 306
+#define __NR_faccessat 307
+#define __NR_pselect6 308
+#define __NR_ppoll 309
+#define __NR_unshare 310
+#define __NR_set_robust_list 311
+#define __NR_get_robust_list 312
+#define __NR_splice 313
+#define __NR_sync_file_range 314
+#define __NR_tee 315
+#define __NR_vmsplice 316
+#define __NR_move_pages 317
+#define __NR_getcpu 318
+#define __NR_epoll_pwait 319
+#define __NR_utimensat 320
+#define __NR_signalfd 321
+#define __NR_timerfd_create 322
+#define __NR_eventfd 323
+#define __NR_fallocate 324
+#define __NR_timerfd_settime 325
+#define __NR_timerfd_gettime 326
+#define __NR_signalfd4 327
+#define __NR_eventfd2 328
+#define __NR_epoll_create1 329
+#define __NR_dup3 330
+#define __NR_pipe2 331
+#define __NR_inotify_init1 332
+#define __NR_preadv 333
+#define __NR_pwritev 334
+#define __NR_rt_tgsigqueueinfo 335
+#define __NR_perf_event_open 336
+#define __NR_recvmmsg 337
+#define __NR_fanotify_init 338
+#define __NR_fanotify_mark 339
+#define __NR_prlimit64 340
+#define __NR_name_to_handle_at 341
+#define __NR_open_by_handle_at 342
+#define __NR_clock_adjtime 343
+#define __NR_syncfs 344
+#define __NR_sendmmsg 345
+#define __NR_setns 346
+#define __NR_process_vm_readv 347
+#define __NR_process_vm_writev 348
+#define __NR_kcmp 349
+#define __NR_finit_module 350
+#define __NR_sched_setattr 351
+#define __NR_sched_getattr 352
+#define __NR_renameat2 353
+#define __NR_seccomp 354
+#define __NR_getrandom 355
+#define __NR_memfd_create 356
+#define __NR_bpf 357
+#define __NR_execveat 358
+#define __NR_socket 359
+#define __NR_socketpair 360
+#define __NR_bind 361
+#define __NR_connect 362
+#define __NR_listen 363
+#define __NR_accept4 364
+#define __NR_getsockopt 365
+#define __NR_setsockopt 366
+#define __NR_getsockname 367
+#define __NR_getpeername 368
+#define __NR_sendto 369
+#define __NR_sendmsg 370
+#define __NR_recvfrom 371
+#define __NR_recvmsg 372
+#define __NR_shutdown 373
+#define __NR_userfaultfd 374
+#define __NR_membarrier 375
+#define __NR_mlock2 376
 
 /* Repeated with SYS_ prefix */
 
-#define SYS_restart_syscall      0
-#define SYS_exit		  1
-#define SYS_fork		  2
-#define SYS_read		  3
-#define SYS_write		  4
-#define SYS_open		  5
-#define SYS_close		  6
-#define SYS_waitpid		  7
-#define SYS_creat		  8
-#define SYS_link		  9
-#define SYS_unlink		 10
-#define SYS_execve		 11
-#define SYS_chdir		 12
-#define SYS_time		 13
-#define SYS_mknod		 14
-#define SYS_chmod		 15
-#define SYS_lchown		 16
-#define SYS_break		 17
-#define SYS_oldstat		 18
-#define SYS_lseek		 19
-#define SYS_getpid		 20
-#define SYS_mount		 21
-#define SYS_umount		 22
-#define SYS_setuid		 23
-#define SYS_getuid		 24
-#define SYS_stime		 25
-#define SYS_ptrace		 26
-#define SYS_alarm		 27
-#define SYS_oldfstat		 28
-#define SYS_pause		 29
-#define SYS_utime		 30
-#define SYS_stty		 31
-#define SYS_gtty		 32
-#define SYS_access		 33
-#define SYS_nice		 34
-#define SYS_ftime		 35
-#define SYS_sync		 36
-#define SYS_kill		 37
-#define SYS_rename		 38
-#define SYS_mkdir		 39
-#define SYS_rmdir		 40
-#define SYS_dup		 41
-#define SYS_pipe		 42
-#define SYS_times		 43
-#define SYS_prof		 44
-#define SYS_brk		 45
-#define SYS_setgid		 46
-#define SYS_getgid		 47
-#define SYS_signal		 48
-#define SYS_geteuid		 49
-#define SYS_getegid		 50
-#define SYS_acct		 51
-#define SYS_umount2		 52
-#define SYS_lock		 53
-#define SYS_ioctl		 54
-#define SYS_fcntl		 55
-#define SYS_mpx		 56
-#define SYS_setpgid		 57
-#define SYS_ulimit		 58
-#define SYS_oldolduname	 59
-#define SYS_umask		 60
-#define SYS_chroot		 61
-#define SYS_ustat		 62
-#define SYS_dup2		 63
-#define SYS_getppid		 64
-#define SYS_getpgrp		 65
-#define SYS_setsid		 66
-#define SYS_sigaction		 67
-#define SYS_sgetmask		 68
-#define SYS_ssetmask		 69
-#define SYS_setreuid		 70
-#define SYS_setregid		 71
-#define SYS_sigsuspend		 72
-#define SYS_sigpending		 73
-#define SYS_sethostname	 74
-#define SYS_setrlimit		 75
-#define SYS_getrlimit		 76   /* Back compatible 2Gig limited rlimit */
-#define SYS_getrusage		 77
-#define SYS_gettimeofday	 78
-#define SYS_settimeofday	 79
-#define SYS_getgroups		 80
-#define SYS_setgroups		 81
-#define SYS_select		 82
-#define SYS_symlink		 83
-#define SYS_oldlstat		 84
-#define SYS_readlink		 85
-#define SYS_uselib		 86
-#define SYS_swapon		 87
-#define SYS_reboot		 88
-#define SYS_readdir		 89
-#define SYS_mmap		 90
-#define SYS_munmap		 91
-#define SYS_truncate		 92
-#define SYS_ftruncate		 93
-#define SYS_fchmod		 94
-#define SYS_fchown		 95
-#define SYS_getpriority	 96
-#define SYS_setpriority	 97
-#define SYS_profil		 98
-#define SYS_statfs		99
-#define SYS_fstatfs		100
-#define SYS_ioperm		101
-#define SYS_socketcall		102
-#define SYS_syslog		103
-#define SYS_setitimer		104
-#define SYS_getitimer		105
-#define SYS_stat		106
-#define SYS_lstat		107
-#define SYS_fstat		108
-#define SYS_olduname		109
-#define SYS_iopl		110
-#define SYS_vhangup		111
-#define SYS_idle		112
-#define SYS_vm86old		113
-#define SYS_wait4		114
-#define SYS_swapoff		115
-#define SYS_sysinfo		116
-#define SYS_ipc		117
-#define SYS_fsync		118
-#define SYS_sigreturn		119
-#define SYS_clone		120
-#define SYS_setdomainname	121
-#define SYS_uname		122
-#define SYS_modify_ldt		123
-#define SYS_adjtimex		124
-#define SYS_mprotect		125
-#define SYS_sigprocmask	126
-#define SYS_create_module	127
-#define SYS_init_module	128
-#define SYS_delete_module	129
-#define SYS_get_kernel_syms	130
-#define SYS_quotactl		131
-#define SYS_getpgid		132
-#define SYS_fchdir		133
-#define SYS_bdflush		134
-#define SYS_sysfs		135
-#define SYS_personality	136
-#define SYS_afs_syscall	137
-#define SYS_setfsuid		138
-#define SYS_setfsgid		139
-#define SYS__llseek		140
-#define SYS_getdents		141
-#define SYS__newselect		142
-#define SYS_flock		143
-#define SYS_msync		144
-#define SYS_readv		145
-#define SYS_writev		146
-#define SYS_getsid		147
-#define SYS_fdatasync		148
-#define SYS__sysctl		149
-#define SYS_mlock		150
-#define SYS_munlock		151
-#define SYS_mlockall		152
-#define SYS_munlockall		153
-#define SYS_sched_setparam		154
-#define SYS_sched_getparam		155
-#define SYS_sched_setscheduler		156
-#define SYS_sched_getscheduler		157
-#define SYS_sched_yield		158
-#define SYS_sched_get_priority_max	159
-#define SYS_sched_get_priority_min	160
-#define SYS_sched_rr_get_interval	161
-#define SYS_nanosleep		162
-#define SYS_mremap		163
-#define SYS_setresuid		164
-#define SYS_getresuid		165
-#define SYS_vm86		166
-#define SYS_query_module	167
-#define SYS_poll		168
-#define SYS_nfsservctl		169
-#define SYS_setresgid		170
-#define SYS_getresgid		171
-#define SYS_prctl              172
-#define SYS_rt_sigreturn	173
-#define SYS_rt_sigaction	174
-#define SYS_rt_sigprocmask	175
-#define SYS_rt_sigpending	176
-#define SYS_rt_sigtimedwait	177
-#define SYS_rt_sigqueueinfo	178
-#define SYS_rt_sigsuspend	179
-#define SYS_pread64		180
-#define SYS_pwrite64		181
-#define SYS_chown		182
-#define SYS_getcwd		183
-#define SYS_capget		184
-#define SYS_capset		185
-#define SYS_sigaltstack	186
-#define SYS_sendfile		187
-#define SYS_getpmsg		188
-#define SYS_putpmsg		189
-#define SYS_vfork		190
-#define SYS_ugetrlimit		191
-#define SYS_mmap2		192
-#define SYS_truncate64		193
-#define SYS_ftruncate64	194
-#define SYS_stat64		195
-#define SYS_lstat64		196
-#define SYS_fstat64		197
-#define SYS_lchown32		198
-#define SYS_getuid32		199
-#define SYS_getgid32		200
-#define SYS_geteuid32		201
-#define SYS_getegid32		202
-#define SYS_setreuid32		203
-#define SYS_setregid32		204
-#define SYS_getgroups32	205
-#define SYS_setgroups32	206
-#define SYS_fchown32		207
-#define SYS_setresuid32	208
-#define SYS_getresuid32	209
-#define SYS_setresgid32	210
-#define SYS_getresgid32	211
-#define SYS_chown32		212
-#define SYS_setuid32		213
-#define SYS_setgid32		214
-#define SYS_setfsuid32		215
-#define SYS_setfsgid32		216
-#define SYS_pivot_root		217
-#define SYS_mincore		218
-#define SYS_madvise		219
-#define SYS_madvise1		219
-#define SYS_getdents64		220
-#define SYS_fcntl64		221
+#define SYS_restart_syscall 0
+#define SYS_exit 1
+#define SYS_fork 2
+#define SYS_read 3
+#define SYS_write 4
+#define SYS_open 5
+#define SYS_close 6
+#define SYS_waitpid 7
+#define SYS_creat 8
+#define SYS_link 9
+#define SYS_unlink 10
+#define SYS_execve 11
+#define SYS_chdir 12
+#define SYS_time 13
+#define SYS_mknod 14
+#define SYS_chmod 15
+#define SYS_lchown 16
+#define SYS_break 17
+#define SYS_oldstat 18
+#define SYS_lseek 19
+#define SYS_getpid 20
+#define SYS_mount 21
+#define SYS_umount 22
+#define SYS_setuid 23
+#define SYS_getuid 24
+#define SYS_stime 25
+#define SYS_ptrace 26
+#define SYS_alarm 27
+#define SYS_oldfstat 28
+#define SYS_pause 29
+#define SYS_utime 30
+#define SYS_stty 31
+#define SYS_gtty 32
+#define SYS_access 33
+#define SYS_nice 34
+#define SYS_ftime 35
+#define SYS_sync 36
+#define SYS_kill 37
+#define SYS_rename 38
+#define SYS_mkdir 39
+#define SYS_rmdir 40
+#define SYS_dup 41
+#define SYS_pipe 42
+#define SYS_times 43
+#define SYS_prof 44
+#define SYS_brk 45
+#define SYS_setgid 46
+#define SYS_getgid 47
+#define SYS_signal 48
+#define SYS_geteuid 49
+#define SYS_getegid 50
+#define SYS_acct 51
+#define SYS_umount2 52
+#define SYS_lock 53
+#define SYS_ioctl 54
+#define SYS_fcntl 55
+#define SYS_mpx 56
+#define SYS_setpgid 57
+#define SYS_ulimit 58
+#define SYS_oldolduname 59
+#define SYS_umask 60
+#define SYS_chroot 61
+#define SYS_ustat 62
+#define SYS_dup2 63
+#define SYS_getppid 64
+#define SYS_getpgrp 65
+#define SYS_setsid 66
+#define SYS_sigaction 67
+#define SYS_sgetmask 68
+#define SYS_ssetmask 69
+#define SYS_setreuid 70
+#define SYS_setregid 71
+#define SYS_sigsuspend 72
+#define SYS_sigpending 73
+#define SYS_sethostname 74
+#define SYS_setrlimit 75
+#define SYS_getrlimit 76 /* Back compatible 2Gig limited rlimit */
+#define SYS_getrusage 77
+#define SYS_gettimeofday 78
+#define SYS_settimeofday 79
+#define SYS_getgroups 80
+#define SYS_setgroups 81
+#define SYS_select 82
+#define SYS_symlink 83
+#define SYS_oldlstat 84
+#define SYS_readlink 85
+#define SYS_uselib 86
+#define SYS_swapon 87
+#define SYS_reboot 88
+#define SYS_readdir 89
+#define SYS_mmap 90
+#define SYS_munmap 91
+#define SYS_truncate 92
+#define SYS_ftruncate 93
+#define SYS_fchmod 94
+#define SYS_fchown 95
+#define SYS_getpriority 96
+#define SYS_setpriority 97
+#define SYS_profil 98
+#define SYS_statfs 99
+#define SYS_fstatfs 100
+#define SYS_ioperm 101
+#define SYS_socketcall 102
+#define SYS_syslog 103
+#define SYS_setitimer 104
+#define SYS_getitimer 105
+#define SYS_stat 106
+#define SYS_lstat 107
+#define SYS_fstat 108
+#define SYS_olduname 109
+#define SYS_iopl 110
+#define SYS_vhangup 111
+#define SYS_idle 112
+#define SYS_vm86old 113
+#define SYS_wait4 114
+#define SYS_swapoff 115
+#define SYS_sysinfo 116
+#define SYS_ipc 117
+#define SYS_fsync 118
+#define SYS_sigreturn 119
+#define SYS_clone 120
+#define SYS_setdomainname 121
+#define SYS_uname 122
+#define SYS_modify_ldt 123
+#define SYS_adjtimex 124
+#define SYS_mprotect 125
+#define SYS_sigprocmask 126
+#define SYS_create_module 127
+#define SYS_init_module 128
+#define SYS_delete_module 129
+#define SYS_get_kernel_syms 130
+#define SYS_quotactl 131
+#define SYS_getpgid 132
+#define SYS_fchdir 133
+#define SYS_bdflush 134
+#define SYS_sysfs 135
+#define SYS_personality 136
+#define SYS_afs_syscall 137
+#define SYS_setfsuid 138
+#define SYS_setfsgid 139
+#define SYS__llseek 140
+#define SYS_getdents 141
+#define SYS__newselect 142
+#define SYS_flock 143
+#define SYS_msync 144
+#define SYS_readv 145
+#define SYS_writev 146
+#define SYS_getsid 147
+#define SYS_fdatasync 148
+#define SYS__sysctl 149
+#define SYS_mlock 150
+#define SYS_munlock 151
+#define SYS_mlockall 152
+#define SYS_munlockall 153
+#define SYS_sched_setparam 154
+#define SYS_sched_getparam 155
+#define SYS_sched_setscheduler 156
+#define SYS_sched_getscheduler 157
+#define SYS_sched_yield 158
+#define SYS_sched_get_priority_max 159
+#define SYS_sched_get_priority_min 160
+#define SYS_sched_rr_get_interval 161
+#define SYS_nanosleep 162
+#define SYS_mremap 163
+#define SYS_setresuid 164
+#define SYS_getresuid 165
+#define SYS_vm86 166
+#define SYS_query_module 167
+#define SYS_poll 168
+#define SYS_nfsservctl 169
+#define SYS_setresgid 170
+#define SYS_getresgid 171
+#define SYS_prctl 172
+#define SYS_rt_sigreturn 173
+#define SYS_rt_sigaction 174
+#define SYS_rt_sigprocmask 175
+#define SYS_rt_sigpending 176
+#define SYS_rt_sigtimedwait 177
+#define SYS_rt_sigqueueinfo 178
+#define SYS_rt_sigsuspend 179
+#define SYS_pread64 180
+#define SYS_pwrite64 181
+#define SYS_chown 182
+#define SYS_getcwd 183
+#define SYS_capget 184
+#define SYS_capset 185
+#define SYS_sigaltstack 186
+#define SYS_sendfile 187
+#define SYS_getpmsg 188
+#define SYS_putpmsg 189
+#define SYS_vfork 190
+#define SYS_ugetrlimit 191
+#define SYS_mmap2 192
+#define SYS_truncate64 193
+#define SYS_ftruncate64 194
+#define SYS_stat64 195
+#define SYS_lstat64 196
+#define SYS_fstat64 197
+#define SYS_lchown32 198
+#define SYS_getuid32 199
+#define SYS_getgid32 200
+#define SYS_geteuid32 201
+#define SYS_getegid32 202
+#define SYS_setreuid32 203
+#define SYS_setregid32 204
+#define SYS_getgroups32 205
+#define SYS_setgroups32 206
+#define SYS_fchown32 207
+#define SYS_setresuid32 208
+#define SYS_getresuid32 209
+#define SYS_setresgid32 210
+#define SYS_getresgid32 211
+#define SYS_chown32 212
+#define SYS_setuid32 213
+#define SYS_setgid32 214
+#define SYS_setfsuid32 215
+#define SYS_setfsgid32 216
+#define SYS_pivot_root 217
+#define SYS_mincore 218
+#define SYS_madvise 219
+#define SYS_madvise1 219
+#define SYS_getdents64 220
+#define SYS_fcntl64 221
 /* 223 is unused */
-#define SYS_gettid		224
-#define SYS_readahead		225
-#define SYS_setxattr		226
-#define SYS_lsetxattr		227
-#define SYS_fsetxattr		228
-#define SYS_getxattr		229
-#define SYS_lgetxattr		230
-#define SYS_fgetxattr		231
-#define SYS_listxattr		232
-#define SYS_llistxattr		233
-#define SYS_flistxattr		234
-#define SYS_removexattr	235
-#define SYS_lremovexattr	236
-#define SYS_fremovexattr	237
-#define SYS_tkill		238
-#define SYS_sendfile64		239
-#define SYS_futex		240
-#define SYS_sched_setaffinity	241
-#define SYS_sched_getaffinity	242
-#define SYS_set_thread_area	243
-#define SYS_get_thread_area	244
-#define SYS_io_setup		245
-#define SYS_io_destroy		246
-#define SYS_io_getevents	247
-#define SYS_io_submit		248
-#define SYS_io_cancel		249
-#define SYS_fadvise64		250
+#define SYS_gettid 224
+#define SYS_readahead 225
+#define SYS_setxattr 226
+#define SYS_lsetxattr 227
+#define SYS_fsetxattr 228
+#define SYS_getxattr 229
+#define SYS_lgetxattr 230
+#define SYS_fgetxattr 231
+#define SYS_listxattr 232
+#define SYS_llistxattr 233
+#define SYS_flistxattr 234
+#define SYS_removexattr 235
+#define SYS_lremovexattr 236
+#define SYS_fremovexattr 237
+#define SYS_tkill 238
+#define SYS_sendfile64 239
+#define SYS_futex 240
+#define SYS_sched_setaffinity 241
+#define SYS_sched_getaffinity 242
+#define SYS_set_thread_area 243
+#define SYS_get_thread_area 244
+#define SYS_io_setup 245
+#define SYS_io_destroy 246
+#define SYS_io_getevents 247
+#define SYS_io_submit 248
+#define SYS_io_cancel 249
+#define SYS_fadvise64 250
 /* 251 is available for reuse (was briefly sys_set_zone_reclaim) */
-#define SYS_exit_group		252
-#define SYS_lookup_dcookie	253
-#define SYS_epoll_create	254
-#define SYS_epoll_ctl		255
-#define SYS_epoll_wait		256
-#define SYS_remap_file_pages	257
-#define SYS_set_tid_address	258
-#define SYS_timer_create	259
-#define SYS_timer_settime	(SYS_timer_create+1)
-#define SYS_timer_gettime	(SYS_timer_create+2)
-#define SYS_timer_getoverrun	(SYS_timer_create+3)
-#define SYS_timer_delete	(SYS_timer_create+4)
-#define SYS_clock_settime	(SYS_timer_create+5)
-#define SYS_clock_gettime	(SYS_timer_create+6)
-#define SYS_clock_getres	(SYS_timer_create+7)
-#define SYS_clock_nanosleep	(SYS_timer_create+8)
-#define SYS_statfs64		268
-#define SYS_fstatfs64		269
-#define SYS_tgkill		270
-#define SYS_utimes		271
-#define SYS_fadvise64_64	272
-#define SYS_vserver		273
-#define SYS_mbind		274
-#define SYS_get_mempolicy	275
-#define SYS_set_mempolicy	276
-#define SYS_mq_open 		277
-#define SYS_mq_unlink		(SYS_mq_open+1)
-#define SYS_mq_timedsend	(SYS_mq_open+2)
-#define SYS_mq_timedreceive	(SYS_mq_open+3)
-#define SYS_mq_notify		(SYS_mq_open+4)
-#define SYS_mq_getsetattr	(SYS_mq_open+5)
-#define SYS_kexec_load		283
-#define SYS_waitid		284
+#define SYS_exit_group 252
+#define SYS_lookup_dcookie 253
+#define SYS_epoll_create 254
+#define SYS_epoll_ctl 255
+#define SYS_epoll_wait 256
+#define SYS_remap_file_pages 257
+#define SYS_set_tid_address 258
+#define SYS_timer_create 259
+#define SYS_timer_settime (SYS_timer_create + 1)
+#define SYS_timer_gettime (SYS_timer_create + 2)
+#define SYS_timer_getoverrun (SYS_timer_create + 3)
+#define SYS_timer_delete (SYS_timer_create + 4)
+#define SYS_clock_settime (SYS_timer_create + 5)
+#define SYS_clock_gettime (SYS_timer_create + 6)
+#define SYS_clock_getres (SYS_timer_create + 7)
+#define SYS_clock_nanosleep (SYS_timer_create + 8)
+#define SYS_statfs64 268
+#define SYS_fstatfs64 269
+#define SYS_tgkill 270
+#define SYS_utimes 271
+#define SYS_fadvise64_64 272
+#define SYS_vserver 273
+#define SYS_mbind 274
+#define SYS_get_mempolicy 275
+#define SYS_set_mempolicy 276
+#define SYS_mq_open 277
+#define SYS_mq_unlink (SYS_mq_open + 1)
+#define SYS_mq_timedsend (SYS_mq_open + 2)
+#define SYS_mq_timedreceive (SYS_mq_open + 3)
+#define SYS_mq_notify (SYS_mq_open + 4)
+#define SYS_mq_getsetattr (SYS_mq_open + 5)
+#define SYS_kexec_load 283
+#define SYS_waitid 284
 /* #define SYS_sys_setaltroot	285 */
-#define SYS_add_key		286
-#define SYS_request_key	287
-#define SYS_keyctl		288
-#define SYS_ioprio_set		289
-#define SYS_ioprio_get		290
-#define SYS_inotify_init	291
-#define SYS_inotify_add_watch	292
-#define SYS_inotify_rm_watch	293
-#define SYS_migrate_pages	294
-#define SYS_openat		295
-#define SYS_mkdirat		296
-#define SYS_mknodat		297
-#define SYS_fchownat		298
-#define SYS_futimesat		299
-#define SYS_fstatat64		300
-#define SYS_unlinkat		301
-#define SYS_renameat		302
-#define SYS_linkat		303
-#define SYS_symlinkat		304
-#define SYS_readlinkat		305
-#define SYS_fchmodat		306
-#define SYS_faccessat		307
-#define SYS_pselect6		308
-#define SYS_ppoll		309
-#define SYS_unshare		310
-#define SYS_set_robust_list	311
-#define SYS_get_robust_list	312
-#define SYS_splice		313
-#define SYS_sync_file_range	314
-#define SYS_tee		315
-#define SYS_vmsplice		316
-#define SYS_move_pages		317
-#define SYS_getcpu		318
-#define SYS_epoll_pwait	319
-#define SYS_utimensat		320
-#define SYS_signalfd		321
-#define SYS_timerfd_create	322
-#define SYS_eventfd		323
-#define SYS_fallocate		324
-#define SYS_timerfd_settime	325
-#define SYS_timerfd_gettime	326
-#define SYS_signalfd4		327
-#define SYS_eventfd2		328
-#define SYS_epoll_create1	329
-#define SYS_dup3		330
-#define SYS_pipe2		331
-#define SYS_inotify_init1	332
-#define SYS_preadv		333
-#define SYS_pwritev		334
-#define SYS_rt_tgsigqueueinfo	335
-#define SYS_perf_event_open	336
-#define SYS_recvmmsg		337
-#define SYS_fanotify_init	338
-#define SYS_fanotify_mark	339
-#define SYS_prlimit64		340
-#define SYS_name_to_handle_at	341
-#define SYS_open_by_handle_at	342
-#define SYS_clock_adjtime	343
-#define SYS_syncfs		344
-#define SYS_sendmmsg		345
-#define SYS_setns		346
-#define SYS_process_vm_readv	347
-#define SYS_process_vm_writev	348
-#define SYS_kcmp		349
-#define SYS_finit_module	350
-#define SYS_sched_setattr	351
-#define SYS_sched_getattr	352
-#define SYS_renameat2		353
-#define SYS_seccomp		354
-#define SYS_getrandom		355
-#define SYS_memfd_create	356
-#define SYS_bpf			357
-#define SYS_execveat		358
-#define SYS_socket		359
-#define SYS_socketpair		360
-#define SYS_bind		361
-#define SYS_connect		362
-#define SYS_listen		363
-#define SYS_accept4		364
-#define SYS_getsockopt		365
-#define SYS_setsockopt		366
-#define SYS_getsockname		367
-#define SYS_getpeername		368
-#define SYS_sendto		369
-#define SYS_sendmsg		370
-#define SYS_recvfrom		371
-#define SYS_recvmsg		372
-#define SYS_shutdown		373
-#define SYS_userfaultfd		374
-#define SYS_membarrier		375
-#define SYS_mlock2		376
+#define SYS_add_key 286
+#define SYS_request_key 287
+#define SYS_keyctl 288
+#define SYS_ioprio_set 289
+#define SYS_ioprio_get 290
+#define SYS_inotify_init 291
+#define SYS_inotify_add_watch 292
+#define SYS_inotify_rm_watch 293
+#define SYS_migrate_pages 294
+#define SYS_openat 295
+#define SYS_mkdirat 296
+#define SYS_mknodat 297
+#define SYS_fchownat 298
+#define SYS_futimesat 299
+#define SYS_fstatat64 300
+#define SYS_unlinkat 301
+#define SYS_renameat 302
+#define SYS_linkat 303
+#define SYS_symlinkat 304
+#define SYS_readlinkat 305
+#define SYS_fchmodat 306
+#define SYS_faccessat 307
+#define SYS_pselect6 308
+#define SYS_ppoll 309
+#define SYS_unshare 310
+#define SYS_set_robust_list 311
+#define SYS_get_robust_list 312
+#define SYS_splice 313
+#define SYS_sync_file_range 314
+#define SYS_tee 315
+#define SYS_vmsplice 316
+#define SYS_move_pages 317
+#define SYS_getcpu 318
+#define SYS_epoll_pwait 319
+#define SYS_utimensat 320
+#define SYS_signalfd 321
+#define SYS_timerfd_create 322
+#define SYS_eventfd 323
+#define SYS_fallocate 324
+#define SYS_timerfd_settime 325
+#define SYS_timerfd_gettime 326
+#define SYS_signalfd4 327
+#define SYS_eventfd2 328
+#define SYS_epoll_create1 329
+#define SYS_dup3 330
+#define SYS_pipe2 331
+#define SYS_inotify_init1 332
+#define SYS_preadv 333
+#define SYS_pwritev 334
+#define SYS_rt_tgsigqueueinfo 335
+#define SYS_perf_event_open 336
+#define SYS_recvmmsg 337
+#define SYS_fanotify_init 338
+#define SYS_fanotify_mark 339
+#define SYS_prlimit64 340
+#define SYS_name_to_handle_at 341
+#define SYS_open_by_handle_at 342
+#define SYS_clock_adjtime 343
+#define SYS_syncfs 344
+#define SYS_sendmmsg 345
+#define SYS_setns 346
+#define SYS_process_vm_readv 347
+#define SYS_process_vm_writev 348
+#define SYS_kcmp 349
+#define SYS_finit_module 350
+#define SYS_sched_setattr 351
+#define SYS_sched_getattr 352
+#define SYS_renameat2 353
+#define SYS_seccomp 354
+#define SYS_getrandom 355
+#define SYS_memfd_create 356
+#define SYS_bpf 357
+#define SYS_execveat 358
+#define SYS_socket 359
+#define SYS_socketpair 360
+#define SYS_bind 361
+#define SYS_connect 362
+#define SYS_listen 363
+#define SYS_accept4 364
+#define SYS_getsockopt 365
+#define SYS_setsockopt 366
+#define SYS_getsockname 367
+#define SYS_getpeername 368
+#define SYS_sendto 369
+#define SYS_sendmsg 370
+#define SYS_recvfrom 371
+#define SYS_recvmsg 372
+#define SYS_shutdown 373
+#define SYS_userfaultfd 374
+#define SYS_membarrier 375
+#define SYS_mlock2 376
diff --git a/fusl/arch/i386/bits/user.h b/fusl/arch/i386/bits/user.h
index fa62362..58dbca8 100644
--- a/fusl/arch/i386/bits/user.h
+++ b/fusl/arch/i386/bits/user.h
@@ -1,48 +1,44 @@
 #undef __WORDSIZE
 #define __WORDSIZE 32
 
-typedef struct user_fpregs_struct
-{
-	long cwd, swd, twd, fip, fcs, foo, fos, st_space[20];
+typedef struct user_fpregs_struct {
+  long cwd, swd, twd, fip, fcs, foo, fos, st_space[20];
 } elf_fpregset_t;
 
-typedef struct user_fpxregs_struct
-{
-	unsigned short cwd, swd, twd, fop;
-	long fip, fcs, foo, fos, mxcsr, reserved;
-	long st_space[32], xmm_space[32], padding[56];
+typedef struct user_fpxregs_struct {
+  unsigned short cwd, swd, twd, fop;
+  long fip, fcs, foo, fos, mxcsr, reserved;
+  long st_space[32], xmm_space[32], padding[56];
 } elf_fpxregset_t;
 
-struct user_regs_struct
-{
-	long ebx, ecx, edx, esi, edi, ebp, eax, xds, xes, xfs, xgs;
-	long orig_eax, eip, xcs, eflags, esp, xss;
+struct user_regs_struct {
+  long ebx, ecx, edx, esi, edi, ebp, eax, xds, xes, xfs, xgs;
+  long orig_eax, eip, xcs, eflags, esp, xss;
 };
 
 #define ELF_NGREG 17
 typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG];
 
-struct user
-{
-	struct user_regs_struct		regs;
-	int				u_fpvalid;
-	struct user_fpregs_struct	i387;
-	unsigned long			u_tsize;
-	unsigned long			u_dsize;
-	unsigned long			u_ssize;
-	unsigned long			start_code;
-	unsigned long			start_stack;
-	long				signal;
-	int				reserved;
-	struct user_regs_struct		*u_ar0;
-	struct user_fpregs_struct	*u_fpstate;
-	unsigned long			magic;
-	char				u_comm[32];
-	int				u_debugreg[8];
+struct user {
+  struct user_regs_struct regs;
+  int u_fpvalid;
+  struct user_fpregs_struct i387;
+  unsigned long u_tsize;
+  unsigned long u_dsize;
+  unsigned long u_ssize;
+  unsigned long start_code;
+  unsigned long start_stack;
+  long signal;
+  int reserved;
+  struct user_regs_struct* u_ar0;
+  struct user_fpregs_struct* u_fpstate;
+  unsigned long magic;
+  char u_comm[32];
+  int u_debugreg[8];
 };
 
-#define PAGE_MASK		(~(PAGE_SIZE-1))
-#define NBPG			PAGE_SIZE
-#define UPAGES			1
-#define HOST_TEXT_START_ADDR	(u.start_code)
-#define HOST_STACK_END_ADDR	(u.start_stack + u.u_ssize * NBPG)
+#define PAGE_MASK (~(PAGE_SIZE - 1))
+#define NBPG PAGE_SIZE
+#define UPAGES 1
+#define HOST_TEXT_START_ADDR (u.start_code)
+#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
diff --git a/fusl/arch/i386/crt_arch.h b/fusl/arch/i386/crt_arch.h
index 43c8477..ea5a380 100644
--- a/fusl/arch/i386/crt_arch.h
+++ b/fusl/arch/i386/crt_arch.h
@@ -1,16 +1,15 @@
 __asm__(
-".text\n"
-".weak _DYNAMIC \n"
-".hidden _DYNAMIC \n"
-".global " START "\n"
-START ":\n"
-"	xor %ebp,%ebp \n"
-"	mov %esp,%eax \n"
-"	and $-16,%esp \n"
-"	push %eax \n"
-"	push %eax \n"
-"	call 1f \n"
-"1:	addl $_DYNAMIC-1b,(%esp) \n"
-"	push %eax \n"
-"	call " START "_c \n"
-);
+    ".text\n"
+    ".weak _DYNAMIC \n"
+    ".hidden _DYNAMIC \n"
+    ".global " START "\n" START
+    ":\n"
+    "	xor %ebp,%ebp \n"
+    "	mov %esp,%eax \n"
+    "	and $-16,%esp \n"
+    "	push %eax \n"
+    "	push %eax \n"
+    "	call 1f \n"
+    "1:	addl $_DYNAMIC-1b,(%esp) \n"
+    "	push %eax \n"
+    "	call " START "_c \n");
diff --git a/fusl/arch/i386/pthread_arch.h b/fusl/arch/i386/pthread_arch.h
index 7f38a56..9c10e10 100644
--- a/fusl/arch/i386/pthread_arch.h
+++ b/fusl/arch/i386/pthread_arch.h
@@ -1,8 +1,7 @@
-static inline struct pthread *__pthread_self()
-{
-	struct pthread *self;
-	__asm__ __volatile__ ("movl %%gs:0,%0" : "=r" (self) );
-	return self;
+static inline struct pthread* __pthread_self() {
+  struct pthread* self;
+  __asm__ __volatile__("movl %%gs:0,%0" : "=r"(self));
+  return self;
 }
 
 #define TP_ADJ(p) (p)
diff --git a/fusl/arch/i386/reloc.h b/fusl/arch/i386/reloc.h
index 032f454..c391636 100644
--- a/fusl/arch/i386/reloc.h
+++ b/fusl/arch/i386/reloc.h
@@ -1,23 +1,28 @@
 #define LDSO_ARCH "i386"
 
-#define REL_SYMBOLIC    R_386_32
-#define REL_OFFSET      R_386_PC32
-#define REL_GOT         R_386_GLOB_DAT
-#define REL_PLT         R_386_JMP_SLOT
-#define REL_RELATIVE    R_386_RELATIVE
-#define REL_COPY        R_386_COPY
-#define REL_DTPMOD      R_386_TLS_DTPMOD32
-#define REL_DTPOFF      R_386_TLS_DTPOFF32
-#define REL_TPOFF       R_386_TLS_TPOFF
-#define REL_TPOFF_NEG   R_386_TLS_TPOFF32
-#define REL_TLSDESC     R_386_TLS_DESC
+#define REL_SYMBOLIC R_386_32
+#define REL_OFFSET R_386_PC32
+#define REL_GOT R_386_GLOB_DAT
+#define REL_PLT R_386_JMP_SLOT
+#define REL_RELATIVE R_386_RELATIVE
+#define REL_COPY R_386_COPY
+#define REL_DTPMOD R_386_TLS_DTPMOD32
+#define REL_DTPOFF R_386_TLS_DTPOFF32
+#define REL_TPOFF R_386_TLS_TPOFF
+#define REL_TPOFF_NEG R_386_TLS_TPOFF32
+#define REL_TLSDESC R_386_TLS_DESC
 
-#define CRTJMP(pc,sp) __asm__ __volatile__( \
-	"mov %1,%%esp ; jmp *%0" : : "r"(pc), "r"(sp) : "memory" )
+#define CRTJMP(pc, sp)                                                         \
+  __asm__ __volatile__("mov %1,%%esp ; jmp *%0" : : "r"(pc), "r"(sp) : "memor" \
+                                                                       "y")
 
-#define GETFUNCSYM(fp, sym, got) __asm__ ( \
-	".hidden " #sym "\n" \
-	"	call 1f\n" \
-	"1:	addl $" #sym "-.,(%%esp)\n" \
-	"	pop %0" \
-	: "=r"(*fp) : : "memory" )
+#define GETFUNCSYM(fp, sym, got) \
+  __asm__(".hidden " #sym        \
+          "\n"                   \
+          "	call 1f\n"           \
+          "1:	addl $" #sym     \
+          "-.,(%%esp)\n"         \
+          "	pop %0"              \
+          : "=r"(*fp)            \
+          :                      \
+          : "memory")
diff --git a/fusl/arch/i386/syscall_arch.h b/fusl/arch/i386/syscall_arch.h
index 4c9d874..1d5c3a2 100644
--- a/fusl/arch/i386/syscall_arch.h
+++ b/fusl/arch/i386/syscall_arch.h
@@ -1,55 +1,85 @@
 #define __SYSCALL_LL_E(x) \
-((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
-((union { long long ll; long l[2]; }){ .ll = x }).l[1]
+  ((union {               \
+    long long ll;         \
+    long l[2];            \
+  }){.ll = x})            \
+      .l[0],              \
+      ((union {           \
+        long long ll;     \
+        long l[2];        \
+      }){.ll = x})        \
+          .l[1]
 #define __SYSCALL_LL_O(x) __SYSCALL_LL_E((x))
 
-static inline long __syscall0(long n)
-{
-	unsigned long __ret;
-	__asm__ __volatile__ (".hidden __vsyscall ; call __vsyscall" : "=a"(__ret) : "a"(n) : "memory");
-	return __ret;
+static inline long __syscall0(long n) {
+  unsigned long __ret;
+  __asm__ __volatile__(".hidden __vsyscall ; call __vsyscall"
+                       : "=a"(__ret)
+                       : "a"(n)
+                       : "memory");
+  return __ret;
 }
 
-static inline long __syscall1(long n, long a1)
-{
-	unsigned long __ret;
-	__asm__ __volatile__ (".hidden __vsyscall ; call __vsyscall" : "=a"(__ret) : "a"(n), "d"(a1) : "memory");
-	return __ret;
+static inline long __syscall1(long n, long a1) {
+  unsigned long __ret;
+  __asm__ __volatile__(".hidden __vsyscall ; call __vsyscall"
+                       : "=a"(__ret)
+                       : "a"(n), "d"(a1)
+                       : "memory");
+  return __ret;
 }
 
-static inline long __syscall2(long n, long a1, long a2)
-{
-	unsigned long __ret;
-	__asm__ __volatile__ (".hidden __vsyscall ; call __vsyscall" : "=a"(__ret) : "a"(n), "d"(a1), "c"(a2) : "memory");
-	return __ret;
+static inline long __syscall2(long n, long a1, long a2) {
+  unsigned long __ret;
+  __asm__ __volatile__(".hidden __vsyscall ; call __vsyscall"
+                       : "=a"(__ret)
+                       : "a"(n), "d"(a1), "c"(a2)
+                       : "memory");
+  return __ret;
 }
 
-static inline long __syscall3(long n, long a1, long a2, long a3)
-{
-	unsigned long __ret;
-	__asm__ __volatile__ (".hidden __vsyscall ; call __vsyscall" : "=a"(__ret) : "a"(n), "d"(a1), "c"(a2), "D"(a3) : "memory");
-	return __ret;
+static inline long __syscall3(long n, long a1, long a2, long a3) {
+  unsigned long __ret;
+  __asm__ __volatile__(".hidden __vsyscall ; call __vsyscall"
+                       : "=a"(__ret)
+                       : "a"(n), "d"(a1), "c"(a2), "D"(a3)
+                       : "memory");
+  return __ret;
 }
 
-static inline long __syscall4(long n, long a1, long a2, long a3, long a4)
-{
-	unsigned long __ret;
-	__asm__ __volatile__ (".hidden __vsyscall ; call __vsyscall" : "=a"(__ret) : "a"(n), "d"(a1), "c"(a2), "D"(a3), "S"(a4) : "memory");
-	return __ret;
+static inline long __syscall4(long n, long a1, long a2, long a3, long a4) {
+  unsigned long __ret;
+  __asm__ __volatile__(".hidden __vsyscall ; call __vsyscall"
+                       : "=a"(__ret)
+                       : "a"(n), "d"(a1), "c"(a2), "D"(a3), "S"(a4)
+                       : "memory");
+  return __ret;
 }
 
-static inline long __syscall5(long n, long a1, long a2, long a3, long a4, long a5)
-{
-	unsigned long __ret;
-	__asm__ __volatile__ ("push %6 ; .hidden __vsyscall ; call __vsyscall ; add $4,%%esp" : "=a"(__ret) : "a"(n), "d"(a1), "c"(a2), "D"(a3), "S"(a4), "g"(a5) : "memory");
-	return __ret;
+static inline long __syscall5(long n,
+                              long a1,
+                              long a2,
+                              long a3,
+                              long a4,
+                              long a5) {
+  unsigned long __ret;
+  __asm__ __volatile__(
+      "push %6 ; .hidden __vsyscall ; call __vsyscall ; add $4,%%esp"
+      : "=a"(__ret)
+      : "a"(n), "d"(a1), "c"(a2), "D"(a3), "S"(a4), "g"(a5)
+      : "memory");
+  return __ret;
 }
 
-static inline long __syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6)
-{
-	unsigned long __ret;
-	__asm__ __volatile__ ("push %6 ; .hidden __vsyscall6 ; call __vsyscall6 ; add $4,%%esp" : "=a"(__ret) : "a"(n), "d"(a1), "c"(a2), "D"(a3), "S"(a4), "g"(0+(long[]){a5, a6}) : "memory");
-	return __ret;
+static inline long
+__syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6) {
+  unsigned long __ret;
+  __asm__ __volatile__(
+      "push %6 ; .hidden __vsyscall6 ; call __vsyscall6 ; add $4,%%esp"
+      : "=a"(__ret)
+      : "a"(n), "d"(a1), "c"(a2), "D"(a3), "S"(a4), "g"(0 + (long[]){a5, a6})
+      : "memory");
+  return __ret;
 }
 
 #define VDSO_USEFUL
diff --git a/fusl/arch/mips/atomic_arch.h b/fusl/arch/mips/atomic_arch.h
index ce2823b..255acff 100644
--- a/fusl/arch/mips/atomic_arch.h
+++ b/fusl/arch/mips/atomic_arch.h
@@ -1,33 +1,33 @@
 #define a_ll a_ll
-static inline int a_ll(volatile int *p)
-{
-	int v;
-	__asm__ __volatile__ (
-		".set push ; .set mips2\n\t"
-		"ll %0, %1"
-		"\n\t.set pop"
-		: "=r"(v) : "m"(*p));
-	return v;
+static inline int a_ll(volatile int* p) {
+  int v;
+  __asm__ __volatile__(
+      ".set push ; .set mips2\n\t"
+      "ll %0, %1"
+      "\n\t.set pop"
+      : "=r"(v)
+      : "m"(*p));
+  return v;
 }
 
 #define a_sc a_sc
-static inline int a_sc(volatile int *p, int v)
-{
-	int r;
-	__asm__ __volatile__ (
-		".set push ; .set mips2\n\t"
-		"sc %0, %1"
-		"\n\t.set pop"
-		: "=r"(r), "=m"(*p) : "0"(v) : "memory");
-	return r;
+static inline int a_sc(volatile int* p, int v) {
+  int r;
+  __asm__ __volatile__(
+      ".set push ; .set mips2\n\t"
+      "sc %0, %1"
+      "\n\t.set pop"
+      : "=r"(r), "=m"(*p)
+      : "0"(v)
+      : "memory");
+  return r;
 }
 
 #define a_barrier a_barrier
-static inline void a_barrier()
-{
-	/* mips2 sync, but using too many directives causes
-	 * gcc not to inline it, so encode with .long instead. */
-	__asm__ __volatile__ (".long 0xf" : : : "memory");
+static inline void a_barrier() {
+  /* mips2 sync, but using too many directives causes
+   * gcc not to inline it, so encode with .long instead. */
+  __asm__ __volatile__(".long 0xf" : : : "memory");
 #if 0
 	__asm__ __volatile__ (
 		".set push ; .set mips2 ; sync ; .set pop"
diff --git a/fusl/arch/mips/bits/errno.h b/fusl/arch/mips/bits/errno.h
index 1bb91e3..40df57b 100644
--- a/fusl/arch/mips/bits/errno.h
+++ b/fusl/arch/mips/bits/errno.h
@@ -1,134 +1,134 @@
-#define EPERM            1
-#define ENOENT           2
-#define ESRCH            3
-#define EINTR            4
-#define EIO              5
-#define ENXIO            6
-#define E2BIG            7
-#define ENOEXEC          8
-#define EBADF            9
-#define ECHILD          10
-#define EAGAIN          11
-#define ENOMEM          12
-#define EACCES          13
-#define EFAULT          14
-#define ENOTBLK         15
-#define EBUSY           16
-#define EEXIST          17
-#define EXDEV           18
-#define ENODEV          19
-#define ENOTDIR         20
-#define EISDIR          21
-#define EINVAL          22
-#define ENFILE          23
-#define EMFILE          24
-#define ENOTTY          25
-#define ETXTBSY         26
-#define EFBIG           27
-#define ENOSPC          28
-#define ESPIPE          29
-#define EROFS           30
-#define EMLINK          31
-#define EPIPE           32
-#define EDOM            33
-#define ERANGE          34
-#define ENOMSG          35
-#define EIDRM           36
-#define ECHRNG          37
-#define EL2NSYNC        38
-#define EL3HLT          39
-#define EL3RST          40
-#define ELNRNG          41
-#define EUNATCH         42
-#define ENOCSI          43
-#define EL2HLT          44
-#define EDEADLK         45
-#define ENOLCK          46
-#define EBADE           50
-#define EBADR           51
-#define EXFULL          52
-#define ENOANO          53
-#define EBADRQC         54
-#define EBADSLT         55
-#define EDEADLOCK       56
-#define EBFONT          59
-#define ENOSTR          60
-#define ENODATA         61
-#define ETIME           62
-#define ENOSR           63
-#define ENONET          64
-#define ENOPKG          65
-#define EREMOTE         66
-#define ENOLINK         67
-#define EADV            68
-#define ESRMNT          69
-#define ECOMM           70
-#define EPROTO          71
-#define EDOTDOT         73
-#define EMULTIHOP       74
-#define EBADMSG         77
-#define ENAMETOOLONG    78
-#define EOVERFLOW       79
-#define ENOTUNIQ        80
-#define EBADFD          81
-#define EREMCHG         82
-#define ELIBACC         83
-#define ELIBBAD         84
-#define ELIBSCN         85
-#define ELIBMAX         86
-#define ELIBEXEC        87
-#define EILSEQ          88
-#define ENOSYS          89
-#define ELOOP           90
-#define ERESTART        91
-#define ESTRPIPE        92
-#define ENOTEMPTY       93
-#define EUSERS          94
-#define ENOTSOCK        95
-#define EDESTADDRREQ    96
-#define EMSGSIZE        97
-#define EPROTOTYPE      98
-#define ENOPROTOOPT     99
+#define EPERM 1
+#define ENOENT 2
+#define ESRCH 3
+#define EINTR 4
+#define EIO 5
+#define ENXIO 6
+#define E2BIG 7
+#define ENOEXEC 8
+#define EBADF 9
+#define ECHILD 10
+#define EAGAIN 11
+#define ENOMEM 12
+#define EACCES 13
+#define EFAULT 14
+#define ENOTBLK 15
+#define EBUSY 16
+#define EEXIST 17
+#define EXDEV 18
+#define ENODEV 19
+#define ENOTDIR 20
+#define EISDIR 21
+#define EINVAL 22
+#define ENFILE 23
+#define EMFILE 24
+#define ENOTTY 25
+#define ETXTBSY 26
+#define EFBIG 27
+#define ENOSPC 28
+#define ESPIPE 29
+#define EROFS 30
+#define EMLINK 31
+#define EPIPE 32
+#define EDOM 33
+#define ERANGE 34
+#define ENOMSG 35
+#define EIDRM 36
+#define ECHRNG 37
+#define EL2NSYNC 38
+#define EL3HLT 39
+#define EL3RST 40
+#define ELNRNG 41
+#define EUNATCH 42
+#define ENOCSI 43
+#define EL2HLT 44
+#define EDEADLK 45
+#define ENOLCK 46
+#define EBADE 50
+#define EBADR 51
+#define EXFULL 52
+#define ENOANO 53
+#define EBADRQC 54
+#define EBADSLT 55
+#define EDEADLOCK 56
+#define EBFONT 59
+#define ENOSTR 60
+#define ENODATA 61
+#define ETIME 62
+#define ENOSR 63
+#define ENONET 64
+#define ENOPKG 65
+#define EREMOTE 66
+#define ENOLINK 67
+#define EADV 68
+#define ESRMNT 69
+#define ECOMM 70
+#define EPROTO 71
+#define EDOTDOT 73
+#define EMULTIHOP 74
+#define EBADMSG 77
+#define ENAMETOOLONG 78
+#define EOVERFLOW 79
+#define ENOTUNIQ 80
+#define EBADFD 81
+#define EREMCHG 82
+#define ELIBACC 83
+#define ELIBBAD 84
+#define ELIBSCN 85
+#define ELIBMAX 86
+#define ELIBEXEC 87
+#define EILSEQ 88
+#define ENOSYS 89
+#define ELOOP 90
+#define ERESTART 91
+#define ESTRPIPE 92
+#define ENOTEMPTY 93
+#define EUSERS 94
+#define ENOTSOCK 95
+#define EDESTADDRREQ 96
+#define EMSGSIZE 97
+#define EPROTOTYPE 98
+#define ENOPROTOOPT 99
 #define EPROTONOSUPPORT 120
 #define ESOCKTNOSUPPORT 121
-#define EOPNOTSUPP      122
-#define ENOTSUP         EOPNOTSUPP
-#define EPFNOSUPPORT    123
-#define EAFNOSUPPORT    124
-#define EADDRINUSE      125
-#define EADDRNOTAVAIL   126
-#define ENETDOWN        127
-#define ENETUNREACH     128
-#define ENETRESET       129
-#define ECONNABORTED    130
-#define ECONNRESET      131
-#define ENOBUFS         132
-#define EISCONN         133
-#define ENOTCONN        134
-#define EUCLEAN         135
-#define ENOTNAM         137
-#define ENAVAIL         138
-#define EISNAM          139
-#define EREMOTEIO       140
-#define ESHUTDOWN       143
-#define ETOOMANYREFS    144
-#define ETIMEDOUT       145
-#define ECONNREFUSED    146
-#define EHOSTDOWN       147
-#define EHOSTUNREACH    148
-#define EWOULDBLOCK     EAGAIN
-#define EALREADY        149
-#define EINPROGRESS     150
-#define ESTALE          151
-#define ECANCELED       158
-#define ENOMEDIUM       159
-#define EMEDIUMTYPE     160
-#define ENOKEY          161
-#define EKEYEXPIRED     162
-#define EKEYREVOKED     163
-#define EKEYREJECTED    164
-#define EOWNERDEAD      165
+#define EOPNOTSUPP 122
+#define ENOTSUP EOPNOTSUPP
+#define EPFNOSUPPORT 123
+#define EAFNOSUPPORT 124
+#define EADDRINUSE 125
+#define EADDRNOTAVAIL 126
+#define ENETDOWN 127
+#define ENETUNREACH 128
+#define ENETRESET 129
+#define ECONNABORTED 130
+#define ECONNRESET 131
+#define ENOBUFS 132
+#define EISCONN 133
+#define ENOTCONN 134
+#define EUCLEAN 135
+#define ENOTNAM 137
+#define ENAVAIL 138
+#define EISNAM 139
+#define EREMOTEIO 140
+#define ESHUTDOWN 143
+#define ETOOMANYREFS 144
+#define ETIMEDOUT 145
+#define ECONNREFUSED 146
+#define EHOSTDOWN 147
+#define EHOSTUNREACH 148
+#define EWOULDBLOCK EAGAIN
+#define EALREADY 149
+#define EINPROGRESS 150
+#define ESTALE 151
+#define ECANCELED 158
+#define ENOMEDIUM 159
+#define EMEDIUMTYPE 160
+#define ENOKEY 161
+#define EKEYEXPIRED 162
+#define EKEYREVOKED 163
+#define EKEYREJECTED 164
+#define EOWNERDEAD 165
 #define ENOTRECOVERABLE 166
-#define ERFKILL         167
-#define EHWPOISON       168
-#define EDQUOT          1133
+#define ERFKILL 167
+#define EHWPOISON 168
+#define EDQUOT 1133
diff --git a/fusl/arch/mips/bits/fcntl.h b/fusl/arch/mips/bits/fcntl.h
index 9fd8c23..36d93c6 100644
--- a/fusl/arch/mips/bits/fcntl.h
+++ b/fusl/arch/mips/bits/fcntl.h
@@ -1,29 +1,29 @@
-#define O_CREAT        0400
-#define O_EXCL        02000
-#define O_NOCTTY      04000
-#define O_TRUNC       01000
-#define O_APPEND       0010
-#define O_NONBLOCK     0200
-#define O_DSYNC        0020
-#define O_SYNC       040020
-#define O_RSYNC      040020
+#define O_CREAT 0400
+#define O_EXCL 02000
+#define O_NOCTTY 04000
+#define O_TRUNC 01000
+#define O_APPEND 0010
+#define O_NONBLOCK 0200
+#define O_DSYNC 0020
+#define O_SYNC 040020
+#define O_RSYNC 040020
 #define O_DIRECTORY 0200000
-#define O_NOFOLLOW  0400000
-#define O_CLOEXEC  02000000
+#define O_NOFOLLOW 0400000
+#define O_CLOEXEC 02000000
 
-#define O_ASYNC      010000
-#define O_DIRECT    0100000
-#define O_LARGEFILE  020000
-#define O_NOATIME  01000000
-#define O_PATH    010000000
+#define O_ASYNC 010000
+#define O_DIRECT 0100000
+#define O_LARGEFILE 020000
+#define O_NOATIME 01000000
+#define O_PATH 010000000
 #define O_TMPFILE 020200000
 #define O_NDELAY O_NONBLOCK
 
-#define F_DUPFD  0
-#define F_GETFD  1
-#define F_SETFD  2
-#define F_GETFL  3
-#define F_SETFL  4
+#define F_DUPFD 0
+#define F_GETFD 1
+#define F_SETFD 2
+#define F_GETFL 3
+#define F_SETFL 4
 
 #define F_SETOWN 24
 #define F_GETOWN 23
diff --git a/fusl/arch/mips/bits/fenv.h b/fusl/arch/mips/bits/fenv.h
index 589e71c..6f3a93e 100644
--- a/fusl/arch/mips/bits/fenv.h
+++ b/fusl/arch/mips/bits/fenv.h
@@ -1,25 +1,23 @@
 #ifdef __mips_soft_float
 #define FE_ALL_EXCEPT 0
-#define FE_TONEAREST  0
+#define FE_TONEAREST 0
 #else
-#define FE_INEXACT    4
-#define FE_UNDERFLOW  8
-#define FE_OVERFLOW   16
-#define FE_DIVBYZERO  32
-#define FE_INVALID    64
+#define FE_INEXACT 4
+#define FE_UNDERFLOW 8
+#define FE_OVERFLOW 16
+#define FE_DIVBYZERO 32
+#define FE_INVALID 64
 
 #define FE_ALL_EXCEPT 124
 
-#define FE_TONEAREST  0
+#define FE_TONEAREST 0
 #define FE_TOWARDZERO 1
-#define FE_UPWARD     2
-#define FE_DOWNWARD   3
+#define FE_UPWARD 2
+#define FE_DOWNWARD 3
 #endif
 
 typedef unsigned short fexcept_t;
 
-typedef struct {
-	unsigned __cw;
-} fenv_t;
+typedef struct { unsigned __cw; } fenv_t;
 
-#define FE_DFL_ENV      ((const fenv_t *) -1)
+#define FE_DFL_ENV ((const fenv_t*)-1)
diff --git a/fusl/arch/mips/bits/ioctl.h b/fusl/arch/mips/bits/ioctl.h
index 83fb167..666fd0e 100644
--- a/fusl/arch/mips/bits/ioctl.h
+++ b/fusl/arch/mips/bits/ioctl.h
@@ -1,210 +1,210 @@
-#define _IOC(a,b,c,d) ( ((a)<<29) | ((b)<<8) | (c) | ((d)<<16) )
-#define _IOC_NONE  1U
-#define _IOC_READ  2U
+#define _IOC(a, b, c, d) (((a) << 29) | ((b) << 8) | (c) | ((d) << 16))
+#define _IOC_NONE 1U
+#define _IOC_READ 2U
 #define _IOC_WRITE 4U
 
-#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0)
-#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c))
-#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c))
-#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c))
+#define _IO(a, b) _IOC(_IOC_NONE, (a), (b), 0)
+#define _IOW(a, b, c) _IOC(_IOC_WRITE, (a), (b), sizeof(c))
+#define _IOR(a, b, c) _IOC(_IOC_READ, (a), (b), sizeof(c))
+#define _IOWR(a, b, c) _IOC(_IOC_READ | _IOC_WRITE, (a), (b), sizeof(c))
 
-#define TCGETA		0x5401
-#define TCSETA		0x5402
-#define TCSETAW		0x5403
-#define TCSETAF		0x5404
-#define TCSBRK		0x5405
-#define TCXONC		0x5406
-#define TCFLSH		0x5407
-#define TCGETS		0x540D
-#define TCSETS		0x540E
-#define TCSETSW		0x540F
-#define TCSETSF		0x5410
+#define TCGETA 0x5401
+#define TCSETA 0x5402
+#define TCSETAW 0x5403
+#define TCSETAF 0x5404
+#define TCSBRK 0x5405
+#define TCXONC 0x5406
+#define TCFLSH 0x5407
+#define TCGETS 0x540D
+#define TCSETS 0x540E
+#define TCSETSW 0x540F
+#define TCSETSF 0x5410
 
-#define TIOCEXCL	0x740D
-#define TIOCNXCL	0x740E
-#define TIOCOUTQ	0x7472
-#define TIOCSTI		0x5472
-#define TIOCMGET	0x741D
-#define TIOCMBIS	0x741B
-#define TIOCMBIC	0x741C
-#define TIOCMSET	0x741D
+#define TIOCEXCL 0x740D
+#define TIOCNXCL 0x740E
+#define TIOCOUTQ 0x7472
+#define TIOCSTI 0x5472
+#define TIOCMGET 0x741D
+#define TIOCMBIS 0x741B
+#define TIOCMBIC 0x741C
+#define TIOCMSET 0x741D
 
-#define TIOCPKT		0x5470
-#define TIOCSWINSZ	_IOW('t', 103, struct winsize)
-#define TIOCGWINSZ	_IOR('t', 104, struct winsize)
-#define TIOCNOTTY	0x5471
-#define TIOCSETD	0x7401
-#define TIOCGETD	0x7400
+#define TIOCPKT 0x5470
+#define TIOCSWINSZ _IOW('t', 103, struct winsize)
+#define TIOCGWINSZ _IOR('t', 104, struct winsize)
+#define TIOCNOTTY 0x5471
+#define TIOCSETD 0x7401
+#define TIOCGETD 0x7400
 
-#define FIOCLEX		0x6601
-#define FIONCLEX	0x6602
-#define FIOASYNC	0x667D
-#define FIONBIO		0x667E
-#define FIOQSIZE	0x667F
+#define FIOCLEX 0x6601
+#define FIONCLEX 0x6602
+#define FIOASYNC 0x667D
+#define FIONBIO 0x667E
+#define FIOQSIZE 0x667F
 
-#define TIOCGLTC        0x7474
-#define TIOCSLTC        0x7475
-#define TIOCSPGRP	_IOW('t', 118, int)
-#define TIOCGPGRP	_IOR('t', 119, int)
-#define TIOCCONS	_IOW('t', 120, int)
+#define TIOCGLTC 0x7474
+#define TIOCSLTC 0x7475
+#define TIOCSPGRP _IOW('t', 118, int)
+#define TIOCGPGRP _IOR('t', 119, int)
+#define TIOCCONS _IOW('t', 120, int)
 
-#define FIONREAD	0x467F
-#define TIOCINQ		FIONREAD
+#define FIONREAD 0x467F
+#define TIOCINQ FIONREAD
 
-#define TIOCGETP        0x7408
-#define TIOCSETP        0x7409
-#define TIOCSETN        0x740A
+#define TIOCGETP 0x7408
+#define TIOCSETP 0x7409
+#define TIOCSETN 0x740A
 
-#define TIOCSBRK	0x5427
-#define TIOCCBRK	0x5428
-#define TIOCGSID	0x7416
-#define TIOCGPTN	_IOR('T', 0x30, unsigned int)
-#define TIOCSPTLCK	_IOW('T', 0x31, int)
+#define TIOCSBRK 0x5427
+#define TIOCCBRK 0x5428
+#define TIOCGSID 0x7416
+#define TIOCGPTN _IOR('T', 0x30, unsigned int)
+#define TIOCSPTLCK _IOW('T', 0x31, int)
 
-#define TIOCSCTTY	0x5480
-#define TIOCGSOFTCAR	0x5481
-#define TIOCSSOFTCAR	0x5482
-#define TIOCLINUX	0x5483
-#define TIOCGSERIAL	0x5484
-#define TIOCSSERIAL	0x5485
-#define TCSBRKP		0x5486
+#define TIOCSCTTY 0x5480
+#define TIOCGSOFTCAR 0x5481
+#define TIOCSSOFTCAR 0x5482
+#define TIOCLINUX 0x5483
+#define TIOCGSERIAL 0x5484
+#define TIOCSSERIAL 0x5485
+#define TCSBRKP 0x5486
 
-#define TIOCSERCONFIG	0x5488
-#define TIOCSERGWILD	0x5489
-#define TIOCSERSWILD	0x548A
-#define TIOCGLCKTRMIOS	0x548B
-#define TIOCSLCKTRMIOS	0x548C
-#define TIOCSERGSTRUCT	0x548D
-#define TIOCSERGETLSR   0x548E
+#define TIOCSERCONFIG 0x5488
+#define TIOCSERGWILD 0x5489
+#define TIOCSERSWILD 0x548A
+#define TIOCGLCKTRMIOS 0x548B
+#define TIOCSLCKTRMIOS 0x548C
+#define TIOCSERGSTRUCT 0x548D
+#define TIOCSERGETLSR 0x548E
 #define TIOCSERGETMULTI 0x548F
 #define TIOCSERSETMULTI 0x5490
-#define TIOCMIWAIT	0x5491
-#define TIOCGICOUNT	0x5492
-#define TIOCGHAYESESP   0x5493
-#define TIOCSHAYESESP   0x5494
+#define TIOCMIWAIT 0x5491
+#define TIOCGICOUNT 0x5492
+#define TIOCGHAYESESP 0x5493
+#define TIOCSHAYESESP 0x5494
 
-#define TIOCTTYGSTRUCT	0x5426          // RICH: Not sure about these.
-#define TCGETX		0x5432          // RICH: Not sure about these.
-#define TCSETX		0x5433          // RICH: Not sure about these.
-#define TCSETXF		0x5434          // RICH: Not sure about these.
-#define TCSETXW		0x5435          // RICH: Not sure about these.
+#define TIOCTTYGSTRUCT 0x5426  // RICH: Not sure about these.
+#define TCGETX 0x5432          // RICH: Not sure about these.
+#define TCSETX 0x5433          // RICH: Not sure about these.
+#define TCSETXF 0x5434         // RICH: Not sure about these.
+#define TCSETXW 0x5435         // RICH: Not sure about these.
 
-#define TIOCPKT_DATA		 0
-#define TIOCPKT_FLUSHREAD	 1
-#define TIOCPKT_FLUSHWRITE	 2
-#define TIOCPKT_STOP		 4
-#define TIOCPKT_START		 8
-#define TIOCPKT_NOSTOP		16
-#define TIOCPKT_DOSTOP		32
-#define TIOCPKT_IOCTL		64
+#define TIOCPKT_DATA 0
+#define TIOCPKT_FLUSHREAD 1
+#define TIOCPKT_FLUSHWRITE 2
+#define TIOCPKT_STOP 4
+#define TIOCPKT_START 8
+#define TIOCPKT_NOSTOP 16
+#define TIOCPKT_DOSTOP 32
+#define TIOCPKT_IOCTL 64
 
-#define TIOCSER_TEMT    0x01
+#define TIOCSER_TEMT 0x01
 
 struct winsize {
-	unsigned short ws_row;
-	unsigned short ws_col;
-	unsigned short ws_xpixel;
-	unsigned short ws_ypixel;
+  unsigned short ws_row;
+  unsigned short ws_col;
+  unsigned short ws_xpixel;
+  unsigned short ws_ypixel;
 };
 
-#define TIOCM_LE        0x001
-#define TIOCM_DTR       0x002
-#define TIOCM_RTS       0x004
-#define TIOCM_ST        0x008
-#define TIOCM_SR        0x010
-#define TIOCM_CTS       0x020
-#define TIOCM_CAR       0x040
-#define TIOCM_RNG       0x080
-#define TIOCM_DSR       0x100
-#define TIOCM_CD        TIOCM_CAR
-#define TIOCM_RI        TIOCM_RNG
-#define TIOCM_OUT1      0x2000
-#define TIOCM_OUT2      0x4000
-#define TIOCM_LOOP      0x8000
+#define TIOCM_LE 0x001
+#define TIOCM_DTR 0x002
+#define TIOCM_RTS 0x004
+#define TIOCM_ST 0x008
+#define TIOCM_SR 0x010
+#define TIOCM_CTS 0x020
+#define TIOCM_CAR 0x040
+#define TIOCM_RNG 0x080
+#define TIOCM_DSR 0x100
+#define TIOCM_CD TIOCM_CAR
+#define TIOCM_RI TIOCM_RNG
+#define TIOCM_OUT1 0x2000
+#define TIOCM_OUT2 0x4000
+#define TIOCM_LOOP 0x8000
 #define TIOCM_MODEM_BITS TIOCM_OUT2
 
-#define N_TTY           0
-#define N_SLIP          1
-#define N_MOUSE         2
-#define N_PPP           3
-#define N_STRIP         4
-#define N_AX25          5
-#define N_X25           6
-#define N_6PACK         7
-#define N_MASC          8
-#define N_R3964         9
-#define N_PROFIBUS_FDL  10
-#define N_IRDA          11
-#define N_SMSBLOCK      12
-#define N_HDLC          13
-#define N_SYNC_PPP      14
-#define N_HCI           15
+#define N_TTY 0
+#define N_SLIP 1
+#define N_MOUSE 2
+#define N_PPP 3
+#define N_STRIP 4
+#define N_AX25 5
+#define N_X25 6
+#define N_6PACK 7
+#define N_MASC 8
+#define N_R3964 9
+#define N_PROFIBUS_FDL 10
+#define N_IRDA 11
+#define N_SMSBLOCK 12
+#define N_HDLC 13
+#define N_SYNC_PPP 14
+#define N_HCI 15
 
-#define FIOSETOWN       0x8901
-#define SIOCSPGRP       0x8902
-#define FIOGETOWN       0x8903
-#define SIOCGPGRP       0x8904
-#define SIOCATMARK      0x8905
-#define SIOCGSTAMP      0x8906
+#define FIOSETOWN 0x8901
+#define SIOCSPGRP 0x8902
+#define FIOGETOWN 0x8903
+#define SIOCGPGRP 0x8904
+#define SIOCATMARK 0x8905
+#define SIOCGSTAMP 0x8906
 
-#define SIOCADDRT       0x890B
-#define SIOCDELRT       0x890C
-#define SIOCRTMSG       0x890D
+#define SIOCADDRT 0x890B
+#define SIOCDELRT 0x890C
+#define SIOCRTMSG 0x890D
 
-#define SIOCGIFNAME     0x8910
-#define SIOCSIFLINK     0x8911
-#define SIOCGIFCONF     0x8912
-#define SIOCGIFFLAGS    0x8913
-#define SIOCSIFFLAGS    0x8914
-#define SIOCGIFADDR     0x8915
-#define SIOCSIFADDR     0x8916
-#define SIOCGIFDSTADDR  0x8917
-#define SIOCSIFDSTADDR  0x8918
-#define SIOCGIFBRDADDR  0x8919
-#define SIOCSIFBRDADDR  0x891a
-#define SIOCGIFNETMASK  0x891b
-#define SIOCSIFNETMASK  0x891c
-#define SIOCGIFMETRIC   0x891d
-#define SIOCSIFMETRIC   0x891e
-#define SIOCGIFMEM      0x891f
-#define SIOCSIFMEM      0x8920
-#define SIOCGIFMTU      0x8921
-#define SIOCSIFMTU      0x8922
-#define SIOCSIFHWADDR   0x8924
-#define SIOCGIFENCAP    0x8925
-#define SIOCSIFENCAP    0x8926
-#define SIOCGIFHWADDR   0x8927
-#define SIOCGIFSLAVE    0x8929
-#define SIOCSIFSLAVE    0x8930
-#define SIOCADDMULTI    0x8931
-#define SIOCDELMULTI    0x8932
-#define SIOCGIFINDEX    0x8933
-#define SIOGIFINDEX     SIOCGIFINDEX
-#define SIOCSIFPFLAGS   0x8934
-#define SIOCGIFPFLAGS   0x8935
-#define SIOCDIFADDR     0x8936
+#define SIOCGIFNAME 0x8910
+#define SIOCSIFLINK 0x8911
+#define SIOCGIFCONF 0x8912
+#define SIOCGIFFLAGS 0x8913
+#define SIOCSIFFLAGS 0x8914
+#define SIOCGIFADDR 0x8915
+#define SIOCSIFADDR 0x8916
+#define SIOCGIFDSTADDR 0x8917
+#define SIOCSIFDSTADDR 0x8918
+#define SIOCGIFBRDADDR 0x8919
+#define SIOCSIFBRDADDR 0x891a
+#define SIOCGIFNETMASK 0x891b
+#define SIOCSIFNETMASK 0x891c
+#define SIOCGIFMETRIC 0x891d
+#define SIOCSIFMETRIC 0x891e
+#define SIOCGIFMEM 0x891f
+#define SIOCSIFMEM 0x8920
+#define SIOCGIFMTU 0x8921
+#define SIOCSIFMTU 0x8922
+#define SIOCSIFHWADDR 0x8924
+#define SIOCGIFENCAP 0x8925
+#define SIOCSIFENCAP 0x8926
+#define SIOCGIFHWADDR 0x8927
+#define SIOCGIFSLAVE 0x8929
+#define SIOCSIFSLAVE 0x8930
+#define SIOCADDMULTI 0x8931
+#define SIOCDELMULTI 0x8932
+#define SIOCGIFINDEX 0x8933
+#define SIOGIFINDEX SIOCGIFINDEX
+#define SIOCSIFPFLAGS 0x8934
+#define SIOCGIFPFLAGS 0x8935
+#define SIOCDIFADDR 0x8936
 #define SIOCSIFHWBROADCAST 0x8937
-#define SIOCGIFCOUNT    0x8938
+#define SIOCGIFCOUNT 0x8938
 
-#define SIOCGIFBR       0x8940
-#define SIOCSIFBR       0x8941
+#define SIOCGIFBR 0x8940
+#define SIOCSIFBR 0x8941
 
-#define SIOCGIFTXQLEN   0x8942
-#define SIOCSIFTXQLEN   0x8943
+#define SIOCGIFTXQLEN 0x8942
+#define SIOCSIFTXQLEN 0x8943
 
-#define SIOCDARP        0x8953
-#define SIOCGARP        0x8954
-#define SIOCSARP        0x8955
+#define SIOCDARP 0x8953
+#define SIOCGARP 0x8954
+#define SIOCSARP 0x8955
 
-#define SIOCDRARP       0x8960
-#define SIOCGRARP       0x8961
-#define SIOCSRARP       0x8962
+#define SIOCDRARP 0x8960
+#define SIOCGRARP 0x8961
+#define SIOCSRARP 0x8962
 
-#define SIOCGIFMAP      0x8970
-#define SIOCSIFMAP      0x8971
+#define SIOCGIFMAP 0x8970
+#define SIOCSIFMAP 0x8971
 
-#define SIOCADDDLCI     0x8980
-#define SIOCDELDLCI     0x8981
+#define SIOCADDDLCI 0x8980
+#define SIOCDELDLCI 0x8981
 
-#define SIOCDEVPRIVATE		0x89F0
-#define SIOCPROTOPRIVATE	0x89E0
+#define SIOCDEVPRIVATE 0x89F0
+#define SIOCPROTOPRIVATE 0x89E0
diff --git a/fusl/arch/mips/bits/limits.h b/fusl/arch/mips/bits/limits.h
index fbc6d23..f2f7cc4 100644
--- a/fusl/arch/mips/bits/limits.h
+++ b/fusl/arch/mips/bits/limits.h
@@ -1,7 +1,7 @@
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define LONG_BIT 32
 #endif
 
-#define LONG_MAX  0x7fffffffL
-#define LLONG_MAX  0x7fffffffffffffffLL
+#define LONG_MAX 0x7fffffffL
+#define LLONG_MAX 0x7fffffffffffffffLL
diff --git a/fusl/arch/mips/bits/mman.h b/fusl/arch/mips/bits/mman.h
index cb9ac53..23fc87e 100644
--- a/fusl/arch/mips/bits/mman.h
+++ b/fusl/arch/mips/bits/mman.h
@@ -1,58 +1,58 @@
-#define MAP_FAILED ((void *) -1)
+#define MAP_FAILED ((void*)-1)
 
-#define	PROT_NONE      0
-#define	PROT_READ      1
-#define	PROT_WRITE     2
-#define	PROT_EXEC      4
-#define	PROT_GROWSDOWN 0x01000000
-#define	PROT_GROWSUP   0x02000000
+#define PROT_NONE 0
+#define PROT_READ 1
+#define PROT_WRITE 2
+#define PROT_EXEC 4
+#define PROT_GROWSDOWN 0x01000000
+#define PROT_GROWSUP 0x02000000
 
-#define	MAP_SHARED     0x01
-#define	MAP_PRIVATE    0x02
-#define	MAP_FIXED      0x10
+#define MAP_SHARED 0x01
+#define MAP_PRIVATE 0x02
+#define MAP_FIXED 0x10
 
-#define MAP_TYPE       0x0f
-#define MAP_FILE       0x00
-#define MAP_ANON       0x800
-#define MAP_ANONYMOUS  MAP_ANON
-#define MAP_NORESERVE  0x0400
-#define MAP_GROWSDOWN  0x1000
-#define MAP_DENYWRITE  0x2000
+#define MAP_TYPE 0x0f
+#define MAP_FILE 0x00
+#define MAP_ANON 0x800
+#define MAP_ANONYMOUS MAP_ANON
+#define MAP_NORESERVE 0x0400
+#define MAP_GROWSDOWN 0x1000
+#define MAP_DENYWRITE 0x2000
 #define MAP_EXECUTABLE 0x4000
-#define MAP_LOCKED     0x8000
-#define MAP_POPULATE   0x10000
-#define MAP_NONBLOCK   0x20000
-#define MAP_STACK      0x40000
-#define MAP_HUGETLB    0x80000
+#define MAP_LOCKED 0x8000
+#define MAP_POPULATE 0x10000
+#define MAP_NONBLOCK 0x20000
+#define MAP_STACK 0x40000
+#define MAP_HUGETLB 0x80000
 
-#define POSIX_MADV_NORMAL       0
-#define POSIX_MADV_RANDOM       1
-#define POSIX_MADV_SEQUENTIAL   2
-#define POSIX_MADV_WILLNEED     3
-#define POSIX_MADV_DONTNEED     0
+#define POSIX_MADV_NORMAL 0
+#define POSIX_MADV_RANDOM 1
+#define POSIX_MADV_SEQUENTIAL 2
+#define POSIX_MADV_WILLNEED 3
+#define POSIX_MADV_DONTNEED 0
 
-#define MS_ASYNC        1
-#define MS_INVALIDATE   2
-#define MS_SYNC         4
+#define MS_ASYNC 1
+#define MS_INVALIDATE 2
+#define MS_SYNC 4
 
-#define MCL_CURRENT     1
-#define MCL_FUTURE      2
-#define MCL_ONFAULT     4
+#define MCL_CURRENT 1
+#define MCL_FUTURE 2
+#define MCL_ONFAULT 4
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#define MADV_NORMAL      0
-#define MADV_RANDOM      1
-#define MADV_SEQUENTIAL  2
-#define MADV_WILLNEED    3
-#define MADV_DONTNEED    4
-#define MADV_REMOVE      9
-#define MADV_DONTFORK    10
-#define MADV_DOFORK      11
-#define MADV_MERGEABLE   12
+#define MADV_NORMAL 0
+#define MADV_RANDOM 1
+#define MADV_SEQUENTIAL 2
+#define MADV_WILLNEED 3
+#define MADV_DONTNEED 4
+#define MADV_REMOVE 9
+#define MADV_DONTFORK 10
+#define MADV_DOFORK 11
+#define MADV_MERGEABLE 12
 #define MADV_UNMERGEABLE 13
-#define MADV_HUGEPAGE    14
-#define MADV_NOHUGEPAGE  15
-#define MADV_DONTDUMP    16
-#define MADV_DODUMP      17
-#define MADV_HWPOISON    100
+#define MADV_HUGEPAGE 14
+#define MADV_NOHUGEPAGE 15
+#define MADV_DONTDUMP 16
+#define MADV_DODUMP 17
+#define MADV_HWPOISON 100
 #endif
diff --git a/fusl/arch/mips/bits/msg.h b/fusl/arch/mips/bits/msg.h
index bfe2b3a..84b65c8 100644
--- a/fusl/arch/mips/bits/msg.h
+++ b/fusl/arch/mips/bits/msg.h
@@ -1,25 +1,24 @@
-struct msqid_ds
-{
-	struct ipc_perm msg_perm;
+struct msqid_ds {
+  struct ipc_perm msg_perm;
 #if _MIPSEL || __MIPSEL || __MIPSEL__
-	time_t msg_stime;
-	int __unused1;
-	time_t msg_rtime;
-	int __unused2;
-	time_t msg_ctime;
-	int __unused3;
+  time_t msg_stime;
+  int __unused1;
+  time_t msg_rtime;
+  int __unused2;
+  time_t msg_ctime;
+  int __unused3;
 #else
-	int __unused1;
-	time_t msg_stime;
-	int __unused2;
-	time_t msg_rtime;
-	int __unused3;
-	time_t msg_ctime;
+  int __unused1;
+  time_t msg_stime;
+  int __unused2;
+  time_t msg_rtime;
+  int __unused3;
+  time_t msg_ctime;
 #endif
-	unsigned long msg_cbytes;
-	msgqnum_t msg_qnum;
-	msglen_t msg_qbytes;
-	pid_t msg_lspid;
-	pid_t msg_lrpid;
-	unsigned long __unused[2];
+  unsigned long msg_cbytes;
+  msgqnum_t msg_qnum;
+  msglen_t msg_qbytes;
+  pid_t msg_lspid;
+  pid_t msg_lrpid;
+  unsigned long __unused[2];
 };
diff --git a/fusl/arch/mips/bits/posix.h b/fusl/arch/mips/bits/posix.h
index 30a3871..8897d37 100644
--- a/fusl/arch/mips/bits/posix.h
+++ b/fusl/arch/mips/bits/posix.h
@@ -1,2 +1,2 @@
-#define _POSIX_V6_ILP32_OFFBIG  1
-#define _POSIX_V7_ILP32_OFFBIG  1
+#define _POSIX_V6_ILP32_OFFBIG 1
+#define _POSIX_V7_ILP32_OFFBIG 1
diff --git a/fusl/arch/mips/bits/resource.h b/fusl/arch/mips/bits/resource.h
index 414a405..3b626ca 100644
--- a/fusl/arch/mips/bits/resource.h
+++ b/fusl/arch/mips/bits/resource.h
@@ -1,5 +1,5 @@
-#define RLIMIT_NOFILE  5
-#define RLIMIT_AS      6
-#define RLIMIT_RSS     7
-#define RLIMIT_NPROC   8
+#define RLIMIT_NOFILE 5
+#define RLIMIT_AS 6
+#define RLIMIT_RSS 7
+#define RLIMIT_NPROC 8
 #define RLIMIT_MEMLOCK 9
diff --git a/fusl/arch/mips/bits/sem.h b/fusl/arch/mips/bits/sem.h
index e46ced9..db4102f 100644
--- a/fusl/arch/mips/bits/sem.h
+++ b/fusl/arch/mips/bits/sem.h
@@ -1,14 +1,14 @@
 struct semid_ds {
-	struct ipc_perm sem_perm;
-	time_t sem_otime;
-	time_t sem_ctime;
+  struct ipc_perm sem_perm;
+  time_t sem_otime;
+  time_t sem_ctime;
 #if __BYTE_ORDER == __LITTLE_ENDIAN
-	unsigned short sem_nsems;
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
+  unsigned short sem_nsems;
+  char __sem_nsems_pad[sizeof(time_t) - sizeof(short)];
 #else
-	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
-	unsigned short sem_nsems;
+  char __sem_nsems_pad[sizeof(time_t) - sizeof(short)];
+  unsigned short sem_nsems;
 #endif
-	time_t __unused3;
-	time_t __unused4;
+  time_t __unused3;
+  time_t __unused4;
 };
diff --git a/fusl/arch/mips/bits/shm.h b/fusl/arch/mips/bits/shm.h
index f4b8712..a3b9dcc 100644
--- a/fusl/arch/mips/bits/shm.h
+++ b/fusl/arch/mips/bits/shm.h
@@ -1,26 +1,24 @@
 #define SHMLBA 4096
 
-struct shmid_ds
-{
-	struct ipc_perm shm_perm;
-	size_t shm_segsz;
-	time_t shm_atime;
-	time_t shm_dtime;
-	time_t shm_ctime;
-	pid_t shm_cpid;
-	pid_t shm_lpid;
-	unsigned long shm_nattch;
-	unsigned long __pad1;
-	unsigned long __pad2;
+struct shmid_ds {
+  struct ipc_perm shm_perm;
+  size_t shm_segsz;
+  time_t shm_atime;
+  time_t shm_dtime;
+  time_t shm_ctime;
+  pid_t shm_cpid;
+  pid_t shm_lpid;
+  unsigned long shm_nattch;
+  unsigned long __pad1;
+  unsigned long __pad2;
 };
 
 struct shminfo {
-	unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
+  unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
 };
 
 struct shm_info {
-	int __used_ids;
-	unsigned long shm_tot, shm_rss, shm_swp;
-	unsigned long __swap_attempts, __swap_successes;
+  int __used_ids;
+  unsigned long shm_tot, shm_rss, shm_swp;
+  unsigned long __swap_attempts, __swap_successes;
 };
-
diff --git a/fusl/arch/mips/bits/signal.h b/fusl/arch/mips/bits/signal.h
index 889f77e..8b5941d 100644
--- a/fusl/arch/mips/bits/signal.h
+++ b/fusl/arch/mips/bits/signal.h
@@ -1,5 +1,5 @@
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define MINSIGSTKSZ 2048
@@ -9,69 +9,67 @@
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 typedef unsigned long long greg_t, gregset_t[32];
 typedef struct {
-	union {
-		double fp_dregs[32];
-		struct {
-			float _fp_fregs;
-			unsigned _fp_pad;
-		} fp_fregs[32];
-	} fp_r;
+  union {
+    double fp_dregs[32];
+    struct {
+      float _fp_fregs;
+      unsigned _fp_pad;
+    } fp_fregs[32];
+  } fp_r;
 } fpregset_t;
-struct sigcontext
-{
-	unsigned sc_regmask, sc_status;
-	unsigned long long sc_pc, sc_regs[32], sc_fpregs[32];
-	unsigned sc_ownedfp, sc_fpc_csr, sc_fpc_eir, sc_used_math, sc_dsp;
-	unsigned long long sc_mdhi, sc_mdlo;
-	unsigned long sc_hi1, sc_lo1, sc_hi2, sc_lo2, sc_hi3, sc_lo3;
+struct sigcontext {
+  unsigned sc_regmask, sc_status;
+  unsigned long long sc_pc, sc_regs[32], sc_fpregs[32];
+  unsigned sc_ownedfp, sc_fpc_csr, sc_fpc_eir, sc_used_math, sc_dsp;
+  unsigned long long sc_mdhi, sc_mdlo;
+  unsigned long sc_hi1, sc_lo1, sc_hi2, sc_lo2, sc_hi3, sc_lo3;
 };
-typedef struct
-{
-	unsigned regmask, status;
-	unsigned long long pc, gregs[32], fpregs[32];
-	unsigned ownedfp, fpc_csr, fpc_eir, used_math, dsp;
-	unsigned long long mdhi, mdlo;
-	unsigned long hi1, lo1, hi2, lo2, hi3, lo3;
+typedef struct {
+  unsigned regmask, status;
+  unsigned long long pc, gregs[32], fpregs[32];
+  unsigned ownedfp, fpc_csr, fpc_eir, used_math, dsp;
+  unsigned long long mdhi, mdlo;
+  unsigned long hi1, lo1, hi2, lo2, hi3, lo3;
 } mcontext_t;
 #else
 typedef struct {
-	unsigned __mc1[2];
-	unsigned long long __mc2[65];
-	unsigned __mc3[5];
-	unsigned long long __mc4[2];
-	unsigned __mc5[6];
+  unsigned __mc1[2];
+  unsigned long long __mc2[65];
+  unsigned __mc3[5];
+  unsigned long long __mc4[2];
+  unsigned __mc5[6];
 } mcontext_t;
 #endif
 
 struct sigaltstack {
-	void *ss_sp;
-	size_t ss_size;
-	int ss_flags;
+  void* ss_sp;
+  size_t ss_size;
+  int ss_flags;
 };
 
 typedef struct __ucontext {
-	unsigned long uc_flags;
-	struct __ucontext *uc_link;
-	stack_t uc_stack;
-	mcontext_t uc_mcontext;
-	sigset_t uc_sigmask;
+  unsigned long uc_flags;
+  struct __ucontext* uc_link;
+  stack_t uc_stack;
+  mcontext_t uc_mcontext;
+  sigset_t uc_sigmask;
 } ucontext_t;
 
-#define SA_NOCLDSTOP  1
-#define SA_NOCLDWAIT  0x10000
-#define SA_SIGINFO    8
-#define SA_ONSTACK    0x08000000
-#define SA_RESTART    0x10000000
-#define SA_NODEFER    0x40000000
-#define SA_RESETHAND  0x80000000
-#define SA_RESTORER   0x04000000
+#define SA_NOCLDSTOP 1
+#define SA_NOCLDWAIT 0x10000
+#define SA_SIGINFO 8
+#define SA_ONSTACK 0x08000000
+#define SA_RESTART 0x10000000
+#define SA_NODEFER 0x40000000
+#define SA_RESETHAND 0x80000000
+#define SA_RESTORER 0x04000000
 
 #undef SIG_BLOCK
 #undef SIG_UNBLOCK
 #undef SIG_SETMASK
-#define SIG_BLOCK     1
-#define SIG_UNBLOCK   2
-#define SIG_SETMASK   3
+#define SIG_BLOCK 1
+#define SIG_UNBLOCK 2
+#define SIG_SETMASK 3
 
 #undef SI_ASYNCIO
 #undef SI_MESGQ
@@ -84,39 +82,39 @@
 
 #endif
 
-#define SIGHUP    1
-#define SIGINT    2
-#define SIGQUIT   3
-#define SIGILL    4
-#define SIGTRAP   5
-#define SIGABRT   6
-#define SIGIOT    SIGABRT
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT SIGABRT
 #define SIGSTKFLT 7
-#define SIGFPE    8
-#define SIGKILL   9
-#define SIGBUS    10
-#define SIGSEGV   11
-#define SIGSYS    12
-#define SIGPIPE   13
-#define SIGALRM   14
-#define SIGTERM   15
-#define SIGUSR1   16
-#define SIGUSR2   17
-#define SIGCHLD   18
-#define SIGPWR    19
-#define SIGWINCH  20
-#define SIGURG    21
-#define SIGIO     22
-#define SIGPOLL   SIGIO
-#define SIGSTOP   23
-#define SIGTSTP   24
-#define SIGCONT   25
-#define SIGTTIN   26
-#define SIGTTOU   27
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGBUS 10
+#define SIGSEGV 11
+#define SIGSYS 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
+#define SIGUSR1 16
+#define SIGUSR2 17
+#define SIGCHLD 18
+#define SIGPWR 19
+#define SIGWINCH 20
+#define SIGURG 21
+#define SIGIO 22
+#define SIGPOLL SIGIO
+#define SIGSTOP 23
+#define SIGTSTP 24
+#define SIGCONT 25
+#define SIGTTIN 26
+#define SIGTTOU 27
 #define SIGVTALRM 28
-#define SIGPROF   29
-#define SIGXCPU   30
-#define SIGXFSZ   31
+#define SIGPROF 29
+#define SIGXCPU 30
+#define SIGXFSZ 31
 #define SIGUNUSED SIGSYS
 
 #define _NSIG 128
diff --git a/fusl/arch/mips/bits/socket.h b/fusl/arch/mips/bits/socket.h
index cc72dcf..b6384eb 100644
--- a/fusl/arch/mips/bits/socket.h
+++ b/fusl/arch/mips/bits/socket.h
@@ -1,54 +1,52 @@
-struct msghdr
-{
-	void *msg_name;
-	socklen_t msg_namelen;
-	struct iovec *msg_iov;
-	int msg_iovlen;
-	void *msg_control;
-	socklen_t msg_controllen;
-	int msg_flags;
+struct msghdr {
+  void* msg_name;
+  socklen_t msg_namelen;
+  struct iovec* msg_iov;
+  int msg_iovlen;
+  void* msg_control;
+  socklen_t msg_controllen;
+  int msg_flags;
 };
 
-struct cmsghdr
-{
-	socklen_t cmsg_len;
-	int cmsg_level;
-	int cmsg_type;
+struct cmsghdr {
+  socklen_t cmsg_len;
+  int cmsg_level;
+  int cmsg_type;
 };
 
-#define SOCK_STREAM    2
-#define SOCK_DGRAM     1
+#define SOCK_STREAM 2
+#define SOCK_DGRAM 1
 
-#define SOL_SOCKET     65535
+#define SOL_SOCKET 65535
 
-#define SO_DEBUG        1
+#define SO_DEBUG 1
 
-#define SO_REUSEADDR    0x0004
-#define SO_KEEPALIVE    0x0008
-#define SO_DONTROUTE    0x0010
-#define SO_BROADCAST    0x0020
-#define SO_LINGER       0x0080
-#define SO_OOBINLINE    0x0100
-#define SO_REUSEPORT    0x0200
-#define SO_SNDBUF       0x1001
-#define SO_RCVBUF       0x1002
-#define SO_SNDLOWAT     0x1003
-#define SO_RCVLOWAT     0x1004
-#define SO_RCVTIMEO     0x1006
-#define SO_SNDTIMEO     0x1005
-#define SO_ERROR        0x1007
-#define SO_TYPE         0x1008
-#define SO_ACCEPTCONN   0x1009
-#define SO_PROTOCOL     0x1028
-#define SO_DOMAIN       0x1029
+#define SO_REUSEADDR 0x0004
+#define SO_KEEPALIVE 0x0008
+#define SO_DONTROUTE 0x0010
+#define SO_BROADCAST 0x0020
+#define SO_LINGER 0x0080
+#define SO_OOBINLINE 0x0100
+#define SO_REUSEPORT 0x0200
+#define SO_SNDBUF 0x1001
+#define SO_RCVBUF 0x1002
+#define SO_SNDLOWAT 0x1003
+#define SO_RCVLOWAT 0x1004
+#define SO_RCVTIMEO 0x1006
+#define SO_SNDTIMEO 0x1005
+#define SO_ERROR 0x1007
+#define SO_TYPE 0x1008
+#define SO_ACCEPTCONN 0x1009
+#define SO_PROTOCOL 0x1028
+#define SO_DOMAIN 0x1029
 
-#define SO_NO_CHECK     11
-#define SO_PRIORITY     12
-#define SO_BSDCOMPAT    14
-#define SO_PASSCRED     17
-#define SO_PEERCRED     18
-#define SO_SNDBUFFORCE  31
-#define SO_RCVBUFFORCE  33
+#define SO_NO_CHECK 11
+#define SO_PRIORITY 12
+#define SO_BSDCOMPAT 14
+#define SO_PASSCRED 17
+#define SO_PEERCRED 18
+#define SO_SNDBUFFORCE 31
+#define SO_RCVBUFFORCE 33
 
-#define SOCK_NONBLOCK     0200
-#define SOCK_CLOEXEC  02000000
+#define SOCK_NONBLOCK 0200
+#define SOCK_CLOEXEC 02000000
diff --git a/fusl/arch/mips/bits/stat.h b/fusl/arch/mips/bits/stat.h
index c8f9b46..0260611 100644
--- a/fusl/arch/mips/bits/stat.h
+++ b/fusl/arch/mips/bits/stat.h
@@ -1,23 +1,22 @@
 /* copied from kernel definition, but with padding replaced
  * by the corresponding correctly-sized userspace types. */
 
-struct stat
-{
-	dev_t st_dev;
-	long __st_padding1[2];
-	ino_t st_ino;
-	mode_t st_mode;
-	nlink_t st_nlink;
-	uid_t st_uid;
-	gid_t st_gid;
-	dev_t st_rdev;
-	long __st_padding2[2];
-	off_t st_size;
-	struct timespec st_atim;
-	struct timespec st_mtim;
-	struct timespec st_ctim;
-	blksize_t st_blksize;
-	long __st_padding3;
-	blkcnt_t st_blocks;
-        long __st_padding4[14];
+struct stat {
+  dev_t st_dev;
+  long __st_padding1[2];
+  ino_t st_ino;
+  mode_t st_mode;
+  nlink_t st_nlink;
+  uid_t st_uid;
+  gid_t st_gid;
+  dev_t st_rdev;
+  long __st_padding2[2];
+  off_t st_size;
+  struct timespec st_atim;
+  struct timespec st_mtim;
+  struct timespec st_ctim;
+  blksize_t st_blksize;
+  long __st_padding3;
+  blkcnt_t st_blocks;
+  long __st_padding4[14];
 };
diff --git a/fusl/arch/mips/bits/statfs.h b/fusl/arch/mips/bits/statfs.h
index a73bd54..6391005 100644
--- a/fusl/arch/mips/bits/statfs.h
+++ b/fusl/arch/mips/bits/statfs.h
@@ -1,8 +1,8 @@
 struct statfs {
-	unsigned long f_type, f_bsize, f_frsize;
-	fsblkcnt_t f_blocks, f_bfree;
-	fsfilcnt_t f_files, f_ffree;
-	fsblkcnt_t f_bavail;
-	fsid_t f_fsid;
-	unsigned long f_namelen, f_flags, f_spare[5];
+  unsigned long f_type, f_bsize, f_frsize;
+  fsblkcnt_t f_blocks, f_bfree;
+  fsfilcnt_t f_files, f_ffree;
+  fsblkcnt_t f_bavail;
+  fsid_t f_fsid;
+  unsigned long f_namelen, f_flags, f_spare[5];
 };
diff --git a/fusl/arch/mips/bits/stdint.h b/fusl/arch/mips/bits/stdint.h
index d1b2712..93ec5df 100644
--- a/fusl/arch/mips/bits/stdint.h
+++ b/fusl/arch/mips/bits/stdint.h
@@ -3,18 +3,18 @@
 typedef uint32_t uint_fast16_t;
 typedef uint32_t uint_fast32_t;
 
-#define INT_FAST16_MIN  INT32_MIN
-#define INT_FAST32_MIN  INT32_MIN
+#define INT_FAST16_MIN INT32_MIN
+#define INT_FAST32_MIN INT32_MIN
 
-#define INT_FAST16_MAX  INT32_MAX
-#define INT_FAST32_MAX  INT32_MAX
+#define INT_FAST16_MAX INT32_MAX
+#define INT_FAST32_MAX INT32_MAX
 
 #define UINT_FAST16_MAX UINT32_MAX
 #define UINT_FAST32_MAX UINT32_MAX
 
-#define INTPTR_MIN      INT32_MIN
-#define INTPTR_MAX      INT32_MAX
-#define UINTPTR_MAX     UINT32_MAX
-#define PTRDIFF_MIN     INT32_MIN
-#define PTRDIFF_MAX     INT32_MAX
-#define SIZE_MAX        UINT32_MAX
+#define INTPTR_MIN INT32_MIN
+#define INTPTR_MAX INT32_MAX
+#define UINTPTR_MAX UINT32_MAX
+#define PTRDIFF_MIN INT32_MIN
+#define PTRDIFF_MAX INT32_MAX
+#define SIZE_MAX UINT32_MAX
diff --git a/fusl/arch/mips/bits/syscall.h b/fusl/arch/mips/bits/syscall.h
index 340c587..0d716b8 100644
--- a/fusl/arch/mips/bits/syscall.h
+++ b/fusl/arch/mips/bits/syscall.h
@@ -1,721 +1,720 @@
-#define __NR_syscall                 4000
-#define __NR_exit                    4001
-#define __NR_fork                    4002
-#define __NR_read                    4003
-#define __NR_write                   4004
-#define __NR_open                    4005
-#define __NR_close                   4006
-#define __NR_waitpid                 4007
-#define __NR_creat                   4008
-#define __NR_link                    4009
-#define __NR_unlink                  4010
-#define __NR_execve                  4011
-#define __NR_chdir                   4012
-#define __NR_time                    4013
-#define __NR_mknod                   4014
-#define __NR_chmod                   4015
-#define __NR_lchown                  4016
-#define __NR_break                   4017
-#define __NR_unused18                4018
-#define __NR_lseek                   4019
-#define __NR_getpid                  4020
-#define __NR_mount                   4021
-#define __NR_umount                  4022
-#define __NR_setuid                  4023
-#define __NR_getuid                  4024
-#define __NR_stime                   4025
-#define __NR_ptrace                  4026
-#define __NR_alarm                   4027
-#define __NR_unused28                4028
-#define __NR_pause                   4029
-#define __NR_utime                   4030
-#define __NR_stty                    4031
-#define __NR_gtty                    4032
-#define __NR_access                  4033
-#define __NR_nice                    4034
-#define __NR_ftime                   4035
-#define __NR_sync                    4036
-#define __NR_kill                    4037
-#define __NR_rename                  4038
-#define __NR_mkdir                   4039
-#define __NR_rmdir                   4040
-#define __NR_dup                     4041
-#define __NR_pipe                    4042
-#define __NR_times                   4043
-#define __NR_prof                    4044
-#define __NR_brk                     4045
-#define __NR_setgid                  4046
-#define __NR_getgid                  4047
-#define __NR_signal                  4048
-#define __NR_geteuid                 4049
-#define __NR_getegid                 4050
-#define __NR_acct                    4051
-#define __NR_umount2                 4052
-#define __NR_lock                    4053
-#define __NR_ioctl                   4054
-#define __NR_fcntl                   4055
-#define __NR_mpx                     4056
-#define __NR_setpgid                 4057
-#define __NR_ulimit                  4058
-#define __NR_unused59                4059
-#define __NR_umask                   4060
-#define __NR_chroot                  4061
-#define __NR_ustat                   4062
-#define __NR_dup2                    4063
-#define __NR_getppid                 4064
-#define __NR_getpgrp                 4065
-#define __NR_setsid                  4066
-#define __NR_sigaction               4067
-#define __NR_sgetmask                4068
-#define __NR_ssetmask                4069
-#define __NR_setreuid                4070
-#define __NR_setregid                4071
-#define __NR_sigsuspend              4072
-#define __NR_sigpending              4073
-#define __NR_sethostname             4074
-#define __NR_setrlimit               4075
-#define __NR_getrlimit               4076
-#define __NR_getrusage               4077
-#define __NR_gettimeofday            4078
-#define __NR_settimeofday            4079
-#define __NR_getgroups               4080
-#define __NR_setgroups               4081
-#define __NR_reserved82              4082
-#define __NR_symlink                 4083
-#define __NR_unused84                4084
-#define __NR_readlink                4085
-#define __NR_uselib                  4086
-#define __NR_swapon                  4087
-#define __NR_reboot                  4088
-#define __NR_readdir                 4089
-#define __NR_mmap                    4090
-#define __NR_munmap                  4091
-#define __NR_truncate                4092
-#define __NR_ftruncate               4093
-#define __NR_fchmod                  4094
-#define __NR_fchown                  4095
-#define __NR_getpriority             4096
-#define __NR_setpriority             4097
-#define __NR_profil                  4098
-#define __NR_statfs                  4099
-#define __NR_fstatfs                 4100
-#define __NR_ioperm                  4101
-#define __NR_socketcall              4102
-#define __NR_syslog                  4103
-#define __NR_setitimer               4104
-#define __NR_getitimer               4105
-#define __NR_stat                    4106
-#define __NR_lstat                   4107
-#define __NR_fstat                   4108
-#define __NR_unused109               4109
-#define __NR_iopl                    4110
-#define __NR_vhangup                 4111
-#define __NR_idle                    4112
-#define __NR_vm86                    4113
-#define __NR_wait4                   4114
-#define __NR_swapoff                 4115
-#define __NR_sysinfo                 4116
-#define __NR_ipc                     4117
-#define __NR_fsync                   4118
-#define __NR_sigreturn               4119
-#define __NR_clone                   4120
-#define __NR_setdomainname           4121
-#define __NR_uname                   4122
-#define __NR_modify_ldt              4123
-#define __NR_adjtimex                4124
-#define __NR_mprotect                4125
-#define __NR_sigprocmask             4126
-#define __NR_create_module           4127
-#define __NR_init_module             4128
-#define __NR_delete_module           4129
-#define __NR_get_kernel_syms         4130
-#define __NR_quotactl                4131
-#define __NR_getpgid                 4132
-#define __NR_fchdir                  4133
-#define __NR_bdflush                 4134
-#define __NR_sysfs                   4135
-#define __NR_personality             4136
-#define __NR_afs_syscall             4137
-#define __NR_setfsuid                4138
-#define __NR_setfsgid                4139
-#define __NR__llseek                 4140
-#define __NR_getdents                4141
-#define __NR_select                  4142
-#define __NR_flock                   4143
-#define __NR_msync                   4144
-#define __NR_readv                   4145
-#define __NR_writev                  4146
-#define __NR_cacheflush              4147
-#define __NR_cachectl                4148
-#define __NR_sysmips                 4149
-#define __NR_unused150               4150
-#define __NR_getsid                  4151
-#define __NR_fdatasync               4152
-#define __NR__sysctl                 4153
-#define __NR_mlock                   4154
-#define __NR_munlock                 4155
-#define __NR_mlockall                4156
-#define __NR_munlockall              4157
-#define __NR_sched_setparam          4158
-#define __NR_sched_getparam          4159
-#define __NR_sched_setscheduler      4160
-#define __NR_sched_getscheduler      4161
-#define __NR_sched_yield             4162
-#define __NR_sched_get_priority_max  4163
-#define __NR_sched_get_priority_min  4164
-#define __NR_sched_rr_get_interval   4165
-#define __NR_nanosleep               4166
-#define __NR_mremap                  4167
-#define __NR_accept                  4168
-#define __NR_bind                    4169
-#define __NR_connect                 4170
-#define __NR_getpeername             4171
-#define __NR_getsockname             4172
-#define __NR_getsockopt              4173
-#define __NR_listen                  4174
-#define __NR_recv                    4175
-#define __NR_recvfrom                4176
-#define __NR_recvmsg                 4177
-#define __NR_send                    4178
-#define __NR_sendmsg                 4179
-#define __NR_sendto                  4180
-#define __NR_setsockopt              4181
-#define __NR_shutdown                4182
-#define __NR_socket                  4183
-#define __NR_socketpair              4184
-#define __NR_setresuid               4185
-#define __NR_getresuid               4186
-#define __NR_query_module            4187
-#define __NR_poll                    4188
-#define __NR_nfsservctl              4189
-#define __NR_setresgid               4190
-#define __NR_getresgid               4191
-#define __NR_prctl                   4192
-#define __NR_rt_sigreturn            4193
-#define __NR_rt_sigaction            4194
-#define __NR_rt_sigprocmask          4195
-#define __NR_rt_sigpending           4196
-#define __NR_rt_sigtimedwait         4197
-#define __NR_rt_sigqueueinfo         4198
-#define __NR_rt_sigsuspend           4199
-#define __NR_pread                   4200
-#define __NR_pwrite                  4201
-#define __NR_chown                   4202
-#define __NR_getcwd                  4203
-#define __NR_capget                  4204
-#define __NR_capset                  4205
-#define __NR_sigaltstack             4206
-#define __NR_sendfile                4207
-#define __NR_getpmsg                 4208
-#define __NR_putpmsg                 4209
-#define __NR_mmap2                   4210
-#define __NR_truncate64              4211
-#define __NR_ftruncate64             4212
-#define __NR_stat64                  4213
-#define __NR_lstat64                 4214
-#define __NR_fstat64                 4215
-#define __NR_pivot_root              4216
-#define __NR_mincore                 4217
-#define __NR_madvise                 4218
-#define __NR_getdents64              4219
-#define __NR_fcntl64                 4220
-#define __NR_reserved221             4221
-#define __NR_gettid                  4222
-#define __NR_readahead               4223
-#define __NR_setxattr                4224
-#define __NR_lsetxattr               4225
-#define __NR_fsetxattr               4226
-#define __NR_getxattr                4227
-#define __NR_lgetxattr               4228
-#define __NR_fgetxattr               4229
-#define __NR_listxattr               4230
-#define __NR_llistxattr              4231
-#define __NR_flistxattr              4232
-#define __NR_removexattr             4233
-#define __NR_lremovexattr            4234
-#define __NR_fremovexattr            4235
-#define __NR_tkill                   4236
-#define __NR_sendfile64              4237
-#define __NR_futex                   4238
-#define __NR_sched_setaffinity       4239
-#define __NR_sched_getaffinity       4240
-#define __NR_io_setup                4241
-#define __NR_io_destroy              4242
-#define __NR_io_getevents            4243
-#define __NR_io_submit               4244
-#define __NR_io_cancel               4245
-#define __NR_exit_group              4246
-#define __NR_lookup_dcookie          4247
-#define __NR_epoll_create            4248
-#define __NR_epoll_ctl               4249
-#define __NR_epoll_wait              4250
-#define __NR_remap_file_pages        4251
-#define __NR_set_tid_address         4252
-#define __NR_restart_syscall         4253
-#define __NR_fadvise                 4254
-#define __NR_statfs64                4255
-#define __NR_fstatfs64               4256
-#define __NR_timer_create            4257
-#define __NR_timer_settime           4258
-#define __NR_timer_gettime           4259
-#define __NR_timer_getoverrun        4260
-#define __NR_timer_delete            4261
-#define __NR_clock_settime           4262
-#define __NR_clock_gettime           4263
-#define __NR_clock_getres            4264
-#define __NR_clock_nanosleep         4265
-#define __NR_tgkill                  4266
-#define __NR_utimes                  4267
-#define __NR_mbind                   4268
-#define __NR_get_mempolicy           4269
-#define __NR_set_mempolicy           4270
-#define __NR_mq_open                 4271
-#define __NR_mq_unlink               4272
-#define __NR_mq_timedsend            4273
-#define __NR_mq_timedreceive         4274
-#define __NR_mq_notify               4275
-#define __NR_mq_getsetattr           4276
-#define __NR_vserver                 4277
-#define __NR_waitid                  4278
-#define __NR_add_key                 4280
-#define __NR_request_key             4281
-#define __NR_keyctl                  4282
-#define __NR_set_thread_area         4283
-#define __NR_inotify_init            4284
-#define __NR_inotify_add_watch       4285
-#define __NR_inotify_rm_watch        4286
-#define __NR_migrate_pages           4287
-#define __NR_openat                  4288
-#define __NR_mkdirat                 4289
-#define __NR_mknodat                 4290
-#define __NR_fchownat                4291
-#define __NR_futimesat               4292
-#define __NR_fstatat                 4293
-#define __NR_unlinkat                4294
-#define __NR_renameat                4295
-#define __NR_linkat                  4296
-#define __NR_symlinkat               4297
-#define __NR_readlinkat              4298
-#define __NR_fchmodat                4299
-#define __NR_faccessat               4300
-#define __NR_pselect6                4301
-#define __NR_ppoll                   4302
-#define __NR_unshare                 4303
-#define __NR_splice                  4304
-#define __NR_sync_file_range         4305
-#define __NR_tee                     4306
-#define __NR_vmsplice                4307
-#define __NR_move_pages              4308
-#define __NR_set_robust_list         4309
-#define __NR_get_robust_list         4310
-#define __NR_kexec_load              4311
-#define __NR_getcpu                  4312
-#define __NR_epoll_pwait             4313
-#define __NR_ioprio_set              4314
-#define __NR_ioprio_get              4315
-#define __NR_utimensat               4316
-#define __NR_signalfd                4317
-#define __NR_timerfd                 4318
-#define __NR_eventfd                 4319
-#define __NR_fallocate               4320
-#define __NR_timerfd_create          4321
-#define __NR_timerfd_gettime         4322
-#define __NR_timerfd_settime         4323
-#define __NR_signalfd4               4324
-#define __NR_eventfd2                4325
-#define __NR_epoll_create1           4326
-#define __NR_dup3                    4327
-#define __NR_pipe2                   4328
-#define __NR_inotify_init1           4329
-#define __NR_preadv                  4330
-#define __NR_pwritev                 4331
-#define __NR_rt_tgsigqueueinfo       4332
-#define __NR_perf_event_open         4333
-#define __NR_accept4                 4334
-#define __NR_recvmmsg                4335
-#define __NR_fanotify_init           4336
-#define __NR_fanotify_mark           4337
-#define __NR_prlimit64               4338
-#define __NR_name_to_handle_at       4339
-#define __NR_open_by_handle_at       4340
-#define __NR_clock_adjtime           4341
-#define __NR_syncfs                  4342
-#define __NR_sendmmsg                4343
-#define __NR_setns                   4344
-#define __NR_process_vm_readv        4345
-#define __NR_process_vm_writev       4346
-#define __NR_kcmp                    4347
-#define __NR_finit_module            4348
-#define __NR_sched_setattr           4349
-#define __NR_sched_getattr           4350
-#define __NR_renameat2               4351
-#define __NR_seccomp                 4352
-#define __NR_getrandom               4353
-#define __NR_memfd_create            4354
-#define __NR_bpf                     4355
-#define __NR_execveat                4356
-#define __NR_userfaultfd             4357
-#define __NR_membarrier              4358
-#define __NR_mlock2                  4359
-
+#define __NR_syscall 4000
+#define __NR_exit 4001
+#define __NR_fork 4002
+#define __NR_read 4003
+#define __NR_write 4004
+#define __NR_open 4005
+#define __NR_close 4006
+#define __NR_waitpid 4007
+#define __NR_creat 4008
+#define __NR_link 4009
+#define __NR_unlink 4010
+#define __NR_execve 4011
+#define __NR_chdir 4012
+#define __NR_time 4013
+#define __NR_mknod 4014
+#define __NR_chmod 4015
+#define __NR_lchown 4016
+#define __NR_break 4017
+#define __NR_unused18 4018
+#define __NR_lseek 4019
+#define __NR_getpid 4020
+#define __NR_mount 4021
+#define __NR_umount 4022
+#define __NR_setuid 4023
+#define __NR_getuid 4024
+#define __NR_stime 4025
+#define __NR_ptrace 4026
+#define __NR_alarm 4027
+#define __NR_unused28 4028
+#define __NR_pause 4029
+#define __NR_utime 4030
+#define __NR_stty 4031
+#define __NR_gtty 4032
+#define __NR_access 4033
+#define __NR_nice 4034
+#define __NR_ftime 4035
+#define __NR_sync 4036
+#define __NR_kill 4037
+#define __NR_rename 4038
+#define __NR_mkdir 4039
+#define __NR_rmdir 4040
+#define __NR_dup 4041
+#define __NR_pipe 4042
+#define __NR_times 4043
+#define __NR_prof 4044
+#define __NR_brk 4045
+#define __NR_setgid 4046
+#define __NR_getgid 4047
+#define __NR_signal 4048
+#define __NR_geteuid 4049
+#define __NR_getegid 4050
+#define __NR_acct 4051
+#define __NR_umount2 4052
+#define __NR_lock 4053
+#define __NR_ioctl 4054
+#define __NR_fcntl 4055
+#define __NR_mpx 4056
+#define __NR_setpgid 4057
+#define __NR_ulimit 4058
+#define __NR_unused59 4059
+#define __NR_umask 4060
+#define __NR_chroot 4061
+#define __NR_ustat 4062
+#define __NR_dup2 4063
+#define __NR_getppid 4064
+#define __NR_getpgrp 4065
+#define __NR_setsid 4066
+#define __NR_sigaction 4067
+#define __NR_sgetmask 4068
+#define __NR_ssetmask 4069
+#define __NR_setreuid 4070
+#define __NR_setregid 4071
+#define __NR_sigsuspend 4072
+#define __NR_sigpending 4073
+#define __NR_sethostname 4074
+#define __NR_setrlimit 4075
+#define __NR_getrlimit 4076
+#define __NR_getrusage 4077
+#define __NR_gettimeofday 4078
+#define __NR_settimeofday 4079
+#define __NR_getgroups 4080
+#define __NR_setgroups 4081
+#define __NR_reserved82 4082
+#define __NR_symlink 4083
+#define __NR_unused84 4084
+#define __NR_readlink 4085
+#define __NR_uselib 4086
+#define __NR_swapon 4087
+#define __NR_reboot 4088
+#define __NR_readdir 4089
+#define __NR_mmap 4090
+#define __NR_munmap 4091
+#define __NR_truncate 4092
+#define __NR_ftruncate 4093
+#define __NR_fchmod 4094
+#define __NR_fchown 4095
+#define __NR_getpriority 4096
+#define __NR_setpriority 4097
+#define __NR_profil 4098
+#define __NR_statfs 4099
+#define __NR_fstatfs 4100
+#define __NR_ioperm 4101
+#define __NR_socketcall 4102
+#define __NR_syslog 4103
+#define __NR_setitimer 4104
+#define __NR_getitimer 4105
+#define __NR_stat 4106
+#define __NR_lstat 4107
+#define __NR_fstat 4108
+#define __NR_unused109 4109
+#define __NR_iopl 4110
+#define __NR_vhangup 4111
+#define __NR_idle 4112
+#define __NR_vm86 4113
+#define __NR_wait4 4114
+#define __NR_swapoff 4115
+#define __NR_sysinfo 4116
+#define __NR_ipc 4117
+#define __NR_fsync 4118
+#define __NR_sigreturn 4119
+#define __NR_clone 4120
+#define __NR_setdomainname 4121
+#define __NR_uname 4122
+#define __NR_modify_ldt 4123
+#define __NR_adjtimex 4124
+#define __NR_mprotect 4125
+#define __NR_sigprocmask 4126
+#define __NR_create_module 4127
+#define __NR_init_module 4128
+#define __NR_delete_module 4129
+#define __NR_get_kernel_syms 4130
+#define __NR_quotactl 4131
+#define __NR_getpgid 4132
+#define __NR_fchdir 4133
+#define __NR_bdflush 4134
+#define __NR_sysfs 4135
+#define __NR_personality 4136
+#define __NR_afs_syscall 4137
+#define __NR_setfsuid 4138
+#define __NR_setfsgid 4139
+#define __NR__llseek 4140
+#define __NR_getdents 4141
+#define __NR_select 4142
+#define __NR_flock 4143
+#define __NR_msync 4144
+#define __NR_readv 4145
+#define __NR_writev 4146
+#define __NR_cacheflush 4147
+#define __NR_cachectl 4148
+#define __NR_sysmips 4149
+#define __NR_unused150 4150
+#define __NR_getsid 4151
+#define __NR_fdatasync 4152
+#define __NR__sysctl 4153
+#define __NR_mlock 4154
+#define __NR_munlock 4155
+#define __NR_mlockall 4156
+#define __NR_munlockall 4157
+#define __NR_sched_setparam 4158
+#define __NR_sched_getparam 4159
+#define __NR_sched_setscheduler 4160
+#define __NR_sched_getscheduler 4161
+#define __NR_sched_yield 4162
+#define __NR_sched_get_priority_max 4163
+#define __NR_sched_get_priority_min 4164
+#define __NR_sched_rr_get_interval 4165
+#define __NR_nanosleep 4166
+#define __NR_mremap 4167
+#define __NR_accept 4168
+#define __NR_bind 4169
+#define __NR_connect 4170
+#define __NR_getpeername 4171
+#define __NR_getsockname 4172
+#define __NR_getsockopt 4173
+#define __NR_listen 4174
+#define __NR_recv 4175
+#define __NR_recvfrom 4176
+#define __NR_recvmsg 4177
+#define __NR_send 4178
+#define __NR_sendmsg 4179
+#define __NR_sendto 4180
+#define __NR_setsockopt 4181
+#define __NR_shutdown 4182
+#define __NR_socket 4183
+#define __NR_socketpair 4184
+#define __NR_setresuid 4185
+#define __NR_getresuid 4186
+#define __NR_query_module 4187
+#define __NR_poll 4188
+#define __NR_nfsservctl 4189
+#define __NR_setresgid 4190
+#define __NR_getresgid 4191
+#define __NR_prctl 4192
+#define __NR_rt_sigreturn 4193
+#define __NR_rt_sigaction 4194
+#define __NR_rt_sigprocmask 4195
+#define __NR_rt_sigpending 4196
+#define __NR_rt_sigtimedwait 4197
+#define __NR_rt_sigqueueinfo 4198
+#define __NR_rt_sigsuspend 4199
+#define __NR_pread 4200
+#define __NR_pwrite 4201
+#define __NR_chown 4202
+#define __NR_getcwd 4203
+#define __NR_capget 4204
+#define __NR_capset 4205
+#define __NR_sigaltstack 4206
+#define __NR_sendfile 4207
+#define __NR_getpmsg 4208
+#define __NR_putpmsg 4209
+#define __NR_mmap2 4210
+#define __NR_truncate64 4211
+#define __NR_ftruncate64 4212
+#define __NR_stat64 4213
+#define __NR_lstat64 4214
+#define __NR_fstat64 4215
+#define __NR_pivot_root 4216
+#define __NR_mincore 4217
+#define __NR_madvise 4218
+#define __NR_getdents64 4219
+#define __NR_fcntl64 4220
+#define __NR_reserved221 4221
+#define __NR_gettid 4222
+#define __NR_readahead 4223
+#define __NR_setxattr 4224
+#define __NR_lsetxattr 4225
+#define __NR_fsetxattr 4226
+#define __NR_getxattr 4227
+#define __NR_lgetxattr 4228
+#define __NR_fgetxattr 4229
+#define __NR_listxattr 4230
+#define __NR_llistxattr 4231
+#define __NR_flistxattr 4232
+#define __NR_removexattr 4233
+#define __NR_lremovexattr 4234
+#define __NR_fremovexattr 4235
+#define __NR_tkill 4236
+#define __NR_sendfile64 4237
+#define __NR_futex 4238
+#define __NR_sched_setaffinity 4239
+#define __NR_sched_getaffinity 4240
+#define __NR_io_setup 4241
+#define __NR_io_destroy 4242
+#define __NR_io_getevents 4243
+#define __NR_io_submit 4244
+#define __NR_io_cancel 4245
+#define __NR_exit_group 4246
+#define __NR_lookup_dcookie 4247
+#define __NR_epoll_create 4248
+#define __NR_epoll_ctl 4249
+#define __NR_epoll_wait 4250
+#define __NR_remap_file_pages 4251
+#define __NR_set_tid_address 4252
+#define __NR_restart_syscall 4253
+#define __NR_fadvise 4254
+#define __NR_statfs64 4255
+#define __NR_fstatfs64 4256
+#define __NR_timer_create 4257
+#define __NR_timer_settime 4258
+#define __NR_timer_gettime 4259
+#define __NR_timer_getoverrun 4260
+#define __NR_timer_delete 4261
+#define __NR_clock_settime 4262
+#define __NR_clock_gettime 4263
+#define __NR_clock_getres 4264
+#define __NR_clock_nanosleep 4265
+#define __NR_tgkill 4266
+#define __NR_utimes 4267
+#define __NR_mbind 4268
+#define __NR_get_mempolicy 4269
+#define __NR_set_mempolicy 4270
+#define __NR_mq_open 4271
+#define __NR_mq_unlink 4272
+#define __NR_mq_timedsend 4273
+#define __NR_mq_timedreceive 4274
+#define __NR_mq_notify 4275
+#define __NR_mq_getsetattr 4276
+#define __NR_vserver 4277
+#define __NR_waitid 4278
+#define __NR_add_key 4280
+#define __NR_request_key 4281
+#define __NR_keyctl 4282
+#define __NR_set_thread_area 4283
+#define __NR_inotify_init 4284
+#define __NR_inotify_add_watch 4285
+#define __NR_inotify_rm_watch 4286
+#define __NR_migrate_pages 4287
+#define __NR_openat 4288
+#define __NR_mkdirat 4289
+#define __NR_mknodat 4290
+#define __NR_fchownat 4291
+#define __NR_futimesat 4292
+#define __NR_fstatat 4293
+#define __NR_unlinkat 4294
+#define __NR_renameat 4295
+#define __NR_linkat 4296
+#define __NR_symlinkat 4297
+#define __NR_readlinkat 4298
+#define __NR_fchmodat 4299
+#define __NR_faccessat 4300
+#define __NR_pselect6 4301
+#define __NR_ppoll 4302
+#define __NR_unshare 4303
+#define __NR_splice 4304
+#define __NR_sync_file_range 4305
+#define __NR_tee 4306
+#define __NR_vmsplice 4307
+#define __NR_move_pages 4308
+#define __NR_set_robust_list 4309
+#define __NR_get_robust_list 4310
+#define __NR_kexec_load 4311
+#define __NR_getcpu 4312
+#define __NR_epoll_pwait 4313
+#define __NR_ioprio_set 4314
+#define __NR_ioprio_get 4315
+#define __NR_utimensat 4316
+#define __NR_signalfd 4317
+#define __NR_timerfd 4318
+#define __NR_eventfd 4319
+#define __NR_fallocate 4320
+#define __NR_timerfd_create 4321
+#define __NR_timerfd_gettime 4322
+#define __NR_timerfd_settime 4323
+#define __NR_signalfd4 4324
+#define __NR_eventfd2 4325
+#define __NR_epoll_create1 4326
+#define __NR_dup3 4327
+#define __NR_pipe2 4328
+#define __NR_inotify_init1 4329
+#define __NR_preadv 4330
+#define __NR_pwritev 4331
+#define __NR_rt_tgsigqueueinfo 4332
+#define __NR_perf_event_open 4333
+#define __NR_accept4 4334
+#define __NR_recvmmsg 4335
+#define __NR_fanotify_init 4336
+#define __NR_fanotify_mark 4337
+#define __NR_prlimit64 4338
+#define __NR_name_to_handle_at 4339
+#define __NR_open_by_handle_at 4340
+#define __NR_clock_adjtime 4341
+#define __NR_syncfs 4342
+#define __NR_sendmmsg 4343
+#define __NR_setns 4344
+#define __NR_process_vm_readv 4345
+#define __NR_process_vm_writev 4346
+#define __NR_kcmp 4347
+#define __NR_finit_module 4348
+#define __NR_sched_setattr 4349
+#define __NR_sched_getattr 4350
+#define __NR_renameat2 4351
+#define __NR_seccomp 4352
+#define __NR_getrandom 4353
+#define __NR_memfd_create 4354
+#define __NR_bpf 4355
+#define __NR_execveat 4356
+#define __NR_userfaultfd 4357
+#define __NR_membarrier 4358
+#define __NR_mlock2 4359
 
 /* Repeated with SYS_ prefix */
-#define SYS_syscall                 4000
-#define SYS_exit                    4001
-#define SYS_fork                    4002
-#define SYS_read                    4003
-#define SYS_write                   4004
-#define SYS_open                    4005
-#define SYS_close                   4006
-#define SYS_waitpid                 4007
-#define SYS_creat                   4008
-#define SYS_link                    4009
-#define SYS_unlink                  4010
-#define SYS_execve                  4011
-#define SYS_chdir                   4012
-#define SYS_time                    4013
-#define SYS_mknod                   4014
-#define SYS_chmod                   4015
-#define SYS_lchown                  4016
-#define SYS_break                   4017
-#define SYS_unused18                4018
-#define SYS_lseek                   4019
-#define SYS_getpid                  4020
-#define SYS_mount                   4021
-#define SYS_umount                  4022
-#define SYS_setuid                  4023
-#define SYS_getuid                  4024
-#define SYS_stime                   4025
-#define SYS_ptrace                  4026
-#define SYS_alarm                   4027
-#define SYS_unused28                4028
-#define SYS_pause                   4029
-#define SYS_utime                   4030
-#define SYS_stty                    4031
-#define SYS_gtty                    4032
-#define SYS_access                  4033
-#define SYS_nice                    4034
-#define SYS_ftime                   4035
-#define SYS_sync                    4036
-#define SYS_kill                    4037
-#define SYS_rename                  4038
-#define SYS_mkdir                   4039
-#define SYS_rmdir                   4040
-#define SYS_dup                     4041
-#define SYS_pipe                    4042
-#define SYS_times                   4043
-#define SYS_prof                    4044
-#define SYS_brk                     4045
-#define SYS_setgid                  4046
-#define SYS_getgid                  4047
-#define SYS_signal                  4048
-#define SYS_geteuid                 4049
-#define SYS_getegid                 4050
-#define SYS_acct                    4051
-#define SYS_umount2                 4052
-#define SYS_lock                    4053
-#define SYS_ioctl                   4054
-#define SYS_fcntl                   4055
-#define SYS_mpx                     4056
-#define SYS_setpgid                 4057
-#define SYS_ulimit                  4058
-#define SYS_unused59                4059
-#define SYS_umask                   4060
-#define SYS_chroot                  4061
-#define SYS_ustat                   4062
-#define SYS_dup2                    4063
-#define SYS_getppid                 4064
-#define SYS_getpgrp                 4065
-#define SYS_setsid                  4066
-#define SYS_sigaction               4067
-#define SYS_sgetmask                4068
-#define SYS_ssetmask                4069
-#define SYS_setreuid                4070
-#define SYS_setregid                4071
-#define SYS_sigsuspend              4072
-#define SYS_sigpending              4073
-#define SYS_sethostname             4074
-#define SYS_setrlimit               4075
-#define SYS_getrlimit               4076
-#define SYS_getrusage               4077
-#define SYS_gettimeofday            4078
-#define SYS_settimeofday            4079
-#define SYS_getgroups               4080
-#define SYS_setgroups               4081
-#define SYS_reserved82              4082
-#define SYS_symlink                 4083
-#define SYS_unused84                4084
-#define SYS_readlink                4085
-#define SYS_uselib                  4086
-#define SYS_swapon                  4087
-#define SYS_reboot                  4088
-#define SYS_readdir                 4089
-#define SYS_mmap                    4090
-#define SYS_munmap                  4091
-#define SYS_truncate                4092
-#define SYS_ftruncate               4093
-#define SYS_fchmod                  4094
-#define SYS_fchown                  4095
-#define SYS_getpriority             4096
-#define SYS_setpriority             4097
-#define SYS_profil                  4098
-#define SYS_statfs                  4099
-#define SYS_fstatfs                 4100
-#define SYS_ioperm                  4101
-#define SYS_socketcall              4102
-#define SYS_syslog                  4103
-#define SYS_setitimer               4104
-#define SYS_getitimer               4105
-#define SYS_stat                    4106
-#define SYS_lstat                   4107
-#define SYS_fstat                   4108
-#define SYS_unused109               4109
-#define SYS_iopl                    4110
-#define SYS_vhangup                 4111
-#define SYS_idle                    4112
-#define SYS_vm86                    4113
-#define SYS_wait4                   4114
-#define SYS_swapoff                 4115
-#define SYS_sysinfo                 4116
-#define SYS_ipc                     4117
-#define SYS_fsync                   4118
-#define SYS_sigreturn               4119
-#define SYS_clone                   4120
-#define SYS_setdomainname           4121
-#define SYS_uname                   4122
-#define SYS_modify_ldt              4123
-#define SYS_adjtimex                4124
-#define SYS_mprotect                4125
-#define SYS_sigprocmask             4126
-#define SYS_create_module           4127
-#define SYS_init_module             4128
-#define SYS_delete_module           4129
-#define SYS_get_kernel_syms         4130
-#define SYS_quotactl                4131
-#define SYS_getpgid                 4132
-#define SYS_fchdir                  4133
-#define SYS_bdflush                 4134
-#define SYS_sysfs                   4135
-#define SYS_personality             4136
-#define SYS_afs_syscall             4137
-#define SYS_setfsuid                4138
-#define SYS_setfsgid                4139
-#define SYS__llseek                 4140
-#define SYS_getdents                4141
-#define SYS_select                  4142
-#define SYS_flock                   4143
-#define SYS_msync                   4144
-#define SYS_readv                   4145
-#define SYS_writev                  4146
-#define SYS_cacheflush              4147
-#define SYS_cachectl                4148
-#define SYS_sysmips                 4149
-#define SYS_unused150               4150
-#define SYS_getsid                  4151
-#define SYS_fdatasync               4152
-#define SYS__sysctl                 4153
-#define SYS_mlock                   4154
-#define SYS_munlock                 4155
-#define SYS_mlockall                4156
-#define SYS_munlockall              4157
-#define SYS_sched_setparam          4158
-#define SYS_sched_getparam          4159
-#define SYS_sched_setscheduler      4160
-#define SYS_sched_getscheduler      4161
-#define SYS_sched_yield             4162
-#define SYS_sched_get_priority_max  4163
-#define SYS_sched_get_priority_min  4164
-#define SYS_sched_rr_get_interval   4165
-#define SYS_nanosleep               4166
-#define SYS_mremap                  4167
-#define SYS_accept                  4168
-#define SYS_bind                    4169
-#define SYS_connect                 4170
-#define SYS_getpeername             4171
-#define SYS_getsockname             4172
-#define SYS_getsockopt              4173
-#define SYS_listen                  4174
-#define SYS_recv                    4175
-#define SYS_recvfrom                4176
-#define SYS_recvmsg                 4177
-#define SYS_send                    4178
-#define SYS_sendmsg                 4179
-#define SYS_sendto                  4180
-#define SYS_setsockopt              4181
-#define SYS_shutdown                4182
-#define SYS_socket                  4183
-#define SYS_socketpair              4184
-#define SYS_setresuid               4185
-#define SYS_getresuid               4186
-#define SYS_query_module            4187
-#define SYS_poll                    4188
-#define SYS_nfsservctl              4189
-#define SYS_setresgid               4190
-#define SYS_getresgid               4191
-#define SYS_prctl                   4192
-#define SYS_rt_sigreturn            4193
-#define SYS_rt_sigaction            4194
-#define SYS_rt_sigprocmask          4195
-#define SYS_rt_sigpending           4196
-#define SYS_rt_sigtimedwait         4197
-#define SYS_rt_sigqueueinfo         4198
-#define SYS_rt_sigsuspend           4199
-#define SYS_pread                   4200
-#define SYS_pwrite                  4201
-#define SYS_chown                   4202
-#define SYS_getcwd                  4203
-#define SYS_capget                  4204
-#define SYS_capset                  4205
-#define SYS_sigaltstack             4206
-#define SYS_sendfile                4207
-#define SYS_getpmsg                 4208
-#define SYS_putpmsg                 4209
-#define SYS_mmap2                   4210
-#define SYS_truncate64              4211
-#define SYS_ftruncate64             4212
-#define SYS_stat64                  4213
-#define SYS_lstat64                 4214
-#define SYS_fstat64                 4215
-#define SYS_pivot_root              4216
-#define SYS_mincore                 4217
-#define SYS_madvise                 4218
-#define SYS_getdents64              4219
-#define SYS_fcntl64                 4220
-#define SYS_reserved221             4221
-#define SYS_gettid                  4222
-#define SYS_readahead               4223
-#define SYS_setxattr                4224
-#define SYS_lsetxattr               4225
-#define SYS_fsetxattr               4226
-#define SYS_getxattr                4227
-#define SYS_lgetxattr               4228
-#define SYS_fgetxattr               4229
-#define SYS_listxattr               4230
-#define SYS_llistxattr              4231
-#define SYS_flistxattr              4232
-#define SYS_removexattr             4233
-#define SYS_lremovexattr            4234
-#define SYS_fremovexattr            4235
-#define SYS_tkill                   4236
-#define SYS_sendfile64              4237
-#define SYS_futex                   4238
-#define SYS_sched_setaffinity       4239
-#define SYS_sched_getaffinity       4240
-#define SYS_io_setup                4241
-#define SYS_io_destroy              4242
-#define SYS_io_getevents            4243
-#define SYS_io_submit               4244
-#define SYS_io_cancel               4245
-#define SYS_exit_group              4246
-#define SYS_lookup_dcookie          4247
-#define SYS_epoll_create            4248
-#define SYS_epoll_ctl               4249
-#define SYS_epoll_wait              4250
-#define SYS_remap_file_pages        4251
-#define SYS_set_tid_address         4252
-#define SYS_restart_syscall         4253
-#define SYS_fadvise                 4254
-#define SYS_statfs64                4255
-#define SYS_fstatfs64               4256
-#define SYS_timer_create            4257
-#define SYS_timer_settime           4258
-#define SYS_timer_gettime           4259
-#define SYS_timer_getoverrun        4260
-#define SYS_timer_delete            4261
-#define SYS_clock_settime           4262
-#define SYS_clock_gettime           4263
-#define SYS_clock_getres            4264
-#define SYS_clock_nanosleep         4265
-#define SYS_tgkill                  4266
-#define SYS_utimes                  4267
-#define SYS_mbind                   4268
-#define SYS_get_mempolicy           4269
-#define SYS_set_mempolicy           4270
-#define SYS_mq_open                 4271
-#define SYS_mq_unlink               4272
-#define SYS_mq_timedsend            4273
-#define SYS_mq_timedreceive         4274
-#define SYS_mq_notify               4275
-#define SYS_mq_getsetattr           4276
-#define SYS_vserver                 4277
-#define SYS_waitid                  4278
-#define SYS_add_key                 4280
-#define SYS_request_key             4281
-#define SYS_keyctl                  4282
-#define SYS_set_thread_area         4283
-#define SYS_inotify_init            4284
-#define SYS_inotify_add_watch       4285
-#define SYS_inotify_rm_watch        4286
-#define SYS_migrate_pages           4287
-#define SYS_openat                  4288
-#define SYS_mkdirat                 4289
-#define SYS_mknodat                 4290
-#define SYS_fchownat                4291
-#define SYS_futimesat               4292
-#define SYS_fstatat                 4293
-#define SYS_unlinkat                4294
-#define SYS_renameat                4295
-#define SYS_linkat                  4296
-#define SYS_symlinkat               4297
-#define SYS_readlinkat              4298
-#define SYS_fchmodat                4299
-#define SYS_faccessat               4300
-#define SYS_pselect6                4301
-#define SYS_ppoll                   4302
-#define SYS_unshare                 4303
-#define SYS_splice                  4304
-#define SYS_sync_file_range         4305
-#define SYS_tee                     4306
-#define SYS_vmsplice                4307
-#define SYS_move_pages              4308
-#define SYS_set_robust_list         4309
-#define SYS_get_robust_list         4310
-#define SYS_kexec_load              4311
-#define SYS_getcpu                  4312
-#define SYS_epoll_pwait             4313
-#define SYS_ioprio_set              4314
-#define SYS_ioprio_get              4315
-#define SYS_utimensat               4316
-#define SYS_signalfd                4317
-#define SYS_timerfd                 4318
-#define SYS_eventfd                 4319
-#define SYS_fallocate               4320
-#define SYS_timerfd_create          4321
-#define SYS_timerfd_gettime         4322
-#define SYS_timerfd_settime         4323
-#define SYS_signalfd4               4324
-#define SYS_eventfd2                4325
-#define SYS_epoll_create1           4326
-#define SYS_dup3                    4327
-#define SYS_pipe2                   4328
-#define SYS_inotify_init1           4329
-#define SYS_preadv                  4330
-#define SYS_pwritev                 4331
-#define SYS_rt_tgsigqueueinfo       4332
-#define SYS_perf_event_open         4333
-#define SYS_accept4                 4334
-#define SYS_recvmmsg                4335
-#define SYS_fanotify_init           4336
-#define SYS_fanotify_mark           4337
-#define SYS_prlimit64               4338
-#define SYS_name_to_handle_at       4339
-#define SYS_open_by_handle_at       4340
-#define SYS_clock_adjtime           4341
-#define SYS_syncfs                  4342
-#define SYS_sendmmsg                4343
-#define SYS_setns                   4344
-#define SYS_process_vm_readv        4345
-#define SYS_process_vm_writev       4346
-#define SYS_kcmp                    4347
-#define SYS_finit_module            4348
-#define SYS_sched_setattr           4349
-#define SYS_sched_getattr           4350
-#define SYS_renameat2               4351
-#define SYS_seccomp                 4352
-#define SYS_getrandom               4353
-#define SYS_memfd_create            4354
-#define SYS_bpf                     4355
-#define SYS_execveat                4356
-#define SYS_userfaultfd             4357
-#define SYS_membarrier              4358
-#define SYS_mlock2                  4359
+#define SYS_syscall 4000
+#define SYS_exit 4001
+#define SYS_fork 4002
+#define SYS_read 4003
+#define SYS_write 4004
+#define SYS_open 4005
+#define SYS_close 4006
+#define SYS_waitpid 4007
+#define SYS_creat 4008
+#define SYS_link 4009
+#define SYS_unlink 4010
+#define SYS_execve 4011
+#define SYS_chdir 4012
+#define SYS_time 4013
+#define SYS_mknod 4014
+#define SYS_chmod 4015
+#define SYS_lchown 4016
+#define SYS_break 4017
+#define SYS_unused18 4018
+#define SYS_lseek 4019
+#define SYS_getpid 4020
+#define SYS_mount 4021
+#define SYS_umount 4022
+#define SYS_setuid 4023
+#define SYS_getuid 4024
+#define SYS_stime 4025
+#define SYS_ptrace 4026
+#define SYS_alarm 4027
+#define SYS_unused28 4028
+#define SYS_pause 4029
+#define SYS_utime 4030
+#define SYS_stty 4031
+#define SYS_gtty 4032
+#define SYS_access 4033
+#define SYS_nice 4034
+#define SYS_ftime 4035
+#define SYS_sync 4036
+#define SYS_kill 4037
+#define SYS_rename 4038
+#define SYS_mkdir 4039
+#define SYS_rmdir 4040
+#define SYS_dup 4041
+#define SYS_pipe 4042
+#define SYS_times 4043
+#define SYS_prof 4044
+#define SYS_brk 4045
+#define SYS_setgid 4046
+#define SYS_getgid 4047
+#define SYS_signal 4048
+#define SYS_geteuid 4049
+#define SYS_getegid 4050
+#define SYS_acct 4051
+#define SYS_umount2 4052
+#define SYS_lock 4053
+#define SYS_ioctl 4054
+#define SYS_fcntl 4055
+#define SYS_mpx 4056
+#define SYS_setpgid 4057
+#define SYS_ulimit 4058
+#define SYS_unused59 4059
+#define SYS_umask 4060
+#define SYS_chroot 4061
+#define SYS_ustat 4062
+#define SYS_dup2 4063
+#define SYS_getppid 4064
+#define SYS_getpgrp 4065
+#define SYS_setsid 4066
+#define SYS_sigaction 4067
+#define SYS_sgetmask 4068
+#define SYS_ssetmask 4069
+#define SYS_setreuid 4070
+#define SYS_setregid 4071
+#define SYS_sigsuspend 4072
+#define SYS_sigpending 4073
+#define SYS_sethostname 4074
+#define SYS_setrlimit 4075
+#define SYS_getrlimit 4076
+#define SYS_getrusage 4077
+#define SYS_gettimeofday 4078
+#define SYS_settimeofday 4079
+#define SYS_getgroups 4080
+#define SYS_setgroups 4081
+#define SYS_reserved82 4082
+#define SYS_symlink 4083
+#define SYS_unused84 4084
+#define SYS_readlink 4085
+#define SYS_uselib 4086
+#define SYS_swapon 4087
+#define SYS_reboot 4088
+#define SYS_readdir 4089
+#define SYS_mmap 4090
+#define SYS_munmap 4091
+#define SYS_truncate 4092
+#define SYS_ftruncate 4093
+#define SYS_fchmod 4094
+#define SYS_fchown 4095
+#define SYS_getpriority 4096
+#define SYS_setpriority 4097
+#define SYS_profil 4098
+#define SYS_statfs 4099
+#define SYS_fstatfs 4100
+#define SYS_ioperm 4101
+#define SYS_socketcall 4102
+#define SYS_syslog 4103
+#define SYS_setitimer 4104
+#define SYS_getitimer 4105
+#define SYS_stat 4106
+#define SYS_lstat 4107
+#define SYS_fstat 4108
+#define SYS_unused109 4109
+#define SYS_iopl 4110
+#define SYS_vhangup 4111
+#define SYS_idle 4112
+#define SYS_vm86 4113
+#define SYS_wait4 4114
+#define SYS_swapoff 4115
+#define SYS_sysinfo 4116
+#define SYS_ipc 4117
+#define SYS_fsync 4118
+#define SYS_sigreturn 4119
+#define SYS_clone 4120
+#define SYS_setdomainname 4121
+#define SYS_uname 4122
+#define SYS_modify_ldt 4123
+#define SYS_adjtimex 4124
+#define SYS_mprotect 4125
+#define SYS_sigprocmask 4126
+#define SYS_create_module 4127
+#define SYS_init_module 4128
+#define SYS_delete_module 4129
+#define SYS_get_kernel_syms 4130
+#define SYS_quotactl 4131
+#define SYS_getpgid 4132
+#define SYS_fchdir 4133
+#define SYS_bdflush 4134
+#define SYS_sysfs 4135
+#define SYS_personality 4136
+#define SYS_afs_syscall 4137
+#define SYS_setfsuid 4138
+#define SYS_setfsgid 4139
+#define SYS__llseek 4140
+#define SYS_getdents 4141
+#define SYS_select 4142
+#define SYS_flock 4143
+#define SYS_msync 4144
+#define SYS_readv 4145
+#define SYS_writev 4146
+#define SYS_cacheflush 4147
+#define SYS_cachectl 4148
+#define SYS_sysmips 4149
+#define SYS_unused150 4150
+#define SYS_getsid 4151
+#define SYS_fdatasync 4152
+#define SYS__sysctl 4153
+#define SYS_mlock 4154
+#define SYS_munlock 4155
+#define SYS_mlockall 4156
+#define SYS_munlockall 4157
+#define SYS_sched_setparam 4158
+#define SYS_sched_getparam 4159
+#define SYS_sched_setscheduler 4160
+#define SYS_sched_getscheduler 4161
+#define SYS_sched_yield 4162
+#define SYS_sched_get_priority_max 4163
+#define SYS_sched_get_priority_min 4164
+#define SYS_sched_rr_get_interval 4165
+#define SYS_nanosleep 4166
+#define SYS_mremap 4167
+#define SYS_accept 4168
+#define SYS_bind 4169
+#define SYS_connect 4170
+#define SYS_getpeername 4171
+#define SYS_getsockname 4172
+#define SYS_getsockopt 4173
+#define SYS_listen 4174
+#define SYS_recv 4175
+#define SYS_recvfrom 4176
+#define SYS_recvmsg 4177
+#define SYS_send 4178
+#define SYS_sendmsg 4179
+#define SYS_sendto 4180
+#define SYS_setsockopt 4181
+#define SYS_shutdown 4182
+#define SYS_socket 4183
+#define SYS_socketpair 4184
+#define SYS_setresuid 4185
+#define SYS_getresuid 4186
+#define SYS_query_module 4187
+#define SYS_poll 4188
+#define SYS_nfsservctl 4189
+#define SYS_setresgid 4190
+#define SYS_getresgid 4191
+#define SYS_prctl 4192
+#define SYS_rt_sigreturn 4193
+#define SYS_rt_sigaction 4194
+#define SYS_rt_sigprocmask 4195
+#define SYS_rt_sigpending 4196
+#define SYS_rt_sigtimedwait 4197
+#define SYS_rt_sigqueueinfo 4198
+#define SYS_rt_sigsuspend 4199
+#define SYS_pread 4200
+#define SYS_pwrite 4201
+#define SYS_chown 4202
+#define SYS_getcwd 4203
+#define SYS_capget 4204
+#define SYS_capset 4205
+#define SYS_sigaltstack 4206
+#define SYS_sendfile 4207
+#define SYS_getpmsg 4208
+#define SYS_putpmsg 4209
+#define SYS_mmap2 4210
+#define SYS_truncate64 4211
+#define SYS_ftruncate64 4212
+#define SYS_stat64 4213
+#define SYS_lstat64 4214
+#define SYS_fstat64 4215
+#define SYS_pivot_root 4216
+#define SYS_mincore 4217
+#define SYS_madvise 4218
+#define SYS_getdents64 4219
+#define SYS_fcntl64 4220
+#define SYS_reserved221 4221
+#define SYS_gettid 4222
+#define SYS_readahead 4223
+#define SYS_setxattr 4224
+#define SYS_lsetxattr 4225
+#define SYS_fsetxattr 4226
+#define SYS_getxattr 4227
+#define SYS_lgetxattr 4228
+#define SYS_fgetxattr 4229
+#define SYS_listxattr 4230
+#define SYS_llistxattr 4231
+#define SYS_flistxattr 4232
+#define SYS_removexattr 4233
+#define SYS_lremovexattr 4234
+#define SYS_fremovexattr 4235
+#define SYS_tkill 4236
+#define SYS_sendfile64 4237
+#define SYS_futex 4238
+#define SYS_sched_setaffinity 4239
+#define SYS_sched_getaffinity 4240
+#define SYS_io_setup 4241
+#define SYS_io_destroy 4242
+#define SYS_io_getevents 4243
+#define SYS_io_submit 4244
+#define SYS_io_cancel 4245
+#define SYS_exit_group 4246
+#define SYS_lookup_dcookie 4247
+#define SYS_epoll_create 4248
+#define SYS_epoll_ctl 4249
+#define SYS_epoll_wait 4250
+#define SYS_remap_file_pages 4251
+#define SYS_set_tid_address 4252
+#define SYS_restart_syscall 4253
+#define SYS_fadvise 4254
+#define SYS_statfs64 4255
+#define SYS_fstatfs64 4256
+#define SYS_timer_create 4257
+#define SYS_timer_settime 4258
+#define SYS_timer_gettime 4259
+#define SYS_timer_getoverrun 4260
+#define SYS_timer_delete 4261
+#define SYS_clock_settime 4262
+#define SYS_clock_gettime 4263
+#define SYS_clock_getres 4264
+#define SYS_clock_nanosleep 4265
+#define SYS_tgkill 4266
+#define SYS_utimes 4267
+#define SYS_mbind 4268
+#define SYS_get_mempolicy 4269
+#define SYS_set_mempolicy 4270
+#define SYS_mq_open 4271
+#define SYS_mq_unlink 4272
+#define SYS_mq_timedsend 4273
+#define SYS_mq_timedreceive 4274
+#define SYS_mq_notify 4275
+#define SYS_mq_getsetattr 4276
+#define SYS_vserver 4277
+#define SYS_waitid 4278
+#define SYS_add_key 4280
+#define SYS_request_key 4281
+#define SYS_keyctl 4282
+#define SYS_set_thread_area 4283
+#define SYS_inotify_init 4284
+#define SYS_inotify_add_watch 4285
+#define SYS_inotify_rm_watch 4286
+#define SYS_migrate_pages 4287
+#define SYS_openat 4288
+#define SYS_mkdirat 4289
+#define SYS_mknodat 4290
+#define SYS_fchownat 4291
+#define SYS_futimesat 4292
+#define SYS_fstatat 4293
+#define SYS_unlinkat 4294
+#define SYS_renameat 4295
+#define SYS_linkat 4296
+#define SYS_symlinkat 4297
+#define SYS_readlinkat 4298
+#define SYS_fchmodat 4299
+#define SYS_faccessat 4300
+#define SYS_pselect6 4301
+#define SYS_ppoll 4302
+#define SYS_unshare 4303
+#define SYS_splice 4304
+#define SYS_sync_file_range 4305
+#define SYS_tee 4306
+#define SYS_vmsplice 4307
+#define SYS_move_pages 4308
+#define SYS_set_robust_list 4309
+#define SYS_get_robust_list 4310
+#define SYS_kexec_load 4311
+#define SYS_getcpu 4312
+#define SYS_epoll_pwait 4313
+#define SYS_ioprio_set 4314
+#define SYS_ioprio_get 4315
+#define SYS_utimensat 4316
+#define SYS_signalfd 4317
+#define SYS_timerfd 4318
+#define SYS_eventfd 4319
+#define SYS_fallocate 4320
+#define SYS_timerfd_create 4321
+#define SYS_timerfd_gettime 4322
+#define SYS_timerfd_settime 4323
+#define SYS_signalfd4 4324
+#define SYS_eventfd2 4325
+#define SYS_epoll_create1 4326
+#define SYS_dup3 4327
+#define SYS_pipe2 4328
+#define SYS_inotify_init1 4329
+#define SYS_preadv 4330
+#define SYS_pwritev 4331
+#define SYS_rt_tgsigqueueinfo 4332
+#define SYS_perf_event_open 4333
+#define SYS_accept4 4334
+#define SYS_recvmmsg 4335
+#define SYS_fanotify_init 4336
+#define SYS_fanotify_mark 4337
+#define SYS_prlimit64 4338
+#define SYS_name_to_handle_at 4339
+#define SYS_open_by_handle_at 4340
+#define SYS_clock_adjtime 4341
+#define SYS_syncfs 4342
+#define SYS_sendmmsg 4343
+#define SYS_setns 4344
+#define SYS_process_vm_readv 4345
+#define SYS_process_vm_writev 4346
+#define SYS_kcmp 4347
+#define SYS_finit_module 4348
+#define SYS_sched_setattr 4349
+#define SYS_sched_getattr 4350
+#define SYS_renameat2 4351
+#define SYS_seccomp 4352
+#define SYS_getrandom 4353
+#define SYS_memfd_create 4354
+#define SYS_bpf 4355
+#define SYS_execveat 4356
+#define SYS_userfaultfd 4357
+#define SYS_membarrier 4358
+#define SYS_mlock2 4359
diff --git a/fusl/arch/mips/bits/termios.h b/fusl/arch/mips/bits/termios.h
index 487c1d4..2ca0fac 100644
--- a/fusl/arch/mips/bits/termios.h
+++ b/fusl/arch/mips/bits/termios.h
@@ -1,109 +1,108 @@
-struct termios
-{
-	tcflag_t c_iflag;
-	tcflag_t c_oflag;
-	tcflag_t c_cflag;
-	tcflag_t c_lflag;
-	cc_t c_line;
-	cc_t c_cc[NCCS];
-	speed_t __c_ispeed;
-	speed_t __c_ospeed;
+struct termios {
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
+  cc_t c_line;
+  cc_t c_cc[NCCS];
+  speed_t __c_ispeed;
+  speed_t __c_ospeed;
 };
 
-#define VINTR     0
-#define VQUIT     1
-#define VERASE    2
-#define VKILL     3
-#define VMIN      4
-#define VTIME     5
-#define VEOL2     6
-#define VSWTC     7
-#define VSWTCH    7
-#define VSTART    8
-#define VSTOP     9
-#define VSUSP    10
+#define VINTR 0
+#define VQUIT 1
+#define VERASE 2
+#define VKILL 3
+#define VMIN 4
+#define VTIME 5
+#define VEOL2 6
+#define VSWTC 7
+#define VSWTCH 7
+#define VSTART 8
+#define VSTOP 9
+#define VSUSP 10
 #define VREPRINT 12
 #define VDISCARD 13
-#define VWERASE  14
-#define VLNEXT   15
-#define VEOF     16
-#define VEOL     17
+#define VWERASE 14
+#define VLNEXT 15
+#define VEOF 16
+#define VEOL 17
 
-#define IGNBRK  0000001
-#define BRKINT  0000002
-#define IGNPAR  0000004
-#define PARMRK  0000010
-#define INPCK   0000020
-#define ISTRIP  0000040
-#define INLCR   0000100
-#define IGNCR   0000200
-#define ICRNL   0000400
-#define IUCLC   0001000
-#define IXON    0002000
-#define IXANY   0004000
-#define IXOFF   0010000
+#define IGNBRK 0000001
+#define BRKINT 0000002
+#define IGNPAR 0000004
+#define PARMRK 0000010
+#define INPCK 0000020
+#define ISTRIP 0000040
+#define INLCR 0000100
+#define IGNCR 0000200
+#define ICRNL 0000400
+#define IUCLC 0001000
+#define IXON 0002000
+#define IXANY 0004000
+#define IXOFF 0010000
 #define IMAXBEL 0020000
-#define IUTF8   0040000
+#define IUTF8 0040000
 
-#define OPOST  0000001
-#define OLCUC  0000002
-#define ONLCR  0000004
-#define OCRNL  0000010
-#define ONOCR  0000020
+#define OPOST 0000001
+#define OLCUC 0000002
+#define ONLCR 0000004
+#define OCRNL 0000010
+#define ONOCR 0000020
 #define ONLRET 0000040
-#define OFILL  0000100
-#define OFDEL  0000200
-#define NLDLY  0000400
-#define NL0    0000000
-#define NL1    0000400
-#define CRDLY  0003000
-#define CR0    0000000
-#define CR1    0001000
-#define CR2    0002000
-#define CR3    0003000
+#define OFILL 0000100
+#define OFDEL 0000200
+#define NLDLY 0000400
+#define NL0 0000000
+#define NL1 0000400
+#define CRDLY 0003000
+#define CR0 0000000
+#define CR1 0001000
+#define CR2 0002000
+#define CR3 0003000
 #define TABDLY 0014000
-#define TAB0   0000000
-#define TAB1   0004000
-#define TAB2   0010000
-#define TAB3   0014000
-#define BSDLY  0020000
-#define BS0    0000000
-#define BS1    0020000
-#define FFDLY  0100000
-#define FF0    0000000
-#define FF1    0100000
+#define TAB0 0000000
+#define TAB1 0004000
+#define TAB2 0010000
+#define TAB3 0014000
+#define BSDLY 0020000
+#define BS0 0000000
+#define BS1 0020000
+#define FFDLY 0100000
+#define FF0 0000000
+#define FF1 0100000
 
-#define VTDLY  0040000
-#define VT0    0000000
-#define VT1    0040000
+#define VTDLY 0040000
+#define VT0 0000000
+#define VT1 0040000
 
-#define B0       0000000
-#define B50      0000001
-#define B75      0000002
-#define B110     0000003
-#define B134     0000004
-#define B150     0000005
-#define B200     0000006
-#define B300     0000007
-#define B600     0000010
-#define B1200    0000011
-#define B1800    0000012
-#define B2400    0000013
-#define B4800    0000014
-#define B9600    0000015
-#define B19200   0000016
-#define B38400   0000017
-#define EXTA     0000016
-#define EXTB     0000017
+#define B0 0000000
+#define B50 0000001
+#define B75 0000002
+#define B110 0000003
+#define B134 0000004
+#define B150 0000005
+#define B200 0000006
+#define B300 0000007
+#define B600 0000010
+#define B1200 0000011
+#define B1800 0000012
+#define B2400 0000013
+#define B4800 0000014
+#define B9600 0000015
+#define B19200 0000016
+#define B38400 0000017
+#define EXTA 0000016
+#define EXTB 0000017
 
-#define BOTHER   0010000
-#define B57600   0010001
-#define B115200  0010002
-#define B230400  0010003
-#define B460800  0010004
-#define B500000  0010005
-#define B576000  0010006
-#define B921600  0010007
+#define BOTHER 0010000
+#define B57600 0010001
+#define B115200 0010002
+#define B230400 0010003
+#define B460800 0010004
+#define B500000 0010005
+#define B576000 0010006
+#define B921600 0010007
 #define B1000000 0010010
 #define B1152000 0010011
 #define B1500000 0010012
@@ -113,26 +112,26 @@
 #define B3500000 0010016
 #define B4000000 0010017
 
-#define CBAUD    0010017
+#define CBAUD 0010017
 
-#define CSIZE  0000060
-#define CS5    0000000
-#define CS6    0000020
-#define CS7    0000040
-#define CS8    0000060
+#define CSIZE 0000060
+#define CS5 0000000
+#define CS6 0000020
+#define CS7 0000040
+#define CS8 0000060
 #define CSTOPB 0000100
-#define CREAD  0000200
+#define CREAD 0000200
 #define PARENB 0000400
 #define PARODD 0001000
-#define HUPCL  0002000
+#define HUPCL 0002000
 #define CLOCAL 0004000
 
-#define ISIG   0000001
+#define ISIG 0000001
 #define ICANON 0000002
-#define XCASE  0000004
-#define ECHO   0000010
-#define ECHOE  0000020
-#define ECHOK  0000040
+#define XCASE 0000004
+#define ECHO 0000010
+#define ECHOE 0000020
+#define ECHOK 0000040
 #define ECHONL 0000100
 #define NOFLSH 0000200
 #define IEXTEN 0000400
@@ -145,25 +144,25 @@
 #define ITOSTOP 0100000
 
 #define TCOOFF 0
-#define TCOON  1
+#define TCOON 1
 #define TCIOFF 2
-#define TCION  3
+#define TCION 3
 
-#define TCIFLUSH  0
-#define TCOFLUSH  1
+#define TCIFLUSH 0
+#define TCOFLUSH 1
 #define TCIOFLUSH 2
 
-#define TCSANOW   0
+#define TCSANOW 0
 #define TCSADRAIN 1
 #define TCSAFLUSH 2
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define CBAUDEX 0010000
-#define CIBAUD   002003600000
+#define CIBAUD 002003600000
 #define IBSHIFT 16
-#define CMSPAR   010000000000
-#define CRTSCTS  020000000000
+#define CMSPAR 010000000000
+#define CRTSCTS 020000000000
 #define EXTPROC 0200000
-#define XTABS  0014000
+#define XTABS 0014000
 #define TIOCSER_TEMT 1
 #endif
diff --git a/fusl/arch/mips/bits/user.h b/fusl/arch/mips/bits/user.h
index 3e26249..ab2805b 100644
--- a/fusl/arch/mips/bits/user.h
+++ b/fusl/arch/mips/bits/user.h
@@ -1,11 +1,11 @@
 struct user {
-	unsigned long regs[45+64];
-	unsigned long u_tsize, u_dsize, u_ssize;
-	unsigned long start_code, start_data, start_stack;
-	long signal;
-	void *u_ar0;
-	unsigned long magic;
-	char u_comm[32];
+  unsigned long regs[45 + 64];
+  unsigned long u_tsize, u_dsize, u_ssize;
+  unsigned long start_code, start_data, start_stack;
+  long signal;
+  void* u_ar0;
+  unsigned long magic;
+  char u_comm[32];
 };
 #define ELF_NGREG 45
 #define ELF_NFPREG 33
diff --git a/fusl/arch/mips/crt_arch.h b/fusl/arch/mips/crt_arch.h
index 9fc50d7..001c737 100644
--- a/fusl/arch/mips/crt_arch.h
+++ b/fusl/arch/mips/crt_arch.h
@@ -1,29 +1,35 @@
 __asm__(
-".set push\n"
-".set noreorder\n"
-".text \n"
-".global _" START "\n"
-".global " START "\n"
-".type   _" START ", @function\n"
-".type   " START ", @function\n"
-"_" START ":\n"
-"" START ":\n"
-"	bal 1f \n"
-"	 move $fp, $0 \n"
-"	.gpword . \n"
-"	.gpword " START "_c \n"
-".weak _DYNAMIC \n"
-".hidden _DYNAMIC \n"
-"	.gpword _DYNAMIC \n"
-"1:	lw $gp, 0($ra) \n"
-"	subu $gp, $ra, $gp \n"
-"	move $4, $sp \n"
-"	lw $5, 8($ra) \n"
-"	addu $5, $5, $gp \n"
-"	lw $25, 4($ra) \n"
-"	addu $25, $25, $gp \n"
-"	and $sp, $sp, -8 \n"
-"	jalr $25 \n"
-"	 subu $sp, $sp, 16 \n"
-".set pop \n"
-);
+    ".set push\n"
+    ".set noreorder\n"
+    ".text \n"
+    ".global _" START
+    "\n"
+    ".global " START
+    "\n"
+    ".type   _" START
+    ", @function\n"
+    ".type   " START
+    ", @function\n"
+    "_" START
+    ":\n"
+    "" START
+    ":\n"
+    "	bal 1f \n"
+    "	 move $fp, $0 \n"
+    "	.gpword . \n"
+    "	.gpword " START
+    "_c \n"
+    ".weak _DYNAMIC \n"
+    ".hidden _DYNAMIC \n"
+    "	.gpword _DYNAMIC \n"
+    "1:	lw $gp, 0($ra) \n"
+    "	subu $gp, $ra, $gp \n"
+    "	move $4, $sp \n"
+    "	lw $5, 8($ra) \n"
+    "	addu $5, $5, $gp \n"
+    "	lw $25, 4($ra) \n"
+    "	addu $25, $25, $gp \n"
+    "	and $sp, $sp, -8 \n"
+    "	jalr $25 \n"
+    "	 subu $sp, $sp, 16 \n"
+    ".set pop \n");
diff --git a/fusl/arch/mips/ksigaction.h b/fusl/arch/mips/ksigaction.h
index 3127f7c..9170bcf 100644
--- a/fusl/arch/mips/ksigaction.h
+++ b/fusl/arch/mips/ksigaction.h
@@ -1,11 +1,11 @@
 struct k_sigaction {
-	unsigned flags;
-	void (*handler)(int);
-	unsigned long mask[4];
-	/* The following field is past the end of the structure the
-	 * kernel will read or write, and exists only to avoid having
-	 * mips-specific preprocessor conditionals in sigaction.c. */
-	void (*restorer)();
+  unsigned flags;
+  void (*handler)(int);
+  unsigned long mask[4];
+  /* The following field is past the end of the structure the
+   * kernel will read or write, and exists only to avoid having
+   * mips-specific preprocessor conditionals in sigaction.c. */
+  void (*restorer)();
 };
 
 void __restore(), __restore_rt();
diff --git a/fusl/arch/mips/pthread_arch.h b/fusl/arch/mips/pthread_arch.h
index 8a49965..fdd5926 100644
--- a/fusl/arch/mips/pthread_arch.h
+++ b/fusl/arch/mips/pthread_arch.h
@@ -1,18 +1,17 @@
-static inline struct pthread *__pthread_self()
-{
+static inline struct pthread* __pthread_self() {
 #ifdef __clang__
-	char *tp;
-	__asm__ __volatile__ (".word 0x7c03e83b ; move %0, $3" : "=r" (tp) : : "$3" );
+  char* tp;
+  __asm__ __volatile__(".word 0x7c03e83b ; move %0, $3" : "=r"(tp) : : "$3");
 #else
-	register char *tp __asm__("$3");
-	/* rdhwr $3,$29 */
-	__asm__ __volatile__ (".word 0x7c03e83b" : "=r" (tp) );
+  register char* tp __asm__("$3");
+  /* rdhwr $3,$29 */
+  __asm__ __volatile__(".word 0x7c03e83b" : "=r"(tp));
 #endif
-	return (pthread_t)(tp - 0x7000 - sizeof(struct pthread));
+  return (pthread_t)(tp - 0x7000 - sizeof(struct pthread));
 }
 
 #define TLS_ABOVE_TP
-#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000)
+#define TP_ADJ(p) ((char*)(p) + sizeof(struct pthread) + 0x7000)
 
 #define DTP_OFFSET 0x8000
 
diff --git a/fusl/arch/mips/reloc.h b/fusl/arch/mips/reloc.h
index 8c52df0..c29a0b8 100644
--- a/fusl/arch/mips/reloc.h
+++ b/fusl/arch/mips/reloc.h
@@ -16,31 +16,35 @@
 
 #define TPOFF_K (-0x7000)
 
-#define REL_SYM_OR_REL  R_MIPS_REL32
-#define REL_PLT         R_MIPS_JUMP_SLOT
-#define REL_COPY        R_MIPS_COPY
-#define REL_DTPMOD      R_MIPS_TLS_DTPMOD32
-#define REL_DTPOFF      R_MIPS_TLS_DTPREL32
-#define REL_TPOFF       R_MIPS_TLS_TPREL32
+#define REL_SYM_OR_REL R_MIPS_REL32
+#define REL_PLT R_MIPS_JUMP_SLOT
+#define REL_COPY R_MIPS_COPY
+#define REL_DTPMOD R_MIPS_TLS_DTPMOD32
+#define REL_DTPOFF R_MIPS_TLS_DTPREL32
+#define REL_TPOFF R_MIPS_TLS_TPREL32
 
 #define NEED_MIPS_GOT_RELOCS 1
 #define DT_DEBUG_INDIRECT DT_MIPS_RLD_MAP
 #define ARCH_SYM_REJECT_UND(s) (!((s)->st_other & STO_MIPS_PLT))
 
-#define CRTJMP(pc,sp) __asm__ __volatile__( \
-	"move $sp,%1 ; jr %0" : : "r"(pc), "r"(sp) : "memory" )
+#define CRTJMP(pc, sp) \
+  __asm__ __volatile__("move $sp,%1 ; jr %0" : : "r"(pc), "r"(sp) : "memory")
 
-#define GETFUNCSYM(fp, sym, got) __asm__ ( \
-	".hidden " #sym "\n" \
-	".set push \n" \
-	".set noreorder \n" \
-	"	bal 1f \n" \
-	"	 nop \n" \
-	"	.gpword . \n" \
-	"	.gpword " #sym " \n" \
-	"1:	lw %0, ($ra) \n" \
-	"	subu %0, $ra, %0 \n" \
-	"	lw $ra, 4($ra) \n" \
-	"	addu %0, %0, $ra \n" \
-	".set pop \n" \
-	: "=r"(*(fp)) : : "memory", "ra" )
+#define GETFUNCSYM(fp, sym, got) \
+  __asm__(".hidden " #sym        \
+          "\n"                   \
+          ".set push \n"         \
+          ".set noreorder \n"    \
+          "	bal 1f \n"           \
+          "	 nop \n"             \
+          "	.gpword . \n"        \
+          "	.gpword " #sym   \
+          " \n"                  \
+          "1:	lw %0, ($ra) \n"   \
+          "	subu %0, $ra, %0 \n" \
+          "	lw $ra, 4($ra) \n"   \
+          "	addu %0, %0, $ra \n" \
+          ".set pop \n"          \
+          : "=r"(*(fp))          \
+          :                      \
+          : "memory", "ra")
diff --git a/fusl/arch/mips/syscall_arch.h b/fusl/arch/mips/syscall_arch.h
index 39c0ea3..cbea485 100644
--- a/fusl/arch/mips/syscall_arch.h
+++ b/fusl/arch/mips/syscall_arch.h
@@ -1,165 +1,176 @@
 #define __SYSCALL_LL_E(x) \
-((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
-((union { long long ll; long l[2]; }){ .ll = x }).l[1]
+  ((union {               \
+    long long ll;         \
+    long l[2];            \
+  }){.ll = x})            \
+      .l[0],              \
+      ((union {           \
+        long long ll;     \
+        long l[2];        \
+      }){.ll = x})        \
+          .l[1]
 #define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x))
 
-__attribute__((visibility("hidden")))
-long (__syscall)(long, ...);
+__attribute__((visibility("hidden"))) long(__syscall)(long, ...);
 
-#define SYSCALL_RLIM_INFINITY (-1UL/2)
+#define SYSCALL_RLIM_INFINITY (-1UL / 2)
 
 #if _MIPSEL || __MIPSEL || __MIPSEL__
-#define __stat_fix(st) ((st),(void)0)
+#define __stat_fix(st) ((st), (void)0)
 #else
 #include <sys/stat.h>
-static inline void __stat_fix(long p)
-{
-	struct stat *st = (struct stat *)p;
-	st->st_dev >>= 32;
-	st->st_rdev >>= 32;
+static inline void __stat_fix(long p) {
+  struct stat* st = (struct stat*)p;
+  st->st_dev >>= 32;
+  st->st_rdev >>= 32;
 }
 #endif
 
 #ifndef __clang__
 
-static inline long __syscall0(long n)
-{
-	register long r7 __asm__("$7");
-	register long r2 __asm__("$2");
-	__asm__ __volatile__ (
-		"addu $2,$0,%2 ; syscall"
-		: "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7)
-		: "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13",
-		  "$14", "$15", "$24", "$25", "hi", "lo", "memory");
-	return r7 ? -r2 : r2;
+static inline long __syscall0(long n) {
+  register long r7 __asm__("$7");
+  register long r2 __asm__("$2");
+  __asm__ __volatile__("addu $2,$0,%2 ; syscall"
+                       : "=&r"(r2), "=r"(r7)
+                       : "ir"(n), "0"(r2), "1"(r7)
+                       : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13",
+                         "$14", "$15", "$24", "$25", "hi", "lo", "memory");
+  return r7 ? -r2 : r2;
 }
 
-static inline long __syscall1(long n, long a)
-{
-	register long r4 __asm__("$4") = a;
-	register long r7 __asm__("$7");
-	register long r2 __asm__("$2");
-	__asm__ __volatile__ (
-		"addu $2,$0,%2 ; syscall"
-		: "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7),
-		  "r"(r4)
-		: "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13",
-		  "$14", "$15", "$24", "$25", "hi", "lo", "memory");
-	return r7 ? -r2 : r2;
+static inline long __syscall1(long n, long a) {
+  register long r4 __asm__("$4") = a;
+  register long r7 __asm__("$7");
+  register long r2 __asm__("$2");
+  __asm__ __volatile__("addu $2,$0,%2 ; syscall"
+                       : "=&r"(r2), "=r"(r7)
+                       : "ir"(n), "0"(r2), "1"(r7), "r"(r4)
+                       : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13",
+                         "$14", "$15", "$24", "$25", "hi", "lo", "memory");
+  return r7 ? -r2 : r2;
 }
 
-static inline long __syscall2(long n, long a, long b)
-{
-	register long r4 __asm__("$4") = a;
-	register long r5 __asm__("$5") = b;
-	register long r7 __asm__("$7");
-	register long r2 __asm__("$2");
-	__asm__ __volatile__ (
-		"addu $2,$0,%2 ; syscall"
-		: "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7),
-		  "r"(r4), "r"(r5)
-		: "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13",
-		  "$14", "$15", "$24", "$25", "hi", "lo", "memory");
-	if (r7) return -r2;
-	long ret = r2;
-	if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64) __stat_fix(b);
-	return ret;
+static inline long __syscall2(long n, long a, long b) {
+  register long r4 __asm__("$4") = a;
+  register long r5 __asm__("$5") = b;
+  register long r7 __asm__("$7");
+  register long r2 __asm__("$2");
+  __asm__ __volatile__("addu $2,$0,%2 ; syscall"
+                       : "=&r"(r2), "=r"(r7)
+                       : "ir"(n), "0"(r2), "1"(r7), "r"(r4), "r"(r5)
+                       : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13",
+                         "$14", "$15", "$24", "$25", "hi", "lo", "memory");
+  if (r7)
+    return -r2;
+  long ret = r2;
+  if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64)
+    __stat_fix(b);
+  return ret;
 }
 
-static inline long __syscall3(long n, long a, long b, long c)
-{
-	register long r4 __asm__("$4") = a;
-	register long r5 __asm__("$5") = b;
-	register long r6 __asm__("$6") = c;
-	register long r7 __asm__("$7");
-	register long r2 __asm__("$2");
-	__asm__ __volatile__ (
-		"addu $2,$0,%2 ; syscall"
-		: "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7),
-		  "r"(r4), "r"(r5), "r"(r6)
-		: "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13",
-		  "$14", "$15", "$24", "$25", "hi", "lo", "memory");
-	if (r7) return -r2;
-	long ret = r2;
-	if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64) __stat_fix(b);
-	return ret;
+static inline long __syscall3(long n, long a, long b, long c) {
+  register long r4 __asm__("$4") = a;
+  register long r5 __asm__("$5") = b;
+  register long r6 __asm__("$6") = c;
+  register long r7 __asm__("$7");
+  register long r2 __asm__("$2");
+  __asm__ __volatile__("addu $2,$0,%2 ; syscall"
+                       : "=&r"(r2), "=r"(r7)
+                       : "ir"(n), "0"(r2), "1"(r7), "r"(r4), "r"(r5), "r"(r6)
+                       : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13",
+                         "$14", "$15", "$24", "$25", "hi", "lo", "memory");
+  if (r7)
+    return -r2;
+  long ret = r2;
+  if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64)
+    __stat_fix(b);
+  return ret;
 }
 
-static inline long __syscall4(long n, long a, long b, long c, long d)
-{
-	register long r4 __asm__("$4") = a;
-	register long r5 __asm__("$5") = b;
-	register long r6 __asm__("$6") = c;
-	register long r7 __asm__("$7") = d;
-	register long r2 __asm__("$2");
-	__asm__ __volatile__ (
-		"addu $2,$0,%2 ; syscall"
-		: "=&r"(r2), "=r"(r7) : "ir"(n), "0"(r2), "1"(r7),
-		  "r"(r4), "r"(r5), "r"(r6)
-		: "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13",
-		  "$14", "$15", "$24", "$25", "hi", "lo", "memory");
-	if (r7) return -r2;
-	long ret = r2;
-	if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64) __stat_fix(b);
-	if (n == SYS_fstatat) __stat_fix(c);
-	return ret;
+static inline long __syscall4(long n, long a, long b, long c, long d) {
+  register long r4 __asm__("$4") = a;
+  register long r5 __asm__("$5") = b;
+  register long r6 __asm__("$6") = c;
+  register long r7 __asm__("$7") = d;
+  register long r2 __asm__("$2");
+  __asm__ __volatile__("addu $2,$0,%2 ; syscall"
+                       : "=&r"(r2), "=r"(r7)
+                       : "ir"(n), "0"(r2), "1"(r7), "r"(r4), "r"(r5), "r"(r6)
+                       : "$1", "$3", "$8", "$9", "$10", "$11", "$12", "$13",
+                         "$14", "$15", "$24", "$25", "hi", "lo", "memory");
+  if (r7)
+    return -r2;
+  long ret = r2;
+  if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64)
+    __stat_fix(b);
+  if (n == SYS_fstatat)
+    __stat_fix(c);
+  return ret;
 }
 
 #else
 
-static inline long __syscall0(long n)
-{
-	return (__syscall)(n);
+static inline long __syscall0(long n) {
+  return (__syscall)(n);
 }
 
-static inline long __syscall1(long n, long a)
-{
-	return (__syscall)(n, a);
+static inline long __syscall1(long n, long a) {
+  return (__syscall)(n, a);
 }
 
-static inline long __syscall2(long n, long a, long b)
-{
-	long r2 = (__syscall)(n, a, b);
-	if (r2 > -4096UL) return r2;
-	if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64) __stat_fix(b);
-	return r2;
+static inline long __syscall2(long n, long a, long b) {
+  long r2 = (__syscall)(n, a, b);
+  if (r2 > -4096UL)
+    return r2;
+  if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64)
+    __stat_fix(b);
+  return r2;
 }
 
-static inline long __syscall3(long n, long a, long b, long c)
-{
-	long r2 = (__syscall)(n, a, b, c);
-	if (r2 > -4096UL) return r2;
-	if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64) __stat_fix(b);
-	return r2;
+static inline long __syscall3(long n, long a, long b, long c) {
+  long r2 = (__syscall)(n, a, b, c);
+  if (r2 > -4096UL)
+    return r2;
+  if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64)
+    __stat_fix(b);
+  return r2;
 }
 
-static inline long __syscall4(long n, long a, long b, long c, long d)
-{
-	long r2 = (__syscall)(n, a, b, c, d);
-	if (r2 > -4096UL) return r2;
-	if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64) __stat_fix(b);
-	if (n == SYS_fstatat) __stat_fix(c);
-	return r2;
+static inline long __syscall4(long n, long a, long b, long c, long d) {
+  long r2 = (__syscall)(n, a, b, c, d);
+  if (r2 > -4096UL)
+    return r2;
+  if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64)
+    __stat_fix(b);
+  if (n == SYS_fstatat)
+    __stat_fix(c);
+  return r2;
 }
 
 #endif
 
-static inline long __syscall5(long n, long a, long b, long c, long d, long e)
-{
-	long r2 = (__syscall)(n, a, b, c, d, e);
-	if (r2 > -4096UL) return r2;
-	if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64) __stat_fix(b);
-	if (n == SYS_fstatat) __stat_fix(c);
-	return r2;
+static inline long __syscall5(long n, long a, long b, long c, long d, long e) {
+  long r2 = (__syscall)(n, a, b, c, d, e);
+  if (r2 > -4096UL)
+    return r2;
+  if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64)
+    __stat_fix(b);
+  if (n == SYS_fstatat)
+    __stat_fix(c);
+  return r2;
 }
 
-static inline long __syscall6(long n, long a, long b, long c, long d, long e, long f)
-{
-	long r2 = (__syscall)(n, a, b, c, d, e, f);
-	if (r2 > -4096UL) return r2;
-	if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64) __stat_fix(b);
-	if (n == SYS_fstatat) __stat_fix(c);
-	return r2;
+static inline long
+__syscall6(long n, long a, long b, long c, long d, long e, long f) {
+  long r2 = (__syscall)(n, a, b, c, d, e, f);
+  if (r2 > -4096UL)
+    return r2;
+  if (n == SYS_stat64 || n == SYS_fstat64 || n == SYS_lstat64)
+    __stat_fix(b);
+  if (n == SYS_fstatat)
+    __stat_fix(c);
+  return r2;
 }
 
 #define VDSO_USEFUL
diff --git a/fusl/arch/powerpc/atomic_arch.h b/fusl/arch/powerpc/atomic_arch.h
index f31566b..d6f4db9 100644
--- a/fusl/arch/powerpc/atomic_arch.h
+++ b/fusl/arch/powerpc/atomic_arch.h
@@ -1,39 +1,35 @@
 #define a_ll a_ll
-static inline int a_ll(volatile int *p)
-{
-	int v;
-	__asm__ __volatile__ ("lwarx %0, 0, %2" : "=r"(v) : "m"(*p), "r"(p));
-	return v;
+static inline int a_ll(volatile int* p) {
+  int v;
+  __asm__ __volatile__("lwarx %0, 0, %2" : "=r"(v) : "m"(*p), "r"(p));
+  return v;
 }
 
 #define a_sc a_sc
-static inline int a_sc(volatile int *p, int v)
-{
-	int r;
-	__asm__ __volatile__ (
-		"stwcx. %2, 0, %3 ; mfcr %0"
-		: "=r"(r), "=m"(*p) : "r"(v), "r"(p) : "memory", "cc");
-	return r & 0x20000000; /* "bit 2" of "cr0" (backwards bit order) */
+static inline int a_sc(volatile int* p, int v) {
+  int r;
+  __asm__ __volatile__("stwcx. %2, 0, %3 ; mfcr %0"
+                       : "=r"(r), "=m"(*p)
+                       : "r"(v), "r"(p)
+                       : "memory", "cc");
+  return r & 0x20000000; /* "bit 2" of "cr0" (backwards bit order) */
 }
 
 #define a_barrier a_barrier
-static inline void a_barrier()
-{
-	__asm__ __volatile__ ("sync" : : : "memory");
+static inline void a_barrier() {
+  __asm__ __volatile__("sync" : : : "memory");
 }
 
 #define a_pre_llsc a_barrier
 
 #define a_post_llsc a_post_llsc
-static inline void a_post_llsc()
-{
-	__asm__ __volatile__ ("isync" : : : "memory");
+static inline void a_post_llsc() {
+  __asm__ __volatile__("isync" : : : "memory");
 }
 
 #define a_store a_store
-static inline void a_store(volatile int *p, int v)
-{
-	a_pre_llsc();
-	*p = v;
-	a_post_llsc();
+static inline void a_store(volatile int* p, int v) {
+  a_pre_llsc();
+  *p = v;
+  a_post_llsc();
 }
diff --git a/fusl/arch/powerpc/bits/endian.h b/fusl/arch/powerpc/bits/endian.h
index 4442abf..7e89899 100644
--- a/fusl/arch/powerpc/bits/endian.h
+++ b/fusl/arch/powerpc/bits/endian.h
@@ -1,15 +1,15 @@
 #ifdef __BIG_ENDIAN__
-  #if __BIG_ENDIAN__
-    #define __BYTE_ORDER __BIG_ENDIAN
-  #endif
+#if __BIG_ENDIAN__
+#define __BYTE_ORDER __BIG_ENDIAN
+#endif
 #endif /* __BIG_ENDIAN__ */
 
 #ifdef __LITTLE_ENDIAN__
-  #if __LITTLE_ENDIAN__
-    #define __BYTE_ORDER __LITTLE_ENDIAN
-  #endif
+#if __LITTLE_ENDIAN__
+#define __BYTE_ORDER __LITTLE_ENDIAN
+#endif
 #endif /* __LITTLE_ENDIAN__ */
 
 #ifndef __BYTE_ORDER
-  #define __BYTE_ORDER __BIG_ENDIAN
+#define __BYTE_ORDER __BIG_ENDIAN
 #endif
diff --git a/fusl/arch/powerpc/bits/errno.h b/fusl/arch/powerpc/bits/errno.h
index 36ad2f9..465b07c 100644
--- a/fusl/arch/powerpc/bits/errno.h
+++ b/fusl/arch/powerpc/bits/errno.h
@@ -1,134 +1,134 @@
-#define EPERM            1
-#define ENOENT           2
-#define ESRCH            3
-#define EINTR            4
-#define EIO              5
-#define ENXIO            6
-#define E2BIG            7
-#define ENOEXEC          8
-#define EBADF            9
-#define ECHILD          10
-#define EAGAIN          11
-#define ENOMEM          12
-#define EACCES          13
-#define EFAULT          14
-#define ENOTBLK         15
-#define EBUSY           16
-#define EEXIST          17
-#define EXDEV           18
-#define ENODEV          19
-#define ENOTDIR         20
-#define EISDIR          21
-#define EINVAL          22
-#define ENFILE          23
-#define EMFILE          24
-#define ENOTTY          25
-#define ETXTBSY         26
-#define EFBIG           27
-#define ENOSPC          28
-#define ESPIPE          29
-#define EROFS           30
-#define EMLINK          31
-#define EPIPE           32
-#define EDOM            33
-#define ERANGE          34
-#define EDEADLK         35
-#define ENAMETOOLONG    36
-#define ENOLCK          37
-#define ENOSYS          38
-#define ENOTEMPTY       39
-#define ELOOP           40
-#define EWOULDBLOCK     EAGAIN
-#define ENOMSG          42
-#define EIDRM           43
-#define ECHRNG          44
-#define EL2NSYNC        45
-#define EL3HLT          46
-#define EL3RST          47
-#define ELNRNG          48
-#define EUNATCH         49
-#define ENOCSI          50
-#define EL2HLT          51
-#define EBADE           52
-#define EBADR           53
-#define EXFULL          54
-#define ENOANO          55
-#define EBADRQC         56
-#define EBADSLT         57
-#define EDEADLOCK       58 
-#define EBFONT          59
-#define ENOSTR          60
-#define ENODATA         61
-#define ETIME           62
-#define ENOSR           63
-#define ENONET          64
-#define ENOPKG          65
-#define EREMOTE         66
-#define ENOLINK         67
-#define EADV            68
-#define ESRMNT          69
-#define ECOMM           70
-#define EPROTO          71
-#define EMULTIHOP       72
-#define EDOTDOT         73
-#define EBADMSG         74
-#define EOVERFLOW       75
-#define ENOTUNIQ        76
-#define EBADFD          77
-#define EREMCHG         78
-#define ELIBACC         79
-#define ELIBBAD         80
-#define ELIBSCN         81
-#define ELIBMAX         82
-#define ELIBEXEC        83
-#define EILSEQ          84
-#define ERESTART        85
-#define ESTRPIPE        86
-#define EUSERS          87
-#define ENOTSOCK        88
-#define EDESTADDRREQ    89
-#define EMSGSIZE        90
-#define EPROTOTYPE      91
-#define ENOPROTOOPT     92
+#define EPERM 1
+#define ENOENT 2
+#define ESRCH 3
+#define EINTR 4
+#define EIO 5
+#define ENXIO 6
+#define E2BIG 7
+#define ENOEXEC 8
+#define EBADF 9
+#define ECHILD 10
+#define EAGAIN 11
+#define ENOMEM 12
+#define EACCES 13
+#define EFAULT 14
+#define ENOTBLK 15
+#define EBUSY 16
+#define EEXIST 17
+#define EXDEV 18
+#define ENODEV 19
+#define ENOTDIR 20
+#define EISDIR 21
+#define EINVAL 22
+#define ENFILE 23
+#define EMFILE 24
+#define ENOTTY 25
+#define ETXTBSY 26
+#define EFBIG 27
+#define ENOSPC 28
+#define ESPIPE 29
+#define EROFS 30
+#define EMLINK 31
+#define EPIPE 32
+#define EDOM 33
+#define ERANGE 34
+#define EDEADLK 35
+#define ENAMETOOLONG 36
+#define ENOLCK 37
+#define ENOSYS 38
+#define ENOTEMPTY 39
+#define ELOOP 40
+#define EWOULDBLOCK EAGAIN
+#define ENOMSG 42
+#define EIDRM 43
+#define ECHRNG 44
+#define EL2NSYNC 45
+#define EL3HLT 46
+#define EL3RST 47
+#define ELNRNG 48
+#define EUNATCH 49
+#define ENOCSI 50
+#define EL2HLT 51
+#define EBADE 52
+#define EBADR 53
+#define EXFULL 54
+#define ENOANO 55
+#define EBADRQC 56
+#define EBADSLT 57
+#define EDEADLOCK 58
+#define EBFONT 59
+#define ENOSTR 60
+#define ENODATA 61
+#define ETIME 62
+#define ENOSR 63
+#define ENONET 64
+#define ENOPKG 65
+#define EREMOTE 66
+#define ENOLINK 67
+#define EADV 68
+#define ESRMNT 69
+#define ECOMM 70
+#define EPROTO 71
+#define EMULTIHOP 72
+#define EDOTDOT 73
+#define EBADMSG 74
+#define EOVERFLOW 75
+#define ENOTUNIQ 76
+#define EBADFD 77
+#define EREMCHG 78
+#define ELIBACC 79
+#define ELIBBAD 80
+#define ELIBSCN 81
+#define ELIBMAX 82
+#define ELIBEXEC 83
+#define EILSEQ 84
+#define ERESTART 85
+#define ESTRPIPE 86
+#define EUSERS 87
+#define ENOTSOCK 88
+#define EDESTADDRREQ 89
+#define EMSGSIZE 90
+#define EPROTOTYPE 91
+#define ENOPROTOOPT 92
 #define EPROTONOSUPPORT 93
 #define ESOCKTNOSUPPORT 94
-#define EOPNOTSUPP      95
-#define ENOTSUP         EOPNOTSUPP
-#define EPFNOSUPPORT    96
-#define EAFNOSUPPORT    97
-#define EADDRINUSE      98
-#define EADDRNOTAVAIL   99
-#define ENETDOWN        100
-#define ENETUNREACH     101
-#define ENETRESET       102
-#define ECONNABORTED    103
-#define ECONNRESET      104
-#define ENOBUFS         105
-#define EISCONN         106
-#define ENOTCONN        107
-#define ESHUTDOWN       108
-#define ETOOMANYREFS    109
-#define ETIMEDOUT       110
-#define ECONNREFUSED    111
-#define EHOSTDOWN       112
-#define EHOSTUNREACH    113
-#define EALREADY        114
-#define EINPROGRESS     115
-#define ESTALE          116
-#define EUCLEAN         117
-#define ENOTNAM         118
-#define ENAVAIL         119
-#define EISNAM          120
-#define EREMOTEIO       121
-#define EDQUOT          122
-#define ENOMEDIUM       123
-#define EMEDIUMTYPE     124
-#define ECANCELED       125
-#define ENOKEY          126
-#define EKEYEXPIRED     127
-#define EKEYREVOKED     128
-#define EKEYREJECTED    129
-#define EOWNERDEAD      130
+#define EOPNOTSUPP 95
+#define ENOTSUP EOPNOTSUPP
+#define EPFNOSUPPORT 96
+#define EAFNOSUPPORT 97
+#define EADDRINUSE 98
+#define EADDRNOTAVAIL 99
+#define ENETDOWN 100
+#define ENETUNREACH 101
+#define ENETRESET 102
+#define ECONNABORTED 103
+#define ECONNRESET 104
+#define ENOBUFS 105
+#define EISCONN 106
+#define ENOTCONN 107
+#define ESHUTDOWN 108
+#define ETOOMANYREFS 109
+#define ETIMEDOUT 110
+#define ECONNREFUSED 111
+#define EHOSTDOWN 112
+#define EHOSTUNREACH 113
+#define EALREADY 114
+#define EINPROGRESS 115
+#define ESTALE 116
+#define EUCLEAN 117
+#define ENOTNAM 118
+#define ENAVAIL 119
+#define EISNAM 120
+#define EREMOTEIO 121
+#define EDQUOT 122
+#define ENOMEDIUM 123
+#define EMEDIUMTYPE 124
+#define ECANCELED 125
+#define ENOKEY 126
+#define EKEYEXPIRED 127
+#define EKEYREVOKED 128
+#define EKEYREJECTED 129
+#define EOWNERDEAD 130
 #define ENOTRECOVERABLE 131
-#define ERFKILL         132
-#define EHWPOISON       133
+#define ERFKILL 132
+#define EHWPOISON 133
diff --git a/fusl/arch/powerpc/bits/fcntl.h b/fusl/arch/powerpc/bits/fcntl.h
index c3f875e..be9a4f7 100644
--- a/fusl/arch/powerpc/bits/fcntl.h
+++ b/fusl/arch/powerpc/bits/fcntl.h
@@ -1,29 +1,29 @@
-#define O_CREAT        0100
-#define O_EXCL         0200
-#define O_NOCTTY       0400
-#define O_TRUNC       01000
-#define O_APPEND      02000
-#define O_NONBLOCK    04000
-#define O_DSYNC      010000
-#define O_SYNC     04010000
-#define O_RSYNC    04010000
-#define O_DIRECTORY  040000
-#define O_NOFOLLOW  0100000
-#define O_CLOEXEC  02000000
+#define O_CREAT 0100
+#define O_EXCL 0200
+#define O_NOCTTY 0400
+#define O_TRUNC 01000
+#define O_APPEND 02000
+#define O_NONBLOCK 04000
+#define O_DSYNC 010000
+#define O_SYNC 04010000
+#define O_RSYNC 04010000
+#define O_DIRECTORY 040000
+#define O_NOFOLLOW 0100000
+#define O_CLOEXEC 02000000
 
-#define O_ASYNC      020000
-#define O_DIRECT    0400000
+#define O_ASYNC 020000
+#define O_DIRECT 0400000
 #define O_LARGEFILE 0200000
-#define O_NOATIME  01000000
-#define O_PATH    010000000
+#define O_NOATIME 01000000
+#define O_PATH 010000000
 #define O_TMPFILE 020040000
 #define O_NDELAY O_NONBLOCK
 
-#define F_DUPFD  0
-#define F_GETFD  1
-#define F_SETFD  2
-#define F_GETFL  3
-#define F_SETFL  4
+#define F_DUPFD 0
+#define F_GETFD 1
+#define F_SETFD 2
+#define F_GETFL 3
+#define F_SETFL 4
 
 #define F_SETOWN 8
 #define F_GETOWN 9
diff --git a/fusl/arch/powerpc/bits/fenv.h b/fusl/arch/powerpc/bits/fenv.h
index 2f722e6..326f457 100644
--- a/fusl/arch/powerpc/bits/fenv.h
+++ b/fusl/arch/powerpc/bits/fenv.h
@@ -1,31 +1,31 @@
-#define FE_TONEAREST	0
-#define FE_TOWARDZERO	1
-#define FE_UPWARD	2
-#define FE_DOWNWARD	3
+#define FE_TONEAREST 0
+#define FE_TOWARDZERO 1
+#define FE_UPWARD 2
+#define FE_DOWNWARD 3
 
-#define FE_INEXACT	0x02000000
-#define FE_DIVBYZERO	0x04000000
-#define FE_UNDERFLOW	0x08000000
-#define FE_OVERFLOW	0x10000000
-#define FE_INVALID	0x20000000
+#define FE_INEXACT 0x02000000
+#define FE_DIVBYZERO 0x04000000
+#define FE_UNDERFLOW 0x08000000
+#define FE_OVERFLOW 0x10000000
+#define FE_INVALID 0x20000000
 
-#define FE_ALL_EXCEPT	0x3e000000
+#define FE_ALL_EXCEPT 0x3e000000
 
 #ifdef _GNU_SOURCE
-#define FE_INVALID_SNAN		0x01000000
-#define FE_INVALID_ISI		0x00800000
-#define FE_INVALID_IDI		0x00400000
-#define FE_INVALID_ZDZ		0x00200000
-#define FE_INVALID_IMZ		0x00100000
-#define FE_INVALID_COMPARE	0x00080000
-#define FE_INVALID_SOFTWARE	0x00000400
-#define FE_INVALID_SQRT		0x00000200
-#define FE_INVALID_INTEGER_CONVERSION	0x00000100
+#define FE_INVALID_SNAN 0x01000000
+#define FE_INVALID_ISI 0x00800000
+#define FE_INVALID_IDI 0x00400000
+#define FE_INVALID_ZDZ 0x00200000
+#define FE_INVALID_IMZ 0x00100000
+#define FE_INVALID_COMPARE 0x00080000
+#define FE_INVALID_SOFTWARE 0x00000400
+#define FE_INVALID_SQRT 0x00000200
+#define FE_INVALID_INTEGER_CONVERSION 0x00000100
 
-#define FE_ALL_INVALID		0x01f80700
+#define FE_ALL_INVALID 0x01f80700
 #endif
 
 typedef unsigned fexcept_t;
 typedef double fenv_t;
 
-#define FE_DFL_ENV ((const fenv_t *)-1)
+#define FE_DFL_ENV ((const fenv_t*)-1)
diff --git a/fusl/arch/powerpc/bits/ioctl.h b/fusl/arch/powerpc/bits/ioctl.h
index 0c903dc..d3ef47e 100644
--- a/fusl/arch/powerpc/bits/ioctl.h
+++ b/fusl/arch/powerpc/bits/ioctl.h
@@ -1,226 +1,224 @@
-#define _IOC(a,b,c,d) ( ((a)<<29) | ((b)<<8) | (c) | ((d)<<16) )
-#define _IOC_NONE  1U
+#define _IOC(a, b, c, d) (((a) << 29) | ((b) << 8) | (c) | ((d) << 16))
+#define _IOC_NONE 1U
 #define _IOC_WRITE 4U
-#define _IOC_READ  2U
+#define _IOC_READ 2U
 
-#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0)
-#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c))
-#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c))
-#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c))
+#define _IO(a, b) _IOC(_IOC_NONE, (a), (b), 0)
+#define _IOW(a, b, c) _IOC(_IOC_WRITE, (a), (b), sizeof(c))
+#define _IOR(a, b, c) _IOC(_IOC_READ, (a), (b), sizeof(c))
+#define _IOWR(a, b, c) _IOC(_IOC_READ | _IOC_WRITE, (a), (b), sizeof(c))
 
-#define FIONCLEX	_IO('f', 2)
-#define FIOCLEX		_IO('f', 1)
-#define FIOASYNC	_IOW('f', 125, int)
-#define FIONBIO		_IOW('f', 126, int)
-#define FIONREAD	_IOR('f', 127, int)
-#define TIOCINQ		FIONREAD
-#define FIOQSIZE	_IOR('f', 128, char[8])
-#define TIOCGETP	_IOR('t', 8, char[6])
-#define TIOCSETP	_IOW('t', 9, char[6])
-#define TIOCSETN	_IOW('t', 10, char[6])
+#define FIONCLEX _IO('f', 2)
+#define FIOCLEX _IO('f', 1)
+#define FIOASYNC _IOW('f', 125, int)
+#define FIONBIO _IOW('f', 126, int)
+#define FIONREAD _IOR('f', 127, int)
+#define TIOCINQ FIONREAD
+#define FIOQSIZE _IOR('f', 128, char[8])
+#define TIOCGETP _IOR('t', 8, char[6])
+#define TIOCSETP _IOW('t', 9, char[6])
+#define TIOCSETN _IOW('t', 10, char[6])
 
-#define TIOCSETC	_IOW('t', 17, char[6])
-#define TIOCGETC	_IOR('t', 18, char[6])
-#define TCGETS		_IOR('t', 19, char[44])
-#define TCSETS		_IOW('t', 20, char[44])
-#define TCSETSW		_IOW('t', 21, char[44])
-#define TCSETSF		_IOW('t', 22, char[44])
+#define TIOCSETC _IOW('t', 17, char[6])
+#define TIOCGETC _IOR('t', 18, char[6])
+#define TCGETS _IOR('t', 19, char[44])
+#define TCSETS _IOW('t', 20, char[44])
+#define TCSETSW _IOW('t', 21, char[44])
+#define TCSETSF _IOW('t', 22, char[44])
 
-#define TCGETA		_IOR('t', 23, char[20])
-#define TCSETA		_IOW('t', 24, char[20])
-#define TCSETAW		_IOW('t', 25, char[20])
-#define TCSETAF		_IOW('t', 28, char[20])
+#define TCGETA _IOR('t', 23, char[20])
+#define TCSETA _IOW('t', 24, char[20])
+#define TCSETAW _IOW('t', 25, char[20])
+#define TCSETAF _IOW('t', 28, char[20])
 
-#define TCSBRK		_IO('t', 29)
-#define TCXONC		_IO('t', 30)
-#define TCFLSH		_IO('t', 31)
+#define TCSBRK _IO('t', 29)
+#define TCXONC _IO('t', 30)
+#define TCFLSH _IO('t', 31)
 
-#define TIOCSWINSZ	_IOW('t', 103, char[8])
-#define TIOCGWINSZ	_IOR('t', 104, char[8])
-#define TIOCSTART	_IO('t', 110)
-#define TIOCSTOP	_IO('t', 111)
+#define TIOCSWINSZ _IOW('t', 103, char[8])
+#define TIOCGWINSZ _IOR('t', 104, char[8])
+#define TIOCSTART _IO('t', 110)
+#define TIOCSTOP _IO('t', 111)
 
-#define TIOCOUTQ	_IOR('t', 115, int)
+#define TIOCOUTQ _IOR('t', 115, int)
 
-#define TIOCGLTC	_IOR('t', 116, char[6])
-#define TIOCSLTC	_IOW('t', 117, char[6])
-#define TIOCSPGRP	_IOW('t', 118, int)
-#define TIOCGPGRP	_IOR('t', 119, int)
+#define TIOCGLTC _IOR('t', 116, char[6])
+#define TIOCSLTC _IOW('t', 117, char[6])
+#define TIOCSPGRP _IOW('t', 118, int)
+#define TIOCGPGRP _IOR('t', 119, int)
 
-#define TIOCEXCL	0x540C
-#define TIOCNXCL	0x540D
-#define TIOCSCTTY	0x540E
+#define TIOCEXCL 0x540C
+#define TIOCNXCL 0x540D
+#define TIOCSCTTY 0x540E
 
-#define TIOCSTI		0x5412
-#define TIOCMGET	0x5415
-#define TIOCMBIS	0x5416
-#define TIOCMBIC	0x5417
-#define TIOCMSET	0x5418
-#define TIOCM_LE	0x001
-#define TIOCM_DTR	0x002
-#define TIOCM_RTS	0x004
-#define TIOCM_ST	0x008
-#define TIOCM_SR	0x010
-#define TIOCM_CTS	0x020
-#define TIOCM_CAR	0x040
-#define TIOCM_RNG	0x080
-#define TIOCM_DSR	0x100
-#define TIOCM_CD	TIOCM_CAR
-#define TIOCM_RI	TIOCM_RNG
-#define TIOCM_OUT1	0x2000
-#define TIOCM_OUT2	0x4000
-#define TIOCM_LOOP	0x8000
+#define TIOCSTI 0x5412
+#define TIOCMGET 0x5415
+#define TIOCMBIS 0x5416
+#define TIOCMBIC 0x5417
+#define TIOCMSET 0x5418
+#define TIOCM_LE 0x001
+#define TIOCM_DTR 0x002
+#define TIOCM_RTS 0x004
+#define TIOCM_ST 0x008
+#define TIOCM_SR 0x010
+#define TIOCM_CTS 0x020
+#define TIOCM_CAR 0x040
+#define TIOCM_RNG 0x080
+#define TIOCM_DSR 0x100
+#define TIOCM_CD TIOCM_CAR
+#define TIOCM_RI TIOCM_RNG
+#define TIOCM_OUT1 0x2000
+#define TIOCM_OUT2 0x4000
+#define TIOCM_LOOP 0x8000
 
-#define TIOCGSOFTCAR	0x5419
-#define TIOCSSOFTCAR	0x541A
-#define TIOCLINUX	0x541C
-#define TIOCCONS	0x541D
-#define TIOCGSERIAL	0x541E
-#define TIOCSSERIAL	0x541F
-#define TIOCPKT	0x5420
-#define TIOCPKT_DATA		0
-#define TIOCPKT_FLUSHREAD	1
-#define TIOCPKT_FLUSHWRITE	2
-#define TIOCPKT_STOP		4
-#define TIOCPKT_START		8
-#define TIOCPKT_NOSTOP		16
-#define TIOCPKT_DOSTOP		32
-#define TIOCPKT_IOCTL		64
+#define TIOCGSOFTCAR 0x5419
+#define TIOCSSOFTCAR 0x541A
+#define TIOCLINUX 0x541C
+#define TIOCCONS 0x541D
+#define TIOCGSERIAL 0x541E
+#define TIOCSSERIAL 0x541F
+#define TIOCPKT 0x5420
+#define TIOCPKT_DATA 0
+#define TIOCPKT_FLUSHREAD 1
+#define TIOCPKT_FLUSHWRITE 2
+#define TIOCPKT_STOP 4
+#define TIOCPKT_START 8
+#define TIOCPKT_NOSTOP 16
+#define TIOCPKT_DOSTOP 32
+#define TIOCPKT_IOCTL 64
 
-#define TIOCNOTTY	0x5422
-#define TIOCSETD	0x5423
-#define TIOCGETD	0x5424
-#define TCSBRKP		0x5425
-#define TIOCSBRK	0x5427
-#define TIOCCBRK	0x5428
-#define TIOCGSID	0x5429
-#define TIOCGRS485	0x542e
-#define TIOCSRS485	0x542f
-#define TIOCGPTN	_IOR('T',0x30, unsigned int)
-#define TIOCSPTLCK	_IOW('T',0x31, int)
-#define TIOCGDEV	_IOR('T',0x32, unsigned int)
-#define TIOCSIG		_IOW('T',0x36, int)
-#define TIOCVHANGUP	0x5437
+#define TIOCNOTTY 0x5422
+#define TIOCSETD 0x5423
+#define TIOCGETD 0x5424
+#define TCSBRKP 0x5425
+#define TIOCSBRK 0x5427
+#define TIOCCBRK 0x5428
+#define TIOCGSID 0x5429
+#define TIOCGRS485 0x542e
+#define TIOCSRS485 0x542f
+#define TIOCGPTN _IOR('T', 0x30, unsigned int)
+#define TIOCSPTLCK _IOW('T', 0x31, int)
+#define TIOCGDEV _IOR('T', 0x32, unsigned int)
+#define TIOCSIG _IOW('T', 0x36, int)
+#define TIOCVHANGUP 0x5437
 
-#define TIOCSERCONFIG	0x5453
-#define TIOCSERGWILD	0x5454
-#define TIOCSERSWILD	0x5455
-#define TIOCGLCKTRMIOS	0x5456
-#define TIOCSLCKTRMIOS	0x5457
-#define TIOCSERGSTRUCT	0x5458
-#define TIOCSERGETLSR	0x5459
-#define TIOCSER_TEMT	0x01
-#define TIOCSERGETMULTI	0x545A
-#define TIOCSERSETMULTI	0x545B
+#define TIOCSERCONFIG 0x5453
+#define TIOCSERGWILD 0x5454
+#define TIOCSERSWILD 0x5455
+#define TIOCGLCKTRMIOS 0x5456
+#define TIOCSLCKTRMIOS 0x5457
+#define TIOCSERGSTRUCT 0x5458
+#define TIOCSERGETLSR 0x5459
+#define TIOCSER_TEMT 0x01
+#define TIOCSERGETMULTI 0x545A
+#define TIOCSERSETMULTI 0x545B
 
-#define TIOCMIWAIT	0x545C
-#define TIOCGICOUNT	0x545D
-
+#define TIOCMIWAIT 0x545C
+#define TIOCGICOUNT 0x545D
 
 /* end kernel header ioctls.h */
 
+#define TIOCTTYGSTRUCT 0x5426
 
-#define TIOCTTYGSTRUCT	0x5426
+#define TCGETX 0x5432
+#define TCSETX 0x5433
+#define TCSETXF 0x5434
+#define TCSETXW 0x5435
 
-#define TCGETX		0x5432
-#define TCSETX		0x5433
-#define TCSETXF		0x5434
-#define TCSETXW		0x5435
-
-#define TIOCGHAYESESP   0x545E
-#define TIOCSHAYESESP   0x545F
+#define TIOCGHAYESESP 0x545E
+#define TIOCSHAYESESP 0x545F
 
 struct winsize {
-	unsigned short ws_row;
-	unsigned short ws_col;
-	unsigned short ws_xpixel;
-	unsigned short ws_ypixel;
+  unsigned short ws_row;
+  unsigned short ws_col;
+  unsigned short ws_xpixel;
+  unsigned short ws_ypixel;
 };
 
 #define TIOCM_MODEM_BITS TIOCM_OUT2
 
-#define N_TTY           0
-#define N_SLIP          1
-#define N_MOUSE         2
-#define N_PPP           3
-#define N_STRIP         4
-#define N_AX25          5
-#define N_X25           6
-#define N_6PACK         7
-#define N_MASC          8
-#define N_R3964         9
-#define N_PROFIBUS_FDL  10
-#define N_IRDA          11
-#define N_SMSBLOCK      12
-#define N_HDLC          13
-#define N_SYNC_PPP      14
-#define N_HCI           15
+#define N_TTY 0
+#define N_SLIP 1
+#define N_MOUSE 2
+#define N_PPP 3
+#define N_STRIP 4
+#define N_AX25 5
+#define N_X25 6
+#define N_6PACK 7
+#define N_MASC 8
+#define N_R3964 9
+#define N_PROFIBUS_FDL 10
+#define N_IRDA 11
+#define N_SMSBLOCK 12
+#define N_HDLC 13
+#define N_SYNC_PPP 14
+#define N_HCI 15
 
-#define FIOSETOWN       0x8901
-#define SIOCSPGRP       0x8902
-#define FIOGETOWN       0x8903
-#define SIOCGPGRP       0x8904
-#define SIOCATMARK      0x8905
-#define SIOCGSTAMP      0x8906
+#define FIOSETOWN 0x8901
+#define SIOCSPGRP 0x8902
+#define FIOGETOWN 0x8903
+#define SIOCGPGRP 0x8904
+#define SIOCATMARK 0x8905
+#define SIOCGSTAMP 0x8906
 
-#define SIOCADDRT       0x890B
-#define SIOCDELRT       0x890C
-#define SIOCRTMSG       0x890D
+#define SIOCADDRT 0x890B
+#define SIOCDELRT 0x890C
+#define SIOCRTMSG 0x890D
 
-#define SIOCGIFNAME     0x8910
-#define SIOCSIFLINK     0x8911
-#define SIOCGIFCONF     0x8912
-#define SIOCGIFFLAGS    0x8913
-#define SIOCSIFFLAGS    0x8914
-#define SIOCGIFADDR     0x8915
-#define SIOCSIFADDR     0x8916
-#define SIOCGIFDSTADDR  0x8917
-#define SIOCSIFDSTADDR  0x8918
-#define SIOCGIFBRDADDR  0x8919
-#define SIOCSIFBRDADDR  0x891a
-#define SIOCGIFNETMASK  0x891b
-#define SIOCSIFNETMASK  0x891c
-#define SIOCGIFMETRIC   0x891d
-#define SIOCSIFMETRIC   0x891e
-#define SIOCGIFMEM      0x891f
-#define SIOCSIFMEM      0x8920
-#define SIOCGIFMTU      0x8921
-#define SIOCSIFMTU      0x8922
-#define SIOCSIFHWADDR   0x8924
-#define SIOCGIFENCAP    0x8925
-#define SIOCSIFENCAP    0x8926
-#define SIOCGIFHWADDR   0x8927
-#define SIOCGIFSLAVE    0x8929
-#define SIOCSIFSLAVE    0x8930
-#define SIOCADDMULTI    0x8931
-#define SIOCDELMULTI    0x8932
-#define SIOCGIFINDEX    0x8933
-#define SIOGIFINDEX     SIOCGIFINDEX
-#define SIOCSIFPFLAGS   0x8934
-#define SIOCGIFPFLAGS   0x8935
-#define SIOCDIFADDR     0x8936
+#define SIOCGIFNAME 0x8910
+#define SIOCSIFLINK 0x8911
+#define SIOCGIFCONF 0x8912
+#define SIOCGIFFLAGS 0x8913
+#define SIOCSIFFLAGS 0x8914
+#define SIOCGIFADDR 0x8915
+#define SIOCSIFADDR 0x8916
+#define SIOCGIFDSTADDR 0x8917
+#define SIOCSIFDSTADDR 0x8918
+#define SIOCGIFBRDADDR 0x8919
+#define SIOCSIFBRDADDR 0x891a
+#define SIOCGIFNETMASK 0x891b
+#define SIOCSIFNETMASK 0x891c
+#define SIOCGIFMETRIC 0x891d
+#define SIOCSIFMETRIC 0x891e
+#define SIOCGIFMEM 0x891f
+#define SIOCSIFMEM 0x8920
+#define SIOCGIFMTU 0x8921
+#define SIOCSIFMTU 0x8922
+#define SIOCSIFHWADDR 0x8924
+#define SIOCGIFENCAP 0x8925
+#define SIOCSIFENCAP 0x8926
+#define SIOCGIFHWADDR 0x8927
+#define SIOCGIFSLAVE 0x8929
+#define SIOCSIFSLAVE 0x8930
+#define SIOCADDMULTI 0x8931
+#define SIOCDELMULTI 0x8932
+#define SIOCGIFINDEX 0x8933
+#define SIOGIFINDEX SIOCGIFINDEX
+#define SIOCSIFPFLAGS 0x8934
+#define SIOCGIFPFLAGS 0x8935
+#define SIOCDIFADDR 0x8936
 #define SIOCSIFHWBROADCAST 0x8937
-#define SIOCGIFCOUNT    0x8938
+#define SIOCGIFCOUNT 0x8938
 
-#define SIOCGIFBR       0x8940
-#define SIOCSIFBR       0x8941
+#define SIOCGIFBR 0x8940
+#define SIOCSIFBR 0x8941
 
-#define SIOCGIFTXQLEN   0x8942
-#define SIOCSIFTXQLEN   0x8943
+#define SIOCGIFTXQLEN 0x8942
+#define SIOCSIFTXQLEN 0x8943
 
-#define SIOCDARP        0x8953
-#define SIOCGARP        0x8954
-#define SIOCSARP        0x8955
+#define SIOCDARP 0x8953
+#define SIOCGARP 0x8954
+#define SIOCSARP 0x8955
 
-#define SIOCDRARP       0x8960
-#define SIOCGRARP       0x8961
-#define SIOCSRARP       0x8962
+#define SIOCDRARP 0x8960
+#define SIOCGRARP 0x8961
+#define SIOCSRARP 0x8962
 
-#define SIOCGIFMAP      0x8970
-#define SIOCSIFMAP      0x8971
+#define SIOCGIFMAP 0x8970
+#define SIOCSIFMAP 0x8971
 
-#define SIOCADDDLCI     0x8980
-#define SIOCDELDLCI     0x8981
+#define SIOCADDDLCI 0x8980
+#define SIOCDELDLCI 0x8981
 
-#define SIOCDEVPRIVATE		0x89F0
-#define SIOCPROTOPRIVATE	0x89E0
+#define SIOCDEVPRIVATE 0x89F0
+#define SIOCPROTOPRIVATE 0x89E0
diff --git a/fusl/arch/powerpc/bits/ipc.h b/fusl/arch/powerpc/bits/ipc.h
index e1bfe2f..49ad617 100644
--- a/fusl/arch/powerpc/bits/ipc.h
+++ b/fusl/arch/powerpc/bits/ipc.h
@@ -1,16 +1,14 @@
-struct ipc_perm
-{
-	key_t __ipc_perm_key;
-	uid_t uid;
-	gid_t gid;
-	uid_t cuid;
-	gid_t cgid;
-	mode_t mode;
-	int __ipc_perm_seq;
-	int __pad1;
-	long long __pad2;
-	long long __pad3;
+struct ipc_perm {
+  key_t __ipc_perm_key;
+  uid_t uid;
+  gid_t gid;
+  uid_t cuid;
+  gid_t cgid;
+  mode_t mode;
+  int __ipc_perm_seq;
+  int __pad1;
+  long long __pad2;
+  long long __pad3;
 };
 
 #define IPC_64 0x100
-
diff --git a/fusl/arch/powerpc/bits/limits.h b/fusl/arch/powerpc/bits/limits.h
index fbc6d23..f2f7cc4 100644
--- a/fusl/arch/powerpc/bits/limits.h
+++ b/fusl/arch/powerpc/bits/limits.h
@@ -1,7 +1,7 @@
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define LONG_BIT 32
 #endif
 
-#define LONG_MAX  0x7fffffffL
-#define LLONG_MAX  0x7fffffffffffffffLL
+#define LONG_MAX 0x7fffffffL
+#define LLONG_MAX 0x7fffffffffffffffLL
diff --git a/fusl/arch/powerpc/bits/mman.h b/fusl/arch/powerpc/bits/mman.h
index 6581edc..45d077b 100644
--- a/fusl/arch/powerpc/bits/mman.h
+++ b/fusl/arch/powerpc/bits/mman.h
@@ -1,60 +1,60 @@
-#define MAP_FAILED ((void *) -1)
+#define MAP_FAILED ((void*)-1)
 
-#define	PROT_NONE      0
-#define	PROT_READ      1
-#define	PROT_WRITE     2
-#define	PROT_EXEC      4
-#define	PROT_SAO       0x10
-#define	PROT_GROWSDOWN 0x01000000
-#define	PROT_GROWSUP   0x02000000
+#define PROT_NONE 0
+#define PROT_READ 1
+#define PROT_WRITE 2
+#define PROT_EXEC 4
+#define PROT_SAO 0x10
+#define PROT_GROWSDOWN 0x01000000
+#define PROT_GROWSUP 0x02000000
 
-#define	MAP_SHARED     0x01
-#define	MAP_PRIVATE    0x02
-#define	MAP_FIXED      0x10
+#define MAP_SHARED 0x01
+#define MAP_PRIVATE 0x02
+#define MAP_FIXED 0x10
 
-#define MAP_TYPE       0x0f
-#define MAP_FILE       0x00
-#define MAP_ANON       0x20
-#define MAP_ANONYMOUS  MAP_ANON
-#define MAP_NORESERVE  0x40
-#define MAP_GROWSDOWN  0x0100
-#define MAP_DENYWRITE  0x0800
+#define MAP_TYPE 0x0f
+#define MAP_FILE 0x00
+#define MAP_ANON 0x20
+#define MAP_ANONYMOUS MAP_ANON
+#define MAP_NORESERVE 0x40
+#define MAP_GROWSDOWN 0x0100
+#define MAP_DENYWRITE 0x0800
 #define MAP_EXECUTABLE 0x1000
-#define MAP_LOCKED     0x80
-#define MAP_POPULATE   0x8000
-#define MAP_NONBLOCK   0x10000
-#define MAP_STACK      0x20000
-#define MAP_HUGETLB    0x40000
+#define MAP_LOCKED 0x80
+#define MAP_POPULATE 0x8000
+#define MAP_NONBLOCK 0x10000
+#define MAP_STACK 0x20000
+#define MAP_HUGETLB 0x40000
 
-#define POSIX_MADV_NORMAL       0
-#define POSIX_MADV_RANDOM       1
-#define POSIX_MADV_SEQUENTIAL   2
-#define POSIX_MADV_WILLNEED     3
-#define POSIX_MADV_DONTNEED     0
+#define POSIX_MADV_NORMAL 0
+#define POSIX_MADV_RANDOM 1
+#define POSIX_MADV_SEQUENTIAL 2
+#define POSIX_MADV_WILLNEED 3
+#define POSIX_MADV_DONTNEED 0
 
-#define MS_ASYNC        1
-#define MS_INVALIDATE   2
-#define MS_SYNC         4
+#define MS_ASYNC 1
+#define MS_INVALIDATE 2
+#define MS_SYNC 4
 
-#define MCL_CURRENT     0x2000
-#define MCL_FUTURE      0x4000
-#define MCL_ONFAULT     0x8000
+#define MCL_CURRENT 0x2000
+#define MCL_FUTURE 0x4000
+#define MCL_ONFAULT 0x8000
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#define MADV_NORMAL      0
-#define MADV_RANDOM      1
-#define MADV_SEQUENTIAL  2
-#define MADV_WILLNEED    3
-#define MADV_DONTNEED    4
-#define MADV_REMOVE      9
-#define MADV_DONTFORK    10
-#define MADV_DOFORK      11
-#define MADV_MERGEABLE   12
+#define MADV_NORMAL 0
+#define MADV_RANDOM 1
+#define MADV_SEQUENTIAL 2
+#define MADV_WILLNEED 3
+#define MADV_DONTNEED 4
+#define MADV_REMOVE 9
+#define MADV_DONTFORK 10
+#define MADV_DOFORK 11
+#define MADV_MERGEABLE 12
 #define MADV_UNMERGEABLE 13
-#define MADV_HUGEPAGE    14
-#define MADV_NOHUGEPAGE  15
-#define MADV_DONTDUMP    16
-#define MADV_DODUMP      17
-#define MADV_HWPOISON    100
+#define MADV_HUGEPAGE 14
+#define MADV_NOHUGEPAGE 15
+#define MADV_DONTDUMP 16
+#define MADV_DODUMP 17
+#define MADV_HWPOISON 100
 #define MADV_SOFT_OFFLINE 101
 #endif
diff --git a/fusl/arch/powerpc/bits/msg.h b/fusl/arch/powerpc/bits/msg.h
index a6b9ad5..b803edc 100644
--- a/fusl/arch/powerpc/bits/msg.h
+++ b/fusl/arch/powerpc/bits/msg.h
@@ -1,16 +1,15 @@
-struct msqid_ds
-{
-	struct ipc_perm msg_perm;
-	int __unused1;
-	time_t msg_stime;
-	int __unused2;
-	time_t msg_rtime;
-	int __unused3;
-	time_t msg_ctime;
-	unsigned long msg_cbytes;
-	msgqnum_t msg_qnum;
-	msglen_t msg_qbytes;
-	pid_t msg_lspid;
-	pid_t msg_lrpid;
-	unsigned long __unused[2];
+struct msqid_ds {
+  struct ipc_perm msg_perm;
+  int __unused1;
+  time_t msg_stime;
+  int __unused2;
+  time_t msg_rtime;
+  int __unused3;
+  time_t msg_ctime;
+  unsigned long msg_cbytes;
+  msgqnum_t msg_qnum;
+  msglen_t msg_qbytes;
+  pid_t msg_lspid;
+  pid_t msg_lrpid;
+  unsigned long __unused[2];
 };
diff --git a/fusl/arch/powerpc/bits/posix.h b/fusl/arch/powerpc/bits/posix.h
index 30a3871..8897d37 100644
--- a/fusl/arch/powerpc/bits/posix.h
+++ b/fusl/arch/powerpc/bits/posix.h
@@ -1,2 +1,2 @@
-#define _POSIX_V6_ILP32_OFFBIG  1
-#define _POSIX_V7_ILP32_OFFBIG  1
+#define _POSIX_V6_ILP32_OFFBIG 1
+#define _POSIX_V7_ILP32_OFFBIG 1
diff --git a/fusl/arch/powerpc/bits/sem.h b/fusl/arch/powerpc/bits/sem.h
index bc2d6d1..3f02040 100644
--- a/fusl/arch/powerpc/bits/sem.h
+++ b/fusl/arch/powerpc/bits/sem.h
@@ -1,10 +1,10 @@
 struct semid_ds {
-	struct ipc_perm sem_perm;
-	int __unused1;
-	time_t sem_otime;
-	int  __unused2;
-	time_t sem_ctime;
-	unsigned short __sem_nsems_pad, sem_nsems;
-	long __unused3;
-	long __unused4;
+  struct ipc_perm sem_perm;
+  int __unused1;
+  time_t sem_otime;
+  int __unused2;
+  time_t sem_ctime;
+  unsigned short __sem_nsems_pad, sem_nsems;
+  long __unused3;
+  long __unused4;
 };
diff --git a/fusl/arch/powerpc/bits/shm.h b/fusl/arch/powerpc/bits/shm.h
index c698ef3..3c2f96d 100644
--- a/fusl/arch/powerpc/bits/shm.h
+++ b/fusl/arch/powerpc/bits/shm.h
@@ -1,30 +1,28 @@
 #define SHMLBA 4096
 
-struct shmid_ds
-{
-	struct ipc_perm shm_perm;
-	int __unused1;
-	time_t shm_atime;
-	int __unused2;
-	time_t shm_dtime;
-	int __unused3;
-	time_t shm_ctime;
-	int __unused4;
-	size_t shm_segsz;
-	pid_t shm_cpid;
-	pid_t shm_lpid;
-	unsigned long shm_nattch;
-	unsigned long __pad1;
-	unsigned long __pad2;
+struct shmid_ds {
+  struct ipc_perm shm_perm;
+  int __unused1;
+  time_t shm_atime;
+  int __unused2;
+  time_t shm_dtime;
+  int __unused3;
+  time_t shm_ctime;
+  int __unused4;
+  size_t shm_segsz;
+  pid_t shm_cpid;
+  pid_t shm_lpid;
+  unsigned long shm_nattch;
+  unsigned long __pad1;
+  unsigned long __pad2;
 };
 
 struct shminfo {
-	unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
+  unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
 };
 
 struct shm_info {
-	int __used_ids;
-	unsigned long shm_tot, shm_rss, shm_swp;
-	unsigned long __swap_attempts, __swap_successes;
+  int __used_ids;
+  unsigned long shm_tot, shm_rss, shm_swp;
+  unsigned long __swap_attempts, __swap_successes;
 };
-
diff --git a/fusl/arch/powerpc/bits/signal.h b/fusl/arch/powerpc/bits/signal.h
index 17a7354..11a2e9b 100644
--- a/fusl/arch/powerpc/bits/signal.h
+++ b/fusl/arch/powerpc/bits/signal.h
@@ -1,5 +1,5 @@
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define MINSIGSTKSZ 4096
@@ -11,110 +11,109 @@
 typedef unsigned long greg_t, gregset_t[48];
 
 typedef struct {
-	double fpregs[32];
-	double fpscr;
-	unsigned _pad[2];
+  double fpregs[32];
+  double fpscr;
+  unsigned _pad[2];
 } fpregset_t;
 
 typedef struct {
-	unsigned vrregs[32][4];
-	unsigned vrsave;
-	unsigned _pad[2];
-	unsigned vscr;
+  unsigned vrregs[32][4];
+  unsigned vrsave;
+  unsigned _pad[2];
+  unsigned vscr;
 } vrregset_t;
 
-struct sigcontext
-{
-	unsigned long _unused[4];
-	int signal;
-	unsigned long handler;
-	unsigned long oldmask;
-	void *regs;
+struct sigcontext {
+  unsigned long _unused[4];
+  int signal;
+  unsigned long handler;
+  unsigned long oldmask;
+  void* regs;
 };
 
 typedef struct {
-	gregset_t gregs;
-	fpregset_t fpregs;
-	vrregset_t vrregs
+  gregset_t gregs;
+  fpregset_t fpregs;
+  vrregset_t vrregs
 #ifdef __GNUC__
-	__attribute__((__aligned__(16)))
+      __attribute__((__aligned__(16)))
 #endif
-	;
+      ;
 } mcontext_t;
 
 #else
 
 typedef struct {
-	long __regs[48+68+4*32+4]
+  long __regs[48 + 68 + 4 * 32 + 4]
 #ifdef __GNUC__
-	__attribute__((__aligned__(16)))
+      __attribute__((__aligned__(16)))
 #endif
-	;
+      ;
 } mcontext_t;
 
 #endif
 
 struct sigaltstack {
-	void *ss_sp;
-	int ss_flags;
-	size_t ss_size;
+  void* ss_sp;
+  int ss_flags;
+  size_t ss_size;
 };
 
 typedef struct __ucontext {
-	unsigned long uc_flags;
-	struct __ucontext *uc_link;
-	stack_t uc_stack;
-	int uc_pad[7];
-	mcontext_t *uc_regs;
-	sigset_t uc_sigmask;
-        int             uc_pad2[3];
-	mcontext_t uc_mcontext;
+  unsigned long uc_flags;
+  struct __ucontext* uc_link;
+  stack_t uc_stack;
+  int uc_pad[7];
+  mcontext_t* uc_regs;
+  sigset_t uc_sigmask;
+  int uc_pad2[3];
+  mcontext_t uc_mcontext;
 } ucontext_t;
 
-#define SA_NOCLDSTOP  1U
-#define SA_NOCLDWAIT  2U
-#define SA_SIGINFO    4U
-#define SA_ONSTACK    0x08000000U
-#define SA_RESTART    0x10000000U
-#define SA_NODEFER    0x40000000U
-#define SA_RESETHAND  0x80000000U
-#define SA_RESTORER   0x04000000U
+#define SA_NOCLDSTOP 1U
+#define SA_NOCLDWAIT 2U
+#define SA_SIGINFO 4U
+#define SA_ONSTACK 0x08000000U
+#define SA_RESTART 0x10000000U
+#define SA_NODEFER 0x40000000U
+#define SA_RESETHAND 0x80000000U
+#define SA_RESTORER 0x04000000U
 
 #endif
 
-#define SIGHUP    1
-#define SIGINT    2
-#define SIGQUIT   3
-#define SIGILL    4
-#define SIGTRAP   5
-#define SIGABRT   6
-#define SIGIOT    SIGABRT
-#define SIGBUS    7
-#define SIGFPE    8
-#define SIGKILL   9
-#define SIGUSR1   10
-#define SIGSEGV   11
-#define SIGUSR2   12
-#define SIGPIPE   13
-#define SIGALRM   14
-#define SIGTERM   15
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT SIGABRT
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
 #define SIGSTKFLT 16
-#define SIGCHLD   17
-#define SIGCONT   18
-#define SIGSTOP   19
-#define SIGTSTP   20
-#define SIGTTIN   21
-#define SIGTTOU   22
-#define SIGURG    23
-#define SIGXCPU   24
-#define SIGXFSZ   25
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
 #define SIGVTALRM 26
-#define SIGPROF   27
-#define SIGWINCH  28
-#define SIGIO     29
-#define SIGPOLL   29
-#define SIGPWR    30
-#define SIGSYS    31
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL 29
+#define SIGPWR 30
+#define SIGSYS 31
 #define SIGUNUSED SIGSYS
 
 #define _NSIG 65
diff --git a/fusl/arch/powerpc/bits/socket.h b/fusl/arch/powerpc/bits/socket.h
index 1808791..9b07159 100644
--- a/fusl/arch/powerpc/bits/socket.h
+++ b/fusl/arch/powerpc/bits/socket.h
@@ -1,44 +1,42 @@
-struct msghdr
-{
-	void *msg_name;
-	socklen_t msg_namelen;
-	struct iovec *msg_iov;
-	int msg_iovlen;
-	void *msg_control;
-	socklen_t msg_controllen;
-	int msg_flags;
+struct msghdr {
+  void* msg_name;
+  socklen_t msg_namelen;
+  struct iovec* msg_iov;
+  int msg_iovlen;
+  void* msg_control;
+  socklen_t msg_controllen;
+  int msg_flags;
 };
 
-struct cmsghdr
-{
-	socklen_t cmsg_len;
-	int cmsg_level;
-	int cmsg_type;
+struct cmsghdr {
+  socklen_t cmsg_len;
+  int cmsg_level;
+  int cmsg_type;
 };
 
-#define SO_DEBUG        1
-#define SO_REUSEADDR    2
-#define SO_TYPE         3
-#define SO_ERROR        4
-#define SO_DONTROUTE    5
-#define SO_BROADCAST    6
-#define SO_SNDBUF       7
-#define SO_RCVBUF       8
-#define SO_KEEPALIVE    9
-#define SO_OOBINLINE    10
-#define SO_NO_CHECK     11
-#define SO_PRIORITY     12
-#define SO_LINGER       13
-#define SO_BSDCOMPAT    14
-#define SO_REUSEPORT    15
-#define SO_RCVLOWAT     16
-#define SO_SNDLOWAT     17
-#define SO_RCVTIMEO     18
-#define SO_SNDTIMEO     19
-#define SO_PASSCRED     20
-#define SO_PEERCRED     21
-#define SO_ACCEPTCONN   30
-#define SO_SNDBUFFORCE  32
-#define SO_RCVBUFFORCE  33
-#define SO_PROTOCOL     38
-#define SO_DOMAIN       39
+#define SO_DEBUG 1
+#define SO_REUSEADDR 2
+#define SO_TYPE 3
+#define SO_ERROR 4
+#define SO_DONTROUTE 5
+#define SO_BROADCAST 6
+#define SO_SNDBUF 7
+#define SO_RCVBUF 8
+#define SO_KEEPALIVE 9
+#define SO_OOBINLINE 10
+#define SO_NO_CHECK 11
+#define SO_PRIORITY 12
+#define SO_LINGER 13
+#define SO_BSDCOMPAT 14
+#define SO_REUSEPORT 15
+#define SO_RCVLOWAT 16
+#define SO_SNDLOWAT 17
+#define SO_RCVTIMEO 18
+#define SO_SNDTIMEO 19
+#define SO_PASSCRED 20
+#define SO_PEERCRED 21
+#define SO_ACCEPTCONN 30
+#define SO_SNDBUFFORCE 32
+#define SO_RCVBUFFORCE 33
+#define SO_PROTOCOL 38
+#define SO_DOMAIN 39
diff --git a/fusl/arch/powerpc/bits/stat.h b/fusl/arch/powerpc/bits/stat.h
index bd524a1..01abe4f 100644
--- a/fusl/arch/powerpc/bits/stat.h
+++ b/fusl/arch/powerpc/bits/stat.h
@@ -1,21 +1,20 @@
 /* copied from kernel definition, but with padding replaced
  * by the corresponding correctly-sized userspace types. */
 
-struct stat
-{
-	dev_t st_dev;
-	ino_t st_ino;
-	mode_t st_mode;
-	nlink_t st_nlink;
-	uid_t st_uid;
-	gid_t st_gid;
-	dev_t st_rdev;
-	short __st_rdev_padding;
-	off_t st_size;
-	blksize_t st_blksize;
-	blkcnt_t st_blocks;
-	struct timespec st_atim;
-	struct timespec st_mtim;
-	struct timespec st_ctim;
-	unsigned __unused[2];
+struct stat {
+  dev_t st_dev;
+  ino_t st_ino;
+  mode_t st_mode;
+  nlink_t st_nlink;
+  uid_t st_uid;
+  gid_t st_gid;
+  dev_t st_rdev;
+  short __st_rdev_padding;
+  off_t st_size;
+  blksize_t st_blksize;
+  blkcnt_t st_blocks;
+  struct timespec st_atim;
+  struct timespec st_mtim;
+  struct timespec st_ctim;
+  unsigned __unused[2];
 };
diff --git a/fusl/arch/powerpc/bits/stdint.h b/fusl/arch/powerpc/bits/stdint.h
index d1b2712..93ec5df 100644
--- a/fusl/arch/powerpc/bits/stdint.h
+++ b/fusl/arch/powerpc/bits/stdint.h
@@ -3,18 +3,18 @@
 typedef uint32_t uint_fast16_t;
 typedef uint32_t uint_fast32_t;
 
-#define INT_FAST16_MIN  INT32_MIN
-#define INT_FAST32_MIN  INT32_MIN
+#define INT_FAST16_MIN INT32_MIN
+#define INT_FAST32_MIN INT32_MIN
 
-#define INT_FAST16_MAX  INT32_MAX
-#define INT_FAST32_MAX  INT32_MAX
+#define INT_FAST16_MAX INT32_MAX
+#define INT_FAST32_MAX INT32_MAX
 
 #define UINT_FAST16_MAX UINT32_MAX
 #define UINT_FAST32_MAX UINT32_MAX
 
-#define INTPTR_MIN      INT32_MIN
-#define INTPTR_MAX      INT32_MAX
-#define UINTPTR_MAX     UINT32_MAX
-#define PTRDIFF_MIN     INT32_MIN
-#define PTRDIFF_MAX     INT32_MAX
-#define SIZE_MAX        UINT32_MAX
+#define INTPTR_MIN INT32_MIN
+#define INTPTR_MAX INT32_MAX
+#define UINTPTR_MAX UINT32_MAX
+#define PTRDIFF_MIN INT32_MIN
+#define PTRDIFF_MAX INT32_MAX
+#define SIZE_MAX UINT32_MAX
diff --git a/fusl/arch/powerpc/bits/syscall.h b/fusl/arch/powerpc/bits/syscall.h
index e02f56f..583f493 100644
--- a/fusl/arch/powerpc/bits/syscall.h
+++ b/fusl/arch/powerpc/bits/syscall.h
@@ -1,744 +1,744 @@
-#define __NR_restart_syscall          0
-#define __NR_exit                     1
-#define __NR_fork                     2
-#define __NR_read                     3
-#define __NR_write                    4
-#define __NR_open                     5
-#define __NR_close                    6
-#define __NR_waitpid                  7
-#define __NR_creat                    8
-#define __NR_link                     9
-#define __NR_unlink                  10
-#define __NR_execve                  11
-#define __NR_chdir                   12
-#define __NR_time                    13
-#define __NR_mknod                   14
-#define __NR_chmod                   15
-#define __NR_lchown                  16
-#define __NR_break                   17
-#define __NR_oldstat                 18
-#define __NR_lseek                   19
-#define __NR_getpid                  20
-#define __NR_mount                   21
-#define __NR_umount                  22
-#define __NR_setuid                  23
-#define __NR_getuid                  24
-#define __NR_stime                   25
-#define __NR_ptrace                  26
-#define __NR_alarm                   27
-#define __NR_oldfstat                28
-#define __NR_pause                   29
-#define __NR_utime                   30
-#define __NR_stty                    31
-#define __NR_gtty                    32
-#define __NR_access                  33
-#define __NR_nice                    34
-#define __NR_ftime                   35
-#define __NR_sync                    36
-#define __NR_kill                    37
-#define __NR_rename                  38
-#define __NR_mkdir                   39
-#define __NR_rmdir                   40
-#define __NR_dup                     41
-#define __NR_pipe                    42
-#define __NR_times                   43
-#define __NR_prof                    44
-#define __NR_brk                     45
-#define __NR_setgid                  46
-#define __NR_getgid                  47
-#define __NR_signal                  48
-#define __NR_geteuid                 49
-#define __NR_getegid                 50
-#define __NR_acct                    51
-#define __NR_umount2                 52
-#define __NR_lock                    53
-#define __NR_ioctl                   54
-#define __NR_fcntl                   55
-#define __NR_mpx                     56
-#define __NR_setpgid                 57
-#define __NR_ulimit                  58
-#define __NR_oldolduname             59
-#define __NR_umask                   60
-#define __NR_chroot                  61
-#define __NR_ustat                   62
-#define __NR_dup2                    63
-#define __NR_getppid                 64
-#define __NR_getpgrp                 65
-#define __NR_setsid                  66
-#define __NR_sigaction               67
-#define __NR_sgetmask                68
-#define __NR_ssetmask                69
-#define __NR_setreuid                70
-#define __NR_setregid                71
-#define __NR_sigsuspend              72
-#define __NR_sigpending              73
-#define __NR_sethostname             74
-#define __NR_setrlimit               75
-#define __NR_getrlimit               76
-#define __NR_getrusage               77
-#define __NR_gettimeofday            78
-#define __NR_settimeofday            79
-#define __NR_getgroups               80
-#define __NR_setgroups               81
-#define __NR_select                  82
-#define __NR_symlink                 83
-#define __NR_oldlstat                84
-#define __NR_readlink                85
-#define __NR_uselib                  86
-#define __NR_swapon                  87
-#define __NR_reboot                  88
-#define __NR_readdir                 89
-#define __NR_mmap                    90
-#define __NR_munmap                  91
-#define __NR_truncate                92
-#define __NR_ftruncate               93
-#define __NR_fchmod                  94
-#define __NR_fchown                  95
-#define __NR_getpriority             96
-#define __NR_setpriority             97
-#define __NR_profil                  98
-#define __NR_statfs                  99
-#define __NR_fstatfs                100
-#define __NR_ioperm                 101
-#define __NR_socketcall             102
-#define __NR_syslog                 103
-#define __NR_setitimer              104
-#define __NR_getitimer              105
-#define __NR_stat                   106
-#define __NR_lstat                  107
-#define __NR_fstat                  108
-#define __NR_olduname               109
-#define __NR_iopl                   110
-#define __NR_vhangup                111
-#define __NR_idle                   112
-#define __NR_vm86                   113
-#define __NR_wait4                  114
-#define __NR_swapoff                115
-#define __NR_sysinfo                116
-#define __NR_ipc                    117
-#define __NR_fsync                  118
-#define __NR_sigreturn              119
-#define __NR_clone                  120
-#define __NR_setdomainname          121
-#define __NR_uname                  122
-#define __NR_modify_ldt             123
-#define __NR_adjtimex               124
-#define __NR_mprotect               125
-#define __NR_sigprocmask            126
-#define __NR_create_module          127
-#define __NR_init_module            128
-#define __NR_delete_module          129
-#define __NR_get_kernel_syms        130
-#define __NR_quotactl               131
-#define __NR_getpgid                132
-#define __NR_fchdir                 133
-#define __NR_bdflush                134
-#define __NR_sysfs                  135
-#define __NR_personality            136
-#define __NR_afs_syscall            137
-#define __NR_setfsuid               138
-#define __NR_setfsgid               139
-#define __NR__llseek                140
-#define __NR_getdents               141
-#define __NR__newselect             142
-#define __NR_flock                  143
-#define __NR_msync                  144
-#define __NR_readv                  145
-#define __NR_writev                 146
-#define __NR_getsid                 147
-#define __NR_fdatasync              148
-#define __NR__sysctl                149
-#define __NR_mlock                  150
-#define __NR_munlock                151
-#define __NR_mlockall               152
-#define __NR_munlockall             153
-#define __NR_sched_setparam         154
-#define __NR_sched_getparam         155
-#define __NR_sched_setscheduler     156
-#define __NR_sched_getscheduler     157
-#define __NR_sched_yield            158
+#define __NR_restart_syscall 0
+#define __NR_exit 1
+#define __NR_fork 2
+#define __NR_read 3
+#define __NR_write 4
+#define __NR_open 5
+#define __NR_close 6
+#define __NR_waitpid 7
+#define __NR_creat 8
+#define __NR_link 9
+#define __NR_unlink 10
+#define __NR_execve 11
+#define __NR_chdir 12
+#define __NR_time 13
+#define __NR_mknod 14
+#define __NR_chmod 15
+#define __NR_lchown 16
+#define __NR_break 17
+#define __NR_oldstat 18
+#define __NR_lseek 19
+#define __NR_getpid 20
+#define __NR_mount 21
+#define __NR_umount 22
+#define __NR_setuid 23
+#define __NR_getuid 24
+#define __NR_stime 25
+#define __NR_ptrace 26
+#define __NR_alarm 27
+#define __NR_oldfstat 28
+#define __NR_pause 29
+#define __NR_utime 30
+#define __NR_stty 31
+#define __NR_gtty 32
+#define __NR_access 33
+#define __NR_nice 34
+#define __NR_ftime 35
+#define __NR_sync 36
+#define __NR_kill 37
+#define __NR_rename 38
+#define __NR_mkdir 39
+#define __NR_rmdir 40
+#define __NR_dup 41
+#define __NR_pipe 42
+#define __NR_times 43
+#define __NR_prof 44
+#define __NR_brk 45
+#define __NR_setgid 46
+#define __NR_getgid 47
+#define __NR_signal 48
+#define __NR_geteuid 49
+#define __NR_getegid 50
+#define __NR_acct 51
+#define __NR_umount2 52
+#define __NR_lock 53
+#define __NR_ioctl 54
+#define __NR_fcntl 55
+#define __NR_mpx 56
+#define __NR_setpgid 57
+#define __NR_ulimit 58
+#define __NR_oldolduname 59
+#define __NR_umask 60
+#define __NR_chroot 61
+#define __NR_ustat 62
+#define __NR_dup2 63
+#define __NR_getppid 64
+#define __NR_getpgrp 65
+#define __NR_setsid 66
+#define __NR_sigaction 67
+#define __NR_sgetmask 68
+#define __NR_ssetmask 69
+#define __NR_setreuid 70
+#define __NR_setregid 71
+#define __NR_sigsuspend 72
+#define __NR_sigpending 73
+#define __NR_sethostname 74
+#define __NR_setrlimit 75
+#define __NR_getrlimit 76
+#define __NR_getrusage 77
+#define __NR_gettimeofday 78
+#define __NR_settimeofday 79
+#define __NR_getgroups 80
+#define __NR_setgroups 81
+#define __NR_select 82
+#define __NR_symlink 83
+#define __NR_oldlstat 84
+#define __NR_readlink 85
+#define __NR_uselib 86
+#define __NR_swapon 87
+#define __NR_reboot 88
+#define __NR_readdir 89
+#define __NR_mmap 90
+#define __NR_munmap 91
+#define __NR_truncate 92
+#define __NR_ftruncate 93
+#define __NR_fchmod 94
+#define __NR_fchown 95
+#define __NR_getpriority 96
+#define __NR_setpriority 97
+#define __NR_profil 98
+#define __NR_statfs 99
+#define __NR_fstatfs 100
+#define __NR_ioperm 101
+#define __NR_socketcall 102
+#define __NR_syslog 103
+#define __NR_setitimer 104
+#define __NR_getitimer 105
+#define __NR_stat 106
+#define __NR_lstat 107
+#define __NR_fstat 108
+#define __NR_olduname 109
+#define __NR_iopl 110
+#define __NR_vhangup 111
+#define __NR_idle 112
+#define __NR_vm86 113
+#define __NR_wait4 114
+#define __NR_swapoff 115
+#define __NR_sysinfo 116
+#define __NR_ipc 117
+#define __NR_fsync 118
+#define __NR_sigreturn 119
+#define __NR_clone 120
+#define __NR_setdomainname 121
+#define __NR_uname 122
+#define __NR_modify_ldt 123
+#define __NR_adjtimex 124
+#define __NR_mprotect 125
+#define __NR_sigprocmask 126
+#define __NR_create_module 127
+#define __NR_init_module 128
+#define __NR_delete_module 129
+#define __NR_get_kernel_syms 130
+#define __NR_quotactl 131
+#define __NR_getpgid 132
+#define __NR_fchdir 133
+#define __NR_bdflush 134
+#define __NR_sysfs 135
+#define __NR_personality 136
+#define __NR_afs_syscall 137
+#define __NR_setfsuid 138
+#define __NR_setfsgid 139
+#define __NR__llseek 140
+#define __NR_getdents 141
+#define __NR__newselect 142
+#define __NR_flock 143
+#define __NR_msync 144
+#define __NR_readv 145
+#define __NR_writev 146
+#define __NR_getsid 147
+#define __NR_fdatasync 148
+#define __NR__sysctl 149
+#define __NR_mlock 150
+#define __NR_munlock 151
+#define __NR_mlockall 152
+#define __NR_munlockall 153
+#define __NR_sched_setparam 154
+#define __NR_sched_getparam 155
+#define __NR_sched_setscheduler 156
+#define __NR_sched_getscheduler 157
+#define __NR_sched_yield 158
 #define __NR_sched_get_priority_max 159
 #define __NR_sched_get_priority_min 160
-#define __NR_sched_rr_get_interval  161
-#define __NR_nanosleep              162
-#define __NR_mremap                 163
-#define __NR_setresuid32            164
-#define __NR_setresuid              164
-#define __NR_getresuid32            165
-#define __NR_getresuid              165
-#define __NR_query_module           166
-#define __NR_poll                   167
-#define __NR_nfsservctl             168
-#define __NR_setresgid32            169
-#define __NR_setresgid              169
-#define __NR_getresgid32            170
-#define __NR_getresgid              170
-#define __NR_prctl                  171
-#define __NR_rt_sigreturn           172
-#define __NR_rt_sigaction           173
-#define __NR_rt_sigprocmask         174
-#define __NR_rt_sigpending          175
-#define __NR_rt_sigtimedwait        176
-#define __NR_rt_sigqueueinfo        177
-#define __NR_rt_sigsuspend          178
-#define __NR_pread64                179
-#define __NR_pwrite64               180
-#define __NR_chown                  181
-#define __NR_getcwd                 182
-#define __NR_capget                 183
-#define __NR_capset                 184
-#define __NR_sigaltstack            185
-#define __NR_sendfile               186
-#define __NR_getpmsg                187
-#define __NR_putpmsg                188
-#define __NR_vfork                  189
-#define __NR_ugetrlimit             190
-#define __NR_readahead              191
-#define __NR_mmap2                  192
-#define __NR_truncate64             193
-#define __NR_ftruncate64            194
-#define __NR_stat64                 195
-#define __NR_lstat64                196
-#define __NR_fstat64                197
-#define __NR_pciconfig_read         198
-#define __NR_pciconfig_write        199
-#define __NR_pciconfig_iobase       200
-#define __NR_multiplexer            201
-#define __NR_getdents64             202
-#define __NR_pivot_root             203
-#define __NR_fcntl64                204
-#define __NR_madvise                205
-#define __NR_mincore                206
-#define __NR_gettid                 207
-#define __NR_tkill                  208
-#define __NR_setxattr               209
-#define __NR_lsetxattr              210
-#define __NR_fsetxattr              211
-#define __NR_getxattr               212
-#define __NR_lgetxattr              213
-#define __NR_fgetxattr              214
-#define __NR_listxattr              215
-#define __NR_llistxattr             216
-#define __NR_flistxattr             217
-#define __NR_removexattr            218
-#define __NR_lremovexattr           219
-#define __NR_fremovexattr           220
-#define __NR_futex                  221
-#define __NR_sched_setaffinity      222
-#define __NR_sched_getaffinity      223
-#define __NR_tuxcall                225
-#define __NR_sendfile64             226
-#define __NR_io_setup               227
-#define __NR_io_destroy             228
-#define __NR_io_getevents           229
-#define __NR_io_submit              230
-#define __NR_io_cancel              231
-#define __NR_set_tid_address        232
-#define __NR_fadvise64              233
-#define __NR_exit_group             234
-#define __NR_lookup_dcookie         235
-#define __NR_epoll_create           236
-#define __NR_epoll_ctl              237
-#define __NR_epoll_wait             238
-#define __NR_remap_file_pages       239
-#define __NR_timer_create           240
-#define __NR_timer_settime          241
-#define __NR_timer_gettime          242
-#define __NR_timer_getoverrun       243
-#define __NR_timer_delete           244
-#define __NR_clock_settime          245
-#define __NR_clock_gettime          246
-#define __NR_clock_getres           247
-#define __NR_clock_nanosleep        248
-#define __NR_swapcontext            249
-#define __NR_tgkill                 250
-#define __NR_utimes                 251
-#define __NR_statfs64               252
-#define __NR_fstatfs64              253
-#define __NR_fadvise64_64           254
-#define __NR_rtas		255
+#define __NR_sched_rr_get_interval 161
+#define __NR_nanosleep 162
+#define __NR_mremap 163
+#define __NR_setresuid32 164
+#define __NR_setresuid 164
+#define __NR_getresuid32 165
+#define __NR_getresuid 165
+#define __NR_query_module 166
+#define __NR_poll 167
+#define __NR_nfsservctl 168
+#define __NR_setresgid32 169
+#define __NR_setresgid 169
+#define __NR_getresgid32 170
+#define __NR_getresgid 170
+#define __NR_prctl 171
+#define __NR_rt_sigreturn 172
+#define __NR_rt_sigaction 173
+#define __NR_rt_sigprocmask 174
+#define __NR_rt_sigpending 175
+#define __NR_rt_sigtimedwait 176
+#define __NR_rt_sigqueueinfo 177
+#define __NR_rt_sigsuspend 178
+#define __NR_pread64 179
+#define __NR_pwrite64 180
+#define __NR_chown 181
+#define __NR_getcwd 182
+#define __NR_capget 183
+#define __NR_capset 184
+#define __NR_sigaltstack 185
+#define __NR_sendfile 186
+#define __NR_getpmsg 187
+#define __NR_putpmsg 188
+#define __NR_vfork 189
+#define __NR_ugetrlimit 190
+#define __NR_readahead 191
+#define __NR_mmap2 192
+#define __NR_truncate64 193
+#define __NR_ftruncate64 194
+#define __NR_stat64 195
+#define __NR_lstat64 196
+#define __NR_fstat64 197
+#define __NR_pciconfig_read 198
+#define __NR_pciconfig_write 199
+#define __NR_pciconfig_iobase 200
+#define __NR_multiplexer 201
+#define __NR_getdents64 202
+#define __NR_pivot_root 203
+#define __NR_fcntl64 204
+#define __NR_madvise 205
+#define __NR_mincore 206
+#define __NR_gettid 207
+#define __NR_tkill 208
+#define __NR_setxattr 209
+#define __NR_lsetxattr 210
+#define __NR_fsetxattr 211
+#define __NR_getxattr 212
+#define __NR_lgetxattr 213
+#define __NR_fgetxattr 214
+#define __NR_listxattr 215
+#define __NR_llistxattr 216
+#define __NR_flistxattr 217
+#define __NR_removexattr 218
+#define __NR_lremovexattr 219
+#define __NR_fremovexattr 220
+#define __NR_futex 221
+#define __NR_sched_setaffinity 222
+#define __NR_sched_getaffinity 223
+#define __NR_tuxcall 225
+#define __NR_sendfile64 226
+#define __NR_io_setup 227
+#define __NR_io_destroy 228
+#define __NR_io_getevents 229
+#define __NR_io_submit 230
+#define __NR_io_cancel 231
+#define __NR_set_tid_address 232
+#define __NR_fadvise64 233
+#define __NR_exit_group 234
+#define __NR_lookup_dcookie 235
+#define __NR_epoll_create 236
+#define __NR_epoll_ctl 237
+#define __NR_epoll_wait 238
+#define __NR_remap_file_pages 239
+#define __NR_timer_create 240
+#define __NR_timer_settime 241
+#define __NR_timer_gettime 242
+#define __NR_timer_getoverrun 243
+#define __NR_timer_delete 244
+#define __NR_clock_settime 245
+#define __NR_clock_gettime 246
+#define __NR_clock_getres 247
+#define __NR_clock_nanosleep 248
+#define __NR_swapcontext 249
+#define __NR_tgkill 250
+#define __NR_utimes 251
+#define __NR_statfs64 252
+#define __NR_fstatfs64 253
+#define __NR_fadvise64_64 254
+#define __NR_rtas 255
 #define __NR_sys_debug_setcontext 256
-#define __NR_migrate_pages	258
-#define __NR_mbind		259
-#define __NR_get_mempolicy	260
-#define __NR_set_mempolicy	261
-#define __NR_mq_open		262
-#define __NR_mq_unlink		263
-#define __NR_mq_timedsend	264
-#define __NR_mq_timedreceive	265
-#define __NR_mq_notify		266
-#define __NR_mq_getsetattr	267
-#define __NR_kexec_load		268
-#define __NR_add_key		269
-#define __NR_request_key	270
-#define __NR_keyctl		271
-#define __NR_waitid		272
-#define __NR_ioprio_set		273
-#define __NR_ioprio_get		274
-#define __NR_inotify_init	275
-#define __NR_inotify_add_watch	276
-#define __NR_inotify_rm_watch	277
-#define __NR_spu_run		278
-#define __NR_spu_create		279
-#define __NR_pselect6		280
-#define __NR_ppoll		281
-#define __NR_unshare		282
-#define __NR_splice		283
-#define __NR_tee		284
-#define __NR_vmsplice		285
-#define __NR_openat		286
-#define __NR_mkdirat		287
-#define __NR_mknodat		288
-#define __NR_fchownat		289
-#define __NR_futimesat		290
-#define __NR_fstatat64		291
-#define __NR_unlinkat		292
-#define __NR_renameat		293
-#define __NR_linkat		294
-#define __NR_symlinkat		295
-#define __NR_readlinkat		296
-#define __NR_fchmodat		297
-#define __NR_faccessat		298
-#define __NR_get_robust_list	299
-#define __NR_set_robust_list	300
-#define __NR_move_pages		301
-#define __NR_getcpu		302
-#define __NR_epoll_pwait	303
-#define __NR_utimensat		304
-#define __NR_signalfd		305
-#define __NR_timerfd		306
-#define __NR_timerfd_create     306
-#define __NR_eventfd		307
-#define __NR_sync_file_range2	308
-#define __NR_fallocate		309
-#define __NR_subpage_prot		310
-#define __NR_timerfd_settime	311
-#define __NR_timerfd_gettime	312
-#define __NR_signalfd4		313
-#define __NR_eventfd2		314
-#define __NR_epoll_create1	315
-#define __NR_dup3			316
-#define __NR_pipe2		317
-#define __NR_inotify_init1	318
-#define __NR_perf_event_open       319
-#define __NR_preadv                320
-#define __NR_pwritev               321
-#define __NR_rt_tgsigqueueinfo     322
-#define __NR_fanotify_init         323
-#define __NR_fanotify_mark         324
-#define __NR_prlimit64             325
-#define __NR_socket                326
-#define __NR_bind                  327
-#define __NR_connect               328
-#define __NR_listen                329
-#define __NR_accept                330
-#define __NR_getsockname           331
-#define __NR_getpeername           332
-#define __NR_socketpair            333
-#define __NR_send                  334
-#define __NR_sendto                335
-#define __NR_recv                  336
-#define __NR_recvfrom              337
-#define __NR_shutdown              338
-#define __NR_setsockopt            339
-#define __NR_getsockopt            340
-#define __NR_sendmsg               341
-#define __NR_recvmsg               342
-#define __NR_recvmmsg              343
-#define __NR_accept4               344
-#define __NR_name_to_handle_at     345
-#define __NR_open_by_handle_at     346
-#define __NR_clock_adjtime         347
-#define __NR_syncfs                348
-#define __NR_sendmmsg              349
-#define __NR_setns                 350
-#define __NR_process_vm_readv      351
-#define __NR_process_vm_writev     352
-#define __NR_finit_module          353
-#define __NR_kcmp                  354
-#define __NR_sched_setattr         355
-#define __NR_sched_getattr         356
-#define __NR_renameat2             357
-#define __NR_seccomp               358
-#define __NR_getrandom             359
-#define __NR_memfd_create          360
-#define __NR_bpf                   361
-#define __NR_execveat              362
-#define __NR_switch_endian         363
-#define __NR_userfaultfd           364
-#define __NR_membarrier            365
-#define __NR_mlock2                378
+#define __NR_migrate_pages 258
+#define __NR_mbind 259
+#define __NR_get_mempolicy 260
+#define __NR_set_mempolicy 261
+#define __NR_mq_open 262
+#define __NR_mq_unlink 263
+#define __NR_mq_timedsend 264
+#define __NR_mq_timedreceive 265
+#define __NR_mq_notify 266
+#define __NR_mq_getsetattr 267
+#define __NR_kexec_load 268
+#define __NR_add_key 269
+#define __NR_request_key 270
+#define __NR_keyctl 271
+#define __NR_waitid 272
+#define __NR_ioprio_set 273
+#define __NR_ioprio_get 274
+#define __NR_inotify_init 275
+#define __NR_inotify_add_watch 276
+#define __NR_inotify_rm_watch 277
+#define __NR_spu_run 278
+#define __NR_spu_create 279
+#define __NR_pselect6 280
+#define __NR_ppoll 281
+#define __NR_unshare 282
+#define __NR_splice 283
+#define __NR_tee 284
+#define __NR_vmsplice 285
+#define __NR_openat 286
+#define __NR_mkdirat 287
+#define __NR_mknodat 288
+#define __NR_fchownat 289
+#define __NR_futimesat 290
+#define __NR_fstatat64 291
+#define __NR_unlinkat 292
+#define __NR_renameat 293
+#define __NR_linkat 294
+#define __NR_symlinkat 295
+#define __NR_readlinkat 296
+#define __NR_fchmodat 297
+#define __NR_faccessat 298
+#define __NR_get_robust_list 299
+#define __NR_set_robust_list 300
+#define __NR_move_pages 301
+#define __NR_getcpu 302
+#define __NR_epoll_pwait 303
+#define __NR_utimensat 304
+#define __NR_signalfd 305
+#define __NR_timerfd 306
+#define __NR_timerfd_create 306
+#define __NR_eventfd 307
+#define __NR_sync_file_range2 308
+#define __NR_fallocate 309
+#define __NR_subpage_prot 310
+#define __NR_timerfd_settime 311
+#define __NR_timerfd_gettime 312
+#define __NR_signalfd4 313
+#define __NR_eventfd2 314
+#define __NR_epoll_create1 315
+#define __NR_dup3 316
+#define __NR_pipe2 317
+#define __NR_inotify_init1 318
+#define __NR_perf_event_open 319
+#define __NR_preadv 320
+#define __NR_pwritev 321
+#define __NR_rt_tgsigqueueinfo 322
+#define __NR_fanotify_init 323
+#define __NR_fanotify_mark 324
+#define __NR_prlimit64 325
+#define __NR_socket 326
+#define __NR_bind 327
+#define __NR_connect 328
+#define __NR_listen 329
+#define __NR_accept 330
+#define __NR_getsockname 331
+#define __NR_getpeername 332
+#define __NR_socketpair 333
+#define __NR_send 334
+#define __NR_sendto 335
+#define __NR_recv 336
+#define __NR_recvfrom 337
+#define __NR_shutdown 338
+#define __NR_setsockopt 339
+#define __NR_getsockopt 340
+#define __NR_sendmsg 341
+#define __NR_recvmsg 342
+#define __NR_recvmmsg 343
+#define __NR_accept4 344
+#define __NR_name_to_handle_at 345
+#define __NR_open_by_handle_at 346
+#define __NR_clock_adjtime 347
+#define __NR_syncfs 348
+#define __NR_sendmmsg 349
+#define __NR_setns 350
+#define __NR_process_vm_readv 351
+#define __NR_process_vm_writev 352
+#define __NR_finit_module 353
+#define __NR_kcmp 354
+#define __NR_sched_setattr 355
+#define __NR_sched_getattr 356
+#define __NR_renameat2 357
+#define __NR_seccomp 358
+#define __NR_getrandom 359
+#define __NR_memfd_create 360
+#define __NR_bpf 361
+#define __NR_execveat 362
+#define __NR_switch_endian 363
+#define __NR_userfaultfd 364
+#define __NR_membarrier 365
+#define __NR_mlock2 378
 
 /*
  * repeated with SYS prefix
  */
-#define SYS_restart_syscall          0
-#define SYS_exit                     1
-#define SYS_fork                     2
-#define SYS_read                     3
-#define SYS_write                    4
-#define SYS_open                     5
-#define SYS_close                    6
-#define SYS_waitpid                  7
-#define SYS_creat                    8
-#define SYS_link                     9
-#define SYS_unlink                  10
-#define SYS_execve                  11
-#define SYS_chdir                   12
-#define SYS_time                    13
-#define SYS_mknod                   14
-#define SYS_chmod                   15
-#define SYS_lchown                  16
-#define SYS_break                   17
-#define SYS_oldstat                 18
-#define SYS_lseek                   19
-#define SYS_getpid                  20
-#define SYS_mount                   21
-#define SYS_umount                  22
-#define SYS_setuid                  23
-#define SYS_getuid                  24
-#define SYS_stime                   25
-#define SYS_ptrace                  26
-#define SYS_alarm                   27
-#define SYS_oldfstat                28
-#define SYS_pause                   29
-#define SYS_utime                   30
-#define SYS_stty                    31
-#define SYS_gtty                    32
-#define SYS_access                  33
-#define SYS_nice                    34
-#define SYS_ftime                   35
-#define SYS_sync                    36
-#define SYS_kill                    37
-#define SYS_rename                  38
-#define SYS_mkdir                   39
-#define SYS_rmdir                   40
-#define SYS_dup                     41
-#define SYS_pipe                    42
-#define SYS_times                   43
-#define SYS_prof                    44
-#define SYS_brk                     45
-#define SYS_setgid                  46
-#define SYS_getgid                  47
-#define SYS_signal                  48
-#define SYS_geteuid                 49
-#define SYS_getegid                 50
-#define SYS_acct                    51
-#define SYS_umount2                 52
-#define SYS_lock                    53
-#define SYS_ioctl                   54
-#define SYS_fcntl                   55
-#define SYS_mpx                     56
-#define SYS_setpgid                 57
-#define SYS_ulimit                  58
-#define SYS_oldolduname             59
-#define SYS_umask                   60
-#define SYS_chroot                  61
-#define SYS_ustat                   62
-#define SYS_dup2                    63
-#define SYS_getppid                 64
-#define SYS_getpgrp                 65
-#define SYS_setsid                  66
-#define SYS_sigaction               67
-#define SYS_sgetmask                68
-#define SYS_ssetmask                69
-#define SYS_setreuid                70
-#define SYS_setregid                71
-#define SYS_sigsuspend              72
-#define SYS_sigpending              73
-#define SYS_sethostname             74
-#define SYS_setrlimit               75
-#define SYS_getrlimit               76
-#define SYS_getrusage               77
-#define SYS_gettimeofday            78
-#define SYS_settimeofday            79
-#define SYS_getgroups               80
-#define SYS_setgroups               81
-#define SYS_select                  82
-#define SYS_symlink                 83
-#define SYS_oldlstat                84
-#define SYS_readlink                85
-#define SYS_uselib                  86
-#define SYS_swapon                  87
-#define SYS_reboot                  88
-#define SYS_readdir                 89
-#define SYS_mmap                    90
-#define SYS_munmap                  91
-#define SYS_truncate                92
-#define SYS_ftruncate               93
-#define SYS_fchmod                  94
-#define SYS_fchown                  95
-#define SYS_getpriority             96
-#define SYS_setpriority             97
-#define SYS_profil                  98
-#define SYS_statfs                  99
-#define SYS_fstatfs                100
-#define SYS_ioperm                 101
-#define SYS_socketcall             102
-#define SYS_syslog                 103
-#define SYS_setitimer              104
-#define SYS_getitimer              105
-#define SYS_stat                   106
-#define SYS_lstat                  107
-#define SYS_fstat                  108
-#define SYS_olduname               109
-#define SYS_iopl                   110
-#define SYS_vhangup                111
-#define SYS_idle                   112
-#define SYS_vm86                   113
-#define SYS_wait4                  114
-#define SYS_swapoff                115
-#define SYS_sysinfo                116
-#define SYS_ipc                    117
-#define SYS_fsync                  118
-#define SYS_sigreturn              119
-#define SYS_clone                  120
-#define SYS_setdomainname          121
-#define SYS_uname                  122
-#define SYS_modify_ldt             123
-#define SYS_adjtimex               124
-#define SYS_mprotect               125
-#define SYS_sigprocmask            126
-#define SYS_create_module          127
-#define SYS_init_module            128
-#define SYS_delete_module          129
-#define SYS_get_kernel_syms        130
-#define SYS_quotactl               131
-#define SYS_getpgid                132
-#define SYS_fchdir                 133
-#define SYS_bdflush                134
-#define SYS_sysfs                  135
-#define SYS_personality            136
-#define SYS_afs_syscall            137
-#define SYS_setfsuid               138
-#define SYS_setfsgid               139
-#define SYS__llseek                140
-#define SYS_getdents               141
-#define SYS__newselect             142
-#define SYS_flock                  143
-#define SYS_msync                  144
-#define SYS_readv                  145
-#define SYS_writev                 146
-#define SYS_getsid                 147
-#define SYS_fdatasync              148
-#define SYS__sysctl                149
-#define SYS_mlock                  150
-#define SYS_munlock                151
-#define SYS_mlockall               152
-#define SYS_munlockall             153
-#define SYS_sched_setparam         154
-#define SYS_sched_getparam         155
-#define SYS_sched_setscheduler     156
-#define SYS_sched_getscheduler     157
-#define SYS_sched_yield            158
+#define SYS_restart_syscall 0
+#define SYS_exit 1
+#define SYS_fork 2
+#define SYS_read 3
+#define SYS_write 4
+#define SYS_open 5
+#define SYS_close 6
+#define SYS_waitpid 7
+#define SYS_creat 8
+#define SYS_link 9
+#define SYS_unlink 10
+#define SYS_execve 11
+#define SYS_chdir 12
+#define SYS_time 13
+#define SYS_mknod 14
+#define SYS_chmod 15
+#define SYS_lchown 16
+#define SYS_break 17
+#define SYS_oldstat 18
+#define SYS_lseek 19
+#define SYS_getpid 20
+#define SYS_mount 21
+#define SYS_umount 22
+#define SYS_setuid 23
+#define SYS_getuid 24
+#define SYS_stime 25
+#define SYS_ptrace 26
+#define SYS_alarm 27
+#define SYS_oldfstat 28
+#define SYS_pause 29
+#define SYS_utime 30
+#define SYS_stty 31
+#define SYS_gtty 32
+#define SYS_access 33
+#define SYS_nice 34
+#define SYS_ftime 35
+#define SYS_sync 36
+#define SYS_kill 37
+#define SYS_rename 38
+#define SYS_mkdir 39
+#define SYS_rmdir 40
+#define SYS_dup 41
+#define SYS_pipe 42
+#define SYS_times 43
+#define SYS_prof 44
+#define SYS_brk 45
+#define SYS_setgid 46
+#define SYS_getgid 47
+#define SYS_signal 48
+#define SYS_geteuid 49
+#define SYS_getegid 50
+#define SYS_acct 51
+#define SYS_umount2 52
+#define SYS_lock 53
+#define SYS_ioctl 54
+#define SYS_fcntl 55
+#define SYS_mpx 56
+#define SYS_setpgid 57
+#define SYS_ulimit 58
+#define SYS_oldolduname 59
+#define SYS_umask 60
+#define SYS_chroot 61
+#define SYS_ustat 62
+#define SYS_dup2 63
+#define SYS_getppid 64
+#define SYS_getpgrp 65
+#define SYS_setsid 66
+#define SYS_sigaction 67
+#define SYS_sgetmask 68
+#define SYS_ssetmask 69
+#define SYS_setreuid 70
+#define SYS_setregid 71
+#define SYS_sigsuspend 72
+#define SYS_sigpending 73
+#define SYS_sethostname 74
+#define SYS_setrlimit 75
+#define SYS_getrlimit 76
+#define SYS_getrusage 77
+#define SYS_gettimeofday 78
+#define SYS_settimeofday 79
+#define SYS_getgroups 80
+#define SYS_setgroups 81
+#define SYS_select 82
+#define SYS_symlink 83
+#define SYS_oldlstat 84
+#define SYS_readlink 85
+#define SYS_uselib 86
+#define SYS_swapon 87
+#define SYS_reboot 88
+#define SYS_readdir 89
+#define SYS_mmap 90
+#define SYS_munmap 91
+#define SYS_truncate 92
+#define SYS_ftruncate 93
+#define SYS_fchmod 94
+#define SYS_fchown 95
+#define SYS_getpriority 96
+#define SYS_setpriority 97
+#define SYS_profil 98
+#define SYS_statfs 99
+#define SYS_fstatfs 100
+#define SYS_ioperm 101
+#define SYS_socketcall 102
+#define SYS_syslog 103
+#define SYS_setitimer 104
+#define SYS_getitimer 105
+#define SYS_stat 106
+#define SYS_lstat 107
+#define SYS_fstat 108
+#define SYS_olduname 109
+#define SYS_iopl 110
+#define SYS_vhangup 111
+#define SYS_idle 112
+#define SYS_vm86 113
+#define SYS_wait4 114
+#define SYS_swapoff 115
+#define SYS_sysinfo 116
+#define SYS_ipc 117
+#define SYS_fsync 118
+#define SYS_sigreturn 119
+#define SYS_clone 120
+#define SYS_setdomainname 121
+#define SYS_uname 122
+#define SYS_modify_ldt 123
+#define SYS_adjtimex 124
+#define SYS_mprotect 125
+#define SYS_sigprocmask 126
+#define SYS_create_module 127
+#define SYS_init_module 128
+#define SYS_delete_module 129
+#define SYS_get_kernel_syms 130
+#define SYS_quotactl 131
+#define SYS_getpgid 132
+#define SYS_fchdir 133
+#define SYS_bdflush 134
+#define SYS_sysfs 135
+#define SYS_personality 136
+#define SYS_afs_syscall 137
+#define SYS_setfsuid 138
+#define SYS_setfsgid 139
+#define SYS__llseek 140
+#define SYS_getdents 141
+#define SYS__newselect 142
+#define SYS_flock 143
+#define SYS_msync 144
+#define SYS_readv 145
+#define SYS_writev 146
+#define SYS_getsid 147
+#define SYS_fdatasync 148
+#define SYS__sysctl 149
+#define SYS_mlock 150
+#define SYS_munlock 151
+#define SYS_mlockall 152
+#define SYS_munlockall 153
+#define SYS_sched_setparam 154
+#define SYS_sched_getparam 155
+#define SYS_sched_setscheduler 156
+#define SYS_sched_getscheduler 157
+#define SYS_sched_yield 158
 #define SYS_sched_get_priority_max 159
 #define SYS_sched_get_priority_min 160
-#define SYS_sched_rr_get_interval  161
-#define SYS_nanosleep              162
-#define SYS_mremap                 163
-#define SYS_setresuid32            164
-#define SYS_setresuid              164
-#define SYS_getresuid32            165
-#define SYS_getresuid              165
-#define SYS_query_module           166
-#define SYS_poll                   167
-#define SYS_nfsservctl             168
-#define SYS_setresgid32            169
-#define SYS_setresgid              169
-#define SYS_getresgid32            170
-#define SYS_getresgid              170
-#define SYS_prctl                  171
-#define SYS_rt_sigreturn           172
-#define SYS_rt_sigaction           173
-#define SYS_rt_sigprocmask         174
-#define SYS_rt_sigpending          175
-#define SYS_rt_sigtimedwait        176
-#define SYS_rt_sigqueueinfo        177
-#define SYS_rt_sigsuspend          178
-#define SYS_pread64                179
-#define SYS_pwrite64               180
-#define SYS_chown                  181
-#define SYS_getcwd                 182
-#define SYS_capget                 183
-#define SYS_capset                 184
-#define SYS_sigaltstack            185
-#define SYS_sendfile               186
-#define SYS_getpmsg                187
-#define SYS_putpmsg                188
-#define SYS_vfork                  189
-#define SYS_ugetrlimit             190
-#define SYS_readahead              191
-#define SYS_mmap2                  192
-#define SYS_truncate64             193
-#define SYS_ftruncate64            194
-#define SYS_stat64                 195
-#define SYS_lstat64                196
-#define SYS_fstat64                197
-#define SYS_pciconfig_read         198
-#define SYS_pciconfig_write        199
-#define SYS_pciconfig_iobase       200
-#define SYS_multiplexer            201
-#define SYS_getdents64             202
-#define SYS_pivot_root             203
-#define SYS_fcntl64                204
-#define SYS_madvise                205
-#define SYS_mincore                206
-#define SYS_gettid                 207
-#define SYS_tkill                  208
-#define SYS_setxattr               209
-#define SYS_lsetxattr              210
-#define SYS_fsetxattr              211
-#define SYS_getxattr               212
-#define SYS_lgetxattr              213
-#define SYS_fgetxattr              214
-#define SYS_listxattr              215
-#define SYS_llistxattr             216
-#define SYS_flistxattr             217
-#define SYS_removexattr            218
-#define SYS_lremovexattr           219
-#define SYS_fremovexattr           220
-#define SYS_futex                  221
-#define SYS_sched_setaffinity      222
-#define SYS_sched_getaffinity      223
-#define SYS_tuxcall                225
-#define SYS_sendfile64             226
-#define SYS_io_setup               227
-#define SYS_io_destroy             228
-#define SYS_io_getevents           229
-#define SYS_io_submit              230
-#define SYS_io_cancel              231
-#define SYS_set_tid_address        232
-#define SYS_fadvise64              233
-#define SYS_exit_group             234
-#define SYS_lookup_dcookie         235
-#define SYS_epoll_create           236
-#define SYS_epoll_ctl              237
-#define SYS_epoll_wait             238
-#define SYS_remap_file_pages       239
-#define SYS_timer_create           240
-#define SYS_timer_settime          241
-#define SYS_timer_gettime          242
-#define SYS_timer_getoverrun       243
-#define SYS_timer_delete           244
-#define SYS_clock_settime          245
-#define SYS_clock_gettime          246
-#define SYS_clock_getres           247
-#define SYS_clock_nanosleep        248
-#define SYS_swapcontext            249
-#define SYS_tgkill                 250
-#define SYS_utimes                 251
-#define SYS_statfs64               252
-#define SYS_fstatfs64              253
-#define SYS_fadvise64_64           254
-#define SYS_rtas		255
+#define SYS_sched_rr_get_interval 161
+#define SYS_nanosleep 162
+#define SYS_mremap 163
+#define SYS_setresuid32 164
+#define SYS_setresuid 164
+#define SYS_getresuid32 165
+#define SYS_getresuid 165
+#define SYS_query_module 166
+#define SYS_poll 167
+#define SYS_nfsservctl 168
+#define SYS_setresgid32 169
+#define SYS_setresgid 169
+#define SYS_getresgid32 170
+#define SYS_getresgid 170
+#define SYS_prctl 171
+#define SYS_rt_sigreturn 172
+#define SYS_rt_sigaction 173
+#define SYS_rt_sigprocmask 174
+#define SYS_rt_sigpending 175
+#define SYS_rt_sigtimedwait 176
+#define SYS_rt_sigqueueinfo 177
+#define SYS_rt_sigsuspend 178
+#define SYS_pread64 179
+#define SYS_pwrite64 180
+#define SYS_chown 181
+#define SYS_getcwd 182
+#define SYS_capget 183
+#define SYS_capset 184
+#define SYS_sigaltstack 185
+#define SYS_sendfile 186
+#define SYS_getpmsg 187
+#define SYS_putpmsg 188
+#define SYS_vfork 189
+#define SYS_ugetrlimit 190
+#define SYS_readahead 191
+#define SYS_mmap2 192
+#define SYS_truncate64 193
+#define SYS_ftruncate64 194
+#define SYS_stat64 195
+#define SYS_lstat64 196
+#define SYS_fstat64 197
+#define SYS_pciconfig_read 198
+#define SYS_pciconfig_write 199
+#define SYS_pciconfig_iobase 200
+#define SYS_multiplexer 201
+#define SYS_getdents64 202
+#define SYS_pivot_root 203
+#define SYS_fcntl64 204
+#define SYS_madvise 205
+#define SYS_mincore 206
+#define SYS_gettid 207
+#define SYS_tkill 208
+#define SYS_setxattr 209
+#define SYS_lsetxattr 210
+#define SYS_fsetxattr 211
+#define SYS_getxattr 212
+#define SYS_lgetxattr 213
+#define SYS_fgetxattr 214
+#define SYS_listxattr 215
+#define SYS_llistxattr 216
+#define SYS_flistxattr 217
+#define SYS_removexattr 218
+#define SYS_lremovexattr 219
+#define SYS_fremovexattr 220
+#define SYS_futex 221
+#define SYS_sched_setaffinity 222
+#define SYS_sched_getaffinity 223
+#define SYS_tuxcall 225
+#define SYS_sendfile64 226
+#define SYS_io_setup 227
+#define SYS_io_destroy 228
+#define SYS_io_getevents 229
+#define SYS_io_submit 230
+#define SYS_io_cancel 231
+#define SYS_set_tid_address 232
+#define SYS_fadvise64 233
+#define SYS_exit_group 234
+#define SYS_lookup_dcookie 235
+#define SYS_epoll_create 236
+#define SYS_epoll_ctl 237
+#define SYS_epoll_wait 238
+#define SYS_remap_file_pages 239
+#define SYS_timer_create 240
+#define SYS_timer_settime 241
+#define SYS_timer_gettime 242
+#define SYS_timer_getoverrun 243
+#define SYS_timer_delete 244
+#define SYS_clock_settime 245
+#define SYS_clock_gettime 246
+#define SYS_clock_getres 247
+#define SYS_clock_nanosleep 248
+#define SYS_swapcontext 249
+#define SYS_tgkill 250
+#define SYS_utimes 251
+#define SYS_statfs64 252
+#define SYS_fstatfs64 253
+#define SYS_fadvise64_64 254
+#define SYS_rtas 255
 #define SYS_sys_debug_setcontext 256
-#define SYS_migrate_pages	258
-#define SYS_mbind		259
-#define SYS_get_mempolicy	260
-#define SYS_set_mempolicy	261
-#define SYS_mq_open		262
-#define SYS_mq_unlink		263
-#define SYS_mq_timedsend	264
-#define SYS_mq_timedreceive	265
-#define SYS_mq_notify		266
-#define SYS_mq_getsetattr	267
-#define SYS_kexec_load		268
-#define SYS_add_key		269
-#define SYS_request_key	270
-#define SYS_keyctl		271
-#define SYS_waitid		272
-#define SYS_ioprio_set		273
-#define SYS_ioprio_get		274
-#define SYS_inotify_init	275
-#define SYS_inotify_add_watch	276
-#define SYS_inotify_rm_watch	277
-#define SYS_spu_run		278
-#define SYS_spu_create		279
-#define SYS_pselect6		280
-#define SYS_ppoll		281
-#define SYS_unshare		282
-#define SYS_splice		283
-#define SYS_tee		284
-#define SYS_vmsplice		285
-#define SYS_openat		286
-#define SYS_mkdirat		287
-#define SYS_mknodat		288
-#define SYS_fchownat		289
-#define SYS_futimesat		290
-#define SYS_fstatat64		291
-#define SYS_unlinkat		292
-#define SYS_renameat		293
-#define SYS_linkat		294
-#define SYS_symlinkat		295
-#define SYS_readlinkat		296
-#define SYS_fchmodat		297
-#define SYS_faccessat		298
-#define SYS_get_robust_list	299
-#define SYS_set_robust_list	300
-#define SYS_move_pages		301
-#define SYS_getcpu		302
-#define SYS_epoll_pwait	303
-#define SYS_utimensat		304
-#define SYS_signalfd		305
-#define SYS_timerfd		306
-#define SYS_timerfd_create      306
-#define SYS_eventfd		307
-#define SYS_sync_file_range2	308
-#define SYS_fallocate		309
-#define SYS_subpage_prot		310
-#define SYS_timerfd_settime	311
-#define SYS_timerfd_gettime	312
-#define SYS_signalfd4		313
-#define SYS_eventfd2		314
-#define SYS_epoll_create1	315
-#define SYS_dup3			316
-#define SYS_pipe2		317
-#define SYS_inotify_init1	318
-#define SYS_perf_event_open       319
-#define SYS_preadv                320
-#define SYS_pwritev               321
-#define SYS_rt_tgsigqueueinfo     322
-#define SYS_fanotify_init         323
-#define SYS_fanotify_mark         324
-#define SYS_prlimit64             325
-#define SYS_socket                326
-#define SYS_bind                  327
-#define SYS_connect               328
-#define SYS_listen                329
-#define SYS_accept                330
-#define SYS_getsockname           331
-#define SYS_getpeername           332
-#define SYS_socketpair            333
-#define SYS_send                  334
-#define SYS_sendto                335
-#define SYS_recv                  336
-#define SYS_recvfrom              337
-#define SYS_shutdown              338
-#define SYS_setsockopt            339
-#define SYS_getsockopt            340
-#define SYS_sendmsg               341
-#define SYS_recvmsg               342
-#define SYS_recvmmsg              343
-#define SYS_accept4               344
-#define SYS_name_to_handle_at     345
-#define SYS_open_by_handle_at     346
-#define SYS_clock_adjtime         347
-#define SYS_syncfs                348
-#define SYS_sendmmsg              349
-#define SYS_setns                 350
-#define SYS_process_vm_readv      351
-#define SYS_process_vm_writev     352
-#define SYS_finit_module          353
-#define SYS_kcmp                  354
-#define SYS_sched_setattr         355
-#define SYS_sched_getattr         356
-#define SYS_renameat2             357
-#define SYS_seccomp               358
-#define SYS_getrandom             359
-#define SYS_memfd_create          360
-#define SYS_bpf                   361
-#define SYS_execveat              362
-#define SYS_switch_endian         363
-#define SYS_userfaultfd           364
-#define SYS_membarrier            365
-#define SYS_mlock2                378
+#define SYS_migrate_pages 258
+#define SYS_mbind 259
+#define SYS_get_mempolicy 260
+#define SYS_set_mempolicy 261
+#define SYS_mq_open 262
+#define SYS_mq_unlink 263
+#define SYS_mq_timedsend 264
+#define SYS_mq_timedreceive 265
+#define SYS_mq_notify 266
+#define SYS_mq_getsetattr 267
+#define SYS_kexec_load 268
+#define SYS_add_key 269
+#define SYS_request_key 270
+#define SYS_keyctl 271
+#define SYS_waitid 272
+#define SYS_ioprio_set 273
+#define SYS_ioprio_get 274
+#define SYS_inotify_init 275
+#define SYS_inotify_add_watch 276
+#define SYS_inotify_rm_watch 277
+#define SYS_spu_run 278
+#define SYS_spu_create 279
+#define SYS_pselect6 280
+#define SYS_ppoll 281
+#define SYS_unshare 282
+#define SYS_splice 283
+#define SYS_tee 284
+#define SYS_vmsplice 285
+#define SYS_openat 286
+#define SYS_mkdirat 287
+#define SYS_mknodat 288
+#define SYS_fchownat 289
+#define SYS_futimesat 290
+#define SYS_fstatat64 291
+#define SYS_unlinkat 292
+#define SYS_renameat 293
+#define SYS_linkat 294
+#define SYS_symlinkat 295
+#define SYS_readlinkat 296
+#define SYS_fchmodat 297
+#define SYS_faccessat 298
+#define SYS_get_robust_list 299
+#define SYS_set_robust_list 300
+#define SYS_move_pages 301
+#define SYS_getcpu 302
+#define SYS_epoll_pwait 303
+#define SYS_utimensat 304
+#define SYS_signalfd 305
+#define SYS_timerfd 306
+#define SYS_timerfd_create 306
+#define SYS_eventfd 307
+#define SYS_sync_file_range2 308
+#define SYS_fallocate 309
+#define SYS_subpage_prot 310
+#define SYS_timerfd_settime 311
+#define SYS_timerfd_gettime 312
+#define SYS_signalfd4 313
+#define SYS_eventfd2 314
+#define SYS_epoll_create1 315
+#define SYS_dup3 316
+#define SYS_pipe2 317
+#define SYS_inotify_init1 318
+#define SYS_perf_event_open 319
+#define SYS_preadv 320
+#define SYS_pwritev 321
+#define SYS_rt_tgsigqueueinfo 322
+#define SYS_fanotify_init 323
+#define SYS_fanotify_mark 324
+#define SYS_prlimit64 325
+#define SYS_socket 326
+#define SYS_bind 327
+#define SYS_connect 328
+#define SYS_listen 329
+#define SYS_accept 330
+#define SYS_getsockname 331
+#define SYS_getpeername 332
+#define SYS_socketpair 333
+#define SYS_send 334
+#define SYS_sendto 335
+#define SYS_recv 336
+#define SYS_recvfrom 337
+#define SYS_shutdown 338
+#define SYS_setsockopt 339
+#define SYS_getsockopt 340
+#define SYS_sendmsg 341
+#define SYS_recvmsg 342
+#define SYS_recvmmsg 343
+#define SYS_accept4 344
+#define SYS_name_to_handle_at 345
+#define SYS_open_by_handle_at 346
+#define SYS_clock_adjtime 347
+#define SYS_syncfs 348
+#define SYS_sendmmsg 349
+#define SYS_setns 350
+#define SYS_process_vm_readv 351
+#define SYS_process_vm_writev 352
+#define SYS_finit_module 353
+#define SYS_kcmp 354
+#define SYS_sched_setattr 355
+#define SYS_sched_getattr 356
+#define SYS_renameat2 357
+#define SYS_seccomp 358
+#define SYS_getrandom 359
+#define SYS_memfd_create 360
+#define SYS_bpf 361
+#define SYS_execveat 362
+#define SYS_switch_endian 363
+#define SYS_userfaultfd 364
+#define SYS_membarrier 365
+#define SYS_mlock2 378
diff --git a/fusl/arch/powerpc/bits/termios.h b/fusl/arch/powerpc/bits/termios.h
index 7feaf49..d6dab10 100644
--- a/fusl/arch/powerpc/bits/termios.h
+++ b/fusl/arch/powerpc/bits/termios.h
@@ -1,111 +1,110 @@
 #undef NCCS
 #define NCCS 19
-struct termios
-{
-	tcflag_t c_iflag;
-	tcflag_t c_oflag;
-	tcflag_t c_cflag;
-	tcflag_t c_lflag;
-	cc_t c_cc[NCCS];
-	cc_t c_line;
-	speed_t __c_ispeed;
-	speed_t __c_ospeed;
+struct termios {
+  tcflag_t c_iflag;
+  tcflag_t c_oflag;
+  tcflag_t c_cflag;
+  tcflag_t c_lflag;
+  cc_t c_cc[NCCS];
+  cc_t c_line;
+  speed_t __c_ispeed;
+  speed_t __c_ospeed;
 };
 
-#define VINTR     0
-#define VQUIT     1
-#define VERASE    2
-#define VKILL     3
-#define VEOF      4
-#define VMIN      5
-#define VEOL      6
-#define VTIME     7
-#define VEOL2     8
-#define VSWTC     9
-#define VWERASE  10
+#define VINTR 0
+#define VQUIT 1
+#define VERASE 2
+#define VKILL 3
+#define VEOF 4
+#define VMIN 5
+#define VEOL 6
+#define VTIME 7
+#define VEOL2 8
+#define VSWTC 9
+#define VWERASE 10
 #define VREPRINT 11
-#define VSUSP    12
-#define VSTART   13
-#define VSTOP    14
-#define VLNEXT   15
+#define VSUSP 12
+#define VSTART 13
+#define VSTOP 14
+#define VLNEXT 15
 #define VDISCARD 16
 
-#define IGNBRK  0000001
-#define BRKINT  0000002
-#define IGNPAR  0000004
-#define PARMRK  0000010
-#define INPCK   0000020
-#define ISTRIP  0000040
-#define INLCR   0000100
-#define IGNCR   0000200
-#define ICRNL   0000400
-#define IXON    0001000
-#define IXOFF   0002000
-#define IXANY   0004000
-#define IUCLC   0010000
+#define IGNBRK 0000001
+#define BRKINT 0000002
+#define IGNPAR 0000004
+#define PARMRK 0000010
+#define INPCK 0000020
+#define ISTRIP 0000040
+#define INLCR 0000100
+#define IGNCR 0000200
+#define ICRNL 0000400
+#define IXON 0001000
+#define IXOFF 0002000
+#define IXANY 0004000
+#define IUCLC 0010000
 #define IMAXBEL 0020000
-#define IUTF8   0040000
+#define IUTF8 0040000
 
-#define OPOST  0000001
-#define ONLCR  0000002
-#define OLCUC  0000004
-#define OCRNL  0000010
-#define ONOCR  0000020
+#define OPOST 0000001
+#define ONLCR 0000002
+#define OLCUC 0000004
+#define OCRNL 0000010
+#define ONOCR 0000020
 #define ONLRET 0000040
-#define OFILL  0000100
-#define OFDEL  0000200
-#define NLDLY  0001400
-#define NL0    0000000
-#define NL1    0000400
-#define NL2    0001000
-#define NL3    0001400
+#define OFILL 0000100
+#define OFDEL 0000200
+#define NLDLY 0001400
+#define NL0 0000000
+#define NL1 0000400
+#define NL2 0001000
+#define NL3 0001400
 #define TABDLY 0006000
-#define TAB0   0000000
-#define TAB1   0002000
-#define TAB2   0004000
-#define TAB3   0006000
-#define CRDLY  0030000
-#define CR0    0000000
-#define CR1    0010000
-#define CR2    0020000
-#define CR3    0030000
-#define FFDLY  0040000
-#define FF0    0000000
-#define FF1    0040000
-#define BSDLY  0100000
-#define BS0    0000000
-#define BS1    0100000
+#define TAB0 0000000
+#define TAB1 0002000
+#define TAB2 0004000
+#define TAB3 0006000
+#define CRDLY 0030000
+#define CR0 0000000
+#define CR1 0010000
+#define CR2 0020000
+#define CR3 0030000
+#define FFDLY 0040000
+#define FF0 0000000
+#define FF1 0040000
+#define BSDLY 0100000
+#define BS0 0000000
+#define BS1 0100000
 
-#define VTDLY  0200000
-#define VT0    0000000
-#define VT1    0200000
+#define VTDLY 0200000
+#define VT0 0000000
+#define VT1 0200000
 
-#define B0       0000000
-#define B50      0000001
-#define B75      0000002
-#define B110     0000003
-#define B134     0000004
-#define B150     0000005
-#define B200     0000006
-#define B300     0000007
-#define B600     0000010
-#define B1200    0000011
-#define B1800    0000012
-#define B2400    0000013
-#define B4800    0000014
-#define B9600    0000015
-#define B19200   0000016
-#define B38400   0000017
-#define EXTA     0000016
-#define EXTB     0000017
+#define B0 0000000
+#define B50 0000001
+#define B75 0000002
+#define B110 0000003
+#define B134 0000004
+#define B150 0000005
+#define B200 0000006
+#define B300 0000007
+#define B600 0000010
+#define B1200 0000011
+#define B1800 0000012
+#define B2400 0000013
+#define B4800 0000014
+#define B9600 0000015
+#define B19200 0000016
+#define B38400 0000017
+#define EXTA 0000016
+#define EXTB 0000017
 
-#define B57600   00020
-#define B115200  00021
-#define B230400  00022
-#define B460800  00023
-#define B500000  00024
-#define B576000  00025
-#define B921600  00026
+#define B57600 00020
+#define B115200 00021
+#define B230400 00022
+#define B460800 00023
+#define B500000 00024
+#define B576000 00025
+#define B921600 00026
 #define B1000000 00027
 #define B1152000 00030
 #define B1500000 00031
@@ -114,57 +113,57 @@
 #define B3000000 00034
 #define B3500000 00035
 #define B4000000 00036
-#define BOTHER   00037
+#define BOTHER 00037
 
-#define CBAUD    00377
+#define CBAUD 00377
 
-#define CSIZE  00001400
-#define CS5    00000000
-#define CS6    00000400
-#define CS7    00001000
-#define CS8    00001400
+#define CSIZE 00001400
+#define CS5 00000000
+#define CS6 00000400
+#define CS7 00001000
+#define CS8 00001400
 #define CSTOPB 00002000
-#define CREAD  00004000
+#define CREAD 00004000
 #define PARENB 00010000
 #define PARODD 00020000
-#define HUPCL  00040000
+#define HUPCL 00040000
 #define CLOCAL 00100000
 
-#define ECHOKE  0x00000001
-#define ECHOE   0x00000002
-#define ECHOK   0x00000004
-#define ECHO    0x00000008
-#define ECHONL  0x00000010
+#define ECHOKE 0x00000001
+#define ECHOE 0x00000002
+#define ECHOK 0x00000004
+#define ECHO 0x00000008
+#define ECHONL 0x00000010
 #define ECHOPRT 0x00000020
 #define ECHOCTL 0x00000040
-#define ISIG    0x00000080
-#define ICANON  0x00000100
-#define IEXTEN  0x00000400
-#define XCASE   0x00004000
-#define TOSTOP  0x00400000
-#define FLUSHO  0x00800000
-#define PENDIN  0x20000000
-#define NOFLSH  0x80000000
+#define ISIG 0x00000080
+#define ICANON 0x00000100
+#define IEXTEN 0x00000400
+#define XCASE 0x00004000
+#define TOSTOP 0x00400000
+#define FLUSHO 0x00800000
+#define PENDIN 0x20000000
+#define NOFLSH 0x80000000
 
 #define TCOOFF 0
-#define TCOON  1
+#define TCOON 1
 #define TCIOFF 2
-#define TCION  3
+#define TCION 3
 
-#define TCIFLUSH  0
-#define TCOFLUSH  1
+#define TCIFLUSH 0
+#define TCOFLUSH 1
 #define TCIOFLUSH 2
 
-#define TCSANOW   0
+#define TCSANOW 0
 #define TCSADRAIN 1
 #define TCSAFLUSH 2
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define CBAUDEX 0000000
-#define CIBAUD  077600000
+#define CIBAUD 077600000
 #define IBSHIFT 16
-#define CMSPAR  010000000000
+#define CMSPAR 010000000000
 #define CRTSCTS 020000000000
 #define EXTPROC 0x10000000
-#define XTABS   00006000
+#define XTABS 00006000
 #endif
diff --git a/fusl/arch/powerpc/bits/user.h b/fusl/arch/powerpc/bits/user.h
index 6cc8aaf..7da27b9 100644
--- a/fusl/arch/powerpc/bits/user.h
+++ b/fusl/arch/powerpc/bits/user.h
@@ -1,16 +1,16 @@
 struct pt_regs {
-	unsigned long gpr[32], nip, msr, orig_gpr3, ctr, link, xer, ccr, mq;
-	unsigned long trap, dar, dsisr, result;
+  unsigned long gpr[32], nip, msr, orig_gpr3, ctr, link, xer, ccr, mq;
+  unsigned long trap, dar, dsisr, result;
 };
 
 struct user {
-	struct pt_regs regs;
-	unsigned long u_tsize, u_dsize, u_ssize;
-	unsigned long start_code, start_data, start_stack;
-	long signal;
-	void *u_ar0;
-	unsigned long magic;
-	char u_comm[32];
+  struct pt_regs regs;
+  unsigned long u_tsize, u_dsize, u_ssize;
+  unsigned long start_code, start_data, start_stack;
+  long signal;
+  void* u_ar0;
+  unsigned long magic;
+  char u_comm[32];
 };
 
 #define ELF_NGREG 48
@@ -18,8 +18,11 @@
 #define ELF_NVRREG 33
 typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG];
 typedef double elf_fpreg_t, elf_fpregset_t[ELF_NFPREG];
-typedef struct { unsigned u[4]; }
+typedef struct {
+  unsigned u[4];
+}
 #ifdef __GNUC__
 __attribute__((__aligned__(16)))
 #endif
-	elf_vrreg_t, elf_vrregset_t[ELF_NVRREG];
+elf_vrreg_t,
+    elf_vrregset_t[ELF_NVRREG];
diff --git a/fusl/arch/powerpc/crt_arch.h b/fusl/arch/powerpc/crt_arch.h
index 9b65886..efa487a 100644
--- a/fusl/arch/powerpc/crt_arch.h
+++ b/fusl/arch/powerpc/crt_arch.h
@@ -1,20 +1,20 @@
 __asm__(
-".text \n"
-".global " START " \n"
-".type   " START ", %function \n"
-START ": \n"
-"	bl 1f \n"
-".weak _DYNAMIC \n"
-".hidden _DYNAMIC \n"
-"	.long _DYNAMIC-. \n"
-"1:	mflr 4 \n"
-"	lwz 3, 0(4) \n"
-"	add 4, 3, 4 \n"
-"	mr 3, 1 \n"
-"	clrrwi 1, 1, 4 \n"
-"	li 0, 0 \n"
-"	stwu 1, -16(1) \n"
-"	mtlr 0 \n"
-"	stw 0, 0(1) \n"
-"	bl " START "_c \n"
-);
+    ".text \n"
+    ".global " START
+    " \n"
+    ".type   " START ", %function \n" START
+    ": \n"
+    "	bl 1f \n"
+    ".weak _DYNAMIC \n"
+    ".hidden _DYNAMIC \n"
+    "	.long _DYNAMIC-. \n"
+    "1:	mflr 4 \n"
+    "	lwz 3, 0(4) \n"
+    "	add 4, 3, 4 \n"
+    "	mr 3, 1 \n"
+    "	clrrwi 1, 1, 4 \n"
+    "	li 0, 0 \n"
+    "	stwu 1, -16(1) \n"
+    "	mtlr 0 \n"
+    "	stw 0, 0(1) \n"
+    "	bl " START "_c \n");
diff --git a/fusl/arch/powerpc/pthread_arch.h b/fusl/arch/powerpc/pthread_arch.h
index 7c5c4fa..10b0a2c 100644
--- a/fusl/arch/powerpc/pthread_arch.h
+++ b/fusl/arch/powerpc/pthread_arch.h
@@ -1,17 +1,16 @@
-static inline struct pthread *__pthread_self()
-{
+static inline struct pthread* __pthread_self() {
 #ifdef __clang__
-	char *tp;
-	__asm__ __volatile__ ("mr %0, 2" : "=r"(tp) : : );
+  char* tp;
+  __asm__ __volatile__("mr %0, 2" : "=r"(tp) : :);
 #else
-	register char *tp __asm__("r2");
-	__asm__ __volatile__ ("" : "=r" (tp) );
+  register char* tp __asm__("r2");
+  __asm__ __volatile__("" : "=r"(tp));
 #endif
-	return (pthread_t)(tp - 0x7000 - sizeof(struct pthread));
+  return (pthread_t)(tp - 0x7000 - sizeof(struct pthread));
 }
-                        
+
 #define TLS_ABOVE_TP
-#define TP_ADJ(p) ((char *)(p) + sizeof(struct pthread) + 0x7000)
+#define TP_ADJ(p) ((char*)(p) + sizeof(struct pthread) + 0x7000)
 
 #define DTP_OFFSET 0x8000
 
diff --git a/fusl/arch/powerpc/reloc.h b/fusl/arch/powerpc/reloc.h
index b8b6589..264d944 100644
--- a/fusl/arch/powerpc/reloc.h
+++ b/fusl/arch/powerpc/reloc.h
@@ -2,23 +2,30 @@
 
 #define TPOFF_K (-0x7000)
 
-#define REL_SYMBOLIC    R_PPC_ADDR32
-#define REL_GOT         R_PPC_GLOB_DAT
-#define REL_PLT         R_PPC_JMP_SLOT
-#define REL_RELATIVE    R_PPC_RELATIVE
-#define REL_COPY        R_PPC_COPY
-#define REL_DTPMOD      R_PPC_DTPMOD32
-#define REL_DTPOFF      R_PPC_DTPREL32
-#define REL_TPOFF       R_PPC_TPREL32
+#define REL_SYMBOLIC R_PPC_ADDR32
+#define REL_GOT R_PPC_GLOB_DAT
+#define REL_PLT R_PPC_JMP_SLOT
+#define REL_RELATIVE R_PPC_RELATIVE
+#define REL_COPY R_PPC_COPY
+#define REL_DTPMOD R_PPC_DTPMOD32
+#define REL_DTPOFF R_PPC_DTPREL32
+#define REL_TPOFF R_PPC_TPREL32
 
-#define CRTJMP(pc,sp) __asm__ __volatile__( \
-	"mr 1,%1 ; mtlr %0 ; blr" : : "r"(pc), "r"(sp) : "memory" )
+#define CRTJMP(pc, sp)                           \
+  __asm__ __volatile__("mr 1,%1 ; mtlr %0 ; blr" \
+                       :                         \
+                       : "r"(pc), "r"(sp)        \
+                       : "memory")
 
-#define GETFUNCSYM(fp, sym, got) __asm__ ( \
-	".hidden " #sym " \n" \
-	"	bl 1f \n" \
-	"	.long " #sym "-. \n" \
-	"1:	mflr %1 \n" \
-	"	lwz %0, 0(%1) \n" \
-	"	add %0, %0, %1 \n" \
-	: "=r"(*(fp)), "=r"((int){0}) : : "memory", "lr" )
+#define GETFUNCSYM(fp, sym, got)        \
+  __asm__(".hidden " #sym               \
+          " \n"                         \
+          "	bl 1f \n"                   \
+          "	.long " #sym            \
+          "-. \n"                       \
+          "1:	mflr %1 \n"               \
+          "	lwz %0, 0(%1) \n"           \
+          "	add %0, %0, %1 \n"          \
+          : "=r"(*(fp)), "=r"((int){0}) \
+          :                             \
+          : "memory", "lr")
diff --git a/fusl/arch/powerpc/syscall_arch.h b/fusl/arch/powerpc/syscall_arch.h
index e7cb1a2..dba48a4 100644
--- a/fusl/arch/powerpc/syscall_arch.h
+++ b/fusl/arch/powerpc/syscall_arch.h
@@ -1,6 +1,14 @@
 #define __SYSCALL_LL_E(x) \
-((union { long long ll; long l[2]; }){ .ll = x }).l[0], \
-((union { long long ll; long l[2]; }){ .ll = x }).l[1]
+  ((union {               \
+    long long ll;         \
+    long l[2];            \
+  }){.ll = x})            \
+      .l[0],              \
+      ((union {           \
+        long long ll;     \
+        long l[2];        \
+      }){.ll = x})        \
+          .l[1]
 #define __SYSCALL_LL_O(x) 0, __SYSCALL_LL_E((x))
 
 #undef SYSCALL_NO_INLINE
diff --git a/fusl/arch/x32/atomic_arch.h b/fusl/arch/x32/atomic_arch.h
index 26098d3..9124ef7 100644
--- a/fusl/arch/x32/atomic_arch.h
+++ b/fusl/arch/x32/atomic_arch.h
@@ -1,114 +1,88 @@
 #define a_cas a_cas
-static inline int a_cas(volatile int *p, int t, int s)
-{
-	__asm__ __volatile__ (
-		"lock ; cmpxchg %3, %1"
-		: "=a"(t), "=m"(*p) : "a"(t), "r"(s) : "memory" );
-	return t;
+static inline int a_cas(volatile int* p, int t, int s) {
+  __asm__ __volatile__("lock ; cmpxchg %3, %1"
+                       : "=a"(t), "=m"(*p)
+                       : "a"(t), "r"(s)
+                       : "memory");
+  return t;
 }
 
 #define a_swap a_swap
-static inline int a_swap(volatile int *p, int v)
-{
-	__asm__ __volatile__(
-		"xchg %0, %1"
-		: "=r"(v), "=m"(*p) : "0"(v) : "memory" );
-	return v;
+static inline int a_swap(volatile int* p, int v) {
+  __asm__ __volatile__("xchg %0, %1" : "=r"(v), "=m"(*p) : "0"(v) : "memory");
+  return v;
 }
 
 #define a_fetch_add a_fetch_add
-static inline int a_fetch_add(volatile int *p, int v)
-{
-	__asm__ __volatile__(
-		"lock ; xadd %0, %1"
-		: "=r"(v), "=m"(*p) : "0"(v) : "memory" );
-	return v;
+static inline int a_fetch_add(volatile int* p, int v) {
+  __asm__ __volatile__("lock ; xadd %0, %1"
+                       : "=r"(v), "=m"(*p)
+                       : "0"(v)
+                       : "memory");
+  return v;
 }
 
 #define a_and a_and
-static inline void a_and(volatile int *p, int v)
-{
-	__asm__ __volatile__(
-		"lock ; and %1, %0"
-		: "=m"(*p) : "r"(v) : "memory" );
+static inline void a_and(volatile int* p, int v) {
+  __asm__ __volatile__("lock ; and %1, %0" : "=m"(*p) : "r"(v) : "memory");
 }
 
 #define a_or a_or
-static inline void a_or(volatile int *p, int v)
-{
-	__asm__ __volatile__(
-		"lock ; or %1, %0"
-		: "=m"(*p) : "r"(v) : "memory" );
+static inline void a_or(volatile int* p, int v) {
+  __asm__ __volatile__("lock ; or %1, %0" : "=m"(*p) : "r"(v) : "memory");
 }
 
 #define a_and_64 a_and_64
-static inline void a_and_64(volatile uint64_t *p, uint64_t v)
-{
-	__asm__ __volatile(
-		"lock ; and %1, %0"
-		 : "=m"(*p) : "r"(v) : "memory" );
+static inline void a_and_64(volatile uint64_t* p, uint64_t v) {
+  __asm__ __volatile("lock ; and %1, %0" : "=m"(*p) : "r"(v) : "memory");
 }
 
 #define a_or_64 a_or_64
-static inline void a_or_64(volatile uint64_t *p, uint64_t v)
-{
-	__asm__ __volatile__(
-		"lock ; or %1, %0"
-		 : "=m"(*p) : "r"(v) : "memory" );
+static inline void a_or_64(volatile uint64_t* p, uint64_t v) {
+  __asm__ __volatile__("lock ; or %1, %0" : "=m"(*p) : "r"(v) : "memory");
 }
 
 #define a_inc a_inc
-static inline void a_inc(volatile int *p)
-{
-	__asm__ __volatile__(
-		"lock ; incl %0"
-		: "=m"(*p) : "m"(*p) : "memory" );
+static inline void a_inc(volatile int* p) {
+  __asm__ __volatile__("lock ; incl %0" : "=m"(*p) : "m"(*p) : "memory");
 }
 
 #define a_dec a_dec
-static inline void a_dec(volatile int *p)
-{
-	__asm__ __volatile__(
-		"lock ; decl %0"
-		: "=m"(*p) : "m"(*p) : "memory" );
+static inline void a_dec(volatile int* p) {
+  __asm__ __volatile__("lock ; decl %0" : "=m"(*p) : "m"(*p) : "memory");
 }
 
 #define a_store a_store
-static inline void a_store(volatile int *p, int x)
-{
-	__asm__ __volatile__(
-		"mov %1, %0 ; lock ; orl $0,(%%rsp)"
-		: "=m"(*p) : "r"(x) : "memory" );
+static inline void a_store(volatile int* p, int x) {
+  __asm__ __volatile__("mov %1, %0 ; lock ; orl $0,(%%rsp)"
+                       : "=m"(*p)
+                       : "r"(x)
+                       : "memory");
 }
 
 #define a_barrier a_barrier
-static inline void a_barrier()
-{
-	__asm__ __volatile__( "" : : : "memory" );
+static inline void a_barrier() {
+  __asm__ __volatile__("" : : : "memory");
 }
 
 #define a_pause a_pause
-static inline void a_spin()
-{
-	__asm__ __volatile__( "pause" : : : "memory" );
+static inline void a_spin() {
+  __asm__ __volatile__("pause" : : : "memory");
 }
 
 #define a_crash a_crash
-static inline void a_crash()
-{
-	__asm__ __volatile__( "hlt" : : : "memory" );
+static inline void a_crash() {
+  __asm__ __volatile__("hlt" : : : "memory");
 }
 
 #define a_ctz_64 a_ctz_64
-static inline int a_ctz_64(uint64_t x)
-{
-	__asm__( "bsf %1,%0" : "=r"(x) : "r"(x) );
-	return x;
+static inline int a_ctz_64(uint64_t x) {
+  __asm__("bsf %1,%0" : "=r"(x) : "r"(x));
+  return x;
 }
 
 #define a_ctz_l a_ctz_l
-static inline int a_ctz_l(unsigned long x)
-{
-	__asm__( "bsf %1,%0" : "=r"(x) : "r"(x) );
-	return x;
+static inline int a_ctz_l(unsigned long x) {
+  __asm__("bsf %1,%0" : "=r"(x) : "r"(x));
+  return x;
 }
diff --git a/fusl/arch/x32/bits/fcntl.h b/fusl/arch/x32/bits/fcntl.h
index 1b88ad3..c3fca26 100644
--- a/fusl/arch/x32/bits/fcntl.h
+++ b/fusl/arch/x32/bits/fcntl.h
@@ -1,29 +1,29 @@
-#define O_CREAT        0100
-#define O_EXCL         0200
-#define O_NOCTTY       0400
-#define O_TRUNC       01000
-#define O_APPEND      02000
-#define O_NONBLOCK    04000
-#define O_DSYNC      010000
-#define O_SYNC     04010000
-#define O_RSYNC    04010000
+#define O_CREAT 0100
+#define O_EXCL 0200
+#define O_NOCTTY 0400
+#define O_TRUNC 01000
+#define O_APPEND 02000
+#define O_NONBLOCK 04000
+#define O_DSYNC 010000
+#define O_SYNC 04010000
+#define O_RSYNC 04010000
 #define O_DIRECTORY 0200000
-#define O_NOFOLLOW  0400000
-#define O_CLOEXEC  02000000
+#define O_NOFOLLOW 0400000
+#define O_CLOEXEC 02000000
 
-#define O_ASYNC      020000
-#define O_DIRECT     040000
-#define O_LARGEFILE       0
-#define O_NOATIME  01000000
-#define O_PATH    010000000
+#define O_ASYNC 020000
+#define O_DIRECT 040000
+#define O_LARGEFILE 0
+#define O_NOATIME 01000000
+#define O_PATH 010000000
 #define O_TMPFILE 020200000
 #define O_NDELAY O_NONBLOCK
 
-#define F_DUPFD  0
-#define F_GETFD  1
-#define F_SETFD  2
-#define F_GETFL  3
-#define F_SETFL  4
+#define F_DUPFD 0
+#define F_GETFD 1
+#define F_SETFD 2
+#define F_GETFL 3
+#define F_SETFL 4
 
 #define F_SETOWN 8
 #define F_GETOWN 9
diff --git a/fusl/arch/x32/bits/fenv.h b/fusl/arch/x32/bits/fenv.h
index 24df041..32e7dbf 100644
--- a/fusl/arch/x32/bits/fenv.h
+++ b/fusl/arch/x32/bits/fenv.h
@@ -1,34 +1,34 @@
-#define FE_INVALID    1
-#define __FE_DENORM   2
-#define FE_DIVBYZERO  4
-#define FE_OVERFLOW   8
-#define FE_UNDERFLOW  16
-#define FE_INEXACT    32
+#define FE_INVALID 1
+#define __FE_DENORM 2
+#define FE_DIVBYZERO 4
+#define FE_OVERFLOW 8
+#define FE_UNDERFLOW 16
+#define FE_INEXACT 32
 
 #define FE_ALL_EXCEPT 63
 
-#define FE_TONEAREST  0
-#define FE_DOWNWARD   0x400
-#define FE_UPWARD     0x800
+#define FE_TONEAREST 0
+#define FE_DOWNWARD 0x400
+#define FE_UPWARD 0x800
 #define FE_TOWARDZERO 0xc00
 
 typedef unsigned short fexcept_t;
 
 typedef struct {
-	unsigned short __control_word;
-	unsigned short __unused1;
-	unsigned short __status_word;
-	unsigned short __unused2;
-	unsigned short __tags;
-	unsigned short __unused3;
-	unsigned int __eip;
-	unsigned short __cs_selector;
-	unsigned int __opcode:11;
-	unsigned int __unused4:5;
-	unsigned int __data_offset;
-	unsigned short __data_selector;
-	unsigned short __unused5;
-	unsigned int __mxcsr;
+  unsigned short __control_word;
+  unsigned short __unused1;
+  unsigned short __status_word;
+  unsigned short __unused2;
+  unsigned short __tags;
+  unsigned short __unused3;
+  unsigned int __eip;
+  unsigned short __cs_selector;
+  unsigned int __opcode : 11;
+  unsigned int __unused4 : 5;
+  unsigned int __data_offset;
+  unsigned short __data_selector;
+  unsigned short __unused5;
+  unsigned int __mxcsr;
 } fenv_t;
 
-#define FE_DFL_ENV      ((const fenv_t *) -1)
+#define FE_DFL_ENV ((const fenv_t*)-1)
diff --git a/fusl/arch/x32/bits/float.h b/fusl/arch/x32/bits/float.h
index 4d8e786..f935e34 100644
--- a/fusl/arch/x32/bits/float.h
+++ b/fusl/arch/x32/bits/float.h
@@ -5,8 +5,8 @@
 #endif
 
 #define LDBL_TRUE_MIN 3.6451995318824746025e-4951L
-#define LDBL_MIN     3.3621031431120935063e-4932L
-#define LDBL_MAX     1.1897314953572317650e+4932L
+#define LDBL_MIN 3.3621031431120935063e-4932L
+#define LDBL_MAX 1.1897314953572317650e+4932L
 #define LDBL_EPSILON 1.0842021724855044340e-19L
 
 #define LDBL_MANT_DIG 64
diff --git a/fusl/arch/x32/bits/io.h b/fusl/arch/x32/bits/io.h
index dd5bddc..1d715d9 100644
--- a/fusl/arch/x32/bits/io.h
+++ b/fusl/arch/x32/bits/io.h
@@ -1,77 +1,65 @@
-static __inline void outb(unsigned char __val, unsigned short __port)
-{
-	__asm__ volatile ("outb %0,%1" : : "a" (__val), "dN" (__port));
+static __inline void outb(unsigned char __val, unsigned short __port) {
+  __asm__ volatile("outb %0,%1" : : "a"(__val), "dN"(__port));
 }
 
-static __inline void outw(unsigned short __val, unsigned short __port)
-{
-	__asm__ volatile ("outw %0,%1" : : "a" (__val), "dN" (__port));
+static __inline void outw(unsigned short __val, unsigned short __port) {
+  __asm__ volatile("outw %0,%1" : : "a"(__val), "dN"(__port));
 }
 
-static __inline void outl(unsigned int __val, unsigned short __port)
-{
-	__asm__ volatile ("outl %0,%1" : : "a" (__val), "dN" (__port));
+static __inline void outl(unsigned int __val, unsigned short __port) {
+  __asm__ volatile("outl %0,%1" : : "a"(__val), "dN"(__port));
 }
 
-static __inline unsigned char inb(unsigned short __port)
-{
-	unsigned char __val;
-	__asm__ volatile ("inb %1,%0" : "=a" (__val) : "dN" (__port));
-	return __val;
+static __inline unsigned char inb(unsigned short __port) {
+  unsigned char __val;
+  __asm__ volatile("inb %1,%0" : "=a"(__val) : "dN"(__port));
+  return __val;
 }
 
-static __inline unsigned short inw(unsigned short __port)
-{
-	unsigned short __val;
-	__asm__ volatile ("inw %1,%0" : "=a" (__val) : "dN" (__port));
-	return __val;
+static __inline unsigned short inw(unsigned short __port) {
+  unsigned short __val;
+  __asm__ volatile("inw %1,%0" : "=a"(__val) : "dN"(__port));
+  return __val;
 }
 
-static __inline unsigned int inl(unsigned short __port)
-{
-	unsigned int __val;
-	__asm__ volatile ("inl %1,%0" : "=a" (__val) : "dN" (__port));
-	return __val;
+static __inline unsigned int inl(unsigned short __port) {
+  unsigned int __val;
+  __asm__ volatile("inl %1,%0" : "=a"(__val) : "dN"(__port));
+  return __val;
 }
 
-static __inline void outsb(unsigned short __port, const void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; outsb"
-		      : "+S" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void outsb(unsigned short __port,
+                           const void* __buf,
+                           unsigned long __n) {
+  __asm__ volatile("cld; rep; outsb" : "+S"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void outsw(unsigned short __port, const void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; outsw"
-		      : "+S" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void outsw(unsigned short __port,
+                           const void* __buf,
+                           unsigned long __n) {
+  __asm__ volatile("cld; rep; outsw" : "+S"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void outsl(unsigned short __port, const void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; outsl"
-		      : "+S" (__buf), "+c"(__n)
-		      : "d" (__port));
+static __inline void outsl(unsigned short __port,
+                           const void* __buf,
+                           unsigned long __n) {
+  __asm__ volatile("cld; rep; outsl" : "+S"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void insb(unsigned short __port, void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; insb"
-		      : "+D" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void insb(unsigned short __port,
+                          void* __buf,
+                          unsigned long __n) {
+  __asm__ volatile("cld; rep; insb" : "+D"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void insw(unsigned short __port, void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; insw"
-		      : "+D" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void insw(unsigned short __port,
+                          void* __buf,
+                          unsigned long __n) {
+  __asm__ volatile("cld; rep; insw" : "+D"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void insl(unsigned short __port, void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; insl"
-		      : "+D" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void insl(unsigned short __port,
+                          void* __buf,
+                          unsigned long __n) {
+  __asm__ volatile("cld; rep; insl" : "+D"(__buf), "+c"(__n) : "d"(__port));
 }
diff --git a/fusl/arch/x32/bits/ioctl.h b/fusl/arch/x32/bits/ioctl.h
index 77a9455..bc8d16a 100644
--- a/fusl/arch/x32/bits/ioctl.h
+++ b/fusl/arch/x32/bits/ioctl.h
@@ -1,197 +1,197 @@
-#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) )
-#define _IOC_NONE  0U
+#define _IOC(a, b, c, d) (((a) << 30) | ((b) << 8) | (c) | ((d) << 16))
+#define _IOC_NONE 0U
 #define _IOC_WRITE 1U
-#define _IOC_READ  2U
+#define _IOC_READ 2U
 
-#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0)
-#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c))
-#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c))
-#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c))
+#define _IO(a, b) _IOC(_IOC_NONE, (a), (b), 0)
+#define _IOW(a, b, c) _IOC(_IOC_WRITE, (a), (b), sizeof(c))
+#define _IOR(a, b, c) _IOC(_IOC_READ, (a), (b), sizeof(c))
+#define _IOWR(a, b, c) _IOC(_IOC_READ | _IOC_WRITE, (a), (b), sizeof(c))
 
-#define TCGETS		0x5401
-#define TCSETS		0x5402
-#define TCSETSW		0x5403
-#define TCSETSF		0x5404
-#define TCGETA		0x5405
-#define TCSETA		0x5406
-#define TCSETAW		0x5407
-#define TCSETAF		0x5408
-#define TCSBRK		0x5409
-#define TCXONC		0x540A
-#define TCFLSH		0x540B
-#define TIOCEXCL	0x540C
-#define TIOCNXCL	0x540D
-#define TIOCSCTTY	0x540E
-#define TIOCGPGRP	0x540F
-#define TIOCSPGRP	0x5410
-#define TIOCOUTQ	0x5411
-#define TIOCSTI		0x5412
-#define TIOCGWINSZ	0x5413
-#define TIOCSWINSZ	0x5414
-#define TIOCMGET	0x5415
-#define TIOCMBIS	0x5416
-#define TIOCMBIC	0x5417
-#define TIOCMSET	0x5418
-#define TIOCGSOFTCAR	0x5419
-#define TIOCSSOFTCAR	0x541A
-#define FIONREAD	0x541B
-#define TIOCINQ		FIONREAD
-#define TIOCLINUX	0x541C
-#define TIOCCONS	0x541D
-#define TIOCGSERIAL	0x541E
-#define TIOCSSERIAL	0x541F
-#define TIOCPKT		0x5420
-#define FIONBIO		0x5421
-#define TIOCNOTTY	0x5422
-#define TIOCSETD	0x5423
-#define TIOCGETD	0x5424
-#define TCSBRKP		0x5425
-#define TIOCTTYGSTRUCT	0x5426
-#define TIOCSBRK	0x5427
-#define TIOCCBRK	0x5428
-#define TIOCGSID	0x5429
-#define TIOCGPTN	0x80045430
-#define TIOCSPTLCK	0x40045431
-#define TCGETX          0x5432
-#define TCSETX          0x5433
-#define TCSETXF         0x5434
-#define TCSETXW         0x5435
+#define TCGETS 0x5401
+#define TCSETS 0x5402
+#define TCSETSW 0x5403
+#define TCSETSF 0x5404
+#define TCGETA 0x5405
+#define TCSETA 0x5406
+#define TCSETAW 0x5407
+#define TCSETAF 0x5408
+#define TCSBRK 0x5409
+#define TCXONC 0x540A
+#define TCFLSH 0x540B
+#define TIOCEXCL 0x540C
+#define TIOCNXCL 0x540D
+#define TIOCSCTTY 0x540E
+#define TIOCGPGRP 0x540F
+#define TIOCSPGRP 0x5410
+#define TIOCOUTQ 0x5411
+#define TIOCSTI 0x5412
+#define TIOCGWINSZ 0x5413
+#define TIOCSWINSZ 0x5414
+#define TIOCMGET 0x5415
+#define TIOCMBIS 0x5416
+#define TIOCMBIC 0x5417
+#define TIOCMSET 0x5418
+#define TIOCGSOFTCAR 0x5419
+#define TIOCSSOFTCAR 0x541A
+#define FIONREAD 0x541B
+#define TIOCINQ FIONREAD
+#define TIOCLINUX 0x541C
+#define TIOCCONS 0x541D
+#define TIOCGSERIAL 0x541E
+#define TIOCSSERIAL 0x541F
+#define TIOCPKT 0x5420
+#define FIONBIO 0x5421
+#define TIOCNOTTY 0x5422
+#define TIOCSETD 0x5423
+#define TIOCGETD 0x5424
+#define TCSBRKP 0x5425
+#define TIOCTTYGSTRUCT 0x5426
+#define TIOCSBRK 0x5427
+#define TIOCCBRK 0x5428
+#define TIOCGSID 0x5429
+#define TIOCGPTN 0x80045430
+#define TIOCSPTLCK 0x40045431
+#define TCGETX 0x5432
+#define TCSETX 0x5433
+#define TCSETXF 0x5434
+#define TCSETXW 0x5435
 
-#define FIONCLEX	0x5450
-#define FIOCLEX		0x5451
-#define FIOASYNC	0x5452
-#define TIOCSERCONFIG	0x5453
-#define TIOCSERGWILD	0x5454
-#define TIOCSERSWILD	0x5455
-#define TIOCGLCKTRMIOS	0x5456
-#define TIOCSLCKTRMIOS	0x5457
-#define TIOCSERGSTRUCT	0x5458
-#define TIOCSERGETLSR   0x5459
+#define FIONCLEX 0x5450
+#define FIOCLEX 0x5451
+#define FIOASYNC 0x5452
+#define TIOCSERCONFIG 0x5453
+#define TIOCSERGWILD 0x5454
+#define TIOCSERSWILD 0x5455
+#define TIOCGLCKTRMIOS 0x5456
+#define TIOCSLCKTRMIOS 0x5457
+#define TIOCSERGSTRUCT 0x5458
+#define TIOCSERGETLSR 0x5459
 #define TIOCSERGETMULTI 0x545A
 #define TIOCSERSETMULTI 0x545B
 
-#define TIOCMIWAIT	0x545C
-#define TIOCGICOUNT	0x545D
-#define TIOCGHAYESESP   0x545E
-#define TIOCSHAYESESP   0x545F
-#define FIOQSIZE	0x5460
+#define TIOCMIWAIT 0x545C
+#define TIOCGICOUNT 0x545D
+#define TIOCGHAYESESP 0x545E
+#define TIOCSHAYESESP 0x545F
+#define FIOQSIZE 0x5460
 
-#define TIOCPKT_DATA		 0
-#define TIOCPKT_FLUSHREAD	 1
-#define TIOCPKT_FLUSHWRITE	 2
-#define TIOCPKT_STOP		 4
-#define TIOCPKT_START		 8
-#define TIOCPKT_NOSTOP		16
-#define TIOCPKT_DOSTOP		32
-#define TIOCPKT_IOCTL           64
+#define TIOCPKT_DATA 0
+#define TIOCPKT_FLUSHREAD 1
+#define TIOCPKT_FLUSHWRITE 2
+#define TIOCPKT_STOP 4
+#define TIOCPKT_START 8
+#define TIOCPKT_NOSTOP 16
+#define TIOCPKT_DOSTOP 32
+#define TIOCPKT_IOCTL 64
 
-#define TIOCSER_TEMT    0x01
+#define TIOCSER_TEMT 0x01
 
 struct winsize {
-	unsigned short ws_row;
-	unsigned short ws_col;
-	unsigned short ws_xpixel;
-	unsigned short ws_ypixel;
+  unsigned short ws_row;
+  unsigned short ws_col;
+  unsigned short ws_xpixel;
+  unsigned short ws_ypixel;
 };
 
-#define TIOCM_LE        0x001
-#define TIOCM_DTR       0x002
-#define TIOCM_RTS       0x004
-#define TIOCM_ST        0x008
-#define TIOCM_SR        0x010
-#define TIOCM_CTS       0x020
-#define TIOCM_CAR       0x040
-#define TIOCM_RNG       0x080
-#define TIOCM_DSR       0x100
-#define TIOCM_CD        TIOCM_CAR
-#define TIOCM_RI        TIOCM_RNG
-#define TIOCM_OUT1      0x2000
-#define TIOCM_OUT2      0x4000
-#define TIOCM_LOOP      0x8000
+#define TIOCM_LE 0x001
+#define TIOCM_DTR 0x002
+#define TIOCM_RTS 0x004
+#define TIOCM_ST 0x008
+#define TIOCM_SR 0x010
+#define TIOCM_CTS 0x020
+#define TIOCM_CAR 0x040
+#define TIOCM_RNG 0x080
+#define TIOCM_DSR 0x100
+#define TIOCM_CD TIOCM_CAR
+#define TIOCM_RI TIOCM_RNG
+#define TIOCM_OUT1 0x2000
+#define TIOCM_OUT2 0x4000
+#define TIOCM_LOOP 0x8000
 #define TIOCM_MODEM_BITS TIOCM_OUT2
 
-#define N_TTY           0
-#define N_SLIP          1
-#define N_MOUSE         2
-#define N_PPP           3
-#define N_STRIP         4
-#define N_AX25          5
-#define N_X25           6
-#define N_6PACK         7
-#define N_MASC          8
-#define N_R3964         9
-#define N_PROFIBUS_FDL  10
-#define N_IRDA          11
-#define N_SMSBLOCK      12
-#define N_HDLC          13
-#define N_SYNC_PPP      14
-#define N_HCI           15
+#define N_TTY 0
+#define N_SLIP 1
+#define N_MOUSE 2
+#define N_PPP 3
+#define N_STRIP 4
+#define N_AX25 5
+#define N_X25 6
+#define N_6PACK 7
+#define N_MASC 8
+#define N_R3964 9
+#define N_PROFIBUS_FDL 10
+#define N_IRDA 11
+#define N_SMSBLOCK 12
+#define N_HDLC 13
+#define N_SYNC_PPP 14
+#define N_HCI 15
 
-#define FIOSETOWN       0x8901
-#define SIOCSPGRP       0x8902
-#define FIOGETOWN       0x8903
-#define SIOCGPGRP       0x8904
-#define SIOCATMARK      0x8905
-#define SIOCGSTAMP      0x8906
+#define FIOSETOWN 0x8901
+#define SIOCSPGRP 0x8902
+#define FIOGETOWN 0x8903
+#define SIOCGPGRP 0x8904
+#define SIOCATMARK 0x8905
+#define SIOCGSTAMP 0x8906
 
-#define SIOCADDRT       0x890B
-#define SIOCDELRT       0x890C
-#define SIOCRTMSG       0x890D
+#define SIOCADDRT 0x890B
+#define SIOCDELRT 0x890C
+#define SIOCRTMSG 0x890D
 
-#define SIOCGIFNAME     0x8910
-#define SIOCSIFLINK     0x8911
-#define SIOCGIFCONF     0x8912
-#define SIOCGIFFLAGS    0x8913
-#define SIOCSIFFLAGS    0x8914
-#define SIOCGIFADDR     0x8915
-#define SIOCSIFADDR     0x8916
-#define SIOCGIFDSTADDR  0x8917
-#define SIOCSIFDSTADDR  0x8918
-#define SIOCGIFBRDADDR  0x8919
-#define SIOCSIFBRDADDR  0x891a
-#define SIOCGIFNETMASK  0x891b
-#define SIOCSIFNETMASK  0x891c
-#define SIOCGIFMETRIC   0x891d
-#define SIOCSIFMETRIC   0x891e
-#define SIOCGIFMEM      0x891f
-#define SIOCSIFMEM      0x8920
-#define SIOCGIFMTU      0x8921
-#define SIOCSIFMTU      0x8922
-#define SIOCSIFHWADDR   0x8924
-#define SIOCGIFENCAP    0x8925
-#define SIOCSIFENCAP    0x8926
-#define SIOCGIFHWADDR   0x8927
-#define SIOCGIFSLAVE    0x8929
-#define SIOCSIFSLAVE    0x8930
-#define SIOCADDMULTI    0x8931
-#define SIOCDELMULTI    0x8932
-#define SIOCGIFINDEX    0x8933
-#define SIOGIFINDEX     SIOCGIFINDEX
-#define SIOCSIFPFLAGS   0x8934
-#define SIOCGIFPFLAGS   0x8935
-#define SIOCDIFADDR     0x8936
+#define SIOCGIFNAME 0x8910
+#define SIOCSIFLINK 0x8911
+#define SIOCGIFCONF 0x8912
+#define SIOCGIFFLAGS 0x8913
+#define SIOCSIFFLAGS 0x8914
+#define SIOCGIFADDR 0x8915
+#define SIOCSIFADDR 0x8916
+#define SIOCGIFDSTADDR 0x8917
+#define SIOCSIFDSTADDR 0x8918
+#define SIOCGIFBRDADDR 0x8919
+#define SIOCSIFBRDADDR 0x891a
+#define SIOCGIFNETMASK 0x891b
+#define SIOCSIFNETMASK 0x891c
+#define SIOCGIFMETRIC 0x891d
+#define SIOCSIFMETRIC 0x891e
+#define SIOCGIFMEM 0x891f
+#define SIOCSIFMEM 0x8920
+#define SIOCGIFMTU 0x8921
+#define SIOCSIFMTU 0x8922
+#define SIOCSIFHWADDR 0x8924
+#define SIOCGIFENCAP 0x8925
+#define SIOCSIFENCAP 0x8926
+#define SIOCGIFHWADDR 0x8927
+#define SIOCGIFSLAVE 0x8929
+#define SIOCSIFSLAVE 0x8930
+#define SIOCADDMULTI 0x8931
+#define SIOCDELMULTI 0x8932
+#define SIOCGIFINDEX 0x8933
+#define SIOGIFINDEX SIOCGIFINDEX
+#define SIOCSIFPFLAGS 0x8934
+#define SIOCGIFPFLAGS 0x8935
+#define SIOCDIFADDR 0x8936
 #define SIOCSIFHWBROADCAST 0x8937
-#define SIOCGIFCOUNT    0x8938
+#define SIOCGIFCOUNT 0x8938
 
-#define SIOCGIFBR       0x8940
-#define SIOCSIFBR       0x8941
+#define SIOCGIFBR 0x8940
+#define SIOCSIFBR 0x8941
 
-#define SIOCGIFTXQLEN   0x8942
-#define SIOCSIFTXQLEN   0x8943
+#define SIOCGIFTXQLEN 0x8942
+#define SIOCSIFTXQLEN 0x8943
 
-#define SIOCDARP        0x8953
-#define SIOCGARP        0x8954
-#define SIOCSARP        0x8955
+#define SIOCDARP 0x8953
+#define SIOCGARP 0x8954
+#define SIOCSARP 0x8955
 
-#define SIOCDRARP       0x8960
-#define SIOCGRARP       0x8961
-#define SIOCSRARP       0x8962
+#define SIOCDRARP 0x8960
+#define SIOCGRARP 0x8961
+#define SIOCSRARP 0x8962
 
-#define SIOCGIFMAP      0x8970
-#define SIOCSIFMAP      0x8971
+#define SIOCGIFMAP 0x8970
+#define SIOCSIFMAP 0x8971
 
-#define SIOCADDDLCI     0x8980
-#define SIOCDELDLCI     0x8981
+#define SIOCADDDLCI 0x8980
+#define SIOCDELDLCI 0x8981
 
-#define SIOCDEVPRIVATE  0x89F0
+#define SIOCDEVPRIVATE 0x89F0
 #define SIOCPROTOPRIVATE 0x89E0
diff --git a/fusl/arch/x32/bits/ipc.h b/fusl/arch/x32/bits/ipc.h
index 6e604ce..149beb2 100644
--- a/fusl/arch/x32/bits/ipc.h
+++ b/fusl/arch/x32/bits/ipc.h
@@ -1,14 +1,13 @@
-struct ipc_perm
-{
-	key_t __ipc_perm_key;
-	uid_t uid;
-	gid_t gid;
-	uid_t cuid;
-	gid_t cgid;
-	mode_t mode;
-	int __ipc_perm_seq;
-	long long __pad1;
-	long long __pad2;
+struct ipc_perm {
+  key_t __ipc_perm_key;
+  uid_t uid;
+  gid_t gid;
+  uid_t cuid;
+  gid_t cgid;
+  mode_t mode;
+  int __ipc_perm_seq;
+  long long __pad1;
+  long long __pad2;
 };
 
 #define IPC_64 0
diff --git a/fusl/arch/x32/bits/limits.h b/fusl/arch/x32/bits/limits.h
index 65a3dd6..6d8b298 100644
--- a/fusl/arch/x32/bits/limits.h
+++ b/fusl/arch/x32/bits/limits.h
@@ -1,8 +1,8 @@
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define PAGE_SIZE 4096
 #define LONG_BIT 32
 #endif
 
-#define LONG_MAX  0x7fffffffL
-#define LLONG_MAX  0x7fffffffffffffffLL
+#define LONG_MAX 0x7fffffffL
+#define LLONG_MAX 0x7fffffffffffffffLL
diff --git a/fusl/arch/x32/bits/mman.h b/fusl/arch/x32/bits/mman.h
index f3235f4..09d9d03 100644
--- a/fusl/arch/x32/bits/mman.h
+++ b/fusl/arch/x32/bits/mman.h
@@ -1,60 +1,60 @@
-#define MAP_FAILED ((void *) -1)
+#define MAP_FAILED ((void*)-1)
 
-#define	PROT_NONE      0
-#define	PROT_READ      1
-#define	PROT_WRITE     2
-#define	PROT_EXEC      4
-#define PROT_GROWSDOWN  0x01000000
-#define PROT_GROWSUP    0x02000000
+#define PROT_NONE 0
+#define PROT_READ 1
+#define PROT_WRITE 2
+#define PROT_EXEC 4
+#define PROT_GROWSDOWN 0x01000000
+#define PROT_GROWSUP 0x02000000
 
-#define	MAP_SHARED     0x01
-#define	MAP_PRIVATE    0x02
-#define	MAP_FIXED      0x10
+#define MAP_SHARED 0x01
+#define MAP_PRIVATE 0x02
+#define MAP_FIXED 0x10
 
-#define MAP_TYPE       0x0f
-#define MAP_FILE       0x00
-#define MAP_ANON       0x20
-#define MAP_ANONYMOUS  MAP_ANON
-#define MAP_32BIT      0x40
-#define MAP_NORESERVE  0x4000
-#define MAP_GROWSDOWN  0x0100
-#define MAP_DENYWRITE  0x0800
+#define MAP_TYPE 0x0f
+#define MAP_FILE 0x00
+#define MAP_ANON 0x20
+#define MAP_ANONYMOUS MAP_ANON
+#define MAP_32BIT 0x40
+#define MAP_NORESERVE 0x4000
+#define MAP_GROWSDOWN 0x0100
+#define MAP_DENYWRITE 0x0800
 #define MAP_EXECUTABLE 0x1000
-#define MAP_LOCKED     0x2000
-#define MAP_POPULATE   0x8000
-#define MAP_NONBLOCK   0x10000
-#define MAP_STACK      0x20000
-#define MAP_HUGETLB    0x40000
+#define MAP_LOCKED 0x2000
+#define MAP_POPULATE 0x8000
+#define MAP_NONBLOCK 0x10000
+#define MAP_STACK 0x20000
+#define MAP_HUGETLB 0x40000
 
-#define POSIX_MADV_NORMAL       0
-#define POSIX_MADV_RANDOM       1
-#define POSIX_MADV_SEQUENTIAL   2
-#define POSIX_MADV_WILLNEED     3
-#define POSIX_MADV_DONTNEED     0
+#define POSIX_MADV_NORMAL 0
+#define POSIX_MADV_RANDOM 1
+#define POSIX_MADV_SEQUENTIAL 2
+#define POSIX_MADV_WILLNEED 3
+#define POSIX_MADV_DONTNEED 0
 
-#define MS_ASYNC        1
-#define MS_INVALIDATE   2
-#define MS_SYNC         4
+#define MS_ASYNC 1
+#define MS_INVALIDATE 2
+#define MS_SYNC 4
 
-#define MCL_CURRENT     1
-#define MCL_FUTURE      2
-#define MCL_ONFAULT     4
+#define MCL_CURRENT 1
+#define MCL_FUTURE 2
+#define MCL_ONFAULT 4
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#define MADV_NORMAL      0
-#define MADV_RANDOM      1
-#define MADV_SEQUENTIAL  2
-#define MADV_WILLNEED    3
-#define MADV_DONTNEED    4
-#define MADV_REMOVE      9
-#define MADV_DONTFORK    10
-#define MADV_DOFORK      11
-#define MADV_MERGEABLE   12
+#define MADV_NORMAL 0
+#define MADV_RANDOM 1
+#define MADV_SEQUENTIAL 2
+#define MADV_WILLNEED 3
+#define MADV_DONTNEED 4
+#define MADV_REMOVE 9
+#define MADV_DONTFORK 10
+#define MADV_DOFORK 11
+#define MADV_MERGEABLE 12
 #define MADV_UNMERGEABLE 13
-#define MADV_HUGEPAGE    14
-#define MADV_NOHUGEPAGE  15
-#define MADV_DONTDUMP    16
-#define MADV_DODUMP      17
-#define MADV_HWPOISON    100
+#define MADV_HUGEPAGE 14
+#define MADV_NOHUGEPAGE 15
+#define MADV_DONTDUMP 16
+#define MADV_DODUMP 17
+#define MADV_HWPOISON 100
 #define MADV_SOFT_OFFLINE 101
 #endif
diff --git a/fusl/arch/x32/bits/msg.h b/fusl/arch/x32/bits/msg.h
index c3b4eae..3f8baf9 100644
--- a/fusl/arch/x32/bits/msg.h
+++ b/fusl/arch/x32/bits/msg.h
@@ -1,16 +1,15 @@
-struct msqid_ds
-{
-	struct ipc_perm msg_perm;
-	time_t msg_stime;
-	time_t msg_rtime;
-	time_t msg_ctime;
-	unsigned long msg_cbytes;
-	long __unused1;
-	msgqnum_t msg_qnum;
-	long __unused2;
-	msglen_t msg_qbytes;
-	long __unused3;
-	pid_t msg_lspid;
-	pid_t msg_lrpid;
-	unsigned long long __unused[2];
+struct msqid_ds {
+  struct ipc_perm msg_perm;
+  time_t msg_stime;
+  time_t msg_rtime;
+  time_t msg_ctime;
+  unsigned long msg_cbytes;
+  long __unused1;
+  msgqnum_t msg_qnum;
+  long __unused2;
+  msglen_t msg_qbytes;
+  long __unused3;
+  pid_t msg_lspid;
+  pid_t msg_lrpid;
+  unsigned long long __unused[2];
 };
diff --git a/fusl/arch/x32/bits/posix.h b/fusl/arch/x32/bits/posix.h
index c37b94c..8068ce9 100644
--- a/fusl/arch/x32/bits/posix.h
+++ b/fusl/arch/x32/bits/posix.h
@@ -1,2 +1,2 @@
-#define _POSIX_V6_LP64_OFF64  1
-#define _POSIX_V7_LP64_OFF64  1
+#define _POSIX_V6_LP64_OFF64 1
+#define _POSIX_V7_LP64_OFF64 1
diff --git a/fusl/arch/x32/bits/reg.h b/fusl/arch/x32/bits/reg.h
index 5faaef1..53ede07 100644
--- a/fusl/arch/x32/bits/reg.h
+++ b/fusl/arch/x32/bits/reg.h
@@ -1,29 +1,29 @@
 #undef __WORDSIZE
 #define __WORDSIZE 32
-#define R15    0
-#define R14    1
-#define R13    2
-#define R12    3
-#define RBP    4
-#define RBX    5
-#define R11    6
-#define R10    7
-#define R9     8
-#define R8     9
-#define RAX    10
-#define RCX    11
-#define RDX    12
-#define RSI    13
-#define RDI    14
+#define R15 0
+#define R14 1
+#define R13 2
+#define R12 3
+#define RBP 4
+#define RBX 5
+#define R11 6
+#define R10 7
+#define R9 8
+#define R8 9
+#define RAX 10
+#define RCX 11
+#define RDX 12
+#define RSI 13
+#define RDI 14
 #define ORIG_RAX 15
-#define RIP    16
-#define CS     17
+#define RIP 16
+#define CS 17
 #define EFLAGS 18
-#define RSP    19
-#define SS     20
+#define RSP 19
+#define SS 20
 #define FS_BASE 21
 #define GS_BASE 22
-#define DS     23
-#define ES     24
-#define FS     25
-#define GS     26
+#define DS 23
+#define ES 24
+#define FS 25
+#define GS 26
diff --git a/fusl/arch/x32/bits/shm.h b/fusl/arch/x32/bits/shm.h
index 8fa9e73..25cf7fc 100644
--- a/fusl/arch/x32/bits/shm.h
+++ b/fusl/arch/x32/bits/shm.h
@@ -1,31 +1,30 @@
 #define SHMLBA 4096
 
-struct shmid_ds
-{
-	struct ipc_perm shm_perm;
-	size_t shm_segsz;
-	time_t shm_atime;
-	time_t shm_dtime;
-	time_t shm_ctime;
-	pid_t shm_cpid;
-	pid_t shm_lpid;
-	unsigned long shm_nattch;
-	unsigned long __pad0;
-	unsigned long long __pad1;
-	unsigned long long __pad2;
+struct shmid_ds {
+  struct ipc_perm shm_perm;
+  size_t shm_segsz;
+  time_t shm_atime;
+  time_t shm_dtime;
+  time_t shm_ctime;
+  pid_t shm_cpid;
+  pid_t shm_lpid;
+  unsigned long shm_nattch;
+  unsigned long __pad0;
+  unsigned long long __pad1;
+  unsigned long long __pad2;
 };
 
 struct shminfo {
-	unsigned long shmmax, __pad0, shmmin, __pad1, shmmni, __pad2,
-	              shmseg, __pad3, shmall, __pad4;
-	unsigned long long __unused[4];
+  unsigned long shmmax, __pad0, shmmin, __pad1, shmmni, __pad2, shmseg, __pad3,
+      shmall, __pad4;
+  unsigned long long __unused[4];
 };
 
 struct shm_info {
-	int __used_ids;
-	int __pad_ids;
-	unsigned long shm_tot, __pad0, shm_rss, __pad1, shm_swp, __pad2;
-	unsigned long __swap_attempts, __pad3, __swap_successes, __pad4;
+  int __used_ids;
+  int __pad_ids;
+  unsigned long shm_tot, __pad0, shm_rss, __pad1, shm_swp, __pad2;
+  unsigned long __swap_attempts, __pad3, __swap_successes, __pad4;
 }
 #ifdef __GNUC__
 __attribute__((__aligned__(8)))
diff --git a/fusl/arch/x32/bits/signal.h b/fusl/arch/x32/bits/signal.h
index 4c4adf3..31ad0e0 100644
--- a/fusl/arch/x32/bits/signal.h
+++ b/fusl/arch/x32/bits/signal.h
@@ -1,5 +1,5 @@
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define MINSIGSTKSZ 2048
@@ -7,124 +7,121 @@
 #endif
 
 #ifdef _GNU_SOURCE
-#define REG_R8          0
-#define REG_R9          1
-#define REG_R10         2
-#define REG_R11         3
-#define REG_R12         4
-#define REG_R13         5
-#define REG_R14         6
-#define REG_R15         7
-#define REG_RDI         8
-#define REG_RSI         9
-#define REG_RBP         10
-#define REG_RBX         11
-#define REG_RDX         12
-#define REG_RAX         13
-#define REG_RCX         14
-#define REG_RSP         15
-#define REG_RIP         16
-#define REG_EFL         17
-#define REG_CSGSFS      18
-#define REG_ERR         19
-#define REG_TRAPNO      20
-#define REG_OLDMASK     21
-#define REG_CR2         22
+#define REG_R8 0
+#define REG_R9 1
+#define REG_R10 2
+#define REG_R11 3
+#define REG_R12 4
+#define REG_R13 5
+#define REG_R14 6
+#define REG_R15 7
+#define REG_RDI 8
+#define REG_RSI 9
+#define REG_RBP 10
+#define REG_RBX 11
+#define REG_RDX 12
+#define REG_RAX 13
+#define REG_RCX 14
+#define REG_RSP 15
+#define REG_RIP 16
+#define REG_EFL 17
+#define REG_CSGSFS 18
+#define REG_ERR 19
+#define REG_TRAPNO 20
+#define REG_OLDMASK 21
+#define REG_CR2 22
 #endif
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 typedef long long greg_t, gregset_t[23];
 typedef struct _fpstate {
-	unsigned short cwd, swd, ftw, fop;
-	unsigned long long rip, rdp;
-	unsigned mxcsr, mxcr_mask;
-	struct {
-		unsigned short significand[4], exponent, padding[3];
-	} _st[8];
-	struct {
-		unsigned element[4];
-	} _xmm[16];
-	unsigned padding[24];
-} *fpregset_t;
+  unsigned short cwd, swd, ftw, fop;
+  unsigned long long rip, rdp;
+  unsigned mxcsr, mxcr_mask;
+  struct {
+    unsigned short significand[4], exponent, padding[3];
+  } _st[8];
+  struct {
+    unsigned element[4];
+  } _xmm[16];
+  unsigned padding[24];
+} * fpregset_t;
 struct sigcontext {
-	unsigned long long r8, r9, r10, r11, r12, r13, r14, r15;
-	unsigned long long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
-	unsigned short cs, gs, fs, __pad0;
-	unsigned long long err, trapno, oldmask, cr2;
-	struct _fpstate *fpstate;
-	unsigned long long __reserved1[8];
+  unsigned long long r8, r9, r10, r11, r12, r13, r14, r15;
+  unsigned long long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
+  unsigned short cs, gs, fs, __pad0;
+  unsigned long long err, trapno, oldmask, cr2;
+  struct _fpstate* fpstate;
+  unsigned long long __reserved1[8];
 };
 typedef struct {
-	gregset_t gregs;
-	fpregset_t fpregs;
-	unsigned long long __reserved1[8];
+  gregset_t gregs;
+  fpregset_t fpregs;
+  unsigned long long __reserved1[8];
 } mcontext_t;
 #else
-typedef struct {
-	unsigned long long __space[32];
-} mcontext_t;
+typedef struct { unsigned long long __space[32]; } mcontext_t;
 #endif
 
 struct sigaltstack {
-	void *ss_sp;
-	int ss_flags;
-	size_t ss_size;
+  void* ss_sp;
+  int ss_flags;
+  size_t ss_size;
 };
 
 typedef struct __ucontext {
-	unsigned long uc_flags;
-	struct __ucontext *uc_link;
-	stack_t uc_stack;
-	mcontext_t uc_mcontext;
-	sigset_t uc_sigmask;
-	unsigned long long __fpregs_mem[64];
+  unsigned long uc_flags;
+  struct __ucontext* uc_link;
+  stack_t uc_stack;
+  mcontext_t uc_mcontext;
+  sigset_t uc_sigmask;
+  unsigned long long __fpregs_mem[64];
 } ucontext_t;
 
-#define SA_NOCLDSTOP  1
-#define SA_NOCLDWAIT  2
-#define SA_SIGINFO    4
-#define SA_ONSTACK    0x08000000
-#define SA_RESTART    0x10000000
-#define SA_NODEFER    0x40000000
-#define SA_RESETHAND  0x80000000
-#define SA_RESTORER   0x04000000
+#define SA_NOCLDSTOP 1
+#define SA_NOCLDWAIT 2
+#define SA_SIGINFO 4
+#define SA_ONSTACK 0x08000000
+#define SA_RESTART 0x10000000
+#define SA_NODEFER 0x40000000
+#define SA_RESETHAND 0x80000000
+#define SA_RESTORER 0x04000000
 
 #endif
 
-#define SIGHUP    1
-#define SIGINT    2
-#define SIGQUIT   3
-#define SIGILL    4
-#define SIGTRAP   5
-#define SIGABRT   6
-#define SIGIOT    SIGABRT
-#define SIGBUS    7
-#define SIGFPE    8
-#define SIGKILL   9
-#define SIGUSR1   10
-#define SIGSEGV   11
-#define SIGUSR2   12
-#define SIGPIPE   13
-#define SIGALRM   14
-#define SIGTERM   15
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT SIGABRT
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
 #define SIGSTKFLT 16
-#define SIGCHLD   17
-#define SIGCONT   18
-#define SIGSTOP   19
-#define SIGTSTP   20
-#define SIGTTIN   21
-#define SIGTTOU   22
-#define SIGURG    23
-#define SIGXCPU   24
-#define SIGXFSZ   25
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
 #define SIGVTALRM 26
-#define SIGPROF   27
-#define SIGWINCH  28
-#define SIGIO     29
-#define SIGPOLL   29
-#define SIGPWR    30
-#define SIGSYS    31
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL 29
+#define SIGPWR 30
+#define SIGSYS 31
 #define SIGUNUSED SIGSYS
 
 #define _NSIG 65
-
diff --git a/fusl/arch/x32/bits/socket.h b/fusl/arch/x32/bits/socket.h
index a90c4ca..9279ee1 100644
--- a/fusl/arch/x32/bits/socket.h
+++ b/fusl/arch/x32/bits/socket.h
@@ -1,18 +1,16 @@
-struct msghdr
-{
-	void *msg_name;
-	socklen_t msg_namelen;
-	struct iovec *msg_iov;
-	int msg_iovlen, __pad1;
-	void *msg_control;
-	socklen_t msg_controllen, __pad2;
-	int msg_flags;
+struct msghdr {
+  void* msg_name;
+  socklen_t msg_namelen;
+  struct iovec* msg_iov;
+  int msg_iovlen, __pad1;
+  void* msg_control;
+  socklen_t msg_controllen, __pad2;
+  int msg_flags;
 };
 
-struct cmsghdr
-{
-	socklen_t cmsg_len;
-	int __pad1;
-	int cmsg_level;
-	int cmsg_type;
+struct cmsghdr {
+  socklen_t cmsg_len;
+  int __pad1;
+  int cmsg_level;
+  int cmsg_type;
 };
diff --git a/fusl/arch/x32/bits/stat.h b/fusl/arch/x32/bits/stat.h
index 1f3aa1e..de8e97c 100644
--- a/fusl/arch/x32/bits/stat.h
+++ b/fusl/arch/x32/bits/stat.h
@@ -2,21 +2,21 @@
  * by the corresponding correctly-sized userspace types. */
 
 struct stat {
-	dev_t st_dev;
-	ino_t st_ino;
-	nlink_t st_nlink;
+  dev_t st_dev;
+  ino_t st_ino;
+  nlink_t st_nlink;
 
-	mode_t st_mode;
-	uid_t st_uid;
-	gid_t st_gid;
-	unsigned int    __pad0;
-	dev_t st_rdev;
-	off_t st_size;
-	blksize_t st_blksize;
-	blkcnt_t st_blocks;
+  mode_t st_mode;
+  uid_t st_uid;
+  gid_t st_gid;
+  unsigned int __pad0;
+  dev_t st_rdev;
+  off_t st_size;
+  blksize_t st_blksize;
+  blkcnt_t st_blocks;
 
-	struct timespec st_atim;
-	struct timespec st_mtim;
-	struct timespec st_ctim;
-	long long __unused[3];
+  struct timespec st_atim;
+  struct timespec st_mtim;
+  struct timespec st_ctim;
+  long long __unused[3];
 };
diff --git a/fusl/arch/x32/bits/statfs.h b/fusl/arch/x32/bits/statfs.h
index 79aec35..855da30 100644
--- a/fusl/arch/x32/bits/statfs.h
+++ b/fusl/arch/x32/bits/statfs.h
@@ -1,9 +1,9 @@
 struct statfs {
-	unsigned long f_type, __pad0, f_bsize, __pad1;
-	fsblkcnt_t f_blocks, f_bfree, f_bavail;
-	fsfilcnt_t f_files, f_ffree;
-	fsid_t f_fsid;
-	unsigned long f_namelen, __pad2, f_frsize, __pad3;
-	unsigned long f_flags, __pad4;
-	unsigned long long f_spare[4];
+  unsigned long f_type, __pad0, f_bsize, __pad1;
+  fsblkcnt_t f_blocks, f_bfree, f_bavail;
+  fsfilcnt_t f_files, f_ffree;
+  fsid_t f_fsid;
+  unsigned long f_namelen, __pad2, f_frsize, __pad3;
+  unsigned long f_flags, __pad4;
+  unsigned long long f_spare[4];
 };
diff --git a/fusl/arch/x32/bits/stdint.h b/fusl/arch/x32/bits/stdint.h
index d1b2712..93ec5df 100644
--- a/fusl/arch/x32/bits/stdint.h
+++ b/fusl/arch/x32/bits/stdint.h
@@ -3,18 +3,18 @@
 typedef uint32_t uint_fast16_t;
 typedef uint32_t uint_fast32_t;
 
-#define INT_FAST16_MIN  INT32_MIN
-#define INT_FAST32_MIN  INT32_MIN
+#define INT_FAST16_MIN INT32_MIN
+#define INT_FAST32_MIN INT32_MIN
 
-#define INT_FAST16_MAX  INT32_MAX
-#define INT_FAST32_MAX  INT32_MAX
+#define INT_FAST16_MAX INT32_MAX
+#define INT_FAST32_MAX INT32_MAX
 
 #define UINT_FAST16_MAX UINT32_MAX
 #define UINT_FAST32_MAX UINT32_MAX
 
-#define INTPTR_MIN      INT32_MIN
-#define INTPTR_MAX      INT32_MAX
-#define UINTPTR_MAX     UINT32_MAX
-#define PTRDIFF_MIN     INT32_MIN
-#define PTRDIFF_MAX     INT32_MAX
-#define SIZE_MAX        UINT32_MAX
+#define INTPTR_MIN INT32_MIN
+#define INTPTR_MAX INT32_MAX
+#define UINTPTR_MAX UINT32_MAX
+#define PTRDIFF_MIN INT32_MIN
+#define PTRDIFF_MAX INT32_MAX
+#define SIZE_MAX UINT32_MAX
diff --git a/fusl/arch/x32/bits/syscall.h b/fusl/arch/x32/bits/syscall.h
index 4a1099d..b972451 100644
--- a/fusl/arch/x32/bits/syscall.h
+++ b/fusl/arch/x32/bits/syscall.h
@@ -1,4 +1,4 @@
-#define __X32_SYSCALL_BIT        0x40000000
+#define __X32_SYSCALL_BIT 0x40000000
 #define __NR_read (__X32_SYSCALL_BIT + 0)
 #define __NR_write (__X32_SYSCALL_BIT + 1)
 #define __NR_open (__X32_SYSCALL_BIT + 2)
@@ -326,12 +326,8 @@
 #define __NR_getdents __NR_getdents64
 #define __NR_fadvise __NR_fadvise64
 
-
-
 /* Repeat with SYS_ prefix */
 
-
-
 #define SYS_read __NR_read
 #define SYS_write __NR_write
 #define SYS_open __NR_open
@@ -614,7 +610,6 @@
 #define SYS_membarrier __NR_membarrier
 #define SYS_mlock2 __NR_mlock2
 
-
 #define SYS_rt_sigaction __NR_rt_sigaction
 #define SYS_rt_sigreturn __NR_rt_sigreturn
 #define SYS_ioctl __NR_ioctl
diff --git a/fusl/arch/x32/bits/user.h b/fusl/arch/x32/bits/user.h
index 1bd2d70..b0cd7e0 100644
--- a/fusl/arch/x32/bits/user.h
+++ b/fusl/arch/x32/bits/user.h
@@ -1,44 +1,41 @@
 #undef __WORDSIZE
 #define __WORDSIZE 64
 
-typedef struct user_fpregs_struct
-{
-	uint16_t cwd, swd, ftw, fop;
-	uint64_t rip, rdp;
-	uint32_t mxcsr, mxcr_mask;
-	uint32_t st_space[32], xmm_space[64], padding[24];
+typedef struct user_fpregs_struct {
+  uint16_t cwd, swd, ftw, fop;
+  uint64_t rip, rdp;
+  uint32_t mxcsr, mxcr_mask;
+  uint32_t st_space[32], xmm_space[64], padding[24];
 } elf_fpregset_t;
 
-struct user_regs_struct
-{
-	unsigned long r15, r14, r13, r12, rbp, rbx, r11, r10, r9, r8;
-	unsigned long rax, rcx, rdx, rsi, rdi, orig_rax, rip;
-	unsigned long cs, eflags, rsp, ss, fs_base, gs_base, ds, es, fs, gs;
+struct user_regs_struct {
+  unsigned long r15, r14, r13, r12, rbp, rbx, r11, r10, r9, r8;
+  unsigned long rax, rcx, rdx, rsi, rdi, orig_rax, rip;
+  unsigned long cs, eflags, rsp, ss, fs_base, gs_base, ds, es, fs, gs;
 };
 #define ELF_NGREG 27
 typedef unsigned long long elf_greg_t, elf_gregset_t[ELF_NGREG];
 
-struct user
-{
-	struct user_regs_struct		regs;
-	int				u_fpvalid;
-	struct user_fpregs_struct	i387;
-	unsigned long			u_tsize;
-	unsigned long			u_dsize;
-	unsigned long			u_ssize;
-	unsigned long			start_code;
-	unsigned long			start_stack;
-	long				signal;
-	int				reserved;
-	struct user_regs_struct		*u_ar0;
-	struct user_fpregs_struct	*u_fpstate;
-	unsigned long			magic;
-	char				u_comm[32];
-	unsigned long			u_debugreg[8];
+struct user {
+  struct user_regs_struct regs;
+  int u_fpvalid;
+  struct user_fpregs_struct i387;
+  unsigned long u_tsize;
+  unsigned long u_dsize;
+  unsigned long u_ssize;
+  unsigned long start_code;
+  unsigned long start_stack;
+  long signal;
+  int reserved;
+  struct user_regs_struct* u_ar0;
+  struct user_fpregs_struct* u_fpstate;
+  unsigned long magic;
+  char u_comm[32];
+  unsigned long u_debugreg[8];
 };
 
-#define PAGE_MASK		(~(PAGE_SIZE-1))
-#define NBPG			PAGE_SIZE
-#define UPAGES			1
-#define HOST_TEXT_START_ADDR	(u.start_code)
-#define HOST_STACK_END_ADDR	(u.start_stack + u.u_ssize * NBPG)
+#define PAGE_MASK (~(PAGE_SIZE - 1))
+#define NBPG PAGE_SIZE
+#define UPAGES 1
+#define HOST_TEXT_START_ADDR (u.start_code)
+#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
diff --git a/fusl/arch/x32/crt_arch.h b/fusl/arch/x32/crt_arch.h
index 3eec61b..67de65e 100644
--- a/fusl/arch/x32/crt_arch.h
+++ b/fusl/arch/x32/crt_arch.h
@@ -1,12 +1,11 @@
 __asm__(
-".text \n"
-".global " START " \n"
-START ": \n"
-"	xor %rbp,%rbp \n"
-"	mov %rsp,%rdi \n"
-".weak _DYNAMIC \n"
-".hidden _DYNAMIC \n"
-"	lea _DYNAMIC(%rip),%rsi \n"
-"	andq $-16,%rsp \n"
-"	call " START "_c \n"
-);
+    ".text \n"
+    ".global " START " \n" START
+    ": \n"
+    "	xor %rbp,%rbp \n"
+    "	mov %rsp,%rdi \n"
+    ".weak _DYNAMIC \n"
+    ".hidden _DYNAMIC \n"
+    "	lea _DYNAMIC(%rip),%rsi \n"
+    "	andq $-16,%rsp \n"
+    "	call " START "_c \n");
diff --git a/fusl/arch/x32/pthread_arch.h b/fusl/arch/x32/pthread_arch.h
index ecb0bbf..e764c98 100644
--- a/fusl/arch/x32/pthread_arch.h
+++ b/fusl/arch/x32/pthread_arch.h
@@ -1,8 +1,7 @@
-static inline struct pthread *__pthread_self()
-{
-	struct pthread *self;
-	__asm__ __volatile__ ("mov %%fs:0,%0" : "=r" (self) );
-	return self;
+static inline struct pthread* __pthread_self() {
+  struct pthread* self;
+  __asm__ __volatile__("mov %%fs:0,%0" : "=r"(self));
+  return self;
 }
 
 #define TP_ADJ(p) (p)
diff --git a/fusl/arch/x32/reloc.h b/fusl/arch/x32/reloc.h
index dc039ad..92ddaf1 100644
--- a/fusl/arch/x32/reloc.h
+++ b/fusl/arch/x32/reloc.h
@@ -12,20 +12,26 @@
  * they do not seem to be used/usable for anything. If needed, new
  * mappings will have to be added. */
 
-#define REL_SYMBOLIC    R_X86_64_32
-#define REL_OFFSET      R_X86_64_PC32
-#define REL_GOT         R_X86_64_GLOB_DAT
-#define REL_PLT         R_X86_64_JUMP_SLOT
-#define REL_RELATIVE    R_X86_64_RELATIVE
-#define REL_COPY        R_X86_64_COPY
-#define REL_DTPMOD      R_X86_64_DTPMOD64
-#define REL_DTPOFF      R_X86_64_DTPOFF64
-#define REL_TPOFF       R_X86_64_TPOFF64
+#define REL_SYMBOLIC R_X86_64_32
+#define REL_OFFSET R_X86_64_PC32
+#define REL_GOT R_X86_64_GLOB_DAT
+#define REL_PLT R_X86_64_JUMP_SLOT
+#define REL_RELATIVE R_X86_64_RELATIVE
+#define REL_COPY R_X86_64_COPY
+#define REL_DTPMOD R_X86_64_DTPMOD64
+#define REL_DTPOFF R_X86_64_DTPOFF64
+#define REL_TPOFF R_X86_64_TPOFF64
 
-#define CRTJMP(pc,sp) __asm__ __volatile__( \
-	"mov %1,%%esp ; jmp *%0" : : "r"((uint64_t)(uintptr_t)pc), "r"(sp) : "memory" )
+#define CRTJMP(pc, sp)                                         \
+  __asm__ __volatile__("mov %1,%%esp ; jmp *%0"                \
+                       :                                       \
+                       : "r"((uint64_t)(uintptr_t)pc), "r"(sp) \
+                       : "memory")
 
-#define GETFUNCSYM(fp, sym, got) __asm__ ( \
-	".hidden " #sym "\n" \
-	"	lea " #sym "(%%rip),%0\n" \
-	: "=r"(*fp) : : "memory" )
+#define GETFUNCSYM(fp, sym, got)          \
+  __asm__(".hidden " #sym                 \
+          "\n"                            \
+          "	lea " #sym "(%%rip),%0\n" \
+          : "=r"(*fp)                     \
+          :                               \
+          : "memory")
diff --git a/fusl/arch/x32/syscall_arch.h b/fusl/arch/x32/syscall_arch.h
index 344da03..143fc04 100644
--- a/fusl/arch/x32/syscall_arch.h
+++ b/fusl/arch/x32/syscall_arch.h
@@ -1,126 +1,168 @@
 #define __SYSCALL_LL_E(x) (x)
 #define __SYSCALL_LL_O(x) (x)
 
-#define __scc(X) sizeof(1?(X):0ULL) < 8 ? (unsigned long) (X) : (long long) (X)
+#define __scc(X) \
+  sizeof(1 ? (X) : 0ULL) < 8 ? (unsigned long)(X) : (long long)(X)
 typedef long long syscall_arg_t;
-struct __timespec { long long tv_sec; long tv_nsec; };
-struct __timespec_kernel { long long tv_sec; long long tv_nsec; };
+struct __timespec {
+  long long tv_sec;
+  long tv_nsec;
+};
+struct __timespec_kernel {
+  long long tv_sec;
+  long long tv_nsec;
+};
 #define __tsc(X) ((struct __timespec*)(unsigned long)(X))
-#define __fixup(X) do { if(X) { \
-	ts->tv_sec = __tsc(X)->tv_sec; \
-	ts->tv_nsec = __tsc(X)->tv_nsec; \
-	(X) = (unsigned long)ts; } } while(0)
-#define __fixup_case_2 \
-	case SYS_nanosleep: \
-		__fixup(a1); break; \
-	case SYS_clock_settime: \
-		__fixup(a2); break;
-#define __fixup_case_3 \
-	case SYS_clock_nanosleep: case SYS_rt_sigtimedwait: case SYS_ppoll: \
-		__fixup(a3); break; \
-	case SYS_utimensat: \
-		if(a3) { \
-			ts[0].tv_sec = __tsc(a3)[0].tv_sec; \
-			ts[0].tv_nsec = __tsc(a3)[0].tv_nsec; \
-			ts[1].tv_sec = __tsc(a3)[1].tv_sec; \
-			ts[1].tv_nsec = __tsc(a3)[1].tv_nsec; \
-			a3 = (unsigned long)ts; \
-		} break;
-#define __fixup_case_4 \
-	case SYS_futex: \
-		if((a2 & (~128 /* FUTEX_PRIVATE_FLAG */)) == 0 /* FUTEX_WAIT */) __fixup(a4); break;
-#define __fixup_case_5 \
-	case SYS_mq_timedsend: case SYS_mq_timedreceive: case SYS_pselect6: \
-		__fixup(a5); break;
+#define __fixup(X)                     \
+  do {                                 \
+    if (X) {                           \
+      ts->tv_sec = __tsc(X)->tv_sec;   \
+      ts->tv_nsec = __tsc(X)->tv_nsec; \
+      (X) = (unsigned long)ts;         \
+    }                                  \
+  } while (0)
+#define __fixup_case_2    \
+  case SYS_nanosleep:     \
+    __fixup(a1);          \
+    break;                \
+  case SYS_clock_settime: \
+    __fixup(a2);          \
+    break;
+#define __fixup_case_3                      \
+  case SYS_clock_nanosleep:                 \
+  case SYS_rt_sigtimedwait:                 \
+  case SYS_ppoll:                           \
+    __fixup(a3);                            \
+    break;                                  \
+  case SYS_utimensat:                       \
+    if (a3) {                               \
+      ts[0].tv_sec = __tsc(a3)[0].tv_sec;   \
+      ts[0].tv_nsec = __tsc(a3)[0].tv_nsec; \
+      ts[1].tv_sec = __tsc(a3)[1].tv_sec;   \
+      ts[1].tv_nsec = __tsc(a3)[1].tv_nsec; \
+      a3 = (unsigned long)ts;               \
+    }                                       \
+    break;
+#define __fixup_case_4                                                \
+  case SYS_futex:                                                     \
+    if ((a2 & (~128 /* FUTEX_PRIVATE_FLAG */)) == 0 /* FUTEX_WAIT */) \
+      __fixup(a4);                                                    \
+    break;
+#define __fixup_case_5      \
+  case SYS_mq_timedsend:    \
+  case SYS_mq_timedreceive: \
+  case SYS_pselect6:        \
+    __fixup(a5);            \
+    break;
 
-static __inline long __syscall0(long long n)
-{
-	unsigned long ret;
-	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n) : "rcx", "r11", "memory");
-	return ret;
+static __inline long __syscall0(long long n) {
+  unsigned long ret;
+  __asm__ __volatile__("syscall" : "=a"(ret) : "a"(n) : "rcx", "r11", "memory");
+  return ret;
 }
 
-static __inline long __syscall1(long long n, long long a1)
-{
-	unsigned long ret;
-	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1) : "rcx", "r11", "memory");
-	return ret;
+static __inline long __syscall1(long long n, long long a1) {
+  unsigned long ret;
+  __asm__ __volatile__("syscall"
+                       : "=a"(ret)
+                       : "a"(n), "D"(a1)
+                       : "rcx", "r11", "memory");
+  return ret;
 }
 
-static __inline long __syscall2(long long n, long long a1, long long a2)
-{
-	unsigned long ret;
-	struct __timespec_kernel ts[1];
-	switch (n) {
-		__fixup_case_2;
-	}
-	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2)
-					: "rcx", "r11", "memory");
-	return ret;
+static __inline long __syscall2(long long n, long long a1, long long a2) {
+  unsigned long ret;
+  struct __timespec_kernel ts[1];
+  switch (n) { __fixup_case_2; }
+  __asm__ __volatile__("syscall"
+                       : "=a"(ret)
+                       : "a"(n), "D"(a1), "S"(a2)
+                       : "rcx", "r11", "memory");
+  return ret;
 }
 
-static __inline long __syscall3(long long n, long long a1, long long a2, long long a3)
-{
-	unsigned long ret;
-	struct __timespec_kernel ts[2];
-	switch (n) {
-		__fixup_case_2;
-		__fixup_case_3;
-	}
-	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
-						  "d"(a3) : "rcx", "r11", "memory");
-	return ret;
+static __inline long __syscall3(long long n,
+                                long long a1,
+                                long long a2,
+                                long long a3) {
+  unsigned long ret;
+  struct __timespec_kernel ts[2];
+  switch (n) {
+    __fixup_case_2;
+    __fixup_case_3;
+  }
+  __asm__ __volatile__("syscall"
+                       : "=a"(ret)
+                       : "a"(n), "D"(a1), "S"(a2), "d"(a3)
+                       : "rcx", "r11", "memory");
+  return ret;
 }
 
-static __inline long __syscall4(long long n, long long a1, long long a2, long long a3,
-                                     long long a4_)
-{
-	unsigned long ret;
-	register long long a4 __asm__("r10") = a4_;
-	struct __timespec_kernel ts[2];
-	switch (n) {
-		__fixup_case_2;
-		__fixup_case_3;
-		__fixup_case_4;
-	}
-	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
-					  "d"(a3), "r"(a4): "rcx", "r11", "memory");
-	return ret;
+static __inline long __syscall4(long long n,
+                                long long a1,
+                                long long a2,
+                                long long a3,
+                                long long a4_) {
+  unsigned long ret;
+  register long long a4 __asm__("r10") = a4_;
+  struct __timespec_kernel ts[2];
+  switch (n) {
+    __fixup_case_2;
+    __fixup_case_3;
+    __fixup_case_4;
+  }
+  __asm__ __volatile__("syscall"
+                       : "=a"(ret)
+                       : "a"(n), "D"(a1), "S"(a2), "d"(a3), "r"(a4)
+                       : "rcx", "r11", "memory");
+  return ret;
 }
 
-static __inline long __syscall5(long long n, long long a1, long long a2, long long a3,
-                                     long long a4_, long long a5_)
-{
-	unsigned long ret;
-	register long long a4 __asm__("r10") = a4_;
-	register long long a5 __asm__("r8") = a5_;
-	struct __timespec_kernel ts[2];
-	switch (n) {
-		__fixup_case_2;
-		__fixup_case_3;
-		__fixup_case_4;
-		__fixup_case_5;
-	}
-	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
-					  "d"(a3), "r"(a4), "r"(a5) : "rcx", "r11", "memory");
-	return ret;
+static __inline long __syscall5(long long n,
+                                long long a1,
+                                long long a2,
+                                long long a3,
+                                long long a4_,
+                                long long a5_) {
+  unsigned long ret;
+  register long long a4 __asm__("r10") = a4_;
+  register long long a5 __asm__("r8") = a5_;
+  struct __timespec_kernel ts[2];
+  switch (n) {
+    __fixup_case_2;
+    __fixup_case_3;
+    __fixup_case_4;
+    __fixup_case_5;
+  }
+  __asm__ __volatile__("syscall"
+                       : "=a"(ret)
+                       : "a"(n), "D"(a1), "S"(a2), "d"(a3), "r"(a4), "r"(a5)
+                       : "rcx", "r11", "memory");
+  return ret;
 }
 
-static __inline long __syscall6(long long n, long long a1, long long a2, long long a3,
-                                     long long a4_, long long a5_, long long a6_)
-{
-	unsigned long ret;
-	register long long a4 __asm__("r10") = a4_;
-	register long long a5 __asm__("r8") = a5_;
-	register long long a6 __asm__("r9") = a6_;
-	struct __timespec_kernel ts[2];
-	switch (n) {
-		__fixup_case_2;
-		__fixup_case_3;
-		__fixup_case_4;
-		__fixup_case_5;
-	}
-	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
-					  "d"(a3), "r"(a4), "r"(a5), "r"(a6) : "rcx", "r11", "memory");
-	return ret;
+static __inline long __syscall6(long long n,
+                                long long a1,
+                                long long a2,
+                                long long a3,
+                                long long a4_,
+                                long long a5_,
+                                long long a6_) {
+  unsigned long ret;
+  register long long a4 __asm__("r10") = a4_;
+  register long long a5 __asm__("r8") = a5_;
+  register long long a6 __asm__("r9") = a6_;
+  struct __timespec_kernel ts[2];
+  switch (n) {
+    __fixup_case_2;
+    __fixup_case_3;
+    __fixup_case_4;
+    __fixup_case_5;
+  }
+  __asm__ __volatile__("syscall"
+                       : "=a"(ret)
+                       : "a"(n), "D"(a1), "S"(a2), "d"(a3), "r"(a4), "r"(a5),
+                         "r"(a6)
+                       : "rcx", "r11", "memory");
+  return ret;
 }
diff --git a/fusl/arch/x86_64/atomic_arch.h b/fusl/arch/x86_64/atomic_arch.h
index 9f47f80..f062d57 100644
--- a/fusl/arch/x86_64/atomic_arch.h
+++ b/fusl/arch/x86_64/atomic_arch.h
@@ -1,116 +1,91 @@
 #define a_cas a_cas
-static inline int a_cas(volatile int *p, int t, int s)
-{
-	__asm__ __volatile__ (
-		"lock ; cmpxchg %3, %1"
-		: "=a"(t), "=m"(*p) : "a"(t), "r"(s) : "memory" );
-	return t;
+static inline int a_cas(volatile int* p, int t, int s) {
+  __asm__ __volatile__("lock ; cmpxchg %3, %1"
+                       : "=a"(t), "=m"(*p)
+                       : "a"(t), "r"(s)
+                       : "memory");
+  return t;
 }
 
 #define a_cas_p a_cas_p
-static inline void *a_cas_p(volatile void *p, void *t, void *s)
-{
-	__asm__( "lock ; cmpxchg %3, %1"
-		: "=a"(t), "=m"(*(void *volatile *)p)
-		: "a"(t), "r"(s) : "memory" );
-	return t;
+static inline void* a_cas_p(volatile void* p, void* t, void* s) {
+  __asm__("lock ; cmpxchg %3, %1"
+          : "=a"(t), "=m"(*(void* volatile*)p)
+          : "a"(t), "r"(s)
+          : "memory");
+  return t;
 }
 
 #define a_swap a_swap
-static inline int a_swap(volatile int *p, int v)
-{
-	__asm__ __volatile__(
-		"xchg %0, %1"
-		: "=r"(v), "=m"(*p) : "0"(v) : "memory" );
-	return v;
+static inline int a_swap(volatile int* p, int v) {
+  __asm__ __volatile__("xchg %0, %1" : "=r"(v), "=m"(*p) : "0"(v) : "memory");
+  return v;
 }
 
 #define a_fetch_add a_fetch_add
-static inline int a_fetch_add(volatile int *p, int v)
-{
-	__asm__ __volatile__(
-		"lock ; xadd %0, %1"
-		: "=r"(v), "=m"(*p) : "0"(v) : "memory" );
-	return v;
+static inline int a_fetch_add(volatile int* p, int v) {
+  __asm__ __volatile__("lock ; xadd %0, %1"
+                       : "=r"(v), "=m"(*p)
+                       : "0"(v)
+                       : "memory");
+  return v;
 }
 
 #define a_and a_and
-static inline void a_and(volatile int *p, int v)
-{
-	__asm__ __volatile__(
-		"lock ; and %1, %0"
-		: "=m"(*p) : "r"(v) : "memory" );
+static inline void a_and(volatile int* p, int v) {
+  __asm__ __volatile__("lock ; and %1, %0" : "=m"(*p) : "r"(v) : "memory");
 }
 
 #define a_or a_or
-static inline void a_or(volatile int *p, int v)
-{
-	__asm__ __volatile__(
-		"lock ; or %1, %0"
-		: "=m"(*p) : "r"(v) : "memory" );
+static inline void a_or(volatile int* p, int v) {
+  __asm__ __volatile__("lock ; or %1, %0" : "=m"(*p) : "r"(v) : "memory");
 }
 
 #define a_and_64 a_and_64
-static inline void a_and_64(volatile uint64_t *p, uint64_t v)
-{
-	__asm__ __volatile(
-		"lock ; and %1, %0"
-		 : "=m"(*p) : "r"(v) : "memory" );
+static inline void a_and_64(volatile uint64_t* p, uint64_t v) {
+  __asm__ __volatile("lock ; and %1, %0" : "=m"(*p) : "r"(v) : "memory");
 }
 
 #define a_or_64 a_or_64
-static inline void a_or_64(volatile uint64_t *p, uint64_t v)
-{
-	__asm__ __volatile__(
-		"lock ; or %1, %0"
-		 : "=m"(*p) : "r"(v) : "memory" );
+static inline void a_or_64(volatile uint64_t* p, uint64_t v) {
+  __asm__ __volatile__("lock ; or %1, %0" : "=m"(*p) : "r"(v) : "memory");
 }
 
 #define a_inc a_inc
-static inline void a_inc(volatile int *p)
-{
-	__asm__ __volatile__(
-		"lock ; incl %0"
-		: "=m"(*p) : "m"(*p) : "memory" );
+static inline void a_inc(volatile int* p) {
+  __asm__ __volatile__("lock ; incl %0" : "=m"(*p) : "m"(*p) : "memory");
 }
 
 #define a_dec a_dec
-static inline void a_dec(volatile int *p)
-{
-	__asm__ __volatile__(
-		"lock ; decl %0"
-		: "=m"(*p) : "m"(*p) : "memory" );
+static inline void a_dec(volatile int* p) {
+  __asm__ __volatile__("lock ; decl %0" : "=m"(*p) : "m"(*p) : "memory");
 }
 
 #define a_store a_store
-static inline void a_store(volatile int *p, int x)
-{
-	__asm__ __volatile__(
-		"mov %1, %0 ; lock ; orl $0,(%%rsp)"
-		: "=m"(*p) : "r"(x) : "memory" );
+static inline void a_store(volatile int* p, int x) {
+  __asm__ __volatile__("mov %1, %0 ; lock ; orl $0,(%%rsp)"
+                       : "=m"(*p)
+                       : "r"(x)
+                       : "memory");
 }
 
 #define a_barrier a_barrier
-static inline void a_barrier()
-{
-	__asm__ __volatile__( "" : : : "memory" );
+static inline void a_barrier() {
+  __asm__ __volatile__("" : : : "memory");
 }
 
 #define a_pause a_pause
-static inline void a_spin()
-{
-	__asm__ __volatile__( "pause" : : : "memory" );
+static inline void a_spin() {
+  __asm__ __volatile__("pause" : : : "memory");
 }
 
 #define a_crash a_crash
-static inline void a_crash()
-{
-	__asm__ __volatile__( "hlt" : : : "memory" );
+static inline void a_crash() {
+  __asm__ __volatile__("hlt" : : : "memory");
 }
 
 #define a_ctz_64 a_ctz_64
-static inline int a_ctz_64(uint64_t x)
-{
-	__asm__( "bsf %1,%0" : "=r"(x) : "r"(x) );
-	return x;
+static inline int a_ctz_64(uint64_t x) {
+  __asm__("bsf %1,%0" : "=r"(x) : "r"(x));
+  return x;
 }
diff --git a/fusl/arch/x86_64/bits/alltypes.h b/fusl/arch/x86_64/bits/alltypes.h
index 5ae8b5c..77bfc14 100644
--- a/fusl/arch/x86_64/bits/alltypes.h
+++ b/fusl/arch/x86_64/bits/alltypes.h
@@ -12,7 +12,6 @@
 #define __DEFINED___isoc_va_list
 #endif
 
-
 #ifndef __cplusplus
 #if defined(__NEED_wchar_t) && !defined(__DEFINED_wchar_t)
 typedef int wchar_t;
@@ -46,11 +45,13 @@
 #endif
 
 #if defined(__NEED_max_align_t) && !defined(__DEFINED_max_align_t)
-typedef struct { long long __ll; long double __ld; } max_align_t;
+typedef struct {
+  long long __ll;
+  long double __ld;
+} max_align_t;
 #define __DEFINED_max_align_t
 #endif
 
-
 #if defined(__NEED_time_t) && !defined(__DEFINED_time_t)
 typedef long time_t;
 #define __DEFINED_time_t
@@ -61,39 +62,80 @@
 #define __DEFINED_suseconds_t
 #endif
 
-
 #if defined(__NEED_pthread_attr_t) && !defined(__DEFINED_pthread_attr_t)
-typedef struct { union { int __i[14]; volatile int __vi[14]; unsigned long __s[7]; } __u; } pthread_attr_t;
+typedef struct {
+  union {
+    int __i[14];
+    volatile int __vi[14];
+    unsigned long __s[7];
+  } __u;
+} pthread_attr_t;
 #define __DEFINED_pthread_attr_t
 #endif
 
 #if defined(__NEED_pthread_mutex_t) && !defined(__DEFINED_pthread_mutex_t)
-typedef struct { union { int __i[10]; volatile int __vi[10]; volatile void *volatile __p[5]; } __u; } pthread_mutex_t;
+typedef struct {
+  union {
+    int __i[10];
+    volatile int __vi[10];
+    volatile void* volatile __p[5];
+  } __u;
+} pthread_mutex_t;
 #define __DEFINED_pthread_mutex_t
 #endif
 
 #if defined(__NEED_mtx_t) && !defined(__DEFINED_mtx_t)
-typedef struct { union { int __i[10]; volatile int __vi[10]; volatile void *volatile __p[5]; } __u; } mtx_t;
+typedef struct {
+  union {
+    int __i[10];
+    volatile int __vi[10];
+    volatile void* volatile __p[5];
+  } __u;
+} mtx_t;
 #define __DEFINED_mtx_t
 #endif
 
 #if defined(__NEED_pthread_cond_t) && !defined(__DEFINED_pthread_cond_t)
-typedef struct { union { int __i[12]; volatile int __vi[12]; void *__p[6]; } __u; } pthread_cond_t;
+typedef struct {
+  union {
+    int __i[12];
+    volatile int __vi[12];
+    void* __p[6];
+  } __u;
+} pthread_cond_t;
 #define __DEFINED_pthread_cond_t
 #endif
 
 #if defined(__NEED_cnd_t) && !defined(__DEFINED_cnd_t)
-typedef struct { union { int __i[12]; volatile int __vi[12]; void *__p[6]; } __u; } cnd_t;
+typedef struct {
+  union {
+    int __i[12];
+    volatile int __vi[12];
+    void* __p[6];
+  } __u;
+} cnd_t;
 #define __DEFINED_cnd_t
 #endif
 
 #if defined(__NEED_pthread_rwlock_t) && !defined(__DEFINED_pthread_rwlock_t)
-typedef struct { union { int __i[14]; volatile int __vi[14]; void *__p[7]; } __u; } pthread_rwlock_t;
+typedef struct {
+  union {
+    int __i[14];
+    volatile int __vi[14];
+    void* __p[7];
+  } __u;
+} pthread_rwlock_t;
 #define __DEFINED_pthread_rwlock_t
 #endif
 
 #if defined(__NEED_pthread_barrier_t) && !defined(__DEFINED_pthread_barrier_t)
-typedef struct { union { int __i[8]; volatile int __vi[8]; void *__p[4]; } __u; } pthread_barrier_t;
+typedef struct {
+  union {
+    int __i[8];
+    volatile int __vi[8];
+    void* __p[4];
+  } __u;
+} pthread_barrier_t;
 #define __DEFINED_pthread_barrier_t
 #endif
 
@@ -132,44 +174,43 @@
 #define __DEFINED_register_t
 #endif
 
-
 #if defined(__NEED_int8_t) && !defined(__DEFINED_int8_t)
-typedef signed char     int8_t;
+typedef signed char int8_t;
 #define __DEFINED_int8_t
 #endif
 
 #if defined(__NEED_int16_t) && !defined(__DEFINED_int16_t)
-typedef short           int16_t;
+typedef short int16_t;
 #define __DEFINED_int16_t
 #endif
 
 #if defined(__NEED_int32_t) && !defined(__DEFINED_int32_t)
-typedef int             int32_t;
+typedef int int32_t;
 #define __DEFINED_int32_t
 #endif
 
 #if defined(__NEED_int64_t) && !defined(__DEFINED_int64_t)
-typedef _Int64          int64_t;
+typedef _Int64 int64_t;
 #define __DEFINED_int64_t
 #endif
 
 #if defined(__NEED_intmax_t) && !defined(__DEFINED_intmax_t)
-typedef _Int64          intmax_t;
+typedef _Int64 intmax_t;
 #define __DEFINED_intmax_t
 #endif
 
 #if defined(__NEED_uint8_t) && !defined(__DEFINED_uint8_t)
-typedef unsigned char   uint8_t;
+typedef unsigned char uint8_t;
 #define __DEFINED_uint8_t
 #endif
 
 #if defined(__NEED_uint16_t) && !defined(__DEFINED_uint16_t)
-typedef unsigned short  uint16_t;
+typedef unsigned short uint16_t;
 #define __DEFINED_uint16_t
 #endif
 
 #if defined(__NEED_uint32_t) && !defined(__DEFINED_uint32_t)
-typedef unsigned int    uint32_t;
+typedef unsigned int uint32_t;
 #define __DEFINED_uint32_t
 #endif
 
@@ -188,7 +229,6 @@
 #define __DEFINED_uintmax_t
 #endif
 
-
 #if defined(__NEED_mode_t) && !defined(__DEFINED_mode_t)
 typedef unsigned mode_t;
 #define __DEFINED_mode_t
@@ -234,7 +274,6 @@
 #define __DEFINED_fsfilcnt_t
 #endif
 
-
 #if defined(__NEED_wint_t) && !defined(__DEFINED_wint_t)
 typedef unsigned wint_t;
 #define __DEFINED_wint_t
@@ -245,9 +284,8 @@
 #define __DEFINED_wctype_t
 #endif
 
-
 #if defined(__NEED_timer_t) && !defined(__DEFINED_timer_t)
-typedef void * timer_t;
+typedef void* timer_t;
 #define __DEFINED_timer_t
 #endif
 
@@ -262,16 +300,21 @@
 #endif
 
 #if defined(__NEED_struct_timeval) && !defined(__DEFINED_struct_timeval)
-struct timeval { time_t tv_sec; suseconds_t tv_usec; };
+struct timeval {
+  time_t tv_sec;
+  suseconds_t tv_usec;
+};
 #define __DEFINED_struct_timeval
 #endif
 
 #if defined(__NEED_struct_timespec) && !defined(__DEFINED_struct_timespec)
-struct timespec { time_t tv_sec; long tv_nsec; };
+struct timespec {
+  time_t tv_sec;
+  long tv_nsec;
+};
 #define __DEFINED_struct_timespec
 #endif
 
-
 #if defined(__NEED_pid_t) && !defined(__DEFINED_pid_t)
 typedef int pid_t;
 #define __DEFINED_pid_t
@@ -302,7 +345,6 @@
 #define __DEFINED_useconds_t
 #endif
 
-
 #ifdef __cplusplus
 #if defined(__NEED_pthread_t) && !defined(__DEFINED_pthread_t)
 typedef unsigned long pthread_t;
@@ -311,7 +353,7 @@
 
 #else
 #if defined(__NEED_pthread_t) && !defined(__DEFINED_pthread_t)
-typedef struct __pthread * pthread_t;
+typedef struct __pthread* pthread_t;
 #define __DEFINED_pthread_t
 #endif
 
@@ -331,7 +373,8 @@
 #define __DEFINED_pthread_spinlock_t
 #endif
 
-#if defined(__NEED_pthread_mutexattr_t) && !defined(__DEFINED_pthread_mutexattr_t)
+#if defined(__NEED_pthread_mutexattr_t) && \
+    !defined(__DEFINED_pthread_mutexattr_t)
 typedef struct { unsigned __attr; } pthread_mutexattr_t;
 #define __DEFINED_pthread_mutexattr_t
 #endif
@@ -341,47 +384,48 @@
 #define __DEFINED_pthread_condattr_t
 #endif
 
-#if defined(__NEED_pthread_barrierattr_t) && !defined(__DEFINED_pthread_barrierattr_t)
+#if defined(__NEED_pthread_barrierattr_t) && \
+    !defined(__DEFINED_pthread_barrierattr_t)
 typedef struct { unsigned __attr; } pthread_barrierattr_t;
 #define __DEFINED_pthread_barrierattr_t
 #endif
 
-#if defined(__NEED_pthread_rwlockattr_t) && !defined(__DEFINED_pthread_rwlockattr_t)
+#if defined(__NEED_pthread_rwlockattr_t) && \
+    !defined(__DEFINED_pthread_rwlockattr_t)
 typedef struct { unsigned __attr[2]; } pthread_rwlockattr_t;
 #define __DEFINED_pthread_rwlockattr_t
 #endif
 
-
 #if defined(__NEED_FILE) && !defined(__DEFINED_FILE)
 typedef struct _IO_FILE FILE;
 #define __DEFINED_FILE
 #endif
 
-
 #if defined(__NEED_mbstate_t) && !defined(__DEFINED_mbstate_t)
 typedef struct __mbstate_t { unsigned __opaque1, __opaque2; } mbstate_t;
 #define __DEFINED_mbstate_t
 #endif
 
-
 #if defined(__NEED_locale_t) && !defined(__DEFINED_locale_t)
-typedef struct __locale_struct * locale_t;
+typedef struct __locale_struct* locale_t;
 #define __DEFINED_locale_t
 #endif
 
-
 #if defined(__NEED_sigset_t) && !defined(__DEFINED_sigset_t)
-typedef struct __sigset_t { unsigned long __bits[128/sizeof(long)]; } sigset_t;
+typedef struct __sigset_t {
+  unsigned long __bits[128 / sizeof(long)];
+} sigset_t;
 #define __DEFINED_sigset_t
 #endif
 
-
 #if defined(__NEED_struct_iovec) && !defined(__DEFINED_struct_iovec)
-struct iovec { void *iov_base; size_t iov_len; };
+struct iovec {
+  void* iov_base;
+  size_t iov_len;
+};
 #define __DEFINED_struct_iovec
 #endif
 
-
 #if defined(__NEED_socklen_t) && !defined(__DEFINED_socklen_t)
 typedef unsigned socklen_t;
 #define __DEFINED_socklen_t
@@ -392,7 +436,6 @@
 #define __DEFINED_sa_family_t
 #endif
 
-
 #undef _Addr
 #undef _Int64
 #undef _Reg
diff --git a/fusl/arch/x86_64/bits/fcntl.h b/fusl/arch/x86_64/bits/fcntl.h
index 1b88ad3..c3fca26 100644
--- a/fusl/arch/x86_64/bits/fcntl.h
+++ b/fusl/arch/x86_64/bits/fcntl.h
@@ -1,29 +1,29 @@
-#define O_CREAT        0100
-#define O_EXCL         0200
-#define O_NOCTTY       0400
-#define O_TRUNC       01000
-#define O_APPEND      02000
-#define O_NONBLOCK    04000
-#define O_DSYNC      010000
-#define O_SYNC     04010000
-#define O_RSYNC    04010000
+#define O_CREAT 0100
+#define O_EXCL 0200
+#define O_NOCTTY 0400
+#define O_TRUNC 01000
+#define O_APPEND 02000
+#define O_NONBLOCK 04000
+#define O_DSYNC 010000
+#define O_SYNC 04010000
+#define O_RSYNC 04010000
 #define O_DIRECTORY 0200000
-#define O_NOFOLLOW  0400000
-#define O_CLOEXEC  02000000
+#define O_NOFOLLOW 0400000
+#define O_CLOEXEC 02000000
 
-#define O_ASYNC      020000
-#define O_DIRECT     040000
-#define O_LARGEFILE       0
-#define O_NOATIME  01000000
-#define O_PATH    010000000
+#define O_ASYNC 020000
+#define O_DIRECT 040000
+#define O_LARGEFILE 0
+#define O_NOATIME 01000000
+#define O_PATH 010000000
 #define O_TMPFILE 020200000
 #define O_NDELAY O_NONBLOCK
 
-#define F_DUPFD  0
-#define F_GETFD  1
-#define F_SETFD  2
-#define F_GETFL  3
-#define F_SETFL  4
+#define F_DUPFD 0
+#define F_GETFD 1
+#define F_SETFD 2
+#define F_GETFL 3
+#define F_SETFL 4
 
 #define F_SETOWN 8
 #define F_GETOWN 9
diff --git a/fusl/arch/x86_64/bits/fenv.h b/fusl/arch/x86_64/bits/fenv.h
index 24df041..32e7dbf 100644
--- a/fusl/arch/x86_64/bits/fenv.h
+++ b/fusl/arch/x86_64/bits/fenv.h
@@ -1,34 +1,34 @@
-#define FE_INVALID    1
-#define __FE_DENORM   2
-#define FE_DIVBYZERO  4
-#define FE_OVERFLOW   8
-#define FE_UNDERFLOW  16
-#define FE_INEXACT    32
+#define FE_INVALID 1
+#define __FE_DENORM 2
+#define FE_DIVBYZERO 4
+#define FE_OVERFLOW 8
+#define FE_UNDERFLOW 16
+#define FE_INEXACT 32
 
 #define FE_ALL_EXCEPT 63
 
-#define FE_TONEAREST  0
-#define FE_DOWNWARD   0x400
-#define FE_UPWARD     0x800
+#define FE_TONEAREST 0
+#define FE_DOWNWARD 0x400
+#define FE_UPWARD 0x800
 #define FE_TOWARDZERO 0xc00
 
 typedef unsigned short fexcept_t;
 
 typedef struct {
-	unsigned short __control_word;
-	unsigned short __unused1;
-	unsigned short __status_word;
-	unsigned short __unused2;
-	unsigned short __tags;
-	unsigned short __unused3;
-	unsigned int __eip;
-	unsigned short __cs_selector;
-	unsigned int __opcode:11;
-	unsigned int __unused4:5;
-	unsigned int __data_offset;
-	unsigned short __data_selector;
-	unsigned short __unused5;
-	unsigned int __mxcsr;
+  unsigned short __control_word;
+  unsigned short __unused1;
+  unsigned short __status_word;
+  unsigned short __unused2;
+  unsigned short __tags;
+  unsigned short __unused3;
+  unsigned int __eip;
+  unsigned short __cs_selector;
+  unsigned int __opcode : 11;
+  unsigned int __unused4 : 5;
+  unsigned int __data_offset;
+  unsigned short __data_selector;
+  unsigned short __unused5;
+  unsigned int __mxcsr;
 } fenv_t;
 
-#define FE_DFL_ENV      ((const fenv_t *) -1)
+#define FE_DFL_ENV ((const fenv_t*)-1)
diff --git a/fusl/arch/x86_64/bits/float.h b/fusl/arch/x86_64/bits/float.h
index 4d8e786..f935e34 100644
--- a/fusl/arch/x86_64/bits/float.h
+++ b/fusl/arch/x86_64/bits/float.h
@@ -5,8 +5,8 @@
 #endif
 
 #define LDBL_TRUE_MIN 3.6451995318824746025e-4951L
-#define LDBL_MIN     3.3621031431120935063e-4932L
-#define LDBL_MAX     1.1897314953572317650e+4932L
+#define LDBL_MIN 3.3621031431120935063e-4932L
+#define LDBL_MAX 1.1897314953572317650e+4932L
 #define LDBL_EPSILON 1.0842021724855044340e-19L
 
 #define LDBL_MANT_DIG 64
diff --git a/fusl/arch/x86_64/bits/io.h b/fusl/arch/x86_64/bits/io.h
index dd5bddc..1d715d9 100644
--- a/fusl/arch/x86_64/bits/io.h
+++ b/fusl/arch/x86_64/bits/io.h
@@ -1,77 +1,65 @@
-static __inline void outb(unsigned char __val, unsigned short __port)
-{
-	__asm__ volatile ("outb %0,%1" : : "a" (__val), "dN" (__port));
+static __inline void outb(unsigned char __val, unsigned short __port) {
+  __asm__ volatile("outb %0,%1" : : "a"(__val), "dN"(__port));
 }
 
-static __inline void outw(unsigned short __val, unsigned short __port)
-{
-	__asm__ volatile ("outw %0,%1" : : "a" (__val), "dN" (__port));
+static __inline void outw(unsigned short __val, unsigned short __port) {
+  __asm__ volatile("outw %0,%1" : : "a"(__val), "dN"(__port));
 }
 
-static __inline void outl(unsigned int __val, unsigned short __port)
-{
-	__asm__ volatile ("outl %0,%1" : : "a" (__val), "dN" (__port));
+static __inline void outl(unsigned int __val, unsigned short __port) {
+  __asm__ volatile("outl %0,%1" : : "a"(__val), "dN"(__port));
 }
 
-static __inline unsigned char inb(unsigned short __port)
-{
-	unsigned char __val;
-	__asm__ volatile ("inb %1,%0" : "=a" (__val) : "dN" (__port));
-	return __val;
+static __inline unsigned char inb(unsigned short __port) {
+  unsigned char __val;
+  __asm__ volatile("inb %1,%0" : "=a"(__val) : "dN"(__port));
+  return __val;
 }
 
-static __inline unsigned short inw(unsigned short __port)
-{
-	unsigned short __val;
-	__asm__ volatile ("inw %1,%0" : "=a" (__val) : "dN" (__port));
-	return __val;
+static __inline unsigned short inw(unsigned short __port) {
+  unsigned short __val;
+  __asm__ volatile("inw %1,%0" : "=a"(__val) : "dN"(__port));
+  return __val;
 }
 
-static __inline unsigned int inl(unsigned short __port)
-{
-	unsigned int __val;
-	__asm__ volatile ("inl %1,%0" : "=a" (__val) : "dN" (__port));
-	return __val;
+static __inline unsigned int inl(unsigned short __port) {
+  unsigned int __val;
+  __asm__ volatile("inl %1,%0" : "=a"(__val) : "dN"(__port));
+  return __val;
 }
 
-static __inline void outsb(unsigned short __port, const void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; outsb"
-		      : "+S" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void outsb(unsigned short __port,
+                           const void* __buf,
+                           unsigned long __n) {
+  __asm__ volatile("cld; rep; outsb" : "+S"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void outsw(unsigned short __port, const void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; outsw"
-		      : "+S" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void outsw(unsigned short __port,
+                           const void* __buf,
+                           unsigned long __n) {
+  __asm__ volatile("cld; rep; outsw" : "+S"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void outsl(unsigned short __port, const void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; outsl"
-		      : "+S" (__buf), "+c"(__n)
-		      : "d" (__port));
+static __inline void outsl(unsigned short __port,
+                           const void* __buf,
+                           unsigned long __n) {
+  __asm__ volatile("cld; rep; outsl" : "+S"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void insb(unsigned short __port, void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; insb"
-		      : "+D" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void insb(unsigned short __port,
+                          void* __buf,
+                          unsigned long __n) {
+  __asm__ volatile("cld; rep; insb" : "+D"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void insw(unsigned short __port, void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; insw"
-		      : "+D" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void insw(unsigned short __port,
+                          void* __buf,
+                          unsigned long __n) {
+  __asm__ volatile("cld; rep; insw" : "+D"(__buf), "+c"(__n) : "d"(__port));
 }
 
-static __inline void insl(unsigned short __port, void *__buf, unsigned long __n)
-{
-	__asm__ volatile ("cld; rep; insl"
-		      : "+D" (__buf), "+c" (__n)
-		      : "d" (__port));
+static __inline void insl(unsigned short __port,
+                          void* __buf,
+                          unsigned long __n) {
+  __asm__ volatile("cld; rep; insl" : "+D"(__buf), "+c"(__n) : "d"(__port));
 }
diff --git a/fusl/arch/x86_64/bits/ioctl.h b/fusl/arch/x86_64/bits/ioctl.h
index 77a9455..bc8d16a 100644
--- a/fusl/arch/x86_64/bits/ioctl.h
+++ b/fusl/arch/x86_64/bits/ioctl.h
@@ -1,197 +1,197 @@
-#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) )
-#define _IOC_NONE  0U
+#define _IOC(a, b, c, d) (((a) << 30) | ((b) << 8) | (c) | ((d) << 16))
+#define _IOC_NONE 0U
 #define _IOC_WRITE 1U
-#define _IOC_READ  2U
+#define _IOC_READ 2U
 
-#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0)
-#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c))
-#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c))
-#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c))
+#define _IO(a, b) _IOC(_IOC_NONE, (a), (b), 0)
+#define _IOW(a, b, c) _IOC(_IOC_WRITE, (a), (b), sizeof(c))
+#define _IOR(a, b, c) _IOC(_IOC_READ, (a), (b), sizeof(c))
+#define _IOWR(a, b, c) _IOC(_IOC_READ | _IOC_WRITE, (a), (b), sizeof(c))
 
-#define TCGETS		0x5401
-#define TCSETS		0x5402
-#define TCSETSW		0x5403
-#define TCSETSF		0x5404
-#define TCGETA		0x5405
-#define TCSETA		0x5406
-#define TCSETAW		0x5407
-#define TCSETAF		0x5408
-#define TCSBRK		0x5409
-#define TCXONC		0x540A
-#define TCFLSH		0x540B
-#define TIOCEXCL	0x540C
-#define TIOCNXCL	0x540D
-#define TIOCSCTTY	0x540E
-#define TIOCGPGRP	0x540F
-#define TIOCSPGRP	0x5410
-#define TIOCOUTQ	0x5411
-#define TIOCSTI		0x5412
-#define TIOCGWINSZ	0x5413
-#define TIOCSWINSZ	0x5414
-#define TIOCMGET	0x5415
-#define TIOCMBIS	0x5416
-#define TIOCMBIC	0x5417
-#define TIOCMSET	0x5418
-#define TIOCGSOFTCAR	0x5419
-#define TIOCSSOFTCAR	0x541A
-#define FIONREAD	0x541B
-#define TIOCINQ		FIONREAD
-#define TIOCLINUX	0x541C
-#define TIOCCONS	0x541D
-#define TIOCGSERIAL	0x541E
-#define TIOCSSERIAL	0x541F
-#define TIOCPKT		0x5420
-#define FIONBIO		0x5421
-#define TIOCNOTTY	0x5422
-#define TIOCSETD	0x5423
-#define TIOCGETD	0x5424
-#define TCSBRKP		0x5425
-#define TIOCTTYGSTRUCT	0x5426
-#define TIOCSBRK	0x5427
-#define TIOCCBRK	0x5428
-#define TIOCGSID	0x5429
-#define TIOCGPTN	0x80045430
-#define TIOCSPTLCK	0x40045431
-#define TCGETX          0x5432
-#define TCSETX          0x5433
-#define TCSETXF         0x5434
-#define TCSETXW         0x5435
+#define TCGETS 0x5401
+#define TCSETS 0x5402
+#define TCSETSW 0x5403
+#define TCSETSF 0x5404
+#define TCGETA 0x5405
+#define TCSETA 0x5406
+#define TCSETAW 0x5407
+#define TCSETAF 0x5408
+#define TCSBRK 0x5409
+#define TCXONC 0x540A
+#define TCFLSH 0x540B
+#define TIOCEXCL 0x540C
+#define TIOCNXCL 0x540D
+#define TIOCSCTTY 0x540E
+#define TIOCGPGRP 0x540F
+#define TIOCSPGRP 0x5410
+#define TIOCOUTQ 0x5411
+#define TIOCSTI 0x5412
+#define TIOCGWINSZ 0x5413
+#define TIOCSWINSZ 0x5414
+#define TIOCMGET 0x5415
+#define TIOCMBIS 0x5416
+#define TIOCMBIC 0x5417
+#define TIOCMSET 0x5418
+#define TIOCGSOFTCAR 0x5419
+#define TIOCSSOFTCAR 0x541A
+#define FIONREAD 0x541B
+#define TIOCINQ FIONREAD
+#define TIOCLINUX 0x541C
+#define TIOCCONS 0x541D
+#define TIOCGSERIAL 0x541E
+#define TIOCSSERIAL 0x541F
+#define TIOCPKT 0x5420
+#define FIONBIO 0x5421
+#define TIOCNOTTY 0x5422
+#define TIOCSETD 0x5423
+#define TIOCGETD 0x5424
+#define TCSBRKP 0x5425
+#define TIOCTTYGSTRUCT 0x5426
+#define TIOCSBRK 0x5427
+#define TIOCCBRK 0x5428
+#define TIOCGSID 0x5429
+#define TIOCGPTN 0x80045430
+#define TIOCSPTLCK 0x40045431
+#define TCGETX 0x5432
+#define TCSETX 0x5433
+#define TCSETXF 0x5434
+#define TCSETXW 0x5435
 
-#define FIONCLEX	0x5450
-#define FIOCLEX		0x5451
-#define FIOASYNC	0x5452
-#define TIOCSERCONFIG	0x5453
-#define TIOCSERGWILD	0x5454
-#define TIOCSERSWILD	0x5455
-#define TIOCGLCKTRMIOS	0x5456
-#define TIOCSLCKTRMIOS	0x5457
-#define TIOCSERGSTRUCT	0x5458
-#define TIOCSERGETLSR   0x5459
+#define FIONCLEX 0x5450
+#define FIOCLEX 0x5451
+#define FIOASYNC 0x5452
+#define TIOCSERCONFIG 0x5453
+#define TIOCSERGWILD 0x5454
+#define TIOCSERSWILD 0x5455
+#define TIOCGLCKTRMIOS 0x5456
+#define TIOCSLCKTRMIOS 0x5457
+#define TIOCSERGSTRUCT 0x5458
+#define TIOCSERGETLSR 0x5459
 #define TIOCSERGETMULTI 0x545A
 #define TIOCSERSETMULTI 0x545B
 
-#define TIOCMIWAIT	0x545C
-#define TIOCGICOUNT	0x545D
-#define TIOCGHAYESESP   0x545E
-#define TIOCSHAYESESP   0x545F
-#define FIOQSIZE	0x5460
+#define TIOCMIWAIT 0x545C
+#define TIOCGICOUNT 0x545D
+#define TIOCGHAYESESP 0x545E
+#define TIOCSHAYESESP 0x545F
+#define FIOQSIZE 0x5460
 
-#define TIOCPKT_DATA		 0
-#define TIOCPKT_FLUSHREAD	 1
-#define TIOCPKT_FLUSHWRITE	 2
-#define TIOCPKT_STOP		 4
-#define TIOCPKT_START		 8
-#define TIOCPKT_NOSTOP		16
-#define TIOCPKT_DOSTOP		32
-#define TIOCPKT_IOCTL           64
+#define TIOCPKT_DATA 0
+#define TIOCPKT_FLUSHREAD 1
+#define TIOCPKT_FLUSHWRITE 2
+#define TIOCPKT_STOP 4
+#define TIOCPKT_START 8
+#define TIOCPKT_NOSTOP 16
+#define TIOCPKT_DOSTOP 32
+#define TIOCPKT_IOCTL 64
 
-#define TIOCSER_TEMT    0x01
+#define TIOCSER_TEMT 0x01
 
 struct winsize {
-	unsigned short ws_row;
-	unsigned short ws_col;
-	unsigned short ws_xpixel;
-	unsigned short ws_ypixel;
+  unsigned short ws_row;
+  unsigned short ws_col;
+  unsigned short ws_xpixel;
+  unsigned short ws_ypixel;
 };
 
-#define TIOCM_LE        0x001
-#define TIOCM_DTR       0x002
-#define TIOCM_RTS       0x004
-#define TIOCM_ST        0x008
-#define TIOCM_SR        0x010
-#define TIOCM_CTS       0x020
-#define TIOCM_CAR       0x040
-#define TIOCM_RNG       0x080
-#define TIOCM_DSR       0x100
-#define TIOCM_CD        TIOCM_CAR
-#define TIOCM_RI        TIOCM_RNG
-#define TIOCM_OUT1      0x2000
-#define TIOCM_OUT2      0x4000
-#define TIOCM_LOOP      0x8000
+#define TIOCM_LE 0x001
+#define TIOCM_DTR 0x002
+#define TIOCM_RTS 0x004
+#define TIOCM_ST 0x008
+#define TIOCM_SR 0x010
+#define TIOCM_CTS 0x020
+#define TIOCM_CAR 0x040
+#define TIOCM_RNG 0x080
+#define TIOCM_DSR 0x100
+#define TIOCM_CD TIOCM_CAR
+#define TIOCM_RI TIOCM_RNG
+#define TIOCM_OUT1 0x2000
+#define TIOCM_OUT2 0x4000
+#define TIOCM_LOOP 0x8000
 #define TIOCM_MODEM_BITS TIOCM_OUT2
 
-#define N_TTY           0
-#define N_SLIP          1
-#define N_MOUSE         2
-#define N_PPP           3
-#define N_STRIP         4
-#define N_AX25          5
-#define N_X25           6
-#define N_6PACK         7
-#define N_MASC          8
-#define N_R3964         9
-#define N_PROFIBUS_FDL  10
-#define N_IRDA          11
-#define N_SMSBLOCK      12
-#define N_HDLC          13
-#define N_SYNC_PPP      14
-#define N_HCI           15
+#define N_TTY 0
+#define N_SLIP 1
+#define N_MOUSE 2
+#define N_PPP 3
+#define N_STRIP 4
+#define N_AX25 5
+#define N_X25 6
+#define N_6PACK 7
+#define N_MASC 8
+#define N_R3964 9
+#define N_PROFIBUS_FDL 10
+#define N_IRDA 11
+#define N_SMSBLOCK 12
+#define N_HDLC 13
+#define N_SYNC_PPP 14
+#define N_HCI 15
 
-#define FIOSETOWN       0x8901
-#define SIOCSPGRP       0x8902
-#define FIOGETOWN       0x8903
-#define SIOCGPGRP       0x8904
-#define SIOCATMARK      0x8905
-#define SIOCGSTAMP      0x8906
+#define FIOSETOWN 0x8901
+#define SIOCSPGRP 0x8902
+#define FIOGETOWN 0x8903
+#define SIOCGPGRP 0x8904
+#define SIOCATMARK 0x8905
+#define SIOCGSTAMP 0x8906
 
-#define SIOCADDRT       0x890B
-#define SIOCDELRT       0x890C
-#define SIOCRTMSG       0x890D
+#define SIOCADDRT 0x890B
+#define SIOCDELRT 0x890C
+#define SIOCRTMSG 0x890D
 
-#define SIOCGIFNAME     0x8910
-#define SIOCSIFLINK     0x8911
-#define SIOCGIFCONF     0x8912
-#define SIOCGIFFLAGS    0x8913
-#define SIOCSIFFLAGS    0x8914
-#define SIOCGIFADDR     0x8915
-#define SIOCSIFADDR     0x8916
-#define SIOCGIFDSTADDR  0x8917
-#define SIOCSIFDSTADDR  0x8918
-#define SIOCGIFBRDADDR  0x8919
-#define SIOCSIFBRDADDR  0x891a
-#define SIOCGIFNETMASK  0x891b
-#define SIOCSIFNETMASK  0x891c
-#define SIOCGIFMETRIC   0x891d
-#define SIOCSIFMETRIC   0x891e
-#define SIOCGIFMEM      0x891f
-#define SIOCSIFMEM      0x8920
-#define SIOCGIFMTU      0x8921
-#define SIOCSIFMTU      0x8922
-#define SIOCSIFHWADDR   0x8924
-#define SIOCGIFENCAP    0x8925
-#define SIOCSIFENCAP    0x8926
-#define SIOCGIFHWADDR   0x8927
-#define SIOCGIFSLAVE    0x8929
-#define SIOCSIFSLAVE    0x8930
-#define SIOCADDMULTI    0x8931
-#define SIOCDELMULTI    0x8932
-#define SIOCGIFINDEX    0x8933
-#define SIOGIFINDEX     SIOCGIFINDEX
-#define SIOCSIFPFLAGS   0x8934
-#define SIOCGIFPFLAGS   0x8935
-#define SIOCDIFADDR     0x8936
+#define SIOCGIFNAME 0x8910
+#define SIOCSIFLINK 0x8911
+#define SIOCGIFCONF 0x8912
+#define SIOCGIFFLAGS 0x8913
+#define SIOCSIFFLAGS 0x8914
+#define SIOCGIFADDR 0x8915
+#define SIOCSIFADDR 0x8916
+#define SIOCGIFDSTADDR 0x8917
+#define SIOCSIFDSTADDR 0x8918
+#define SIOCGIFBRDADDR 0x8919
+#define SIOCSIFBRDADDR 0x891a
+#define SIOCGIFNETMASK 0x891b
+#define SIOCSIFNETMASK 0x891c
+#define SIOCGIFMETRIC 0x891d
+#define SIOCSIFMETRIC 0x891e
+#define SIOCGIFMEM 0x891f
+#define SIOCSIFMEM 0x8920
+#define SIOCGIFMTU 0x8921
+#define SIOCSIFMTU 0x8922
+#define SIOCSIFHWADDR 0x8924
+#define SIOCGIFENCAP 0x8925
+#define SIOCSIFENCAP 0x8926
+#define SIOCGIFHWADDR 0x8927
+#define SIOCGIFSLAVE 0x8929
+#define SIOCSIFSLAVE 0x8930
+#define SIOCADDMULTI 0x8931
+#define SIOCDELMULTI 0x8932
+#define SIOCGIFINDEX 0x8933
+#define SIOGIFINDEX SIOCGIFINDEX
+#define SIOCSIFPFLAGS 0x8934
+#define SIOCGIFPFLAGS 0x8935
+#define SIOCDIFADDR 0x8936
 #define SIOCSIFHWBROADCAST 0x8937
-#define SIOCGIFCOUNT    0x8938
+#define SIOCGIFCOUNT 0x8938
 
-#define SIOCGIFBR       0x8940
-#define SIOCSIFBR       0x8941
+#define SIOCGIFBR 0x8940
+#define SIOCSIFBR 0x8941
 
-#define SIOCGIFTXQLEN   0x8942
-#define SIOCSIFTXQLEN   0x8943
+#define SIOCGIFTXQLEN 0x8942
+#define SIOCSIFTXQLEN 0x8943
 
-#define SIOCDARP        0x8953
-#define SIOCGARP        0x8954
-#define SIOCSARP        0x8955
+#define SIOCDARP 0x8953
+#define SIOCGARP 0x8954
+#define SIOCSARP 0x8955
 
-#define SIOCDRARP       0x8960
-#define SIOCGRARP       0x8961
-#define SIOCSRARP       0x8962
+#define SIOCDRARP 0x8960
+#define SIOCGRARP 0x8961
+#define SIOCSRARP 0x8962
 
-#define SIOCGIFMAP      0x8970
-#define SIOCSIFMAP      0x8971
+#define SIOCGIFMAP 0x8970
+#define SIOCSIFMAP 0x8971
 
-#define SIOCADDDLCI     0x8980
-#define SIOCDELDLCI     0x8981
+#define SIOCADDDLCI 0x8980
+#define SIOCDELDLCI 0x8981
 
-#define SIOCDEVPRIVATE  0x89F0
+#define SIOCDEVPRIVATE 0x89F0
 #define SIOCPROTOPRIVATE 0x89E0
diff --git a/fusl/arch/x86_64/bits/ipc.h b/fusl/arch/x86_64/bits/ipc.h
index ac5d097..c66f9ed 100644
--- a/fusl/arch/x86_64/bits/ipc.h
+++ b/fusl/arch/x86_64/bits/ipc.h
@@ -1,14 +1,13 @@
-struct ipc_perm
-{
-	key_t __ipc_perm_key;
-	uid_t uid;
-	gid_t gid;
-	uid_t cuid;
-	gid_t cgid;
-	mode_t mode;
-	int __ipc_perm_seq;
-	long __pad1;
-	long __pad2;
+struct ipc_perm {
+  key_t __ipc_perm_key;
+  uid_t uid;
+  gid_t gid;
+  uid_t cuid;
+  gid_t cgid;
+  mode_t mode;
+  int __ipc_perm_seq;
+  long __pad1;
+  long __pad2;
 };
 
 #define IPC_64 0
diff --git a/fusl/arch/x86_64/bits/limits.h b/fusl/arch/x86_64/bits/limits.h
index 792a30b..3968b1d 100644
--- a/fusl/arch/x86_64/bits/limits.h
+++ b/fusl/arch/x86_64/bits/limits.h
@@ -1,8 +1,8 @@
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define PAGE_SIZE 4096
 #define LONG_BIT 64
 #endif
 
-#define LONG_MAX  0x7fffffffffffffffL
-#define LLONG_MAX  0x7fffffffffffffffLL
+#define LONG_MAX 0x7fffffffffffffffL
+#define LLONG_MAX 0x7fffffffffffffffLL
diff --git a/fusl/arch/x86_64/bits/mman.h b/fusl/arch/x86_64/bits/mman.h
index f3235f4..09d9d03 100644
--- a/fusl/arch/x86_64/bits/mman.h
+++ b/fusl/arch/x86_64/bits/mman.h
@@ -1,60 +1,60 @@
-#define MAP_FAILED ((void *) -1)
+#define MAP_FAILED ((void*)-1)
 
-#define	PROT_NONE      0
-#define	PROT_READ      1
-#define	PROT_WRITE     2
-#define	PROT_EXEC      4
-#define PROT_GROWSDOWN  0x01000000
-#define PROT_GROWSUP    0x02000000
+#define PROT_NONE 0
+#define PROT_READ 1
+#define PROT_WRITE 2
+#define PROT_EXEC 4
+#define PROT_GROWSDOWN 0x01000000
+#define PROT_GROWSUP 0x02000000
 
-#define	MAP_SHARED     0x01
-#define	MAP_PRIVATE    0x02
-#define	MAP_FIXED      0x10
+#define MAP_SHARED 0x01
+#define MAP_PRIVATE 0x02
+#define MAP_FIXED 0x10
 
-#define MAP_TYPE       0x0f
-#define MAP_FILE       0x00
-#define MAP_ANON       0x20
-#define MAP_ANONYMOUS  MAP_ANON
-#define MAP_32BIT      0x40
-#define MAP_NORESERVE  0x4000
-#define MAP_GROWSDOWN  0x0100
-#define MAP_DENYWRITE  0x0800
+#define MAP_TYPE 0x0f
+#define MAP_FILE 0x00
+#define MAP_ANON 0x20
+#define MAP_ANONYMOUS MAP_ANON
+#define MAP_32BIT 0x40
+#define MAP_NORESERVE 0x4000
+#define MAP_GROWSDOWN 0x0100
+#define MAP_DENYWRITE 0x0800
 #define MAP_EXECUTABLE 0x1000
-#define MAP_LOCKED     0x2000
-#define MAP_POPULATE   0x8000
-#define MAP_NONBLOCK   0x10000
-#define MAP_STACK      0x20000
-#define MAP_HUGETLB    0x40000
+#define MAP_LOCKED 0x2000
+#define MAP_POPULATE 0x8000
+#define MAP_NONBLOCK 0x10000
+#define MAP_STACK 0x20000
+#define MAP_HUGETLB 0x40000
 
-#define POSIX_MADV_NORMAL       0
-#define POSIX_MADV_RANDOM       1
-#define POSIX_MADV_SEQUENTIAL   2
-#define POSIX_MADV_WILLNEED     3
-#define POSIX_MADV_DONTNEED     0
+#define POSIX_MADV_NORMAL 0
+#define POSIX_MADV_RANDOM 1
+#define POSIX_MADV_SEQUENTIAL 2
+#define POSIX_MADV_WILLNEED 3
+#define POSIX_MADV_DONTNEED 0
 
-#define MS_ASYNC        1
-#define MS_INVALIDATE   2
-#define MS_SYNC         4
+#define MS_ASYNC 1
+#define MS_INVALIDATE 2
+#define MS_SYNC 4
 
-#define MCL_CURRENT     1
-#define MCL_FUTURE      2
-#define MCL_ONFAULT     4
+#define MCL_CURRENT 1
+#define MCL_FUTURE 2
+#define MCL_ONFAULT 4
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#define MADV_NORMAL      0
-#define MADV_RANDOM      1
-#define MADV_SEQUENTIAL  2
-#define MADV_WILLNEED    3
-#define MADV_DONTNEED    4
-#define MADV_REMOVE      9
-#define MADV_DONTFORK    10
-#define MADV_DOFORK      11
-#define MADV_MERGEABLE   12
+#define MADV_NORMAL 0
+#define MADV_RANDOM 1
+#define MADV_SEQUENTIAL 2
+#define MADV_WILLNEED 3
+#define MADV_DONTNEED 4
+#define MADV_REMOVE 9
+#define MADV_DONTFORK 10
+#define MADV_DOFORK 11
+#define MADV_MERGEABLE 12
 #define MADV_UNMERGEABLE 13
-#define MADV_HUGEPAGE    14
-#define MADV_NOHUGEPAGE  15
-#define MADV_DONTDUMP    16
-#define MADV_DODUMP      17
-#define MADV_HWPOISON    100
+#define MADV_HUGEPAGE 14
+#define MADV_NOHUGEPAGE 15
+#define MADV_DONTDUMP 16
+#define MADV_DODUMP 17
+#define MADV_HWPOISON 100
 #define MADV_SOFT_OFFLINE 101
 #endif
diff --git a/fusl/arch/x86_64/bits/msg.h b/fusl/arch/x86_64/bits/msg.h
index badcf16..1c8034b 100644
--- a/fusl/arch/x86_64/bits/msg.h
+++ b/fusl/arch/x86_64/bits/msg.h
@@ -1,13 +1,12 @@
-struct msqid_ds
-{
-	struct ipc_perm msg_perm;
-	time_t msg_stime;
-	time_t msg_rtime;
-	time_t msg_ctime;
-	unsigned long msg_cbytes;
-	msgqnum_t msg_qnum;
-	msglen_t msg_qbytes;
-	pid_t msg_lspid;
-	pid_t msg_lrpid;
-	unsigned long __unused[2];
+struct msqid_ds {
+  struct ipc_perm msg_perm;
+  time_t msg_stime;
+  time_t msg_rtime;
+  time_t msg_ctime;
+  unsigned long msg_cbytes;
+  msgqnum_t msg_qnum;
+  msglen_t msg_qbytes;
+  pid_t msg_lspid;
+  pid_t msg_lrpid;
+  unsigned long __unused[2];
 };
diff --git a/fusl/arch/x86_64/bits/posix.h b/fusl/arch/x86_64/bits/posix.h
index c37b94c..8068ce9 100644
--- a/fusl/arch/x86_64/bits/posix.h
+++ b/fusl/arch/x86_64/bits/posix.h
@@ -1,2 +1,2 @@
-#define _POSIX_V6_LP64_OFF64  1
-#define _POSIX_V7_LP64_OFF64  1
+#define _POSIX_V6_LP64_OFF64 1
+#define _POSIX_V7_LP64_OFF64 1
diff --git a/fusl/arch/x86_64/bits/reg.h b/fusl/arch/x86_64/bits/reg.h
index a4df04c..12d43c5 100644
--- a/fusl/arch/x86_64/bits/reg.h
+++ b/fusl/arch/x86_64/bits/reg.h
@@ -1,29 +1,29 @@
 #undef __WORDSIZE
 #define __WORDSIZE 64
-#define R15    0
-#define R14    1
-#define R13    2
-#define R12    3
-#define RBP    4
-#define RBX    5
-#define R11    6
-#define R10    7
-#define R9     8
-#define R8     9
-#define RAX    10
-#define RCX    11
-#define RDX    12
-#define RSI    13
-#define RDI    14
+#define R15 0
+#define R14 1
+#define R13 2
+#define R12 3
+#define RBP 4
+#define RBX 5
+#define R11 6
+#define R10 7
+#define R9 8
+#define R8 9
+#define RAX 10
+#define RCX 11
+#define RDX 12
+#define RSI 13
+#define RDI 14
 #define ORIG_RAX 15
-#define RIP    16
-#define CS     17
+#define RIP 16
+#define CS 17
 #define EFLAGS 18
-#define RSP    19
-#define SS     20
+#define RSP 19
+#define SS 20
 #define FS_BASE 21
 #define GS_BASE 22
-#define DS     23
-#define ES     24
-#define FS     25
-#define GS     26
+#define DS 23
+#define ES 24
+#define FS 25
+#define GS 26
diff --git a/fusl/arch/x86_64/bits/shm.h b/fusl/arch/x86_64/bits/shm.h
index f4b8712..a3b9dcc 100644
--- a/fusl/arch/x86_64/bits/shm.h
+++ b/fusl/arch/x86_64/bits/shm.h
@@ -1,26 +1,24 @@
 #define SHMLBA 4096
 
-struct shmid_ds
-{
-	struct ipc_perm shm_perm;
-	size_t shm_segsz;
-	time_t shm_atime;
-	time_t shm_dtime;
-	time_t shm_ctime;
-	pid_t shm_cpid;
-	pid_t shm_lpid;
-	unsigned long shm_nattch;
-	unsigned long __pad1;
-	unsigned long __pad2;
+struct shmid_ds {
+  struct ipc_perm shm_perm;
+  size_t shm_segsz;
+  time_t shm_atime;
+  time_t shm_dtime;
+  time_t shm_ctime;
+  pid_t shm_cpid;
+  pid_t shm_lpid;
+  unsigned long shm_nattch;
+  unsigned long __pad1;
+  unsigned long __pad2;
 };
 
 struct shminfo {
-	unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
+  unsigned long shmmax, shmmin, shmmni, shmseg, shmall, __unused[4];
 };
 
 struct shm_info {
-	int __used_ids;
-	unsigned long shm_tot, shm_rss, shm_swp;
-	unsigned long __swap_attempts, __swap_successes;
+  int __used_ids;
+  unsigned long shm_tot, shm_rss, shm_swp;
+  unsigned long __swap_attempts, __swap_successes;
 };
-
diff --git a/fusl/arch/x86_64/bits/signal.h b/fusl/arch/x86_64/bits/signal.h
index e3c3141..8916c25 100644
--- a/fusl/arch/x86_64/bits/signal.h
+++ b/fusl/arch/x86_64/bits/signal.h
@@ -1,5 +1,5 @@
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define MINSIGSTKSZ 2048
@@ -7,124 +7,121 @@
 #endif
 
 #ifdef _GNU_SOURCE
-#define REG_R8          0
-#define REG_R9          1
-#define REG_R10         2
-#define REG_R11         3
-#define REG_R12         4
-#define REG_R13         5
-#define REG_R14         6
-#define REG_R15         7
-#define REG_RDI         8
-#define REG_RSI         9
-#define REG_RBP         10
-#define REG_RBX         11
-#define REG_RDX         12
-#define REG_RAX         13
-#define REG_RCX         14
-#define REG_RSP         15
-#define REG_RIP         16
-#define REG_EFL         17
-#define REG_CSGSFS      18
-#define REG_ERR         19
-#define REG_TRAPNO      20
-#define REG_OLDMASK     21
-#define REG_CR2         22
+#define REG_R8 0
+#define REG_R9 1
+#define REG_R10 2
+#define REG_R11 3
+#define REG_R12 4
+#define REG_R13 5
+#define REG_R14 6
+#define REG_R15 7
+#define REG_RDI 8
+#define REG_RSI 9
+#define REG_RBP 10
+#define REG_RBX 11
+#define REG_RDX 12
+#define REG_RAX 13
+#define REG_RCX 14
+#define REG_RSP 15
+#define REG_RIP 16
+#define REG_EFL 17
+#define REG_CSGSFS 18
+#define REG_ERR 19
+#define REG_TRAPNO 20
+#define REG_OLDMASK 21
+#define REG_CR2 22
 #endif
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 typedef long long greg_t, gregset_t[23];
 typedef struct _fpstate {
-	unsigned short cwd, swd, ftw, fop;
-	unsigned long long rip, rdp;
-	unsigned mxcsr, mxcr_mask;
-	struct {
-		unsigned short significand[4], exponent, padding[3];
-	} _st[8];
-	struct {
-		unsigned element[4];
-	} _xmm[16];
-	unsigned padding[24];
-} *fpregset_t;
+  unsigned short cwd, swd, ftw, fop;
+  unsigned long long rip, rdp;
+  unsigned mxcsr, mxcr_mask;
+  struct {
+    unsigned short significand[4], exponent, padding[3];
+  } _st[8];
+  struct {
+    unsigned element[4];
+  } _xmm[16];
+  unsigned padding[24];
+} * fpregset_t;
 struct sigcontext {
-	unsigned long r8, r9, r10, r11, r12, r13, r14, r15;
-	unsigned long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
-	unsigned short cs, gs, fs, __pad0;
-	unsigned long err, trapno, oldmask, cr2;
-	struct _fpstate *fpstate;
-	unsigned long __reserved1[8];
+  unsigned long r8, r9, r10, r11, r12, r13, r14, r15;
+  unsigned long rdi, rsi, rbp, rbx, rdx, rax, rcx, rsp, rip, eflags;
+  unsigned short cs, gs, fs, __pad0;
+  unsigned long err, trapno, oldmask, cr2;
+  struct _fpstate* fpstate;
+  unsigned long __reserved1[8];
 };
 typedef struct {
-	gregset_t gregs;
-	fpregset_t fpregs;
-	unsigned long long __reserved1[8];
+  gregset_t gregs;
+  fpregset_t fpregs;
+  unsigned long long __reserved1[8];
 } mcontext_t;
 #else
-typedef struct {
-	unsigned long __space[32];
-} mcontext_t;
+typedef struct { unsigned long __space[32]; } mcontext_t;
 #endif
 
 struct sigaltstack {
-	void *ss_sp;
-	int ss_flags;
-	size_t ss_size;
+  void* ss_sp;
+  int ss_flags;
+  size_t ss_size;
 };
 
 typedef struct __ucontext {
-	unsigned long uc_flags;
-	struct __ucontext *uc_link;
-	stack_t uc_stack;
-	mcontext_t uc_mcontext;
-	sigset_t uc_sigmask;
-	unsigned long __fpregs_mem[64];
+  unsigned long uc_flags;
+  struct __ucontext* uc_link;
+  stack_t uc_stack;
+  mcontext_t uc_mcontext;
+  sigset_t uc_sigmask;
+  unsigned long __fpregs_mem[64];
 } ucontext_t;
 
-#define SA_NOCLDSTOP  1
-#define SA_NOCLDWAIT  2
-#define SA_SIGINFO    4
-#define SA_ONSTACK    0x08000000
-#define SA_RESTART    0x10000000
-#define SA_NODEFER    0x40000000
-#define SA_RESETHAND  0x80000000
-#define SA_RESTORER   0x04000000
+#define SA_NOCLDSTOP 1
+#define SA_NOCLDWAIT 2
+#define SA_SIGINFO 4
+#define SA_ONSTACK 0x08000000
+#define SA_RESTART 0x10000000
+#define SA_NODEFER 0x40000000
+#define SA_RESETHAND 0x80000000
+#define SA_RESTORER 0x04000000
 
 #endif
 
-#define SIGHUP    1
-#define SIGINT    2
-#define SIGQUIT   3
-#define SIGILL    4
-#define SIGTRAP   5
-#define SIGABRT   6
-#define SIGIOT    SIGABRT
-#define SIGBUS    7
-#define SIGFPE    8
-#define SIGKILL   9
-#define SIGUSR1   10
-#define SIGSEGV   11
-#define SIGUSR2   12
-#define SIGPIPE   13
-#define SIGALRM   14
-#define SIGTERM   15
+#define SIGHUP 1
+#define SIGINT 2
+#define SIGQUIT 3
+#define SIGILL 4
+#define SIGTRAP 5
+#define SIGABRT 6
+#define SIGIOT SIGABRT
+#define SIGBUS 7
+#define SIGFPE 8
+#define SIGKILL 9
+#define SIGUSR1 10
+#define SIGSEGV 11
+#define SIGUSR2 12
+#define SIGPIPE 13
+#define SIGALRM 14
+#define SIGTERM 15
 #define SIGSTKFLT 16
-#define SIGCHLD   17
-#define SIGCONT   18
-#define SIGSTOP   19
-#define SIGTSTP   20
-#define SIGTTIN   21
-#define SIGTTOU   22
-#define SIGURG    23
-#define SIGXCPU   24
-#define SIGXFSZ   25
+#define SIGCHLD 17
+#define SIGCONT 18
+#define SIGSTOP 19
+#define SIGTSTP 20
+#define SIGTTIN 21
+#define SIGTTOU 22
+#define SIGURG 23
+#define SIGXCPU 24
+#define SIGXFSZ 25
 #define SIGVTALRM 26
-#define SIGPROF   27
-#define SIGWINCH  28
-#define SIGIO     29
-#define SIGPOLL   29
-#define SIGPWR    30
-#define SIGSYS    31
+#define SIGPROF 27
+#define SIGWINCH 28
+#define SIGIO 29
+#define SIGPOLL 29
+#define SIGPWR 30
+#define SIGSYS 31
 #define SIGUNUSED SIGSYS
 
 #define _NSIG 65
-
diff --git a/fusl/arch/x86_64/bits/socket.h b/fusl/arch/x86_64/bits/socket.h
index a90c4ca..9279ee1 100644
--- a/fusl/arch/x86_64/bits/socket.h
+++ b/fusl/arch/x86_64/bits/socket.h
@@ -1,18 +1,16 @@
-struct msghdr
-{
-	void *msg_name;
-	socklen_t msg_namelen;
-	struct iovec *msg_iov;
-	int msg_iovlen, __pad1;
-	void *msg_control;
-	socklen_t msg_controllen, __pad2;
-	int msg_flags;
+struct msghdr {
+  void* msg_name;
+  socklen_t msg_namelen;
+  struct iovec* msg_iov;
+  int msg_iovlen, __pad1;
+  void* msg_control;
+  socklen_t msg_controllen, __pad2;
+  int msg_flags;
 };
 
-struct cmsghdr
-{
-	socklen_t cmsg_len;
-	int __pad1;
-	int cmsg_level;
-	int cmsg_type;
+struct cmsghdr {
+  socklen_t cmsg_len;
+  int __pad1;
+  int cmsg_level;
+  int cmsg_type;
 };
diff --git a/fusl/arch/x86_64/bits/stat.h b/fusl/arch/x86_64/bits/stat.h
index 081237c..9a0db1e 100644
--- a/fusl/arch/x86_64/bits/stat.h
+++ b/fusl/arch/x86_64/bits/stat.h
@@ -2,21 +2,21 @@
  * by the corresponding correctly-sized userspace types. */
 
 struct stat {
-	dev_t st_dev;
-	ino_t st_ino;
-	nlink_t st_nlink;
+  dev_t st_dev;
+  ino_t st_ino;
+  nlink_t st_nlink;
 
-	mode_t st_mode;
-	uid_t st_uid;
-	gid_t st_gid;
-	unsigned int    __pad0;
-	dev_t st_rdev;
-	off_t st_size;
-	blksize_t st_blksize;
-	blkcnt_t st_blocks;
+  mode_t st_mode;
+  uid_t st_uid;
+  gid_t st_gid;
+  unsigned int __pad0;
+  dev_t st_rdev;
+  off_t st_size;
+  blksize_t st_blksize;
+  blkcnt_t st_blocks;
 
-	struct timespec st_atim;
-	struct timespec st_mtim;
-	struct timespec st_ctim;
-	long __unused[3];
+  struct timespec st_atim;
+  struct timespec st_mtim;
+  struct timespec st_ctim;
+  long __unused[3];
 };
diff --git a/fusl/arch/x86_64/bits/stdint.h b/fusl/arch/x86_64/bits/stdint.h
index 1bb147f..7cac025 100644
--- a/fusl/arch/x86_64/bits/stdint.h
+++ b/fusl/arch/x86_64/bits/stdint.h
@@ -3,18 +3,18 @@
 typedef uint32_t uint_fast16_t;
 typedef uint32_t uint_fast32_t;
 
-#define INT_FAST16_MIN  INT32_MIN
-#define INT_FAST32_MIN  INT32_MIN
+#define INT_FAST16_MIN INT32_MIN
+#define INT_FAST32_MIN INT32_MIN
 
-#define INT_FAST16_MAX  INT32_MAX
-#define INT_FAST32_MAX  INT32_MAX
+#define INT_FAST16_MAX INT32_MAX
+#define INT_FAST32_MAX INT32_MAX
 
 #define UINT_FAST16_MAX UINT32_MAX
 #define UINT_FAST32_MAX UINT32_MAX
 
-#define INTPTR_MIN      INT64_MIN
-#define INTPTR_MAX      INT64_MAX
-#define UINTPTR_MAX     UINT64_MAX
-#define PTRDIFF_MIN     INT64_MIN
-#define PTRDIFF_MAX     INT64_MAX
-#define SIZE_MAX        UINT64_MAX
+#define INTPTR_MIN INT64_MIN
+#define INTPTR_MAX INT64_MAX
+#define UINTPTR_MAX UINT64_MAX
+#define PTRDIFF_MIN INT64_MIN
+#define PTRDIFF_MAX INT64_MAX
+#define SIZE_MAX UINT64_MAX
diff --git a/fusl/arch/x86_64/bits/syscall.h b/fusl/arch/x86_64/bits/syscall.h
index 22aa716..0851808 100644
--- a/fusl/arch/x86_64/bits/syscall.h
+++ b/fusl/arch/x86_64/bits/syscall.h
@@ -1,657 +1,655 @@
-#define __NR_read				0
-#define __NR_write				1
-#define __NR_open				2
-#define __NR_close				3
-#define __NR_stat				4
-#define __NR_fstat				5
-#define __NR_lstat				6
-#define __NR_poll				7
-#define __NR_lseek				8
-#define __NR_mmap				9
-#define __NR_mprotect			10
-#define __NR_munmap				11
-#define __NR_brk				12
-#define __NR_rt_sigaction		13
-#define __NR_rt_sigprocmask		14
-#define __NR_rt_sigreturn		15
-#define __NR_ioctl				16
-#define __NR_pread64			17
-#define __NR_pwrite64			18
-#define __NR_readv				19
-#define __NR_writev				20
-#define __NR_access				21
-#define __NR_pipe				22
-#define __NR_select				23
-#define __NR_sched_yield		24
-#define __NR_mremap				25
-#define __NR_msync				26
-#define __NR_mincore			27
-#define __NR_madvise			28
-#define __NR_shmget				29
-#define __NR_shmat				30
-#define __NR_shmctl				31
-#define __NR_dup				32
-#define __NR_dup2				33
-#define __NR_pause				34
-#define __NR_nanosleep			35
-#define __NR_getitimer			36
-#define __NR_alarm				37
-#define __NR_setitimer			38
-#define __NR_getpid				39
-#define __NR_sendfile			40
-#define __NR_socket				41
-#define __NR_connect			42
-#define __NR_accept				43
-#define __NR_sendto				44
-#define __NR_recvfrom			45
-#define __NR_sendmsg			46
-#define __NR_recvmsg			47
-#define __NR_shutdown			48
-#define __NR_bind				49
-#define __NR_listen				50
-#define __NR_getsockname		51
-#define __NR_getpeername		52
-#define __NR_socketpair			53
-#define __NR_setsockopt			54
-#define __NR_getsockopt			55
-#define __NR_clone				56
-#define __NR_fork				57
-#define __NR_vfork				58
-#define __NR_execve				59
-#define __NR_exit				60
-#define __NR_wait4				61
-#define __NR_kill				62
-#define __NR_uname				63
-#define __NR_semget				64
-#define __NR_semop				65
-#define __NR_semctl				66
-#define __NR_shmdt				67
-#define __NR_msgget				68
-#define __NR_msgsnd				69
-#define __NR_msgrcv				70
-#define __NR_msgctl				71
-#define __NR_fcntl				72
-#define __NR_flock				73
-#define __NR_fsync				74
-#define __NR_fdatasync			75
-#define __NR_truncate			76
-#define __NR_ftruncate			77
-#define __NR_getdents			78
-#define __NR_getcwd				79
-#define __NR_chdir				80
-#define __NR_fchdir				81
-#define __NR_rename				82
-#define __NR_mkdir				83
-#define __NR_rmdir				84
-#define __NR_creat				85
-#define __NR_link				86
-#define __NR_unlink				87
-#define __NR_symlink			88
-#define __NR_readlink			89
-#define __NR_chmod				90
-#define __NR_fchmod				91
-#define __NR_chown				92
-#define __NR_fchown				93
-#define __NR_lchown				94
-#define __NR_umask				95
-#define __NR_gettimeofday		96
-#define __NR_getrlimit			97
-#define __NR_getrusage			98
-#define __NR_sysinfo			99
-#define __NR_times				100
-#define __NR_ptrace				101
-#define __NR_getuid				102
-#define __NR_syslog				103
-#define __NR_getgid				104
-#define __NR_setuid				105
-#define __NR_setgid				106
-#define __NR_geteuid			107
-#define __NR_getegid			108
-#define __NR_setpgid			109
-#define __NR_getppid			110
-#define __NR_getpgrp			111
-#define __NR_setsid				112
-#define __NR_setreuid			113
-#define __NR_setregid			114
-#define __NR_getgroups			115
-#define __NR_setgroups			116
-#define __NR_setresuid			117
-#define __NR_getresuid			118
-#define __NR_setresgid			119
-#define __NR_getresgid			120
-#define __NR_getpgid			121
-#define __NR_setfsuid			122
-#define __NR_setfsgid			123
-#define __NR_getsid				124
-#define __NR_capget				125
-#define __NR_capset				126
-#define __NR_rt_sigpending		127
-#define __NR_rt_sigtimedwait	128
-#define __NR_rt_sigqueueinfo	129
-#define __NR_rt_sigsuspend		130
-#define __NR_sigaltstack		131
-#define __NR_utime				132
-#define __NR_mknod				133
-#define __NR_uselib				134
-#define __NR_personality		135
-#define __NR_ustat				136
-#define __NR_statfs				137
-#define __NR_fstatfs			138
-#define __NR_sysfs				139
-#define __NR_getpriority			140
-#define __NR_setpriority			141
-#define __NR_sched_setparam			142
-#define __NR_sched_getparam			143
-#define __NR_sched_setscheduler		144
-#define __NR_sched_getscheduler		145
-#define __NR_sched_get_priority_max	146
-#define __NR_sched_get_priority_min	147
-#define __NR_sched_rr_get_interval	148
-#define __NR_mlock					149
-#define __NR_munlock				150
-#define __NR_mlockall				151
-#define __NR_munlockall				152
-#define __NR_vhangup				153
-#define __NR_modify_ldt				154
-#define __NR_pivot_root				155
-#define __NR__sysctl				156
-#define __NR_prctl					157
-#define __NR_arch_prctl				158
-#define __NR_adjtimex				159
-#define __NR_setrlimit				160
-#define __NR_chroot					161
-#define __NR_sync					162
-#define __NR_acct					163
-#define __NR_settimeofday			164
-#define __NR_mount					165
-#define __NR_umount2				166
-#define __NR_swapon					167
-#define __NR_swapoff				168
-#define __NR_reboot					169
-#define __NR_sethostname			170
-#define __NR_setdomainname			171
-#define __NR_iopl					172
-#define __NR_ioperm					173
-#define __NR_create_module			174
-#define __NR_init_module			175
-#define __NR_delete_module			176
-#define __NR_get_kernel_syms		177
-#define __NR_query_module			178
-#define __NR_quotactl				179
-#define __NR_nfsservctl				180
-#define __NR_getpmsg				181
-#define __NR_putpmsg				182
-#define __NR_afs_syscall			183
-#define __NR_tuxcall				184
-#define __NR_security				185
-#define __NR_gettid					186
-#define __NR_readahead				187
-#define __NR_setxattr				188
-#define __NR_lsetxattr				189
-#define __NR_fsetxattr				190
-#define __NR_getxattr				191
-#define __NR_lgetxattr				192
-#define __NR_fgetxattr				193
-#define __NR_listxattr				194
-#define __NR_llistxattr				195
-#define __NR_flistxattr				196
-#define __NR_removexattr			197
-#define __NR_lremovexattr			198
-#define __NR_fremovexattr			199
-#define __NR_tkill					200
-#define __NR_time					201
-#define __NR_futex					202
-#define __NR_sched_setaffinity		203
-#define __NR_sched_getaffinity		204
-#define __NR_set_thread_area		205
-#define __NR_io_setup				206
-#define __NR_io_destroy				207
-#define __NR_io_getevents			208
-#define __NR_io_submit				209
-#define __NR_io_cancel				210
-#define __NR_get_thread_area		211
-#define __NR_lookup_dcookie			212
-#define __NR_epoll_create			213
-#define __NR_epoll_ctl_old			214
-#define __NR_epoll_wait_old			215
-#define __NR_remap_file_pages		216
-#define __NR_getdents64				217
-#define __NR_set_tid_address		218
-#define __NR_restart_syscall		219
-#define __NR_semtimedop				220
-#define __NR_fadvise64				221
-#define __NR_timer_create			222
-#define __NR_timer_settime			223
-#define __NR_timer_gettime			224
-#define __NR_timer_getoverrun		225
-#define __NR_timer_delete			226
-#define __NR_clock_settime			227
-#define __NR_clock_gettime			228
-#define __NR_clock_getres			229
-#define __NR_clock_nanosleep		230
-#define __NR_exit_group				231
-#define __NR_epoll_wait				232
-#define __NR_epoll_ctl				233
-#define __NR_tgkill					234
-#define __NR_utimes					235
-#define __NR_vserver				236
-#define __NR_mbind					237
-#define __NR_set_mempolicy			238
-#define __NR_get_mempolicy			239
-#define __NR_mq_open				240
-#define __NR_mq_unlink				241
-#define __NR_mq_timedsend			242
-#define __NR_mq_timedreceive		243
-#define __NR_mq_notify				244
-#define __NR_mq_getsetattr			245
-#define __NR_kexec_load				246
-#define __NR_waitid					247
-#define __NR_add_key				248
-#define __NR_request_key			249
-#define __NR_keyctl					250
-#define __NR_ioprio_set				251
-#define __NR_ioprio_get				252
-#define __NR_inotify_init			253
-#define __NR_inotify_add_watch		254
-#define __NR_inotify_rm_watch		255
-#define __NR_migrate_pages			256
-#define __NR_openat					257
-#define __NR_mkdirat				258
-#define __NR_mknodat				259
-#define __NR_fchownat				260
-#define __NR_futimesat				261
-#define __NR_newfstatat				262
-#define __NR_unlinkat				263
-#define __NR_renameat				264
-#define __NR_linkat					265
-#define __NR_symlinkat				266
-#define __NR_readlinkat				267
-#define __NR_fchmodat				268
-#define __NR_faccessat				269
-#define __NR_pselect6				270
-#define __NR_ppoll					271
-#define __NR_unshare				272
-#define __NR_set_robust_list		273
-#define __NR_get_robust_list		274
-#define __NR_splice					275
-#define __NR_tee					276
-#define __NR_sync_file_range		277
-#define __NR_vmsplice				278
-#define __NR_move_pages				279
-#define __NR_utimensat				280
-#define __NR_epoll_pwait			281
-#define __NR_signalfd				282
-#define __NR_timerfd_create			283
-#define __NR_eventfd				284
-#define __NR_fallocate				285
-#define __NR_timerfd_settime		286
-#define __NR_timerfd_gettime		287
-#define __NR_accept4				288
-#define __NR_signalfd4				289
-#define __NR_eventfd2				290
-#define __NR_epoll_create1			291
-#define __NR_dup3					292
-#define __NR_pipe2					293
-#define __NR_inotify_init1			294
-#define __NR_preadv					295
-#define __NR_pwritev				296
-#define __NR_rt_tgsigqueueinfo		297
-#define __NR_perf_event_open		298
-#define __NR_recvmmsg				299
-#define __NR_fanotify_init			300
-#define __NR_fanotify_mark			301
-#define __NR_prlimit64				302
-#define __NR_name_to_handle_at			303
-#define __NR_open_by_handle_at			304
-#define __NR_clock_adjtime			305
-#define __NR_syncfs				306
-#define __NR_sendmmsg				307
-#define __NR_setns				308
-#define __NR_getcpu				309
-#define __NR_process_vm_readv			310
-#define __NR_process_vm_writev			311
-#define __NR_kcmp				312
-#define __NR_finit_module			313
-#define __NR_sched_setattr			314
-#define __NR_sched_getattr			315
-#define __NR_renameat2				316
-#define __NR_seccomp				317
-#define __NR_getrandom				318
-#define __NR_memfd_create			319
-#define __NR_kexec_file_load			320
-#define __NR_bpf				321
-#define __NR_execveat				322
-#define __NR_userfaultfd			323
-#define __NR_membarrier				324
-#define __NR_mlock2				325
-
-
+#define __NR_read 0
+#define __NR_write 1
+#define __NR_open 2
+#define __NR_close 3
+#define __NR_stat 4
+#define __NR_fstat 5
+#define __NR_lstat 6
+#define __NR_poll 7
+#define __NR_lseek 8
+#define __NR_mmap 9
+#define __NR_mprotect 10
+#define __NR_munmap 11
+#define __NR_brk 12
+#define __NR_rt_sigaction 13
+#define __NR_rt_sigprocmask 14
+#define __NR_rt_sigreturn 15
+#define __NR_ioctl 16
+#define __NR_pread64 17
+#define __NR_pwrite64 18
+#define __NR_readv 19
+#define __NR_writev 20
+#define __NR_access 21
+#define __NR_pipe 22
+#define __NR_select 23
+#define __NR_sched_yield 24
+#define __NR_mremap 25
+#define __NR_msync 26
+#define __NR_mincore 27
+#define __NR_madvise 28
+#define __NR_shmget 29
+#define __NR_shmat 30
+#define __NR_shmctl 31
+#define __NR_dup 32
+#define __NR_dup2 33
+#define __NR_pause 34
+#define __NR_nanosleep 35
+#define __NR_getitimer 36
+#define __NR_alarm 37
+#define __NR_setitimer 38
+#define __NR_getpid 39
+#define __NR_sendfile 40
+#define __NR_socket 41
+#define __NR_connect 42
+#define __NR_accept 43
+#define __NR_sendto 44
+#define __NR_recvfrom 45
+#define __NR_sendmsg 46
+#define __NR_recvmsg 47
+#define __NR_shutdown 48
+#define __NR_bind 49
+#define __NR_listen 50
+#define __NR_getsockname 51
+#define __NR_getpeername 52
+#define __NR_socketpair 53
+#define __NR_setsockopt 54
+#define __NR_getsockopt 55
+#define __NR_clone 56
+#define __NR_fork 57
+#define __NR_vfork 58
+#define __NR_execve 59
+#define __NR_exit 60
+#define __NR_wait4 61
+#define __NR_kill 62
+#define __NR_uname 63
+#define __NR_semget 64
+#define __NR_semop 65
+#define __NR_semctl 66
+#define __NR_shmdt 67
+#define __NR_msgget 68
+#define __NR_msgsnd 69
+#define __NR_msgrcv 70
+#define __NR_msgctl 71
+#define __NR_fcntl 72
+#define __NR_flock 73
+#define __NR_fsync 74
+#define __NR_fdatasync 75
+#define __NR_truncate 76
+#define __NR_ftruncate 77
+#define __NR_getdents 78
+#define __NR_getcwd 79
+#define __NR_chdir 80
+#define __NR_fchdir 81
+#define __NR_rename 82
+#define __NR_mkdir 83
+#define __NR_rmdir 84
+#define __NR_creat 85
+#define __NR_link 86
+#define __NR_unlink 87
+#define __NR_symlink 88
+#define __NR_readlink 89
+#define __NR_chmod 90
+#define __NR_fchmod 91
+#define __NR_chown 92
+#define __NR_fchown 93
+#define __NR_lchown 94
+#define __NR_umask 95
+#define __NR_gettimeofday 96
+#define __NR_getrlimit 97
+#define __NR_getrusage 98
+#define __NR_sysinfo 99
+#define __NR_times 100
+#define __NR_ptrace 101
+#define __NR_getuid 102
+#define __NR_syslog 103
+#define __NR_getgid 104
+#define __NR_setuid 105
+#define __NR_setgid 106
+#define __NR_geteuid 107
+#define __NR_getegid 108
+#define __NR_setpgid 109
+#define __NR_getppid 110
+#define __NR_getpgrp 111
+#define __NR_setsid 112
+#define __NR_setreuid 113
+#define __NR_setregid 114
+#define __NR_getgroups 115
+#define __NR_setgroups 116
+#define __NR_setresuid 117
+#define __NR_getresuid 118
+#define __NR_setresgid 119
+#define __NR_getresgid 120
+#define __NR_getpgid 121
+#define __NR_setfsuid 122
+#define __NR_setfsgid 123
+#define __NR_getsid 124
+#define __NR_capget 125
+#define __NR_capset 126
+#define __NR_rt_sigpending 127
+#define __NR_rt_sigtimedwait 128
+#define __NR_rt_sigqueueinfo 129
+#define __NR_rt_sigsuspend 130
+#define __NR_sigaltstack 131
+#define __NR_utime 132
+#define __NR_mknod 133
+#define __NR_uselib 134
+#define __NR_personality 135
+#define __NR_ustat 136
+#define __NR_statfs 137
+#define __NR_fstatfs 138
+#define __NR_sysfs 139
+#define __NR_getpriority 140
+#define __NR_setpriority 141
+#define __NR_sched_setparam 142
+#define __NR_sched_getparam 143
+#define __NR_sched_setscheduler 144
+#define __NR_sched_getscheduler 145
+#define __NR_sched_get_priority_max 146
+#define __NR_sched_get_priority_min 147
+#define __NR_sched_rr_get_interval 148
+#define __NR_mlock 149
+#define __NR_munlock 150
+#define __NR_mlockall 151
+#define __NR_munlockall 152
+#define __NR_vhangup 153
+#define __NR_modify_ldt 154
+#define __NR_pivot_root 155
+#define __NR__sysctl 156
+#define __NR_prctl 157
+#define __NR_arch_prctl 158
+#define __NR_adjtimex 159
+#define __NR_setrlimit 160
+#define __NR_chroot 161
+#define __NR_sync 162
+#define __NR_acct 163
+#define __NR_settimeofday 164
+#define __NR_mount 165
+#define __NR_umount2 166
+#define __NR_swapon 167
+#define __NR_swapoff 168
+#define __NR_reboot 169
+#define __NR_sethostname 170
+#define __NR_setdomainname 171
+#define __NR_iopl 172
+#define __NR_ioperm 173
+#define __NR_create_module 174
+#define __NR_init_module 175
+#define __NR_delete_module 176
+#define __NR_get_kernel_syms 177
+#define __NR_query_module 178
+#define __NR_quotactl 179
+#define __NR_nfsservctl 180
+#define __NR_getpmsg 181
+#define __NR_putpmsg 182
+#define __NR_afs_syscall 183
+#define __NR_tuxcall 184
+#define __NR_security 185
+#define __NR_gettid 186
+#define __NR_readahead 187
+#define __NR_setxattr 188
+#define __NR_lsetxattr 189
+#define __NR_fsetxattr 190
+#define __NR_getxattr 191
+#define __NR_lgetxattr 192
+#define __NR_fgetxattr 193
+#define __NR_listxattr 194
+#define __NR_llistxattr 195
+#define __NR_flistxattr 196
+#define __NR_removexattr 197
+#define __NR_lremovexattr 198
+#define __NR_fremovexattr 199
+#define __NR_tkill 200
+#define __NR_time 201
+#define __NR_futex 202
+#define __NR_sched_setaffinity 203
+#define __NR_sched_getaffinity 204
+#define __NR_set_thread_area 205
+#define __NR_io_setup 206
+#define __NR_io_destroy 207
+#define __NR_io_getevents 208
+#define __NR_io_submit 209
+#define __NR_io_cancel 210
+#define __NR_get_thread_area 211
+#define __NR_lookup_dcookie 212
+#define __NR_epoll_create 213
+#define __NR_epoll_ctl_old 214
+#define __NR_epoll_wait_old 215
+#define __NR_remap_file_pages 216
+#define __NR_getdents64 217
+#define __NR_set_tid_address 218
+#define __NR_restart_syscall 219
+#define __NR_semtimedop 220
+#define __NR_fadvise64 221
+#define __NR_timer_create 222
+#define __NR_timer_settime 223
+#define __NR_timer_gettime 224
+#define __NR_timer_getoverrun 225
+#define __NR_timer_delete 226
+#define __NR_clock_settime 227
+#define __NR_clock_gettime 228
+#define __NR_clock_getres 229
+#define __NR_clock_nanosleep 230
+#define __NR_exit_group 231
+#define __NR_epoll_wait 232
+#define __NR_epoll_ctl 233
+#define __NR_tgkill 234
+#define __NR_utimes 235
+#define __NR_vserver 236
+#define __NR_mbind 237
+#define __NR_set_mempolicy 238
+#define __NR_get_mempolicy 239
+#define __NR_mq_open 240
+#define __NR_mq_unlink 241
+#define __NR_mq_timedsend 242
+#define __NR_mq_timedreceive 243
+#define __NR_mq_notify 244
+#define __NR_mq_getsetattr 245
+#define __NR_kexec_load 246
+#define __NR_waitid 247
+#define __NR_add_key 248
+#define __NR_request_key 249
+#define __NR_keyctl 250
+#define __NR_ioprio_set 251
+#define __NR_ioprio_get 252
+#define __NR_inotify_init 253
+#define __NR_inotify_add_watch 254
+#define __NR_inotify_rm_watch 255
+#define __NR_migrate_pages 256
+#define __NR_openat 257
+#define __NR_mkdirat 258
+#define __NR_mknodat 259
+#define __NR_fchownat 260
+#define __NR_futimesat 261
+#define __NR_newfstatat 262
+#define __NR_unlinkat 263
+#define __NR_renameat 264
+#define __NR_linkat 265
+#define __NR_symlinkat 266
+#define __NR_readlinkat 267
+#define __NR_fchmodat 268
+#define __NR_faccessat 269
+#define __NR_pselect6 270
+#define __NR_ppoll 271
+#define __NR_unshare 272
+#define __NR_set_robust_list 273
+#define __NR_get_robust_list 274
+#define __NR_splice 275
+#define __NR_tee 276
+#define __NR_sync_file_range 277
+#define __NR_vmsplice 278
+#define __NR_move_pages 279
+#define __NR_utimensat 280
+#define __NR_epoll_pwait 281
+#define __NR_signalfd 282
+#define __NR_timerfd_create 283
+#define __NR_eventfd 284
+#define __NR_fallocate 285
+#define __NR_timerfd_settime 286
+#define __NR_timerfd_gettime 287
+#define __NR_accept4 288
+#define __NR_signalfd4 289
+#define __NR_eventfd2 290
+#define __NR_epoll_create1 291
+#define __NR_dup3 292
+#define __NR_pipe2 293
+#define __NR_inotify_init1 294
+#define __NR_preadv 295
+#define __NR_pwritev 296
+#define __NR_rt_tgsigqueueinfo 297
+#define __NR_perf_event_open 298
+#define __NR_recvmmsg 299
+#define __NR_fanotify_init 300
+#define __NR_fanotify_mark 301
+#define __NR_prlimit64 302
+#define __NR_name_to_handle_at 303
+#define __NR_open_by_handle_at 304
+#define __NR_clock_adjtime 305
+#define __NR_syncfs 306
+#define __NR_sendmmsg 307
+#define __NR_setns 308
+#define __NR_getcpu 309
+#define __NR_process_vm_readv 310
+#define __NR_process_vm_writev 311
+#define __NR_kcmp 312
+#define __NR_finit_module 313
+#define __NR_sched_setattr 314
+#define __NR_sched_getattr 315
+#define __NR_renameat2 316
+#define __NR_seccomp 317
+#define __NR_getrandom 318
+#define __NR_memfd_create 319
+#define __NR_kexec_file_load 320
+#define __NR_bpf 321
+#define __NR_execveat 322
+#define __NR_userfaultfd 323
+#define __NR_membarrier 324
+#define __NR_mlock2 325
 
 /* Repeat with SYS_ prefix */
 
-#define SYS_read				0
-#define SYS_write				1
-#define SYS_open				2
-#define SYS_close				3
-#define SYS_stat				4
-#define SYS_fstat				5
-#define SYS_lstat				6
-#define SYS_poll				7
-#define SYS_lseek				8
-#define SYS_mmap				9
-#define SYS_mprotect			10
-#define SYS_munmap				11
-#define SYS_brk				12
-#define SYS_rt_sigaction		13
-#define SYS_rt_sigprocmask		14
-#define SYS_rt_sigreturn		15
-#define SYS_ioctl				16
-#define SYS_pread64			17
-#define SYS_pwrite64			18
-#define SYS_readv				19
-#define SYS_writev				20
-#define SYS_access				21
-#define SYS_pipe				22
-#define SYS_select				23
-#define SYS_sched_yield		24
-#define SYS_mremap				25
-#define SYS_msync				26
-#define SYS_mincore			27
-#define SYS_madvise			28
-#define SYS_shmget				29
-#define SYS_shmat				30
-#define SYS_shmctl				31
-#define SYS_dup				32
-#define SYS_dup2				33
-#define SYS_pause				34
-#define SYS_nanosleep			35
-#define SYS_getitimer			36
-#define SYS_alarm				37
-#define SYS_setitimer			38
-#define SYS_getpid				39
-#define SYS_sendfile			40
-#define SYS_socket				41
-#define SYS_connect			42
-#define SYS_accept				43
-#define SYS_sendto				44
-#define SYS_recvfrom			45
-#define SYS_sendmsg			46
-#define SYS_recvmsg			47
-#define SYS_shutdown			48
-#define SYS_bind				49
-#define SYS_listen				50
-#define SYS_getsockname		51
-#define SYS_getpeername		52
-#define SYS_socketpair			53
-#define SYS_setsockopt			54
-#define SYS_getsockopt			55
-#define SYS_clone				56
-#define SYS_fork				57
-#define SYS_vfork				58
-#define SYS_execve				59
-#define SYS_exit				60
-#define SYS_wait4				61
-#define SYS_kill				62
-#define SYS_uname				63
-#define SYS_semget				64
-#define SYS_semop				65
-#define SYS_semctl				66
-#define SYS_shmdt				67
-#define SYS_msgget				68
-#define SYS_msgsnd				69
-#define SYS_msgrcv				70
-#define SYS_msgctl				71
-#define SYS_fcntl				72
-#define SYS_flock				73
-#define SYS_fsync				74
-#define SYS_fdatasync			75
-#define SYS_truncate			76
-#define SYS_ftruncate			77
-#define SYS_getdents			78
-#define SYS_getcwd				79
-#define SYS_chdir				80
-#define SYS_fchdir				81
-#define SYS_rename				82
-#define SYS_mkdir				83
-#define SYS_rmdir				84
-#define SYS_creat				85
-#define SYS_link				86
-#define SYS_unlink				87
-#define SYS_symlink			88
-#define SYS_readlink			89
-#define SYS_chmod				90
-#define SYS_fchmod				91
-#define SYS_chown				92
-#define SYS_fchown				93
-#define SYS_lchown				94
-#define SYS_umask				95
-#define SYS_gettimeofday		96
-#define SYS_getrlimit			97
-#define SYS_getrusage			98
-#define SYS_sysinfo			99
-#define SYS_times				100
-#define SYS_ptrace				101
-#define SYS_getuid				102
-#define SYS_syslog				103
-#define SYS_getgid				104
-#define SYS_setuid				105
-#define SYS_setgid				106
-#define SYS_geteuid			107
-#define SYS_getegid			108
-#define SYS_setpgid			109
-#define SYS_getppid			110
-#define SYS_getpgrp			111
-#define SYS_setsid				112
-#define SYS_setreuid			113
-#define SYS_setregid			114
-#define SYS_getgroups			115
-#define SYS_setgroups			116
-#define SYS_setresuid			117
-#define SYS_getresuid			118
-#define SYS_setresgid			119
-#define SYS_getresgid			120
-#define SYS_getpgid			121
-#define SYS_setfsuid			122
-#define SYS_setfsgid			123
-#define SYS_getsid				124
-#define SYS_capget				125
-#define SYS_capset				126
-#define SYS_rt_sigpending		127
-#define SYS_rt_sigtimedwait	128
-#define SYS_rt_sigqueueinfo	129
-#define SYS_rt_sigsuspend		130
-#define SYS_sigaltstack		131
-#define SYS_utime				132
-#define SYS_mknod				133
-#define SYS_uselib				134
-#define SYS_personality		135
-#define SYS_ustat				136
-#define SYS_statfs				137
-#define SYS_fstatfs			138
-#define SYS_sysfs				139
-#define SYS_getpriority			140
-#define SYS_setpriority			141
-#define SYS_sched_setparam			142
-#define SYS_sched_getparam			143
-#define SYS_sched_setscheduler		144
-#define SYS_sched_getscheduler		145
-#define SYS_sched_get_priority_max	146
-#define SYS_sched_get_priority_min	147
-#define SYS_sched_rr_get_interval	148
-#define SYS_mlock					149
-#define SYS_munlock				150
-#define SYS_mlockall				151
-#define SYS_munlockall				152
-#define SYS_vhangup				153
-#define SYS_modify_ldt				154
-#define SYS_pivot_root				155
-#define SYS__sysctl				156
-#define SYS_prctl					157
-#define SYS_arch_prctl				158
-#define SYS_adjtimex				159
-#define SYS_setrlimit				160
-#define SYS_chroot					161
-#define SYS_sync					162
-#define SYS_acct					163
-#define SYS_settimeofday			164
-#define SYS_mount					165
-#define SYS_umount2				166
-#define SYS_swapon					167
-#define SYS_swapoff				168
-#define SYS_reboot					169
-#define SYS_sethostname			170
-#define SYS_setdomainname			171
-#define SYS_iopl					172
-#define SYS_ioperm					173
-#define SYS_create_module			174
-#define SYS_init_module			175
-#define SYS_delete_module			176
-#define SYS_get_kernel_syms		177
-#define SYS_query_module			178
-#define SYS_quotactl				179
-#define SYS_nfsservctl				180
-#define SYS_getpmsg				181
-#define SYS_putpmsg				182
-#define SYS_afs_syscall			183
-#define SYS_tuxcall				184
-#define SYS_security				185
-#define SYS_gettid					186
-#define SYS_readahead				187
-#define SYS_setxattr				188
-#define SYS_lsetxattr				189
-#define SYS_fsetxattr				190
-#define SYS_getxattr				191
-#define SYS_lgetxattr				192
-#define SYS_fgetxattr				193
-#define SYS_listxattr				194
-#define SYS_llistxattr				195
-#define SYS_flistxattr				196
-#define SYS_removexattr			197
-#define SYS_lremovexattr			198
-#define SYS_fremovexattr			199
-#define SYS_tkill					200
-#define SYS_time					201
-#define SYS_futex					202
-#define SYS_sched_setaffinity		203
-#define SYS_sched_getaffinity		204
-#define SYS_set_thread_area		205
-#define SYS_io_setup				206
-#define SYS_io_destroy				207
-#define SYS_io_getevents			208
-#define SYS_io_submit				209
-#define SYS_io_cancel				210
-#define SYS_get_thread_area		211
-#define SYS_lookup_dcookie			212
-#define SYS_epoll_create			213
-#define SYS_epoll_ctl_old			214
-#define SYS_epoll_wait_old			215
-#define SYS_remap_file_pages		216
-#define SYS_getdents64				217
-#define SYS_set_tid_address		218
-#define SYS_restart_syscall		219
-#define SYS_semtimedop				220
-#define SYS_fadvise64				221
-#define SYS_timer_create			222
-#define SYS_timer_settime			223
-#define SYS_timer_gettime			224
-#define SYS_timer_getoverrun		225
-#define SYS_timer_delete			226
-#define SYS_clock_settime			227
-#define SYS_clock_gettime			228
-#define SYS_clock_getres			229
-#define SYS_clock_nanosleep		230
-#define SYS_exit_group				231
-#define SYS_epoll_wait				232
-#define SYS_epoll_ctl				233
-#define SYS_tgkill					234
-#define SYS_utimes					235
-#define SYS_vserver				236
-#define SYS_mbind					237
-#define SYS_set_mempolicy			238
-#define SYS_get_mempolicy			239
-#define SYS_mq_open				240
-#define SYS_mq_unlink				241
-#define SYS_mq_timedsend			242
-#define SYS_mq_timedreceive		243
-#define SYS_mq_notify				244
-#define SYS_mq_getsetattr			245
-#define SYS_kexec_load				246
-#define SYS_waitid					247
-#define SYS_add_key				248
-#define SYS_request_key			249
-#define SYS_keyctl					250
-#define SYS_ioprio_set				251
-#define SYS_ioprio_get				252
-#define SYS_inotify_init			253
-#define SYS_inotify_add_watch		254
-#define SYS_inotify_rm_watch		255
-#define SYS_migrate_pages			256
-#define SYS_openat					257
-#define SYS_mkdirat				258
-#define SYS_mknodat				259
-#define SYS_fchownat				260
-#define SYS_futimesat				261
-#define SYS_newfstatat				262
-#define SYS_unlinkat				263
-#define SYS_renameat				264
-#define SYS_linkat					265
-#define SYS_symlinkat				266
-#define SYS_readlinkat				267
-#define SYS_fchmodat				268
-#define SYS_faccessat				269
-#define SYS_pselect6				270
-#define SYS_ppoll					271
-#define SYS_unshare				272
-#define SYS_set_robust_list		273
-#define SYS_get_robust_list		274
-#define SYS_splice					275
-#define SYS_tee					276
-#define SYS_sync_file_range		277
-#define SYS_vmsplice				278
-#define SYS_move_pages				279
-#define SYS_utimensat				280
-#define SYS_epoll_pwait			281
-#define SYS_signalfd				282
-#define SYS_timerfd_create			283
-#define SYS_eventfd				284
-#define SYS_fallocate				285
-#define SYS_timerfd_settime		286
-#define SYS_timerfd_gettime		287
-#define SYS_accept4				288
-#define SYS_signalfd4				289
-#define SYS_eventfd2				290
-#define SYS_epoll_create1			291
-#define SYS_dup3					292
-#define SYS_pipe2					293
-#define SYS_inotify_init1			294
-#define SYS_preadv					295
-#define SYS_pwritev				296
-#define SYS_rt_tgsigqueueinfo		297
-#define SYS_perf_event_open		298
-#define SYS_recvmmsg				299
-#define SYS_fanotify_init			300
-#define SYS_fanotify_mark			301
-#define SYS_prlimit64				302
-#define SYS_name_to_handle_at			303
-#define SYS_open_by_handle_at			304
-#define SYS_clock_adjtime			305
-#define SYS_syncfs				306
-#define SYS_sendmmsg				307
-#define SYS_setns				308
-#define SYS_getcpu				309
-#define SYS_process_vm_readv			310
-#define SYS_process_vm_writev			311
-#define SYS_kcmp				312
-#define SYS_finit_module			313
-#define SYS_sched_setattr			314
-#define SYS_sched_getattr			315
-#define SYS_renameat2				316
-#define SYS_seccomp				317
-#define SYS_getrandom				318
-#define SYS_memfd_create			319
-#define SYS_kexec_file_load			320
-#define SYS_bpf					321
-#define SYS_execveat				322
-#define SYS_userfaultfd				323
-#define SYS_membarrier				324
-#define SYS_mlock2				325
+#define SYS_read 0
+#define SYS_write 1
+#define SYS_open 2
+#define SYS_close 3
+#define SYS_stat 4
+#define SYS_fstat 5
+#define SYS_lstat 6
+#define SYS_poll 7
+#define SYS_lseek 8
+#define SYS_mmap 9
+#define SYS_mprotect 10
+#define SYS_munmap 11
+#define SYS_brk 12
+#define SYS_rt_sigaction 13
+#define SYS_rt_sigprocmask 14
+#define SYS_rt_sigreturn 15
+#define SYS_ioctl 16
+#define SYS_pread64 17
+#define SYS_pwrite64 18
+#define SYS_readv 19
+#define SYS_writev 20
+#define SYS_access 21
+#define SYS_pipe 22
+#define SYS_select 23
+#define SYS_sched_yield 24
+#define SYS_mremap 25
+#define SYS_msync 26
+#define SYS_mincore 27
+#define SYS_madvise 28
+#define SYS_shmget 29
+#define SYS_shmat 30
+#define SYS_shmctl 31
+#define SYS_dup 32
+#define SYS_dup2 33
+#define SYS_pause 34
+#define SYS_nanosleep 35
+#define SYS_getitimer 36
+#define SYS_alarm 37
+#define SYS_setitimer 38
+#define SYS_getpid 39
+#define SYS_sendfile 40
+#define SYS_socket 41
+#define SYS_connect 42
+#define SYS_accept 43
+#define SYS_sendto 44
+#define SYS_recvfrom 45
+#define SYS_sendmsg 46
+#define SYS_recvmsg 47
+#define SYS_shutdown 48
+#define SYS_bind 49
+#define SYS_listen 50
+#define SYS_getsockname 51
+#define SYS_getpeername 52
+#define SYS_socketpair 53
+#define SYS_setsockopt 54
+#define SYS_getsockopt 55
+#define SYS_clone 56
+#define SYS_fork 57
+#define SYS_vfork 58
+#define SYS_execve 59
+#define SYS_exit 60
+#define SYS_wait4 61
+#define SYS_kill 62
+#define SYS_uname 63
+#define SYS_semget 64
+#define SYS_semop 65
+#define SYS_semctl 66
+#define SYS_shmdt 67
+#define SYS_msgget 68
+#define SYS_msgsnd 69
+#define SYS_msgrcv 70
+#define SYS_msgctl 71
+#define SYS_fcntl 72
+#define SYS_flock 73
+#define SYS_fsync 74
+#define SYS_fdatasync 75
+#define SYS_truncate 76
+#define SYS_ftruncate 77
+#define SYS_getdents 78
+#define SYS_getcwd 79
+#define SYS_chdir 80
+#define SYS_fchdir 81
+#define SYS_rename 82
+#define SYS_mkdir 83
+#define SYS_rmdir 84
+#define SYS_creat 85
+#define SYS_link 86
+#define SYS_unlink 87
+#define SYS_symlink 88
+#define SYS_readlink 89
+#define SYS_chmod 90
+#define SYS_fchmod 91
+#define SYS_chown 92
+#define SYS_fchown 93
+#define SYS_lchown 94
+#define SYS_umask 95
+#define SYS_gettimeofday 96
+#define SYS_getrlimit 97
+#define SYS_getrusage 98
+#define SYS_sysinfo 99
+#define SYS_times 100
+#define SYS_ptrace 101
+#define SYS_getuid 102
+#define SYS_syslog 103
+#define SYS_getgid 104
+#define SYS_setuid 105
+#define SYS_setgid 106
+#define SYS_geteuid 107
+#define SYS_getegid 108
+#define SYS_setpgid 109
+#define SYS_getppid 110
+#define SYS_getpgrp 111
+#define SYS_setsid 112
+#define SYS_setreuid 113
+#define SYS_setregid 114
+#define SYS_getgroups 115
+#define SYS_setgroups 116
+#define SYS_setresuid 117
+#define SYS_getresuid 118
+#define SYS_setresgid 119
+#define SYS_getresgid 120
+#define SYS_getpgid 121
+#define SYS_setfsuid 122
+#define SYS_setfsgid 123
+#define SYS_getsid 124
+#define SYS_capget 125
+#define SYS_capset 126
+#define SYS_rt_sigpending 127
+#define SYS_rt_sigtimedwait 128
+#define SYS_rt_sigqueueinfo 129
+#define SYS_rt_sigsuspend 130
+#define SYS_sigaltstack 131
+#define SYS_utime 132
+#define SYS_mknod 133
+#define SYS_uselib 134
+#define SYS_personality 135
+#define SYS_ustat 136
+#define SYS_statfs 137
+#define SYS_fstatfs 138
+#define SYS_sysfs 139
+#define SYS_getpriority 140
+#define SYS_setpriority 141
+#define SYS_sched_setparam 142
+#define SYS_sched_getparam 143
+#define SYS_sched_setscheduler 144
+#define SYS_sched_getscheduler 145
+#define SYS_sched_get_priority_max 146
+#define SYS_sched_get_priority_min 147
+#define SYS_sched_rr_get_interval 148
+#define SYS_mlock 149
+#define SYS_munlock 150
+#define SYS_mlockall 151
+#define SYS_munlockall 152
+#define SYS_vhangup 153
+#define SYS_modify_ldt 154
+#define SYS_pivot_root 155
+#define SYS__sysctl 156
+#define SYS_prctl 157
+#define SYS_arch_prctl 158
+#define SYS_adjtimex 159
+#define SYS_setrlimit 160
+#define SYS_chroot 161
+#define SYS_sync 162
+#define SYS_acct 163
+#define SYS_settimeofday 164
+#define SYS_mount 165
+#define SYS_umount2 166
+#define SYS_swapon 167
+#define SYS_swapoff 168
+#define SYS_reboot 169
+#define SYS_sethostname 170
+#define SYS_setdomainname 171
+#define SYS_iopl 172
+#define SYS_ioperm 173
+#define SYS_create_module 174
+#define SYS_init_module 175
+#define SYS_delete_module 176
+#define SYS_get_kernel_syms 177
+#define SYS_query_module 178
+#define SYS_quotactl 179
+#define SYS_nfsservctl 180
+#define SYS_getpmsg 181
+#define SYS_putpmsg 182
+#define SYS_afs_syscall 183
+#define SYS_tuxcall 184
+#define SYS_security 185
+#define SYS_gettid 186
+#define SYS_readahead 187
+#define SYS_setxattr 188
+#define SYS_lsetxattr 189
+#define SYS_fsetxattr 190
+#define SYS_getxattr 191
+#define SYS_lgetxattr 192
+#define SYS_fgetxattr 193
+#define SYS_listxattr 194
+#define SYS_llistxattr 195
+#define SYS_flistxattr 196
+#define SYS_removexattr 197
+#define SYS_lremovexattr 198
+#define SYS_fremovexattr 199
+#define SYS_tkill 200
+#define SYS_time 201
+#define SYS_futex 202
+#define SYS_sched_setaffinity 203
+#define SYS_sched_getaffinity 204
+#define SYS_set_thread_area 205
+#define SYS_io_setup 206
+#define SYS_io_destroy 207
+#define SYS_io_getevents 208
+#define SYS_io_submit 209
+#define SYS_io_cancel 210
+#define SYS_get_thread_area 211
+#define SYS_lookup_dcookie 212
+#define SYS_epoll_create 213
+#define SYS_epoll_ctl_old 214
+#define SYS_epoll_wait_old 215
+#define SYS_remap_file_pages 216
+#define SYS_getdents64 217
+#define SYS_set_tid_address 218
+#define SYS_restart_syscall 219
+#define SYS_semtimedop 220
+#define SYS_fadvise64 221
+#define SYS_timer_create 222
+#define SYS_timer_settime 223
+#define SYS_timer_gettime 224
+#define SYS_timer_getoverrun 225
+#define SYS_timer_delete 226
+#define SYS_clock_settime 227
+#define SYS_clock_gettime 228
+#define SYS_clock_getres 229
+#define SYS_clock_nanosleep 230
+#define SYS_exit_group 231
+#define SYS_epoll_wait 232
+#define SYS_epoll_ctl 233
+#define SYS_tgkill 234
+#define SYS_utimes 235
+#define SYS_vserver 236
+#define SYS_mbind 237
+#define SYS_set_mempolicy 238
+#define SYS_get_mempolicy 239
+#define SYS_mq_open 240
+#define SYS_mq_unlink 241
+#define SYS_mq_timedsend 242
+#define SYS_mq_timedreceive 243
+#define SYS_mq_notify 244
+#define SYS_mq_getsetattr 245
+#define SYS_kexec_load 246
+#define SYS_waitid 247
+#define SYS_add_key 248
+#define SYS_request_key 249
+#define SYS_keyctl 250
+#define SYS_ioprio_set 251
+#define SYS_ioprio_get 252
+#define SYS_inotify_init 253
+#define SYS_inotify_add_watch 254
+#define SYS_inotify_rm_watch 255
+#define SYS_migrate_pages 256
+#define SYS_openat 257
+#define SYS_mkdirat 258
+#define SYS_mknodat 259
+#define SYS_fchownat 260
+#define SYS_futimesat 261
+#define SYS_newfstatat 262
+#define SYS_unlinkat 263
+#define SYS_renameat 264
+#define SYS_linkat 265
+#define SYS_symlinkat 266
+#define SYS_readlinkat 267
+#define SYS_fchmodat 268
+#define SYS_faccessat 269
+#define SYS_pselect6 270
+#define SYS_ppoll 271
+#define SYS_unshare 272
+#define SYS_set_robust_list 273
+#define SYS_get_robust_list 274
+#define SYS_splice 275
+#define SYS_tee 276
+#define SYS_sync_file_range 277
+#define SYS_vmsplice 278
+#define SYS_move_pages 279
+#define SYS_utimensat 280
+#define SYS_epoll_pwait 281
+#define SYS_signalfd 282
+#define SYS_timerfd_create 283
+#define SYS_eventfd 284
+#define SYS_fallocate 285
+#define SYS_timerfd_settime 286
+#define SYS_timerfd_gettime 287
+#define SYS_accept4 288
+#define SYS_signalfd4 289
+#define SYS_eventfd2 290
+#define SYS_epoll_create1 291
+#define SYS_dup3 292
+#define SYS_pipe2 293
+#define SYS_inotify_init1 294
+#define SYS_preadv 295
+#define SYS_pwritev 296
+#define SYS_rt_tgsigqueueinfo 297
+#define SYS_perf_event_open 298
+#define SYS_recvmmsg 299
+#define SYS_fanotify_init 300
+#define SYS_fanotify_mark 301
+#define SYS_prlimit64 302
+#define SYS_name_to_handle_at 303
+#define SYS_open_by_handle_at 304
+#define SYS_clock_adjtime 305
+#define SYS_syncfs 306
+#define SYS_sendmmsg 307
+#define SYS_setns 308
+#define SYS_getcpu 309
+#define SYS_process_vm_readv 310
+#define SYS_process_vm_writev 311
+#define SYS_kcmp 312
+#define SYS_finit_module 313
+#define SYS_sched_setattr 314
+#define SYS_sched_getattr 315
+#define SYS_renameat2 316
+#define SYS_seccomp 317
+#define SYS_getrandom 318
+#define SYS_memfd_create 319
+#define SYS_kexec_file_load 320
+#define SYS_bpf 321
+#define SYS_execveat 322
+#define SYS_userfaultfd 323
+#define SYS_membarrier 324
+#define SYS_mlock2 325
diff --git a/fusl/arch/x86_64/bits/user.h b/fusl/arch/x86_64/bits/user.h
index 1bd2d70..b0cd7e0 100644
--- a/fusl/arch/x86_64/bits/user.h
+++ b/fusl/arch/x86_64/bits/user.h
@@ -1,44 +1,41 @@
 #undef __WORDSIZE
 #define __WORDSIZE 64
 
-typedef struct user_fpregs_struct
-{
-	uint16_t cwd, swd, ftw, fop;
-	uint64_t rip, rdp;
-	uint32_t mxcsr, mxcr_mask;
-	uint32_t st_space[32], xmm_space[64], padding[24];
+typedef struct user_fpregs_struct {
+  uint16_t cwd, swd, ftw, fop;
+  uint64_t rip, rdp;
+  uint32_t mxcsr, mxcr_mask;
+  uint32_t st_space[32], xmm_space[64], padding[24];
 } elf_fpregset_t;
 
-struct user_regs_struct
-{
-	unsigned long r15, r14, r13, r12, rbp, rbx, r11, r10, r9, r8;
-	unsigned long rax, rcx, rdx, rsi, rdi, orig_rax, rip;
-	unsigned long cs, eflags, rsp, ss, fs_base, gs_base, ds, es, fs, gs;
+struct user_regs_struct {
+  unsigned long r15, r14, r13, r12, rbp, rbx, r11, r10, r9, r8;
+  unsigned long rax, rcx, rdx, rsi, rdi, orig_rax, rip;
+  unsigned long cs, eflags, rsp, ss, fs_base, gs_base, ds, es, fs, gs;
 };
 #define ELF_NGREG 27
 typedef unsigned long long elf_greg_t, elf_gregset_t[ELF_NGREG];
 
-struct user
-{
-	struct user_regs_struct		regs;
-	int				u_fpvalid;
-	struct user_fpregs_struct	i387;
-	unsigned long			u_tsize;
-	unsigned long			u_dsize;
-	unsigned long			u_ssize;
-	unsigned long			start_code;
-	unsigned long			start_stack;
-	long				signal;
-	int				reserved;
-	struct user_regs_struct		*u_ar0;
-	struct user_fpregs_struct	*u_fpstate;
-	unsigned long			magic;
-	char				u_comm[32];
-	unsigned long			u_debugreg[8];
+struct user {
+  struct user_regs_struct regs;
+  int u_fpvalid;
+  struct user_fpregs_struct i387;
+  unsigned long u_tsize;
+  unsigned long u_dsize;
+  unsigned long u_ssize;
+  unsigned long start_code;
+  unsigned long start_stack;
+  long signal;
+  int reserved;
+  struct user_regs_struct* u_ar0;
+  struct user_fpregs_struct* u_fpstate;
+  unsigned long magic;
+  char u_comm[32];
+  unsigned long u_debugreg[8];
 };
 
-#define PAGE_MASK		(~(PAGE_SIZE-1))
-#define NBPG			PAGE_SIZE
-#define UPAGES			1
-#define HOST_TEXT_START_ADDR	(u.start_code)
-#define HOST_STACK_END_ADDR	(u.start_stack + u.u_ssize * NBPG)
+#define PAGE_MASK (~(PAGE_SIZE - 1))
+#define NBPG PAGE_SIZE
+#define UPAGES 1
+#define HOST_TEXT_START_ADDR (u.start_code)
+#define HOST_STACK_END_ADDR (u.start_stack + u.u_ssize * NBPG)
diff --git a/fusl/arch/x86_64/crt_arch.h b/fusl/arch/x86_64/crt_arch.h
index 3eec61b..67de65e 100644
--- a/fusl/arch/x86_64/crt_arch.h
+++ b/fusl/arch/x86_64/crt_arch.h
@@ -1,12 +1,11 @@
 __asm__(
-".text \n"
-".global " START " \n"
-START ": \n"
-"	xor %rbp,%rbp \n"
-"	mov %rsp,%rdi \n"
-".weak _DYNAMIC \n"
-".hidden _DYNAMIC \n"
-"	lea _DYNAMIC(%rip),%rsi \n"
-"	andq $-16,%rsp \n"
-"	call " START "_c \n"
-);
+    ".text \n"
+    ".global " START " \n" START
+    ": \n"
+    "	xor %rbp,%rbp \n"
+    "	mov %rsp,%rdi \n"
+    ".weak _DYNAMIC \n"
+    ".hidden _DYNAMIC \n"
+    "	lea _DYNAMIC(%rip),%rsi \n"
+    "	andq $-16,%rsp \n"
+    "	call " START "_c \n");
diff --git a/fusl/arch/x86_64/pthread_arch.h b/fusl/arch/x86_64/pthread_arch.h
index c61509c..caecb02 100644
--- a/fusl/arch/x86_64/pthread_arch.h
+++ b/fusl/arch/x86_64/pthread_arch.h
@@ -1,8 +1,7 @@
-static inline struct pthread *__pthread_self()
-{
-	struct pthread *self;
-	__asm__ __volatile__ ("mov %%fs:0,%0" : "=r" (self) );
-	return self;
+static inline struct pthread* __pthread_self() {
+  struct pthread* self;
+  __asm__ __volatile__("mov %%fs:0,%0" : "=r"(self));
+  return self;
 }
 
 #define TP_ADJ(p) (p)
diff --git a/fusl/arch/x86_64/reloc.h b/fusl/arch/x86_64/reloc.h
index fac0c0a..ba57e9e 100644
--- a/fusl/arch/x86_64/reloc.h
+++ b/fusl/arch/x86_64/reloc.h
@@ -1,20 +1,24 @@
 #define LDSO_ARCH "x86_64"
 
-#define REL_SYMBOLIC    R_X86_64_64
-#define REL_OFFSET32    R_X86_64_PC32
-#define REL_GOT         R_X86_64_GLOB_DAT
-#define REL_PLT         R_X86_64_JUMP_SLOT
-#define REL_RELATIVE    R_X86_64_RELATIVE
-#define REL_COPY        R_X86_64_COPY
-#define REL_DTPMOD      R_X86_64_DTPMOD64
-#define REL_DTPOFF      R_X86_64_DTPOFF64
-#define REL_TPOFF       R_X86_64_TPOFF64
-#define REL_TLSDESC     R_X86_64_TLSDESC
+#define REL_SYMBOLIC R_X86_64_64
+#define REL_OFFSET32 R_X86_64_PC32
+#define REL_GOT R_X86_64_GLOB_DAT
+#define REL_PLT R_X86_64_JUMP_SLOT
+#define REL_RELATIVE R_X86_64_RELATIVE
+#define REL_COPY R_X86_64_COPY
+#define REL_DTPMOD R_X86_64_DTPMOD64
+#define REL_DTPOFF R_X86_64_DTPOFF64
+#define REL_TPOFF R_X86_64_TPOFF64
+#define REL_TLSDESC R_X86_64_TLSDESC
 
-#define CRTJMP(pc,sp) __asm__ __volatile__( \
-	"mov %1,%%rsp ; jmp *%0" : : "r"(pc), "r"(sp) : "memory" )
+#define CRTJMP(pc, sp)                                                         \
+  __asm__ __volatile__("mov %1,%%rsp ; jmp *%0" : : "r"(pc), "r"(sp) : "memor" \
+                                                                       "y")
 
-#define GETFUNCSYM(fp, sym, got) __asm__ ( \
-	".hidden " #sym "\n" \
-	"	lea " #sym "(%%rip),%0\n" \
-	: "=r"(*fp) : : "memory" )
+#define GETFUNCSYM(fp, sym, got)          \
+  __asm__(".hidden " #sym                 \
+          "\n"                            \
+          "	lea " #sym "(%%rip),%0\n" \
+          : "=r"(*fp)                     \
+          :                               \
+          : "memory")
diff --git a/fusl/arch/x86_64/syscall_arch.h b/fusl/arch/x86_64/syscall_arch.h
index a7a7b5a..3199755 100644
--- a/fusl/arch/x86_64/syscall_arch.h
+++ b/fusl/arch/x86_64/syscall_arch.h
@@ -1,64 +1,77 @@
 #define __SYSCALL_LL_E(x) (x)
 #define __SYSCALL_LL_O(x) (x)
 
-static __inline long __syscall0(long n)
-{
-	unsigned long ret;
-	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n) : "rcx", "r11", "memory");
-	return ret;
+static __inline long __syscall0(long n) {
+  unsigned long ret;
+  __asm__ __volatile__("syscall" : "=a"(ret) : "a"(n) : "rcx", "r11", "memory");
+  return ret;
 }
 
-static __inline long __syscall1(long n, long a1)
-{
-	unsigned long ret;
-	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1) : "rcx", "r11", "memory");
-	return ret;
+static __inline long __syscall1(long n, long a1) {
+  unsigned long ret;
+  __asm__ __volatile__("syscall"
+                       : "=a"(ret)
+                       : "a"(n), "D"(a1)
+                       : "rcx", "r11", "memory");
+  return ret;
 }
 
-static __inline long __syscall2(long n, long a1, long a2)
-{
-	unsigned long ret;
-	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2)
-						  : "rcx", "r11", "memory");
-	return ret;
+static __inline long __syscall2(long n, long a1, long a2) {
+  unsigned long ret;
+  __asm__ __volatile__("syscall"
+                       : "=a"(ret)
+                       : "a"(n), "D"(a1), "S"(a2)
+                       : "rcx", "r11", "memory");
+  return ret;
 }
 
-static __inline long __syscall3(long n, long a1, long a2, long a3)
-{
-	unsigned long ret;
-	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
-						  "d"(a3) : "rcx", "r11", "memory");
-	return ret;
+static __inline long __syscall3(long n, long a1, long a2, long a3) {
+  unsigned long ret;
+  __asm__ __volatile__("syscall"
+                       : "=a"(ret)
+                       : "a"(n), "D"(a1), "S"(a2), "d"(a3)
+                       : "rcx", "r11", "memory");
+  return ret;
 }
 
-static __inline long __syscall4(long n, long a1, long a2, long a3, long a4)
-{
-	unsigned long ret;
-	register long r10 __asm__("r10") = a4;
-	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
-						  "d"(a3), "r"(r10): "rcx", "r11", "memory");
-	return ret;
+static __inline long __syscall4(long n, long a1, long a2, long a3, long a4) {
+  unsigned long ret;
+  register long r10 __asm__("r10") = a4;
+  __asm__ __volatile__("syscall"
+                       : "=a"(ret)
+                       : "a"(n), "D"(a1), "S"(a2), "d"(a3), "r"(r10)
+                       : "rcx", "r11", "memory");
+  return ret;
 }
 
-static __inline long __syscall5(long n, long a1, long a2, long a3, long a4, long a5)
-{
-	unsigned long ret;
-	register long r10 __asm__("r10") = a4;
-	register long r8 __asm__("r8") = a5;
-	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
-						  "d"(a3), "r"(r10), "r"(r8) : "rcx", "r11", "memory");
-	return ret;
+static __inline long __syscall5(long n,
+                                long a1,
+                                long a2,
+                                long a3,
+                                long a4,
+                                long a5) {
+  unsigned long ret;
+  register long r10 __asm__("r10") = a4;
+  register long r8 __asm__("r8") = a5;
+  __asm__ __volatile__("syscall"
+                       : "=a"(ret)
+                       : "a"(n), "D"(a1), "S"(a2), "d"(a3), "r"(r10), "r"(r8)
+                       : "rcx", "r11", "memory");
+  return ret;
 }
 
-static __inline long __syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6)
-{
-	unsigned long ret;
-	register long r10 __asm__("r10") = a4;
-	register long r8 __asm__("r8") = a5;
-	register long r9 __asm__("r9") = a6;
-	__asm__ __volatile__ ("syscall" : "=a"(ret) : "a"(n), "D"(a1), "S"(a2),
-						  "d"(a3), "r"(r10), "r"(r8), "r"(r9) : "rcx", "r11", "memory");
-	return ret;
+static __inline long
+__syscall6(long n, long a1, long a2, long a3, long a4, long a5, long a6) {
+  unsigned long ret;
+  register long r10 __asm__("r10") = a4;
+  register long r8 __asm__("r8") = a5;
+  register long r9 __asm__("r9") = a6;
+  __asm__ __volatile__("syscall"
+                       : "=a"(ret)
+                       : "a"(n), "D"(a1), "S"(a2), "d"(a3), "r"(r10), "r"(r8),
+                         "r"(r9)
+                       : "rcx", "r11", "memory");
+  return ret;
 }
 
 #define VDSO_USEFUL
diff --git a/fusl/crt/crt1.c b/fusl/crt/crt1.c
index af02af9..71293d8 100644
--- a/fusl/crt/crt1.c
+++ b/fusl/crt/crt1.c
@@ -7,12 +7,15 @@
 int main();
 void _init() __attribute__((weak));
 void _fini() __attribute__((weak));
-_Noreturn int __libc_start_main(int (*)(), int, char **,
-	void (*)(), void(*)(), void(*)());
+_Noreturn int __libc_start_main(int (*)(),
+                                int,
+                                char**,
+                                void (*)(),
+                                void (*)(),
+                                void (*)());
 
-void _start_c(long *p)
-{
-	int argc = p[0];
-	char **argv = (void *)(p+1);
-	__libc_start_main(main, argc, argv, _init, _fini, 0);
+void _start_c(long* p) {
+  int argc = p[0];
+  char** argv = (void*)(p + 1);
+  __libc_start_main(main, argc, argv, _init, _fini, 0);
 }
diff --git a/fusl/crt/rcrt1.c b/fusl/crt/rcrt1.c
index e763d0a..0950760 100644
--- a/fusl/crt/rcrt1.c
+++ b/fusl/crt/rcrt1.c
@@ -6,11 +6,15 @@
 int main();
 void _init() __attribute__((weak));
 void _fini() __attribute__((weak));
-_Noreturn int __libc_start_main(int (*)(), int, char **,
-	void (*)(), void(*)(), void(*)());
+_Noreturn int __libc_start_main(int (*)(),
+                                int,
+                                char**,
+                                void (*)(),
+                                void (*)(),
+                                void (*)());
 
-__attribute__((__visibility__("hidden")))
-_Noreturn void __dls2(unsigned char *base, size_t *sp)
-{
-	__libc_start_main(main, *sp, (void *)(sp+1), _init, _fini, 0);
+__attribute__((__visibility__("hidden"))) _Noreturn void __dls2(
+    unsigned char* base,
+    size_t* sp) {
+  __libc_start_main(main, *sp, (void*)(sp + 1), _init, _fini, 0);
 }
diff --git a/fusl/include/aio.h b/fusl/include/aio.h
index 19bc28a..8b4dc07 100644
--- a/fusl/include/aio.h
+++ b/fusl/include/aio.h
@@ -15,17 +15,17 @@
 #include <bits/alltypes.h>
 
 struct aiocb {
-	int aio_fildes, aio_lio_opcode, aio_reqprio;
-	volatile void *aio_buf;
-	size_t aio_nbytes;
-	struct sigevent aio_sigevent;
-	void *__td;
-	int __lock[2];
-	volatile int __err;
-	ssize_t __ret;
-	off_t aio_offset;
-	void *__next, *__prev;
-	char __dummy4[32-2*sizeof(void *)];
+  int aio_fildes, aio_lio_opcode, aio_reqprio;
+  volatile void* aio_buf;
+  size_t aio_nbytes;
+  struct sigevent aio_sigevent;
+  void* __td;
+  int __lock[2];
+  volatile int __err;
+  ssize_t __ret;
+  off_t aio_offset;
+  void *__next, *__prev;
+  char __dummy4[32 - 2 * sizeof(void*)];
 };
 
 #define AIO_CANCELED 0
@@ -39,15 +39,18 @@
 #define LIO_WAIT 0
 #define LIO_NOWAIT 1
 
-int aio_read(struct aiocb *);
-int aio_write(struct aiocb *);
-int aio_error(const struct aiocb *);
-ssize_t aio_return(struct aiocb *);
-int aio_cancel(int, struct aiocb *);
-int aio_suspend(const struct aiocb *const [], int, const struct timespec *);
-int aio_fsync(int, struct aiocb *);
+int aio_read(struct aiocb*);
+int aio_write(struct aiocb*);
+int aio_error(const struct aiocb*);
+ssize_t aio_return(struct aiocb*);
+int aio_cancel(int, struct aiocb*);
+int aio_suspend(const struct aiocb* const[], int, const struct timespec*);
+int aio_fsync(int, struct aiocb*);
 
-int lio_listio(int, struct aiocb *__restrict const *__restrict, int, struct sigevent *__restrict);
+int lio_listio(int,
+               struct aiocb* __restrict const* __restrict,
+               int,
+               struct sigevent* __restrict);
 
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
 #define aiocb64 aiocb
diff --git a/fusl/include/alloca.h b/fusl/include/alloca.h
index d2e6f1c..8dfb52e 100644
--- a/fusl/include/alloca.h
+++ b/fusl/include/alloca.h
@@ -1,14 +1,14 @@
-#ifndef	_ALLOCA_H
-#define	_ALLOCA_H
+#ifndef _ALLOCA_H
+#define _ALLOCA_H
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#define	__NEED_size_t
+#define __NEED_size_t
 #include <bits/alltypes.h>
 
-void *alloca(size_t);
+void* alloca(size_t);
 
 #ifdef __GNUC__
 #define alloca __builtin_alloca
diff --git a/fusl/include/ar.h b/fusl/include/ar.h
index eafd51d..fe99b21 100644
--- a/fusl/include/ar.h
+++ b/fusl/include/ar.h
@@ -10,12 +10,12 @@
 #define ARFMAG "`\n"
 
 struct ar_hdr {
-	char ar_name[16];
-	char ar_date[12];
-	char ar_uid[6], ar_gid[6];
-	char ar_mode[8];
-	char ar_size[10];
-	char ar_fmag[2];
+  char ar_name[16];
+  char ar_date[12];
+  char ar_uid[6], ar_gid[6];
+  char ar_mode[8];
+  char ar_size[10];
+  char ar_fmag[2];
 };
 
 #ifdef __cplusplus
diff --git a/fusl/include/arpa/ftp.h b/fusl/include/arpa/ftp.h
index fb0a46f..19e9f94 100644
--- a/fusl/include/arpa/ftp.h
+++ b/fusl/include/arpa/ftp.h
@@ -27,9 +27,9 @@
 #define BLK_RESTART 0x10
 #define BLK_BYTECOUNT 2
 #ifdef FTP_NAMES
-char *modenames[] =  {"0", "Stream", "Block", "Compressed" };
-char *strunames[] =  {"0", "File", "Record", "Page" };
-char *typenames[] =  {"0", "ASCII", "EBCDIC", "Image", "Local" };
-char *formnames[] =  {"0", "Nonprint", "Telnet", "Carriage-control" };
+char* modenames[] = {"0", "Stream", "Block", "Compressed"};
+char* strunames[] = {"0", "File", "Record", "Page"};
+char* typenames[] = {"0", "ASCII", "EBCDIC", "Image", "Local"};
+char* formnames[] = {"0", "Nonprint", "Telnet", "Carriage-control"};
 #endif
 #endif
diff --git a/fusl/include/arpa/inet.h b/fusl/include/arpa/inet.h
index 37f8c11..8edb63e 100644
--- a/fusl/include/arpa/inet.h
+++ b/fusl/include/arpa/inet.h
@@ -1,5 +1,5 @@
 #ifndef _ARPA_INET_H
-#define	_ARPA_INET_H
+#define _ARPA_INET_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -13,20 +13,20 @@
 uint32_t ntohl(uint32_t);
 uint16_t ntohs(uint16_t);
 
-in_addr_t inet_addr (const char *);
-in_addr_t inet_network (const char *);
-char *inet_ntoa (struct in_addr);
-int inet_pton (int, const char *__restrict, void *__restrict);
-const char *inet_ntop (int, const void *__restrict, char *__restrict, socklen_t);
+in_addr_t inet_addr(const char*);
+in_addr_t inet_network(const char*);
+char* inet_ntoa(struct in_addr);
+int inet_pton(int, const char* __restrict, void* __restrict);
+const char* inet_ntop(int, const void* __restrict, char* __restrict, socklen_t);
 
-int inet_aton (const char *, struct in_addr *);
+int inet_aton(const char*, struct in_addr*);
 struct in_addr inet_makeaddr(in_addr_t, in_addr_t);
 in_addr_t inet_lnaof(struct in_addr);
 in_addr_t inet_netof(struct in_addr);
 
 #undef INET_ADDRSTRLEN
 #undef INET6_ADDRSTRLEN
-#define INET_ADDRSTRLEN  16
+#define INET_ADDRSTRLEN 16
 #define INET6_ADDRSTRLEN 46
 
 #ifdef __cplusplus
diff --git a/fusl/include/arpa/nameser.h b/fusl/include/arpa/nameser.h
index 581925a..1182a0d 100644
--- a/fusl/include/arpa/nameser.h
+++ b/fusl/include/arpa/nameser.h
@@ -8,44 +8,46 @@
 #include <stddef.h>
 #include <stdint.h>
 
-#define __NAMESER	19991006
-#define NS_PACKETSZ	512
-#define NS_MAXDNAME	1025
-#define NS_MAXMSG	65535
-#define NS_MAXCDNAME	255
-#define NS_MAXLABEL	63
-#define NS_HFIXEDSZ	12
-#define NS_QFIXEDSZ	4
-#define NS_RRFIXEDSZ	10
-#define NS_INT32SZ	4
-#define NS_INT16SZ	2
-#define NS_INT8SZ	1
-#define NS_INADDRSZ	4
-#define NS_IN6ADDRSZ	16
-#define NS_CMPRSFLGS	0xc0
-#define NS_DEFAULTPORT	53
+#define __NAMESER 19991006
+#define NS_PACKETSZ 512
+#define NS_MAXDNAME 1025
+#define NS_MAXMSG 65535
+#define NS_MAXCDNAME 255
+#define NS_MAXLABEL 63
+#define NS_HFIXEDSZ 12
+#define NS_QFIXEDSZ 4
+#define NS_RRFIXEDSZ 10
+#define NS_INT32SZ 4
+#define NS_INT16SZ 2
+#define NS_INT8SZ 1
+#define NS_INADDRSZ 4
+#define NS_IN6ADDRSZ 16
+#define NS_CMPRSFLGS 0xc0
+#define NS_DEFAULTPORT 53
 
 typedef enum __ns_sect {
-	ns_s_qd = 0,
-	ns_s_zn = 0,
-	ns_s_an = 1,
-	ns_s_pr = 1,
-	ns_s_ns = 2,
-	ns_s_ud = 2,
-	ns_s_ar = 3,
-	ns_s_max = 4
+  ns_s_qd = 0,
+  ns_s_zn = 0,
+  ns_s_an = 1,
+  ns_s_pr = 1,
+  ns_s_ns = 2,
+  ns_s_ud = 2,
+  ns_s_ar = 3,
+  ns_s_max = 4
 } ns_sect;
 
 typedef struct __ns_msg {
-	const unsigned char *_msg, *_eom;
-	uint16_t _id, _flags, _counts[ns_s_max];
-	const unsigned char *_sections[ns_s_max];
-	ns_sect _sect;
-	int _rrnum;
-	const unsigned char *_msg_ptr;
+  const unsigned char *_msg, *_eom;
+  uint16_t _id, _flags, _counts[ns_s_max];
+  const unsigned char* _sections[ns_s_max];
+  ns_sect _sect;
+  int _rrnum;
+  const unsigned char* _msg_ptr;
 } ns_msg;
 
-struct _ns_flagdata {  int mask, shift;  };
+struct _ns_flagdata {
+  int mask, shift;
+};
 extern const struct _ns_flagdata _ns_flagdata[];
 
 #define ns_msg_id(handle) ((handle)._id + 0)
@@ -54,85 +56,85 @@
 #define ns_msg_size(handle) ((handle)._eom - (handle)._msg)
 #define ns_msg_count(handle, section) ((handle)._counts[section] + 0)
 #define ns_msg_getflag(handle, flag) \
-	(((handle)._flags & _ns_flagdata[flag].mask) >> _ns_flagdata[flag].shift)
+  (((handle)._flags & _ns_flagdata[flag].mask) >> _ns_flagdata[flag].shift)
 
-typedef	struct __ns_rr {
-	char		name[NS_MAXDNAME];
-	uint16_t	type;
-	uint16_t	rr_class;
-	uint32_t	ttl;
-	uint16_t	rdlength;
-	const unsigned char *rdata;
+typedef struct __ns_rr {
+  char name[NS_MAXDNAME];
+  uint16_t type;
+  uint16_t rr_class;
+  uint32_t ttl;
+  uint16_t rdlength;
+  const unsigned char* rdata;
 } ns_rr;
 
-#define ns_rr_name(rr)	(((rr).name[0] != '\0') ? (rr).name : ".")
-#define ns_rr_type(rr)	((ns_type)((rr).type + 0))
-#define ns_rr_class(rr)	((ns_class)((rr).rr_class + 0))
-#define ns_rr_ttl(rr)	((rr).ttl + 0)
-#define ns_rr_rdlen(rr)	((rr).rdlength + 0)
-#define ns_rr_rdata(rr)	((rr).rdata + 0)
+#define ns_rr_name(rr) (((rr).name[0] != '\0') ? (rr).name : ".")
+#define ns_rr_type(rr) ((ns_type)((rr).type + 0))
+#define ns_rr_class(rr) ((ns_class)((rr).rr_class + 0))
+#define ns_rr_ttl(rr) ((rr).ttl + 0)
+#define ns_rr_rdlen(rr) ((rr).rdlength + 0)
+#define ns_rr_rdata(rr) ((rr).rdata + 0)
 
 typedef enum __ns_flag {
-	ns_f_qr,
-	ns_f_opcode,
-	ns_f_aa,
-	ns_f_tc,
-	ns_f_rd,
-	ns_f_ra,
-	ns_f_z,
-	ns_f_ad,
-	ns_f_cd,
-	ns_f_rcode,
-	ns_f_max
+  ns_f_qr,
+  ns_f_opcode,
+  ns_f_aa,
+  ns_f_tc,
+  ns_f_rd,
+  ns_f_ra,
+  ns_f_z,
+  ns_f_ad,
+  ns_f_cd,
+  ns_f_rcode,
+  ns_f_max
 } ns_flag;
 
 typedef enum __ns_opcode {
-	ns_o_query = 0,
-	ns_o_iquery = 1,
-	ns_o_status = 2,
-	ns_o_notify = 4,
-	ns_o_update = 5,
-	ns_o_max = 6
+  ns_o_query = 0,
+  ns_o_iquery = 1,
+  ns_o_status = 2,
+  ns_o_notify = 4,
+  ns_o_update = 5,
+  ns_o_max = 6
 } ns_opcode;
 
-typedef	enum __ns_rcode {
-	ns_r_noerror = 0,
-	ns_r_formerr = 1,
-	ns_r_servfail = 2,
-	ns_r_nxdomain = 3,
-	ns_r_notimpl = 4,
-	ns_r_refused = 5,
-	ns_r_yxdomain = 6,
-	ns_r_yxrrset = 7,
-	ns_r_nxrrset = 8,
-	ns_r_notauth = 9,
-	ns_r_notzone = 10,
-	ns_r_max = 11,
-	ns_r_badvers = 16,
-	ns_r_badsig = 16,
-	ns_r_badkey = 17,
-	ns_r_badtime = 18
+typedef enum __ns_rcode {
+  ns_r_noerror = 0,
+  ns_r_formerr = 1,
+  ns_r_servfail = 2,
+  ns_r_nxdomain = 3,
+  ns_r_notimpl = 4,
+  ns_r_refused = 5,
+  ns_r_yxdomain = 6,
+  ns_r_yxrrset = 7,
+  ns_r_nxrrset = 8,
+  ns_r_notauth = 9,
+  ns_r_notzone = 10,
+  ns_r_max = 11,
+  ns_r_badvers = 16,
+  ns_r_badsig = 16,
+  ns_r_badkey = 17,
+  ns_r_badtime = 18
 } ns_rcode;
 
 typedef enum __ns_update_operation {
-	ns_uop_delete = 0,
-	ns_uop_add = 1,
-	ns_uop_max = 2
+  ns_uop_delete = 0,
+  ns_uop_add = 1,
+  ns_uop_max = 2
 } ns_update_operation;
 
 struct ns_tsig_key {
-        char name[NS_MAXDNAME], alg[NS_MAXDNAME];
-        unsigned char *data;
-        int len;
+  char name[NS_MAXDNAME], alg[NS_MAXDNAME];
+  unsigned char* data;
+  int len;
 };
 typedef struct ns_tsig_key ns_tsig_key;
 
 struct ns_tcp_tsig_state {
-	int counter;
-	struct dst_key *key;
-	void *ctx;
-	unsigned char sig[NS_PACKETSZ];
-	int siglen;
+  int counter;
+  struct dst_key* key;
+  void* ctx;
+  unsigned char sig[NS_PACKETSZ];
+  int siglen;
 };
 typedef struct ns_tcp_tsig_state ns_tcp_tsig_state;
 
@@ -145,308 +147,309 @@
 #define NS_TSIG_ERROR_FORMERR -12
 
 typedef enum __ns_type {
-	ns_t_invalid = 0,
-	ns_t_a = 1,
-	ns_t_ns = 2,
-	ns_t_md = 3,
-	ns_t_mf = 4,
-	ns_t_cname = 5,
-	ns_t_soa = 6,
-	ns_t_mb = 7,
-	ns_t_mg = 8,
-	ns_t_mr = 9,
-	ns_t_null = 10,
-	ns_t_wks = 11,
-	ns_t_ptr = 12,
-	ns_t_hinfo = 13,
-	ns_t_minfo = 14,
-	ns_t_mx = 15,
-	ns_t_txt = 16,
-	ns_t_rp = 17,
-	ns_t_afsdb = 18,
-	ns_t_x25 = 19,
-	ns_t_isdn = 20,
-	ns_t_rt = 21,
-	ns_t_nsap = 22,
-	ns_t_nsap_ptr = 23,
-	ns_t_sig = 24,
-	ns_t_key = 25,
-	ns_t_px = 26,
-	ns_t_gpos = 27,
-	ns_t_aaaa = 28,
-	ns_t_loc = 29,
-	ns_t_nxt = 30,
-	ns_t_eid = 31,
-	ns_t_nimloc = 32,
-	ns_t_srv = 33,
-	ns_t_atma = 34,
-	ns_t_naptr = 35,
-	ns_t_kx = 36,
-	ns_t_cert = 37,
-	ns_t_a6 = 38,
-	ns_t_dname = 39,
-	ns_t_sink = 40,
-	ns_t_opt = 41,
-	ns_t_apl = 42,
-	ns_t_tkey = 249,
-	ns_t_tsig = 250,
-	ns_t_ixfr = 251,
-	ns_t_axfr = 252,
-	ns_t_mailb = 253,
-	ns_t_maila = 254,
-	ns_t_any = 255,
-	ns_t_zxfr = 256,
-	ns_t_max = 65536
+  ns_t_invalid = 0,
+  ns_t_a = 1,
+  ns_t_ns = 2,
+  ns_t_md = 3,
+  ns_t_mf = 4,
+  ns_t_cname = 5,
+  ns_t_soa = 6,
+  ns_t_mb = 7,
+  ns_t_mg = 8,
+  ns_t_mr = 9,
+  ns_t_null = 10,
+  ns_t_wks = 11,
+  ns_t_ptr = 12,
+  ns_t_hinfo = 13,
+  ns_t_minfo = 14,
+  ns_t_mx = 15,
+  ns_t_txt = 16,
+  ns_t_rp = 17,
+  ns_t_afsdb = 18,
+  ns_t_x25 = 19,
+  ns_t_isdn = 20,
+  ns_t_rt = 21,
+  ns_t_nsap = 22,
+  ns_t_nsap_ptr = 23,
+  ns_t_sig = 24,
+  ns_t_key = 25,
+  ns_t_px = 26,
+  ns_t_gpos = 27,
+  ns_t_aaaa = 28,
+  ns_t_loc = 29,
+  ns_t_nxt = 30,
+  ns_t_eid = 31,
+  ns_t_nimloc = 32,
+  ns_t_srv = 33,
+  ns_t_atma = 34,
+  ns_t_naptr = 35,
+  ns_t_kx = 36,
+  ns_t_cert = 37,
+  ns_t_a6 = 38,
+  ns_t_dname = 39,
+  ns_t_sink = 40,
+  ns_t_opt = 41,
+  ns_t_apl = 42,
+  ns_t_tkey = 249,
+  ns_t_tsig = 250,
+  ns_t_ixfr = 251,
+  ns_t_axfr = 252,
+  ns_t_mailb = 253,
+  ns_t_maila = 254,
+  ns_t_any = 255,
+  ns_t_zxfr = 256,
+  ns_t_max = 65536
 } ns_type;
 
-#define	ns_t_qt_p(t) (ns_t_xfr_p(t) || (t) == ns_t_any || \
-		      (t) == ns_t_mailb || (t) == ns_t_maila)
-#define	ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt)
+#define ns_t_qt_p(t) \
+  (ns_t_xfr_p(t) || (t) == ns_t_any || (t) == ns_t_mailb || (t) == ns_t_maila)
+#define ns_t_mrr_p(t) ((t) == ns_t_tsig || (t) == ns_t_opt)
 #define ns_t_rr_p(t) (!ns_t_qt_p(t) && !ns_t_mrr_p(t))
 #define ns_t_udp_p(t) ((t) != ns_t_axfr && (t) != ns_t_zxfr)
-#define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || \
-		       (t) == ns_t_zxfr)
+#define ns_t_xfr_p(t) ((t) == ns_t_axfr || (t) == ns_t_ixfr || (t) == ns_t_zxfr)
 
 typedef enum __ns_class {
-	ns_c_invalid = 0,
-	ns_c_in = 1,
-	ns_c_2 = 2,
-	ns_c_chaos = 3,
-	ns_c_hs = 4,
-	ns_c_none = 254,
-	ns_c_any = 255,
-	ns_c_max = 65536
+  ns_c_invalid = 0,
+  ns_c_in = 1,
+  ns_c_2 = 2,
+  ns_c_chaos = 3,
+  ns_c_hs = 4,
+  ns_c_none = 254,
+  ns_c_any = 255,
+  ns_c_max = 65536
 } ns_class;
 
 typedef enum __ns_key_types {
-	ns_kt_rsa = 1,
-	ns_kt_dh  = 2,
-	ns_kt_dsa = 3,
-	ns_kt_private = 254
+  ns_kt_rsa = 1,
+  ns_kt_dh = 2,
+  ns_kt_dsa = 3,
+  ns_kt_private = 254
 } ns_key_types;
 
 typedef enum __ns_cert_types {
-	cert_t_pkix = 1,
-	cert_t_spki = 2,
-	cert_t_pgp  = 3,
-	cert_t_url  = 253,
-	cert_t_oid  = 254
+  cert_t_pkix = 1,
+  cert_t_spki = 2,
+  cert_t_pgp = 3,
+  cert_t_url = 253,
+  cert_t_oid = 254
 } ns_cert_types;
 
-#define	NS_KEY_TYPEMASK		0xC000
-#define	NS_KEY_TYPE_AUTH_CONF	0x0000
-#define	NS_KEY_TYPE_CONF_ONLY	0x8000
-#define	NS_KEY_TYPE_AUTH_ONLY	0x4000
-#define	NS_KEY_TYPE_NO_KEY	0xC000
-#define	NS_KEY_NO_AUTH		0x8000
-#define	NS_KEY_NO_CONF		0x4000
-#define	NS_KEY_RESERVED2	0x2000
-#define	NS_KEY_EXTENDED_FLAGS	0x1000
-#define	NS_KEY_RESERVED4	0x0800
-#define	NS_KEY_RESERVED5	0x0400
-#define	NS_KEY_NAME_TYPE	0x0300
-#define	NS_KEY_NAME_USER	0x0000
-#define	NS_KEY_NAME_ENTITY	0x0200
-#define	NS_KEY_NAME_ZONE	0x0100
-#define	NS_KEY_NAME_RESERVED	0x0300
-#define	NS_KEY_RESERVED8	0x0080
-#define	NS_KEY_RESERVED9	0x0040
-#define	NS_KEY_RESERVED10	0x0020
-#define	NS_KEY_RESERVED11	0x0010
-#define	NS_KEY_SIGNATORYMASK	0x000F
-#define	NS_KEY_RESERVED_BITMASK ( NS_KEY_RESERVED2 | \
-				  NS_KEY_RESERVED4 | \
-				  NS_KEY_RESERVED5 | \
-				  NS_KEY_RESERVED8 | \
-				  NS_KEY_RESERVED9 | \
-				  NS_KEY_RESERVED10 | \
-				  NS_KEY_RESERVED11 )
+#define NS_KEY_TYPEMASK 0xC000
+#define NS_KEY_TYPE_AUTH_CONF 0x0000
+#define NS_KEY_TYPE_CONF_ONLY 0x8000
+#define NS_KEY_TYPE_AUTH_ONLY 0x4000
+#define NS_KEY_TYPE_NO_KEY 0xC000
+#define NS_KEY_NO_AUTH 0x8000
+#define NS_KEY_NO_CONF 0x4000
+#define NS_KEY_RESERVED2 0x2000
+#define NS_KEY_EXTENDED_FLAGS 0x1000
+#define NS_KEY_RESERVED4 0x0800
+#define NS_KEY_RESERVED5 0x0400
+#define NS_KEY_NAME_TYPE 0x0300
+#define NS_KEY_NAME_USER 0x0000
+#define NS_KEY_NAME_ENTITY 0x0200
+#define NS_KEY_NAME_ZONE 0x0100
+#define NS_KEY_NAME_RESERVED 0x0300
+#define NS_KEY_RESERVED8 0x0080
+#define NS_KEY_RESERVED9 0x0040
+#define NS_KEY_RESERVED10 0x0020
+#define NS_KEY_RESERVED11 0x0010
+#define NS_KEY_SIGNATORYMASK 0x000F
+#define NS_KEY_RESERVED_BITMASK                                                \
+  (NS_KEY_RESERVED2 | NS_KEY_RESERVED4 | NS_KEY_RESERVED5 | NS_KEY_RESERVED8 | \
+   NS_KEY_RESERVED9 | NS_KEY_RESERVED10 | NS_KEY_RESERVED11)
 #define NS_KEY_RESERVED_BITMASK2 0xFFFF
-#define	NS_ALG_MD5RSA		1
-#define	NS_ALG_DH               2
-#define	NS_ALG_DSA              3
-#define	NS_ALG_DSS              NS_ALG_DSA
-#define	NS_ALG_EXPIRE_ONLY	253
-#define	NS_ALG_PRIVATE_OID	254
+#define NS_ALG_MD5RSA 1
+#define NS_ALG_DH 2
+#define NS_ALG_DSA 3
+#define NS_ALG_DSS NS_ALG_DSA
+#define NS_ALG_EXPIRE_ONLY 253
+#define NS_ALG_PRIVATE_OID 254
 
-#define NS_KEY_PROT_TLS         1
-#define NS_KEY_PROT_EMAIL       2
-#define NS_KEY_PROT_DNSSEC      3
-#define NS_KEY_PROT_IPSEC       4
-#define NS_KEY_PROT_ANY		255
+#define NS_KEY_PROT_TLS 1
+#define NS_KEY_PROT_EMAIL 2
+#define NS_KEY_PROT_DNSSEC 3
+#define NS_KEY_PROT_IPSEC 4
+#define NS_KEY_PROT_ANY 255
 
-#define	NS_MD5RSA_MIN_BITS	 512
-#define	NS_MD5RSA_MAX_BITS	4096
-#define	NS_MD5RSA_MAX_BYTES	((NS_MD5RSA_MAX_BITS+7/8)*2+3)
-#define	NS_MD5RSA_MAX_BASE64	(((NS_MD5RSA_MAX_BYTES+2)/3)*4)
-#define NS_MD5RSA_MIN_SIZE	((NS_MD5RSA_MIN_BITS+7)/8)
-#define NS_MD5RSA_MAX_SIZE	((NS_MD5RSA_MAX_BITS+7)/8)
+#define NS_MD5RSA_MIN_BITS 512
+#define NS_MD5RSA_MAX_BITS 4096
+#define NS_MD5RSA_MAX_BYTES ((NS_MD5RSA_MAX_BITS + 7 / 8) * 2 + 3)
+#define NS_MD5RSA_MAX_BASE64 (((NS_MD5RSA_MAX_BYTES + 2) / 3) * 4)
+#define NS_MD5RSA_MIN_SIZE ((NS_MD5RSA_MIN_BITS + 7) / 8)
+#define NS_MD5RSA_MAX_SIZE ((NS_MD5RSA_MAX_BITS + 7) / 8)
 
-#define NS_DSA_SIG_SIZE         41
-#define NS_DSA_MIN_SIZE         213
-#define NS_DSA_MAX_BYTES        405
+#define NS_DSA_SIG_SIZE 41
+#define NS_DSA_MIN_SIZE 213
+#define NS_DSA_MAX_BYTES 405
 
-#define	NS_SIG_TYPE	0
-#define	NS_SIG_ALG	2
-#define	NS_SIG_LABELS	3
-#define	NS_SIG_OTTL	4
-#define	NS_SIG_EXPIR	8
-#define	NS_SIG_SIGNED	12
-#define	NS_SIG_FOOT	16
-#define	NS_SIG_SIGNER	18
-#define	NS_NXT_BITS 8
-#define	NS_NXT_BIT_SET(  n,p) (p[(n)/NS_NXT_BITS] |=  (0x80>>((n)%NS_NXT_BITS)))
-#define	NS_NXT_BIT_CLEAR(n,p) (p[(n)/NS_NXT_BITS] &= ~(0x80>>((n)%NS_NXT_BITS)))
-#define	NS_NXT_BIT_ISSET(n,p) (p[(n)/NS_NXT_BITS] &   (0x80>>((n)%NS_NXT_BITS)))
+#define NS_SIG_TYPE 0
+#define NS_SIG_ALG 2
+#define NS_SIG_LABELS 3
+#define NS_SIG_OTTL 4
+#define NS_SIG_EXPIR 8
+#define NS_SIG_SIGNED 12
+#define NS_SIG_FOOT 16
+#define NS_SIG_SIGNER 18
+#define NS_NXT_BITS 8
+#define NS_NXT_BIT_SET(n, p) \
+  (p[(n) / NS_NXT_BITS] |= (0x80 >> ((n) % NS_NXT_BITS)))
+#define NS_NXT_BIT_CLEAR(n, p) \
+  (p[(n) / NS_NXT_BITS] &= ~(0x80 >> ((n) % NS_NXT_BITS)))
+#define NS_NXT_BIT_ISSET(n, p) \
+  (p[(n) / NS_NXT_BITS] & (0x80 >> ((n) % NS_NXT_BITS)))
 #define NS_NXT_MAX 127
 
-#define NS_OPT_DNSSEC_OK        0x8000U
-#define NS_OPT_NSID		3
+#define NS_OPT_DNSSEC_OK 0x8000U
+#define NS_OPT_NSID 3
 
-#define NS_GET16(s, cp) (void)((s) = ns_get16(((cp)+=2)-2))
-#define NS_GET32(l, cp) (void)((l) = ns_get32(((cp)+=4)-4))
-#define NS_PUT16(s, cp) ns_put16((s), ((cp)+=2)-2)
-#define NS_PUT32(l, cp) ns_put32((l), ((cp)+=4)-4)
+#define NS_GET16(s, cp) (void)((s) = ns_get16(((cp) += 2) - 2))
+#define NS_GET32(l, cp) (void)((l) = ns_get32(((cp) += 4) - 4))
+#define NS_PUT16(s, cp) ns_put16((s), ((cp) += 2) - 2)
+#define NS_PUT32(l, cp) ns_put32((l), ((cp) += 4) - 4)
 
-unsigned ns_get16(const unsigned char *);
-unsigned long ns_get32(const unsigned char *);
-void ns_put16(unsigned, unsigned char *);
-void ns_put32(unsigned long, unsigned char *);
+unsigned ns_get16(const unsigned char*);
+unsigned long ns_get32(const unsigned char*);
+void ns_put16(unsigned, unsigned char*);
+void ns_put32(unsigned long, unsigned char*);
 
-int ns_initparse(const unsigned char *, int, ns_msg *);
-int ns_parserr(ns_msg *, ns_sect, int, ns_rr *);
-int ns_skiprr(const unsigned char *, const unsigned char *, ns_sect, int);
-int ns_name_uncompress(const unsigned char *, const unsigned char *, const unsigned char *, char *, size_t);
+int ns_initparse(const unsigned char*, int, ns_msg*);
+int ns_parserr(ns_msg*, ns_sect, int, ns_rr*);
+int ns_skiprr(const unsigned char*, const unsigned char*, ns_sect, int);
+int ns_name_uncompress(const unsigned char*,
+                       const unsigned char*,
+                       const unsigned char*,
+                       char*,
+                       size_t);
 
-
-#define	__BIND		19950621
+#define __BIND 19950621
 
 typedef struct {
-	unsigned	id :16;
+  unsigned id : 16;
 #if __BYTE_ORDER == __BIG_ENDIAN
-	unsigned	qr: 1;
-	unsigned	opcode: 4;
-	unsigned	aa: 1;
-	unsigned	tc: 1;
-	unsigned	rd: 1;
-	unsigned	ra: 1;
-	unsigned	unused :1;
-	unsigned	ad: 1;
-	unsigned	cd: 1;
-	unsigned	rcode :4;
+  unsigned qr : 1;
+  unsigned opcode : 4;
+  unsigned aa : 1;
+  unsigned tc : 1;
+  unsigned rd : 1;
+  unsigned ra : 1;
+  unsigned unused : 1;
+  unsigned ad : 1;
+  unsigned cd : 1;
+  unsigned rcode : 4;
 #else
-	unsigned	rd :1;
-	unsigned	tc :1;
-	unsigned	aa :1;
-	unsigned	opcode :4;
-	unsigned	qr :1;
-	unsigned	rcode :4;
-	unsigned	cd: 1;
-	unsigned	ad: 1;
-	unsigned	unused :1;
-	unsigned	ra :1;
+  unsigned rd : 1;
+  unsigned tc : 1;
+  unsigned aa : 1;
+  unsigned opcode : 4;
+  unsigned qr : 1;
+  unsigned rcode : 4;
+  unsigned cd : 1;
+  unsigned ad : 1;
+  unsigned unused : 1;
+  unsigned ra : 1;
 #endif
-	unsigned	qdcount :16;
-	unsigned	ancount :16;
-	unsigned	nscount :16;
-	unsigned	arcount :16;
+  unsigned qdcount : 16;
+  unsigned ancount : 16;
+  unsigned nscount : 16;
+  unsigned arcount : 16;
 } HEADER;
 
-#define PACKETSZ	NS_PACKETSZ
-#define MAXDNAME	NS_MAXDNAME
-#define MAXCDNAME	NS_MAXCDNAME
-#define MAXLABEL	NS_MAXLABEL
-#define	HFIXEDSZ	NS_HFIXEDSZ
-#define QFIXEDSZ	NS_QFIXEDSZ
-#define RRFIXEDSZ	NS_RRFIXEDSZ
-#define	INT32SZ		NS_INT32SZ
-#define	INT16SZ		NS_INT16SZ
-#define INT8SZ		NS_INT8SZ
-#define	INADDRSZ	NS_INADDRSZ
-#define	IN6ADDRSZ	NS_IN6ADDRSZ
-#define	INDIR_MASK	NS_CMPRSFLGS
-#define NAMESERVER_PORT	NS_DEFAULTPORT
+#define PACKETSZ NS_PACKETSZ
+#define MAXDNAME NS_MAXDNAME
+#define MAXCDNAME NS_MAXCDNAME
+#define MAXLABEL NS_MAXLABEL
+#define HFIXEDSZ NS_HFIXEDSZ
+#define QFIXEDSZ NS_QFIXEDSZ
+#define RRFIXEDSZ NS_RRFIXEDSZ
+#define INT32SZ NS_INT32SZ
+#define INT16SZ NS_INT16SZ
+#define INT8SZ NS_INT8SZ
+#define INADDRSZ NS_INADDRSZ
+#define IN6ADDRSZ NS_IN6ADDRSZ
+#define INDIR_MASK NS_CMPRSFLGS
+#define NAMESERVER_PORT NS_DEFAULTPORT
 
-#define S_ZONE		ns_s_zn
-#define S_PREREQ	ns_s_pr
-#define S_UPDATE	ns_s_ud
-#define S_ADDT		ns_s_ar
+#define S_ZONE ns_s_zn
+#define S_PREREQ ns_s_pr
+#define S_UPDATE ns_s_ud
+#define S_ADDT ns_s_ar
 
-#define QUERY		ns_o_query
-#define IQUERY		ns_o_iquery
-#define STATUS		ns_o_status
-#define	NS_NOTIFY_OP	ns_o_notify
-#define	NS_UPDATE_OP	ns_o_update
+#define QUERY ns_o_query
+#define IQUERY ns_o_iquery
+#define STATUS ns_o_status
+#define NS_NOTIFY_OP ns_o_notify
+#define NS_UPDATE_OP ns_o_update
 
-#define NOERROR		ns_r_noerror
-#define FORMERR		ns_r_formerr
-#define SERVFAIL	ns_r_servfail
-#define NXDOMAIN	ns_r_nxdomain
-#define NOTIMP		ns_r_notimpl
-#define REFUSED		ns_r_refused
-#define YXDOMAIN	ns_r_yxdomain
-#define YXRRSET		ns_r_yxrrset
-#define NXRRSET		ns_r_nxrrset
-#define NOTAUTH		ns_r_notauth
-#define NOTZONE		ns_r_notzone
+#define NOERROR ns_r_noerror
+#define FORMERR ns_r_formerr
+#define SERVFAIL ns_r_servfail
+#define NXDOMAIN ns_r_nxdomain
+#define NOTIMP ns_r_notimpl
+#define REFUSED ns_r_refused
+#define YXDOMAIN ns_r_yxdomain
+#define YXRRSET ns_r_yxrrset
+#define NXRRSET ns_r_nxrrset
+#define NOTAUTH ns_r_notauth
+#define NOTZONE ns_r_notzone
 
-#define DELETE		ns_uop_delete
-#define ADD		ns_uop_add
+#define DELETE ns_uop_delete
+#define ADD ns_uop_add
 
-#define T_A		ns_t_a
-#define T_NS		ns_t_ns
-#define T_MD		ns_t_md
-#define T_MF		ns_t_mf
-#define T_CNAME		ns_t_cname
-#define T_SOA		ns_t_soa
-#define T_MB		ns_t_mb
-#define T_MG		ns_t_mg
-#define T_MR		ns_t_mr
-#define T_NULL		ns_t_null
-#define T_WKS		ns_t_wks
-#define T_PTR		ns_t_ptr
-#define T_HINFO		ns_t_hinfo
-#define T_MINFO		ns_t_minfo
-#define T_MX		ns_t_mx
-#define T_TXT		ns_t_txt
-#define	T_RP		ns_t_rp
-#define T_AFSDB		ns_t_afsdb
-#define T_X25		ns_t_x25
-#define T_ISDN		ns_t_isdn
-#define T_RT		ns_t_rt
-#define T_NSAP		ns_t_nsap
-#define T_NSAP_PTR	ns_t_nsap_ptr
-#define	T_SIG		ns_t_sig
-#define	T_KEY		ns_t_key
-#define	T_PX		ns_t_px
-#define	T_GPOS		ns_t_gpos
-#define	T_AAAA		ns_t_aaaa
-#define	T_LOC		ns_t_loc
-#define	T_NXT		ns_t_nxt
-#define	T_EID		ns_t_eid
-#define	T_NIMLOC	ns_t_nimloc
-#define	T_SRV		ns_t_srv
-#define T_ATMA		ns_t_atma
-#define T_NAPTR		ns_t_naptr
-#define T_A6		ns_t_a6
-#define T_DNAME		ns_t_dname
-#define	T_TSIG		ns_t_tsig
-#define	T_IXFR		ns_t_ixfr
-#define T_AXFR		ns_t_axfr
-#define T_MAILB		ns_t_mailb
-#define T_MAILA		ns_t_maila
-#define T_ANY		ns_t_any
+#define T_A ns_t_a
+#define T_NS ns_t_ns
+#define T_MD ns_t_md
+#define T_MF ns_t_mf
+#define T_CNAME ns_t_cname
+#define T_SOA ns_t_soa
+#define T_MB ns_t_mb
+#define T_MG ns_t_mg
+#define T_MR ns_t_mr
+#define T_NULL ns_t_null
+#define T_WKS ns_t_wks
+#define T_PTR ns_t_ptr
+#define T_HINFO ns_t_hinfo
+#define T_MINFO ns_t_minfo
+#define T_MX ns_t_mx
+#define T_TXT ns_t_txt
+#define T_RP ns_t_rp
+#define T_AFSDB ns_t_afsdb
+#define T_X25 ns_t_x25
+#define T_ISDN ns_t_isdn
+#define T_RT ns_t_rt
+#define T_NSAP ns_t_nsap
+#define T_NSAP_PTR ns_t_nsap_ptr
+#define T_SIG ns_t_sig
+#define T_KEY ns_t_key
+#define T_PX ns_t_px
+#define T_GPOS ns_t_gpos
+#define T_AAAA ns_t_aaaa
+#define T_LOC ns_t_loc
+#define T_NXT ns_t_nxt
+#define T_EID ns_t_eid
+#define T_NIMLOC ns_t_nimloc
+#define T_SRV ns_t_srv
+#define T_ATMA ns_t_atma
+#define T_NAPTR ns_t_naptr
+#define T_A6 ns_t_a6
+#define T_DNAME ns_t_dname
+#define T_TSIG ns_t_tsig
+#define T_IXFR ns_t_ixfr
+#define T_AXFR ns_t_axfr
+#define T_MAILB ns_t_mailb
+#define T_MAILA ns_t_maila
+#define T_ANY ns_t_any
 
-#define C_IN		ns_c_in
-#define C_CHAOS		ns_c_chaos
-#define C_HS		ns_c_hs
-#define C_NONE		ns_c_none
-#define C_ANY		ns_c_any
+#define C_IN ns_c_in
+#define C_CHAOS ns_c_chaos
+#define C_HS ns_c_hs
+#define C_NONE ns_c_none
+#define C_ANY ns_c_any
 
-#define	GETSHORT		NS_GET16
-#define	GETLONG			NS_GET32
-#define	PUTSHORT		NS_PUT16
-#define	PUTLONG			NS_PUT32
+#define GETSHORT NS_GET16
+#define GETLONG NS_GET32
+#define PUTSHORT NS_PUT16
+#define PUTLONG NS_PUT32
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/arpa/nameser_compat.h b/fusl/include/arpa/nameser_compat.h
index 3aac25c..ee3b1a9 100644
--- a/fusl/include/arpa/nameser_compat.h
+++ b/fusl/include/arpa/nameser_compat.h
@@ -1,2 +1 @@
 #include <arpa/nameser.h>
-
diff --git a/fusl/include/arpa/telnet.h b/fusl/include/arpa/telnet.h
index e2ad974..aa173a6 100644
--- a/fusl/include/arpa/telnet.h
+++ b/fusl/include/arpa/telnet.h
@@ -1,251 +1,278 @@
 #ifndef _ARPA_TELNET_H
-#define	_ARPA_TELNET_H
+#define _ARPA_TELNET_H
 
-#define	IAC	255
-#define	DONT	254
-#define	DO	253
-#define	WONT	252
-#define	WILL	251
-#define	SB	250
-#define	GA	249
-#define	EL	248
-#define	EC	247
-#define	AYT	246
-#define	AO	245
-#define	IP	244
-#define	BREAK	243
-#define	DM	242
-#define	NOP	241
-#define	SE	240
-#define EOR     239
-#define	ABORT	238
-#define	SUSP	237
-#define	xEOF	236
+#define IAC 255
+#define DONT 254
+#define DO 253
+#define WONT 252
+#define WILL 251
+#define SB 250
+#define GA 249
+#define EL 248
+#define EC 247
+#define AYT 246
+#define AO 245
+#define IP 244
+#define BREAK 243
+#define DM 242
+#define NOP 241
+#define SE 240
+#define EOR 239
+#define ABORT 238
+#define SUSP 237
+#define xEOF 236
 
-#define SYNCH	242
+#define SYNCH 242
 
-#define telcmds ((char [][6]){ "EOF", "SUSP", "ABORT", "EOR", "SE", "NOP", "DMARK", "BRK", "IP", "AO", "AYT", "EC", "EL", "GA", "SB", "WILL", "WONT", "DO", "DONT", "IAC", 0 })
+#define telcmds                                                       \
+  ((char[][6]){"EOF", "SUSP", "ABORT", "EOR", "SE",   "NOP", "DMARK", \
+               "BRK", "IP",   "AO",    "AYT", "EC",   "EL",  "GA",    \
+               "SB",  "WILL", "WONT",  "DO",  "DONT", "IAC", 0})
 
-#define	TELCMD_FIRST	xEOF
-#define	TELCMD_LAST	IAC
-#define	TELCMD_OK(x)	((unsigned int)(x) <= TELCMD_LAST && \
-			 (unsigned int)(x) >= TELCMD_FIRST)
-#define	TELCMD(x)	telcmds[(x)-TELCMD_FIRST]
+#define TELCMD_FIRST xEOF
+#define TELCMD_LAST IAC
+#define TELCMD_OK(x) \
+  ((unsigned int)(x) <= TELCMD_LAST && (unsigned int)(x) >= TELCMD_FIRST)
+#define TELCMD(x) telcmds[(x)-TELCMD_FIRST]
 
-#define TELOPT_BINARY	0
-#define TELOPT_ECHO	1
-#define	TELOPT_RCP	2
-#define	TELOPT_SGA	3
-#define	TELOPT_NAMS	4
-#define	TELOPT_STATUS	5
-#define	TELOPT_TM	6
-#define	TELOPT_RCTE	7
-#define TELOPT_NAOL 	8
-#define TELOPT_NAOP 	9
-#define TELOPT_NAOCRD	10
-#define TELOPT_NAOHTS	11
-#define TELOPT_NAOHTD	12
-#define TELOPT_NAOFFD	13
-#define TELOPT_NAOVTS	14
-#define TELOPT_NAOVTD	15
-#define TELOPT_NAOLFD	16
-#define TELOPT_XASCII	17
-#define	TELOPT_LOGOUT	18
-#define	TELOPT_BM	19
-#define	TELOPT_DET	20
-#define	TELOPT_SUPDUP	21
-#define	TELOPT_SUPDUPOUTPUT 22
-#define	TELOPT_SNDLOC	23
-#define	TELOPT_TTYPE	24
-#define	TELOPT_EOR	25
-#define	TELOPT_TUID	26
-#define	TELOPT_OUTMRK	27
-#define	TELOPT_TTYLOC	28
-#define	TELOPT_3270REGIME 29
-#define	TELOPT_X3PAD	30
-#define	TELOPT_NAWS	31
-#define	TELOPT_TSPEED	32
-#define	TELOPT_LFLOW	33
-#define TELOPT_LINEMODE	34
-#define TELOPT_XDISPLOC	35
+#define TELOPT_BINARY 0
+#define TELOPT_ECHO 1
+#define TELOPT_RCP 2
+#define TELOPT_SGA 3
+#define TELOPT_NAMS 4
+#define TELOPT_STATUS 5
+#define TELOPT_TM 6
+#define TELOPT_RCTE 7
+#define TELOPT_NAOL 8
+#define TELOPT_NAOP 9
+#define TELOPT_NAOCRD 10
+#define TELOPT_NAOHTS 11
+#define TELOPT_NAOHTD 12
+#define TELOPT_NAOFFD 13
+#define TELOPT_NAOVTS 14
+#define TELOPT_NAOVTD 15
+#define TELOPT_NAOLFD 16
+#define TELOPT_XASCII 17
+#define TELOPT_LOGOUT 18
+#define TELOPT_BM 19
+#define TELOPT_DET 20
+#define TELOPT_SUPDUP 21
+#define TELOPT_SUPDUPOUTPUT 22
+#define TELOPT_SNDLOC 23
+#define TELOPT_TTYPE 24
+#define TELOPT_EOR 25
+#define TELOPT_TUID 26
+#define TELOPT_OUTMRK 27
+#define TELOPT_TTYLOC 28
+#define TELOPT_3270REGIME 29
+#define TELOPT_X3PAD 30
+#define TELOPT_NAWS 31
+#define TELOPT_TSPEED 32
+#define TELOPT_LFLOW 33
+#define TELOPT_LINEMODE 34
+#define TELOPT_XDISPLOC 35
 #define TELOPT_OLD_ENVIRON 36
-#define	TELOPT_AUTHENTICATION 37/* Authenticate */
-#define	TELOPT_ENCRYPT	38
+#define TELOPT_AUTHENTICATION 37 /* Authenticate */
+#define TELOPT_ENCRYPT 38
 #define TELOPT_NEW_ENVIRON 39
-#define	TELOPT_EXOPL	255
+#define TELOPT_EXOPL 255
 
-
-#define	NTELOPTS	(1+TELOPT_NEW_ENVIRON)
+#define NTELOPTS (1 + TELOPT_NEW_ENVIRON)
 #ifdef TELOPTS
-char *telopts[NTELOPTS+1] = {
-	"BINARY", "ECHO", "RCP", "SUPPRESS GO AHEAD", "NAME",
-	"STATUS", "TIMING MARK", "RCTE", "NAOL", "NAOP",
-	"NAOCRD", "NAOHTS", "NAOHTD", "NAOFFD", "NAOVTS",
-	"NAOVTD", "NAOLFD", "EXTEND ASCII", "LOGOUT", "BYTE MACRO",
-	"DATA ENTRY TERMINAL", "SUPDUP", "SUPDUP OUTPUT",
-	"SEND LOCATION", "TERMINAL TYPE", "END OF RECORD",
-	"TACACS UID", "OUTPUT MARKING", "TTYLOC",
-	"3270 REGIME", "X.3 PAD", "NAWS", "TSPEED", "LFLOW",
-	"LINEMODE", "XDISPLOC", "OLD-ENVIRON", "AUTHENTICATION",
-	"ENCRYPT", "NEW-ENVIRON",
-	0,
+char* telopts[NTELOPTS + 1] = {
+    "BINARY",
+    "ECHO",
+    "RCP",
+    "SUPPRESS GO AHEAD",
+    "NAME",
+    "STATUS",
+    "TIMING MARK",
+    "RCTE",
+    "NAOL",
+    "NAOP",
+    "NAOCRD",
+    "NAOHTS",
+    "NAOHTD",
+    "NAOFFD",
+    "NAOVTS",
+    "NAOVTD",
+    "NAOLFD",
+    "EXTEND ASCII",
+    "LOGOUT",
+    "BYTE MACRO",
+    "DATA ENTRY TERMINAL",
+    "SUPDUP",
+    "SUPDUP OUTPUT",
+    "SEND LOCATION",
+    "TERMINAL TYPE",
+    "END OF RECORD",
+    "TACACS UID",
+    "OUTPUT MARKING",
+    "TTYLOC",
+    "3270 REGIME",
+    "X.3 PAD",
+    "NAWS",
+    "TSPEED",
+    "LFLOW",
+    "LINEMODE",
+    "XDISPLOC",
+    "OLD-ENVIRON",
+    "AUTHENTICATION",
+    "ENCRYPT",
+    "NEW-ENVIRON",
+    0,
 };
-#define	TELOPT_FIRST	TELOPT_BINARY
-#define	TELOPT_LAST	TELOPT_NEW_ENVIRON
-#define	TELOPT_OK(x)	((unsigned int)(x) <= TELOPT_LAST)
-#define	TELOPT(x)	telopts[(x)-TELOPT_FIRST]
+#define TELOPT_FIRST TELOPT_BINARY
+#define TELOPT_LAST TELOPT_NEW_ENVIRON
+#define TELOPT_OK(x) ((unsigned int)(x) <= TELOPT_LAST)
+#define TELOPT(x) telopts[(x)-TELOPT_FIRST]
 #endif
 
-#define	TELQUAL_IS	0
-#define	TELQUAL_SEND	1
-#define	TELQUAL_INFO	2
-#define	TELQUAL_REPLY	2
-#define	TELQUAL_NAME	3
+#define TELQUAL_IS 0
+#define TELQUAL_SEND 1
+#define TELQUAL_INFO 2
+#define TELQUAL_REPLY 2
+#define TELQUAL_NAME 3
 
-#define	LFLOW_OFF		0
-#define	LFLOW_ON		1
-#define	LFLOW_RESTART_ANY	2
-#define	LFLOW_RESTART_XON	3
+#define LFLOW_OFF 0
+#define LFLOW_ON 1
+#define LFLOW_RESTART_ANY 2
+#define LFLOW_RESTART_XON 3
 
+#define LM_MODE 1
+#define LM_FORWARDMASK 2
+#define LM_SLC 3
 
-#define	LM_MODE		1
-#define	LM_FORWARDMASK	2
-#define	LM_SLC		3
+#define MODE_EDIT 0x01
+#define MODE_TRAPSIG 0x02
+#define MODE_ACK 0x04
+#define MODE_SOFT_TAB 0x08
+#define MODE_LIT_ECHO 0x10
 
-#define	MODE_EDIT	0x01
-#define	MODE_TRAPSIG	0x02
-#define	MODE_ACK	0x04
-#define MODE_SOFT_TAB	0x08
-#define MODE_LIT_ECHO	0x10
+#define MODE_MASK 0x1f
 
-#define	MODE_MASK	0x1f
+#define MODE_FLOW 0x0100
+#define MODE_ECHO 0x0200
+#define MODE_INBIN 0x0400
+#define MODE_OUTBIN 0x0800
+#define MODE_FORCE 0x1000
 
-#define MODE_FLOW		0x0100
-#define MODE_ECHO		0x0200
-#define MODE_INBIN		0x0400
-#define MODE_OUTBIN		0x0800
-#define MODE_FORCE		0x1000
+#define SLC_SYNCH 1
+#define SLC_BRK 2
+#define SLC_IP 3
+#define SLC_AO 4
+#define SLC_AYT 5
+#define SLC_EOR 6
+#define SLC_ABORT 7
+#define SLC_EOF 8
+#define SLC_SUSP 9
+#define SLC_EC 10
+#define SLC_EL 11
+#define SLC_EW 12
+#define SLC_RP 13
+#define SLC_LNEXT 14
+#define SLC_XON 15
+#define SLC_XOFF 16
+#define SLC_FORW1 17
+#define SLC_FORW2 18
 
-#define	SLC_SYNCH	1
-#define	SLC_BRK		2
-#define	SLC_IP		3
-#define	SLC_AO		4
-#define	SLC_AYT		5
-#define	SLC_EOR		6
-#define	SLC_ABORT	7
-#define	SLC_EOF		8
-#define	SLC_SUSP	9
-#define	SLC_EC		10
-#define	SLC_EL		11
-#define	SLC_EW		12
-#define	SLC_RP		13
-#define	SLC_LNEXT	14
-#define	SLC_XON		15
-#define	SLC_XOFF	16
-#define	SLC_FORW1	17
-#define	SLC_FORW2	18
+#define NSLC 18
 
-#define	NSLC		18
+#define SLC_NAMELIST                                                           \
+  "0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", "ABORT", "EOF", "SUSP", "EC", \
+      "EL", "EW", "RP", "LNEXT", "XON", "XOFF", "FORW1", "FORW2", 0,
+#ifdef SLC_NAMES
+char* slc_names[] = {SLC_NAMELIST};
+#else
+extern char* slc_names[];
+#define SLC_NAMES SLC_NAMELIST
+#endif
 
-#define	SLC_NAMELIST	"0", "SYNCH", "BRK", "IP", "AO", "AYT", "EOR", \
-			"ABORT", "EOF", "SUSP", "EC", "EL", "EW", "RP", \
-			"LNEXT", "XON", "XOFF", "FORW1", "FORW2", 0,
-#ifdef	SLC_NAMES
-char *slc_names[] = {
-	SLC_NAMELIST
+#define SLC_NAME_OK(x) ((unsigned int)(x) <= NSLC)
+#define SLC_NAME(x) slc_names[x]
+
+#define SLC_NOSUPPORT 0
+#define SLC_CANTCHANGE 1
+#define SLC_VARIABLE 2
+#define SLC_DEFAULT 3
+#define SLC_LEVELBITS 0x03
+
+#define SLC_FUNC 0
+#define SLC_FLAGS 1
+#define SLC_VALUE 2
+
+#define SLC_ACK 0x80
+#define SLC_FLUSHIN 0x40
+#define SLC_FLUSHOUT 0x20
+
+#define OLD_ENV_VAR 1
+#define OLD_ENV_VALUE 0
+#define NEW_ENV_VAR 0
+#define NEW_ENV_VALUE 1
+#define ENV_ESC 2
+#define ENV_USERVAR 3
+
+#define AUTH_WHO_CLIENT 0
+#define AUTH_WHO_SERVER 1
+#define AUTH_WHO_MASK 1
+
+#define AUTH_HOW_ONE_WAY 0
+#define AUTH_HOW_MUTUAL 2
+#define AUTH_HOW_MASK 2
+
+#define AUTHTYPE_NULL 0
+#define AUTHTYPE_KERBEROS_V4 1
+#define AUTHTYPE_KERBEROS_V5 2
+#define AUTHTYPE_SPX 3
+#define AUTHTYPE_MINK 4
+#define AUTHTYPE_CNT 5
+
+#define AUTHTYPE_TEST 99
+
+#ifdef AUTH_NAMES
+char* authtype_names[] = {
+    "NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0,
 };
 #else
-extern char *slc_names[];
-#define	SLC_NAMES SLC_NAMELIST
+extern char* authtype_names[];
 #endif
 
-#define	SLC_NAME_OK(x)	((unsigned int)(x) <= NSLC)
-#define SLC_NAME(x)	slc_names[x]
+#define AUTHTYPE_NAME_OK(x) ((unsigned int)(x) < AUTHTYPE_CNT)
+#define AUTHTYPE_NAME(x) authtype_names[x]
 
-#define	SLC_NOSUPPORT	0
-#define	SLC_CANTCHANGE	1
-#define	SLC_VARIABLE	2
-#define	SLC_DEFAULT	3
-#define	SLC_LEVELBITS	0x03
+#define ENCRYPT_IS 0
+#define ENCRYPT_SUPPORT 1
+#define ENCRYPT_REPLY 2
+#define ENCRYPT_START 3
+#define ENCRYPT_END 4
+#define ENCRYPT_REQSTART 5
+#define ENCRYPT_REQEND 6
+#define ENCRYPT_ENC_KEYID 7
+#define ENCRYPT_DEC_KEYID 8
+#define ENCRYPT_CNT 9
 
-#define	SLC_FUNC	0
-#define	SLC_FLAGS	1
-#define	SLC_VALUE	2
+#define ENCTYPE_ANY 0
+#define ENCTYPE_DES_CFB64 1
+#define ENCTYPE_DES_OFB64 2
+#define ENCTYPE_CNT 3
 
-#define	SLC_ACK		0x80
-#define	SLC_FLUSHIN	0x40
-#define	SLC_FLUSHOUT	0x20
-
-#define	OLD_ENV_VAR	1
-#define	OLD_ENV_VALUE	0
-#define	NEW_ENV_VAR	0
-#define	NEW_ENV_VALUE	1
-#define	ENV_ESC		2
-#define ENV_USERVAR	3
-
-#define	AUTH_WHO_CLIENT		0
-#define	AUTH_WHO_SERVER		1
-#define	AUTH_WHO_MASK		1
-
-#define	AUTH_HOW_ONE_WAY	0
-#define	AUTH_HOW_MUTUAL		2
-#define	AUTH_HOW_MASK		2
-
-#define	AUTHTYPE_NULL		0
-#define	AUTHTYPE_KERBEROS_V4	1
-#define	AUTHTYPE_KERBEROS_V5	2
-#define	AUTHTYPE_SPX		3
-#define	AUTHTYPE_MINK		4
-#define	AUTHTYPE_CNT		5
-
-#define	AUTHTYPE_TEST		99
-
-#ifdef	AUTH_NAMES
-char *authtype_names[] = {
-	"NULL", "KERBEROS_V4", "KERBEROS_V5", "SPX", "MINK", 0,
+#ifdef ENCRYPT_NAMES
+char* encrypt_names[] = {
+    "IS",          "SUPPORT",   "REPLY",     "START", "END", "REQUEST-START",
+    "REQUEST-END", "ENC-KEYID", "DEC-KEYID", 0,
+};
+char* enctype_names[] = {
+    "ANY", "DES_CFB64", "DES_OFB64", 0,
 };
 #else
-extern char *authtype_names[];
+extern char* encrypt_names[];
+extern char* enctype_names[];
 #endif
 
-#define	AUTHTYPE_NAME_OK(x)	((unsigned int)(x) < AUTHTYPE_CNT)
-#define	AUTHTYPE_NAME(x)	authtype_names[x]
+#define ENCRYPT_NAME_OK(x) ((unsigned int)(x) < ENCRYPT_CNT)
+#define ENCRYPT_NAME(x) encrypt_names[x]
 
-#define	ENCRYPT_IS		0
-#define	ENCRYPT_SUPPORT		1
-#define	ENCRYPT_REPLY		2
-#define	ENCRYPT_START		3
-#define	ENCRYPT_END		4
-#define	ENCRYPT_REQSTART	5
-#define	ENCRYPT_REQEND		6
-#define	ENCRYPT_ENC_KEYID	7
-#define	ENCRYPT_DEC_KEYID	8
-#define	ENCRYPT_CNT		9
-
-#define	ENCTYPE_ANY		0
-#define	ENCTYPE_DES_CFB64	1
-#define	ENCTYPE_DES_OFB64	2
-#define	ENCTYPE_CNT		3
-
-#ifdef	ENCRYPT_NAMES
-char *encrypt_names[] = {
-	"IS", "SUPPORT", "REPLY", "START", "END",
-	"REQUEST-START", "REQUEST-END", "ENC-KEYID", "DEC-KEYID",
-	0,
-};
-char *enctype_names[] = {
-	"ANY", "DES_CFB64",  "DES_OFB64",  0,
-};
-#else
-extern char *encrypt_names[];
-extern char *enctype_names[];
-#endif
-
-
-#define	ENCRYPT_NAME_OK(x)	((unsigned int)(x) < ENCRYPT_CNT)
-#define	ENCRYPT_NAME(x)		encrypt_names[x]
-
-#define	ENCTYPE_NAME_OK(x)	((unsigned int)(x) < ENCTYPE_CNT)
-#define	ENCTYPE_NAME(x)		enctype_names[x]
+#define ENCTYPE_NAME_OK(x) ((unsigned int)(x) < ENCTYPE_CNT)
+#define ENCTYPE_NAME(x) enctype_names[x]
 
 #endif
diff --git a/fusl/include/arpa/tftp.h b/fusl/include/arpa/tftp.h
index 799c54f..12add70 100644
--- a/fusl/include/arpa/tftp.h
+++ b/fusl/include/arpa/tftp.h
@@ -7,13 +7,13 @@
 #define ACK 04
 #define ERROR 05
 struct tftphdr {
-	short th_opcode;
-	union {
-		unsigned short tu_block;
-		short tu_code;
-		char tu_stuff[1];
-	} th_u;
-	char th_data[1];
+  short th_opcode;
+  union {
+    unsigned short tu_block;
+    short tu_code;
+    char tu_stuff[1];
+  } th_u;
+  char th_data[1];
 };
 #define th_block th_u.tu_block
 #define th_code th_u.tu_code
@@ -28,4 +28,3 @@
 #define EEXISTS 6
 #define ENOUSER 7
 #endif
-
diff --git a/fusl/include/assert.h b/fusl/include/assert.h
index e679adb..7d4b3d6 100644
--- a/fusl/include/assert.h
+++ b/fusl/include/assert.h
@@ -3,9 +3,10 @@
 #undef assert
 
 #ifdef NDEBUG
-#define	assert(x) (void)0
+#define assert(x) (void)0
 #else
-#define assert(x) ((void)((x) || (__assert_fail(#x, __FILE__, __LINE__, __func__),0)))
+#define assert(x) \
+  ((void)((x) || (__assert_fail(#x, __FILE__, __LINE__, __func__), 0)))
 #endif
 
 #if __STDC_VERSION__ >= 201112L && !defined(__cplusplus)
@@ -16,7 +17,7 @@
 extern "C" {
 #endif
 
-void __assert_fail (const char *, const char *, int, const char *);
+void __assert_fail(const char*, const char*, int, const char*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/byteswap.h b/fusl/include/byteswap.h
index b0b846f..b3bdea9 100644
--- a/fusl/include/byteswap.h
+++ b/fusl/include/byteswap.h
@@ -4,19 +4,17 @@
 #include <features.h>
 #include <stdint.h>
 
-static __inline uint16_t __bswap_16(uint16_t __x)
-{
-	return __x<<8 | __x>>8;
+static __inline uint16_t __bswap_16(uint16_t __x) {
+  return __x << 8 | __x >> 8;
 }
 
-static __inline uint32_t __bswap_32(uint32_t __x)
-{
-	return __x>>24 | ((__x>>8)&0xff00) | ((__x<<8)&0xff0000) | __x<<24;
+static __inline uint32_t __bswap_32(uint32_t __x) {
+  return __x >> 24 | ((__x >> 8) & 0xff00) | ((__x << 8) & 0xff0000) |
+         __x << 24;
 }
 
-static __inline uint64_t __bswap_64(uint64_t __x)
-{
-	return ((uint64_t)__bswap_32(__x))<<32 | __bswap_32(__x>>32);
+static __inline uint64_t __bswap_64(uint64_t __x) {
+  return ((uint64_t)__bswap_32(__x)) << 32 | __bswap_32(__x >> 32);
 }
 
 #define bswap_16(x) __bswap_16(x)
diff --git a/fusl/include/complex.h b/fusl/include/complex.h
index 008b3c7..8a12ddf 100644
--- a/fusl/include/complex.h
+++ b/fusl/include/complex.h
@@ -7,9 +7,9 @@
 
 #define complex _Complex
 #ifdef __GNUC__
-#define _Complex_I (__extension__ (0.0f+1.0fi))
+#define _Complex_I (__extension__(0.0f + 1.0fi))
 #else
-#define _Complex_I (0.0f+1.0fi)
+#define _Complex_I (0.0f + 1.0fi)
 #endif
 #define I _Complex_I
 
@@ -102,8 +102,12 @@
 long double creall(long double complex);
 
 #ifndef __cplusplus
-#define __CIMAG(x, t) \
-	(+(union { _Complex t __z; t __xy[2]; }){(_Complex t)(x)}.__xy[1])
+#define __CIMAG(x, t)   \
+  (+(union {            \
+      _Complex t __z;   \
+      t __xy[2];        \
+    }){(_Complex t)(x)} \
+        .__xy[1])
 
 #define creal(x) ((double)(x))
 #define crealf(x) ((float)(x))
@@ -116,9 +120,9 @@
 
 #if __STDC_VERSION__ >= 201112L
 #if defined(_Imaginary_I)
-#define __CMPLX(x, y, t) ((t)(x) + _Imaginary_I*(t)(y))
+#define __CMPLX(x, y, t) ((t)(x) + _Imaginary_I * (t)(y))
 #elif defined(__clang__)
-#define __CMPLX(x, y, t) (+(_Complex t){ (t)(x), (t)(y) })
+#define __CMPLX(x, y, t) (+(_Complex t){(t)(x), (t)(y)})
 #else
 #define __CMPLX(x, y, t) (__builtin_complex((t)(x), (t)(y)))
 #endif
diff --git a/fusl/include/cpio.h b/fusl/include/cpio.h
index 39a1f8b..7d72387 100644
--- a/fusl/include/cpio.h
+++ b/fusl/include/cpio.h
@@ -3,27 +3,27 @@
 
 #define MAGIC "070707"
 
-#define C_IRUSR  000400
-#define C_IWUSR  000200
-#define C_IXUSR  000100
-#define C_IRGRP  000040
-#define C_IWGRP  000020
-#define C_IXGRP  000010
-#define C_IROTH  000004
-#define C_IWOTH  000002
-#define C_IXOTH  000001
+#define C_IRUSR 000400
+#define C_IWUSR 000200
+#define C_IXUSR 000100
+#define C_IRGRP 000040
+#define C_IWGRP 000020
+#define C_IXGRP 000010
+#define C_IROTH 000004
+#define C_IWOTH 000002
+#define C_IXOTH 000001
 
-#define C_ISUID  004000
-#define C_ISGID  002000
-#define C_ISVTX  001000
+#define C_ISUID 004000
+#define C_ISGID 002000
+#define C_ISVTX 001000
 
-#define C_ISBLK  060000
-#define C_ISCHR  020000
-#define C_ISDIR  040000
+#define C_ISBLK 060000
+#define C_ISCHR 020000
+#define C_ISDIR 040000
 #define C_ISFIFO 010000
 #define C_ISSOCK 0140000
-#define C_ISLNK  0120000
-#define C_ISCTG  0110000
-#define C_ISREG  0100000
+#define C_ISLNK 0120000
+#define C_ISCTG 0110000
+#define C_ISREG 0100000
 
 #endif
diff --git a/fusl/include/crypt.h b/fusl/include/crypt.h
index 07de216..1b852be 100644
--- a/fusl/include/crypt.h
+++ b/fusl/include/crypt.h
@@ -6,12 +6,12 @@
 #endif
 
 struct crypt_data {
-	int initialized;
-	char __buf[256];
+  int initialized;
+  char __buf[256];
 };
 
-char *crypt(const char *, const char *);
-char *crypt_r(const char *, const char *, struct crypt_data *);
+char* crypt(const char*, const char*);
+char* crypt_r(const char*, const char*, struct crypt_data*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/ctype.h b/fusl/include/ctype.h
index 7936536..42ef8ea 100644
--- a/fusl/include/ctype.h
+++ b/fusl/include/ctype.h
@@ -1,5 +1,5 @@
-#ifndef	_CTYPE_H
-#define	_CTYPE_H
+#ifndef _CTYPE_H
+#define _CTYPE_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -7,62 +7,59 @@
 
 #include <features.h>
 
-int   isalnum(int);
-int   isalpha(int);
-int   isblank(int);
-int   iscntrl(int);
-int   isdigit(int);
-int   isgraph(int);
-int   islower(int);
-int   isprint(int);
-int   ispunct(int);
-int   isspace(int);
-int   isupper(int);
-int   isxdigit(int);
-int   tolower(int);
-int   toupper(int);
+int isalnum(int);
+int isalpha(int);
+int isblank(int);
+int iscntrl(int);
+int isdigit(int);
+int isgraph(int);
+int islower(int);
+int isprint(int);
+int ispunct(int);
+int isspace(int);
+int isupper(int);
+int isxdigit(int);
+int tolower(int);
+int toupper(int);
 
 #ifndef __cplusplus
-static __inline int __isspace(int _c)
-{
-	return _c == ' ' || (unsigned)_c-'\t' < 5;
+static __inline int __isspace(int _c) {
+  return _c == ' ' || (unsigned)_c - '\t' < 5;
 }
 
-#define isalpha(a) (0 ? isalpha(a) : (((unsigned)(a)|32)-'a') < 26)
-#define isdigit(a) (0 ? isdigit(a) : ((unsigned)(a)-'0') < 10)
-#define islower(a) (0 ? islower(a) : ((unsigned)(a)-'a') < 26)
-#define isupper(a) (0 ? isupper(a) : ((unsigned)(a)-'A') < 26)
+#define isalpha(a) (0 ? isalpha(a) : (((unsigned)(a) | 32) - 'a') < 26)
+#define isdigit(a) (0 ? isdigit(a) : ((unsigned)(a) - '0') < 10)
+#define islower(a) (0 ? islower(a) : ((unsigned)(a) - 'a') < 26)
+#define isupper(a) (0 ? isupper(a) : ((unsigned)(a) - 'A') < 26)
 #define isprint(a) (0 ? isprint(a) : ((unsigned)(a)-0x20) < 0x5f)
 #define isgraph(a) (0 ? isgraph(a) : ((unsigned)(a)-0x21) < 0x5e)
 #define isspace(a) __isspace(a)
 #endif
 
-
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
 #define __NEED_locale_t
 #include <bits/alltypes.h>
 
-int   isalnum_l(int, locale_t);
-int   isalpha_l(int, locale_t);
-int   isblank_l(int, locale_t);
-int   iscntrl_l(int, locale_t);
-int   isdigit_l(int, locale_t);
-int   isgraph_l(int, locale_t);
-int   islower_l(int, locale_t);
-int   isprint_l(int, locale_t);
-int   ispunct_l(int, locale_t);
-int   isspace_l(int, locale_t);
-int   isupper_l(int, locale_t);
-int   isxdigit_l(int, locale_t);
-int   tolower_l(int, locale_t);
-int   toupper_l(int, locale_t);
+int isalnum_l(int, locale_t);
+int isalpha_l(int, locale_t);
+int isblank_l(int, locale_t);
+int iscntrl_l(int, locale_t);
+int isdigit_l(int, locale_t);
+int isgraph_l(int, locale_t);
+int islower_l(int, locale_t);
+int isprint_l(int, locale_t);
+int ispunct_l(int, locale_t);
+int isspace_l(int, locale_t);
+int isupper_l(int, locale_t);
+int isxdigit_l(int, locale_t);
+int tolower_l(int, locale_t);
+int toupper_l(int, locale_t);
 
-int   isascii(int);
-int   toascii(int);
-#define _tolower(a) ((a)|0x20)
+int isascii(int);
+int toascii(int);
+#define _tolower(a) ((a) | 0x20)
 #define _toupper(a) ((a)&0x5f)
 #define isascii(a) (0 ? isascii(a) : (unsigned)(a) < 128)
 
diff --git a/fusl/include/dirent.h b/fusl/include/dirent.h
index 5aa8510..e44835f 100644
--- a/fusl/include/dirent.h
+++ b/fusl/include/dirent.h
@@ -1,5 +1,5 @@
-#ifndef	_DIRENT_H
-#define	_DIRENT_H
+#ifndef _DIRENT_H
+#define _DIRENT_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -17,29 +17,33 @@
 
 typedef struct __dirstream DIR;
 
-struct dirent
-{
-	ino_t d_ino;
-	off_t d_off;
-	unsigned short d_reclen;
-	unsigned char d_type;
-	char d_name[256];
+struct dirent {
+  ino_t d_ino;
+  off_t d_off;
+  unsigned short d_reclen;
+  unsigned char d_type;
+  char d_name[256];
 };
 
 #define d_fileno d_ino
 
-int            closedir(DIR *);
-DIR           *fdopendir(int);
-DIR           *opendir(const char *);
-struct dirent *readdir(DIR *);
-int            readdir_r(DIR *__restrict, struct dirent *__restrict, struct dirent **__restrict);
-void           rewinddir(DIR *);
-void           seekdir(DIR *, long);
-long           telldir(DIR *);
-int            dirfd(DIR *);
+int closedir(DIR*);
+DIR* fdopendir(int);
+DIR* opendir(const char*);
+struct dirent* readdir(DIR*);
+int readdir_r(DIR* __restrict,
+              struct dirent* __restrict,
+              struct dirent** __restrict);
+void rewinddir(DIR*);
+void seekdir(DIR*, long);
+long telldir(DIR*);
+int dirfd(DIR*);
 
-int alphasort(const struct dirent **, const struct dirent **);
-int scandir(const char *, struct dirent ***, int (*)(const struct dirent *), int (*)(const struct dirent **, const struct dirent **));
+int alphasort(const struct dirent**, const struct dirent**);
+int scandir(const char*,
+            struct dirent***,
+            int (*)(const struct dirent*),
+            int (*)(const struct dirent**, const struct dirent**));
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define DT_UNKNOWN 0
@@ -51,13 +55,13 @@
 #define DT_LNK 10
 #define DT_SOCK 12
 #define DT_WHT 14
-#define IFTODT(x) ((x)>>12 & 017)
-#define DTTOIF(x) ((x)<<12)
-int getdents(int, struct dirent *, size_t);
+#define IFTODT(x) ((x) >> 12 & 017)
+#define DTTOIF(x) ((x) << 12)
+int getdents(int, struct dirent*, size_t);
 #endif
 
 #ifdef _GNU_SOURCE
-int versionsort(const struct dirent **, const struct dirent **);
+int versionsort(const struct dirent**, const struct dirent**);
 #endif
 
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
diff --git a/fusl/include/dlfcn.h b/fusl/include/dlfcn.h
index 78fb073..7759514 100644
--- a/fusl/include/dlfcn.h
+++ b/fusl/include/dlfcn.h
@@ -1,5 +1,5 @@
-#ifndef	_DLFCN_H
-#define	_DLFCN_H
+#ifndef _DLFCN_H
+#define _DLFCN_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -7,32 +7,32 @@
 
 #include <features.h>
 
-#define RTLD_LAZY   1
-#define RTLD_NOW    2
+#define RTLD_LAZY 1
+#define RTLD_NOW 2
 #define RTLD_NOLOAD 4
 #define RTLD_NODELETE 4096
 #define RTLD_GLOBAL 256
-#define RTLD_LOCAL  0
+#define RTLD_LOCAL 0
 
-#define RTLD_NEXT    ((void *)-1)
-#define RTLD_DEFAULT ((void *)0)
+#define RTLD_NEXT ((void*)-1)
+#define RTLD_DEFAULT ((void*)0)
 
 #define RTLD_DI_LINKMAP 2
 
-int    dlclose(void *);
-char  *dlerror(void);
-void  *dlopen(const char *, int);
-void  *dlsym(void *__restrict, const char *__restrict);
+int dlclose(void*);
+char* dlerror(void);
+void* dlopen(const char*, int);
+void* dlsym(void* __restrict, const char* __restrict);
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 typedef struct {
-	const char *dli_fname;
-	void *dli_fbase;
-	const char *dli_sname;
-	void *dli_saddr;
+  const char* dli_fname;
+  void* dli_fbase;
+  const char* dli_sname;
+  void* dli_saddr;
 } Dl_info;
-int dladdr(const void *, Dl_info *);
-int dlinfo(void *, int, void *);
+int dladdr(const void*, Dl_info*);
+int dlinfo(void*, int, void*);
 #endif
 
 #ifdef __cplusplus
diff --git a/fusl/include/elf.h b/fusl/include/elf.h
index 8b3cd3e..54375b1 100644
--- a/fusl/include/elf.h
+++ b/fusl/include/elf.h
@@ -11,14 +11,14 @@
 typedef uint16_t Elf64_Half;
 
 typedef uint32_t Elf32_Word;
-typedef	int32_t  Elf32_Sword;
+typedef int32_t Elf32_Sword;
 typedef uint32_t Elf64_Word;
-typedef	int32_t  Elf64_Sword;
+typedef int32_t Elf64_Sword;
 
 typedef uint64_t Elf32_Xword;
-typedef	int64_t  Elf32_Sxword;
+typedef int64_t Elf32_Sxword;
 typedef uint64_t Elf64_Xword;
-typedef	int64_t  Elf64_Sxword;
+typedef int64_t Elf64_Sxword;
 
 typedef uint32_t Elf32_Addr;
 typedef uint64_t Elf64_Addr;
@@ -35,310 +35,300 @@
 #define EI_NIDENT (16)
 
 typedef struct {
-  unsigned char	e_ident[EI_NIDENT];
-  Elf32_Half	e_type;
-  Elf32_Half	e_machine;
-  Elf32_Word	e_version;
-  Elf32_Addr	e_entry;
-  Elf32_Off	e_phoff;
-  Elf32_Off	e_shoff;
-  Elf32_Word	e_flags;
-  Elf32_Half	e_ehsize;
-  Elf32_Half	e_phentsize;
-  Elf32_Half	e_phnum;
-  Elf32_Half	e_shentsize;
-  Elf32_Half	e_shnum;
-  Elf32_Half	e_shstrndx;
+  unsigned char e_ident[EI_NIDENT];
+  Elf32_Half e_type;
+  Elf32_Half e_machine;
+  Elf32_Word e_version;
+  Elf32_Addr e_entry;
+  Elf32_Off e_phoff;
+  Elf32_Off e_shoff;
+  Elf32_Word e_flags;
+  Elf32_Half e_ehsize;
+  Elf32_Half e_phentsize;
+  Elf32_Half e_phnum;
+  Elf32_Half e_shentsize;
+  Elf32_Half e_shnum;
+  Elf32_Half e_shstrndx;
 } Elf32_Ehdr;
 
 typedef struct {
-  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;
+  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;
 
-#define EI_MAG0		0
-#define ELFMAG0		0x7f
+#define EI_MAG0 0
+#define ELFMAG0 0x7f
 
-#define EI_MAG1		1
-#define ELFMAG1		'E'
+#define EI_MAG1 1
+#define ELFMAG1 'E'
 
-#define EI_MAG2		2
-#define ELFMAG2		'L'
+#define EI_MAG2 2
+#define ELFMAG2 'L'
 
-#define EI_MAG3		3
-#define ELFMAG3		'F'
+#define EI_MAG3 3
+#define ELFMAG3 'F'
 
+#define ELFMAG "\177ELF"
+#define SELFMAG 4
 
-#define	ELFMAG		"\177ELF"
-#define	SELFMAG		4
+#define EI_CLASS 4
+#define ELFCLASSNONE 0
+#define ELFCLASS32 1
+#define ELFCLASS64 2
+#define ELFCLASSNUM 3
 
-#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_DATA		5
-#define ELFDATANONE	0
-#define ELFDATA2LSB	1
-#define ELFDATA2MSB	2
-#define ELFDATANUM	3
+#define EI_VERSION 6
 
-#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_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_PAD 9
 
-#define EI_ABIVERSION	8
+#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 EI_PAD		9
+#define EM_NONE 0
+#define EM_M32 1
+#define EM_SPARC 2
+#define EM_386 3
+#define EM_68K 4
+#define EM_88K 5
+#define EM_860 7
+#define EM_MIPS 8
+#define EM_S370 9
+#define EM_MIPS_RS3_LE 10
 
+#define EM_PARISC 15
+#define EM_VPP500 17
+#define EM_SPARC32PLUS 18
+#define EM_960 19
+#define EM_PPC 20
+#define EM_PPC64 21
+#define EM_S390 22
 
+#define EM_V800 36
+#define EM_FR20 37
+#define EM_RH32 38
+#define EM_RCE 39
+#define EM_ARM 40
+#define EM_FAKE_ALPHA 41
+#define EM_SH 42
+#define EM_SPARCV9 43
+#define EM_TRICORE 44
+#define EM_ARC 45
+#define EM_H8_300 46
+#define EM_H8_300H 47
+#define EM_H8S 48
+#define EM_H8_500 49
+#define EM_IA_64 50
+#define EM_MIPS_X 51
+#define EM_COLDFIRE 52
+#define EM_68HC12 53
+#define EM_MMA 54
+#define EM_PCP 55
+#define EM_NCPU 56
+#define EM_NDR1 57
+#define EM_STARCORE 58
+#define EM_ME16 59
+#define EM_ST100 60
+#define EM_TINYJ 61
+#define EM_X86_64 62
+#define EM_PDSP 63
 
-#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_FX66 66
+#define EM_ST9PLUS 67
+#define EM_ST7 68
+#define EM_68HC16 69
+#define EM_68HC11 70
+#define EM_68HC08 71
+#define EM_68HC05 72
+#define EM_SVX 73
+#define EM_ST19 74
+#define EM_VAX 75
+#define EM_CRIS 76
+#define EM_JAVELIN 77
+#define EM_FIREPATH 78
+#define EM_ZSP 79
+#define EM_MMIX 80
+#define EM_HUANY 81
+#define EM_PRISM 82
+#define EM_AVR 83
+#define EM_FR30 84
+#define EM_D10V 85
+#define EM_D30V 86
+#define EM_V850 87
+#define EM_M32R 88
+#define EM_MN10300 89
+#define EM_MN10200 90
+#define EM_PJ 91
+#define EM_OR1K 92
+#define EM_ARC_A5 93
+#define EM_XTENSA 94
+#define EM_AARCH64 183
+#define EM_TILEPRO 188
+#define EM_MICROBLAZE 189
+#define EM_TILEGX 191
+#define EM_NUM 192
+#define EM_ALPHA 0x9026
 
-
-
-#define EM_NONE		 0
-#define EM_M32		 1
-#define EM_SPARC	 2
-#define EM_386		 3
-#define EM_68K		 4
-#define EM_88K		 5
-#define EM_860		 7
-#define EM_MIPS		 8
-#define EM_S370		 9
-#define EM_MIPS_RS3_LE	10
-
-#define EM_PARISC	15
-#define EM_VPP500	17
-#define EM_SPARC32PLUS	18
-#define EM_960		19
-#define EM_PPC		20
-#define EM_PPC64	21
-#define EM_S390		22
-
-#define EM_V800		36
-#define EM_FR20		37
-#define EM_RH32		38
-#define EM_RCE		39
-#define EM_ARM		40
-#define EM_FAKE_ALPHA	41
-#define EM_SH		42
-#define EM_SPARCV9	43
-#define EM_TRICORE	44
-#define EM_ARC		45
-#define EM_H8_300	46
-#define EM_H8_300H	47
-#define EM_H8S		48
-#define EM_H8_500	49
-#define EM_IA_64	50
-#define EM_MIPS_X	51
-#define EM_COLDFIRE	52
-#define EM_68HC12	53
-#define EM_MMA		54
-#define EM_PCP		55
-#define EM_NCPU		56
-#define EM_NDR1		57
-#define EM_STARCORE	58
-#define EM_ME16		59
-#define EM_ST100	60
-#define EM_TINYJ	61
-#define EM_X86_64	62
-#define EM_PDSP		63
-
-#define EM_FX66		66
-#define EM_ST9PLUS	67
-#define EM_ST7		68
-#define EM_68HC16	69
-#define EM_68HC11	70
-#define EM_68HC08	71
-#define EM_68HC05	72
-#define EM_SVX		73
-#define EM_ST19		74
-#define EM_VAX		75
-#define EM_CRIS		76
-#define EM_JAVELIN	77
-#define EM_FIREPATH	78
-#define EM_ZSP		79
-#define EM_MMIX		80
-#define EM_HUANY	81
-#define EM_PRISM	82
-#define EM_AVR		83
-#define EM_FR30		84
-#define EM_D10V		85
-#define EM_D30V		86
-#define EM_V850		87
-#define EM_M32R		88
-#define EM_MN10300	89
-#define EM_MN10200	90
-#define EM_PJ		91
-#define EM_OR1K		92
-#define EM_ARC_A5	93
-#define EM_XTENSA	94
-#define EM_AARCH64	183
-#define EM_TILEPRO	188
-#define EM_MICROBLAZE	189
-#define EM_TILEGX	191
-#define EM_NUM		192
-#define EM_ALPHA	0x9026
-
-#define EV_NONE		0
-#define EV_CURRENT	1
-#define EV_NUM		2
+#define EV_NONE 0
+#define EV_CURRENT 1
+#define EV_NUM 2
 
 typedef struct {
-  Elf32_Word	sh_name;
-  Elf32_Word	sh_type;
-  Elf32_Word	sh_flags;
-  Elf32_Addr	sh_addr;
-  Elf32_Off	sh_offset;
-  Elf32_Word	sh_size;
-  Elf32_Word	sh_link;
-  Elf32_Word	sh_info;
-  Elf32_Word	sh_addralign;
-  Elf32_Word	sh_entsize;
+  Elf32_Word sh_name;
+  Elf32_Word sh_type;
+  Elf32_Word sh_flags;
+  Elf32_Addr sh_addr;
+  Elf32_Off sh_offset;
+  Elf32_Word sh_size;
+  Elf32_Word sh_link;
+  Elf32_Word sh_info;
+  Elf32_Word sh_addralign;
+  Elf32_Word sh_entsize;
 } Elf32_Shdr;
 
 typedef struct {
-  Elf64_Word	sh_name;
-  Elf64_Word	sh_type;
-  Elf64_Xword	sh_flags;
-  Elf64_Addr	sh_addr;
-  Elf64_Off	sh_offset;
-  Elf64_Xword	sh_size;
-  Elf64_Word	sh_link;
-  Elf64_Word	sh_info;
-  Elf64_Xword	sh_addralign;
-  Elf64_Xword	sh_entsize;
+  Elf64_Word sh_name;
+  Elf64_Word sh_type;
+  Elf64_Xword sh_flags;
+  Elf64_Addr sh_addr;
+  Elf64_Off sh_offset;
+  Elf64_Xword sh_size;
+  Elf64_Word sh_link;
+  Elf64_Word sh_info;
+  Elf64_Xword sh_addralign;
+  Elf64_Xword sh_entsize;
 } Elf64_Shdr;
 
+#define SHN_UNDEF 0
+#define SHN_LORESERVE 0xff00
+#define SHN_LOPROC 0xff00
+#define SHN_BEFORE 0xff00
 
+#define SHN_AFTER 0xff01
 
-#define SHN_UNDEF	0
-#define SHN_LORESERVE	0xff00
-#define SHN_LOPROC	0xff00
-#define SHN_BEFORE	0xff00
+#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 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 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_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_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 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 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_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_MASKOS	     0x0ff00000
-#define SHF_MASKPROC	     0xf0000000
-#define SHF_ORDERED	     (1 << 30)
-#define SHF_EXCLUDE	     (1U << 31)
+#define SHF_GROUP (1 << 9)
+#define SHF_TLS (1 << 10)
+#define SHF_MASKOS 0x0ff00000
+#define SHF_MASKPROC 0xf0000000
+#define SHF_ORDERED (1 << 30)
+#define SHF_EXCLUDE (1U << 31)
 
-#define GRP_COMDAT	0x1
+#define GRP_COMDAT 0x1
 
 typedef struct {
-  Elf32_Word	st_name;
-  Elf32_Addr	st_value;
-  Elf32_Word	st_size;
-  unsigned char	st_info;
-  unsigned char	st_other;
-  Elf32_Section	st_shndx;
+  Elf32_Word st_name;
+  Elf32_Addr st_value;
+  Elf32_Word st_size;
+  unsigned char st_info;
+  unsigned char st_other;
+  Elf32_Section st_shndx;
 } Elf32_Sym;
 
 typedef struct {
-  Elf64_Word	st_name;
-  unsigned char	st_info;
+  Elf64_Word st_name;
+  unsigned char st_info;
   unsigned char st_other;
-  Elf64_Section	st_shndx;
-  Elf64_Addr	st_value;
-  Elf64_Xword	st_size;
+  Elf64_Section st_shndx;
+  Elf64_Addr st_value;
+  Elf64_Xword st_size;
 } Elf64_Sym;
 
 typedef struct {
@@ -351,539 +341,473 @@
   Elf64_Half si_flags;
 } Elf64_Syminfo;
 
-#define SYMINFO_BT_SELF		0xffff
-#define SYMINFO_BT_PARENT	0xfffe
-#define SYMINFO_BT_LOWRESERVE	0xff00
+#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 SYMINFO_FLG_DIRECT 0x0001
+#define SYMINFO_FLG_PASSTHRU 0x0002
+#define SYMINFO_FLG_COPY 0x0004
+#define SYMINFO_FLG_LAZYLOAD 0x0008
 
-#define SYMINFO_NONE		0
-#define SYMINFO_CURRENT		1
-#define SYMINFO_NUM		2
+#define SYMINFO_NONE 0
+#define SYMINFO_CURRENT 1
+#define SYMINFO_NUM 2
 
-#define ELF32_ST_BIND(val)		(((unsigned char) (val)) >> 4)
-#define ELF32_ST_TYPE(val)		((val) & 0xf)
-#define ELF32_ST_INFO(bind, type)	(((bind) << 4) + ((type) & 0xf))
+#define ELF32_ST_BIND(val) (((unsigned char)(val)) >> 4)
+#define ELF32_ST_TYPE(val) ((val)&0xf)
+#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type)&0xf))
 
-#define ELF64_ST_BIND(val)		ELF32_ST_BIND (val)
-#define ELF64_ST_TYPE(val)		ELF32_ST_TYPE (val)
-#define ELF64_ST_INFO(bind, type)	ELF32_ST_INFO ((bind), (type))
+#define ELF64_ST_BIND(val) ELF32_ST_BIND(val)
+#define ELF64_ST_TYPE(val) ELF32_ST_TYPE(val)
+#define ELF64_ST_INFO(bind, type) ELF32_ST_INFO((bind), (type))
 
-#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 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 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 STN_UNDEF	0
+#define STN_UNDEF 0
 
-#define ELF32_ST_VISIBILITY(o)	((o) & 0x03)
-#define ELF64_ST_VISIBILITY(o)	ELF32_ST_VISIBILITY (o)
+#define ELF32_ST_VISIBILITY(o) ((o)&0x03)
+#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY(o)
 
-#define STV_DEFAULT	0
-#define STV_INTERNAL	1
-#define STV_HIDDEN	2
-#define STV_PROTECTED	3
+#define STV_DEFAULT 0
+#define STV_INTERNAL 1
+#define STV_HIDDEN 2
+#define STV_PROTECTED 3
 
-
-
-
-typedef struct
-{
-  Elf32_Addr	r_offset;
-  Elf32_Word	r_info;
+typedef struct {
+  Elf32_Addr r_offset;
+  Elf32_Word r_info;
 } Elf32_Rel;
 
 typedef struct {
-  Elf64_Addr	r_offset;
-  Elf64_Xword	r_info;
+  Elf64_Addr r_offset;
+  Elf64_Xword r_info;
 } Elf64_Rel;
 
-
-
 typedef struct {
-  Elf32_Addr	r_offset;
-  Elf32_Word	r_info;
-  Elf32_Sword	r_addend;
+  Elf32_Addr r_offset;
+  Elf32_Word r_info;
+  Elf32_Sword r_addend;
 } Elf32_Rela;
 
 typedef struct {
-  Elf64_Addr	r_offset;
-  Elf64_Xword	r_info;
-  Elf64_Sxword	r_addend;
+  Elf64_Addr r_offset;
+  Elf64_Xword r_info;
+  Elf64_Sxword r_addend;
 } Elf64_Rela;
 
+#define ELF32_R_SYM(val) ((val) >> 8)
+#define ELF32_R_TYPE(val) ((val)&0xff)
+#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type)&0xff))
 
-
-#define ELF32_R_SYM(val)		((val) >> 8)
-#define ELF32_R_TYPE(val)		((val) & 0xff)
-#define ELF32_R_INFO(sym, type)		(((sym) << 8) + ((type) & 0xff))
-
-#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_R_SYM(i) ((i) >> 32)
+#define ELF64_R_TYPE(i) ((i)&0xffffffff)
+#define ELF64_R_INFO(sym, type) ((((Elf64_Xword)(sym)) << 32) + (type))
 
 typedef struct {
-  Elf32_Word	p_type;
-  Elf32_Off	p_offset;
-  Elf32_Addr	p_vaddr;
-  Elf32_Addr	p_paddr;
-  Elf32_Word	p_filesz;
-  Elf32_Word	p_memsz;
-  Elf32_Word	p_flags;
-  Elf32_Word	p_align;
+  Elf32_Word p_type;
+  Elf32_Off p_offset;
+  Elf32_Addr p_vaddr;
+  Elf32_Addr p_paddr;
+  Elf32_Word p_filesz;
+  Elf32_Word p_memsz;
+  Elf32_Word p_flags;
+  Elf32_Word p_align;
 } Elf32_Phdr;
 
 typedef struct {
-  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_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;
 
-
-
-#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 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 PF_X		(1 << 0)
-#define PF_W		(1 << 1)
-#define PF_R		(1 << 2)
-#define PF_MASKOS	0x0ff00000
-#define PF_MASKPROC	0xf0000000
-
-
-
-#define NT_PRSTATUS	1
-#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_386_TLS	0x200
-#define NT_386_IOPERM	0x201
-#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_ARM_VFP	0x400
-#define NT_ARM_TLS	0x401
-#define NT_ARM_HW_BREAK	0x402
-#define NT_ARM_HW_WATCH	0x403
-#define NT_METAG_CBUF	0x500
-#define NT_METAG_RPIPE	0x501
-#define NT_METAG_TLS	0x502
-#define NT_VERSION	1
-
-
-
+#define NT_PRSTATUS 1
+#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_386_TLS 0x200
+#define NT_386_IOPERM 0x201
+#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_ARM_VFP 0x400
+#define NT_ARM_TLS 0x401
+#define NT_ARM_HW_BREAK 0x402
+#define NT_ARM_HW_WATCH 0x403
+#define NT_METAG_CBUF 0x500
+#define NT_METAG_RPIPE 0x501
+#define NT_METAG_TLS 0x502
+#define NT_VERSION 1
 
 typedef struct {
   Elf32_Sword d_tag;
   union {
-      Elf32_Word d_val;
-      Elf32_Addr d_ptr;
+    Elf32_Word d_val;
+    Elf32_Addr d_ptr;
   } d_un;
 } Elf32_Dyn;
 
 typedef struct {
   Elf64_Sxword d_tag;
   union {
-      Elf64_Xword d_val;
-      Elf64_Addr d_ptr;
+    Elf64_Xword d_val;
+    Elf64_Addr d_ptr;
   } d_un;
 } Elf64_Dyn;
 
-
-
-#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_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_NUM		34
-#define DT_LOOS		0x6000000d
-#define DT_HIOS		0x6ffff000
-#define DT_LOPROC	0x70000000
-#define DT_HIPROC	0x7fffffff
-#define	DT_PROCNUM	DT_MIPS_NUM
+#define DT_NUM 34
+#define DT_LOOS 0x6000000d
+#define DT_HIOS 0x6ffff000
+#define DT_LOPROC 0x70000000
+#define DT_HIPROC 0x7fffffff
+#define DT_PROCNUM DT_MIPS_NUM
 
-#define DT_VALRNGLO	0x6ffffd00
+#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_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_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_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_VERSYM	0x6ffffff0
+#define DT_FLAGS_1 0x6ffffffb
+#define DT_VERDEF 0x6ffffffc
 
-#define DT_RELACOUNT	0x6ffffff9
-#define DT_RELCOUNT	0x6ffffffa
+#define DT_VERDEFNUM 0x6ffffffd
+#define DT_VERNEED 0x6ffffffe
 
-
-#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_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 DF_ORIGIN 0x00000001
+#define DF_SYMBOLIC 0x00000002
+#define DF_TEXTREL 0x00000004
+#define DF_BIND_NOW 0x00000008
+#define DF_STATIC_TLS 0x00000010
 
-#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 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 DTF_1_PARINIT 0x00000001
+#define DTF_1_CONFEXP 0x00000002
 
-#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 DTF_1_PARINIT	0x00000001
-#define DTF_1_CONFEXP	0x00000002
-
-
-#define DF_P1_LAZYLOAD	0x00000001
-#define DF_P1_GROUPPERM	0x00000002
-
-
-
+#define DF_P1_LAZYLOAD 0x00000001
+#define DF_P1_GROUPPERM 0x00000002
 
 typedef struct {
-  Elf32_Half	vd_version;
-  Elf32_Half	vd_flags;
-  Elf32_Half	vd_ndx;
-  Elf32_Half	vd_cnt;
-  Elf32_Word	vd_hash;
-  Elf32_Word	vd_aux;
-  Elf32_Word	vd_next;
+  Elf32_Half vd_version;
+  Elf32_Half vd_flags;
+  Elf32_Half vd_ndx;
+  Elf32_Half vd_cnt;
+  Elf32_Word vd_hash;
+  Elf32_Word vd_aux;
+  Elf32_Word vd_next;
 } Elf32_Verdef;
 
 typedef struct {
-  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_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;
 
+#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_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 VER_NDX_LOCAL 0
+#define VER_NDX_GLOBAL 1
+#define VER_NDX_LORESERVE 0xff00
+#define VER_NDX_ELIMINATE 0xff01
 
 typedef struct {
-  Elf32_Word	vda_name;
-  Elf32_Word	vda_next;
+  Elf32_Word vda_name;
+  Elf32_Word vda_next;
 } Elf32_Verdaux;
 
 typedef struct {
-  Elf64_Word	vda_name;
-  Elf64_Word	vda_next;
+  Elf64_Word vda_name;
+  Elf64_Word vda_next;
 } Elf64_Verdaux;
 
-
-
-
 typedef struct {
-  Elf32_Half	vn_version;
-  Elf32_Half	vn_cnt;
-  Elf32_Word	vn_file;
-  Elf32_Word	vn_aux;
-  Elf32_Word	vn_next;
+  Elf32_Half vn_version;
+  Elf32_Half vn_cnt;
+  Elf32_Word vn_file;
+  Elf32_Word vn_aux;
+  Elf32_Word vn_next;
 } Elf32_Verneed;
 
 typedef struct {
-  Elf64_Half	vn_version;
-  Elf64_Half	vn_cnt;
-  Elf64_Word	vn_file;
-  Elf64_Word	vn_aux;
-  Elf64_Word	vn_next;
+  Elf64_Half vn_version;
+  Elf64_Half vn_cnt;
+  Elf64_Word vn_file;
+  Elf64_Word vn_aux;
+  Elf64_Word vn_next;
 } Elf64_Verneed;
 
-
-
-#define VER_NEED_NONE	 0
+#define VER_NEED_NONE 0
 #define VER_NEED_CURRENT 1
-#define VER_NEED_NUM	 2
-
-
+#define VER_NEED_NUM 2
 
 typedef struct {
-  Elf32_Word	vna_hash;
-  Elf32_Half	vna_flags;
-  Elf32_Half	vna_other;
-  Elf32_Word	vna_name;
-  Elf32_Word	vna_next;
+  Elf32_Word vna_hash;
+  Elf32_Half vna_flags;
+  Elf32_Half vna_other;
+  Elf32_Word vna_name;
+  Elf32_Word vna_next;
 } Elf32_Vernaux;
 
 typedef struct {
-  Elf64_Word	vna_hash;
-  Elf64_Half	vna_flags;
-  Elf64_Half	vna_other;
-  Elf64_Word	vna_name;
-  Elf64_Word	vna_next;
+  Elf64_Word vna_hash;
+  Elf64_Half vna_flags;
+  Elf64_Half vna_other;
+  Elf64_Word vna_name;
+  Elf64_Word vna_next;
 } Elf64_Vernaux;
 
-
-
-#define VER_FLG_WEAK	0x2
-
-
+#define VER_FLG_WEAK 0x2
 
 typedef struct {
   uint32_t a_type;
   union {
-      uint32_t a_val;
+    uint32_t a_val;
   } a_un;
 } Elf32_auxv_t;
 
 typedef struct {
   uint64_t a_type;
   union {
-      uint64_t a_val;
+    uint64_t a_val;
   } a_un;
 } Elf64_auxv_t;
 
+#define AT_NULL 0
+#define AT_IGNORE 1
+#define AT_EXECFD 2
+#define AT_PHDR 3
+#define AT_PHENT 4
+#define AT_PHNUM 5
+#define AT_PAGESZ 6
+#define AT_BASE 7
+#define AT_FLAGS 8
+#define AT_ENTRY 9
+#define AT_NOTELF 10
+#define AT_UID 11
+#define AT_EUID 12
+#define AT_GID 13
+#define AT_EGID 14
+#define AT_CLKTCK 17
 
+#define AT_PLATFORM 15
+#define AT_HWCAP 16
 
-#define AT_NULL		0
-#define AT_IGNORE	1
-#define AT_EXECFD	2
-#define AT_PHDR		3
-#define AT_PHENT	4
-#define AT_PHNUM	5
-#define AT_PAGESZ	6
-#define AT_BASE		7
-#define AT_FLAGS	8
-#define AT_ENTRY	9
-#define AT_NOTELF	10
-#define AT_UID		11
-#define AT_EUID		12
-#define AT_GID		13
-#define AT_EGID		14
-#define AT_CLKTCK	17
+#define AT_FPUCW 18
 
+#define AT_DCACHEBSIZE 19
+#define AT_ICACHEBSIZE 20
+#define AT_UCACHEBSIZE 21
 
-#define AT_PLATFORM	15
-#define AT_HWCAP	16
+#define AT_IGNOREPPC 22
 
-
-
-
-#define AT_FPUCW	18
-
-
-#define AT_DCACHEBSIZE	19
-#define AT_ICACHEBSIZE	20
-#define AT_UCACHEBSIZE	21
-
-
-
-#define AT_IGNOREPPC	22
-
-#define	AT_SECURE	23
+#define AT_SECURE 23
 
 #define AT_BASE_PLATFORM 24
 
-#define AT_RANDOM	25
+#define AT_RANDOM 25
 
-#define AT_HWCAP2	26
+#define AT_HWCAP2 26
 
-#define AT_EXECFN	31
+#define AT_EXECFN 31
 
+#define AT_SYSINFO 32
+#define AT_SYSINFO_EHDR 33
 
-
-#define AT_SYSINFO	32
-#define AT_SYSINFO_EHDR	33
-
-
-
-#define AT_L1I_CACHESHAPE	34
-#define AT_L1D_CACHESHAPE	35
-#define AT_L2_CACHESHAPE	36
-#define AT_L3_CACHESHAPE	37
-
-
-
+#define AT_L1I_CACHESHAPE 34
+#define AT_L1D_CACHESHAPE 35
+#define AT_L2_CACHESHAPE 36
+#define AT_L3_CACHESHAPE 37
 
 typedef struct {
   Elf32_Word n_namesz;
@@ -897,35 +821,22 @@
   Elf64_Word n_type;
 } Elf64_Nhdr;
 
+#define ELF_NOTE_SOLARIS "SUNW Solaris"
 
+#define ELF_NOTE_GNU "GNU"
 
+#define ELF_NOTE_PAGESIZE_HINT 1
 
-#define ELF_NOTE_SOLARIS	"SUNW Solaris"
+#define NT_GNU_ABI_TAG 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 ELF_NOTE_GNU		"GNU"
-
-
-
-
-
-#define ELF_NOTE_PAGESIZE_HINT	1
-
-
-#define NT_GNU_ABI_TAG	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_BUILD_ID	3
-#define NT_GNU_GOLD_VERSION	4
-
-
+#define NT_GNU_BUILD_ID 3
+#define NT_GNU_GOLD_VERSION 4
 
 typedef struct {
   Elf32_Xword m_value;
@@ -943,338 +854,304 @@
   Elf64_Half m_stride;
 } Elf64_Move;
 
+#define ELF32_M_SYM(info) ((info) >> 8)
+#define ELF32_M_SIZE(info) ((unsigned char)(info))
+#define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char)(size))
 
-#define ELF32_M_SYM(info)	((info) >> 8)
-#define ELF32_M_SIZE(info)	((unsigned char) (info))
-#define ELF32_M_INFO(sym, size)	(((sym) << 8) + (unsigned char) (size))
+#define ELF64_M_SYM(info) ELF32_M_SYM(info)
+#define ELF64_M_SIZE(info) ELF32_M_SIZE(info)
+#define ELF64_M_INFO(sym, size) ELF32_M_INFO(sym, size)
 
-#define ELF64_M_SYM(info)	ELF32_M_SYM (info)
-#define ELF64_M_SIZE(info)	ELF32_M_SIZE (info)
-#define ELF64_M_INFO(sym, size)	ELF32_M_INFO (sym, size)
+#define EF_CPU32 0x00810000
 
-#define EF_CPU32	0x00810000
+#define R_68K_NONE 0
+#define R_68K_32 1
+#define R_68K_16 2
+#define R_68K_8 3
+#define R_68K_PC32 4
+#define R_68K_PC16 5
+#define R_68K_PC8 6
+#define R_68K_GOT32 7
+#define R_68K_GOT16 8
+#define R_68K_GOT8 9
+#define R_68K_GOT32O 10
+#define R_68K_GOT16O 11
+#define R_68K_GOT8O 12
+#define R_68K_PLT32 13
+#define R_68K_PLT16 14
+#define R_68K_PLT8 15
+#define R_68K_PLT32O 16
+#define R_68K_PLT16O 17
+#define R_68K_PLT8O 18
+#define R_68K_COPY 19
+#define R_68K_GLOB_DAT 20
+#define R_68K_JMP_SLOT 21
+#define R_68K_RELATIVE 22
+#define R_68K_NUM 23
 
-#define R_68K_NONE	0
-#define R_68K_32	1
-#define R_68K_16	2
-#define R_68K_8		3
-#define R_68K_PC32	4
-#define R_68K_PC16	5
-#define R_68K_PC8	6
-#define R_68K_GOT32	7
-#define R_68K_GOT16	8
-#define R_68K_GOT8	9
-#define R_68K_GOT32O	10
-#define R_68K_GOT16O	11
-#define R_68K_GOT8O	12
-#define R_68K_PLT32	13
-#define R_68K_PLT16	14
-#define R_68K_PLT8	15
-#define R_68K_PLT32O	16
-#define R_68K_PLT16O	17
-#define R_68K_PLT8O	18
-#define R_68K_COPY	19
-#define R_68K_GLOB_DAT	20
-#define R_68K_JMP_SLOT	21
-#define R_68K_RELATIVE	22
-#define R_68K_NUM	23
-
-#define R_386_NONE	   0
-#define R_386_32	   1
-#define R_386_PC32	   2
-#define R_386_GOT32	   3
-#define R_386_PLT32	   4
-#define R_386_COPY	   5
-#define R_386_GLOB_DAT	   6
-#define R_386_JMP_SLOT	   7
-#define R_386_RELATIVE	   8
-#define R_386_GOTOFF	   9
-#define R_386_GOTPC	   10
-#define R_386_32PLT	   11
-#define R_386_TLS_TPOFF	   14
-#define R_386_TLS_IE	   15
-#define R_386_TLS_GOTIE	   16
-#define R_386_TLS_LE	   17
-#define R_386_TLS_GD	   18
-#define R_386_TLS_LDM	   19
-#define R_386_16	   20
-#define R_386_PC16	   21
-#define R_386_8		   22
-#define R_386_PC8	   23
-#define R_386_TLS_GD_32	   24
-#define R_386_TLS_GD_PUSH  25
-#define R_386_TLS_GD_CALL  26
-#define R_386_TLS_GD_POP   27
-#define R_386_TLS_LDM_32   28
+#define R_386_NONE 0
+#define R_386_32 1
+#define R_386_PC32 2
+#define R_386_GOT32 3
+#define R_386_PLT32 4
+#define R_386_COPY 5
+#define R_386_GLOB_DAT 6
+#define R_386_JMP_SLOT 7
+#define R_386_RELATIVE 8
+#define R_386_GOTOFF 9
+#define R_386_GOTPC 10
+#define R_386_32PLT 11
+#define R_386_TLS_TPOFF 14
+#define R_386_TLS_IE 15
+#define R_386_TLS_GOTIE 16
+#define R_386_TLS_LE 17
+#define R_386_TLS_GD 18
+#define R_386_TLS_LDM 19
+#define R_386_16 20
+#define R_386_PC16 21
+#define R_386_8 22
+#define R_386_PC8 23
+#define R_386_TLS_GD_32 24
+#define R_386_TLS_GD_PUSH 25
+#define R_386_TLS_GD_CALL 26
+#define R_386_TLS_GD_POP 27
+#define R_386_TLS_LDM_32 28
 #define R_386_TLS_LDM_PUSH 29
 #define R_386_TLS_LDM_CALL 30
-#define R_386_TLS_LDM_POP  31
-#define R_386_TLS_LDO_32   32
-#define R_386_TLS_IE_32	   33
-#define R_386_TLS_LE_32	   34
+#define R_386_TLS_LDM_POP 31
+#define R_386_TLS_LDO_32 32
+#define R_386_TLS_IE_32 33
+#define R_386_TLS_LE_32 34
 #define R_386_TLS_DTPMOD32 35
 #define R_386_TLS_DTPOFF32 36
-#define R_386_TLS_TPOFF32  37
-#define R_386_SIZE32       38
-#define R_386_TLS_GOTDESC  39
+#define R_386_TLS_TPOFF32 37
+#define R_386_SIZE32 38
+#define R_386_TLS_GOTDESC 39
 #define R_386_TLS_DESC_CALL 40
-#define R_386_TLS_DESC     41
-#define R_386_IRELATIVE	   42
-#define R_386_NUM	   43
+#define R_386_TLS_DESC 41
+#define R_386_IRELATIVE 42
+#define R_386_NUM 43
 
+#define STT_SPARC_REGISTER 13
 
+#define EF_SPARCV9_MM 3
+#define EF_SPARCV9_TSO 0
+#define EF_SPARCV9_PSO 1
+#define EF_SPARCV9_RMO 2
+#define EF_SPARC_LEDATA 0x800000
+#define EF_SPARC_EXT_MASK 0xFFFF00
+#define EF_SPARC_32PLUS 0x000100
+#define EF_SPARC_SUN_US1 0x000200
+#define EF_SPARC_HAL_R1 0x000400
+#define EF_SPARC_SUN_US3 0x000800
 
+#define R_SPARC_NONE 0
+#define R_SPARC_8 1
+#define R_SPARC_16 2
+#define R_SPARC_32 3
+#define R_SPARC_DISP8 4
+#define R_SPARC_DISP16 5
+#define R_SPARC_DISP32 6
+#define R_SPARC_WDISP30 7
+#define R_SPARC_WDISP22 8
+#define R_SPARC_HI22 9
+#define R_SPARC_22 10
+#define R_SPARC_13 11
+#define R_SPARC_LO10 12
+#define R_SPARC_GOT10 13
+#define R_SPARC_GOT13 14
+#define R_SPARC_GOT22 15
+#define R_SPARC_PC10 16
+#define R_SPARC_PC22 17
+#define R_SPARC_WPLT30 18
+#define R_SPARC_COPY 19
+#define R_SPARC_GLOB_DAT 20
+#define R_SPARC_JMP_SLOT 21
+#define R_SPARC_RELATIVE 22
+#define R_SPARC_UA32 23
 
+#define R_SPARC_PLT32 24
+#define R_SPARC_HIPLT22 25
+#define R_SPARC_LOPLT10 26
+#define R_SPARC_PCPLT32 27
+#define R_SPARC_PCPLT22 28
+#define R_SPARC_PCPLT10 29
+#define R_SPARC_10 30
+#define R_SPARC_11 31
+#define R_SPARC_64 32
+#define R_SPARC_OLO10 33
+#define R_SPARC_HH22 34
+#define R_SPARC_HM10 35
+#define R_SPARC_LM22 36
+#define R_SPARC_PC_HH22 37
+#define R_SPARC_PC_HM10 38
+#define R_SPARC_PC_LM22 39
+#define R_SPARC_WDISP16 40
+#define R_SPARC_WDISP19 41
+#define R_SPARC_GLOB_JMP 42
+#define R_SPARC_7 43
+#define R_SPARC_5 44
+#define R_SPARC_6 45
+#define R_SPARC_DISP64 46
+#define R_SPARC_PLT64 47
+#define R_SPARC_HIX22 48
+#define R_SPARC_LOX10 49
+#define R_SPARC_H44 50
+#define R_SPARC_M44 51
+#define R_SPARC_L44 52
+#define R_SPARC_REGISTER 53
+#define R_SPARC_UA64 54
+#define R_SPARC_UA16 55
+#define R_SPARC_TLS_GD_HI22 56
+#define R_SPARC_TLS_GD_LO10 57
+#define R_SPARC_TLS_GD_ADD 58
+#define R_SPARC_TLS_GD_CALL 59
+#define R_SPARC_TLS_LDM_HI22 60
+#define R_SPARC_TLS_LDM_LO10 61
+#define R_SPARC_TLS_LDM_ADD 62
+#define R_SPARC_TLS_LDM_CALL 63
+#define R_SPARC_TLS_LDO_HIX22 64
+#define R_SPARC_TLS_LDO_LOX10 65
+#define R_SPARC_TLS_LDO_ADD 66
+#define R_SPARC_TLS_IE_HI22 67
+#define R_SPARC_TLS_IE_LO10 68
+#define R_SPARC_TLS_IE_LD 69
+#define R_SPARC_TLS_IE_LDX 70
+#define R_SPARC_TLS_IE_ADD 71
+#define R_SPARC_TLS_LE_HIX22 72
+#define R_SPARC_TLS_LE_LOX10 73
+#define R_SPARC_TLS_DTPMOD32 74
+#define R_SPARC_TLS_DTPMOD64 75
+#define R_SPARC_TLS_DTPOFF32 76
+#define R_SPARC_TLS_DTPOFF64 77
+#define R_SPARC_TLS_TPOFF32 78
+#define R_SPARC_TLS_TPOFF64 79
+#define R_SPARC_GOTDATA_HIX22 80
+#define R_SPARC_GOTDATA_LOX10 81
+#define R_SPARC_GOTDATA_OP_HIX22 82
+#define R_SPARC_GOTDATA_OP_LOX10 83
+#define R_SPARC_GOTDATA_OP 84
+#define R_SPARC_H34 85
+#define R_SPARC_SIZE32 86
+#define R_SPARC_SIZE64 87
+#define R_SPARC_GNU_VTINHERIT 250
+#define R_SPARC_GNU_VTENTRY 251
+#define R_SPARC_REV32 252
 
-#define STT_SPARC_REGISTER	13
-
-
-
-#define EF_SPARCV9_MM		3
-#define EF_SPARCV9_TSO		0
-#define EF_SPARCV9_PSO		1
-#define EF_SPARCV9_RMO		2
-#define EF_SPARC_LEDATA		0x800000
-#define EF_SPARC_EXT_MASK	0xFFFF00
-#define EF_SPARC_32PLUS		0x000100
-#define EF_SPARC_SUN_US1	0x000200
-#define EF_SPARC_HAL_R1		0x000400
-#define EF_SPARC_SUN_US3	0x000800
-
-
-
-#define R_SPARC_NONE		0
-#define R_SPARC_8		1
-#define R_SPARC_16		2
-#define R_SPARC_32		3
-#define R_SPARC_DISP8		4
-#define R_SPARC_DISP16		5
-#define R_SPARC_DISP32		6
-#define R_SPARC_WDISP30		7
-#define R_SPARC_WDISP22		8
-#define R_SPARC_HI22		9
-#define R_SPARC_22		10
-#define R_SPARC_13		11
-#define R_SPARC_LO10		12
-#define R_SPARC_GOT10		13
-#define R_SPARC_GOT13		14
-#define R_SPARC_GOT22		15
-#define R_SPARC_PC10		16
-#define R_SPARC_PC22		17
-#define R_SPARC_WPLT30		18
-#define R_SPARC_COPY		19
-#define R_SPARC_GLOB_DAT	20
-#define R_SPARC_JMP_SLOT	21
-#define R_SPARC_RELATIVE	22
-#define R_SPARC_UA32		23
-
-
-
-#define R_SPARC_PLT32		24
-#define R_SPARC_HIPLT22		25
-#define R_SPARC_LOPLT10		26
-#define R_SPARC_PCPLT32		27
-#define R_SPARC_PCPLT22		28
-#define R_SPARC_PCPLT10		29
-#define R_SPARC_10		30
-#define R_SPARC_11		31
-#define R_SPARC_64		32
-#define R_SPARC_OLO10		33
-#define R_SPARC_HH22		34
-#define R_SPARC_HM10		35
-#define R_SPARC_LM22		36
-#define R_SPARC_PC_HH22		37
-#define R_SPARC_PC_HM10		38
-#define R_SPARC_PC_LM22		39
-#define R_SPARC_WDISP16		40
-#define R_SPARC_WDISP19		41
-#define R_SPARC_GLOB_JMP	42
-#define R_SPARC_7		43
-#define R_SPARC_5		44
-#define R_SPARC_6		45
-#define R_SPARC_DISP64		46
-#define R_SPARC_PLT64		47
-#define R_SPARC_HIX22		48
-#define R_SPARC_LOX10		49
-#define R_SPARC_H44		50
-#define R_SPARC_M44		51
-#define R_SPARC_L44		52
-#define R_SPARC_REGISTER	53
-#define R_SPARC_UA64		54
-#define R_SPARC_UA16		55
-#define R_SPARC_TLS_GD_HI22	56
-#define R_SPARC_TLS_GD_LO10	57
-#define R_SPARC_TLS_GD_ADD	58
-#define R_SPARC_TLS_GD_CALL	59
-#define R_SPARC_TLS_LDM_HI22	60
-#define R_SPARC_TLS_LDM_LO10	61
-#define R_SPARC_TLS_LDM_ADD	62
-#define R_SPARC_TLS_LDM_CALL	63
-#define R_SPARC_TLS_LDO_HIX22	64
-#define R_SPARC_TLS_LDO_LOX10	65
-#define R_SPARC_TLS_LDO_ADD	66
-#define R_SPARC_TLS_IE_HI22	67
-#define R_SPARC_TLS_IE_LO10	68
-#define R_SPARC_TLS_IE_LD	69
-#define R_SPARC_TLS_IE_LDX	70
-#define R_SPARC_TLS_IE_ADD	71
-#define R_SPARC_TLS_LE_HIX22	72
-#define R_SPARC_TLS_LE_LOX10	73
-#define R_SPARC_TLS_DTPMOD32	74
-#define R_SPARC_TLS_DTPMOD64	75
-#define R_SPARC_TLS_DTPOFF32	76
-#define R_SPARC_TLS_DTPOFF64	77
-#define R_SPARC_TLS_TPOFF32	78
-#define R_SPARC_TLS_TPOFF64	79
-#define R_SPARC_GOTDATA_HIX22	80
-#define R_SPARC_GOTDATA_LOX10	81
-#define R_SPARC_GOTDATA_OP_HIX22	82
-#define R_SPARC_GOTDATA_OP_LOX10	83
-#define R_SPARC_GOTDATA_OP	84
-#define R_SPARC_H34		85
-#define R_SPARC_SIZE32		86
-#define R_SPARC_SIZE64		87
-#define R_SPARC_GNU_VTINHERIT	250
-#define R_SPARC_GNU_VTENTRY	251
-#define R_SPARC_REV32		252
-
-#define R_SPARC_NUM		253
-
-
+#define R_SPARC_NUM 253
 
 #define DT_SPARC_REGISTER 0x70000001
-#define DT_SPARC_NUM	2
+#define DT_SPARC_NUM 2
 
-
-#define EF_MIPS_NOREORDER   1
-#define EF_MIPS_PIC	    2
-#define EF_MIPS_CPIC	    4
-#define EF_MIPS_XGOT	    8
+#define EF_MIPS_NOREORDER 1
+#define EF_MIPS_PIC 2
+#define EF_MIPS_CPIC 4
+#define EF_MIPS_XGOT 8
 #define EF_MIPS_64BIT_WHIRL 16
-#define EF_MIPS_ABI2	    32
-#define EF_MIPS_ABI_ON32    64
-#define EF_MIPS_NAN2008     1024
-#define EF_MIPS_ARCH	    0xf0000000
+#define EF_MIPS_ABI2 32
+#define EF_MIPS_ABI_ON32 64
+#define EF_MIPS_NAN2008 1024
+#define EF_MIPS_ARCH 0xf0000000
 
+#define EF_MIPS_ARCH_1 0x00000000
+#define EF_MIPS_ARCH_2 0x10000000
+#define EF_MIPS_ARCH_3 0x20000000
+#define EF_MIPS_ARCH_4 0x30000000
+#define EF_MIPS_ARCH_5 0x40000000
+#define EF_MIPS_ARCH_32 0x50000000
+#define EF_MIPS_ARCH_64 0x60000000
+#define EF_MIPS_ARCH_32R2 0x70000000
+#define EF_MIPS_ARCH_64R2 0x80000000
 
+#define E_MIPS_ARCH_1 0x00000000
+#define E_MIPS_ARCH_2 0x10000000
+#define E_MIPS_ARCH_3 0x20000000
+#define E_MIPS_ARCH_4 0x30000000
+#define E_MIPS_ARCH_5 0x40000000
+#define E_MIPS_ARCH_32 0x50000000
+#define E_MIPS_ARCH_64 0x60000000
 
-#define EF_MIPS_ARCH_1	    0x00000000
-#define EF_MIPS_ARCH_2	    0x10000000
-#define EF_MIPS_ARCH_3	    0x20000000
-#define EF_MIPS_ARCH_4	    0x30000000
-#define EF_MIPS_ARCH_5	    0x40000000
-#define EF_MIPS_ARCH_32     0x50000000
-#define EF_MIPS_ARCH_64     0x60000000
-#define EF_MIPS_ARCH_32R2   0x70000000
-#define EF_MIPS_ARCH_64R2   0x80000000
-
-
-#define E_MIPS_ARCH_1	  0x00000000
-#define E_MIPS_ARCH_2	  0x10000000
-#define E_MIPS_ARCH_3	  0x20000000
-#define E_MIPS_ARCH_4	  0x30000000
-#define E_MIPS_ARCH_5	  0x40000000
-#define E_MIPS_ARCH_32	  0x50000000
-#define E_MIPS_ARCH_64	  0x60000000
-
-
-
-#define SHN_MIPS_ACOMMON    0xff00
-#define SHN_MIPS_TEXT	    0xff01
-#define SHN_MIPS_DATA	    0xff02
-#define SHN_MIPS_SCOMMON    0xff03
+#define SHN_MIPS_ACOMMON 0xff00
+#define SHN_MIPS_TEXT 0xff01
+#define SHN_MIPS_DATA 0xff02
+#define SHN_MIPS_SCOMMON 0xff03
 #define SHN_MIPS_SUNDEFINED 0xff04
 
-
-
-#define SHT_MIPS_LIBLIST       0x70000000
-#define SHT_MIPS_MSYM	       0x70000001
-#define SHT_MIPS_CONFLICT      0x70000002
-#define SHT_MIPS_GPTAB	       0x70000003
-#define SHT_MIPS_UCODE	       0x70000004
-#define SHT_MIPS_DEBUG	       0x70000005
-#define SHT_MIPS_REGINFO       0x70000006
-#define SHT_MIPS_PACKAGE       0x70000007
-#define SHT_MIPS_PACKSYM       0x70000008
-#define SHT_MIPS_RELD	       0x70000009
-#define SHT_MIPS_IFACE         0x7000000b
-#define SHT_MIPS_CONTENT       0x7000000c
-#define SHT_MIPS_OPTIONS       0x7000000d
-#define SHT_MIPS_SHDR	       0x70000010
-#define SHT_MIPS_FDESC	       0x70000011
-#define SHT_MIPS_EXTSYM	       0x70000012
-#define SHT_MIPS_DENSE	       0x70000013
-#define SHT_MIPS_PDESC	       0x70000014
-#define SHT_MIPS_LOCSYM	       0x70000015
-#define SHT_MIPS_AUXSYM	       0x70000016
-#define SHT_MIPS_OPTSYM	       0x70000017
-#define SHT_MIPS_LOCSTR	       0x70000018
-#define SHT_MIPS_LINE	       0x70000019
-#define SHT_MIPS_RFDESC	       0x7000001a
-#define SHT_MIPS_DELTASYM      0x7000001b
-#define SHT_MIPS_DELTAINST     0x7000001c
-#define SHT_MIPS_DELTACLASS    0x7000001d
-#define SHT_MIPS_DWARF         0x7000001e
-#define SHT_MIPS_DELTADECL     0x7000001f
-#define SHT_MIPS_SYMBOL_LIB    0x70000020
-#define SHT_MIPS_EVENTS	       0x70000021
-#define SHT_MIPS_TRANSLATE     0x70000022
-#define SHT_MIPS_PIXIE	       0x70000023
-#define SHT_MIPS_XLATE	       0x70000024
-#define SHT_MIPS_XLATE_DEBUG   0x70000025
-#define SHT_MIPS_WHIRL	       0x70000026
-#define SHT_MIPS_EH_REGION     0x70000027
-#define SHT_MIPS_XLATE_OLD     0x70000028
+#define SHT_MIPS_LIBLIST 0x70000000
+#define SHT_MIPS_MSYM 0x70000001
+#define SHT_MIPS_CONFLICT 0x70000002
+#define SHT_MIPS_GPTAB 0x70000003
+#define SHT_MIPS_UCODE 0x70000004
+#define SHT_MIPS_DEBUG 0x70000005
+#define SHT_MIPS_REGINFO 0x70000006
+#define SHT_MIPS_PACKAGE 0x70000007
+#define SHT_MIPS_PACKSYM 0x70000008
+#define SHT_MIPS_RELD 0x70000009
+#define SHT_MIPS_IFACE 0x7000000b
+#define SHT_MIPS_CONTENT 0x7000000c
+#define SHT_MIPS_OPTIONS 0x7000000d
+#define SHT_MIPS_SHDR 0x70000010
+#define SHT_MIPS_FDESC 0x70000011
+#define SHT_MIPS_EXTSYM 0x70000012
+#define SHT_MIPS_DENSE 0x70000013
+#define SHT_MIPS_PDESC 0x70000014
+#define SHT_MIPS_LOCSYM 0x70000015
+#define SHT_MIPS_AUXSYM 0x70000016
+#define SHT_MIPS_OPTSYM 0x70000017
+#define SHT_MIPS_LOCSTR 0x70000018
+#define SHT_MIPS_LINE 0x70000019
+#define SHT_MIPS_RFDESC 0x7000001a
+#define SHT_MIPS_DELTASYM 0x7000001b
+#define SHT_MIPS_DELTAINST 0x7000001c
+#define SHT_MIPS_DELTACLASS 0x7000001d
+#define SHT_MIPS_DWARF 0x7000001e
+#define SHT_MIPS_DELTADECL 0x7000001f
+#define SHT_MIPS_SYMBOL_LIB 0x70000020
+#define SHT_MIPS_EVENTS 0x70000021
+#define SHT_MIPS_TRANSLATE 0x70000022
+#define SHT_MIPS_PIXIE 0x70000023
+#define SHT_MIPS_XLATE 0x70000024
+#define SHT_MIPS_XLATE_DEBUG 0x70000025
+#define SHT_MIPS_WHIRL 0x70000026
+#define SHT_MIPS_EH_REGION 0x70000027
+#define SHT_MIPS_XLATE_OLD 0x70000028
 #define SHT_MIPS_PDR_EXCEPTION 0x70000029
 
-
-
-#define SHF_MIPS_GPREL	 0x10000000
-#define SHF_MIPS_MERGE	 0x20000000
-#define SHF_MIPS_ADDR	 0x40000000
+#define SHF_MIPS_GPREL 0x10000000
+#define SHF_MIPS_MERGE 0x20000000
+#define SHF_MIPS_ADDR 0x40000000
 #define SHF_MIPS_STRINGS 0x80000000
 #define SHF_MIPS_NOSTRIP 0x08000000
-#define SHF_MIPS_LOCAL	 0x04000000
-#define SHF_MIPS_NAMES	 0x02000000
-#define SHF_MIPS_NODUPE	 0x01000000
+#define SHF_MIPS_LOCAL 0x04000000
+#define SHF_MIPS_NAMES 0x02000000
+#define SHF_MIPS_NODUPE 0x01000000
 
+#define STO_MIPS_DEFAULT 0x0
+#define STO_MIPS_INTERNAL 0x1
+#define STO_MIPS_HIDDEN 0x2
+#define STO_MIPS_PROTECTED 0x3
+#define STO_MIPS_PLT 0x8
+#define STO_MIPS_SC_ALIGN_UNUSED 0xff
 
-
-
-
-#define STO_MIPS_DEFAULT		0x0
-#define STO_MIPS_INTERNAL		0x1
-#define STO_MIPS_HIDDEN			0x2
-#define STO_MIPS_PROTECTED		0x3
-#define STO_MIPS_PLT			0x8
-#define STO_MIPS_SC_ALIGN_UNUSED	0xff
-
-
-#define STB_MIPS_SPLIT_COMMON		13
-
-
+#define STB_MIPS_SPLIT_COMMON 13
 
 typedef union {
   struct {
-      Elf32_Word gt_current_g_value;
-      Elf32_Word gt_unused;
+    Elf32_Word gt_current_g_value;
+    Elf32_Word gt_unused;
   } gt_header;
   struct {
-      Elf32_Word gt_g_value;
-      Elf32_Word gt_bytes;
+    Elf32_Word gt_g_value;
+    Elf32_Word gt_bytes;
   } gt_entry;
 } Elf32_gptab;
 
-
-
 typedef struct {
-  Elf32_Word	ri_gprmask;
-  Elf32_Word	ri_cprmask[4];
-  Elf32_Sword	ri_gp_value;
+  Elf32_Word ri_gprmask;
+  Elf32_Word ri_cprmask[4];
+  Elf32_Sword ri_gp_value;
 } Elf32_RegInfo;
 
-
-
 typedef struct {
   unsigned char kind;
 
@@ -1284,153 +1161,135 @@
   Elf32_Word info;
 } Elf_Options;
 
+#define ODK_NULL 0
+#define ODK_REGINFO 1
+#define ODK_EXCEPTIONS 2
+#define ODK_PAD 3
+#define ODK_HWPATCH 4
+#define ODK_FILL 5
+#define ODK_TAGS 6
+#define ODK_HWAND 7
+#define ODK_HWOR 8
 
+#define OEX_FPU_MIN 0x1f
+#define OEX_FPU_MAX 0x1f00
+#define OEX_PAGE0 0x10000
+#define OEX_SMM 0x20000
+#define OEX_FPDBUG 0x40000
+#define OEX_PRECISEFP OEX_FPDBUG
+#define OEX_DISMISS 0x80000
 
-#define ODK_NULL	0
-#define ODK_REGINFO	1
-#define ODK_EXCEPTIONS	2
-#define ODK_PAD		3
-#define ODK_HWPATCH	4
-#define ODK_FILL	5
-#define ODK_TAGS	6
-#define ODK_HWAND	7
-#define ODK_HWOR	8
+#define OEX_FPU_INVAL 0x10
+#define OEX_FPU_DIV0 0x08
+#define OEX_FPU_OFLO 0x04
+#define OEX_FPU_UFLO 0x02
+#define OEX_FPU_INEX 0x01
 
+#define OHW_R4KEOP 0x1
+#define OHW_R8KPFETCH 0x2
+#define OHW_R5KEOP 0x4
+#define OHW_R5KCVTL 0x8
 
-
-#define OEX_FPU_MIN	0x1f
-#define OEX_FPU_MAX	0x1f00
-#define OEX_PAGE0	0x10000
-#define OEX_SMM		0x20000
-#define OEX_FPDBUG	0x40000
-#define OEX_PRECISEFP	OEX_FPDBUG
-#define OEX_DISMISS	0x80000
-
-#define OEX_FPU_INVAL	0x10
-#define OEX_FPU_DIV0	0x08
-#define OEX_FPU_OFLO	0x04
-#define OEX_FPU_UFLO	0x02
-#define OEX_FPU_INEX	0x01
-
-
-
-#define OHW_R4KEOP	0x1
-#define OHW_R8KPFETCH	0x2
-#define OHW_R5KEOP	0x4
-#define OHW_R5KCVTL	0x8
-
-#define OPAD_PREFIX	0x1
-#define OPAD_POSTFIX	0x2
-#define OPAD_SYMBOL	0x4
-
-
+#define OPAD_PREFIX 0x1
+#define OPAD_POSTFIX 0x2
+#define OPAD_SYMBOL 0x4
 
 typedef struct {
   Elf32_Word hwp_flags1;
   Elf32_Word hwp_flags2;
 } Elf_Options_Hw;
 
+#define OHWA0_R4KEOP_CHECKED 0x00000001
+#define OHWA1_R4KEOP_CLEAN 0x00000002
 
+#define R_MIPS_NONE 0
+#define R_MIPS_16 1
+#define R_MIPS_32 2
+#define R_MIPS_REL32 3
+#define R_MIPS_26 4
+#define R_MIPS_HI16 5
+#define R_MIPS_LO16 6
+#define R_MIPS_GPREL16 7
+#define R_MIPS_LITERAL 8
+#define R_MIPS_GOT16 9
+#define R_MIPS_PC16 10
+#define R_MIPS_CALL16 11
+#define R_MIPS_GPREL32 12
 
-#define OHWA0_R4KEOP_CHECKED	0x00000001
-#define OHWA1_R4KEOP_CLEAN	0x00000002
+#define R_MIPS_SHIFT5 16
+#define R_MIPS_SHIFT6 17
+#define R_MIPS_64 18
+#define R_MIPS_GOT_DISP 19
+#define R_MIPS_GOT_PAGE 20
+#define R_MIPS_GOT_OFST 21
+#define R_MIPS_GOT_HI16 22
+#define R_MIPS_GOT_LO16 23
+#define R_MIPS_SUB 24
+#define R_MIPS_INSERT_A 25
+#define R_MIPS_INSERT_B 26
+#define R_MIPS_DELETE 27
+#define R_MIPS_HIGHER 28
+#define R_MIPS_HIGHEST 29
+#define R_MIPS_CALL_HI16 30
+#define R_MIPS_CALL_LO16 31
+#define R_MIPS_SCN_DISP 32
+#define R_MIPS_REL16 33
+#define R_MIPS_ADD_IMMEDIATE 34
+#define R_MIPS_PJUMP 35
+#define R_MIPS_RELGOT 36
+#define R_MIPS_JALR 37
+#define R_MIPS_TLS_DTPMOD32 38
+#define R_MIPS_TLS_DTPREL32 39
+#define R_MIPS_TLS_DTPMOD64 40
+#define R_MIPS_TLS_DTPREL64 41
+#define R_MIPS_TLS_GD 42
+#define R_MIPS_TLS_LDM 43
+#define R_MIPS_TLS_DTPREL_HI16 44
+#define R_MIPS_TLS_DTPREL_LO16 45
+#define R_MIPS_TLS_GOTTPREL 46
+#define R_MIPS_TLS_TPREL32 47
+#define R_MIPS_TLS_TPREL64 48
+#define R_MIPS_TLS_TPREL_HI16 49
+#define R_MIPS_TLS_TPREL_LO16 50
+#define R_MIPS_GLOB_DAT 51
+#define R_MIPS_COPY 126
+#define R_MIPS_JUMP_SLOT 127
 
+#define R_MIPS_NUM 128
 
-
-#define R_MIPS_NONE		0
-#define R_MIPS_16		1
-#define R_MIPS_32		2
-#define R_MIPS_REL32		3
-#define R_MIPS_26		4
-#define R_MIPS_HI16		5
-#define R_MIPS_LO16		6
-#define R_MIPS_GPREL16		7
-#define R_MIPS_LITERAL		8
-#define R_MIPS_GOT16		9
-#define R_MIPS_PC16		10
-#define R_MIPS_CALL16		11
-#define R_MIPS_GPREL32		12
-
-#define R_MIPS_SHIFT5		16
-#define R_MIPS_SHIFT6		17
-#define R_MIPS_64		18
-#define R_MIPS_GOT_DISP		19
-#define R_MIPS_GOT_PAGE		20
-#define R_MIPS_GOT_OFST		21
-#define R_MIPS_GOT_HI16		22
-#define R_MIPS_GOT_LO16		23
-#define R_MIPS_SUB		24
-#define R_MIPS_INSERT_A		25
-#define R_MIPS_INSERT_B		26
-#define R_MIPS_DELETE		27
-#define R_MIPS_HIGHER		28
-#define R_MIPS_HIGHEST		29
-#define R_MIPS_CALL_HI16	30
-#define R_MIPS_CALL_LO16	31
-#define R_MIPS_SCN_DISP		32
-#define R_MIPS_REL16		33
-#define R_MIPS_ADD_IMMEDIATE	34
-#define R_MIPS_PJUMP		35
-#define R_MIPS_RELGOT		36
-#define R_MIPS_JALR		37
-#define R_MIPS_TLS_DTPMOD32	38
-#define R_MIPS_TLS_DTPREL32	39
-#define R_MIPS_TLS_DTPMOD64	40
-#define R_MIPS_TLS_DTPREL64	41
-#define R_MIPS_TLS_GD		42
-#define R_MIPS_TLS_LDM		43
-#define R_MIPS_TLS_DTPREL_HI16	44
-#define R_MIPS_TLS_DTPREL_LO16	45
-#define R_MIPS_TLS_GOTTPREL	46
-#define R_MIPS_TLS_TPREL32	47
-#define R_MIPS_TLS_TPREL64	48
-#define R_MIPS_TLS_TPREL_HI16	49
-#define R_MIPS_TLS_TPREL_LO16	50
-#define R_MIPS_GLOB_DAT		51
-#define R_MIPS_COPY		126
-#define R_MIPS_JUMP_SLOT        127
-
-#define R_MIPS_NUM		128
-
-
-
-#define PT_MIPS_REGINFO	0x70000000
-#define PT_MIPS_RTPROC  0x70000001
+#define PT_MIPS_REGINFO 0x70000000
+#define PT_MIPS_RTPROC 0x70000001
 #define PT_MIPS_OPTIONS 0x70000002
 
+#define PF_MIPS_LOCAL 0x10000000
 
-
-#define PF_MIPS_LOCAL	0x10000000
-
-
-
-#define DT_MIPS_RLD_VERSION  0x70000001
-#define DT_MIPS_TIME_STAMP   0x70000002
-#define DT_MIPS_ICHECKSUM    0x70000003
-#define DT_MIPS_IVERSION     0x70000004
-#define DT_MIPS_FLAGS	     0x70000005
+#define DT_MIPS_RLD_VERSION 0x70000001
+#define DT_MIPS_TIME_STAMP 0x70000002
+#define DT_MIPS_ICHECKSUM 0x70000003
+#define DT_MIPS_IVERSION 0x70000004
+#define DT_MIPS_FLAGS 0x70000005
 #define DT_MIPS_BASE_ADDRESS 0x70000006
-#define DT_MIPS_MSYM	     0x70000007
-#define DT_MIPS_CONFLICT     0x70000008
-#define DT_MIPS_LIBLIST	     0x70000009
-#define DT_MIPS_LOCAL_GOTNO  0x7000000a
-#define DT_MIPS_CONFLICTNO   0x7000000b
-#define DT_MIPS_LIBLISTNO    0x70000010
-#define DT_MIPS_SYMTABNO     0x70000011
-#define DT_MIPS_UNREFEXTNO   0x70000012
-#define DT_MIPS_GOTSYM	     0x70000013
-#define DT_MIPS_HIPAGENO     0x70000014
-#define DT_MIPS_RLD_MAP	     0x70000016
-#define DT_MIPS_DELTA_CLASS  0x70000017
-#define DT_MIPS_DELTA_CLASS_NO    0x70000018
+#define DT_MIPS_MSYM 0x70000007
+#define DT_MIPS_CONFLICT 0x70000008
+#define DT_MIPS_LIBLIST 0x70000009
+#define DT_MIPS_LOCAL_GOTNO 0x7000000a
+#define DT_MIPS_CONFLICTNO 0x7000000b
+#define DT_MIPS_LIBLISTNO 0x70000010
+#define DT_MIPS_SYMTABNO 0x70000011
+#define DT_MIPS_UNREFEXTNO 0x70000012
+#define DT_MIPS_GOTSYM 0x70000013
+#define DT_MIPS_HIPAGENO 0x70000014
+#define DT_MIPS_RLD_MAP 0x70000016
+#define DT_MIPS_DELTA_CLASS 0x70000017
+#define DT_MIPS_DELTA_CLASS_NO 0x70000018
 
-#define DT_MIPS_DELTA_INSTANCE    0x70000019
+#define DT_MIPS_DELTA_INSTANCE 0x70000019
 #define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a
 
-#define DT_MIPS_DELTA_RELOC  0x7000001b
+#define DT_MIPS_DELTA_RELOC 0x7000001b
 #define DT_MIPS_DELTA_RELOC_NO 0x7000001c
 
-#define DT_MIPS_DELTA_SYM    0x7000001d
+#define DT_MIPS_DELTA_SYM 0x7000001d
 
 #define DT_MIPS_DELTA_SYM_NO 0x7000001e
 
@@ -1438,53 +1297,48 @@
 
 #define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021
 
-#define DT_MIPS_CXX_FLAGS    0x70000022
-#define DT_MIPS_PIXIE_INIT   0x70000023
-#define DT_MIPS_SYMBOL_LIB   0x70000024
+#define DT_MIPS_CXX_FLAGS 0x70000022
+#define DT_MIPS_PIXIE_INIT 0x70000023
+#define DT_MIPS_SYMBOL_LIB 0x70000024
 #define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025
 #define DT_MIPS_LOCAL_GOTIDX 0x70000026
 #define DT_MIPS_HIDDEN_GOTIDX 0x70000027
 #define DT_MIPS_PROTECTED_GOTIDX 0x70000028
-#define DT_MIPS_OPTIONS	     0x70000029
-#define DT_MIPS_INTERFACE    0x7000002a
+#define DT_MIPS_OPTIONS 0x70000029
+#define DT_MIPS_INTERFACE 0x7000002a
 #define DT_MIPS_DYNSTR_ALIGN 0x7000002b
 #define DT_MIPS_INTERFACE_SIZE 0x7000002c
 #define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d
 
-#define DT_MIPS_PERF_SUFFIX  0x7000002e
+#define DT_MIPS_PERF_SUFFIX 0x7000002e
 
 #define DT_MIPS_COMPACT_SIZE 0x7000002f
-#define DT_MIPS_GP_VALUE     0x70000030
-#define DT_MIPS_AUX_DYNAMIC  0x70000031
+#define DT_MIPS_GP_VALUE 0x70000030
+#define DT_MIPS_AUX_DYNAMIC 0x70000031
 
-#define DT_MIPS_PLTGOT	     0x70000032
+#define DT_MIPS_PLTGOT 0x70000032
 
-#define DT_MIPS_RWPLT        0x70000034
-#define DT_MIPS_NUM	     0x35
+#define DT_MIPS_RWPLT 0x70000034
+#define DT_MIPS_NUM 0x35
 
-
-
-#define RHF_NONE		   0
-#define RHF_QUICKSTART		   (1 << 0)
-#define RHF_NOTPOT		   (1 << 1)
+#define RHF_NONE 0
+#define RHF_QUICKSTART (1 << 0)
+#define RHF_NOTPOT (1 << 1)
 #define RHF_NO_LIBRARY_REPLACEMENT (1 << 2)
-#define RHF_NO_MOVE		   (1 << 3)
-#define RHF_SGI_ONLY		   (1 << 4)
-#define RHF_GUARANTEE_INIT	   (1 << 5)
-#define RHF_DELTA_C_PLUS_PLUS	   (1 << 6)
-#define RHF_GUARANTEE_START_INIT   (1 << 7)
-#define RHF_PIXIE		   (1 << 8)
-#define RHF_DEFAULT_DELAY_LOAD	   (1 << 9)
-#define RHF_REQUICKSTART	   (1 << 10)
-#define RHF_REQUICKSTARTED	   (1 << 11)
-#define RHF_CORD		   (1 << 12)
-#define RHF_NO_UNRES_UNDEF	   (1 << 13)
-#define RHF_RLD_ORDER_SAFE	   (1 << 14)
+#define RHF_NO_MOVE (1 << 3)
+#define RHF_SGI_ONLY (1 << 4)
+#define RHF_GUARANTEE_INIT (1 << 5)
+#define RHF_DELTA_C_PLUS_PLUS (1 << 6)
+#define RHF_GUARANTEE_START_INIT (1 << 7)
+#define RHF_PIXIE (1 << 8)
+#define RHF_DEFAULT_DELAY_LOAD (1 << 9)
+#define RHF_REQUICKSTART (1 << 10)
+#define RHF_REQUICKSTARTED (1 << 11)
+#define RHF_CORD (1 << 12)
+#define RHF_NO_UNRES_UNDEF (1 << 13)
+#define RHF_RLD_ORDER_SAFE (1 << 14)
 
-
-
-typedef struct
-{
+typedef struct {
   Elf32_Word l_name;
   Elf32_Word l_time_stamp;
   Elf32_Word l_checksum;
@@ -1492,8 +1346,7 @@
   Elf32_Word l_flags;
 } Elf32_Lib;
 
-typedef struct
-{
+typedef struct {
   Elf64_Word l_name;
   Elf64_Word l_time_stamp;
   Elf64_Word l_checksum;
@@ -1501,632 +1354,559 @@
   Elf64_Word l_flags;
 } Elf64_Lib;
 
-
-
-
-#define LL_NONE		  0
-#define LL_EXACT_MATCH	  (1 << 0)
+#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 LL_REQUIRE_MINOR (1 << 2)
+#define LL_EXPORTS (1 << 3)
+#define LL_DELAY_LOAD (1 << 4)
+#define LL_DELTA (1 << 5)
 
 typedef Elf32_Addr Elf32_Conflict;
 
+#define EF_PARISC_TRAPNIL 0x00010000
+#define EF_PARISC_EXT 0x00020000
+#define EF_PARISC_LSB 0x00040000
+#define EF_PARISC_WIDE 0x00080000
+#define EF_PARISC_NO_KABP 0x00100000
 
+#define EF_PARISC_LAZYSWAP 0x00400000
+#define EF_PARISC_ARCH 0x0000ffff
 
+#define EFA_PARISC_1_0 0x020b
+#define EFA_PARISC_1_1 0x0210
+#define EFA_PARISC_2_0 0x0214
 
+#define SHN_PARISC_ANSI_COMMON 0xff00
 
+#define SHN_PARISC_HUGE_COMMON 0xff01
 
-#define EF_PARISC_TRAPNIL	0x00010000
-#define EF_PARISC_EXT		0x00020000
-#define EF_PARISC_LSB		0x00040000
-#define EF_PARISC_WIDE		0x00080000
-#define EF_PARISC_NO_KABP	0x00100000
+#define SHT_PARISC_EXT 0x70000000
+#define SHT_PARISC_UNWIND 0x70000001
+#define SHT_PARISC_DOC 0x70000002
 
-#define EF_PARISC_LAZYSWAP	0x00400000
-#define EF_PARISC_ARCH		0x0000ffff
+#define SHF_PARISC_SHORT 0x20000000
+#define SHF_PARISC_HUGE 0x40000000
+#define SHF_PARISC_SBP 0x80000000
 
+#define STT_PARISC_MILLICODE 13
 
+#define STT_HP_OPAQUE (STT_LOOS + 0x1)
+#define STT_HP_STUB (STT_LOOS + 0x2)
 
-#define EFA_PARISC_1_0		    0x020b
-#define EFA_PARISC_1_1		    0x0210
-#define EFA_PARISC_2_0		    0x0214
+#define R_PARISC_NONE 0
+#define R_PARISC_DIR32 1
+#define R_PARISC_DIR21L 2
+#define R_PARISC_DIR17R 3
+#define R_PARISC_DIR17F 4
+#define R_PARISC_DIR14R 6
+#define R_PARISC_PCREL32 9
+#define R_PARISC_PCREL21L 10
+#define R_PARISC_PCREL17R 11
+#define R_PARISC_PCREL17F 12
+#define R_PARISC_PCREL14R 14
+#define R_PARISC_DPREL21L 18
+#define R_PARISC_DPREL14R 22
+#define R_PARISC_GPREL21L 26
+#define R_PARISC_GPREL14R 30
+#define R_PARISC_LTOFF21L 34
+#define R_PARISC_LTOFF14R 38
+#define R_PARISC_SECREL32 41
+#define R_PARISC_SEGBASE 48
+#define R_PARISC_SEGREL32 49
+#define R_PARISC_PLTOFF21L 50
+#define R_PARISC_PLTOFF14R 54
+#define R_PARISC_LTOFF_FPTR32 57
+#define R_PARISC_LTOFF_FPTR21L 58
+#define R_PARISC_LTOFF_FPTR14R 62
+#define R_PARISC_FPTR64 64
+#define R_PARISC_PLABEL32 65
+#define R_PARISC_PLABEL21L 66
+#define R_PARISC_PLABEL14R 70
+#define R_PARISC_PCREL64 72
+#define R_PARISC_PCREL22F 74
+#define R_PARISC_PCREL14WR 75
+#define R_PARISC_PCREL14DR 76
+#define R_PARISC_PCREL16F 77
+#define R_PARISC_PCREL16WF 78
+#define R_PARISC_PCREL16DF 79
+#define R_PARISC_DIR64 80
+#define R_PARISC_DIR14WR 83
+#define R_PARISC_DIR14DR 84
+#define R_PARISC_DIR16F 85
+#define R_PARISC_DIR16WF 86
+#define R_PARISC_DIR16DF 87
+#define R_PARISC_GPREL64 88
+#define R_PARISC_GPREL14WR 91
+#define R_PARISC_GPREL14DR 92
+#define R_PARISC_GPREL16F 93
+#define R_PARISC_GPREL16WF 94
+#define R_PARISC_GPREL16DF 95
+#define R_PARISC_LTOFF64 96
+#define R_PARISC_LTOFF14WR 99
+#define R_PARISC_LTOFF14DR 100
+#define R_PARISC_LTOFF16F 101
+#define R_PARISC_LTOFF16WF 102
+#define R_PARISC_LTOFF16DF 103
+#define R_PARISC_SECREL64 104
+#define R_PARISC_SEGREL64 112
+#define R_PARISC_PLTOFF14WR 115
+#define R_PARISC_PLTOFF14DR 116
+#define R_PARISC_PLTOFF16F 117
+#define R_PARISC_PLTOFF16WF 118
+#define R_PARISC_PLTOFF16DF 119
+#define R_PARISC_LTOFF_FPTR64 120
+#define R_PARISC_LTOFF_FPTR14WR 123
+#define R_PARISC_LTOFF_FPTR14DR 124
+#define R_PARISC_LTOFF_FPTR16F 125
+#define R_PARISC_LTOFF_FPTR16WF 126
+#define R_PARISC_LTOFF_FPTR16DF 127
+#define R_PARISC_LORESERVE 128
+#define R_PARISC_COPY 128
+#define R_PARISC_IPLT 129
+#define R_PARISC_EPLT 130
+#define R_PARISC_TPREL32 153
+#define R_PARISC_TPREL21L 154
+#define R_PARISC_TPREL14R 158
+#define R_PARISC_LTOFF_TP21L 162
+#define R_PARISC_LTOFF_TP14R 166
+#define R_PARISC_LTOFF_TP14F 167
+#define R_PARISC_TPREL64 216
+#define R_PARISC_TPREL14WR 219
+#define R_PARISC_TPREL14DR 220
+#define R_PARISC_TPREL16F 221
+#define R_PARISC_TPREL16WF 222
+#define R_PARISC_TPREL16DF 223
+#define R_PARISC_LTOFF_TP64 224
+#define R_PARISC_LTOFF_TP14WR 227
+#define R_PARISC_LTOFF_TP14DR 228
+#define R_PARISC_LTOFF_TP16F 229
+#define R_PARISC_LTOFF_TP16WF 230
+#define R_PARISC_LTOFF_TP16DF 231
+#define R_PARISC_GNU_VTENTRY 232
+#define R_PARISC_GNU_VTINHERIT 233
+#define R_PARISC_TLS_GD21L 234
+#define R_PARISC_TLS_GD14R 235
+#define R_PARISC_TLS_GDCALL 236
+#define R_PARISC_TLS_LDM21L 237
+#define R_PARISC_TLS_LDM14R 238
+#define R_PARISC_TLS_LDMCALL 239
+#define R_PARISC_TLS_LDO21L 240
+#define R_PARISC_TLS_LDO14R 241
+#define R_PARISC_TLS_DTPMOD32 242
+#define R_PARISC_TLS_DTPMOD64 243
+#define R_PARISC_TLS_DTPOFF32 244
+#define R_PARISC_TLS_DTPOFF64 245
+#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L
+#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R
+#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L
+#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R
+#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32
+#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64
+#define R_PARISC_HIRESERVE 255
 
+#define PT_HP_TLS (PT_LOOS + 0x0)
+#define PT_HP_CORE_NONE (PT_LOOS + 0x1)
+#define PT_HP_CORE_VERSION (PT_LOOS + 0x2)
+#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3)
+#define PT_HP_CORE_COMM (PT_LOOS + 0x4)
+#define PT_HP_CORE_PROC (PT_LOOS + 0x5)
+#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6)
+#define PT_HP_CORE_STACK (PT_LOOS + 0x7)
+#define PT_HP_CORE_SHM (PT_LOOS + 0x8)
+#define PT_HP_CORE_MMF (PT_LOOS + 0x9)
+#define PT_HP_PARALLEL (PT_LOOS + 0x10)
+#define PT_HP_FASTBIND (PT_LOOS + 0x11)
+#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12)
+#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13)
+#define PT_HP_STACK (PT_LOOS + 0x14)
 
+#define PT_PARISC_ARCHEXT 0x70000000
+#define PT_PARISC_UNWIND 0x70000001
 
-#define SHN_PARISC_ANSI_COMMON	0xff00
+#define PF_PARISC_SBP 0x08000000
 
-#define SHN_PARISC_HUGE_COMMON	0xff01
+#define PF_HP_PAGE_SIZE 0x00100000
+#define PF_HP_FAR_SHARED 0x00200000
+#define PF_HP_NEAR_SHARED 0x00400000
+#define PF_HP_CODE 0x01000000
+#define PF_HP_MODIFY 0x02000000
+#define PF_HP_LAZYSWAP 0x04000000
+#define PF_HP_SBP 0x08000000
 
+#define EF_ALPHA_32BIT 1
+#define EF_ALPHA_CANRELAX 2
 
+#define SHT_ALPHA_DEBUG 0x70000001
+#define SHT_ALPHA_REGINFO 0x70000002
 
-#define SHT_PARISC_EXT		0x70000000
-#define SHT_PARISC_UNWIND	0x70000001
-#define SHT_PARISC_DOC		0x70000002
+#define SHF_ALPHA_GPREL 0x10000000
 
+#define STO_ALPHA_NOPV 0x80
+#define STO_ALPHA_STD_GPLOAD 0x88
 
+#define R_ALPHA_NONE 0
+#define R_ALPHA_REFLONG 1
+#define R_ALPHA_REFQUAD 2
+#define R_ALPHA_GPREL32 3
+#define R_ALPHA_LITERAL 4
+#define R_ALPHA_LITUSE 5
+#define R_ALPHA_GPDISP 6
+#define R_ALPHA_BRADDR 7
+#define R_ALPHA_HINT 8
+#define R_ALPHA_SREL16 9
+#define R_ALPHA_SREL32 10
+#define R_ALPHA_SREL64 11
+#define R_ALPHA_GPRELHIGH 17
+#define R_ALPHA_GPRELLOW 18
+#define R_ALPHA_GPREL16 19
+#define R_ALPHA_COPY 24
+#define R_ALPHA_GLOB_DAT 25
+#define R_ALPHA_JMP_SLOT 26
+#define R_ALPHA_RELATIVE 27
+#define R_ALPHA_TLS_GD_HI 28
+#define R_ALPHA_TLSGD 29
+#define R_ALPHA_TLS_LDM 30
+#define R_ALPHA_DTPMOD64 31
+#define R_ALPHA_GOTDTPREL 32
+#define R_ALPHA_DTPREL64 33
+#define R_ALPHA_DTPRELHI 34
+#define R_ALPHA_DTPRELLO 35
+#define R_ALPHA_DTPREL16 36
+#define R_ALPHA_GOTTPREL 37
+#define R_ALPHA_TPREL64 38
+#define R_ALPHA_TPRELHI 39
+#define R_ALPHA_TPRELLO 40
+#define R_ALPHA_TPREL16 41
 
-#define SHF_PARISC_SHORT	0x20000000
-#define SHF_PARISC_HUGE		0x40000000
-#define SHF_PARISC_SBP		0x80000000
+#define R_ALPHA_NUM 46
 
+#define LITUSE_ALPHA_ADDR 0
+#define LITUSE_ALPHA_BASE 1
+#define LITUSE_ALPHA_BYTOFF 2
+#define LITUSE_ALPHA_JSR 3
+#define LITUSE_ALPHA_TLS_GD 4
+#define LITUSE_ALPHA_TLS_LDM 5
 
+#define DT_ALPHA_PLTRO (DT_LOPROC + 0)
+#define DT_ALPHA_NUM 1
 
-#define STT_PARISC_MILLICODE	13
+#define EF_PPC_EMB 0x80000000
 
-#define STT_HP_OPAQUE		(STT_LOOS + 0x1)
-#define STT_HP_STUB		(STT_LOOS + 0x2)
+#define EF_PPC_RELOCATABLE 0x00010000
+#define EF_PPC_RELOCATABLE_LIB 0x00008000
 
+#define R_PPC_NONE 0
+#define R_PPC_ADDR32 1
+#define R_PPC_ADDR24 2
+#define R_PPC_ADDR16 3
+#define R_PPC_ADDR16_LO 4
+#define R_PPC_ADDR16_HI 5
+#define R_PPC_ADDR16_HA 6
+#define R_PPC_ADDR14 7
+#define R_PPC_ADDR14_BRTAKEN 8
+#define R_PPC_ADDR14_BRNTAKEN 9
+#define R_PPC_REL24 10
+#define R_PPC_REL14 11
+#define R_PPC_REL14_BRTAKEN 12
+#define R_PPC_REL14_BRNTAKEN 13
+#define R_PPC_GOT16 14
+#define R_PPC_GOT16_LO 15
+#define R_PPC_GOT16_HI 16
+#define R_PPC_GOT16_HA 17
+#define R_PPC_PLTREL24 18
+#define R_PPC_COPY 19
+#define R_PPC_GLOB_DAT 20
+#define R_PPC_JMP_SLOT 21
+#define R_PPC_RELATIVE 22
+#define R_PPC_LOCAL24PC 23
+#define R_PPC_UADDR32 24
+#define R_PPC_UADDR16 25
+#define R_PPC_REL32 26
+#define R_PPC_PLT32 27
+#define R_PPC_PLTREL32 28
+#define R_PPC_PLT16_LO 29
+#define R_PPC_PLT16_HI 30
+#define R_PPC_PLT16_HA 31
+#define R_PPC_SDAREL16 32
+#define R_PPC_SECTOFF 33
+#define R_PPC_SECTOFF_LO 34
+#define R_PPC_SECTOFF_HI 35
+#define R_PPC_SECTOFF_HA 36
 
+#define R_PPC_TLS 67
+#define R_PPC_DTPMOD32 68
+#define R_PPC_TPREL16 69
+#define R_PPC_TPREL16_LO 70
+#define R_PPC_TPREL16_HI 71
+#define R_PPC_TPREL16_HA 72
+#define R_PPC_TPREL32 73
+#define R_PPC_DTPREL16 74
+#define R_PPC_DTPREL16_LO 75
+#define R_PPC_DTPREL16_HI 76
+#define R_PPC_DTPREL16_HA 77
+#define R_PPC_DTPREL32 78
+#define R_PPC_GOT_TLSGD16 79
+#define R_PPC_GOT_TLSGD16_LO 80
+#define R_PPC_GOT_TLSGD16_HI 81
+#define R_PPC_GOT_TLSGD16_HA 82
+#define R_PPC_GOT_TLSLD16 83
+#define R_PPC_GOT_TLSLD16_LO 84
+#define R_PPC_GOT_TLSLD16_HI 85
+#define R_PPC_GOT_TLSLD16_HA 86
+#define R_PPC_GOT_TPREL16 87
+#define R_PPC_GOT_TPREL16_LO 88
+#define R_PPC_GOT_TPREL16_HI 89
+#define R_PPC_GOT_TPREL16_HA 90
+#define R_PPC_GOT_DTPREL16 91
+#define R_PPC_GOT_DTPREL16_LO 92
+#define R_PPC_GOT_DTPREL16_HI 93
+#define R_PPC_GOT_DTPREL16_HA 94
 
-#define R_PARISC_NONE		0
-#define R_PARISC_DIR32		1
-#define R_PARISC_DIR21L		2
-#define R_PARISC_DIR17R		3
-#define R_PARISC_DIR17F		4
-#define R_PARISC_DIR14R		6
-#define R_PARISC_PCREL32	9
-#define R_PARISC_PCREL21L	10
-#define R_PARISC_PCREL17R	11
-#define R_PARISC_PCREL17F	12
-#define R_PARISC_PCREL14R	14
-#define R_PARISC_DPREL21L	18
-#define R_PARISC_DPREL14R	22
-#define R_PARISC_GPREL21L	26
-#define R_PARISC_GPREL14R	30
-#define R_PARISC_LTOFF21L	34
-#define R_PARISC_LTOFF14R	38
-#define R_PARISC_SECREL32	41
-#define R_PARISC_SEGBASE	48
-#define R_PARISC_SEGREL32	49
-#define R_PARISC_PLTOFF21L	50
-#define R_PARISC_PLTOFF14R	54
-#define R_PARISC_LTOFF_FPTR32	57
-#define R_PARISC_LTOFF_FPTR21L	58
-#define R_PARISC_LTOFF_FPTR14R	62
-#define R_PARISC_FPTR64		64
-#define R_PARISC_PLABEL32	65
-#define R_PARISC_PLABEL21L	66
-#define R_PARISC_PLABEL14R	70
-#define R_PARISC_PCREL64	72
-#define R_PARISC_PCREL22F	74
-#define R_PARISC_PCREL14WR	75
-#define R_PARISC_PCREL14DR	76
-#define R_PARISC_PCREL16F	77
-#define R_PARISC_PCREL16WF	78
-#define R_PARISC_PCREL16DF	79
-#define R_PARISC_DIR64		80
-#define R_PARISC_DIR14WR	83
-#define R_PARISC_DIR14DR	84
-#define R_PARISC_DIR16F		85
-#define R_PARISC_DIR16WF	86
-#define R_PARISC_DIR16DF	87
-#define R_PARISC_GPREL64	88
-#define R_PARISC_GPREL14WR	91
-#define R_PARISC_GPREL14DR	92
-#define R_PARISC_GPREL16F	93
-#define R_PARISC_GPREL16WF	94
-#define R_PARISC_GPREL16DF	95
-#define R_PARISC_LTOFF64	96
-#define R_PARISC_LTOFF14WR	99
-#define R_PARISC_LTOFF14DR	100
-#define R_PARISC_LTOFF16F	101
-#define R_PARISC_LTOFF16WF	102
-#define R_PARISC_LTOFF16DF	103
-#define R_PARISC_SECREL64	104
-#define R_PARISC_SEGREL64	112
-#define R_PARISC_PLTOFF14WR	115
-#define R_PARISC_PLTOFF14DR	116
-#define R_PARISC_PLTOFF16F	117
-#define R_PARISC_PLTOFF16WF	118
-#define R_PARISC_PLTOFF16DF	119
-#define R_PARISC_LTOFF_FPTR64	120
-#define R_PARISC_LTOFF_FPTR14WR	123
-#define R_PARISC_LTOFF_FPTR14DR	124
-#define R_PARISC_LTOFF_FPTR16F	125
-#define R_PARISC_LTOFF_FPTR16WF	126
-#define R_PARISC_LTOFF_FPTR16DF	127
-#define R_PARISC_LORESERVE	128
-#define R_PARISC_COPY		128
-#define R_PARISC_IPLT		129
-#define R_PARISC_EPLT		130
-#define R_PARISC_TPREL32	153
-#define R_PARISC_TPREL21L	154
-#define R_PARISC_TPREL14R	158
-#define R_PARISC_LTOFF_TP21L	162
-#define R_PARISC_LTOFF_TP14R	166
-#define R_PARISC_LTOFF_TP14F	167
-#define R_PARISC_TPREL64	216
-#define R_PARISC_TPREL14WR	219
-#define R_PARISC_TPREL14DR	220
-#define R_PARISC_TPREL16F	221
-#define R_PARISC_TPREL16WF	222
-#define R_PARISC_TPREL16DF	223
-#define R_PARISC_LTOFF_TP64	224
-#define R_PARISC_LTOFF_TP14WR	227
-#define R_PARISC_LTOFF_TP14DR	228
-#define R_PARISC_LTOFF_TP16F	229
-#define R_PARISC_LTOFF_TP16WF	230
-#define R_PARISC_LTOFF_TP16DF	231
-#define R_PARISC_GNU_VTENTRY	232
-#define R_PARISC_GNU_VTINHERIT	233
-#define R_PARISC_TLS_GD21L	234
-#define R_PARISC_TLS_GD14R	235
-#define R_PARISC_TLS_GDCALL	236
-#define R_PARISC_TLS_LDM21L	237
-#define R_PARISC_TLS_LDM14R	238
-#define R_PARISC_TLS_LDMCALL	239
-#define R_PARISC_TLS_LDO21L	240
-#define R_PARISC_TLS_LDO14R	241
-#define R_PARISC_TLS_DTPMOD32	242
-#define R_PARISC_TLS_DTPMOD64	243
-#define R_PARISC_TLS_DTPOFF32	244
-#define R_PARISC_TLS_DTPOFF64	245
-#define R_PARISC_TLS_LE21L	R_PARISC_TPREL21L
-#define R_PARISC_TLS_LE14R	R_PARISC_TPREL14R
-#define R_PARISC_TLS_IE21L	R_PARISC_LTOFF_TP21L
-#define R_PARISC_TLS_IE14R	R_PARISC_LTOFF_TP14R
-#define R_PARISC_TLS_TPREL32	R_PARISC_TPREL32
-#define R_PARISC_TLS_TPREL64	R_PARISC_TPREL64
-#define R_PARISC_HIRESERVE	255
-
-
-
-#define PT_HP_TLS		(PT_LOOS + 0x0)
-#define PT_HP_CORE_NONE		(PT_LOOS + 0x1)
-#define PT_HP_CORE_VERSION	(PT_LOOS + 0x2)
-#define PT_HP_CORE_KERNEL	(PT_LOOS + 0x3)
-#define PT_HP_CORE_COMM		(PT_LOOS + 0x4)
-#define PT_HP_CORE_PROC		(PT_LOOS + 0x5)
-#define PT_HP_CORE_LOADABLE	(PT_LOOS + 0x6)
-#define PT_HP_CORE_STACK	(PT_LOOS + 0x7)
-#define PT_HP_CORE_SHM		(PT_LOOS + 0x8)
-#define PT_HP_CORE_MMF		(PT_LOOS + 0x9)
-#define PT_HP_PARALLEL		(PT_LOOS + 0x10)
-#define PT_HP_FASTBIND		(PT_LOOS + 0x11)
-#define PT_HP_OPT_ANNOT		(PT_LOOS + 0x12)
-#define PT_HP_HSL_ANNOT		(PT_LOOS + 0x13)
-#define PT_HP_STACK		(PT_LOOS + 0x14)
-
-#define PT_PARISC_ARCHEXT	0x70000000
-#define PT_PARISC_UNWIND	0x70000001
-
-
-
-#define PF_PARISC_SBP		0x08000000
-
-#define PF_HP_PAGE_SIZE		0x00100000
-#define PF_HP_FAR_SHARED	0x00200000
-#define PF_HP_NEAR_SHARED	0x00400000
-#define PF_HP_CODE		0x01000000
-#define PF_HP_MODIFY		0x02000000
-#define PF_HP_LAZYSWAP		0x04000000
-#define PF_HP_SBP		0x08000000
-
-
-
-
-
-
-#define EF_ALPHA_32BIT		1
-#define EF_ALPHA_CANRELAX	2
-
-
-
-
-#define SHT_ALPHA_DEBUG		0x70000001
-#define SHT_ALPHA_REGINFO	0x70000002
-
-
-
-#define SHF_ALPHA_GPREL		0x10000000
-
-
-#define STO_ALPHA_NOPV		0x80
-#define STO_ALPHA_STD_GPLOAD	0x88
-
-
-
-#define R_ALPHA_NONE		0
-#define R_ALPHA_REFLONG		1
-#define R_ALPHA_REFQUAD		2
-#define R_ALPHA_GPREL32		3
-#define R_ALPHA_LITERAL		4
-#define R_ALPHA_LITUSE		5
-#define R_ALPHA_GPDISP		6
-#define R_ALPHA_BRADDR		7
-#define R_ALPHA_HINT		8
-#define R_ALPHA_SREL16		9
-#define R_ALPHA_SREL32		10
-#define R_ALPHA_SREL64		11
-#define R_ALPHA_GPRELHIGH	17
-#define R_ALPHA_GPRELLOW	18
-#define R_ALPHA_GPREL16		19
-#define R_ALPHA_COPY		24
-#define R_ALPHA_GLOB_DAT	25
-#define R_ALPHA_JMP_SLOT	26
-#define R_ALPHA_RELATIVE	27
-#define R_ALPHA_TLS_GD_HI	28
-#define R_ALPHA_TLSGD		29
-#define R_ALPHA_TLS_LDM		30
-#define R_ALPHA_DTPMOD64	31
-#define R_ALPHA_GOTDTPREL	32
-#define R_ALPHA_DTPREL64	33
-#define R_ALPHA_DTPRELHI	34
-#define R_ALPHA_DTPRELLO	35
-#define R_ALPHA_DTPREL16	36
-#define R_ALPHA_GOTTPREL	37
-#define R_ALPHA_TPREL64		38
-#define R_ALPHA_TPRELHI		39
-#define R_ALPHA_TPRELLO		40
-#define R_ALPHA_TPREL16		41
-
-#define R_ALPHA_NUM		46
-
-
-#define LITUSE_ALPHA_ADDR	0
-#define LITUSE_ALPHA_BASE	1
-#define LITUSE_ALPHA_BYTOFF	2
-#define LITUSE_ALPHA_JSR	3
-#define LITUSE_ALPHA_TLS_GD	4
-#define LITUSE_ALPHA_TLS_LDM	5
-
-
-#define DT_ALPHA_PLTRO		(DT_LOPROC + 0)
-#define DT_ALPHA_NUM		1
-
-
-
-
-#define EF_PPC_EMB		0x80000000
-
-
-#define EF_PPC_RELOCATABLE	0x00010000
-#define EF_PPC_RELOCATABLE_LIB	0x00008000
-
-
-
-#define R_PPC_NONE		0
-#define R_PPC_ADDR32		1
-#define R_PPC_ADDR24		2
-#define R_PPC_ADDR16		3
-#define R_PPC_ADDR16_LO		4
-#define R_PPC_ADDR16_HI		5
-#define R_PPC_ADDR16_HA		6
-#define R_PPC_ADDR14		7
-#define R_PPC_ADDR14_BRTAKEN	8
-#define R_PPC_ADDR14_BRNTAKEN	9
-#define R_PPC_REL24		10
-#define R_PPC_REL14		11
-#define R_PPC_REL14_BRTAKEN	12
-#define R_PPC_REL14_BRNTAKEN	13
-#define R_PPC_GOT16		14
-#define R_PPC_GOT16_LO		15
-#define R_PPC_GOT16_HI		16
-#define R_PPC_GOT16_HA		17
-#define R_PPC_PLTREL24		18
-#define R_PPC_COPY		19
-#define R_PPC_GLOB_DAT		20
-#define R_PPC_JMP_SLOT		21
-#define R_PPC_RELATIVE		22
-#define R_PPC_LOCAL24PC		23
-#define R_PPC_UADDR32		24
-#define R_PPC_UADDR16		25
-#define R_PPC_REL32		26
-#define R_PPC_PLT32		27
-#define R_PPC_PLTREL32		28
-#define R_PPC_PLT16_LO		29
-#define R_PPC_PLT16_HI		30
-#define R_PPC_PLT16_HA		31
-#define R_PPC_SDAREL16		32
-#define R_PPC_SECTOFF		33
-#define R_PPC_SECTOFF_LO	34
-#define R_PPC_SECTOFF_HI	35
-#define R_PPC_SECTOFF_HA	36
-
-
-#define R_PPC_TLS		67
-#define R_PPC_DTPMOD32		68
-#define R_PPC_TPREL16		69
-#define R_PPC_TPREL16_LO	70
-#define R_PPC_TPREL16_HI	71
-#define R_PPC_TPREL16_HA	72
-#define R_PPC_TPREL32		73
-#define R_PPC_DTPREL16		74
-#define R_PPC_DTPREL16_LO	75
-#define R_PPC_DTPREL16_HI	76
-#define R_PPC_DTPREL16_HA	77
-#define R_PPC_DTPREL32		78
-#define R_PPC_GOT_TLSGD16	79
-#define R_PPC_GOT_TLSGD16_LO	80
-#define R_PPC_GOT_TLSGD16_HI	81
-#define R_PPC_GOT_TLSGD16_HA	82
-#define R_PPC_GOT_TLSLD16	83
-#define R_PPC_GOT_TLSLD16_LO	84
-#define R_PPC_GOT_TLSLD16_HI	85
-#define R_PPC_GOT_TLSLD16_HA	86
-#define R_PPC_GOT_TPREL16	87
-#define R_PPC_GOT_TPREL16_LO	88
-#define R_PPC_GOT_TPREL16_HI	89
-#define R_PPC_GOT_TPREL16_HA	90
-#define R_PPC_GOT_DTPREL16	91
-#define R_PPC_GOT_DTPREL16_LO	92
-#define R_PPC_GOT_DTPREL16_HI	93
-#define R_PPC_GOT_DTPREL16_HA	94
-
-
-
-#define R_PPC_EMB_NADDR32	101
-#define R_PPC_EMB_NADDR16	102
-#define R_PPC_EMB_NADDR16_LO	103
-#define R_PPC_EMB_NADDR16_HI	104
-#define R_PPC_EMB_NADDR16_HA	105
-#define R_PPC_EMB_SDAI16	106
-#define R_PPC_EMB_SDA2I16	107
-#define R_PPC_EMB_SDA2REL	108
-#define R_PPC_EMB_SDA21		109
-#define R_PPC_EMB_MRKREF	110
-#define R_PPC_EMB_RELSEC16	111
-#define R_PPC_EMB_RELST_LO	112
-#define R_PPC_EMB_RELST_HI	113
-#define R_PPC_EMB_RELST_HA	114
-#define R_PPC_EMB_BIT_FLD	115
-#define R_PPC_EMB_RELSDA	116
-
-
-#define R_PPC_DIAB_SDA21_LO	180
-#define R_PPC_DIAB_SDA21_HI	181
-#define R_PPC_DIAB_SDA21_HA	182
-#define R_PPC_DIAB_RELSDA_LO	183
-#define R_PPC_DIAB_RELSDA_HI	184
-#define R_PPC_DIAB_RELSDA_HA	185
-
-
-#define R_PPC_IRELATIVE		248
-
-
-#define R_PPC_REL16		249
-#define R_PPC_REL16_LO		250
-#define R_PPC_REL16_HI		251
-#define R_PPC_REL16_HA		252
-
-
+#define R_PPC_EMB_NADDR32 101
+#define R_PPC_EMB_NADDR16 102
+#define R_PPC_EMB_NADDR16_LO 103
+#define R_PPC_EMB_NADDR16_HI 104
+#define R_PPC_EMB_NADDR16_HA 105
+#define R_PPC_EMB_SDAI16 106
+#define R_PPC_EMB_SDA2I16 107
+#define R_PPC_EMB_SDA2REL 108
+#define R_PPC_EMB_SDA21 109
+#define R_PPC_EMB_MRKREF 110
+#define R_PPC_EMB_RELSEC16 111
+#define R_PPC_EMB_RELST_LO 112
+#define R_PPC_EMB_RELST_HI 113
+#define R_PPC_EMB_RELST_HA 114
+#define R_PPC_EMB_BIT_FLD 115
+#define R_PPC_EMB_RELSDA 116
 
-#define R_PPC_TOC16		255
+#define R_PPC_DIAB_SDA21_LO 180
+#define R_PPC_DIAB_SDA21_HI 181
+#define R_PPC_DIAB_SDA21_HA 182
+#define R_PPC_DIAB_RELSDA_LO 183
+#define R_PPC_DIAB_RELSDA_HI 184
+#define R_PPC_DIAB_RELSDA_HA 185
 
+#define R_PPC_IRELATIVE 248
 
-#define DT_PPC_GOT		(DT_LOPROC + 0)
-#define DT_PPC_NUM		1
+#define R_PPC_REL16 249
+#define R_PPC_REL16_LO 250
+#define R_PPC_REL16_HI 251
+#define R_PPC_REL16_HA 252
 
+#define R_PPC_TOC16 255
 
-#define R_PPC64_NONE		R_PPC_NONE
-#define R_PPC64_ADDR32		R_PPC_ADDR32
-#define R_PPC64_ADDR24		R_PPC_ADDR24
-#define R_PPC64_ADDR16		R_PPC_ADDR16
-#define R_PPC64_ADDR16_LO	R_PPC_ADDR16_LO
-#define R_PPC64_ADDR16_HI	R_PPC_ADDR16_HI
-#define R_PPC64_ADDR16_HA	R_PPC_ADDR16_HA
-#define R_PPC64_ADDR14		R_PPC_ADDR14
-#define R_PPC64_ADDR14_BRTAKEN	R_PPC_ADDR14_BRTAKEN
-#define R_PPC64_ADDR14_BRNTAKEN	R_PPC_ADDR14_BRNTAKEN
-#define R_PPC64_REL24		R_PPC_REL24
-#define R_PPC64_REL14		R_PPC_REL14
-#define R_PPC64_REL14_BRTAKEN	R_PPC_REL14_BRTAKEN
-#define R_PPC64_REL14_BRNTAKEN	R_PPC_REL14_BRNTAKEN
-#define R_PPC64_GOT16		R_PPC_GOT16
-#define R_PPC64_GOT16_LO	R_PPC_GOT16_LO
-#define R_PPC64_GOT16_HI	R_PPC_GOT16_HI
-#define R_PPC64_GOT16_HA	R_PPC_GOT16_HA
+#define DT_PPC_GOT (DT_LOPROC + 0)
+#define DT_PPC_NUM 1
 
-#define R_PPC64_COPY		R_PPC_COPY
-#define R_PPC64_GLOB_DAT	R_PPC_GLOB_DAT
-#define R_PPC64_JMP_SLOT	R_PPC_JMP_SLOT
-#define R_PPC64_RELATIVE	R_PPC_RELATIVE
+#define R_PPC64_NONE R_PPC_NONE
+#define R_PPC64_ADDR32 R_PPC_ADDR32
+#define R_PPC64_ADDR24 R_PPC_ADDR24
+#define R_PPC64_ADDR16 R_PPC_ADDR16
+#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO
+#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI
+#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA
+#define R_PPC64_ADDR14 R_PPC_ADDR14
+#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
+#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
+#define R_PPC64_REL24 R_PPC_REL24
+#define R_PPC64_REL14 R_PPC_REL14
+#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
+#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
+#define R_PPC64_GOT16 R_PPC_GOT16
+#define R_PPC64_GOT16_LO R_PPC_GOT16_LO
+#define R_PPC64_GOT16_HI R_PPC_GOT16_HI
+#define R_PPC64_GOT16_HA R_PPC_GOT16_HA
 
-#define R_PPC64_UADDR32		R_PPC_UADDR32
-#define R_PPC64_UADDR16		R_PPC_UADDR16
-#define R_PPC64_REL32		R_PPC_REL32
-#define R_PPC64_PLT32		R_PPC_PLT32
-#define R_PPC64_PLTREL32	R_PPC_PLTREL32
-#define R_PPC64_PLT16_LO	R_PPC_PLT16_LO
-#define R_PPC64_PLT16_HI	R_PPC_PLT16_HI
-#define R_PPC64_PLT16_HA	R_PPC_PLT16_HA
+#define R_PPC64_COPY R_PPC_COPY
+#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT
+#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT
+#define R_PPC64_RELATIVE R_PPC_RELATIVE
 
-#define R_PPC64_SECTOFF		R_PPC_SECTOFF
-#define R_PPC64_SECTOFF_LO	R_PPC_SECTOFF_LO
-#define R_PPC64_SECTOFF_HI	R_PPC_SECTOFF_HI
-#define R_PPC64_SECTOFF_HA	R_PPC_SECTOFF_HA
-#define R_PPC64_ADDR30		37
-#define R_PPC64_ADDR64		38
-#define R_PPC64_ADDR16_HIGHER	39
-#define R_PPC64_ADDR16_HIGHERA	40
-#define R_PPC64_ADDR16_HIGHEST	41
-#define R_PPC64_ADDR16_HIGHESTA	42
-#define R_PPC64_UADDR64		43
-#define R_PPC64_REL64		44
-#define R_PPC64_PLT64		45
-#define R_PPC64_PLTREL64	46
-#define R_PPC64_TOC16		47
-#define R_PPC64_TOC16_LO	48
-#define R_PPC64_TOC16_HI	49
-#define R_PPC64_TOC16_HA	50
-#define R_PPC64_TOC		51
-#define R_PPC64_PLTGOT16	52
-#define R_PPC64_PLTGOT16_LO	53
-#define R_PPC64_PLTGOT16_HI	54
-#define R_PPC64_PLTGOT16_HA	55
+#define R_PPC64_UADDR32 R_PPC_UADDR32
+#define R_PPC64_UADDR16 R_PPC_UADDR16
+#define R_PPC64_REL32 R_PPC_REL32
+#define R_PPC64_PLT32 R_PPC_PLT32
+#define R_PPC64_PLTREL32 R_PPC_PLTREL32
+#define R_PPC64_PLT16_LO R_PPC_PLT16_LO
+#define R_PPC64_PLT16_HI R_PPC_PLT16_HI
+#define R_PPC64_PLT16_HA R_PPC_PLT16_HA
 
-#define R_PPC64_ADDR16_DS	56
-#define R_PPC64_ADDR16_LO_DS	57
-#define R_PPC64_GOT16_DS	58
-#define R_PPC64_GOT16_LO_DS	59
-#define R_PPC64_PLT16_LO_DS	60
-#define R_PPC64_SECTOFF_DS	61
-#define R_PPC64_SECTOFF_LO_DS	62
-#define R_PPC64_TOC16_DS	63
-#define R_PPC64_TOC16_LO_DS	64
-#define R_PPC64_PLTGOT16_DS	65
-#define R_PPC64_PLTGOT16_LO_DS	66
+#define R_PPC64_SECTOFF R_PPC_SECTOFF
+#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
+#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
+#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
+#define R_PPC64_ADDR30 37
+#define R_PPC64_ADDR64 38
+#define R_PPC64_ADDR16_HIGHER 39
+#define R_PPC64_ADDR16_HIGHERA 40
+#define R_PPC64_ADDR16_HIGHEST 41
+#define R_PPC64_ADDR16_HIGHESTA 42
+#define R_PPC64_UADDR64 43
+#define R_PPC64_REL64 44
+#define R_PPC64_PLT64 45
+#define R_PPC64_PLTREL64 46
+#define R_PPC64_TOC16 47
+#define R_PPC64_TOC16_LO 48
+#define R_PPC64_TOC16_HI 49
+#define R_PPC64_TOC16_HA 50
+#define R_PPC64_TOC 51
+#define R_PPC64_PLTGOT16 52
+#define R_PPC64_PLTGOT16_LO 53
+#define R_PPC64_PLTGOT16_HI 54
+#define R_PPC64_PLTGOT16_HA 55
 
+#define R_PPC64_ADDR16_DS 56
+#define R_PPC64_ADDR16_LO_DS 57
+#define R_PPC64_GOT16_DS 58
+#define R_PPC64_GOT16_LO_DS 59
+#define R_PPC64_PLT16_LO_DS 60
+#define R_PPC64_SECTOFF_DS 61
+#define R_PPC64_SECTOFF_LO_DS 62
+#define R_PPC64_TOC16_DS 63
+#define R_PPC64_TOC16_LO_DS 64
+#define R_PPC64_PLTGOT16_DS 65
+#define R_PPC64_PLTGOT16_LO_DS 66
 
-#define R_PPC64_TLS		67
-#define R_PPC64_DTPMOD64	68
-#define R_PPC64_TPREL16		69
-#define R_PPC64_TPREL16_LO	70
-#define R_PPC64_TPREL16_HI	71
-#define R_PPC64_TPREL16_HA	72
-#define R_PPC64_TPREL64		73
-#define R_PPC64_DTPREL16	74
-#define R_PPC64_DTPREL16_LO	75
-#define R_PPC64_DTPREL16_HI	76
-#define R_PPC64_DTPREL16_HA	77
-#define R_PPC64_DTPREL64	78
-#define R_PPC64_GOT_TLSGD16	79
-#define R_PPC64_GOT_TLSGD16_LO	80
-#define R_PPC64_GOT_TLSGD16_HI	81
-#define R_PPC64_GOT_TLSGD16_HA	82
-#define R_PPC64_GOT_TLSLD16	83
-#define R_PPC64_GOT_TLSLD16_LO	84
-#define R_PPC64_GOT_TLSLD16_HI	85
-#define R_PPC64_GOT_TLSLD16_HA	86
-#define R_PPC64_GOT_TPREL16_DS	87
+#define R_PPC64_TLS 67
+#define R_PPC64_DTPMOD64 68
+#define R_PPC64_TPREL16 69
+#define R_PPC64_TPREL16_LO 70
+#define R_PPC64_TPREL16_HI 71
+#define R_PPC64_TPREL16_HA 72
+#define R_PPC64_TPREL64 73
+#define R_PPC64_DTPREL16 74
+#define R_PPC64_DTPREL16_LO 75
+#define R_PPC64_DTPREL16_HI 76
+#define R_PPC64_DTPREL16_HA 77
+#define R_PPC64_DTPREL64 78
+#define R_PPC64_GOT_TLSGD16 79
+#define R_PPC64_GOT_TLSGD16_LO 80
+#define R_PPC64_GOT_TLSGD16_HI 81
+#define R_PPC64_GOT_TLSGD16_HA 82
+#define R_PPC64_GOT_TLSLD16 83
+#define R_PPC64_GOT_TLSLD16_LO 84
+#define R_PPC64_GOT_TLSLD16_HI 85
+#define R_PPC64_GOT_TLSLD16_HA 86
+#define R_PPC64_GOT_TPREL16_DS 87
 #define R_PPC64_GOT_TPREL16_LO_DS 88
-#define R_PPC64_GOT_TPREL16_HI	89
-#define R_PPC64_GOT_TPREL16_HA	90
-#define R_PPC64_GOT_DTPREL16_DS	91
+#define R_PPC64_GOT_TPREL16_HI 89
+#define R_PPC64_GOT_TPREL16_HA 90
+#define R_PPC64_GOT_DTPREL16_DS 91
 #define R_PPC64_GOT_DTPREL16_LO_DS 92
-#define R_PPC64_GOT_DTPREL16_HI	93
-#define R_PPC64_GOT_DTPREL16_HA	94
-#define R_PPC64_TPREL16_DS	95
-#define R_PPC64_TPREL16_LO_DS	96
-#define R_PPC64_TPREL16_HIGHER	97
-#define R_PPC64_TPREL16_HIGHERA	98
-#define R_PPC64_TPREL16_HIGHEST	99
+#define R_PPC64_GOT_DTPREL16_HI 93
+#define R_PPC64_GOT_DTPREL16_HA 94
+#define R_PPC64_TPREL16_DS 95
+#define R_PPC64_TPREL16_LO_DS 96
+#define R_PPC64_TPREL16_HIGHER 97
+#define R_PPC64_TPREL16_HIGHERA 98
+#define R_PPC64_TPREL16_HIGHEST 99
 #define R_PPC64_TPREL16_HIGHESTA 100
-#define R_PPC64_DTPREL16_DS	101
-#define R_PPC64_DTPREL16_LO_DS	102
-#define R_PPC64_DTPREL16_HIGHER	103
+#define R_PPC64_DTPREL16_DS 101
+#define R_PPC64_DTPREL16_LO_DS 102
+#define R_PPC64_DTPREL16_HIGHER 103
 #define R_PPC64_DTPREL16_HIGHERA 104
 #define R_PPC64_DTPREL16_HIGHEST 105
 #define R_PPC64_DTPREL16_HIGHESTA 106
 
+#define R_PPC64_JMP_IREL 247
+#define R_PPC64_IRELATIVE 248
+#define R_PPC64_REL16 249
+#define R_PPC64_REL16_LO 250
+#define R_PPC64_REL16_HI 251
+#define R_PPC64_REL16_HA 252
 
-#define R_PPC64_JMP_IREL	247
-#define R_PPC64_IRELATIVE	248
-#define R_PPC64_REL16		249
-#define R_PPC64_REL16_LO	250
-#define R_PPC64_REL16_HI	251
-#define R_PPC64_REL16_HA	252
+#define DT_PPC64_GLINK (DT_LOPROC + 0)
+#define DT_PPC64_OPD (DT_LOPROC + 1)
+#define DT_PPC64_OPDSZ (DT_LOPROC + 2)
+#define DT_PPC64_NUM 3
 
+#define EF_ARM_RELEXEC 0x01
+#define EF_ARM_HASENTRY 0x02
+#define EF_ARM_INTERWORK 0x04
+#define EF_ARM_APCS_26 0x08
+#define EF_ARM_APCS_FLOAT 0x10
+#define EF_ARM_PIC 0x20
+#define EF_ARM_ALIGN8 0x40
+#define EF_ARM_NEW_ABI 0x80
+#define EF_ARM_OLD_ABI 0x100
+#define EF_ARM_SOFT_FLOAT 0x200
+#define EF_ARM_VFP_FLOAT 0x400
+#define EF_ARM_MAVERICK_FLOAT 0x800
 
-#define DT_PPC64_GLINK  (DT_LOPROC + 0)
-#define DT_PPC64_OPD	(DT_LOPROC + 1)
-#define DT_PPC64_OPDSZ	(DT_LOPROC + 2)
-#define DT_PPC64_NUM    3
+#define EF_ARM_ABI_FLOAT_SOFT 0x200
+#define EF_ARM_ABI_FLOAT_HARD 0x400
 
+#define EF_ARM_SYMSARESORTED 0x04
+#define EF_ARM_DYNSYMSUSESEGIDX 0x08
+#define EF_ARM_MAPSYMSFIRST 0x10
+#define EF_ARM_EABIMASK 0XFF000000
 
+#define EF_ARM_BE8 0x00800000
+#define EF_ARM_LE8 0x00400000
 
+#define EF_ARM_EABI_VERSION(flags) ((flags)&EF_ARM_EABIMASK)
+#define EF_ARM_EABI_UNKNOWN 0x00000000
+#define EF_ARM_EABI_VER1 0x01000000
+#define EF_ARM_EABI_VER2 0x02000000
+#define EF_ARM_EABI_VER3 0x03000000
+#define EF_ARM_EABI_VER4 0x04000000
+#define EF_ARM_EABI_VER5 0x05000000
 
+#define STT_ARM_TFUNC STT_LOPROC
+#define STT_ARM_16BIT STT_HIPROC
 
-#define EF_ARM_RELEXEC		0x01
-#define EF_ARM_HASENTRY		0x02
-#define EF_ARM_INTERWORK	0x04
-#define EF_ARM_APCS_26		0x08
-#define EF_ARM_APCS_FLOAT	0x10
-#define EF_ARM_PIC		0x20
-#define EF_ARM_ALIGN8		0x40
-#define EF_ARM_NEW_ABI		0x80
-#define EF_ARM_OLD_ABI		0x100
-#define EF_ARM_SOFT_FLOAT	0x200
-#define EF_ARM_VFP_FLOAT	0x400
-#define EF_ARM_MAVERICK_FLOAT	0x800
+#define SHF_ARM_ENTRYSECT 0x10000000
+#define SHF_ARM_COMDEF 0x80000000
 
-#define EF_ARM_ABI_FLOAT_SOFT	0x200
-#define EF_ARM_ABI_FLOAT_HARD	0x400
+#define PF_ARM_SB 0x10000000
 
+#define PF_ARM_PI 0x20000000
+#define PF_ARM_ABS 0x40000000
 
-#define EF_ARM_SYMSARESORTED	0x04
-#define EF_ARM_DYNSYMSUSESEGIDX	0x08
-#define EF_ARM_MAPSYMSFIRST	0x10
-#define EF_ARM_EABIMASK		0XFF000000
+#define PT_ARM_EXIDX (PT_LOPROC + 1)
 
+#define SHT_ARM_EXIDX (SHT_LOPROC + 1)
+#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2)
+#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3)
 
-#define EF_ARM_BE8	    0x00800000
-#define EF_ARM_LE8	    0x00400000
-
-#define EF_ARM_EABI_VERSION(flags)	((flags) & EF_ARM_EABIMASK)
-#define EF_ARM_EABI_UNKNOWN	0x00000000
-#define EF_ARM_EABI_VER1	0x01000000
-#define EF_ARM_EABI_VER2	0x02000000
-#define EF_ARM_EABI_VER3	0x03000000
-#define EF_ARM_EABI_VER4	0x04000000
-#define EF_ARM_EABI_VER5	0x05000000
-
-
-#define STT_ARM_TFUNC		STT_LOPROC
-#define STT_ARM_16BIT		STT_HIPROC
-
-
-#define SHF_ARM_ENTRYSECT	0x10000000
-#define SHF_ARM_COMDEF		0x80000000
-
-
-
-#define PF_ARM_SB		0x10000000
-
-#define PF_ARM_PI		0x20000000
-#define PF_ARM_ABS		0x40000000
-
-
-#define PT_ARM_EXIDX		(PT_LOPROC + 1)
-
-
-#define SHT_ARM_EXIDX		(SHT_LOPROC + 1)
-#define SHT_ARM_PREEMPTMAP	(SHT_LOPROC + 2)
-#define SHT_ARM_ATTRIBUTES	(SHT_LOPROC + 3)
-
-
-#define R_AARCH64_NONE            0
-#define R_AARCH64_ABS64         257
-#define R_AARCH64_ABS32         258
-#define R_AARCH64_ABS16		259
-#define R_AARCH64_PREL64	260
-#define R_AARCH64_PREL32	261
-#define R_AARCH64_PREL16	262
-#define R_AARCH64_MOVW_UABS_G0	263
+#define R_AARCH64_NONE 0
+#define R_AARCH64_ABS64 257
+#define R_AARCH64_ABS32 258
+#define R_AARCH64_ABS16 259
+#define R_AARCH64_PREL64 260
+#define R_AARCH64_PREL32 261
+#define R_AARCH64_PREL16 262
+#define R_AARCH64_MOVW_UABS_G0 263
 #define R_AARCH64_MOVW_UABS_G0_NC 264
-#define R_AARCH64_MOVW_UABS_G1	265
+#define R_AARCH64_MOVW_UABS_G1 265
 #define R_AARCH64_MOVW_UABS_G1_NC 266
-#define R_AARCH64_MOVW_UABS_G2	267
+#define R_AARCH64_MOVW_UABS_G2 267
 #define R_AARCH64_MOVW_UABS_G2_NC 268
-#define R_AARCH64_MOVW_UABS_G3	269
-#define R_AARCH64_MOVW_SABS_G0	270
-#define R_AARCH64_MOVW_SABS_G1	271
-#define R_AARCH64_MOVW_SABS_G2	272
-#define R_AARCH64_LD_PREL_LO19	273
-#define R_AARCH64_ADR_PREL_LO21	274
+#define R_AARCH64_MOVW_UABS_G3 269
+#define R_AARCH64_MOVW_SABS_G0 270
+#define R_AARCH64_MOVW_SABS_G1 271
+#define R_AARCH64_MOVW_SABS_G2 272
+#define R_AARCH64_LD_PREL_LO19 273
+#define R_AARCH64_ADR_PREL_LO21 274
 #define R_AARCH64_ADR_PREL_PG_HI21 275
 #define R_AARCH64_ADR_PREL_PG_HI21_NC 276
 #define R_AARCH64_ADD_ABS_LO12_NC 277
 #define R_AARCH64_LDST8_ABS_LO12_NC 278
-#define R_AARCH64_TSTBR14	279
-#define R_AARCH64_CONDBR19	280
-#define R_AARCH64_JUMP26	282
-#define R_AARCH64_CALL26	283
+#define R_AARCH64_TSTBR14 279
+#define R_AARCH64_CONDBR19 280
+#define R_AARCH64_JUMP26 282
+#define R_AARCH64_CALL26 283
 #define R_AARCH64_LDST16_ABS_LO12_NC 284
 #define R_AARCH64_LDST32_ABS_LO12_NC 285
 #define R_AARCH64_LDST64_ABS_LO12_NC 286
-#define R_AARCH64_MOVW_PREL_G0	287
+#define R_AARCH64_MOVW_PREL_G0 287
 #define R_AARCH64_MOVW_PREL_G0_NC 288
-#define R_AARCH64_MOVW_PREL_G1	289
+#define R_AARCH64_MOVW_PREL_G1 289
 #define R_AARCH64_MOVW_PREL_G1_NC 290
-#define R_AARCH64_MOVW_PREL_G2	291
+#define R_AARCH64_MOVW_PREL_G2 291
 #define R_AARCH64_MOVW_PREL_G2_NC 292
-#define R_AARCH64_MOVW_PREL_G3	293
+#define R_AARCH64_MOVW_PREL_G3 293
 #define R_AARCH64_LDST128_ABS_LO12_NC 299
 #define R_AARCH64_MOVW_GOTOFF_G0 300
 #define R_AARCH64_MOVW_GOTOFF_G0_NC 301
@@ -2135,22 +1915,22 @@
 #define R_AARCH64_MOVW_GOTOFF_G2 304
 #define R_AARCH64_MOVW_GOTOFF_G2_NC 305
 #define R_AARCH64_MOVW_GOTOFF_G3 306
-#define R_AARCH64_GOTREL64	307
-#define R_AARCH64_GOTREL32	308
-#define R_AARCH64_GOT_LD_PREL19	309
+#define R_AARCH64_GOTREL64 307
+#define R_AARCH64_GOTREL32 308
+#define R_AARCH64_GOT_LD_PREL19 309
 #define R_AARCH64_LD64_GOTOFF_LO15 310
-#define R_AARCH64_ADR_GOT_PAGE	311
+#define R_AARCH64_ADR_GOT_PAGE 311
 #define R_AARCH64_LD64_GOT_LO12_NC 312
 #define R_AARCH64_LD64_GOTPAGE_LO15 313
 #define R_AARCH64_TLSGD_ADR_PREL21 512
 #define R_AARCH64_TLSGD_ADR_PAGE21 513
 #define R_AARCH64_TLSGD_ADD_LO12_NC 514
-#define R_AARCH64_TLSGD_MOVW_G1	515
+#define R_AARCH64_TLSGD_MOVW_G1 515
 #define R_AARCH64_TLSGD_MOVW_G0_NC 516
 #define R_AARCH64_TLSLD_ADR_PREL21 517
 #define R_AARCH64_TLSLD_ADR_PAGE21 518
 #define R_AARCH64_TLSLD_ADD_LO12_NC 519
-#define R_AARCH64_TLSLD_MOVW_G1	520
+#define R_AARCH64_TLSLD_MOVW_G1 520
 #define R_AARCH64_TLSLD_MOVW_G0_NC 521
 #define R_AARCH64_TLSLD_LD_PREL19 522
 #define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523
@@ -2197,560 +1977,536 @@
 #define R_AARCH64_TLSDESC_ADD_LO12 564
 #define R_AARCH64_TLSDESC_OFF_G1 565
 #define R_AARCH64_TLSDESC_OFF_G0_NC 566
-#define R_AARCH64_TLSDESC_LDR	567
-#define R_AARCH64_TLSDESC_ADD	568
-#define R_AARCH64_TLSDESC_CALL	569
+#define R_AARCH64_TLSDESC_LDR 567
+#define R_AARCH64_TLSDESC_ADD 568
+#define R_AARCH64_TLSDESC_CALL 569
 #define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570
 #define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571
 #define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572
 #define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573
-#define R_AARCH64_COPY         1024
-#define R_AARCH64_GLOB_DAT     1025
-#define R_AARCH64_JUMP_SLOT    1026
-#define R_AARCH64_RELATIVE     1027
+#define R_AARCH64_COPY 1024
+#define R_AARCH64_GLOB_DAT 1025
+#define R_AARCH64_JUMP_SLOT 1026
+#define R_AARCH64_RELATIVE 1027
 #define R_AARCH64_TLS_DTPMOD64 1028
 #define R_AARCH64_TLS_DTPREL64 1029
-#define R_AARCH64_TLS_TPREL64  1030
-#define R_AARCH64_TLSDESC      1031
+#define R_AARCH64_TLS_TPREL64 1030
+#define R_AARCH64_TLSDESC 1031
 
+#define R_ARM_NONE 0
+#define R_ARM_PC24 1
+#define R_ARM_ABS32 2
+#define R_ARM_REL32 3
+#define R_ARM_PC13 4
+#define R_ARM_ABS16 5
+#define R_ARM_ABS12 6
+#define R_ARM_THM_ABS5 7
+#define R_ARM_ABS8 8
+#define R_ARM_SBREL32 9
+#define R_ARM_THM_PC22 10
+#define R_ARM_THM_PC8 11
+#define R_ARM_AMP_VCALL9 12
+#define R_ARM_TLS_DESC 13
+#define R_ARM_THM_SWI8 14
+#define R_ARM_XPC25 15
+#define R_ARM_THM_XPC22 16
+#define R_ARM_TLS_DTPMOD32 17
+#define R_ARM_TLS_DTPOFF32 18
+#define R_ARM_TLS_TPOFF32 19
+#define R_ARM_COPY 20
+#define R_ARM_GLOB_DAT 21
+#define R_ARM_JUMP_SLOT 22
+#define R_ARM_RELATIVE 23
+#define R_ARM_GOTOFF 24
+#define R_ARM_GOTPC 25
+#define R_ARM_GOT32 26
+#define R_ARM_PLT32 27
+#define R_ARM_CALL 28
+#define R_ARM_JUMP24 29
+#define R_ARM_THM_JUMP24 30
+#define R_ARM_BASE_ABS 31
+#define R_ARM_ALU_PCREL_7_0 32
+#define R_ARM_ALU_PCREL_15_8 33
+#define R_ARM_ALU_PCREL_23_15 34
+#define R_ARM_LDR_SBREL_11_0 35
+#define R_ARM_ALU_SBREL_19_12 36
+#define R_ARM_ALU_SBREL_27_20 37
+#define R_ARM_TARGET1 38
+#define R_ARM_SBREL31 39
+#define R_ARM_V4BX 40
+#define R_ARM_TARGET2 41
+#define R_ARM_PREL31 42
+#define R_ARM_MOVW_ABS_NC 43
+#define R_ARM_MOVT_ABS 44
+#define R_ARM_MOVW_PREL_NC 45
+#define R_ARM_MOVT_PREL 46
+#define R_ARM_THM_MOVW_ABS_NC 47
+#define R_ARM_THM_MOVT_ABS 48
+#define R_ARM_THM_MOVW_PREL_NC 49
+#define R_ARM_THM_MOVT_PREL 50
+#define R_ARM_THM_JUMP19 51
+#define R_ARM_THM_JUMP6 52
+#define R_ARM_THM_ALU_PREL_11_0 53
+#define R_ARM_THM_PC12 54
+#define R_ARM_ABS32_NOI 55
+#define R_ARM_REL32_NOI 56
+#define R_ARM_ALU_PC_G0_NC 57
+#define R_ARM_ALU_PC_G0 58
+#define R_ARM_ALU_PC_G1_NC 59
+#define R_ARM_ALU_PC_G1 60
+#define R_ARM_ALU_PC_G2 61
+#define R_ARM_LDR_PC_G1 62
+#define R_ARM_LDR_PC_G2 63
+#define R_ARM_LDRS_PC_G0 64
+#define R_ARM_LDRS_PC_G1 65
+#define R_ARM_LDRS_PC_G2 66
+#define R_ARM_LDC_PC_G0 67
+#define R_ARM_LDC_PC_G1 68
+#define R_ARM_LDC_PC_G2 69
+#define R_ARM_ALU_SB_G0_NC 70
+#define R_ARM_ALU_SB_G0 71
+#define R_ARM_ALU_SB_G1_NC 72
+#define R_ARM_ALU_SB_G1 73
+#define R_ARM_ALU_SB_G2 74
+#define R_ARM_LDR_SB_G0 75
+#define R_ARM_LDR_SB_G1 76
+#define R_ARM_LDR_SB_G2 77
+#define R_ARM_LDRS_SB_G0 78
+#define R_ARM_LDRS_SB_G1 79
+#define R_ARM_LDRS_SB_G2 80
+#define R_ARM_LDC_SB_G0 81
+#define R_ARM_LDC_SB_G1 82
+#define R_ARM_LDC_SB_G2 83
+#define R_ARM_MOVW_BREL_NC 84
+#define R_ARM_MOVT_BREL 85
+#define R_ARM_MOVW_BREL 86
+#define R_ARM_THM_MOVW_BREL_NC 87
+#define R_ARM_THM_MOVT_BREL 88
+#define R_ARM_THM_MOVW_BREL 89
+#define R_ARM_TLS_GOTDESC 90
+#define R_ARM_TLS_CALL 91
+#define R_ARM_TLS_DESCSEQ 92
+#define R_ARM_THM_TLS_CALL 93
+#define R_ARM_PLT32_ABS 94
+#define R_ARM_GOT_ABS 95
+#define R_ARM_GOT_PREL 96
+#define R_ARM_GOT_BREL12 97
+#define R_ARM_GOTOFF12 98
+#define R_ARM_GOTRELAX 99
+#define R_ARM_GNU_VTENTRY 100
+#define R_ARM_GNU_VTINHERIT 101
+#define R_ARM_THM_PC11 102
+#define R_ARM_THM_PC9 103
+#define R_ARM_TLS_GD32 104
 
-#define R_ARM_NONE		0
-#define R_ARM_PC24		1
-#define R_ARM_ABS32		2
-#define R_ARM_REL32		3
-#define R_ARM_PC13		4
-#define R_ARM_ABS16		5
-#define R_ARM_ABS12		6
-#define R_ARM_THM_ABS5		7
-#define R_ARM_ABS8		8
-#define R_ARM_SBREL32		9
-#define R_ARM_THM_PC22		10
-#define R_ARM_THM_PC8		11
-#define R_ARM_AMP_VCALL9	12
-#define R_ARM_TLS_DESC		13
-#define R_ARM_THM_SWI8		14
-#define R_ARM_XPC25		15
-#define R_ARM_THM_XPC22		16
-#define R_ARM_TLS_DTPMOD32	17
-#define R_ARM_TLS_DTPOFF32	18
-#define R_ARM_TLS_TPOFF32	19
-#define R_ARM_COPY		20
-#define R_ARM_GLOB_DAT		21
-#define R_ARM_JUMP_SLOT		22
-#define R_ARM_RELATIVE		23
-#define R_ARM_GOTOFF		24
-#define R_ARM_GOTPC		25
-#define R_ARM_GOT32		26
-#define R_ARM_PLT32		27
-#define R_ARM_CALL		28
-#define R_ARM_JUMP24		29
-#define R_ARM_THM_JUMP24	30
-#define R_ARM_BASE_ABS		31
-#define R_ARM_ALU_PCREL_7_0	32
-#define R_ARM_ALU_PCREL_15_8	33
-#define R_ARM_ALU_PCREL_23_15	34
-#define R_ARM_LDR_SBREL_11_0	35
-#define R_ARM_ALU_SBREL_19_12	36
-#define R_ARM_ALU_SBREL_27_20	37
-#define R_ARM_TARGET1		38
-#define R_ARM_SBREL31		39
-#define R_ARM_V4BX		40
-#define R_ARM_TARGET2		41
-#define R_ARM_PREL31		42
-#define R_ARM_MOVW_ABS_NC	43
-#define R_ARM_MOVT_ABS		44
-#define R_ARM_MOVW_PREL_NC	45
-#define R_ARM_MOVT_PREL		46
-#define R_ARM_THM_MOVW_ABS_NC	47
-#define R_ARM_THM_MOVT_ABS	48
-#define R_ARM_THM_MOVW_PREL_NC	49
-#define R_ARM_THM_MOVT_PREL	50
-#define R_ARM_THM_JUMP19	51
-#define R_ARM_THM_JUMP6		52
-#define R_ARM_THM_ALU_PREL_11_0	53
-#define R_ARM_THM_PC12		54
-#define R_ARM_ABS32_NOI		55
-#define R_ARM_REL32_NOI		56
-#define R_ARM_ALU_PC_G0_NC	57
-#define R_ARM_ALU_PC_G0		58
-#define R_ARM_ALU_PC_G1_NC	59
-#define R_ARM_ALU_PC_G1		60
-#define R_ARM_ALU_PC_G2		61
-#define R_ARM_LDR_PC_G1		62
-#define R_ARM_LDR_PC_G2		63
-#define R_ARM_LDRS_PC_G0	64
-#define R_ARM_LDRS_PC_G1	65
-#define R_ARM_LDRS_PC_G2	66
-#define R_ARM_LDC_PC_G0		67
-#define R_ARM_LDC_PC_G1		68
-#define R_ARM_LDC_PC_G2		69
-#define R_ARM_ALU_SB_G0_NC	70
-#define R_ARM_ALU_SB_G0		71
-#define R_ARM_ALU_SB_G1_NC	72
-#define R_ARM_ALU_SB_G1		73
-#define R_ARM_ALU_SB_G2		74
-#define R_ARM_LDR_SB_G0		75
-#define R_ARM_LDR_SB_G1		76
-#define R_ARM_LDR_SB_G2		77
-#define R_ARM_LDRS_SB_G0	78
-#define R_ARM_LDRS_SB_G1	79
-#define R_ARM_LDRS_SB_G2	80
-#define R_ARM_LDC_SB_G0		81
-#define R_ARM_LDC_SB_G1		82
-#define R_ARM_LDC_SB_G2		83
-#define R_ARM_MOVW_BREL_NC	84
-#define R_ARM_MOVT_BREL		85
-#define R_ARM_MOVW_BREL		86
-#define R_ARM_THM_MOVW_BREL_NC	87
-#define R_ARM_THM_MOVT_BREL	88
-#define R_ARM_THM_MOVW_BREL	89
-#define R_ARM_TLS_GOTDESC	90
-#define R_ARM_TLS_CALL		91
-#define R_ARM_TLS_DESCSEQ	92
-#define R_ARM_THM_TLS_CALL	93
-#define R_ARM_PLT32_ABS		94
-#define R_ARM_GOT_ABS		95
-#define R_ARM_GOT_PREL		96
-#define R_ARM_GOT_BREL12	97
-#define R_ARM_GOTOFF12		98
-#define R_ARM_GOTRELAX		99
-#define R_ARM_GNU_VTENTRY	100
-#define R_ARM_GNU_VTINHERIT	101
-#define R_ARM_THM_PC11		102
-#define R_ARM_THM_PC9		103
-#define R_ARM_TLS_GD32		104
+#define R_ARM_TLS_LDM32 105
 
-#define R_ARM_TLS_LDM32		105
+#define R_ARM_TLS_LDO32 106
 
-#define R_ARM_TLS_LDO32		106
+#define R_ARM_TLS_IE32 107
 
-#define R_ARM_TLS_IE32		107
+#define R_ARM_TLS_LE32 108
+#define R_ARM_TLS_LDO12 109
+#define R_ARM_TLS_LE12 110
+#define R_ARM_TLS_IE12GP 111
+#define R_ARM_ME_TOO 128
+#define R_ARM_THM_TLS_DESCSEQ 129
+#define R_ARM_THM_TLS_DESCSEQ16 129
+#define R_ARM_THM_TLS_DESCSEQ32 130
+#define R_ARM_THM_GOT_BREL12 131
+#define R_ARM_IRELATIVE 160
+#define R_ARM_RXPC25 249
+#define R_ARM_RSBREL32 250
+#define R_ARM_THM_RPC22 251
+#define R_ARM_RREL32 252
+#define R_ARM_RABS22 253
+#define R_ARM_RPC24 254
+#define R_ARM_RBASE 255
 
-#define R_ARM_TLS_LE32		108
-#define R_ARM_TLS_LDO12		109
-#define R_ARM_TLS_LE12		110
-#define R_ARM_TLS_IE12GP	111
-#define R_ARM_ME_TOO		128
-#define R_ARM_THM_TLS_DESCSEQ	129
-#define R_ARM_THM_TLS_DESCSEQ16	129
-#define R_ARM_THM_TLS_DESCSEQ32	130
-#define R_ARM_THM_GOT_BREL12	131
-#define R_ARM_IRELATIVE		160
-#define R_ARM_RXPC25		249
-#define R_ARM_RSBREL32		250
-#define R_ARM_THM_RPC22		251
-#define R_ARM_RREL32		252
-#define R_ARM_RABS22		253
-#define R_ARM_RPC24		254
-#define R_ARM_RBASE		255
+#define R_ARM_NUM 256
 
-#define R_ARM_NUM		256
+#define EF_IA_64_MASKOS 0x0000000f
+#define EF_IA_64_ABI64 0x00000010
+#define EF_IA_64_ARCH 0xff000000
 
+#define PT_IA_64_ARCHEXT (PT_LOPROC + 0)
+#define PT_IA_64_UNWIND (PT_LOPROC + 1)
+#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12)
+#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13)
+#define PT_IA_64_HP_STACK (PT_LOOS + 0x14)
 
+#define PF_IA_64_NORECOV 0x80000000
 
+#define SHT_IA_64_EXT (SHT_LOPROC + 0)
+#define SHT_IA_64_UNWIND (SHT_LOPROC + 1)
 
-#define EF_IA_64_MASKOS		0x0000000f
-#define EF_IA_64_ABI64		0x00000010
-#define EF_IA_64_ARCH		0xff000000
+#define SHF_IA_64_SHORT 0x10000000
+#define SHF_IA_64_NORECOV 0x20000000
 
+#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0)
+#define DT_IA_64_NUM 1
 
-#define PT_IA_64_ARCHEXT	(PT_LOPROC + 0)
-#define PT_IA_64_UNWIND		(PT_LOPROC + 1)
-#define PT_IA_64_HP_OPT_ANOT	(PT_LOOS + 0x12)
-#define PT_IA_64_HP_HSL_ANOT	(PT_LOOS + 0x13)
-#define PT_IA_64_HP_STACK	(PT_LOOS + 0x14)
+#define R_IA64_NONE 0x00
+#define R_IA64_IMM14 0x21
+#define R_IA64_IMM22 0x22
+#define R_IA64_IMM64 0x23
+#define R_IA64_DIR32MSB 0x24
+#define R_IA64_DIR32LSB 0x25
+#define R_IA64_DIR64MSB 0x26
+#define R_IA64_DIR64LSB 0x27
+#define R_IA64_GPREL22 0x2a
+#define R_IA64_GPREL64I 0x2b
+#define R_IA64_GPREL32MSB 0x2c
+#define R_IA64_GPREL32LSB 0x2d
+#define R_IA64_GPREL64MSB 0x2e
+#define R_IA64_GPREL64LSB 0x2f
+#define R_IA64_LTOFF22 0x32
+#define R_IA64_LTOFF64I 0x33
+#define R_IA64_PLTOFF22 0x3a
+#define R_IA64_PLTOFF64I 0x3b
+#define R_IA64_PLTOFF64MSB 0x3e
+#define R_IA64_PLTOFF64LSB 0x3f
+#define R_IA64_FPTR64I 0x43
+#define R_IA64_FPTR32MSB 0x44
+#define R_IA64_FPTR32LSB 0x45
+#define R_IA64_FPTR64MSB 0x46
+#define R_IA64_FPTR64LSB 0x47
+#define R_IA64_PCREL60B 0x48
+#define R_IA64_PCREL21B 0x49
+#define R_IA64_PCREL21M 0x4a
+#define R_IA64_PCREL21F 0x4b
+#define R_IA64_PCREL32MSB 0x4c
+#define R_IA64_PCREL32LSB 0x4d
+#define R_IA64_PCREL64MSB 0x4e
+#define R_IA64_PCREL64LSB 0x4f
+#define R_IA64_LTOFF_FPTR22 0x52
+#define R_IA64_LTOFF_FPTR64I 0x53
+#define R_IA64_LTOFF_FPTR32MSB 0x54
+#define R_IA64_LTOFF_FPTR32LSB 0x55
+#define R_IA64_LTOFF_FPTR64MSB 0x56
+#define R_IA64_LTOFF_FPTR64LSB 0x57
+#define R_IA64_SEGREL32MSB 0x5c
+#define R_IA64_SEGREL32LSB 0x5d
+#define R_IA64_SEGREL64MSB 0x5e
+#define R_IA64_SEGREL64LSB 0x5f
+#define R_IA64_SECREL32MSB 0x64
+#define R_IA64_SECREL32LSB 0x65
+#define R_IA64_SECREL64MSB 0x66
+#define R_IA64_SECREL64LSB 0x67
+#define R_IA64_REL32MSB 0x6c
+#define R_IA64_REL32LSB 0x6d
+#define R_IA64_REL64MSB 0x6e
+#define R_IA64_REL64LSB 0x6f
+#define R_IA64_LTV32MSB 0x74
+#define R_IA64_LTV32LSB 0x75
+#define R_IA64_LTV64MSB 0x76
+#define R_IA64_LTV64LSB 0x77
+#define R_IA64_PCREL21BI 0x79
+#define R_IA64_PCREL22 0x7a
+#define R_IA64_PCREL64I 0x7b
+#define R_IA64_IPLTMSB 0x80
+#define R_IA64_IPLTLSB 0x81
+#define R_IA64_COPY 0x84
+#define R_IA64_SUB 0x85
+#define R_IA64_LTOFF22X 0x86
+#define R_IA64_LDXMOV 0x87
+#define R_IA64_TPREL14 0x91
+#define R_IA64_TPREL22 0x92
+#define R_IA64_TPREL64I 0x93
+#define R_IA64_TPREL64MSB 0x96
+#define R_IA64_TPREL64LSB 0x97
+#define R_IA64_LTOFF_TPREL22 0x9a
+#define R_IA64_DTPMOD64MSB 0xa6
+#define R_IA64_DTPMOD64LSB 0xa7
+#define R_IA64_LTOFF_DTPMOD22 0xaa
+#define R_IA64_DTPREL14 0xb1
+#define R_IA64_DTPREL22 0xb2
+#define R_IA64_DTPREL64I 0xb3
+#define R_IA64_DTPREL32MSB 0xb4
+#define R_IA64_DTPREL32LSB 0xb5
+#define R_IA64_DTPREL64MSB 0xb6
+#define R_IA64_DTPREL64LSB 0xb7
+#define R_IA64_LTOFF_DTPREL22 0xba
 
+#define R_SH_NONE 0
+#define R_SH_DIR32 1
+#define R_SH_REL32 2
+#define R_SH_DIR8WPN 3
+#define R_SH_IND12W 4
+#define R_SH_DIR8WPL 5
+#define R_SH_DIR8WPZ 6
+#define R_SH_DIR8BP 7
+#define R_SH_DIR8W 8
+#define R_SH_DIR8L 9
+#define R_SH_SWITCH16 25
+#define R_SH_SWITCH32 26
+#define R_SH_USES 27
+#define R_SH_COUNT 28
+#define R_SH_ALIGN 29
+#define R_SH_CODE 30
+#define R_SH_DATA 31
+#define R_SH_LABEL 32
+#define R_SH_SWITCH8 33
+#define R_SH_GNU_VTINHERIT 34
+#define R_SH_GNU_VTENTRY 35
+#define R_SH_TLS_GD_32 144
+#define R_SH_TLS_LD_32 145
+#define R_SH_TLS_LDO_32 146
+#define R_SH_TLS_IE_32 147
+#define R_SH_TLS_LE_32 148
+#define R_SH_TLS_DTPMOD32 149
+#define R_SH_TLS_DTPOFF32 150
+#define R_SH_TLS_TPOFF32 151
+#define R_SH_GOT32 160
+#define R_SH_PLT32 161
+#define R_SH_COPY 162
+#define R_SH_GLOB_DAT 163
+#define R_SH_JMP_SLOT 164
+#define R_SH_RELATIVE 165
+#define R_SH_GOTOFF 166
+#define R_SH_GOTPC 167
+#define R_SH_GOT20 201
+#define R_SH_GOTOFF20 202
+#define R_SH_GOTFUNCDESC 203
+#define R_SH_GOTFUNCDEST20 204
+#define R_SH_GOTOFFFUNCDESC 205
+#define R_SH_GOTOFFFUNCDEST20 206
+#define R_SH_FUNCDESC 207
+#define R_SH_FUNCDESC_VALUE 208
 
-#define PF_IA_64_NORECOV	0x80000000
+#define R_SH_NUM 256
 
+#define R_390_NONE 0
+#define R_390_8 1
+#define R_390_12 2
+#define R_390_16 3
+#define R_390_32 4
+#define R_390_PC32 5
+#define R_390_GOT12 6
+#define R_390_GOT32 7
+#define R_390_PLT32 8
+#define R_390_COPY 9
+#define R_390_GLOB_DAT 10
+#define R_390_JMP_SLOT 11
+#define R_390_RELATIVE 12
+#define R_390_GOTOFF32 13
+#define R_390_GOTPC 14
+#define R_390_GOT16 15
+#define R_390_PC16 16
+#define R_390_PC16DBL 17
+#define R_390_PLT16DBL 18
+#define R_390_PC32DBL 19
+#define R_390_PLT32DBL 20
+#define R_390_GOTPCDBL 21
+#define R_390_64 22
+#define R_390_PC64 23
+#define R_390_GOT64 24
+#define R_390_PLT64 25
+#define R_390_GOTENT 26
+#define R_390_GOTOFF16 27
+#define R_390_GOTOFF64 28
+#define R_390_GOTPLT12 29
+#define R_390_GOTPLT16 30
+#define R_390_GOTPLT32 31
+#define R_390_GOTPLT64 32
+#define R_390_GOTPLTENT 33
+#define R_390_PLTOFF16 34
+#define R_390_PLTOFF32 35
+#define R_390_PLTOFF64 36
+#define R_390_TLS_LOAD 37
+#define R_390_TLS_GDCALL 38
 
-#define SHT_IA_64_EXT		(SHT_LOPROC + 0)
-#define SHT_IA_64_UNWIND	(SHT_LOPROC + 1)
+#define R_390_TLS_LDCALL 39
 
+#define R_390_TLS_GD32 40
 
-#define SHF_IA_64_SHORT		0x10000000
-#define SHF_IA_64_NORECOV	0x20000000
+#define R_390_TLS_GD64 41
 
+#define R_390_TLS_GOTIE12 42
 
-#define DT_IA_64_PLT_RESERVE	(DT_LOPROC + 0)
-#define DT_IA_64_NUM		1
+#define R_390_TLS_GOTIE32 43
 
+#define R_390_TLS_GOTIE64 44
 
-#define R_IA64_NONE		0x00
-#define R_IA64_IMM14		0x21
-#define R_IA64_IMM22		0x22
-#define R_IA64_IMM64		0x23
-#define R_IA64_DIR32MSB		0x24
-#define R_IA64_DIR32LSB		0x25
-#define R_IA64_DIR64MSB		0x26
-#define R_IA64_DIR64LSB		0x27
-#define R_IA64_GPREL22		0x2a
-#define R_IA64_GPREL64I		0x2b
-#define R_IA64_GPREL32MSB	0x2c
-#define R_IA64_GPREL32LSB	0x2d
-#define R_IA64_GPREL64MSB	0x2e
-#define R_IA64_GPREL64LSB	0x2f
-#define R_IA64_LTOFF22		0x32
-#define R_IA64_LTOFF64I		0x33
-#define R_IA64_PLTOFF22		0x3a
-#define R_IA64_PLTOFF64I	0x3b
-#define R_IA64_PLTOFF64MSB	0x3e
-#define R_IA64_PLTOFF64LSB	0x3f
-#define R_IA64_FPTR64I		0x43
-#define R_IA64_FPTR32MSB	0x44
-#define R_IA64_FPTR32LSB	0x45
-#define R_IA64_FPTR64MSB	0x46
-#define R_IA64_FPTR64LSB	0x47
-#define R_IA64_PCREL60B		0x48
-#define R_IA64_PCREL21B		0x49
-#define R_IA64_PCREL21M		0x4a
-#define R_IA64_PCREL21F		0x4b
-#define R_IA64_PCREL32MSB	0x4c
-#define R_IA64_PCREL32LSB	0x4d
-#define R_IA64_PCREL64MSB	0x4e
-#define R_IA64_PCREL64LSB	0x4f
-#define R_IA64_LTOFF_FPTR22	0x52
-#define R_IA64_LTOFF_FPTR64I	0x53
-#define R_IA64_LTOFF_FPTR32MSB	0x54
-#define R_IA64_LTOFF_FPTR32LSB	0x55
-#define R_IA64_LTOFF_FPTR64MSB	0x56
-#define R_IA64_LTOFF_FPTR64LSB	0x57
-#define R_IA64_SEGREL32MSB	0x5c
-#define R_IA64_SEGREL32LSB	0x5d
-#define R_IA64_SEGREL64MSB	0x5e
-#define R_IA64_SEGREL64LSB	0x5f
-#define R_IA64_SECREL32MSB	0x64
-#define R_IA64_SECREL32LSB	0x65
-#define R_IA64_SECREL64MSB	0x66
-#define R_IA64_SECREL64LSB	0x67
-#define R_IA64_REL32MSB		0x6c
-#define R_IA64_REL32LSB		0x6d
-#define R_IA64_REL64MSB		0x6e
-#define R_IA64_REL64LSB		0x6f
-#define R_IA64_LTV32MSB		0x74
-#define R_IA64_LTV32LSB		0x75
-#define R_IA64_LTV64MSB		0x76
-#define R_IA64_LTV64LSB		0x77
-#define R_IA64_PCREL21BI	0x79
-#define R_IA64_PCREL22		0x7a
-#define R_IA64_PCREL64I		0x7b
-#define R_IA64_IPLTMSB		0x80
-#define R_IA64_IPLTLSB		0x81
-#define R_IA64_COPY		0x84
-#define R_IA64_SUB		0x85
-#define R_IA64_LTOFF22X		0x86
-#define R_IA64_LDXMOV		0x87
-#define R_IA64_TPREL14		0x91
-#define R_IA64_TPREL22		0x92
-#define R_IA64_TPREL64I		0x93
-#define R_IA64_TPREL64MSB	0x96
-#define R_IA64_TPREL64LSB	0x97
-#define R_IA64_LTOFF_TPREL22	0x9a
-#define R_IA64_DTPMOD64MSB	0xa6
-#define R_IA64_DTPMOD64LSB	0xa7
-#define R_IA64_LTOFF_DTPMOD22	0xaa
-#define R_IA64_DTPREL14		0xb1
-#define R_IA64_DTPREL22		0xb2
-#define R_IA64_DTPREL64I	0xb3
-#define R_IA64_DTPREL32MSB	0xb4
-#define R_IA64_DTPREL32LSB	0xb5
-#define R_IA64_DTPREL64MSB	0xb6
-#define R_IA64_DTPREL64LSB	0xb7
-#define R_IA64_LTOFF_DTPREL22	0xba
+#define R_390_TLS_LDM32 45
 
+#define R_390_TLS_LDM64 46
 
+#define R_390_TLS_IE32 47
 
+#define R_390_TLS_IE64 48
 
-#define	R_SH_NONE		0
-#define	R_SH_DIR32		1
-#define	R_SH_REL32		2
-#define	R_SH_DIR8WPN		3
-#define	R_SH_IND12W		4
-#define	R_SH_DIR8WPL		5
-#define	R_SH_DIR8WPZ		6
-#define	R_SH_DIR8BP		7
-#define	R_SH_DIR8W		8
-#define	R_SH_DIR8L		9
-#define	R_SH_SWITCH16		25
-#define	R_SH_SWITCH32		26
-#define	R_SH_USES		27
-#define	R_SH_COUNT		28
-#define	R_SH_ALIGN		29
-#define	R_SH_CODE		30
-#define	R_SH_DATA		31
-#define	R_SH_LABEL		32
-#define	R_SH_SWITCH8		33
-#define	R_SH_GNU_VTINHERIT	34
-#define	R_SH_GNU_VTENTRY	35
-#define	R_SH_TLS_GD_32		144
-#define	R_SH_TLS_LD_32		145
-#define	R_SH_TLS_LDO_32		146
-#define	R_SH_TLS_IE_32		147
-#define	R_SH_TLS_LE_32		148
-#define	R_SH_TLS_DTPMOD32	149
-#define	R_SH_TLS_DTPOFF32	150
-#define	R_SH_TLS_TPOFF32	151
-#define	R_SH_GOT32		160
-#define	R_SH_PLT32		161
-#define	R_SH_COPY		162
-#define	R_SH_GLOB_DAT		163
-#define	R_SH_JMP_SLOT		164
-#define	R_SH_RELATIVE		165
-#define	R_SH_GOTOFF		166
-#define	R_SH_GOTPC		167
-#define	R_SH_GOT20		201
-#define	R_SH_GOTOFF20		202
-#define	R_SH_GOTFUNCDESC	203
-#define	R_SH_GOTFUNCDEST20	204
-#define	R_SH_GOTOFFFUNCDESC	205
-#define	R_SH_GOTOFFFUNCDEST20	206
-#define	R_SH_FUNCDESC		207
-#define	R_SH_FUNCDESC_VALUE	208
+#define R_390_TLS_IEENT 49
 
-#define	R_SH_NUM		256
+#define R_390_TLS_LE32 50
 
+#define R_390_TLS_LE64 51
 
+#define R_390_TLS_LDO32 52
 
-#define R_390_NONE		0
-#define R_390_8			1
-#define R_390_12		2
-#define R_390_16		3
-#define R_390_32		4
-#define R_390_PC32		5
-#define R_390_GOT12		6
-#define R_390_GOT32		7
-#define R_390_PLT32		8
-#define R_390_COPY		9
-#define R_390_GLOB_DAT		10
-#define R_390_JMP_SLOT		11
-#define R_390_RELATIVE		12
-#define R_390_GOTOFF32		13
-#define R_390_GOTPC		14
-#define R_390_GOT16		15
-#define R_390_PC16		16
-#define R_390_PC16DBL		17
-#define R_390_PLT16DBL		18
-#define R_390_PC32DBL		19
-#define R_390_PLT32DBL		20
-#define R_390_GOTPCDBL		21
-#define R_390_64		22
-#define R_390_PC64		23
-#define R_390_GOT64		24
-#define R_390_PLT64		25
-#define R_390_GOTENT		26
-#define R_390_GOTOFF16		27
-#define R_390_GOTOFF64		28
-#define R_390_GOTPLT12		29
-#define R_390_GOTPLT16		30
-#define R_390_GOTPLT32		31
-#define R_390_GOTPLT64		32
-#define R_390_GOTPLTENT		33
-#define R_390_PLTOFF16		34
-#define R_390_PLTOFF32		35
-#define R_390_PLTOFF64		36
-#define R_390_TLS_LOAD		37
-#define R_390_TLS_GDCALL	38
+#define R_390_TLS_LDO64 53
 
-#define R_390_TLS_LDCALL	39
+#define R_390_TLS_DTPMOD 54
+#define R_390_TLS_DTPOFF 55
+#define R_390_TLS_TPOFF 56
 
-#define R_390_TLS_GD32		40
+#define R_390_20 57
+#define R_390_GOT20 58
+#define R_390_GOTPLT20 59
+#define R_390_TLS_GOTIE20 60
 
-#define R_390_TLS_GD64		41
+#define R_390_NUM 61
 
-#define R_390_TLS_GOTIE12	42
+#define R_CRIS_NONE 0
+#define R_CRIS_8 1
+#define R_CRIS_16 2
+#define R_CRIS_32 3
+#define R_CRIS_8_PCREL 4
+#define R_CRIS_16_PCREL 5
+#define R_CRIS_32_PCREL 6
+#define R_CRIS_GNU_VTINHERIT 7
+#define R_CRIS_GNU_VTENTRY 8
+#define R_CRIS_COPY 9
+#define R_CRIS_GLOB_DAT 10
+#define R_CRIS_JUMP_SLOT 11
+#define R_CRIS_RELATIVE 12
+#define R_CRIS_16_GOT 13
+#define R_CRIS_32_GOT 14
+#define R_CRIS_16_GOTPLT 15
+#define R_CRIS_32_GOTPLT 16
+#define R_CRIS_32_GOTREL 17
+#define R_CRIS_32_PLT_GOTREL 18
+#define R_CRIS_32_PLT_PCREL 19
 
-#define R_390_TLS_GOTIE32	43
+#define R_CRIS_NUM 20
 
-#define R_390_TLS_GOTIE64	44
+#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_390_TLS_LDM32		45
+#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_390_TLS_LDM64		46
+#define R_X86_64_TLSLD 20
 
-#define R_390_TLS_IE32		47
+#define R_X86_64_DTPOFF32 21
+#define R_X86_64_GOTTPOFF 22
 
-#define R_390_TLS_IE64		48
-
-#define R_390_TLS_IEENT		49
-
-#define R_390_TLS_LE32		50
-
-#define R_390_TLS_LE64		51
-
-#define R_390_TLS_LDO32		52
-
-#define R_390_TLS_LDO64		53
-
-#define R_390_TLS_DTPMOD	54
-#define R_390_TLS_DTPOFF	55
-#define R_390_TLS_TPOFF		56
-
-#define R_390_20		57
-#define R_390_GOT20		58
-#define R_390_GOTPLT20		59
-#define R_390_TLS_GOTIE20	60
-
-
-#define R_390_NUM		61
-
-
-
-#define R_CRIS_NONE		0
-#define R_CRIS_8		1
-#define R_CRIS_16		2
-#define R_CRIS_32		3
-#define R_CRIS_8_PCREL		4
-#define R_CRIS_16_PCREL		5
-#define R_CRIS_32_PCREL		6
-#define R_CRIS_GNU_VTINHERIT	7
-#define R_CRIS_GNU_VTENTRY	8
-#define R_CRIS_COPY		9
-#define R_CRIS_GLOB_DAT		10
-#define R_CRIS_JUMP_SLOT	11
-#define R_CRIS_RELATIVE		12
-#define R_CRIS_16_GOT		13
-#define R_CRIS_32_GOT		14
-#define R_CRIS_16_GOTPLT	15
-#define R_CRIS_32_GOTPLT	16
-#define R_CRIS_32_GOTREL	17
-#define R_CRIS_32_PLT_GOTREL	18
-#define R_CRIS_32_PLT_PCREL	19
-
-#define R_CRIS_NUM		20
-
-
-
-#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_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_CALL 35
 
-#define R_X86_64_TLSDESC        36
-#define R_X86_64_IRELATIVE	37
-#define R_X86_64_RELATIVE64	38
-#define R_X86_64_NUM		39
+#define R_X86_64_TLSDESC 36
+#define R_X86_64_IRELATIVE 37
+#define R_X86_64_RELATIVE64 38
+#define R_X86_64_NUM 39
 
+#define R_MN10300_NONE 0
+#define R_MN10300_32 1
+#define R_MN10300_16 2
+#define R_MN10300_8 3
+#define R_MN10300_PCREL32 4
+#define R_MN10300_PCREL16 5
+#define R_MN10300_PCREL8 6
+#define R_MN10300_GNU_VTINHERIT 7
+#define R_MN10300_GNU_VTENTRY 8
+#define R_MN10300_24 9
+#define R_MN10300_GOTPC32 10
+#define R_MN10300_GOTPC16 11
+#define R_MN10300_GOTOFF32 12
+#define R_MN10300_GOTOFF24 13
+#define R_MN10300_GOTOFF16 14
+#define R_MN10300_PLT32 15
+#define R_MN10300_PLT16 16
+#define R_MN10300_GOT32 17
+#define R_MN10300_GOT24 18
+#define R_MN10300_GOT16 19
+#define R_MN10300_COPY 20
+#define R_MN10300_GLOB_DAT 21
+#define R_MN10300_JMP_SLOT 22
+#define R_MN10300_RELATIVE 23
 
+#define R_MN10300_NUM 24
 
-#define R_MN10300_NONE		0
-#define R_MN10300_32		1
-#define R_MN10300_16		2
-#define R_MN10300_8		3
-#define R_MN10300_PCREL32	4
-#define R_MN10300_PCREL16	5
-#define R_MN10300_PCREL8	6
-#define R_MN10300_GNU_VTINHERIT	7
-#define R_MN10300_GNU_VTENTRY	8
-#define R_MN10300_24		9
-#define R_MN10300_GOTPC32	10
-#define R_MN10300_GOTPC16	11
-#define R_MN10300_GOTOFF32	12
-#define R_MN10300_GOTOFF24	13
-#define R_MN10300_GOTOFF16	14
-#define R_MN10300_PLT32		15
-#define R_MN10300_PLT16		16
-#define R_MN10300_GOT32		17
-#define R_MN10300_GOT24		18
-#define R_MN10300_GOT16		19
-#define R_MN10300_COPY		20
-#define R_MN10300_GLOB_DAT	21
-#define R_MN10300_JMP_SLOT	22
-#define R_MN10300_RELATIVE	23
+#define R_M32R_NONE 0
+#define R_M32R_16 1
+#define R_M32R_32 2
+#define R_M32R_24 3
+#define R_M32R_10_PCREL 4
+#define R_M32R_18_PCREL 5
+#define R_M32R_26_PCREL 6
+#define R_M32R_HI16_ULO 7
+#define R_M32R_HI16_SLO 8
+#define R_M32R_LO16 9
+#define R_M32R_SDA16 10
+#define R_M32R_GNU_VTINHERIT 11
+#define R_M32R_GNU_VTENTRY 12
 
-#define R_MN10300_NUM		24
+#define R_M32R_16_RELA 33
+#define R_M32R_32_RELA 34
+#define R_M32R_24_RELA 35
+#define R_M32R_10_PCREL_RELA 36
+#define R_M32R_18_PCREL_RELA 37
+#define R_M32R_26_PCREL_RELA 38
+#define R_M32R_HI16_ULO_RELA 39
+#define R_M32R_HI16_SLO_RELA 40
+#define R_M32R_LO16_RELA 41
+#define R_M32R_SDA16_RELA 42
+#define R_M32R_RELA_GNU_VTINHERIT 43
+#define R_M32R_RELA_GNU_VTENTRY 44
+#define R_M32R_REL32 45
 
+#define R_M32R_GOT24 48
+#define R_M32R_26_PLTREL 49
+#define R_M32R_COPY 50
+#define R_M32R_GLOB_DAT 51
+#define R_M32R_JMP_SLOT 52
+#define R_M32R_RELATIVE 53
+#define R_M32R_GOTOFF 54
+#define R_M32R_GOTPC24 55
+#define R_M32R_GOT16_HI_ULO 56
 
+#define R_M32R_GOT16_HI_SLO 57
 
-#define R_M32R_NONE		0
-#define R_M32R_16		1
-#define R_M32R_32		2
-#define R_M32R_24		3
-#define R_M32R_10_PCREL		4
-#define R_M32R_18_PCREL		5
-#define R_M32R_26_PCREL		6
-#define R_M32R_HI16_ULO		7
-#define R_M32R_HI16_SLO		8
-#define R_M32R_LO16		9
-#define R_M32R_SDA16		10
-#define R_M32R_GNU_VTINHERIT	11
-#define R_M32R_GNU_VTENTRY	12
+#define R_M32R_GOT16_LO 58
+#define R_M32R_GOTPC_HI_ULO 59
 
-#define R_M32R_16_RELA		33
-#define R_M32R_32_RELA		34
-#define R_M32R_24_RELA		35
-#define R_M32R_10_PCREL_RELA	36
-#define R_M32R_18_PCREL_RELA	37
-#define R_M32R_26_PCREL_RELA	38
-#define R_M32R_HI16_ULO_RELA	39
-#define R_M32R_HI16_SLO_RELA	40
-#define R_M32R_LO16_RELA	41
-#define R_M32R_SDA16_RELA	42
-#define R_M32R_RELA_GNU_VTINHERIT	43
-#define R_M32R_RELA_GNU_VTENTRY	44
-#define R_M32R_REL32		45
+#define R_M32R_GOTPC_HI_SLO 60
 
-#define R_M32R_GOT24		48
-#define R_M32R_26_PLTREL	49
-#define R_M32R_COPY		50
-#define R_M32R_GLOB_DAT		51
-#define R_M32R_JMP_SLOT		52
-#define R_M32R_RELATIVE		53
-#define R_M32R_GOTOFF		54
-#define R_M32R_GOTPC24		55
-#define R_M32R_GOT16_HI_ULO	56
+#define R_M32R_GOTPC_LO 61
 
-#define R_M32R_GOT16_HI_SLO	57
+#define R_M32R_GOTOFF_HI_ULO 62
 
-#define R_M32R_GOT16_LO		58
-#define R_M32R_GOTPC_HI_ULO	59
+#define R_M32R_GOTOFF_HI_SLO 63
 
-#define R_M32R_GOTPC_HI_SLO	60
-
-#define R_M32R_GOTPC_LO		61
-
-#define R_M32R_GOTOFF_HI_ULO	62
-
-#define R_M32R_GOTOFF_HI_SLO	63
-
-#define R_M32R_GOTOFF_LO	64
-#define R_M32R_NUM		256
+#define R_M32R_GOTOFF_LO 64
+#define R_M32R_NUM 256
 
 #define R_MICROBLAZE_NONE 0
 #define R_MICROBLAZE_32 1
@@ -2781,47 +2537,46 @@
 #define R_MICROBLAZE_TLSDTPREL32 26
 #define R_MICROBLAZE_TLSDTPREL64 27
 #define R_MICROBLAZE_TLSGOTTPREL32 28
-#define R_MICROBLAZE_TLSTPREL32	 29
+#define R_MICROBLAZE_TLSTPREL32 29
 
-#define R_OR1K_NONE		0
-#define R_OR1K_32		1
-#define R_OR1K_16		2
-#define R_OR1K_8		3
-#define R_OR1K_LO_16_IN_INSN	4
-#define R_OR1K_HI_16_IN_INSN	5
-#define R_OR1K_INSN_REL_26	6
-#define R_OR1K_GNU_VTENTRY	7
-#define R_OR1K_GNU_VTINHERIT	8
-#define R_OR1K_32_PCREL		9
-#define R_OR1K_16_PCREL		10
-#define R_OR1K_8_PCREL		11
-#define R_OR1K_GOTPC_HI16	12
-#define R_OR1K_GOTPC_LO16	13
-#define R_OR1K_GOT16		14
-#define R_OR1K_PLT26		15
-#define R_OR1K_GOTOFF_HI16	16
-#define R_OR1K_GOTOFF_LO16	17
-#define R_OR1K_COPY		18
-#define R_OR1K_GLOB_DAT		19
-#define R_OR1K_JMP_SLOT		20
-#define R_OR1K_RELATIVE		21
-#define R_OR1K_TLS_GD_HI16	22
-#define R_OR1K_TLS_GD_LO16	23
-#define R_OR1K_TLS_LDM_HI16	24
-#define R_OR1K_TLS_LDM_LO16	25
-#define R_OR1K_TLS_LDO_HI16	26
-#define R_OR1K_TLS_LDO_LO16	27
-#define R_OR1K_TLS_IE_HI16	28
-#define R_OR1K_TLS_IE_LO16	29
-#define R_OR1K_TLS_LE_HI16	30
-#define R_OR1K_TLS_LE_LO16	31
-#define R_OR1K_TLS_TPOFF	32
-#define R_OR1K_TLS_DTPOFF	33
-#define R_OR1K_TLS_DTPMOD	34
+#define R_OR1K_NONE 0
+#define R_OR1K_32 1
+#define R_OR1K_16 2
+#define R_OR1K_8 3
+#define R_OR1K_LO_16_IN_INSN 4
+#define R_OR1K_HI_16_IN_INSN 5
+#define R_OR1K_INSN_REL_26 6
+#define R_OR1K_GNU_VTENTRY 7
+#define R_OR1K_GNU_VTINHERIT 8
+#define R_OR1K_32_PCREL 9
+#define R_OR1K_16_PCREL 10
+#define R_OR1K_8_PCREL 11
+#define R_OR1K_GOTPC_HI16 12
+#define R_OR1K_GOTPC_LO16 13
+#define R_OR1K_GOT16 14
+#define R_OR1K_PLT26 15
+#define R_OR1K_GOTOFF_HI16 16
+#define R_OR1K_GOTOFF_LO16 17
+#define R_OR1K_COPY 18
+#define R_OR1K_GLOB_DAT 19
+#define R_OR1K_JMP_SLOT 20
+#define R_OR1K_RELATIVE 21
+#define R_OR1K_TLS_GD_HI16 22
+#define R_OR1K_TLS_GD_LO16 23
+#define R_OR1K_TLS_LDM_HI16 24
+#define R_OR1K_TLS_LDM_LO16 25
+#define R_OR1K_TLS_LDO_HI16 26
+#define R_OR1K_TLS_LDO_LO16 27
+#define R_OR1K_TLS_IE_HI16 28
+#define R_OR1K_TLS_IE_LO16 29
+#define R_OR1K_TLS_LE_HI16 30
+#define R_OR1K_TLS_LE_LO16 31
+#define R_OR1K_TLS_TPOFF 32
+#define R_OR1K_TLS_DTPOFF 33
+#define R_OR1K_TLS_DTPMOD 34
 
 #ifdef __cplusplus
 }
 #endif
 
-
 #endif
diff --git a/fusl/include/endian.h b/fusl/include/endian.h
index 8597009..eab27c4 100644
--- a/fusl/include/endian.h
+++ b/fusl/include/endian.h
@@ -22,19 +22,17 @@
 
 #include <stdint.h>
 
-static __inline uint16_t __bswap16(uint16_t __x)
-{
-	return __x<<8 | __x>>8;
+static __inline uint16_t __bswap16(uint16_t __x) {
+  return __x << 8 | __x >> 8;
 }
 
-static __inline uint32_t __bswap32(uint32_t __x)
-{
-	return __x>>24 | ((__x>>8)&0xff00) | ((__x<<8)&0xff0000) | __x<<24;
+static __inline uint32_t __bswap32(uint32_t __x) {
+  return __x >> 24 | ((__x >> 8) & 0xff00) | ((__x << 8) & 0xff0000) |
+         __x << 24;
 }
 
-static __inline uint64_t __bswap64(uint64_t __x)
-{
-	return ((uint64_t)__bswap32(__x))<<32 | __bswap32(__x>>32);
+static __inline uint64_t __bswap64(uint64_t __x) {
+  return ((uint64_t)__bswap32(__x)) << 32 | __bswap32(__x >> 32);
 }
 
 #if __BYTE_ORDER == __LITTLE_ENDIAN
diff --git a/fusl/include/err.h b/fusl/include/err.h
index 9f5cb6b..82795fe 100644
--- a/fusl/include/err.h
+++ b/fusl/include/err.h
@@ -8,15 +8,15 @@
 extern "C" {
 #endif
 
-void warn(const char *, ...);
-void vwarn(const char *, va_list);
-void warnx(const char *, ...);
-void vwarnx(const char *, va_list);
+void warn(const char*, ...);
+void vwarn(const char*, va_list);
+void warnx(const char*, ...);
+void vwarnx(const char*, va_list);
 
-_Noreturn void err(int, const char *, ...);
-_Noreturn void verr(int, const char *, va_list);
-_Noreturn void errx(int, const char *, ...);
-_Noreturn void verrx(int, const char *, va_list);
+_Noreturn void err(int, const char*, ...);
+_Noreturn void verr(int, const char*, va_list);
+_Noreturn void errx(int, const char*, ...);
+_Noreturn void verrx(int, const char*, va_list);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/errno.h b/fusl/include/errno.h
index 93f5f6e..18f31d2 100644
--- a/fusl/include/errno.h
+++ b/fusl/include/errno.h
@@ -1,4 +1,4 @@
-#ifndef	_ERRNO_H
+#ifndef _ERRNO_H
 #define _ERRNO_H
 
 #ifdef __cplusplus
@@ -9,7 +9,7 @@
 
 #include <bits/errno.h>
 
-int *__errno_location(void);
+int* __errno_location(void);
 #define errno (*__errno_location())
 
 #ifdef _GNU_SOURCE
@@ -21,4 +21,3 @@
 #endif
 
 #endif
-
diff --git a/fusl/include/fcntl.h b/fusl/include/fcntl.h
index ebd5c30..beb3f5b 100644
--- a/fusl/include/fcntl.h
+++ b/fusl/include/fcntl.h
@@ -1,5 +1,5 @@
-#ifndef	_FCNTL_H
-#define	_FCNTL_H
+#ifndef _FCNTL_H
+#define _FCNTL_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -21,29 +21,28 @@
 
 #include <bits/fcntl.h>
 
-struct flock
-{
-	short l_type;
-	short l_whence;
-	off_t l_start;
-	off_t l_len;
-	pid_t l_pid;
+struct flock {
+  short l_type;
+  short l_whence;
+  off_t l_start;
+  off_t l_len;
+  pid_t l_pid;
 };
 
-int creat(const char *, mode_t);
+int creat(const char*, mode_t);
 int fcntl(int, int, ...);
-int open(const char *, int, ...);
-int openat(int, const char *, int, ...);
+int open(const char*, int, ...);
+int openat(int, const char*, int, ...);
 int posix_fadvise(int, off_t, off_t, int);
 int posix_fallocate(int, off_t, off_t);
 
-#define O_SEARCH  O_PATH
-#define O_EXEC    O_PATH
+#define O_SEARCH O_PATH
+#define O_EXEC O_PATH
 
-#define O_ACCMODE (03|O_SEARCH)
-#define O_RDONLY  00
-#define O_WRONLY  01
-#define O_RDWR    02
+#define O_ACCMODE (03 | O_SEARCH)
+#define O_RDONLY 00
+#define O_WRONLY 01
+#define O_RDWR 02
 
 #define F_OFD_GETLK 36
 #define F_OFD_SETLK 37
@@ -63,12 +62,12 @@
 #define AT_SYMLINK_FOLLOW 0x400
 #define AT_EACCESS 0x200
 
-#define POSIX_FADV_NORMAL     0
-#define POSIX_FADV_RANDOM     1
+#define POSIX_FADV_NORMAL 0
+#define POSIX_FADV_RANDOM 1
 #define POSIX_FADV_SEQUENTIAL 2
-#define POSIX_FADV_WILLNEED   3
-#define POSIX_FADV_DONTNEED   4
-#define POSIX_FADV_NOREUSE    5
+#define POSIX_FADV_WILLNEED 3
+#define POSIX_FADV_DONTNEED 4
+#define POSIX_FADV_NOREUSE 5
 
 #undef SEEK_SET
 #undef SEEK_CUR
@@ -110,31 +109,31 @@
 #define W_OK 2
 #define X_OK 1
 #define F_ULOCK 0
-#define F_LOCK  1
+#define F_LOCK 1
 #define F_TLOCK 2
-#define F_TEST  3
+#define F_TEST 3
 
-#define F_SETLEASE	1024
-#define F_GETLEASE	1025
-#define F_NOTIFY	1026
-#define F_CANCELLK	1029
-#define F_SETPIPE_SZ	1031
-#define F_GETPIPE_SZ	1032
-#define F_ADD_SEALS	1033
-#define F_GET_SEALS	1034
+#define F_SETLEASE 1024
+#define F_GETLEASE 1025
+#define F_NOTIFY 1026
+#define F_CANCELLK 1029
+#define F_SETPIPE_SZ 1031
+#define F_GETPIPE_SZ 1032
+#define F_ADD_SEALS 1033
+#define F_GET_SEALS 1034
 
-#define F_SEAL_SEAL	0x0001
-#define F_SEAL_SHRINK	0x0002
-#define F_SEAL_GROW	0x0004
-#define F_SEAL_WRITE	0x0008
+#define F_SEAL_SEAL 0x0001
+#define F_SEAL_SHRINK 0x0002
+#define F_SEAL_GROW 0x0004
+#define F_SEAL_WRITE 0x0008
 
-#define DN_ACCESS	0x00000001
-#define DN_MODIFY	0x00000002
-#define DN_CREATE	0x00000004
-#define DN_DELETE	0x00000008
-#define DN_RENAME	0x00000010
-#define DN_ATTRIB	0x00000020
-#define DN_MULTISHOT	0x80000000
+#define DN_ACCESS 0x00000001
+#define DN_MODIFY 0x00000002
+#define DN_CREATE 0x00000004
+#define DN_DELETE 0x00000008
+#define DN_RENAME 0x00000010
+#define DN_ATTRIB 0x00000020
+#define DN_MULTISHOT 0x80000000
 
 int lockf(int, int, off_t);
 #endif
@@ -145,8 +144,8 @@
 #define F_OWNER_PGRP 2
 #define F_OWNER_GID 2
 struct f_owner_ex {
-	int type;
-	pid_t pid;
+  int type;
+  pid_t pid;
 };
 #define FALLOC_FL_KEEP_SIZE 1
 #define FALLOC_FL_PUNCH_HOLE 2
@@ -161,8 +160,8 @@
 #define fallocate64 fallocate
 ssize_t readahead(int, off_t, size_t);
 int sync_file_range(int, off_t, off_t, unsigned);
-ssize_t vmsplice(int, const struct iovec *, size_t, unsigned);
-ssize_t splice(int, off_t *, int, off_t *, size_t, unsigned);
+ssize_t vmsplice(int, const struct iovec*, size_t, unsigned);
+ssize_t splice(int, off_t*, int, off_t*, size_t, unsigned);
 ssize_t tee(int, int, size_t, unsigned);
 #define loff_t off_t
 #endif
diff --git a/fusl/include/features.h b/fusl/include/features.h
index 3cc3e57..1ea7d74 100644
--- a/fusl/include/features.h
+++ b/fusl/include/features.h
@@ -9,9 +9,9 @@
 #define _BSD_SOURCE 1
 #endif
 
-#if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) \
- && !defined(_XOPEN_SOURCE) && !defined(_GNU_SOURCE) \
- && !defined(_BSD_SOURCE) && !defined(__STRICT_ANSI__)
+#if !defined(_POSIX_SOURCE) && !defined(_POSIX_C_SOURCE) && \
+    !defined(_XOPEN_SOURCE) && !defined(_GNU_SOURCE) &&     \
+    !defined(_BSD_SOURCE) && !defined(__STRICT_ANSI__)
 #define _BSD_SOURCE 1
 #define _XOPEN_SOURCE 700
 #endif
diff --git a/fusl/include/fenv.h b/fusl/include/fenv.h
index 05de990..d045a27 100644
--- a/fusl/include/fenv.h
+++ b/fusl/include/fenv.h
@@ -8,21 +8,20 @@
 #include <bits/fenv.h>
 
 int feclearexcept(int);
-int fegetexceptflag(fexcept_t *, int);
+int fegetexceptflag(fexcept_t*, int);
 int feraiseexcept(int);
-int fesetexceptflag(const fexcept_t *, int);
+int fesetexceptflag(const fexcept_t*, int);
 int fetestexcept(int);
 
 int fegetround(void);
 int fesetround(int);
 
-int fegetenv(fenv_t *);
-int feholdexcept(fenv_t *);
-int fesetenv(const fenv_t *);
-int feupdateenv(const fenv_t *);
+int fegetenv(fenv_t*);
+int feholdexcept(fenv_t*);
+int fesetenv(const fenv_t*);
+int feupdateenv(const fenv_t*);
 
 #ifdef __cplusplus
 }
 #endif
 #endif
-
diff --git a/fusl/include/fmtmsg.h b/fusl/include/fmtmsg.h
index d944b06..6e28040 100644
--- a/fusl/include/fmtmsg.h
+++ b/fusl/include/fmtmsg.h
@@ -5,40 +5,40 @@
 extern "C" {
 #endif
 
-#define MM_HARD		1
-#define MM_SOFT		2
-#define MM_FIRM		4
+#define MM_HARD 1
+#define MM_SOFT 2
+#define MM_FIRM 4
 
-#define MM_APPL		8
-#define MM_UTIL		16
-#define MM_OPSYS	32
+#define MM_APPL 8
+#define MM_UTIL 16
+#define MM_OPSYS 32
 
-#define MM_RECOVER	64
-#define MM_NRECOV	128
+#define MM_RECOVER 64
+#define MM_NRECOV 128
 
-#define MM_PRINT	256
-#define MM_CONSOLE	512
+#define MM_PRINT 256
+#define MM_CONSOLE 512
 
-#define MM_NULLMC	0L
+#define MM_NULLMC 0L
 
-#define MM_HALT		1
-#define MM_ERROR	2
-#define MM_WARNING	3
-#define MM_INFO		4
-#define MM_NOSEV	0
+#define MM_HALT 1
+#define MM_ERROR 2
+#define MM_WARNING 3
+#define MM_INFO 4
+#define MM_NOSEV 0
 
-#define MM_OK		0
-#define MM_NOTOK	(-1)
-#define MM_NOMSG	1
-#define MM_NOCON	4
+#define MM_OK 0
+#define MM_NOTOK (-1)
+#define MM_NOMSG 1
+#define MM_NOCON 4
 
-#define MM_NULLLBL	((char*)0)
-#define MM_NULLTXT	((char*)0)
-#define MM_NULLACT	((char*)0)
-#define MM_NULLTAG	((char*)0)
-#define MM_NULLSEV	0
+#define MM_NULLLBL ((char*)0)
+#define MM_NULLTXT ((char*)0)
+#define MM_NULLACT ((char*)0)
+#define MM_NULLTAG ((char*)0)
+#define MM_NULLSEV 0
 
-int fmtmsg(long, const char *, int, const char *, const char *, const char *);
+int fmtmsg(long, const char*, int, const char*, const char*, const char*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/fnmatch.h b/fusl/include/fnmatch.h
index f959321..11117d7 100644
--- a/fusl/include/fnmatch.h
+++ b/fusl/include/fnmatch.h
@@ -1,21 +1,21 @@
-#ifndef	_FNMATCH_H
-#define	_FNMATCH_H
+#ifndef _FNMATCH_H
+#define _FNMATCH_H
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-#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_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)
+#define FNM_NOMATCH 1
+#define FNM_NOSYS (-1)
 
-int fnmatch(const char *, const char *, int);
+int fnmatch(const char*, const char*, int);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/ftw.h b/fusl/include/ftw.h
index c8eadbc..1b3ba1e 100644
--- a/fusl/include/ftw.h
+++ b/fusl/include/ftw.h
@@ -1,5 +1,5 @@
 #ifndef _FTW_H
-#define	_FTW_H
+#define _FTW_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -8,27 +8,29 @@
 #include <features.h>
 #include <sys/stat.h>
 
-#define FTW_F   1
-#define FTW_D   2
+#define FTW_F 1
+#define FTW_D 2
 #define FTW_DNR 3
-#define FTW_NS  4
-#define FTW_SL  5
-#define FTW_DP  6
+#define FTW_NS 4
+#define FTW_SL 5
+#define FTW_DP 6
 #define FTW_SLN 7
 
-#define FTW_PHYS  1
+#define FTW_PHYS 1
 #define FTW_MOUNT 2
 #define FTW_CHDIR 4
 #define FTW_DEPTH 8
 
-struct FTW
-{
-	int base;
-	int level;
+struct FTW {
+  int base;
+  int level;
 };
 
-int ftw(const char *, int (*)(const char *, const struct stat *, int), int);
-int nftw(const char *, int (*)(const char *, const struct stat *, int, struct FTW *), int, int);
+int ftw(const char*, int (*)(const char*, const struct stat*, int), int);
+int nftw(const char*,
+         int (*)(const char*, const struct stat*, int, struct FTW*),
+         int,
+         int);
 
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
 #define ftw64 ftw
diff --git a/fusl/include/getopt.h b/fusl/include/getopt.h
index c1d0df9..6428539 100644
--- a/fusl/include/getopt.h
+++ b/fusl/include/getopt.h
@@ -5,24 +5,27 @@
 extern "C" {
 #endif
 
-int getopt(int, char * const [], const char *);
-extern char *optarg;
+int getopt(int, char* const[], const char*);
+extern char* optarg;
 extern int optind, opterr, optopt, optreset;
 
-struct option
-{
-	const char *name;
-	int has_arg;
-	int *flag;
-	int val;
+struct option {
+  const char* name;
+  int has_arg;
+  int* flag;
+  int val;
 };
 
-int getopt_long(int, char *const *, const char *, const struct option *, int *);
-int getopt_long_only(int, char *const *, const char *, const struct option *, int *);
+int getopt_long(int, char* const*, const char*, const struct option*, int*);
+int getopt_long_only(int,
+                     char* const*,
+                     const char*,
+                     const struct option*,
+                     int*);
 
-#define no_argument        0
-#define required_argument  1
-#define optional_argument  2
+#define no_argument 0
+#define required_argument 1
+#define optional_argument 2
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/glob.h b/fusl/include/glob.h
index 76f6c1c..4e36565 100644
--- a/fusl/include/glob.h
+++ b/fusl/include/glob.h
@@ -1,5 +1,5 @@
-#ifndef	_GLOB_H
-#define	_GLOB_H
+#ifndef _GLOB_H
+#define _GLOB_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -12,29 +12,32 @@
 #include <bits/alltypes.h>
 
 typedef struct {
-	size_t gl_pathc;
-	char **gl_pathv;
-	size_t gl_offs;
-	int __dummy1;
-	void *__dummy2[5];
+  size_t gl_pathc;
+  char** gl_pathv;
+  size_t gl_offs;
+  int __dummy1;
+  void* __dummy2[5];
 } glob_t;
 
-int  glob(const char *__restrict, int, int (*)(const char *, int), glob_t *__restrict);
-void globfree(glob_t *);
+int glob(const char* __restrict,
+         int,
+         int (*)(const char*, int),
+         glob_t* __restrict);
+void globfree(glob_t*);
 
-#define GLOB_ERR      0x01
-#define GLOB_MARK     0x02
-#define GLOB_NOSORT   0x04
-#define GLOB_DOOFFS   0x08
-#define GLOB_NOCHECK  0x10
-#define GLOB_APPEND   0x20
+#define GLOB_ERR 0x01
+#define GLOB_MARK 0x02
+#define GLOB_NOSORT 0x04
+#define GLOB_DOOFFS 0x08
+#define GLOB_NOCHECK 0x10
+#define GLOB_APPEND 0x20
 #define GLOB_NOESCAPE 0x40
-#define	GLOB_PERIOD   0x80
+#define GLOB_PERIOD 0x80
 
 #define GLOB_NOSPACE 1
 #define GLOB_ABORTED 2
 #define GLOB_NOMATCH 3
-#define GLOB_NOSYS   4
+#define GLOB_NOSYS 4
 
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
 #define glob64 glob
diff --git a/fusl/include/grp.h b/fusl/include/grp.h
index b331d32..5179f34 100644
--- a/fusl/include/grp.h
+++ b/fusl/include/grp.h
@@ -1,5 +1,5 @@
-#ifndef	_GRP_H
-#define	_GRP_H
+#ifndef _GRP_H
+#define _GRP_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -16,33 +16,32 @@
 
 #include <bits/alltypes.h>
 
-struct group
-{
-	char *gr_name;
-	char *gr_passwd;
-	gid_t gr_gid;
-	char **gr_mem;
+struct group {
+  char* gr_name;
+  char* gr_passwd;
+  gid_t gr_gid;
+  char** gr_mem;
 };
 
-struct group  *getgrgid(gid_t);
-struct group  *getgrnam(const char *);
+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 **);
+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* getgrent(void);
+void endgrent(void);
+void setgrent(void);
 
 #ifdef _GNU_SOURCE
-struct group  *fgetgrent(FILE *stream);
-int putgrent(const struct group *, FILE *);
+struct group* fgetgrent(FILE* stream);
+int putgrent(const struct group*, FILE*);
 #endif
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-int getgrouplist(const char *, gid_t, gid_t *, int *);
-int setgroups(size_t, const gid_t *);
-int initgroups(const char *, gid_t);
+int getgrouplist(const char*, gid_t, gid_t*, int*);
+int setgroups(size_t, const gid_t*);
+int initgroups(const char*, gid_t);
 #endif
 
 #ifdef __cplusplus
diff --git a/fusl/include/iconv.h b/fusl/include/iconv.h
index ebe9bfd..0ebcb80 100644
--- a/fusl/include/iconv.h
+++ b/fusl/include/iconv.h
@@ -11,10 +11,14 @@
 
 #include <bits/alltypes.h>
 
-typedef void *iconv_t;
+typedef void* iconv_t;
 
-iconv_t iconv_open(const char *, const char *);
-size_t iconv(iconv_t, char **__restrict, size_t *__restrict, char **__restrict, size_t *__restrict);
+iconv_t iconv_open(const char*, const char*);
+size_t iconv(iconv_t,
+             char** __restrict,
+             size_t* __restrict,
+             char** __restrict,
+             size_t* __restrict);
 int iconv_close(iconv_t);
 
 #ifdef __cplusplus
diff --git a/fusl/include/ifaddrs.h b/fusl/include/ifaddrs.h
index 4726db6..577088e 100644
--- a/fusl/include/ifaddrs.h
+++ b/fusl/include/ifaddrs.h
@@ -10,26 +10,25 @@
 #include <sys/socket.h>
 
 struct ifaddrs {
-	struct ifaddrs *ifa_next;
-	char *ifa_name;
-	unsigned ifa_flags;
-	struct sockaddr *ifa_addr;
-	struct sockaddr *ifa_netmask;
-	union {
-		struct sockaddr *ifu_broadaddr;
-		struct sockaddr *ifu_dstaddr;
-	} ifa_ifu;
-	void *ifa_data;
+  struct ifaddrs* ifa_next;
+  char* ifa_name;
+  unsigned ifa_flags;
+  struct sockaddr* ifa_addr;
+  struct sockaddr* ifa_netmask;
+  union {
+    struct sockaddr* ifu_broadaddr;
+    struct sockaddr* ifu_dstaddr;
+  } ifa_ifu;
+  void* ifa_data;
 };
 #define ifa_broadaddr ifa_ifu.ifu_broadaddr
 #define ifa_dstaddr ifa_ifu.ifu_dstaddr
 
-void freeifaddrs(struct ifaddrs *ifp);
-int getifaddrs(struct ifaddrs **ifap);
+void freeifaddrs(struct ifaddrs* ifp);
+int getifaddrs(struct ifaddrs** ifap);
 
 #ifdef __cplusplus
 }
 #endif
 
 #endif
-
diff --git a/fusl/include/inttypes.h b/fusl/include/inttypes.h
index 61dcb72..b860b4d 100644
--- a/fusl/include/inttypes.h
+++ b/fusl/include/inttypes.h
@@ -16,106 +16,106 @@
 intmax_t imaxabs(intmax_t);
 imaxdiv_t imaxdiv(intmax_t, intmax_t);
 
-intmax_t strtoimax(const char *__restrict, char **__restrict, int);
-uintmax_t strtoumax(const char *__restrict, char **__restrict, int);
+intmax_t strtoimax(const char* __restrict, char** __restrict, int);
+uintmax_t strtoumax(const char* __restrict, char** __restrict, int);
 
-intmax_t wcstoimax(const wchar_t *__restrict, wchar_t **__restrict, int);
-uintmax_t wcstoumax(const wchar_t *__restrict, wchar_t **__restrict, int);
+intmax_t wcstoimax(const wchar_t* __restrict, wchar_t** __restrict, int);
+uintmax_t wcstoumax(const wchar_t* __restrict, wchar_t** __restrict, int);
 
 #if UINTPTR_MAX == UINT64_MAX
-#define __PRI64  "l"
+#define __PRI64 "l"
 #define __PRIPTR "l"
 #else
-#define __PRI64  "ll"
+#define __PRI64 "ll"
 #define __PRIPTR ""
 #endif
 
-#define PRId8  "d"
+#define PRId8 "d"
 #define PRId16 "d"
 #define PRId32 "d"
 #define PRId64 __PRI64 "d"
 
-#define PRIdLEAST8  "d"
+#define PRIdLEAST8 "d"
 #define PRIdLEAST16 "d"
 #define PRIdLEAST32 "d"
 #define PRIdLEAST64 __PRI64 "d"
 
-#define PRIdFAST8  "d"
+#define PRIdFAST8 "d"
 #define PRIdFAST16 "d"
 #define PRIdFAST32 "d"
 #define PRIdFAST64 __PRI64 "d"
 
-#define PRIi8  "i"
+#define PRIi8 "i"
 #define PRIi16 "i"
 #define PRIi32 "i"
 #define PRIi64 __PRI64 "i"
 
-#define PRIiLEAST8  "i"
+#define PRIiLEAST8 "i"
 #define PRIiLEAST16 "i"
 #define PRIiLEAST32 "i"
 #define PRIiLEAST64 __PRI64 "i"
 
-#define PRIiFAST8  "i"
+#define PRIiFAST8 "i"
 #define PRIiFAST16 "i"
 #define PRIiFAST32 "i"
 #define PRIiFAST64 __PRI64 "i"
 
-#define PRIo8  "o"
+#define PRIo8 "o"
 #define PRIo16 "o"
 #define PRIo32 "o"
 #define PRIo64 __PRI64 "o"
 
-#define PRIoLEAST8  "o"
+#define PRIoLEAST8 "o"
 #define PRIoLEAST16 "o"
 #define PRIoLEAST32 "o"
 #define PRIoLEAST64 __PRI64 "o"
 
-#define PRIoFAST8  "o"
+#define PRIoFAST8 "o"
 #define PRIoFAST16 "o"
 #define PRIoFAST32 "o"
 #define PRIoFAST64 __PRI64 "o"
 
-#define PRIu8  "u"
+#define PRIu8 "u"
 #define PRIu16 "u"
 #define PRIu32 "u"
 #define PRIu64 __PRI64 "u"
 
-#define PRIuLEAST8  "u"
+#define PRIuLEAST8 "u"
 #define PRIuLEAST16 "u"
 #define PRIuLEAST32 "u"
 #define PRIuLEAST64 __PRI64 "u"
 
-#define PRIuFAST8  "u"
+#define PRIuFAST8 "u"
 #define PRIuFAST16 "u"
 #define PRIuFAST32 "u"
 #define PRIuFAST64 __PRI64 "u"
 
-#define PRIx8  "x"
+#define PRIx8 "x"
 #define PRIx16 "x"
 #define PRIx32 "x"
 #define PRIx64 __PRI64 "x"
 
-#define PRIxLEAST8  "x"
+#define PRIxLEAST8 "x"
 #define PRIxLEAST16 "x"
 #define PRIxLEAST32 "x"
 #define PRIxLEAST64 __PRI64 "x"
 
-#define PRIxFAST8  "x"
+#define PRIxFAST8 "x"
 #define PRIxFAST16 "x"
 #define PRIxFAST32 "x"
 #define PRIxFAST64 __PRI64 "x"
 
-#define PRIX8  "X"
+#define PRIX8 "X"
 #define PRIX16 "X"
 #define PRIX32 "X"
 #define PRIX64 __PRI64 "X"
 
-#define PRIXLEAST8  "X"
+#define PRIXLEAST8 "X"
 #define PRIXLEAST16 "X"
 #define PRIXLEAST32 "X"
 #define PRIXLEAST64 __PRI64 "X"
 
-#define PRIXFAST8  "X"
+#define PRIXFAST8 "X"
 #define PRIXFAST16 "X"
 #define PRIXFAST32 "X"
 #define PRIXFAST64 __PRI64 "X"
@@ -134,42 +134,42 @@
 #define PRIxPTR __PRIPTR "x"
 #define PRIXPTR __PRIPTR "X"
 
-#define SCNd8   "hhd"
-#define SCNd16  "hd"
-#define SCNd32  "d"
-#define SCNd64  __PRI64 "d"
+#define SCNd8 "hhd"
+#define SCNd16 "hd"
+#define SCNd32 "d"
+#define SCNd64 __PRI64 "d"
 
-#define SCNdLEAST8  "hhd"
+#define SCNdLEAST8 "hhd"
 #define SCNdLEAST16 "hd"
 #define SCNdLEAST32 "d"
 #define SCNdLEAST64 __PRI64 "d"
 
-#define SCNdFAST8  "hhd"
+#define SCNdFAST8 "hhd"
 #define SCNdFAST16 "d"
 #define SCNdFAST32 "d"
 #define SCNdFAST64 __PRI64 "d"
 
-#define SCNi8   "hhi"
-#define SCNi16  "hi"
-#define SCNi32  "i"
-#define SCNi64  __PRI64 "i"
+#define SCNi8 "hhi"
+#define SCNi16 "hi"
+#define SCNi32 "i"
+#define SCNi64 __PRI64 "i"
 
-#define SCNiLEAST8  "hhi"
+#define SCNiLEAST8 "hhi"
 #define SCNiLEAST16 "hi"
 #define SCNiLEAST32 "i"
 #define SCNiLEAST64 __PRI64 "i"
 
-#define SCNiFAST8  "hhi"
+#define SCNiFAST8 "hhi"
 #define SCNiFAST16 "i"
 #define SCNiFAST32 "i"
 #define SCNiFAST64 __PRI64 "i"
 
-#define SCNu8   "hhu"
-#define SCNu16  "hu"
-#define SCNu32  "u"
-#define SCNu64  __PRI64 "u"
+#define SCNu8 "hhu"
+#define SCNu16 "hu"
+#define SCNu32 "u"
+#define SCNu64 __PRI64 "u"
 
-#define SCNuLEAST8  "hhu"
+#define SCNuLEAST8 "hhu"
 #define SCNuLEAST16 "hu"
 #define SCNuLEAST32 "u"
 #define SCNuLEAST64 __PRI64 "u"
@@ -179,32 +179,32 @@
 #define SCNuFAST32 "u"
 #define SCNuFAST64 __PRI64 "u"
 
-#define SCNo8   "hho"
-#define SCNo16  "ho"
-#define SCNo32  "o"
-#define SCNo64  __PRI64 "o"
+#define SCNo8 "hho"
+#define SCNo16 "ho"
+#define SCNo32 "o"
+#define SCNo64 __PRI64 "o"
 
-#define SCNoLEAST8  "hho"
+#define SCNoLEAST8 "hho"
 #define SCNoLEAST16 "ho"
 #define SCNoLEAST32 "o"
 #define SCNoLEAST64 __PRI64 "o"
 
-#define SCNoFAST8  "hho"
+#define SCNoFAST8 "hho"
 #define SCNoFAST16 "o"
 #define SCNoFAST32 "o"
 #define SCNoFAST64 __PRI64 "o"
 
-#define SCNx8   "hhx"
-#define SCNx16  "hx"
-#define SCNx32  "x"
-#define SCNx64  __PRI64 "x"
+#define SCNx8 "hhx"
+#define SCNx16 "hx"
+#define SCNx32 "x"
+#define SCNx64 __PRI64 "x"
 
-#define SCNxLEAST8  "hhx"
+#define SCNxLEAST8 "hhx"
 #define SCNxLEAST16 "hx"
 #define SCNxLEAST32 "x"
 #define SCNxLEAST64 __PRI64 "x"
 
-#define SCNxFAST8  "hhx"
+#define SCNxFAST8 "hhx"
 #define SCNxFAST16 "x"
 #define SCNxFAST32 "x"
 #define SCNxFAST64 __PRI64 "x"
@@ -226,4 +226,3 @@
 #endif
 
 #endif
-
diff --git a/fusl/include/iso646.h b/fusl/include/iso646.h
index 88ff53d..559a856 100644
--- a/fusl/include/iso646.h
+++ b/fusl/include/iso646.h
@@ -3,16 +3,16 @@
 
 #ifndef __cplusplus
 
-#define and    &&
+#define and&&
 #define and_eq &=
-#define bitand &
-#define bitor  |
-#define compl  ~
-#define not    !
+#define bitand&
+#define bitor |
+#define compl~
+#define not!
 #define not_eq !=
-#define or     ||
-#define or_eq  |=
-#define xor    ^
+#define or ||
+#define or_eq |=
+#define xor ^
 #define xor_eq ^=
 
 #endif
diff --git a/fusl/include/langinfo.h b/fusl/include/langinfo.h
index 2153c42..f20a6c9 100644
--- a/fusl/include/langinfo.h
+++ b/fusl/include/langinfo.h
@@ -82,8 +82,8 @@
 #define NOSTR 0x50003
 #endif
 
-char *nl_langinfo(nl_item);
-char *nl_langinfo_l(nl_item, locale_t);
+char* nl_langinfo(nl_item);
+char* nl_langinfo_l(nl_item, locale_t);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/libgen.h b/fusl/include/libgen.h
index 7c7fd9c..3f3fb43 100644
--- a/fusl/include/libgen.h
+++ b/fusl/include/libgen.h
@@ -5,8 +5,8 @@
 extern "C" {
 #endif
 
-char *dirname(char *);
-char *basename(char *);
+char* dirname(char*);
+char* basename(char*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/libintl.h b/fusl/include/libintl.h
index 6a707bf..2ffd123 100644
--- a/fusl/include/libintl.h
+++ b/fusl/include/libintl.h
@@ -9,20 +9,22 @@
 #define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 1 : -1)
 
 #if __GNUC__ >= 3
-#define __fa(n) __attribute__ ((__format_arg__ (n)))
+#define __fa(n) __attribute__((__format_arg__(n)))
 #else
 #define __fa(n)
 #endif
 
-char *gettext(const char *) __fa(1);
-char *dgettext(const char *, const char *) __fa(2);
-char *dcgettext(const char *, const char *, int) __fa(2);
-char *ngettext(const char *, const char *, unsigned long) __fa(1) __fa(2);
-char *dngettext(const char *, const char *, const char *, unsigned long) __fa(2) __fa(3);
-char *dcngettext(const char *, const char *, const char *, unsigned long, int) __fa(2) __fa(3);
-char *textdomain(const char *);
-char *bindtextdomain (const char *, const char *);
-char *bind_textdomain_codeset(const char *, const char *);
+char* gettext(const char*) __fa(1);
+char* dgettext(const char*, const char*) __fa(2);
+char* dcgettext(const char*, const char*, int) __fa(2);
+char* ngettext(const char*, const char*, unsigned long) __fa(1) __fa(2);
+char* dngettext(const char*, const char*, const char*, unsigned long) __fa(2)
+    __fa(3);
+char* dcngettext(const char*, const char*, const char*, unsigned long, int)
+    __fa(2) __fa(3);
+char* textdomain(const char*);
+char* bindtextdomain(const char*, const char*);
+char* bind_textdomain_codeset(const char*, const char*);
 
 #undef __fa
 
diff --git a/fusl/include/limits.h b/fusl/include/limits.h
index f9805a1..b67e33b 100644
--- a/fusl/include/limits.h
+++ b/fusl/include/limits.h
@@ -9,7 +9,7 @@
 
 /* Support signed or unsigned plain-char */
 
-#if '\0'-1 > 0
+#if '\0' - 1 > 0
 #define CHAR_MIN 0
 #define CHAR_MAX 255
 #else
@@ -23,21 +23,21 @@
 #define SCHAR_MIN (-128)
 #define SCHAR_MAX 127
 #define UCHAR_MAX 255
-#define SHRT_MIN  (-1-0x7fff)
-#define SHRT_MAX  0x7fff
+#define SHRT_MIN (-1 - 0x7fff)
+#define SHRT_MAX 0x7fff
 #define USHRT_MAX 0xffff
-#define INT_MIN  (-1-0x7fffffff)
-#define INT_MAX  0x7fffffff
+#define INT_MIN (-1 - 0x7fffffff)
+#define INT_MAX 0x7fffffff
 #define UINT_MAX 0xffffffffU
-#define LONG_MIN (-LONG_MAX-1)
-#define ULONG_MAX (2UL*LONG_MAX+1)
-#define LLONG_MIN (-LLONG_MAX-1)
-#define ULLONG_MAX (2ULL*LLONG_MAX+1)
+#define LONG_MIN (-LONG_MAX - 1)
+#define ULONG_MAX (2UL * LONG_MAX + 1)
+#define LLONG_MIN (-LLONG_MAX - 1)
+#define ULLONG_MAX (2ULL * LLONG_MAX + 1)
 
 #define MB_LEN_MAX 4
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
 #define PIPE_BUF 4096
 #ifdef PAGE_SIZE
@@ -89,8 +89,8 @@
 
 #endif
 
-#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) \
- || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || \
+    (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE + 0 < 700)
 
 #define NL_NMAX 16
 
@@ -99,56 +99,56 @@
 /* POSIX/SUS requirements follow. These numbers come directly
  * from SUS and have nothing to do with the host system. */
 
-#define _POSIX_AIO_LISTIO_MAX   2
-#define _POSIX_AIO_MAX          1
-#define _POSIX_ARG_MAX          4096
-#define _POSIX_CHILD_MAX        25
-#define _POSIX_CLOCKRES_MIN     20000000
-#define _POSIX_DELAYTIMER_MAX   32
-#define _POSIX_HOST_NAME_MAX    255
-#define _POSIX_LINK_MAX         8
-#define _POSIX_LOGIN_NAME_MAX   9
-#define _POSIX_MAX_CANON        255
-#define _POSIX_MAX_INPUT        255
-#define _POSIX_MQ_OPEN_MAX      8
-#define _POSIX_MQ_PRIO_MAX      32
-#define _POSIX_NAME_MAX         14
-#define _POSIX_NGROUPS_MAX      8
-#define _POSIX_OPEN_MAX         20
-#define _POSIX_PATH_MAX         256
-#define _POSIX_PIPE_BUF         512
-#define _POSIX_RE_DUP_MAX       255
-#define _POSIX_RTSIG_MAX        8
-#define _POSIX_SEM_NSEMS_MAX    256
-#define _POSIX_SEM_VALUE_MAX    32767
-#define _POSIX_SIGQUEUE_MAX     32
-#define _POSIX_SSIZE_MAX        32767
-#define _POSIX_STREAM_MAX       8
-#define _POSIX_SS_REPL_MAX      4
-#define _POSIX_SYMLINK_MAX      255
-#define _POSIX_SYMLOOP_MAX      8
+#define _POSIX_AIO_LISTIO_MAX 2
+#define _POSIX_AIO_MAX 1
+#define _POSIX_ARG_MAX 4096
+#define _POSIX_CHILD_MAX 25
+#define _POSIX_CLOCKRES_MIN 20000000
+#define _POSIX_DELAYTIMER_MAX 32
+#define _POSIX_HOST_NAME_MAX 255
+#define _POSIX_LINK_MAX 8
+#define _POSIX_LOGIN_NAME_MAX 9
+#define _POSIX_MAX_CANON 255
+#define _POSIX_MAX_INPUT 255
+#define _POSIX_MQ_OPEN_MAX 8
+#define _POSIX_MQ_PRIO_MAX 32
+#define _POSIX_NAME_MAX 14
+#define _POSIX_NGROUPS_MAX 8
+#define _POSIX_OPEN_MAX 20
+#define _POSIX_PATH_MAX 256
+#define _POSIX_PIPE_BUF 512
+#define _POSIX_RE_DUP_MAX 255
+#define _POSIX_RTSIG_MAX 8
+#define _POSIX_SEM_NSEMS_MAX 256
+#define _POSIX_SEM_VALUE_MAX 32767
+#define _POSIX_SIGQUEUE_MAX 32
+#define _POSIX_SSIZE_MAX 32767
+#define _POSIX_STREAM_MAX 8
+#define _POSIX_SS_REPL_MAX 4
+#define _POSIX_SYMLINK_MAX 255
+#define _POSIX_SYMLOOP_MAX 8
 #define _POSIX_THREAD_DESTRUCTOR_ITERATIONS 4
-#define _POSIX_THREAD_KEYS_MAX  128
+#define _POSIX_THREAD_KEYS_MAX 128
 #define _POSIX_THREAD_THREADS_MAX 64
-#define _POSIX_TIMER_MAX        32
+#define _POSIX_TIMER_MAX 32
 #define _POSIX_TRACE_EVENT_NAME_MAX 30
-#define _POSIX_TRACE_NAME_MAX   8
-#define _POSIX_TRACE_SYS_MAX    8
+#define _POSIX_TRACE_NAME_MAX 8
+#define _POSIX_TRACE_SYS_MAX 8
 #define _POSIX_TRACE_USER_EVENT_MAX 32
-#define _POSIX_TTY_NAME_MAX     9
-#define _POSIX_TZNAME_MAX       6
-#define _POSIX2_BC_BASE_MAX     99
-#define _POSIX2_BC_DIM_MAX      2048
-#define _POSIX2_BC_SCALE_MAX    99
-#define _POSIX2_BC_STRING_MAX   1000
+#define _POSIX_TTY_NAME_MAX 9
+#define _POSIX_TZNAME_MAX 6
+#define _POSIX2_BC_BASE_MAX 99
+#define _POSIX2_BC_DIM_MAX 2048
+#define _POSIX2_BC_SCALE_MAX 99
+#define _POSIX2_BC_STRING_MAX 1000
 #define _POSIX2_CHARCLASS_NAME_MAX 14
 #define _POSIX2_COLL_WEIGHTS_MAX 2
-#define _POSIX2_EXPR_NEST_MAX   32
-#define _POSIX2_LINE_MAX        2048
-#define _POSIX2_RE_DUP_MAX      255
+#define _POSIX2_EXPR_NEST_MAX 32
+#define _POSIX2_LINE_MAX 2048
+#define _POSIX2_RE_DUP_MAX 255
 
-#define _XOPEN_IOV_MAX          16
-#define _XOPEN_NAME_MAX         255
-#define _XOPEN_PATH_MAX         1024
+#define _XOPEN_IOV_MAX 16
+#define _XOPEN_NAME_MAX 255
+#define _XOPEN_PATH_MAX 1024
 
 #endif
diff --git a/fusl/include/link.h b/fusl/include/link.h
index 9349cdd..b27e504 100644
--- a/fusl/include/link.h
+++ b/fusl/include/link.h
@@ -11,41 +11,41 @@
 #include <bits/alltypes.h>
 
 #if UINTPTR_MAX > 0xffffffff
-#define ElfW(type) Elf64_ ## type
+#define ElfW(type) Elf64_##type
 #else
-#define ElfW(type) Elf32_ ## type
+#define ElfW(type) Elf32_##type
 #endif
 
 /* this is the same everywhere except alpha and s390 */
 typedef uint32_t Elf_Symndx;
 
 struct dl_phdr_info {
-	ElfW(Addr) dlpi_addr;
-	const char *dlpi_name;
-	const ElfW(Phdr) *dlpi_phdr;
-	ElfW(Half) dlpi_phnum;
-	unsigned long long int dlpi_adds;
-	unsigned long long int dlpi_subs;
-	size_t dlpi_tls_modid;
-	void *dlpi_tls_data;
+  ElfW(Addr) dlpi_addr;
+  const char* dlpi_name;
+  const ElfW(Phdr) * dlpi_phdr;
+  ElfW(Half) dlpi_phnum;
+  unsigned long long int dlpi_adds;
+  unsigned long long int dlpi_subs;
+  size_t dlpi_tls_modid;
+  void* dlpi_tls_data;
 };
 
 struct link_map {
-	ElfW(Addr) l_addr;
-	char *l_name;
-	ElfW(Dyn) *l_ld;
-	struct link_map *l_next, *l_prev;
+  ElfW(Addr) l_addr;
+  char* l_name;
+  ElfW(Dyn) * l_ld;
+  struct link_map *l_next, *l_prev;
 };
 
 struct r_debug {
-	int r_version;
-	struct link_map *r_map;
-	ElfW(Addr) r_brk;
-	enum { RT_CONSISTENT, RT_ADD, RT_DELETE } r_state;
-	ElfW(Addr) r_ldbase;
+  int r_version;
+  struct link_map* r_map;
+  ElfW(Addr) r_brk;
+  enum { RT_CONSISTENT, RT_ADD, RT_DELETE } r_state;
+  ElfW(Addr) r_ldbase;
 };
 
-int dl_iterate_phdr(int (*)(struct dl_phdr_info *, size_t, void *), void *);
+int dl_iterate_phdr(int (*)(struct dl_phdr_info*, size_t, void*), void*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/locale.h b/fusl/include/locale.h
index ce38438..83fa4b1 100644
--- a/fusl/include/locale.h
+++ b/fusl/include/locale.h
@@ -1,5 +1,5 @@
-#ifndef	_LOCALE_H
-#define	_LOCALE_H
+#ifndef _LOCALE_H
+#define _LOCALE_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -13,49 +13,47 @@
 #define NULL ((void*)0)
 #endif
 
-#define LC_CTYPE    0
-#define LC_NUMERIC  1
-#define LC_TIME     2
-#define LC_COLLATE  3
+#define LC_CTYPE 0
+#define LC_NUMERIC 1
+#define LC_TIME 2
+#define LC_COLLATE 3
 #define LC_MONETARY 4
 #define LC_MESSAGES 5
-#define LC_ALL      6
+#define LC_ALL 6
 
 struct lconv {
-	char *decimal_point;
-	char *thousands_sep;
-	char *grouping;
+  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_p_sep_by_space;
-	char int_n_cs_precedes;
-	char int_n_sep_by_space;
-	char int_p_sign_posn;
-	char int_n_sign_posn;
+  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_p_sep_by_space;
+  char int_n_cs_precedes;
+  char int_n_sep_by_space;
+  char int_p_sign_posn;
+  char int_n_sign_posn;
 };
 
+char* setlocale(int, const char*);
+struct lconv* localeconv(void);
 
-char *setlocale (int, const char *);
-struct lconv *localeconv(void);
-
-
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
 #define __NEED_locale_t
 
@@ -63,22 +61,21 @@
 
 #define LC_GLOBAL_LOCALE ((locale_t)-1)
 
-#define LC_CTYPE_MASK    (1<<LC_CTYPE)
-#define LC_NUMERIC_MASK  (1<<LC_NUMERIC)
-#define LC_TIME_MASK     (1<<LC_TIME)
-#define LC_COLLATE_MASK  (1<<LC_COLLATE)
-#define LC_MONETARY_MASK (1<<LC_MONETARY)
-#define LC_MESSAGES_MASK (1<<LC_MESSAGES)
-#define LC_ALL_MASK      0x7fffffff
+#define LC_CTYPE_MASK (1 << LC_CTYPE)
+#define LC_NUMERIC_MASK (1 << LC_NUMERIC)
+#define LC_TIME_MASK (1 << LC_TIME)
+#define LC_COLLATE_MASK (1 << LC_COLLATE)
+#define LC_MONETARY_MASK (1 << LC_MONETARY)
+#define LC_MESSAGES_MASK (1 << LC_MESSAGES)
+#define LC_ALL_MASK 0x7fffffff
 
 locale_t duplocale(locale_t);
 void freelocale(locale_t);
-locale_t newlocale(int, const char *, locale_t);
+locale_t newlocale(int, const char*, locale_t);
 locale_t uselocale(locale_t);
 
 #endif
 
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/fusl/include/malloc.h b/fusl/include/malloc.h
index 35f8b19..74ccfd6 100644
--- a/fusl/include/malloc.h
+++ b/fusl/include/malloc.h
@@ -9,14 +9,14 @@
 
 #include <bits/alltypes.h>
 
-void *malloc (size_t);
-void *calloc (size_t, size_t);
-void *realloc (void *, size_t);
-void free (void *);
-void *valloc (size_t);
-void *memalign(size_t, size_t);
+void* malloc(size_t);
+void* calloc(size_t, size_t);
+void* realloc(void*, size_t);
+void free(void*);
+void* valloc(size_t);
+void* memalign(size_t, size_t);
 
-size_t malloc_usable_size(void *);
+size_t malloc_usable_size(void*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/math.h b/fusl/include/math.h
index 6ac91da..86445ab 100644
--- a/fusl/include/math.h
+++ b/fusl/include/math.h
@@ -11,87 +11,101 @@
 #define __NEED_double_t
 #include <bits/alltypes.h>
 
-#if 100*__GNUC__+__GNUC_MINOR__ >= 303
-#define NAN       __builtin_nanf("")
-#define INFINITY  __builtin_inff()
+#if 100 * __GNUC__ + __GNUC_MINOR__ >= 303
+#define NAN __builtin_nanf("")
+#define INFINITY __builtin_inff()
 #else
-#define NAN       (0.0f/0.0f)
-#define INFINITY  1e5000f
+#define NAN (0.0f / 0.0f)
+#define INFINITY 1e5000f
 #endif
 
 #define HUGE_VALF INFINITY
-#define HUGE_VAL  ((double)INFINITY)
+#define HUGE_VAL ((double)INFINITY)
 #define HUGE_VALL ((long double)INFINITY)
 
-#define MATH_ERRNO  1
+#define MATH_ERRNO 1
 #define MATH_ERREXCEPT 2
 #define math_errhandling 2
 
-#define FP_ILOGBNAN (-1-(int)(((unsigned)-1)>>1))
+#define FP_ILOGBNAN (-1 - (int)(((unsigned)-1) >> 1))
 #define FP_ILOGB0 FP_ILOGBNAN
 
-#define FP_NAN       0
-#define FP_INFINITE  1
-#define FP_ZERO      2
+#define FP_NAN 0
+#define FP_INFINITE 1
+#define FP_ZERO 2
 #define FP_SUBNORMAL 3
-#define FP_NORMAL    4
+#define FP_NORMAL 4
 
 int __fpclassify(double);
 int __fpclassifyf(float);
 int __fpclassifyl(long double);
 
-static __inline unsigned __FLOAT_BITS(float __f)
-{
-	union {float __f; unsigned __i;} __u;
-	__u.__f = __f;
-	return __u.__i;
+static __inline unsigned __FLOAT_BITS(float __f) {
+  union {
+    float __f;
+    unsigned __i;
+  } __u;
+  __u.__f = __f;
+  return __u.__i;
 }
-static __inline unsigned long long __DOUBLE_BITS(double __f)
-{
-	union {double __f; unsigned long long __i;} __u;
-	__u.__f = __f;
-	return __u.__i;
+static __inline unsigned long long __DOUBLE_BITS(double __f) {
+  union {
+    double __f;
+    unsigned long long __i;
+  } __u;
+  __u.__f = __f;
+  return __u.__i;
 }
 
-#define fpclassify(x) ( \
-	sizeof(x) == sizeof(float) ? __fpclassifyf(x) : \
-	sizeof(x) == sizeof(double) ? __fpclassify(x) : \
-	__fpclassifyl(x) )
+#define fpclassify(x)                                                          \
+  (sizeof(x) == sizeof(float) ? __fpclassifyf(x) : sizeof(x) == sizeof(double) \
+                                                       ? __fpclassify(x)       \
+                                                       : __fpclassifyl(x))
 
-#define isinf(x) ( \
-	sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) == 0x7f800000 : \
-	sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) == 0x7ffULL<<52 : \
-	__fpclassifyl(x) == FP_INFINITE)
+#define isinf(x)                                                 \
+  (sizeof(x) == sizeof(float)                                    \
+       ? (__FLOAT_BITS(x) & 0x7fffffff) == 0x7f800000            \
+       : sizeof(x) == sizeof(double)                             \
+             ? (__DOUBLE_BITS(x) & -1ULL >> 1) == 0x7ffULL << 52 \
+             : __fpclassifyl(x) == FP_INFINITE)
 
-#define isnan(x) ( \
-	sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) > 0x7f800000 : \
-	sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) > 0x7ffULL<<52 : \
-	__fpclassifyl(x) == FP_NAN)
+#define isnan(x)                                                \
+  (sizeof(x) == sizeof(float)                                   \
+       ? (__FLOAT_BITS(x) & 0x7fffffff) > 0x7f800000            \
+       : sizeof(x) == sizeof(double)                            \
+             ? (__DOUBLE_BITS(x) & -1ULL >> 1) > 0x7ffULL << 52 \
+             : __fpclassifyl(x) == FP_NAN)
 
-#define isnormal(x) ( \
-	sizeof(x) == sizeof(float) ? ((__FLOAT_BITS(x)+0x00800000) & 0x7fffffff) >= 0x01000000 : \
-	sizeof(x) == sizeof(double) ? ((__DOUBLE_BITS(x)+(1ULL<<52)) & -1ULL>>1) >= 1ULL<<53 : \
-	__fpclassifyl(x) == FP_NORMAL)
+#define isnormal(x)                                                           \
+  (sizeof(x) == sizeof(float)                                                 \
+       ? ((__FLOAT_BITS(x) + 0x00800000) & 0x7fffffff) >= 0x01000000          \
+       : sizeof(x) == sizeof(double)                                          \
+             ? ((__DOUBLE_BITS(x) + (1ULL << 52)) & -1ULL >> 1) >= 1ULL << 53 \
+             : __fpclassifyl(x) == FP_NORMAL)
 
-#define isfinite(x) ( \
-	sizeof(x) == sizeof(float) ? (__FLOAT_BITS(x) & 0x7fffffff) < 0x7f800000 : \
-	sizeof(x) == sizeof(double) ? (__DOUBLE_BITS(x) & -1ULL>>1) < 0x7ffULL<<52 : \
-	__fpclassifyl(x) > FP_INFINITE)
+#define isfinite(x)                                             \
+  (sizeof(x) == sizeof(float)                                   \
+       ? (__FLOAT_BITS(x) & 0x7fffffff) < 0x7f800000            \
+       : sizeof(x) == sizeof(double)                            \
+             ? (__DOUBLE_BITS(x) & -1ULL >> 1) < 0x7ffULL << 52 \
+             : __fpclassifyl(x) > FP_INFINITE)
 
 int __signbit(double);
 int __signbitf(float);
 int __signbitl(long double);
 
-#define signbit(x) ( \
-	sizeof(x) == sizeof(float) ? (int)(__FLOAT_BITS(x)>>31) : \
-	sizeof(x) == sizeof(double) ? (int)(__DOUBLE_BITS(x)>>63) : \
-	__signbitl(x) )
+#define signbit(x)                                                   \
+  (sizeof(x) == sizeof(float)                                        \
+       ? (int)(__FLOAT_BITS(x) >> 31)                                \
+       : sizeof(x) == sizeof(double) ? (int)(__DOUBLE_BITS(x) >> 63) \
+                                     : __signbitl(x))
 
-#define isunordered(x,y) (isnan((x)) ? ((void)(y),1) : isnan((y)))
+#define isunordered(x, y) (isnan((x)) ? ((void)(y), 1) : isnan((y)))
 
-#define __ISREL_DEF(rel, op, type) \
-static __inline int __is##rel(type __x, type __y) \
-{ return !isunordered(__x,__y) && __x op __y; }
+#define __ISREL_DEF(rel, op, type)                    \
+  static __inline int __is##rel(type __x, type __y) { \
+    return !isunordered(__x, __y) && __x op __y;      \
+  }
 
 __ISREL_DEF(lessf, <, float_t)
 __ISREL_DEF(less, <, double_t)
@@ -109,317 +123,316 @@
 __ISREL_DEF(greaterequal, >=, double_t)
 __ISREL_DEF(greaterequall, >=, long double)
 
-#define __tg_pred_2(x, y, p) ( \
-	sizeof((x)+(y)) == sizeof(float) ? p##f(x, y) : \
-	sizeof((x)+(y)) == sizeof(double) ? p(x, y) : \
-	p##l(x, y) )
+#define __tg_pred_2(x, y, p)          \
+  (sizeof((x) + (y)) == sizeof(float) \
+       ? p##f(x, y)                   \
+       : sizeof((x) + (y)) == sizeof(double) ? p(x, y) : p##l(x, y))
 
-#define isless(x, y)            __tg_pred_2(x, y, __isless)
-#define islessequal(x, y)       __tg_pred_2(x, y, __islessequal)
-#define islessgreater(x, y)     __tg_pred_2(x, y, __islessgreater)
-#define isgreater(x, y)         __tg_pred_2(x, y, __isgreater)
-#define isgreaterequal(x, y)    __tg_pred_2(x, y, __isgreaterequal)
+#define isless(x, y) __tg_pred_2(x, y, __isless)
+#define islessequal(x, y) __tg_pred_2(x, y, __islessequal)
+#define islessgreater(x, y) __tg_pred_2(x, y, __islessgreater)
+#define isgreater(x, y) __tg_pred_2(x, y, __isgreater)
+#define isgreaterequal(x, y) __tg_pred_2(x, y, __isgreaterequal)
 
-double      acos(double);
-float       acosf(float);
+double acos(double);
+float acosf(float);
 long double acosl(long double);
 
-double      acosh(double);
-float       acoshf(float);
+double acosh(double);
+float acoshf(float);
 long double acoshl(long double);
 
-double      asin(double);
-float       asinf(float);
+double asin(double);
+float asinf(float);
 long double asinl(long double);
 
-double      asinh(double);
-float       asinhf(float);
+double asinh(double);
+float asinhf(float);
 long double asinhl(long double);
 
-double      atan(double);
-float       atanf(float);
+double atan(double);
+float atanf(float);
 long double atanl(long double);
 
-double      atan2(double, double);
-float       atan2f(float, float);
+double atan2(double, double);
+float atan2f(float, float);
 long double atan2l(long double, long double);
 
-double      atanh(double);
-float       atanhf(float);
+double atanh(double);
+float atanhf(float);
 long double atanhl(long double);
 
-double      cbrt(double);
-float       cbrtf(float);
+double cbrt(double);
+float cbrtf(float);
 long double cbrtl(long double);
 
-double      ceil(double);
-float       ceilf(float);
+double ceil(double);
+float ceilf(float);
 long double ceill(long double);
 
-double      copysign(double, double);
-float       copysignf(float, float);
+double copysign(double, double);
+float copysignf(float, float);
 long double copysignl(long double, long double);
 
-double      cos(double);
-float       cosf(float);
+double cos(double);
+float cosf(float);
 long double cosl(long double);
 
-double      cosh(double);
-float       coshf(float);
+double cosh(double);
+float coshf(float);
 long double coshl(long double);
 
-double      erf(double);
-float       erff(float);
+double erf(double);
+float erff(float);
 long double erfl(long double);
 
-double      erfc(double);
-float       erfcf(float);
+double erfc(double);
+float erfcf(float);
 long double erfcl(long double);
 
-double      exp(double);
-float       expf(float);
+double exp(double);
+float expf(float);
 long double expl(long double);
 
-double      exp2(double);
-float       exp2f(float);
+double exp2(double);
+float exp2f(float);
 long double exp2l(long double);
 
-double      expm1(double);
-float       expm1f(float);
+double expm1(double);
+float expm1f(float);
 long double expm1l(long double);
 
-double      fabs(double);
-float       fabsf(float);
+double fabs(double);
+float fabsf(float);
 long double fabsl(long double);
 
-double      fdim(double, double);
-float       fdimf(float, float);
+double fdim(double, double);
+float fdimf(float, float);
 long double fdiml(long double, long double);
 
-double      floor(double);
-float       floorf(float);
+double floor(double);
+float floorf(float);
 long double floorl(long double);
 
-double      fma(double, double, double);
-float       fmaf(float, float, float);
+double fma(double, double, double);
+float fmaf(float, float, float);
 long double fmal(long double, long double, long double);
 
-double      fmax(double, double);
-float       fmaxf(float, float);
+double fmax(double, double);
+float fmaxf(float, float);
 long double fmaxl(long double, long double);
 
-double      fmin(double, double);
-float       fminf(float, float);
+double fmin(double, double);
+float fminf(float, float);
 long double fminl(long double, long double);
 
-double      fmod(double, double);
-float       fmodf(float, float);
+double fmod(double, double);
+float fmodf(float, float);
 long double fmodl(long double, long double);
 
-double      frexp(double, int *);
-float       frexpf(float, int *);
-long double frexpl(long double, int *);
+double frexp(double, int*);
+float frexpf(float, int*);
+long double frexpl(long double, int*);
 
-double      hypot(double, double);
-float       hypotf(float, float);
+double hypot(double, double);
+float hypotf(float, float);
 long double hypotl(long double, long double);
 
-int         ilogb(double);
-int         ilogbf(float);
-int         ilogbl(long double);
+int ilogb(double);
+int ilogbf(float);
+int ilogbl(long double);
 
-double      ldexp(double, int);
-float       ldexpf(float, int);
+double ldexp(double, int);
+float ldexpf(float, int);
 long double ldexpl(long double, int);
 
-double      lgamma(double);
-float       lgammaf(float);
+double lgamma(double);
+float lgammaf(float);
 long double lgammal(long double);
 
-long long   llrint(double);
-long long   llrintf(float);
-long long   llrintl(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);
+long long llround(double);
+long long llroundf(float);
+long long llroundl(long double);
 
-double      log(double);
-float       logf(float);
+double log(double);
+float logf(float);
 long double logl(long double);
 
-double      log10(double);
-float       log10f(float);
+double log10(double);
+float log10f(float);
 long double log10l(long double);
 
-double      log1p(double);
-float       log1pf(float);
+double log1p(double);
+float log1pf(float);
 long double log1pl(long double);
 
-double      log2(double);
-float       log2f(float);
+double log2(double);
+float log2f(float);
 long double log2l(long double);
 
-double      logb(double);
-float       logbf(float);
+double logb(double);
+float logbf(float);
 long double logbl(long double);
 
-long        lrint(double);
-long        lrintf(float);
-long        lrintl(long double);
+long lrint(double);
+long lrintf(float);
+long lrintl(long double);
 
-long        lround(double);
-long        lroundf(float);
-long        lroundl(long double);
+long lround(double);
+long lroundf(float);
+long lroundl(long double);
 
-double      modf(double, double *);
-float       modff(float, float *);
-long double modfl(long double, long double *);
+double modf(double, double*);
+float modff(float, float*);
+long double modfl(long double, long double*);
 
-double      nan(const char *);
-float       nanf(const char *);
-long double nanl(const char *);
+double nan(const char*);
+float nanf(const char*);
+long double nanl(const char*);
 
-double      nearbyint(double);
-float       nearbyintf(float);
+double nearbyint(double);
+float nearbyintf(float);
 long double nearbyintl(long double);
 
-double      nextafter(double, double);
-float       nextafterf(float, float);
+double nextafter(double, double);
+float nextafterf(float, float);
 long double nextafterl(long double, long double);
 
-double      nexttoward(double, long double);
-float       nexttowardf(float, long double);
+double nexttoward(double, long double);
+float nexttowardf(float, long double);
 long double nexttowardl(long double, long double);
 
-double      pow(double, double);
-float       powf(float, float);
+double pow(double, double);
+float powf(float, float);
 long double powl(long double, long double);
 
-double      remainder(double, double);
-float       remainderf(float, float);
+double remainder(double, double);
+float remainderf(float, float);
 long double remainderl(long double, long double);
 
-double      remquo(double, double, int *);
-float       remquof(float, float, int *);
-long double remquol(long double, long double, int *);
+double remquo(double, double, int*);
+float remquof(float, float, int*);
+long double remquol(long double, long double, int*);
 
-double      rint(double);
-float       rintf(float);
+double rint(double);
+float rintf(float);
 long double rintl(long double);
 
-double      round(double);
-float       roundf(float);
+double round(double);
+float roundf(float);
 long double roundl(long double);
 
-double      scalbln(double, long);
-float       scalblnf(float, long);
+double scalbln(double, long);
+float scalblnf(float, long);
 long double scalblnl(long double, long);
 
-double      scalbn(double, int);
-float       scalbnf(float, int);
+double scalbn(double, int);
+float scalbnf(float, int);
 long double scalbnl(long double, int);
 
-double      sin(double);
-float       sinf(float);
+double sin(double);
+float sinf(float);
 long double sinl(long double);
 
-double      sinh(double);
-float       sinhf(float);
+double sinh(double);
+float sinhf(float);
 long double sinhl(long double);
 
-double      sqrt(double);
-float       sqrtf(float);
+double sqrt(double);
+float sqrtf(float);
 long double sqrtl(long double);
 
-double      tan(double);
-float       tanf(float);
+double tan(double);
+float tanf(float);
 long double tanl(long double);
 
-double      tanh(double);
-float       tanhf(float);
+double tanh(double);
+float tanhf(float);
 long double tanhl(long double);
 
-double      tgamma(double);
-float       tgammaf(float);
+double tgamma(double);
+float tgammaf(float);
 long double tgammal(long double);
 
-double      trunc(double);
-float       truncf(float);
+double trunc(double);
+float truncf(float);
 long double truncl(long double);
 
-
 #if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE)
-#undef  MAXFLOAT
-#define MAXFLOAT        3.40282346638528859812e+38F
+#undef MAXFLOAT
+#define MAXFLOAT 3.40282346638528859812e+38F
 #endif
 
 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#define M_E             2.7182818284590452354   /* e */
-#define M_LOG2E         1.4426950408889634074   /* log_2 e */
-#define M_LOG10E        0.43429448190325182765  /* log_10 e */
-#define M_LN2           0.69314718055994530942  /* log_e 2 */
-#define M_LN10          2.30258509299404568402  /* log_e 10 */
-#define M_PI            3.14159265358979323846  /* pi */
-#define M_PI_2          1.57079632679489661923  /* pi/2 */
-#define M_PI_4          0.78539816339744830962  /* pi/4 */
-#define M_1_PI          0.31830988618379067154  /* 1/pi */
-#define M_2_PI          0.63661977236758134308  /* 2/pi */
-#define M_2_SQRTPI      1.12837916709551257390  /* 2/sqrt(pi) */
-#define M_SQRT2         1.41421356237309504880  /* sqrt(2) */
-#define M_SQRT1_2       0.70710678118654752440  /* 1/sqrt(2) */
+#define M_E 2.7182818284590452354         /* e */
+#define M_LOG2E 1.4426950408889634074     /* log_2 e */
+#define M_LOG10E 0.43429448190325182765   /* log_10 e */
+#define M_LN2 0.69314718055994530942      /* log_e 2 */
+#define M_LN10 2.30258509299404568402     /* log_e 10 */
+#define M_PI 3.14159265358979323846       /* pi */
+#define M_PI_2 1.57079632679489661923     /* pi/2 */
+#define M_PI_4 0.78539816339744830962     /* pi/4 */
+#define M_1_PI 0.31830988618379067154     /* 1/pi */
+#define M_2_PI 0.63661977236758134308     /* 2/pi */
+#define M_2_SQRTPI 1.12837916709551257390 /* 2/sqrt(pi) */
+#define M_SQRT2 1.41421356237309504880    /* sqrt(2) */
+#define M_SQRT1_2 0.70710678118654752440  /* 1/sqrt(2) */
 
 extern int signgam;
 
-double      j0(double);
-double      j1(double);
-double      jn(int, double);
+double j0(double);
+double j1(double);
+double jn(int, double);
 
-double      y0(double);
-double      y1(double);
-double      yn(int, double);
+double y0(double);
+double y1(double);
+double yn(int, double);
 #endif
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#define HUGE            3.40282346638528859812e+38F
+#define HUGE 3.40282346638528859812e+38F
 
-double      drem(double, double);
-float       dremf(float, float);
+double drem(double, double);
+float dremf(float, float);
 
-int         finite(double);
-int         finitef(float);
+int finite(double);
+int finitef(float);
 
-double      scalb(double, double);
-float       scalbf(float, float);
+double scalb(double, double);
+float scalbf(float, float);
 
-double      significand(double);
-float       significandf(float);
+double significand(double);
+float significandf(float);
 
-double      lgamma_r(double, int*);
-float       lgammaf_r(float, int*);
+double lgamma_r(double, int*);
+float lgammaf_r(float, int*);
 
-float       j0f(float);
-float       j1f(float);
-float       jnf(int, float);
+float j0f(float);
+float j1f(float);
+float jnf(int, float);
 
-float       y0f(float);
-float       y1f(float);
-float       ynf(int, float);
+float y0f(float);
+float y1f(float);
+float ynf(int, float);
 #endif
 
 #ifdef _GNU_SOURCE
 long double lgammal_r(long double, int*);
 
-void        sincos(double, double*, double*);
-void        sincosf(float, float*, float*);
-void        sincosl(long double, long double*, long double*);
+void sincos(double, double*, double*);
+void sincosf(float, float*, float*);
+void sincosl(long double, long double*, long double*);
 
-double      exp10(double);
-float       exp10f(float);
+double exp10(double);
+float exp10f(float);
 long double exp10l(long double);
 
-double      pow10(double);
-float       pow10f(float);
+double pow10(double);
+float pow10f(float);
 long double pow10l(long double);
 #endif
 
diff --git a/fusl/include/mntent.h b/fusl/include/mntent.h
index d03c414..d3b179f 100644
--- a/fusl/include/mntent.h
+++ b/fusl/include/mntent.h
@@ -10,32 +10,31 @@
 
 #define MOUNTED "/etc/mtab"
 
-#define MNTTYPE_IGNORE	"ignore"
-#define MNTTYPE_NFS	"nfs"
-#define MNTTYPE_SWAP	"swap"
-#define MNTOPT_DEFAULTS	"defaults"
-#define MNTOPT_RO	"ro"
-#define MNTOPT_RW	"rw"
-#define MNTOPT_SUID	"suid"
-#define MNTOPT_NOSUID	"nosuid"
-#define MNTOPT_NOAUTO	"noauto"
+#define MNTTYPE_IGNORE "ignore"
+#define MNTTYPE_NFS "nfs"
+#define MNTTYPE_SWAP "swap"
+#define MNTOPT_DEFAULTS "defaults"
+#define MNTOPT_RO "ro"
+#define MNTOPT_RW "rw"
+#define MNTOPT_SUID "suid"
+#define MNTOPT_NOSUID "nosuid"
+#define MNTOPT_NOAUTO "noauto"
 
-struct mntent
-{
-	char *mnt_fsname;
-	char *mnt_dir;
-	char *mnt_type;
-	char *mnt_opts;
-	int mnt_freq;
-	int mnt_passno;
+struct mntent {
+  char* mnt_fsname;
+  char* mnt_dir;
+  char* mnt_type;
+  char* mnt_opts;
+  int mnt_freq;
+  int mnt_passno;
 };
 
-FILE *setmntent(const char *, const char *);
-int endmntent(FILE *);
-struct mntent *getmntent(FILE *);
-struct mntent *getmntent_r(FILE *, struct mntent *, char *, int);
-int addmntent(FILE *, const struct mntent *);
-char *hasmntopt(const struct mntent *, const char *);
+FILE* setmntent(const char*, const char*);
+int endmntent(FILE*);
+struct mntent* getmntent(FILE*);
+struct mntent* getmntent_r(FILE*, struct mntent*, char*, int);
+int addmntent(FILE*, const struct mntent*);
+char* hasmntopt(const struct mntent*, const char*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/monetary.h b/fusl/include/monetary.h
index a91fa56..b0cd03f 100644
--- a/fusl/include/monetary.h
+++ b/fusl/include/monetary.h
@@ -13,8 +13,12 @@
 
 #include <bits/alltypes.h>
 
-ssize_t strfmon(char *__restrict, size_t, const char *__restrict, ...);
-ssize_t strfmon_l(char *__restrict, size_t, locale_t, const char *__restrict, ...);
+ssize_t strfmon(char* __restrict, size_t, const char* __restrict, ...);
+ssize_t strfmon_l(char* __restrict,
+                  size_t,
+                  locale_t,
+                  const char* __restrict,
+                  ...);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/mqueue.h b/fusl/include/mqueue.h
index f5cbe79..1be04fe 100644
--- a/fusl/include/mqueue.h
+++ b/fusl/include/mqueue.h
@@ -15,20 +15,26 @@
 
 typedef int mqd_t;
 struct mq_attr {
-	long mq_flags, mq_maxmsg, mq_msgsize, mq_curmsgs, __unused[4];
+  long mq_flags, mq_maxmsg, mq_msgsize, mq_curmsgs, __unused[4];
 };
 struct sigevent;
 
 int mq_close(mqd_t);
-int mq_getattr(mqd_t, struct mq_attr *);
-int mq_notify(mqd_t, const struct sigevent *);
-mqd_t mq_open(const char *, int, ...);
-ssize_t mq_receive(mqd_t, char *, size_t, unsigned *);
-int mq_send(mqd_t, const char *, size_t, unsigned);
-int mq_setattr(mqd_t, const struct mq_attr *__restrict, struct mq_attr *__restrict);
-ssize_t mq_timedreceive(mqd_t, char *__restrict, size_t, unsigned *__restrict, const struct timespec *__restrict);
-int mq_timedsend(mqd_t, const char *, size_t, unsigned, const struct timespec *);
-int mq_unlink(const char *);
+int mq_getattr(mqd_t, struct mq_attr*);
+int mq_notify(mqd_t, const struct sigevent*);
+mqd_t mq_open(const char*, int, ...);
+ssize_t mq_receive(mqd_t, char*, size_t, unsigned*);
+int mq_send(mqd_t, const char*, size_t, unsigned);
+int mq_setattr(mqd_t,
+               const struct mq_attr* __restrict,
+               struct mq_attr* __restrict);
+ssize_t mq_timedreceive(mqd_t,
+                        char* __restrict,
+                        size_t,
+                        unsigned* __restrict,
+                        const struct timespec* __restrict);
+int mq_timedsend(mqd_t, const char*, size_t, unsigned, const struct timespec*);
+int mq_unlink(const char*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/net/ethernet.h b/fusl/include/net/ethernet.h
index c8d4177..83513e4 100644
--- a/fusl/include/net/ethernet.h
+++ b/fusl/include/net/ethernet.h
@@ -10,43 +10,42 @@
 #include <netinet/if_ether.h>
 
 struct ether_addr {
-	uint8_t ether_addr_octet[ETH_ALEN];
+  uint8_t ether_addr_octet[ETH_ALEN];
 };
 
 struct ether_header {
-	uint8_t  ether_dhost[ETH_ALEN];
-	uint8_t  ether_shost[ETH_ALEN];
-	uint16_t ether_type;
+  uint8_t ether_dhost[ETH_ALEN];
+  uint8_t ether_shost[ETH_ALEN];
+  uint16_t ether_type;
 };
 
-#define	ETHERTYPE_PUP		0x0200
-#define ETHERTYPE_SPRITE	0x0500
-#define	ETHERTYPE_IP		0x0800
-#define	ETHERTYPE_ARP		0x0806
-#define	ETHERTYPE_REVARP	0x8035
-#define ETHERTYPE_AT		0x809B
-#define ETHERTYPE_AARP		0x80F3
-#define	ETHERTYPE_VLAN		0x8100
-#define ETHERTYPE_IPX		0x8137
-#define	ETHERTYPE_IPV6		0x86dd
-#define ETHERTYPE_LOOPBACK	0x9000
+#define ETHERTYPE_PUP 0x0200
+#define ETHERTYPE_SPRITE 0x0500
+#define ETHERTYPE_IP 0x0800
+#define ETHERTYPE_ARP 0x0806
+#define ETHERTYPE_REVARP 0x8035
+#define ETHERTYPE_AT 0x809B
+#define ETHERTYPE_AARP 0x80F3
+#define ETHERTYPE_VLAN 0x8100
+#define ETHERTYPE_IPX 0x8137
+#define ETHERTYPE_IPV6 0x86dd
+#define ETHERTYPE_LOOPBACK 0x9000
 
+#define ETHER_ADDR_LEN ETH_ALEN
+#define ETHER_TYPE_LEN 2
+#define ETHER_CRC_LEN 4
+#define ETHER_HDR_LEN ETH_HLEN
+#define ETHER_MIN_LEN (ETH_ZLEN + ETHER_CRC_LEN)
+#define ETHER_MAX_LEN (ETH_FRAME_LEN + ETHER_CRC_LEN)
 
-#define	ETHER_ADDR_LEN	ETH_ALEN
-#define	ETHER_TYPE_LEN	2
-#define	ETHER_CRC_LEN	4
-#define	ETHER_HDR_LEN	ETH_HLEN
-#define	ETHER_MIN_LEN	(ETH_ZLEN + ETHER_CRC_LEN)
-#define	ETHER_MAX_LEN	(ETH_FRAME_LEN + ETHER_CRC_LEN)
+#define ETHER_IS_VALID_LEN(foo) \
+  ((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN)
 
-#define	ETHER_IS_VALID_LEN(foo)	\
-	((foo) >= ETHER_MIN_LEN && (foo) <= ETHER_MAX_LEN)
+#define ETHERTYPE_TRAIL 0x1000
+#define ETHERTYPE_NTRAILER 16
 
-#define	ETHERTYPE_TRAIL		0x1000
-#define	ETHERTYPE_NTRAILER	16
-
-#define	ETHERMTU	ETH_DATA_LEN
-#define	ETHERMIN	(ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN)
+#define ETHERMTU ETH_DATA_LEN
+#define ETHERMIN (ETHER_MIN_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN)
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/net/if.h b/fusl/include/net/if.h
index 3f4fc09..224139b 100644
--- a/fusl/include/net/if.h
+++ b/fusl/include/net/if.h
@@ -9,25 +9,21 @@
 
 #define IF_NAMESIZE 16
 
-struct if_nameindex
-{
-	unsigned int if_index;
-	char *if_name;
+struct if_nameindex {
+  unsigned int if_index;
+  char* if_name;
 };
 
-unsigned int if_nametoindex (const char *);
-char *if_indextoname (unsigned int, char *);
-struct if_nameindex *if_nameindex (void);
-void if_freenameindex (struct if_nameindex *);
-
-
-
+unsigned int if_nametoindex(const char*);
+char* if_indextoname(unsigned int, char*);
+struct if_nameindex* if_nameindex(void);
+void if_freenameindex(struct if_nameindex*);
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
 #include <sys/socket.h>
 
-#define IFF_UP	0x1
+#define IFF_UP 0x1
 #define IFF_BROADCAST 0x2
 #define IFF_DEBUG 0x4
 #define IFF_LOOPBACK 0x8
@@ -46,85 +42,86 @@
 #define IFF_LOWER_UP 0x10000
 #define IFF_DORMANT 0x20000
 #define IFF_ECHO 0x40000
-#define IFF_VOLATILE (IFF_LOOPBACK|IFF_POINTOPOINT|IFF_BROADCAST| \
-        IFF_ECHO|IFF_MASTER|IFF_SLAVE|IFF_RUNNING|IFF_LOWER_UP|IFF_DORMANT)
+#define IFF_VOLATILE                                                        \
+  (IFF_LOOPBACK | IFF_POINTOPOINT | IFF_BROADCAST | IFF_ECHO | IFF_MASTER | \
+   IFF_SLAVE | IFF_RUNNING | IFF_LOWER_UP | IFF_DORMANT)
 
 struct ifaddr {
-	struct sockaddr ifa_addr;
-	union {
-		struct sockaddr	ifu_broadaddr;
-		struct sockaddr	ifu_dstaddr;
-	} ifa_ifu;
-	struct iface *ifa_ifp;
-	struct ifaddr *ifa_next;
+  struct sockaddr ifa_addr;
+  union {
+    struct sockaddr ifu_broadaddr;
+    struct sockaddr ifu_dstaddr;
+  } ifa_ifu;
+  struct iface* ifa_ifp;
+  struct ifaddr* ifa_next;
 };
 
-#define ifa_broadaddr	ifa_ifu.ifu_broadaddr
-#define ifa_dstaddr	ifa_ifu.ifu_dstaddr
+#define ifa_broadaddr ifa_ifu.ifu_broadaddr
+#define ifa_dstaddr ifa_ifu.ifu_dstaddr
 
 struct ifmap {
-	unsigned long int mem_start;
-	unsigned long int mem_end;
-	unsigned short int base_addr;
-	unsigned char irq;
-	unsigned char dma;
-	unsigned char port;
+  unsigned long int mem_start;
+  unsigned long int mem_end;
+  unsigned short int base_addr;
+  unsigned char irq;
+  unsigned char dma;
+  unsigned char port;
 };
 
-#define IFHWADDRLEN	6
-#define IFNAMSIZ	IF_NAMESIZE
+#define IFHWADDRLEN 6
+#define IFNAMSIZ IF_NAMESIZE
 
 struct ifreq {
-	union {
-		char ifrn_name[IFNAMSIZ];
-	} ifr_ifrn;
-	union {
-		struct sockaddr ifru_addr;
-		struct sockaddr ifru_dstaddr;
-		struct sockaddr ifru_broadaddr;
-		struct sockaddr ifru_netmask;
-		struct sockaddr ifru_hwaddr;
-		short int ifru_flags;
-		int ifru_ivalue;
-		int ifru_mtu;
-		struct ifmap ifru_map;
-		char ifru_slave[IFNAMSIZ];
-		char ifru_newname[IFNAMSIZ];
-		void *ifru_data;
-	} ifr_ifru;
+  union {
+    char ifrn_name[IFNAMSIZ];
+  } ifr_ifrn;
+  union {
+    struct sockaddr ifru_addr;
+    struct sockaddr ifru_dstaddr;
+    struct sockaddr ifru_broadaddr;
+    struct sockaddr ifru_netmask;
+    struct sockaddr ifru_hwaddr;
+    short int ifru_flags;
+    int ifru_ivalue;
+    int ifru_mtu;
+    struct ifmap ifru_map;
+    char ifru_slave[IFNAMSIZ];
+    char ifru_newname[IFNAMSIZ];
+    void* ifru_data;
+  } ifr_ifru;
 };
 
-#define ifr_name	ifr_ifrn.ifrn_name
-#define ifr_hwaddr	ifr_ifru.ifru_hwaddr
-#define ifr_addr	ifr_ifru.ifru_addr
-#define ifr_dstaddr	ifr_ifru.ifru_dstaddr
-#define ifr_broadaddr	ifr_ifru.ifru_broadaddr
-#define ifr_netmask	ifr_ifru.ifru_netmask
-#define ifr_flags	ifr_ifru.ifru_flags
-#define ifr_metric	ifr_ifru.ifru_ivalue
-#define ifr_mtu		ifr_ifru.ifru_mtu
-#define ifr_map		ifr_ifru.ifru_map
-#define ifr_slave	ifr_ifru.ifru_slave
-#define ifr_data	ifr_ifru.ifru_data
-#define ifr_ifindex	ifr_ifru.ifru_ivalue
-#define ifr_bandwidth	ifr_ifru.ifru_ivalue
-#define ifr_qlen	ifr_ifru.ifru_ivalue
-#define ifr_newname	ifr_ifru.ifru_newname
-#define _IOT_ifreq	_IOT(_IOTS(char),IFNAMSIZ,_IOTS(char),16,0,0)
-#define _IOT_ifreq_short _IOT(_IOTS(char),IFNAMSIZ,_IOTS(short),1,0,0)
-#define _IOT_ifreq_int	_IOT(_IOTS(char),IFNAMSIZ,_IOTS(int),1,0,0)
+#define ifr_name ifr_ifrn.ifrn_name
+#define ifr_hwaddr ifr_ifru.ifru_hwaddr
+#define ifr_addr ifr_ifru.ifru_addr
+#define ifr_dstaddr ifr_ifru.ifru_dstaddr
+#define ifr_broadaddr ifr_ifru.ifru_broadaddr
+#define ifr_netmask ifr_ifru.ifru_netmask
+#define ifr_flags ifr_ifru.ifru_flags
+#define ifr_metric ifr_ifru.ifru_ivalue
+#define ifr_mtu ifr_ifru.ifru_mtu
+#define ifr_map ifr_ifru.ifru_map
+#define ifr_slave ifr_ifru.ifru_slave
+#define ifr_data ifr_ifru.ifru_data
+#define ifr_ifindex ifr_ifru.ifru_ivalue
+#define ifr_bandwidth ifr_ifru.ifru_ivalue
+#define ifr_qlen ifr_ifru.ifru_ivalue
+#define ifr_newname ifr_ifru.ifru_newname
+#define _IOT_ifreq _IOT(_IOTS(char), IFNAMSIZ, _IOTS(char), 16, 0, 0)
+#define _IOT_ifreq_short _IOT(_IOTS(char), IFNAMSIZ, _IOTS(short), 1, 0, 0)
+#define _IOT_ifreq_int _IOT(_IOTS(char), IFNAMSIZ, _IOTS(int), 1, 0, 0)
 
 struct ifconf {
-	int ifc_len;		
-	union {
-		void *ifcu_buf;
-		struct ifreq *ifcu_req;
-	} ifc_ifcu;
+  int ifc_len;
+  union {
+    void* ifcu_buf;
+    struct ifreq* ifcu_req;
+  } ifc_ifcu;
 };
 
-#define ifc_buf		ifc_ifcu.ifcu_buf
-#define ifc_req		ifc_ifcu.ifcu_req
-#define _IOT_ifconf _IOT(_IOTS(struct ifconf),1,0,0,0,0)
+#define ifc_buf ifc_ifcu.ifcu_buf
+#define ifc_req ifc_ifcu.ifcu_req
+#define _IOT_ifconf _IOT(_IOTS(struct ifconf), 1, 0, 0, 0, 0)
 
 #endif
 
diff --git a/fusl/include/net/if_arp.h b/fusl/include/net/if_arp.h
index 18d5dcf..b99541c 100644
--- a/fusl/include/net/if_arp.h
+++ b/fusl/include/net/if_arp.h
@@ -9,76 +9,75 @@
 #include <sys/types.h>
 #include <sys/socket.h>
 
-#define MAX_ADDR_LEN	7
+#define MAX_ADDR_LEN 7
 
-#define	ARPOP_REQUEST	1
-#define	ARPOP_REPLY	2
-#define	ARPOP_RREQUEST	3
-#define	ARPOP_RREPLY	4
-#define	ARPOP_InREQUEST	8
-#define	ARPOP_InREPLY	9
-#define	ARPOP_NAK	10
+#define ARPOP_REQUEST 1
+#define ARPOP_REPLY 2
+#define ARPOP_RREQUEST 3
+#define ARPOP_RREPLY 4
+#define ARPOP_InREQUEST 8
+#define ARPOP_InREPLY 9
+#define ARPOP_NAK 10
 
 struct arphdr {
-	uint16_t ar_hrd;
-	uint16_t ar_pro;
-	uint8_t ar_hln;
-	uint8_t ar_pln;
-	uint16_t ar_op;
+  uint16_t ar_hrd;
+  uint16_t ar_pro;
+  uint8_t ar_hln;
+  uint8_t ar_pln;
+  uint16_t ar_op;
 };
 
+#define ARPHRD_NETROM 0
+#define ARPHRD_ETHER 1
+#define ARPHRD_EETHER 2
+#define ARPHRD_AX25 3
+#define ARPHRD_PRONET 4
+#define ARPHRD_CHAOS 5
+#define ARPHRD_IEEE802 6
+#define ARPHRD_ARCNET 7
+#define ARPHRD_APPLETLK 8
+#define ARPHRD_DLCI 15
+#define ARPHRD_ATM 19
+#define ARPHRD_METRICOM 23
+#define ARPHRD_IEEE1394 24
+#define ARPHRD_EUI64 27
+#define ARPHRD_INFINIBAND 32
+#define ARPHRD_SLIP 256
+#define ARPHRD_CSLIP 257
+#define ARPHRD_SLIP6 258
+#define ARPHRD_CSLIP6 259
+#define ARPHRD_RSRVD 260
+#define ARPHRD_ADAPT 264
+#define ARPHRD_ROSE 270
+#define ARPHRD_X25 271
+#define ARPHRD_HWX25 272
+#define ARPHRD_CAN 280
+#define ARPHRD_PPP 512
+#define ARPHRD_CISCO 513
+#define ARPHRD_HDLC ARPHRD_CISCO
+#define ARPHRD_LAPB 516
+#define ARPHRD_DDCMP 517
+#define ARPHRD_RAWHDLC 518
 
-#define ARPHRD_NETROM	0
-#define ARPHRD_ETHER 	1
-#define	ARPHRD_EETHER	2
-#define	ARPHRD_AX25	3
-#define	ARPHRD_PRONET	4
-#define	ARPHRD_CHAOS	5
-#define	ARPHRD_IEEE802	6
-#define	ARPHRD_ARCNET	7
-#define	ARPHRD_APPLETLK	8
-#define	ARPHRD_DLCI	15
-#define	ARPHRD_ATM	19
-#define	ARPHRD_METRICOM	23
-#define ARPHRD_IEEE1394	24
-#define ARPHRD_EUI64		27
-#define ARPHRD_INFINIBAND	32
-#define ARPHRD_SLIP	256
-#define ARPHRD_CSLIP	257
-#define ARPHRD_SLIP6	258
-#define ARPHRD_CSLIP6	259
-#define ARPHRD_RSRVD	260
-#define ARPHRD_ADAPT	264
-#define ARPHRD_ROSE	270
-#define ARPHRD_X25	271
-#define ARPHRD_HWX25	272
-#define ARPHRD_CAN	280
-#define ARPHRD_PPP	512
-#define ARPHRD_CISCO	513
-#define ARPHRD_HDLC	ARPHRD_CISCO
-#define ARPHRD_LAPB	516
-#define ARPHRD_DDCMP	517
-#define	ARPHRD_RAWHDLC	518
-
-#define ARPHRD_TUNNEL	768
-#define ARPHRD_TUNNEL6	769
-#define ARPHRD_FRAD	770
-#define ARPHRD_SKIP	771
-#define ARPHRD_LOOPBACK	772
+#define ARPHRD_TUNNEL 768
+#define ARPHRD_TUNNEL6 769
+#define ARPHRD_FRAD 770
+#define ARPHRD_SKIP 771
+#define ARPHRD_LOOPBACK 772
 #define ARPHRD_LOCALTLK 773
-#define ARPHRD_FDDI	774
-#define ARPHRD_BIF	775
-#define ARPHRD_SIT	776
-#define ARPHRD_IPDDP	777
-#define ARPHRD_IPGRE	778
-#define ARPHRD_PIMREG	779
-#define ARPHRD_HIPPI	780
-#define ARPHRD_ASH	781
-#define ARPHRD_ECONET	782
-#define ARPHRD_IRDA	783
-#define ARPHRD_FCPP	784
-#define ARPHRD_FCAL	785
-#define ARPHRD_FCPL	786
+#define ARPHRD_FDDI 774
+#define ARPHRD_BIF 775
+#define ARPHRD_SIT 776
+#define ARPHRD_IPDDP 777
+#define ARPHRD_IPGRE 778
+#define ARPHRD_PIMREG 779
+#define ARPHRD_HIPPI 780
+#define ARPHRD_ASH 781
+#define ARPHRD_ECONET 782
+#define ARPHRD_IRDA 783
+#define ARPHRD_FCPP 784
+#define ARPHRD_FCAL 785
+#define ARPHRD_FCPL 786
 #define ARPHRD_FCFABRIC 787
 #define ARPHRD_IEEE802_TR 800
 #define ARPHRD_IEEE80211 801
@@ -92,47 +91,45 @@
 #define ARPHRD_IP6GRE 823
 #define ARPHRD_NETLINK 824
 
-#define ARPHRD_VOID	  0xFFFF
-#define ARPHRD_NONE	  0xFFFE
+#define ARPHRD_VOID 0xFFFF
+#define ARPHRD_NONE 0xFFFE
 
 struct arpreq {
-	struct sockaddr arp_pa;
-	struct sockaddr arp_ha;
-	int arp_flags;
-	struct sockaddr arp_netmask;
-	char arp_dev[16];
+  struct sockaddr arp_pa;
+  struct sockaddr arp_ha;
+  int arp_flags;
+  struct sockaddr arp_netmask;
+  char arp_dev[16];
 };
 
 struct arpreq_old {
-	struct sockaddr arp_pa;
-	struct sockaddr arp_ha;
-	int arp_flags;
-	struct sockaddr arp_netmask;
+  struct sockaddr arp_pa;
+  struct sockaddr arp_ha;
+  int arp_flags;
+  struct sockaddr arp_netmask;
 };
 
-#define ATF_COM		0x02
-#define	ATF_PERM	0x04
-#define	ATF_PUBL	0x08
-#define	ATF_USETRAILERS	0x10
-#define ATF_NETMASK     0x20
-#define ATF_DONTPUB	0x40
-#define ATF_MAGIC	0x80
+#define ATF_COM 0x02
+#define ATF_PERM 0x04
+#define ATF_PUBL 0x08
+#define ATF_USETRAILERS 0x10
+#define ATF_NETMASK 0x20
+#define ATF_DONTPUB 0x40
+#define ATF_MAGIC 0x80
 
-#define ARPD_UPDATE	0x01
-#define ARPD_LOOKUP	0x02
-#define ARPD_FLUSH	0x03
+#define ARPD_UPDATE 0x01
+#define ARPD_LOOKUP 0x02
+#define ARPD_FLUSH 0x03
 
 struct arpd_request {
-	unsigned short req;
-	uint32_t ip;
-	unsigned long dev;
-	unsigned long stamp;
-	unsigned long updated;
-	unsigned char ha[MAX_ADDR_LEN];
+  unsigned short req;
+  uint32_t ip;
+  unsigned long dev;
+  unsigned long stamp;
+  unsigned long updated;
+  unsigned char ha[MAX_ADDR_LEN];
 };
 
-
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/fusl/include/net/route.h b/fusl/include/net/route.h
index 96ff48e..dc08585 100644
--- a/fusl/include/net/route.h
+++ b/fusl/include/net/route.h
@@ -10,112 +10,108 @@
 #include <sys/types.h>
 #include <netinet/in.h>
 
-
 struct rtentry {
-	unsigned long int rt_pad1;
-	struct sockaddr rt_dst;
-	struct sockaddr rt_gateway;
-	struct sockaddr rt_genmask;
-	unsigned short int rt_flags;
-	short int rt_pad2;
-	unsigned long int rt_pad3;
-	unsigned char rt_tos;
-	unsigned char rt_class;
-	short int rt_pad4[sizeof(long)/2-1];
-	short int rt_metric;
-	char *rt_dev;
-	unsigned long int rt_mtu;
-	unsigned long int rt_window;
-	unsigned short int rt_irtt;
+  unsigned long int rt_pad1;
+  struct sockaddr rt_dst;
+  struct sockaddr rt_gateway;
+  struct sockaddr rt_genmask;
+  unsigned short int rt_flags;
+  short int rt_pad2;
+  unsigned long int rt_pad3;
+  unsigned char rt_tos;
+  unsigned char rt_class;
+  short int rt_pad4[sizeof(long) / 2 - 1];
+  short int rt_metric;
+  char* rt_dev;
+  unsigned long int rt_mtu;
+  unsigned long int rt_window;
+  unsigned short int rt_irtt;
 };
 
-#define rt_mss	rt_mtu
-
+#define rt_mss rt_mtu
 
 struct in6_rtmsg {
-	struct in6_addr rtmsg_dst;
-	struct in6_addr rtmsg_src;
-	struct in6_addr rtmsg_gateway;
-	uint32_t rtmsg_type;
-	uint16_t rtmsg_dst_len;
-	uint16_t rtmsg_src_len;
-	uint32_t rtmsg_metric;
-	unsigned long int rtmsg_info;
-	uint32_t rtmsg_flags;
-	int rtmsg_ifindex;
+  struct in6_addr rtmsg_dst;
+  struct in6_addr rtmsg_src;
+  struct in6_addr rtmsg_gateway;
+  uint32_t rtmsg_type;
+  uint16_t rtmsg_dst_len;
+  uint16_t rtmsg_src_len;
+  uint32_t rtmsg_metric;
+  unsigned long int rtmsg_info;
+  uint32_t rtmsg_flags;
+  int rtmsg_ifindex;
 };
 
+#define RTF_UP 0x0001
+#define RTF_GATEWAY 0x0002
 
-#define	RTF_UP		0x0001
-#define	RTF_GATEWAY	0x0002
+#define RTF_HOST 0x0004
+#define RTF_REINSTATE 0x0008
+#define RTF_DYNAMIC 0x0010
+#define RTF_MODIFIED 0x0020
+#define RTF_MTU 0x0040
+#define RTF_MSS RTF_MTU
+#define RTF_WINDOW 0x0080
+#define RTF_IRTT 0x0100
+#define RTF_REJECT 0x0200
+#define RTF_STATIC 0x0400
+#define RTF_XRESOLVE 0x0800
+#define RTF_NOFORWARD 0x1000
+#define RTF_THROW 0x2000
+#define RTF_NOPMTUDISC 0x4000
 
-#define	RTF_HOST	0x0004
-#define RTF_REINSTATE	0x0008
-#define	RTF_DYNAMIC	0x0010
-#define	RTF_MODIFIED	0x0020
-#define RTF_MTU		0x0040
-#define RTF_MSS		RTF_MTU
-#define RTF_WINDOW	0x0080
-#define RTF_IRTT	0x0100
-#define RTF_REJECT	0x0200
-#define	RTF_STATIC	0x0400
-#define	RTF_XRESOLVE	0x0800
-#define RTF_NOFORWARD   0x1000
-#define RTF_THROW	0x2000
-#define RTF_NOPMTUDISC  0x4000
+#define RTF_DEFAULT 0x00010000
+#define RTF_ALLONLINK 0x00020000
+#define RTF_ADDRCONF 0x00040000
 
-#define RTF_DEFAULT	0x00010000
-#define RTF_ALLONLINK	0x00020000
-#define RTF_ADDRCONF	0x00040000
+#define RTF_LINKRT 0x00100000
+#define RTF_NONEXTHOP 0x00200000
 
-#define RTF_LINKRT	0x00100000
-#define RTF_NONEXTHOP	0x00200000
+#define RTF_CACHE 0x01000000
+#define RTF_FLOW 0x02000000
+#define RTF_POLICY 0x04000000
 
-#define RTF_CACHE	0x01000000
-#define RTF_FLOW	0x02000000
-#define RTF_POLICY	0x04000000
-
-#define RTCF_VALVE	0x00200000
-#define RTCF_MASQ	0x00400000
-#define RTCF_NAT	0x00800000
+#define RTCF_VALVE 0x00200000
+#define RTCF_MASQ 0x00400000
+#define RTCF_NAT 0x00800000
 #define RTCF_DOREDIRECT 0x01000000
-#define RTCF_LOG	0x02000000
-#define RTCF_DIRECTSRC	0x04000000
+#define RTCF_LOG 0x02000000
+#define RTCF_DIRECTSRC 0x04000000
 
-#define RTF_LOCAL	0x80000000
-#define RTF_INTERFACE	0x40000000
-#define RTF_MULTICAST	0x20000000
-#define RTF_BROADCAST	0x10000000
-#define RTF_NAT		0x08000000
+#define RTF_LOCAL 0x80000000
+#define RTF_INTERFACE 0x40000000
+#define RTF_MULTICAST 0x20000000
+#define RTF_BROADCAST 0x10000000
+#define RTF_NAT 0x08000000
 
-#define RTF_ADDRCLASSMASK	0xF8000000
-#define RT_ADDRCLASS(flags)	((uint32_t) flags >> 23)
+#define RTF_ADDRCLASSMASK 0xF8000000
+#define RT_ADDRCLASS(flags) ((uint32_t)flags >> 23)
 
-#define RT_TOS(tos)		((tos) & IPTOS_TOS_MASK)
+#define RT_TOS(tos) ((tos)&IPTOS_TOS_MASK)
 
-#define RT_LOCALADDR(flags)	((flags & RTF_ADDRCLASSMASK) \
-				 == (RTF_LOCAL|RTF_INTERFACE))
+#define RT_LOCALADDR(flags) \
+  ((flags & RTF_ADDRCLASSMASK) == (RTF_LOCAL | RTF_INTERFACE))
 
-#define RT_CLASS_UNSPEC		0
-#define RT_CLASS_DEFAULT	253
+#define RT_CLASS_UNSPEC 0
+#define RT_CLASS_DEFAULT 253
 
-#define RT_CLASS_MAIN		254
-#define RT_CLASS_LOCAL		255
-#define RT_CLASS_MAX		255
+#define RT_CLASS_MAIN 254
+#define RT_CLASS_LOCAL 255
+#define RT_CLASS_MAX 255
 
+#define RTMSG_ACK NLMSG_ACK
+#define RTMSG_OVERRUN NLMSG_OVERRUN
 
-#define RTMSG_ACK		NLMSG_ACK
-#define RTMSG_OVERRUN		NLMSG_OVERRUN
+#define RTMSG_NEWDEVICE 0x11
+#define RTMSG_DELDEVICE 0x12
+#define RTMSG_NEWROUTE 0x21
+#define RTMSG_DELROUTE 0x22
+#define RTMSG_NEWRULE 0x31
+#define RTMSG_DELRULE 0x32
+#define RTMSG_CONTROL 0x40
 
-#define RTMSG_NEWDEVICE		0x11
-#define RTMSG_DELDEVICE		0x12
-#define RTMSG_NEWROUTE		0x21
-#define RTMSG_DELROUTE		0x22
-#define RTMSG_NEWRULE		0x31
-#define RTMSG_DELRULE		0x32
-#define RTMSG_CONTROL		0x40
-
-#define RTMSG_AR_FAILED		0x51
+#define RTMSG_AR_FAILED 0x51
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/netdb.h b/fusl/include/netdb.h
index 4794068..376990b 100644
--- a/fusl/include/netdb.h
+++ b/fusl/include/netdb.h
@@ -1,5 +1,5 @@
-#ifndef	_NETDB_H
-#define	_NETDB_H
+#ifndef _NETDB_H
+#define _NETDB_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -13,146 +13,175 @@
 #include <bits/alltypes.h>
 #endif
 
-struct addrinfo
-{
-	int ai_flags;
-	int ai_family;
-	int ai_socktype;
-	int ai_protocol;
-	socklen_t ai_addrlen;
-	struct sockaddr *ai_addr;
-	char *ai_canonname;
-	struct addrinfo *ai_next;
+struct addrinfo {
+  int ai_flags;
+  int ai_family;
+  int ai_socktype;
+  int ai_protocol;
+  socklen_t ai_addrlen;
+  struct sockaddr* ai_addr;
+  char* ai_canonname;
+  struct addrinfo* ai_next;
 };
 
 #define IPPORT_RESERVED 1024
 
-#define AI_PASSIVE      0x01
-#define AI_CANONNAME    0x02
-#define AI_NUMERICHOST  0x04
-#define AI_V4MAPPED     0x08
-#define AI_ALL          0x10
-#define AI_ADDRCONFIG   0x20
-#define AI_NUMERICSERV  0x400
+#define AI_PASSIVE 0x01
+#define AI_CANONNAME 0x02
+#define AI_NUMERICHOST 0x04
+#define AI_V4MAPPED 0x08
+#define AI_ALL 0x10
+#define AI_ADDRCONFIG 0x20
+#define AI_NUMERICSERV 0x400
 
-
-#define NI_NUMERICHOST  0x01
-#define NI_NUMERICSERV  0x02
-#define NI_NOFQDN       0x04
-#define NI_NAMEREQD     0x08
-#define NI_DGRAM        0x10
+#define NI_NUMERICHOST 0x01
+#define NI_NUMERICSERV 0x02
+#define NI_NOFQDN 0x04
+#define NI_NAMEREQD 0x08
+#define NI_DGRAM 0x10
 #define NI_NUMERICSCOPE 0x100
 
-#define EAI_BADFLAGS   -1
-#define EAI_NONAME     -2
-#define EAI_AGAIN      -3
-#define EAI_FAIL       -4
-#define EAI_FAMILY     -6
-#define EAI_SOCKTYPE   -7
-#define EAI_SERVICE    -8
-#define EAI_MEMORY     -10
-#define EAI_SYSTEM     -11
-#define EAI_OVERFLOW   -12
+#define EAI_BADFLAGS -1
+#define EAI_NONAME -2
+#define EAI_AGAIN -3
+#define EAI_FAIL -4
+#define EAI_FAMILY -6
+#define EAI_SOCKTYPE -7
+#define EAI_SERVICE -8
+#define EAI_MEMORY -10
+#define EAI_SYSTEM -11
+#define EAI_OVERFLOW -12
 
-int getaddrinfo (const char *__restrict, const char *__restrict, const struct addrinfo *__restrict, struct addrinfo **__restrict);
-void freeaddrinfo (struct addrinfo *);
-int getnameinfo (const struct sockaddr *__restrict, socklen_t, char *__restrict, socklen_t, char *__restrict, socklen_t, int);
-const char *gai_strerror(int);
-
+int getaddrinfo(const char* __restrict,
+                const char* __restrict,
+                const struct addrinfo* __restrict,
+                struct addrinfo** __restrict);
+void freeaddrinfo(struct addrinfo*);
+int getnameinfo(const struct sockaddr* __restrict,
+                socklen_t,
+                char* __restrict,
+                socklen_t,
+                char* __restrict,
+                socklen_t,
+                int);
+const char* gai_strerror(int);
 
 /* Legacy functions follow (marked OBsolete in SUS) */
 
-struct netent
-{
-	char *n_name;
-	char **n_aliases;
-	int n_addrtype;
-	uint32_t n_net;
+struct netent {
+  char* n_name;
+  char** n_aliases;
+  int n_addrtype;
+  uint32_t n_net;
 };
 
-struct hostent
-{
-	char *h_name;
-	char **h_aliases;
-	int h_addrtype;
-	int h_length;
-	char **h_addr_list;
+struct hostent {
+  char* h_name;
+  char** h_aliases;
+  int h_addrtype;
+  int h_length;
+  char** h_addr_list;
 };
 #define h_addr h_addr_list[0]
 
-struct servent
-{
-	char *s_name;
-	char **s_aliases;
-	int s_port;
-	char *s_proto;
+struct servent {
+  char* s_name;
+  char** s_aliases;
+  int s_port;
+  char* s_proto;
 };
 
-struct protoent
-{
-	char *p_name;
-	char **p_aliases;
-	int p_proto;
+struct protoent {
+  char* p_name;
+  char** p_aliases;
+  int p_proto;
 };
 
-void sethostent (int);
-void endhostent (void);
-struct hostent *gethostent (void);
+void sethostent(int);
+void endhostent(void);
+struct hostent* gethostent(void);
 
-void setnetent (int);
-void endnetent (void);
-struct netent *getnetent (void);
-struct netent *getnetbyaddr (uint32_t, int);
-struct netent *getnetbyname (const char *);
+void setnetent(int);
+void endnetent(void);
+struct netent* getnetent(void);
+struct netent* getnetbyaddr(uint32_t, int);
+struct netent* getnetbyname(const char*);
 
-void setservent (int);
-void endservent (void);
-struct servent *getservent (void);
-struct servent *getservbyname (const char *, const char *);
-struct servent *getservbyport (int, const char *);
+void setservent(int);
+void endservent(void);
+struct servent* getservent(void);
+struct servent* getservbyname(const char*, const char*);
+struct servent* getservbyport(int, const char*);
 
-void setprotoent (int);
-void endprotoent (void);
-struct protoent *getprotoent (void);
-struct protoent *getprotobyname (const char *);
-struct protoent *getprotobynumber (int);
+void setprotoent(int);
+void endprotoent(void);
+struct protoent* getprotoent(void);
+struct protoent* getprotobyname(const char*);
+struct protoent* getprotobynumber(int);
 
-#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) \
- || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE+0 < 200809L) \
- || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
-struct hostent *gethostbyname (const char *);
-struct hostent *gethostbyaddr (const void *, socklen_t, int);
-int *__h_errno_location(void);
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) || \
+    (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE + 0 < 200809L) ||            \
+    (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE + 0 < 700)
+struct hostent* gethostbyname(const char*);
+struct hostent* gethostbyaddr(const void*, socklen_t, int);
+int* __h_errno_location(void);
 #define h_errno (*__h_errno_location())
 #define HOST_NOT_FOUND 1
-#define TRY_AGAIN      2
-#define NO_RECOVERY    3
-#define NO_DATA        4
-#define NO_ADDRESS     NO_DATA
+#define TRY_AGAIN 2
+#define NO_RECOVERY 3
+#define NO_DATA 4
+#define NO_ADDRESS NO_DATA
 #endif
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-void herror(const char *);
-const char *hstrerror(int);
-int gethostbyname_r(const char *, struct hostent *, char *, size_t, struct hostent **, int *);
-int gethostbyname2_r(const char *, int, struct hostent *, char *, size_t, struct hostent **, int *);
-struct hostent *gethostbyname2(const char *, int);
-int gethostbyaddr_r(const void *, socklen_t, int, struct hostent *, char *, size_t, struct hostent **, int *);
-int getservbyport_r(int, const char *, struct servent *, char *, size_t, struct servent **);
-int getservbyname_r(const char *, const char *, struct servent *, char *, size_t, struct servent **);
-#define EAI_NODATA     -5
+void herror(const char*);
+const char* hstrerror(int);
+int gethostbyname_r(const char*,
+                    struct hostent*,
+                    char*,
+                    size_t,
+                    struct hostent**,
+                    int*);
+int gethostbyname2_r(const char*,
+                     int,
+                     struct hostent*,
+                     char*,
+                     size_t,
+                     struct hostent**,
+                     int*);
+struct hostent* gethostbyname2(const char*, int);
+int gethostbyaddr_r(const void*,
+                    socklen_t,
+                    int,
+                    struct hostent*,
+                    char*,
+                    size_t,
+                    struct hostent**,
+                    int*);
+int getservbyport_r(int,
+                    const char*,
+                    struct servent*,
+                    char*,
+                    size_t,
+                    struct servent**);
+int getservbyname_r(const char*,
+                    const char*,
+                    struct servent*,
+                    char*,
+                    size_t,
+                    struct servent**);
+#define EAI_NODATA -5
 #define EAI_ADDRFAMILY -9
 #define EAI_INPROGRESS -100
-#define EAI_CANCELED   -101
+#define EAI_CANCELED -101
 #define EAI_NOTCANCELED -102
-#define EAI_ALLDONE    -103
-#define EAI_INTR       -104
+#define EAI_ALLDONE -103
+#define EAI_INTR -104
 #define EAI_IDN_ENCODE -105
 #define NI_MAXHOST 255
 #define NI_MAXSERV 32
 #endif
 
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/fusl/include/netinet/ether.h b/fusl/include/netinet/ether.h
index eec7e53..f8a8c8d 100644
--- a/fusl/include/netinet/ether.h
+++ b/fusl/include/netinet/ether.h
@@ -7,13 +7,13 @@
 
 #include <netinet/if_ether.h>
 
-char *ether_ntoa (const struct ether_addr *);
-struct ether_addr *ether_aton (const char *);
-char *ether_ntoa_r (const struct ether_addr *, char *);
-struct ether_addr *ether_aton_r (const char *, struct ether_addr *);
-int ether_line(const char *, struct ether_addr *, char *);
-int ether_ntohost(char *, const struct ether_addr *);
-int ether_hostton(const char *, struct ether_addr *);
+char* ether_ntoa(const struct ether_addr*);
+struct ether_addr* ether_aton(const char*);
+char* ether_ntoa_r(const struct ether_addr*, char*);
+struct ether_addr* ether_aton_r(const char*, struct ether_addr*);
+int ether_line(const char*, struct ether_addr*, char*);
+int ether_ntohost(char*, const struct ether_addr*);
+int ether_hostton(const char*, struct ether_addr*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/netinet/icmp6.h b/fusl/include/netinet/icmp6.h
index 01269e7..a42a3c6 100644
--- a/fusl/include/netinet/icmp6.h
+++ b/fusl/include/netinet/icmp6.h
@@ -12,252 +12,252 @@
 
 #define ICMP6_FILTER 1
 
-#define ICMP6_FILTER_BLOCK		1
-#define ICMP6_FILTER_PASS		2
-#define ICMP6_FILTER_BLOCKOTHERS	3
-#define ICMP6_FILTER_PASSONLY		4
+#define ICMP6_FILTER_BLOCK 1
+#define ICMP6_FILTER_PASS 2
+#define ICMP6_FILTER_BLOCKOTHERS 3
+#define ICMP6_FILTER_PASSONLY 4
 
 struct icmp6_filter {
-	uint32_t icmp6_filt[8];
+  uint32_t icmp6_filt[8];
 };
 
 struct icmp6_hdr {
-	uint8_t     icmp6_type;
-	uint8_t     icmp6_code;
-	uint16_t    icmp6_cksum;
-	union {
-		uint32_t  icmp6_un_data32[1];
-		uint16_t  icmp6_un_data16[2];
-		uint8_t   icmp6_un_data8[4];
-	} icmp6_dataun;
+  uint8_t icmp6_type;
+  uint8_t icmp6_code;
+  uint16_t icmp6_cksum;
+  union {
+    uint32_t icmp6_un_data32[1];
+    uint16_t icmp6_un_data16[2];
+    uint8_t icmp6_un_data8[4];
+  } icmp6_dataun;
 };
 
-#define icmp6_data32    icmp6_dataun.icmp6_un_data32
-#define icmp6_data16    icmp6_dataun.icmp6_un_data16
-#define icmp6_data8     icmp6_dataun.icmp6_un_data8
-#define icmp6_pptr      icmp6_data32[0]
-#define icmp6_mtu       icmp6_data32[0]
-#define icmp6_id        icmp6_data16[0]
-#define icmp6_seq       icmp6_data16[1]
-#define icmp6_maxdelay  icmp6_data16[0]
+#define icmp6_data32 icmp6_dataun.icmp6_un_data32
+#define icmp6_data16 icmp6_dataun.icmp6_un_data16
+#define icmp6_data8 icmp6_dataun.icmp6_un_data8
+#define icmp6_pptr icmp6_data32[0]
+#define icmp6_mtu icmp6_data32[0]
+#define icmp6_id icmp6_data16[0]
+#define icmp6_seq icmp6_data16[1]
+#define icmp6_maxdelay icmp6_data16[0]
 
-#define ICMP6_DST_UNREACH             1
-#define ICMP6_PACKET_TOO_BIG          2
-#define ICMP6_TIME_EXCEEDED           3
-#define ICMP6_PARAM_PROB              4
+#define ICMP6_DST_UNREACH 1
+#define ICMP6_PACKET_TOO_BIG 2
+#define ICMP6_TIME_EXCEEDED 3
+#define ICMP6_PARAM_PROB 4
 
-#define ICMP6_INFOMSG_MASK  0x80
+#define ICMP6_INFOMSG_MASK 0x80
 
-#define ICMP6_ECHO_REQUEST          128
-#define ICMP6_ECHO_REPLY            129
-#define MLD_LISTENER_QUERY          130
-#define MLD_LISTENER_REPORT         131
-#define MLD_LISTENER_REDUCTION      132
+#define ICMP6_ECHO_REQUEST 128
+#define ICMP6_ECHO_REPLY 129
+#define MLD_LISTENER_QUERY 130
+#define MLD_LISTENER_REPORT 131
+#define MLD_LISTENER_REDUCTION 132
 
-#define ICMP6_DST_UNREACH_NOROUTE     0
-#define ICMP6_DST_UNREACH_ADMIN       1
+#define ICMP6_DST_UNREACH_NOROUTE 0
+#define ICMP6_DST_UNREACH_ADMIN 1
 #define ICMP6_DST_UNREACH_BEYONDSCOPE 2
-#define ICMP6_DST_UNREACH_ADDR        3
-#define ICMP6_DST_UNREACH_NOPORT      4
+#define ICMP6_DST_UNREACH_ADDR 3
+#define ICMP6_DST_UNREACH_NOPORT 4
 
-#define ICMP6_TIME_EXCEED_TRANSIT     0
-#define ICMP6_TIME_EXCEED_REASSEMBLY  1
+#define ICMP6_TIME_EXCEED_TRANSIT 0
+#define ICMP6_TIME_EXCEED_REASSEMBLY 1
 
-#define ICMP6_PARAMPROB_HEADER        0
-#define ICMP6_PARAMPROB_NEXTHEADER    1
-#define ICMP6_PARAMPROB_OPTION        2
+#define ICMP6_PARAMPROB_HEADER 0
+#define ICMP6_PARAMPROB_NEXTHEADER 1
+#define ICMP6_PARAMPROB_OPTION 2
 
 #define ICMP6_FILTER_WILLPASS(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0)
+  ((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type)&31))) == 0)
 
 #define ICMP6_FILTER_WILLBLOCK(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0)
+  ((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type)&31))) != 0)
 
 #define ICMP6_FILTER_SETPASS(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31))))
+  ((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type)&31))))
 
 #define ICMP6_FILTER_SETBLOCK(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) |=  (1 << ((type) & 31))))
+  ((((filterp)->icmp6_filt[(type) >> 5]) |= (1 << ((type)&31))))
 
 #define ICMP6_FILTER_SETPASSALL(filterp) \
-	memset (filterp, 0, sizeof (struct icmp6_filter));
+  memset(filterp, 0, sizeof(struct icmp6_filter));
 
 #define ICMP6_FILTER_SETBLOCKALL(filterp) \
-	memset (filterp, 0xFF, sizeof (struct icmp6_filter));
+  memset(filterp, 0xFF, sizeof(struct icmp6_filter));
 
-#define ND_ROUTER_SOLICIT           133
-#define ND_ROUTER_ADVERT            134
-#define ND_NEIGHBOR_SOLICIT         135
-#define ND_NEIGHBOR_ADVERT          136
-#define ND_REDIRECT                 137
+#define ND_ROUTER_SOLICIT 133
+#define ND_ROUTER_ADVERT 134
+#define ND_NEIGHBOR_SOLICIT 135
+#define ND_NEIGHBOR_ADVERT 136
+#define ND_REDIRECT 137
 
 struct nd_router_solicit {
-	struct icmp6_hdr  nd_rs_hdr;
+  struct icmp6_hdr nd_rs_hdr;
 };
 
-#define nd_rs_type               nd_rs_hdr.icmp6_type
-#define nd_rs_code               nd_rs_hdr.icmp6_code
-#define nd_rs_cksum              nd_rs_hdr.icmp6_cksum
-#define nd_rs_reserved           nd_rs_hdr.icmp6_data32[0]
+#define nd_rs_type nd_rs_hdr.icmp6_type
+#define nd_rs_code nd_rs_hdr.icmp6_code
+#define nd_rs_cksum nd_rs_hdr.icmp6_cksum
+#define nd_rs_reserved nd_rs_hdr.icmp6_data32[0]
 
 struct nd_router_advert {
-	struct icmp6_hdr  nd_ra_hdr;
-	uint32_t   nd_ra_reachable;
-	uint32_t   nd_ra_retransmit;
+  struct icmp6_hdr nd_ra_hdr;
+  uint32_t nd_ra_reachable;
+  uint32_t nd_ra_retransmit;
 };
 
-#define nd_ra_type               nd_ra_hdr.icmp6_type
-#define nd_ra_code               nd_ra_hdr.icmp6_code
-#define nd_ra_cksum              nd_ra_hdr.icmp6_cksum
-#define nd_ra_curhoplimit        nd_ra_hdr.icmp6_data8[0]
-#define nd_ra_flags_reserved     nd_ra_hdr.icmp6_data8[1]
-#define ND_RA_FLAG_MANAGED       0x80
-#define ND_RA_FLAG_OTHER         0x40
-#define ND_RA_FLAG_HOME_AGENT    0x20
-#define nd_ra_router_lifetime    nd_ra_hdr.icmp6_data16[1]
+#define nd_ra_type nd_ra_hdr.icmp6_type
+#define nd_ra_code nd_ra_hdr.icmp6_code
+#define nd_ra_cksum nd_ra_hdr.icmp6_cksum
+#define nd_ra_curhoplimit nd_ra_hdr.icmp6_data8[0]
+#define nd_ra_flags_reserved nd_ra_hdr.icmp6_data8[1]
+#define ND_RA_FLAG_MANAGED 0x80
+#define ND_RA_FLAG_OTHER 0x40
+#define ND_RA_FLAG_HOME_AGENT 0x20
+#define nd_ra_router_lifetime nd_ra_hdr.icmp6_data16[1]
 
 struct nd_neighbor_solicit {
-	struct icmp6_hdr  nd_ns_hdr;
-	struct in6_addr   nd_ns_target;
+  struct icmp6_hdr nd_ns_hdr;
+  struct in6_addr nd_ns_target;
 };
 
-#define nd_ns_type               nd_ns_hdr.icmp6_type
-#define nd_ns_code               nd_ns_hdr.icmp6_code
-#define nd_ns_cksum              nd_ns_hdr.icmp6_cksum
-#define nd_ns_reserved           nd_ns_hdr.icmp6_data32[0]
+#define nd_ns_type nd_ns_hdr.icmp6_type
+#define nd_ns_code nd_ns_hdr.icmp6_code
+#define nd_ns_cksum nd_ns_hdr.icmp6_cksum
+#define nd_ns_reserved nd_ns_hdr.icmp6_data32[0]
 
 struct nd_neighbor_advert {
-	struct icmp6_hdr  nd_na_hdr;
-	struct in6_addr   nd_na_target;
+  struct icmp6_hdr nd_na_hdr;
+  struct in6_addr nd_na_target;
 };
 
-#define nd_na_type               nd_na_hdr.icmp6_type
-#define nd_na_code               nd_na_hdr.icmp6_code
-#define nd_na_cksum              nd_na_hdr.icmp6_cksum
-#define nd_na_flags_reserved     nd_na_hdr.icmp6_data32[0]
-#if     __BYTE_ORDER == __BIG_ENDIAN
-#define ND_NA_FLAG_ROUTER        0x80000000
-#define ND_NA_FLAG_SOLICITED     0x40000000
-#define ND_NA_FLAG_OVERRIDE      0x20000000
+#define nd_na_type nd_na_hdr.icmp6_type
+#define nd_na_code nd_na_hdr.icmp6_code
+#define nd_na_cksum nd_na_hdr.icmp6_cksum
+#define nd_na_flags_reserved nd_na_hdr.icmp6_data32[0]
+#if __BYTE_ORDER == __BIG_ENDIAN
+#define ND_NA_FLAG_ROUTER 0x80000000
+#define ND_NA_FLAG_SOLICITED 0x40000000
+#define ND_NA_FLAG_OVERRIDE 0x20000000
 #else
-#define ND_NA_FLAG_ROUTER        0x00000080
-#define ND_NA_FLAG_SOLICITED     0x00000040
-#define ND_NA_FLAG_OVERRIDE      0x00000020
+#define ND_NA_FLAG_ROUTER 0x00000080
+#define ND_NA_FLAG_SOLICITED 0x00000040
+#define ND_NA_FLAG_OVERRIDE 0x00000020
 #endif
 
 struct nd_redirect {
-	struct icmp6_hdr  nd_rd_hdr;
-	struct in6_addr   nd_rd_target;
-	struct in6_addr   nd_rd_dst;
+  struct icmp6_hdr nd_rd_hdr;
+  struct in6_addr nd_rd_target;
+  struct in6_addr nd_rd_dst;
 };
 
-#define nd_rd_type               nd_rd_hdr.icmp6_type
-#define nd_rd_code               nd_rd_hdr.icmp6_code
-#define nd_rd_cksum              nd_rd_hdr.icmp6_cksum
-#define nd_rd_reserved           nd_rd_hdr.icmp6_data32[0]
+#define nd_rd_type nd_rd_hdr.icmp6_type
+#define nd_rd_code nd_rd_hdr.icmp6_code
+#define nd_rd_cksum nd_rd_hdr.icmp6_cksum
+#define nd_rd_reserved nd_rd_hdr.icmp6_data32[0]
 
 struct nd_opt_hdr {
-	uint8_t  nd_opt_type;
-	uint8_t  nd_opt_len;
+  uint8_t nd_opt_type;
+  uint8_t nd_opt_len;
 };
 
-#define ND_OPT_SOURCE_LINKADDR		1
-#define ND_OPT_TARGET_LINKADDR		2
-#define ND_OPT_PREFIX_INFORMATION	3
-#define ND_OPT_REDIRECTED_HEADER	4
-#define ND_OPT_MTU			5
-#define ND_OPT_RTR_ADV_INTERVAL		7
-#define ND_OPT_HOME_AGENT_INFO		8
+#define ND_OPT_SOURCE_LINKADDR 1
+#define ND_OPT_TARGET_LINKADDR 2
+#define ND_OPT_PREFIX_INFORMATION 3
+#define ND_OPT_REDIRECTED_HEADER 4
+#define ND_OPT_MTU 5
+#define ND_OPT_RTR_ADV_INTERVAL 7
+#define ND_OPT_HOME_AGENT_INFO 8
 
 struct nd_opt_prefix_info {
-	uint8_t   nd_opt_pi_type;
-	uint8_t   nd_opt_pi_len;
-	uint8_t   nd_opt_pi_prefix_len;
-	uint8_t   nd_opt_pi_flags_reserved;
-	uint32_t  nd_opt_pi_valid_time;
-	uint32_t  nd_opt_pi_preferred_time;
-	uint32_t  nd_opt_pi_reserved2;
-	struct in6_addr  nd_opt_pi_prefix;
+  uint8_t nd_opt_pi_type;
+  uint8_t nd_opt_pi_len;
+  uint8_t nd_opt_pi_prefix_len;
+  uint8_t nd_opt_pi_flags_reserved;
+  uint32_t nd_opt_pi_valid_time;
+  uint32_t nd_opt_pi_preferred_time;
+  uint32_t nd_opt_pi_reserved2;
+  struct in6_addr nd_opt_pi_prefix;
 };
 
-#define ND_OPT_PI_FLAG_ONLINK	0x80
-#define ND_OPT_PI_FLAG_AUTO	0x40
-#define ND_OPT_PI_FLAG_RADDR	0x20
+#define ND_OPT_PI_FLAG_ONLINK 0x80
+#define ND_OPT_PI_FLAG_AUTO 0x40
+#define ND_OPT_PI_FLAG_RADDR 0x20
 
 struct nd_opt_rd_hdr {
-	uint8_t   nd_opt_rh_type;
-	uint8_t   nd_opt_rh_len;
-	uint16_t  nd_opt_rh_reserved1;
-	uint32_t  nd_opt_rh_reserved2;
+  uint8_t nd_opt_rh_type;
+  uint8_t nd_opt_rh_len;
+  uint16_t nd_opt_rh_reserved1;
+  uint32_t nd_opt_rh_reserved2;
 };
 
 struct nd_opt_mtu {
-	uint8_t   nd_opt_mtu_type;
-	uint8_t   nd_opt_mtu_len;
-	uint16_t  nd_opt_mtu_reserved;
-	uint32_t  nd_opt_mtu_mtu;
+  uint8_t nd_opt_mtu_type;
+  uint8_t nd_opt_mtu_len;
+  uint16_t nd_opt_mtu_reserved;
+  uint32_t nd_opt_mtu_mtu;
 };
 
 struct mld_hdr {
-	struct icmp6_hdr    mld_icmp6_hdr;
-	struct in6_addr     mld_addr;
+  struct icmp6_hdr mld_icmp6_hdr;
+  struct in6_addr mld_addr;
 };
 
-#define mld_type        mld_icmp6_hdr.icmp6_type
-#define mld_code        mld_icmp6_hdr.icmp6_code
-#define mld_cksum       mld_icmp6_hdr.icmp6_cksum
-#define mld_maxdelay    mld_icmp6_hdr.icmp6_data16[0]
-#define mld_reserved    mld_icmp6_hdr.icmp6_data16[1]
+#define mld_type mld_icmp6_hdr.icmp6_type
+#define mld_code mld_icmp6_hdr.icmp6_code
+#define mld_cksum mld_icmp6_hdr.icmp6_cksum
+#define mld_maxdelay mld_icmp6_hdr.icmp6_data16[0]
+#define mld_reserved mld_icmp6_hdr.icmp6_data16[1]
 
-#define ICMP6_ROUTER_RENUMBERING    138
+#define ICMP6_ROUTER_RENUMBERING 138
 
 struct icmp6_router_renum {
-	struct icmp6_hdr    rr_hdr;
-	uint8_t             rr_segnum;
-	uint8_t             rr_flags;
-	uint16_t            rr_maxdelay;
-	uint32_t            rr_reserved;
+  struct icmp6_hdr rr_hdr;
+  uint8_t rr_segnum;
+  uint8_t rr_flags;
+  uint16_t rr_maxdelay;
+  uint32_t rr_reserved;
 };
 
-#define rr_type		rr_hdr.icmp6_type
-#define rr_code         rr_hdr.icmp6_code
-#define rr_cksum        rr_hdr.icmp6_cksum
-#define rr_seqnum       rr_hdr.icmp6_data32[0]
+#define rr_type rr_hdr.icmp6_type
+#define rr_code rr_hdr.icmp6_code
+#define rr_cksum rr_hdr.icmp6_cksum
+#define rr_seqnum rr_hdr.icmp6_data32[0]
 
-#define ICMP6_RR_FLAGS_TEST             0x80
-#define ICMP6_RR_FLAGS_REQRESULT        0x40
-#define ICMP6_RR_FLAGS_FORCEAPPLY       0x20
-#define ICMP6_RR_FLAGS_SPECSITE         0x10
-#define ICMP6_RR_FLAGS_PREVDONE         0x08
+#define ICMP6_RR_FLAGS_TEST 0x80
+#define ICMP6_RR_FLAGS_REQRESULT 0x40
+#define ICMP6_RR_FLAGS_FORCEAPPLY 0x20
+#define ICMP6_RR_FLAGS_SPECSITE 0x10
+#define ICMP6_RR_FLAGS_PREVDONE 0x08
 
 struct rr_pco_match {
-	uint8_t             rpm_code;
-	uint8_t             rpm_len;
-	uint8_t             rpm_ordinal;
-	uint8_t             rpm_matchlen;
-	uint8_t             rpm_minlen;
-	uint8_t             rpm_maxlen;
-	uint16_t            rpm_reserved;
-	struct in6_addr     rpm_prefix;
+  uint8_t rpm_code;
+  uint8_t rpm_len;
+  uint8_t rpm_ordinal;
+  uint8_t rpm_matchlen;
+  uint8_t rpm_minlen;
+  uint8_t rpm_maxlen;
+  uint16_t rpm_reserved;
+  struct in6_addr rpm_prefix;
 };
 
-#define RPM_PCO_ADD             1
-#define RPM_PCO_CHANGE          2
-#define RPM_PCO_SETGLOBAL       3
+#define RPM_PCO_ADD 1
+#define RPM_PCO_CHANGE 2
+#define RPM_PCO_SETGLOBAL 3
 
 struct rr_pco_use {
-	uint8_t             rpu_uselen;
-	uint8_t             rpu_keeplen;
-	uint8_t             rpu_ramask;
-	uint8_t             rpu_raflags;
-	uint32_t            rpu_vltime;
-	uint32_t            rpu_pltime;
-	uint32_t            rpu_flags;
-	struct in6_addr     rpu_prefix;
+  uint8_t rpu_uselen;
+  uint8_t rpu_keeplen;
+  uint8_t rpu_ramask;
+  uint8_t rpu_raflags;
+  uint32_t rpu_vltime;
+  uint32_t rpu_pltime;
+  uint32_t rpu_flags;
+  struct in6_addr rpu_prefix;
 };
 
-#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK  0x20
-#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO    0x10
+#define ICMP6_RR_PCOUSE_RAFLAGS_ONLINK 0x20
+#define ICMP6_RR_PCOUSE_RAFLAGS_AUTO 0x10
 
 #if __BYTE_ORDER == __BIG_ENDIAN
 #define ICMP6_RR_PCOUSE_FLAGS_DECRVLTIME 0x80000000
@@ -268,34 +268,34 @@
 #endif
 
 struct rr_result {
-	uint16_t            rrr_flags;
-	uint8_t             rrr_ordinal;
-	uint8_t             rrr_matchedlen;
-	uint32_t            rrr_ifid;
-	struct in6_addr     rrr_prefix;
+  uint16_t rrr_flags;
+  uint8_t rrr_ordinal;
+  uint8_t rrr_matchedlen;
+  uint32_t rrr_ifid;
+  struct in6_addr rrr_prefix;
 };
 
 #if __BYTE_ORDER == __BIG_ENDIAN
-#define ICMP6_RR_RESULT_FLAGS_OOB       0x0002
+#define ICMP6_RR_RESULT_FLAGS_OOB 0x0002
 #define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0001
 #else
-#define ICMP6_RR_RESULT_FLAGS_OOB       0x0200
+#define ICMP6_RR_RESULT_FLAGS_OOB 0x0200
 #define ICMP6_RR_RESULT_FLAGS_FORBIDDEN 0x0100
 #endif
 
 struct nd_opt_adv_interval {
-	uint8_t   nd_opt_adv_interval_type;
-	uint8_t   nd_opt_adv_interval_len;
-	uint16_t  nd_opt_adv_interval_reserved;
-	uint32_t  nd_opt_adv_interval_ival;
+  uint8_t nd_opt_adv_interval_type;
+  uint8_t nd_opt_adv_interval_len;
+  uint16_t nd_opt_adv_interval_reserved;
+  uint32_t nd_opt_adv_interval_ival;
 };
 
 struct nd_opt_home_agent_info {
-	uint8_t   nd_opt_home_agent_info_type;
-	uint8_t   nd_opt_home_agent_info_len;
-	uint16_t  nd_opt_home_agent_info_reserved;
-	uint16_t  nd_opt_home_agent_info_preference;
-	uint16_t  nd_opt_home_agent_info_lifetime;
+  uint8_t nd_opt_home_agent_info_type;
+  uint8_t nd_opt_home_agent_info_len;
+  uint16_t nd_opt_home_agent_info_reserved;
+  uint16_t nd_opt_home_agent_info_preference;
+  uint16_t nd_opt_home_agent_info_lifetime;
 };
 
 #ifdef __cplusplus
diff --git a/fusl/include/netinet/if_ether.h b/fusl/include/netinet/if_ether.h
index 4802f09..74ac029 100644
--- a/fusl/include/netinet/if_ether.h
+++ b/fusl/include/netinet/if_ether.h
@@ -4,126 +4,125 @@
 #include <stdint.h>
 #include <sys/types.h>
 
-#define ETH_ALEN	6
-#define ETH_HLEN	14
-#define ETH_ZLEN	60
-#define ETH_DATA_LEN	1500
-#define ETH_FRAME_LEN	1514
-#define ETH_FCS_LEN	4
+#define ETH_ALEN 6
+#define ETH_HLEN 14
+#define ETH_ZLEN 60
+#define ETH_DATA_LEN 1500
+#define ETH_FRAME_LEN 1514
+#define ETH_FCS_LEN 4
 
-#define ETH_P_LOOP	0x0060
-#define ETH_P_PUP	0x0200
-#define ETH_P_PUPAT	0x0201
-#define ETH_P_IP	0x0800
-#define ETH_P_X25	0x0805
-#define ETH_P_ARP	0x0806
-#define	ETH_P_BPQ	0x08FF
-#define ETH_P_IEEEPUP	0x0a00
-#define ETH_P_IEEEPUPAT	0x0a01
-#define ETH_P_BATMAN	0x4305
-#define ETH_P_DEC       0x6000
-#define ETH_P_DNA_DL    0x6001
-#define ETH_P_DNA_RC    0x6002
-#define ETH_P_DNA_RT    0x6003
-#define ETH_P_LAT       0x6004
-#define ETH_P_DIAG      0x6005
-#define ETH_P_CUST      0x6006
-#define ETH_P_SCA       0x6007
-#define ETH_P_TEB	0x6558
-#define ETH_P_RARP      0x8035
-#define ETH_P_ATALK	0x809B
-#define ETH_P_AARP	0x80F3
-#define ETH_P_8021Q	0x8100
-#define ETH_P_IPX	0x8137
-#define ETH_P_IPV6	0x86DD
-#define ETH_P_PAUSE	0x8808
-#define ETH_P_SLOW	0x8809
-#define ETH_P_WCCP	0x883E
-#define ETH_P_MPLS_UC	0x8847
-#define ETH_P_MPLS_MC	0x8848
-#define ETH_P_ATMMPOA	0x884c
-#define ETH_P_PPP_DISC	0x8863
-#define ETH_P_PPP_SES	0x8864
-#define ETH_P_LINK_CTL	0x886c
-#define ETH_P_ATMFATE	0x8884
-#define ETH_P_PAE	0x888E
-#define ETH_P_AOE	0x88A2
-#define ETH_P_8021AD	0x88A8
-#define ETH_P_802_EX1	0x88B5
-#define ETH_P_TIPC	0x88CA
-#define ETH_P_8021AH	0x88E7
-#define ETH_P_MVRP	0x88F5
-#define ETH_P_1588	0x88F7
-#define ETH_P_PRP	0x88FB
-#define ETH_P_FCOE	0x8906
-#define ETH_P_TDLS	0x890D
-#define ETH_P_FIP	0x8914
-#define ETH_P_80221	0x8917
-#define ETH_P_LOOPBACK	0x9000
-#define ETH_P_QINQ1	0x9100
-#define ETH_P_QINQ2	0x9200
-#define ETH_P_QINQ3	0x9300
-#define ETH_P_EDSA	0xDADA
-#define ETH_P_AF_IUCV	0xFBFB
+#define ETH_P_LOOP 0x0060
+#define ETH_P_PUP 0x0200
+#define ETH_P_PUPAT 0x0201
+#define ETH_P_IP 0x0800
+#define ETH_P_X25 0x0805
+#define ETH_P_ARP 0x0806
+#define ETH_P_BPQ 0x08FF
+#define ETH_P_IEEEPUP 0x0a00
+#define ETH_P_IEEEPUPAT 0x0a01
+#define ETH_P_BATMAN 0x4305
+#define ETH_P_DEC 0x6000
+#define ETH_P_DNA_DL 0x6001
+#define ETH_P_DNA_RC 0x6002
+#define ETH_P_DNA_RT 0x6003
+#define ETH_P_LAT 0x6004
+#define ETH_P_DIAG 0x6005
+#define ETH_P_CUST 0x6006
+#define ETH_P_SCA 0x6007
+#define ETH_P_TEB 0x6558
+#define ETH_P_RARP 0x8035
+#define ETH_P_ATALK 0x809B
+#define ETH_P_AARP 0x80F3
+#define ETH_P_8021Q 0x8100
+#define ETH_P_IPX 0x8137
+#define ETH_P_IPV6 0x86DD
+#define ETH_P_PAUSE 0x8808
+#define ETH_P_SLOW 0x8809
+#define ETH_P_WCCP 0x883E
+#define ETH_P_MPLS_UC 0x8847
+#define ETH_P_MPLS_MC 0x8848
+#define ETH_P_ATMMPOA 0x884c
+#define ETH_P_PPP_DISC 0x8863
+#define ETH_P_PPP_SES 0x8864
+#define ETH_P_LINK_CTL 0x886c
+#define ETH_P_ATMFATE 0x8884
+#define ETH_P_PAE 0x888E
+#define ETH_P_AOE 0x88A2
+#define ETH_P_8021AD 0x88A8
+#define ETH_P_802_EX1 0x88B5
+#define ETH_P_TIPC 0x88CA
+#define ETH_P_8021AH 0x88E7
+#define ETH_P_MVRP 0x88F5
+#define ETH_P_1588 0x88F7
+#define ETH_P_PRP 0x88FB
+#define ETH_P_FCOE 0x8906
+#define ETH_P_TDLS 0x890D
+#define ETH_P_FIP 0x8914
+#define ETH_P_80221 0x8917
+#define ETH_P_LOOPBACK 0x9000
+#define ETH_P_QINQ1 0x9100
+#define ETH_P_QINQ2 0x9200
+#define ETH_P_QINQ3 0x9300
+#define ETH_P_EDSA 0xDADA
+#define ETH_P_AF_IUCV 0xFBFB
 
-#define ETH_P_802_3_MIN	0x0600
+#define ETH_P_802_3_MIN 0x0600
 
-#define ETH_P_802_3	0x0001
-#define ETH_P_AX25	0x0002
-#define ETH_P_ALL	0x0003
-#define ETH_P_802_2	0x0004
-#define ETH_P_SNAP	0x0005
-#define ETH_P_DDCMP     0x0006
-#define ETH_P_WAN_PPP   0x0007
-#define ETH_P_PPP_MP    0x0008
+#define ETH_P_802_3 0x0001
+#define ETH_P_AX25 0x0002
+#define ETH_P_ALL 0x0003
+#define ETH_P_802_2 0x0004
+#define ETH_P_SNAP 0x0005
+#define ETH_P_DDCMP 0x0006
+#define ETH_P_WAN_PPP 0x0007
+#define ETH_P_PPP_MP 0x0008
 #define ETH_P_LOCALTALK 0x0009
-#define ETH_P_CAN	0x000C
-#define ETH_P_CANFD	0x000D
-#define ETH_P_PPPTALK	0x0010
-#define ETH_P_TR_802_2	0x0011
-#define ETH_P_MOBITEX	0x0015
-#define ETH_P_CONTROL	0x0016
-#define ETH_P_IRDA	0x0017
-#define ETH_P_ECONET	0x0018
-#define ETH_P_HDLC	0x0019
-#define ETH_P_ARCNET	0x001A
-#define ETH_P_DSA	0x001B
-#define ETH_P_TRAILER	0x001C
-#define ETH_P_PHONET	0x00F5
+#define ETH_P_CAN 0x000C
+#define ETH_P_CANFD 0x000D
+#define ETH_P_PPPTALK 0x0010
+#define ETH_P_TR_802_2 0x0011
+#define ETH_P_MOBITEX 0x0015
+#define ETH_P_CONTROL 0x0016
+#define ETH_P_IRDA 0x0017
+#define ETH_P_ECONET 0x0018
+#define ETH_P_HDLC 0x0019
+#define ETH_P_ARCNET 0x001A
+#define ETH_P_DSA 0x001B
+#define ETH_P_TRAILER 0x001C
+#define ETH_P_PHONET 0x00F5
 #define ETH_P_IEEE802154 0x00F6
-#define ETH_P_CAIF	0x00F7
+#define ETH_P_CAIF 0x00F7
 
 struct ethhdr {
-	uint8_t h_dest[ETH_ALEN];
-	uint8_t h_source[ETH_ALEN];
-	uint16_t h_proto;
+  uint8_t h_dest[ETH_ALEN];
+  uint8_t h_source[ETH_ALEN];
+  uint16_t h_proto;
 };
 
 #include <net/ethernet.h>
 #include <net/if_arp.h>
 
-struct	ether_arp {
-	struct	arphdr ea_hdr;
-	uint8_t arp_sha[ETH_ALEN];
-	uint8_t arp_spa[4];
-	uint8_t arp_tha[ETH_ALEN];
-	uint8_t arp_tpa[4];
+struct ether_arp {
+  struct arphdr ea_hdr;
+  uint8_t arp_sha[ETH_ALEN];
+  uint8_t arp_spa[4];
+  uint8_t arp_tha[ETH_ALEN];
+  uint8_t arp_tpa[4];
 };
-#define	arp_hrd	ea_hdr.ar_hrd
-#define	arp_pro	ea_hdr.ar_pro
-#define	arp_hln	ea_hdr.ar_hln
-#define	arp_pln	ea_hdr.ar_pln
-#define	arp_op	ea_hdr.ar_op
+#define arp_hrd ea_hdr.ar_hrd
+#define arp_pro ea_hdr.ar_pro
+#define arp_hln ea_hdr.ar_hln
+#define arp_pln ea_hdr.ar_pln
+#define arp_op ea_hdr.ar_op
 
-#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr) \
-do { \
-	(enaddr)[0] = 0x01; \
-	(enaddr)[1] = 0x00; \
-	(enaddr)[2] = 0x5e; \
-	(enaddr)[3] = ((uint8_t *)ipaddr)[1] & 0x7f; \
-	(enaddr)[4] = ((uint8_t *)ipaddr)[2]; \
-	(enaddr)[5] = ((uint8_t *)ipaddr)[3]; \
-} while(0)
-
+#define ETHER_MAP_IP_MULTICAST(ipaddr, enaddr)  \
+  do {                                          \
+    (enaddr)[0] = 0x01;                         \
+    (enaddr)[1] = 0x00;                         \
+    (enaddr)[2] = 0x5e;                         \
+    (enaddr)[3] = ((uint8_t*)ipaddr)[1] & 0x7f; \
+    (enaddr)[4] = ((uint8_t*)ipaddr)[2];        \
+    (enaddr)[5] = ((uint8_t*)ipaddr)[3];        \
+  } while (0)
 
 #endif
diff --git a/fusl/include/netinet/igmp.h b/fusl/include/netinet/igmp.h
index bbe8206..96c269a 100644
--- a/fusl/include/netinet/igmp.h
+++ b/fusl/include/netinet/igmp.h
@@ -5,41 +5,41 @@
 #include <netinet/in.h>
 
 struct igmp {
-	uint8_t igmp_type;
-	uint8_t igmp_code;
-	uint16_t igmp_cksum;
-	struct in_addr igmp_group;
+  uint8_t igmp_type;
+  uint8_t igmp_code;
+  uint16_t igmp_cksum;
+  struct in_addr igmp_group;
 };
 
-#define IGMP_MINLEN			8
+#define IGMP_MINLEN 8
 
-#define IGMP_MEMBERSHIP_QUERY   	0x11
-#define IGMP_V1_MEMBERSHIP_REPORT	0x12
-#define IGMP_V2_MEMBERSHIP_REPORT	0x16
-#define IGMP_V2_LEAVE_GROUP		0x17
+#define IGMP_MEMBERSHIP_QUERY 0x11
+#define IGMP_V1_MEMBERSHIP_REPORT 0x12
+#define IGMP_V2_MEMBERSHIP_REPORT 0x16
+#define IGMP_V2_LEAVE_GROUP 0x17
 
-#define IGMP_DVMRP			0x13
-#define IGMP_PIM			0x14
-#define IGMP_TRACE			0x15
+#define IGMP_DVMRP 0x13
+#define IGMP_PIM 0x14
+#define IGMP_TRACE 0x15
 
-#define IGMP_MTRACE_RESP		0x1e
-#define IGMP_MTRACE			0x1f
+#define IGMP_MTRACE_RESP 0x1e
+#define IGMP_MTRACE 0x1f
 
-#define IGMP_MAX_HOST_REPORT_DELAY	10
-#define IGMP_TIMER_SCALE		10
+#define IGMP_MAX_HOST_REPORT_DELAY 10
+#define IGMP_TIMER_SCALE 10
 
-#define IGMP_DELAYING_MEMBER	1
-#define IGMP_IDLE_MEMBER	2
-#define IGMP_LAZY_MEMBER	3
-#define IGMP_SLEEPING_MEMBER	4
-#define IGMP_AWAKENING_MEMBER	5
+#define IGMP_DELAYING_MEMBER 1
+#define IGMP_IDLE_MEMBER 2
+#define IGMP_LAZY_MEMBER 3
+#define IGMP_SLEEPING_MEMBER 4
+#define IGMP_AWAKENING_MEMBER 5
 
-#define IGMP_v1_ROUTER		1
-#define IGMP_v2_ROUTER		2
+#define IGMP_v1_ROUTER 1
+#define IGMP_v2_ROUTER 2
 
-#define IGMP_HOST_MEMBERSHIP_QUERY	IGMP_MEMBERSHIP_QUERY
-#define IGMP_HOST_MEMBERSHIP_REPORT	IGMP_V1_MEMBERSHIP_REPORT
-#define IGMP_HOST_NEW_MEMBERSHIP_REPORT	IGMP_V2_MEMBERSHIP_REPORT
-#define IGMP_HOST_LEAVE_MESSAGE		IGMP_V2_LEAVE_GROUP
+#define IGMP_HOST_MEMBERSHIP_QUERY IGMP_MEMBERSHIP_QUERY
+#define IGMP_HOST_MEMBERSHIP_REPORT IGMP_V1_MEMBERSHIP_REPORT
+#define IGMP_HOST_NEW_MEMBERSHIP_REPORT IGMP_V2_MEMBERSHIP_REPORT
+#define IGMP_HOST_LEAVE_MESSAGE IGMP_V2_LEAVE_GROUP
 
 #endif
diff --git a/fusl/include/netinet/in.h b/fusl/include/netinet/in.h
index 622bdfe..982adb6 100644
--- a/fusl/include/netinet/in.h
+++ b/fusl/include/netinet/in.h
@@ -1,5 +1,5 @@
-#ifndef	_NETINET_IN_H
-#define	_NETINET_IN_H
+#ifndef _NETINET_IN_H
+#define _NETINET_IN_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -11,61 +11,69 @@
 
 typedef uint16_t in_port_t;
 typedef uint32_t in_addr_t;
-struct in_addr { in_addr_t s_addr; };
-
-struct sockaddr_in
-{
-	sa_family_t sin_family;
-	in_port_t sin_port;
-	struct in_addr sin_addr;
-	uint8_t sin_zero[8];
+struct in_addr {
+  in_addr_t s_addr;
 };
 
-struct in6_addr
-{
-	union {
-		uint8_t __s6_addr[16];
-		uint16_t __s6_addr16[8];
-		uint32_t __s6_addr32[4];
-	} __in6_union;
+struct sockaddr_in {
+  sa_family_t sin_family;
+  in_port_t sin_port;
+  struct in_addr sin_addr;
+  uint8_t sin_zero[8];
+};
+
+struct in6_addr {
+  union {
+    uint8_t __s6_addr[16];
+    uint16_t __s6_addr16[8];
+    uint32_t __s6_addr32[4];
+  } __in6_union;
 };
 #define s6_addr __in6_union.__s6_addr
 #define s6_addr16 __in6_union.__s6_addr16
 #define s6_addr32 __in6_union.__s6_addr32
 
-struct sockaddr_in6
-{
-	sa_family_t     sin6_family;
-	in_port_t       sin6_port;
-	uint32_t        sin6_flowinfo;
-	struct in6_addr sin6_addr;
-	uint32_t        sin6_scope_id;
+struct sockaddr_in6 {
+  sa_family_t sin6_family;
+  in_port_t sin6_port;
+  uint32_t sin6_flowinfo;
+  struct in6_addr sin6_addr;
+  uint32_t sin6_scope_id;
 };
 
-struct ipv6_mreq
-{
-	struct in6_addr ipv6mr_multiaddr;
-	unsigned        ipv6mr_interface;
+struct ipv6_mreq {
+  struct in6_addr ipv6mr_multiaddr;
+  unsigned ipv6mr_interface;
 };
 
-#define INADDR_ANY        ((in_addr_t) 0x00000000)
-#define INADDR_BROADCAST  ((in_addr_t) 0xffffffff)
-#define INADDR_NONE       ((in_addr_t) 0xffffffff)
-#define INADDR_LOOPBACK   ((in_addr_t) 0x7f000001)
+#define INADDR_ANY ((in_addr_t)0x00000000)
+#define INADDR_BROADCAST ((in_addr_t)0xffffffff)
+#define INADDR_NONE ((in_addr_t)0xffffffff)
+#define INADDR_LOOPBACK ((in_addr_t)0x7f000001)
 
-#define INADDR_UNSPEC_GROUP     ((in_addr_t) 0xe0000000)
-#define INADDR_ALLHOSTS_GROUP   ((in_addr_t) 0xe0000001)
-#define INADDR_ALLRTRS_GROUP    ((in_addr_t) 0xe0000002)
-#define INADDR_MAX_LOCAL_GROUP  ((in_addr_t) 0xe00000ff)
+#define INADDR_UNSPEC_GROUP ((in_addr_t)0xe0000000)
+#define INADDR_ALLHOSTS_GROUP ((in_addr_t)0xe0000001)
+#define INADDR_ALLRTRS_GROUP ((in_addr_t)0xe0000002)
+#define INADDR_MAX_LOCAL_GROUP ((in_addr_t)0xe00000ff)
 
-#define IN6ADDR_ANY_INIT      { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } }
-#define IN6ADDR_LOOPBACK_INIT { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1 } } }
+#define IN6ADDR_ANY_INIT                                 \
+  {                                                      \
+    {                                                    \
+      { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } \
+    }                                                    \
+  }
+#define IN6ADDR_LOOPBACK_INIT                            \
+  {                                                      \
+    {                                                    \
+      { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 } \
+    }                                                    \
+  }
 
 extern const struct in6_addr in6addr_any, in6addr_loopback;
 
 #undef INET_ADDRSTRLEN
 #undef INET6_ADDRSTRLEN
-#define INET_ADDRSTRLEN  16
+#define INET_ADDRSTRLEN 16
 #define INET6_ADDRSTRLEN 46
 
 uint32_t htonl(uint32_t);
@@ -73,326 +81,319 @@
 uint32_t ntohl(uint32_t);
 uint16_t ntohs(uint16_t);
 
-#define IPPROTO_IP       0
-#define IPPROTO_HOPOPTS  0
-#define IPPROTO_ICMP     1
-#define IPPROTO_IGMP     2
-#define IPPROTO_IPIP     4
-#define IPPROTO_TCP      6
-#define IPPROTO_EGP      8
-#define IPPROTO_PUP      12
-#define IPPROTO_UDP      17
-#define IPPROTO_IDP      22
-#define IPPROTO_TP       29
-#define IPPROTO_DCCP     33
-#define IPPROTO_IPV6     41
-#define IPPROTO_ROUTING  43
+#define IPPROTO_IP 0
+#define IPPROTO_HOPOPTS 0
+#define IPPROTO_ICMP 1
+#define IPPROTO_IGMP 2
+#define IPPROTO_IPIP 4
+#define IPPROTO_TCP 6
+#define IPPROTO_EGP 8
+#define IPPROTO_PUP 12
+#define IPPROTO_UDP 17
+#define IPPROTO_IDP 22
+#define IPPROTO_TP 29
+#define IPPROTO_DCCP 33
+#define IPPROTO_IPV6 41
+#define IPPROTO_ROUTING 43
 #define IPPROTO_FRAGMENT 44
-#define IPPROTO_RSVP     46
-#define IPPROTO_GRE      47
-#define IPPROTO_ESP      50
-#define IPPROTO_AH       51
-#define IPPROTO_ICMPV6   58
-#define IPPROTO_NONE     59
-#define IPPROTO_DSTOPTS  60
-#define IPPROTO_MTP      92
-#define IPPROTO_BEETPH   94
-#define IPPROTO_ENCAP    98
-#define IPPROTO_PIM      103
-#define IPPROTO_COMP     108
-#define IPPROTO_SCTP     132
-#define IPPROTO_MH       135
-#define IPPROTO_UDPLITE  136
-#define IPPROTO_MPLS     137
-#define IPPROTO_RAW      255
-#define IPPROTO_MAX      256
+#define IPPROTO_RSVP 46
+#define IPPROTO_GRE 47
+#define IPPROTO_ESP 50
+#define IPPROTO_AH 51
+#define IPPROTO_ICMPV6 58
+#define IPPROTO_NONE 59
+#define IPPROTO_DSTOPTS 60
+#define IPPROTO_MTP 92
+#define IPPROTO_BEETPH 94
+#define IPPROTO_ENCAP 98
+#define IPPROTO_PIM 103
+#define IPPROTO_COMP 108
+#define IPPROTO_SCTP 132
+#define IPPROTO_MH 135
+#define IPPROTO_UDPLITE 136
+#define IPPROTO_MPLS 137
+#define IPPROTO_RAW 255
+#define IPPROTO_MAX 256
 
-#define IN6_IS_ADDR_UNSPECIFIED(a) \
-        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
-         ((uint32_t *) (a))[2] == 0 && ((uint32_t *) (a))[3] == 0)
+#define IN6_IS_ADDR_UNSPECIFIED(a)                         \
+  (((uint32_t*)(a))[0] == 0 && ((uint32_t*)(a))[1] == 0 && \
+   ((uint32_t*)(a))[2] == 0 && ((uint32_t*)(a))[3] == 0)
 
-#define IN6_IS_ADDR_LOOPBACK(a) \
-        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
-         ((uint32_t *) (a))[2] == 0 && \
-         ((uint8_t *) (a))[12] == 0 && ((uint8_t *) (a))[13] == 0 && \
-         ((uint8_t *) (a))[14] == 0 && ((uint8_t *) (a))[15] == 1 )
+#define IN6_IS_ADDR_LOOPBACK(a)                            \
+  (((uint32_t*)(a))[0] == 0 && ((uint32_t*)(a))[1] == 0 && \
+   ((uint32_t*)(a))[2] == 0 && ((uint8_t*)(a))[12] == 0 && \
+   ((uint8_t*)(a))[13] == 0 && ((uint8_t*)(a))[14] == 0 && \
+   ((uint8_t*)(a))[15] == 1)
 
-#define IN6_IS_ADDR_MULTICAST(a) (((uint8_t *) (a))[0] == 0xff)
+#define IN6_IS_ADDR_MULTICAST(a) (((uint8_t*)(a))[0] == 0xff)
 
 #define IN6_IS_ADDR_LINKLOCAL(a) \
-        ((((uint8_t *) (a))[0]) == 0xfe && (((uint8_t *) (a))[1] & 0xc0) == 0x80)
+  ((((uint8_t*)(a))[0]) == 0xfe && (((uint8_t*)(a))[1] & 0xc0) == 0x80)
 
 #define IN6_IS_ADDR_SITELOCAL(a) \
-        ((((uint8_t *) (a))[0]) == 0xfe && (((uint8_t *) (a))[1] & 0xc0) == 0xc0)
+  ((((uint8_t*)(a))[0]) == 0xfe && (((uint8_t*)(a))[1] & 0xc0) == 0xc0)
 
-#define IN6_IS_ADDR_V4MAPPED(a) \
-        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
-         ((uint8_t *) (a))[8] == 0 && ((uint8_t *) (a))[9] == 0 && \
-         ((uint8_t *) (a))[10] == 0xff && ((uint8_t *) (a))[11] == 0xff)
+#define IN6_IS_ADDR_V4MAPPED(a)                            \
+  (((uint32_t*)(a))[0] == 0 && ((uint32_t*)(a))[1] == 0 && \
+   ((uint8_t*)(a))[8] == 0 && ((uint8_t*)(a))[9] == 0 &&   \
+   ((uint8_t*)(a))[10] == 0xff && ((uint8_t*)(a))[11] == 0xff)
 
-#define IN6_IS_ADDR_V4COMPAT(a) \
-        (((uint32_t *) (a))[0] == 0 && ((uint32_t *) (a))[1] == 0 && \
-         ((uint32_t *) (a))[2] == 0 && ((uint8_t *) (a))[15] > 1)
+#define IN6_IS_ADDR_V4COMPAT(a)                            \
+  (((uint32_t*)(a))[0] == 0 && ((uint32_t*)(a))[1] == 0 && \
+   ((uint32_t*)(a))[2] == 0 && ((uint8_t*)(a))[15] > 1)
 
 #define IN6_IS_ADDR_MC_NODELOCAL(a) \
-        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x1))
+  (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t*)(a))[1] & 0xf) == 0x1))
 
 #define IN6_IS_ADDR_MC_LINKLOCAL(a) \
-        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x2))
+  (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t*)(a))[1] & 0xf) == 0x2))
 
 #define IN6_IS_ADDR_MC_SITELOCAL(a) \
-        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x5))
+  (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t*)(a))[1] & 0xf) == 0x5))
 
 #define IN6_IS_ADDR_MC_ORGLOCAL(a) \
-        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0x8))
+  (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t*)(a))[1] & 0xf) == 0x8))
 
 #define IN6_IS_ADDR_MC_GLOBAL(a) \
-        (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t *) (a))[1] & 0xf) == 0xe))
+  (IN6_IS_ADDR_MULTICAST(a) && ((((uint8_t*)(a))[1] & 0xf) == 0xe))
 
-#define __ARE_4_EQUAL(a,b) \
-	(!( (0[a]-0[b]) | (1[a]-1[b]) | (2[a]-2[b]) | (3[a]-3[b]) ))
-#define IN6_ARE_ADDR_EQUAL(a,b) \
-	__ARE_4_EQUAL((const uint32_t *)(a), (const uint32_t *)(b))
+#define __ARE_4_EQUAL(a, b) \
+  (!((0 [a] - 0 [b]) | (1 [a] - 1 [b]) | (2 [a] - 2 [b]) | (3 [a] - 3 [b])))
+#define IN6_ARE_ADDR_EQUAL(a, b) \
+  __ARE_4_EQUAL((const uint32_t*)(a), (const uint32_t*)(b))
 
-#define	IN_CLASSA(a)		((((in_addr_t)(a)) & 0x80000000) == 0)
-#define	IN_CLASSA_NET		0xff000000
-#define	IN_CLASSA_NSHIFT	24
-#define	IN_CLASSA_HOST		(0xffffffff & ~IN_CLASSA_NET)
-#define	IN_CLASSA_MAX		128
-#define	IN_CLASSB(a)		((((in_addr_t)(a)) & 0xc0000000) == 0x80000000)
-#define	IN_CLASSB_NET		0xffff0000
-#define	IN_CLASSB_NSHIFT	16
-#define	IN_CLASSB_HOST		(0xffffffff & ~IN_CLASSB_NET)
-#define	IN_CLASSB_MAX		65536
-#define	IN_CLASSC(a)		((((in_addr_t)(a)) & 0xe0000000) == 0xc0000000)
-#define	IN_CLASSC_NET		0xffffff00
-#define	IN_CLASSC_NSHIFT	8
-#define	IN_CLASSC_HOST		(0xffffffff & ~IN_CLASSC_NET)
-#define	IN_CLASSD(a)		((((in_addr_t)(a)) & 0xf0000000) == 0xe0000000)
-#define	IN_MULTICAST(a)		IN_CLASSD(a)
-#define	IN_EXPERIMENTAL(a)	((((in_addr_t)(a)) & 0xe0000000) == 0xe0000000)
-#define	IN_BADCLASS(a)		((((in_addr_t)(a)) & 0xf0000000) == 0xf0000000)
+#define IN_CLASSA(a) ((((in_addr_t)(a)) & 0x80000000) == 0)
+#define IN_CLASSA_NET 0xff000000
+#define IN_CLASSA_NSHIFT 24
+#define IN_CLASSA_HOST (0xffffffff & ~IN_CLASSA_NET)
+#define IN_CLASSA_MAX 128
+#define IN_CLASSB(a) ((((in_addr_t)(a)) & 0xc0000000) == 0x80000000)
+#define IN_CLASSB_NET 0xffff0000
+#define IN_CLASSB_NSHIFT 16
+#define IN_CLASSB_HOST (0xffffffff & ~IN_CLASSB_NET)
+#define IN_CLASSB_MAX 65536
+#define IN_CLASSC(a) ((((in_addr_t)(a)) & 0xe0000000) == 0xc0000000)
+#define IN_CLASSC_NET 0xffffff00
+#define IN_CLASSC_NSHIFT 8
+#define IN_CLASSC_HOST (0xffffffff & ~IN_CLASSC_NET)
+#define IN_CLASSD(a) ((((in_addr_t)(a)) & 0xf0000000) == 0xe0000000)
+#define IN_MULTICAST(a) IN_CLASSD(a)
+#define IN_EXPERIMENTAL(a) ((((in_addr_t)(a)) & 0xe0000000) == 0xe0000000)
+#define IN_BADCLASS(a) ((((in_addr_t)(a)) & 0xf0000000) == 0xf0000000)
 
 #define IN_LOOPBACKNET 127
 
-
-#define IP_TOS             1
-#define IP_TTL             2
-#define IP_HDRINCL         3
-#define IP_OPTIONS         4
-#define IP_ROUTER_ALERT    5
-#define IP_RECVOPTS        6
-#define IP_RETOPTS         7
-#define IP_PKTINFO         8
-#define IP_PKTOPTIONS      9
-#define IP_PMTUDISC        10
-#define IP_MTU_DISCOVER    10
-#define IP_RECVERR         11
-#define IP_RECVTTL         12
-#define IP_RECVTOS         13
-#define IP_MTU             14
-#define IP_FREEBIND        15
-#define IP_IPSEC_POLICY    16
-#define IP_XFRM_POLICY     17
-#define IP_PASSSEC         18
-#define IP_TRANSPARENT     19
-#define IP_ORIGDSTADDR     20
+#define IP_TOS 1
+#define IP_TTL 2
+#define IP_HDRINCL 3
+#define IP_OPTIONS 4
+#define IP_ROUTER_ALERT 5
+#define IP_RECVOPTS 6
+#define IP_RETOPTS 7
+#define IP_PKTINFO 8
+#define IP_PKTOPTIONS 9
+#define IP_PMTUDISC 10
+#define IP_MTU_DISCOVER 10
+#define IP_RECVERR 11
+#define IP_RECVTTL 12
+#define IP_RECVTOS 13
+#define IP_MTU 14
+#define IP_FREEBIND 15
+#define IP_IPSEC_POLICY 16
+#define IP_XFRM_POLICY 17
+#define IP_PASSSEC 18
+#define IP_TRANSPARENT 19
+#define IP_ORIGDSTADDR 20
 #define IP_RECVORIGDSTADDR IP_ORIGDSTADDR
-#define IP_MINTTL          21
-#define IP_NODEFRAG        22
-#define IP_CHECKSUM        23
+#define IP_MINTTL 21
+#define IP_NODEFRAG 22
+#define IP_CHECKSUM 23
 #define IP_BIND_ADDRESS_NO_PORT 24
-#define IP_MULTICAST_IF    32
-#define IP_MULTICAST_TTL   33
-#define IP_MULTICAST_LOOP  34
-#define IP_ADD_MEMBERSHIP  35
+#define IP_MULTICAST_IF 32
+#define IP_MULTICAST_TTL 33
+#define IP_MULTICAST_LOOP 34
+#define IP_ADD_MEMBERSHIP 35
 #define IP_DROP_MEMBERSHIP 36
-#define IP_UNBLOCK_SOURCE  37
-#define IP_BLOCK_SOURCE    38
-#define IP_ADD_SOURCE_MEMBERSHIP  39
+#define IP_UNBLOCK_SOURCE 37
+#define IP_BLOCK_SOURCE 38
+#define IP_ADD_SOURCE_MEMBERSHIP 39
 #define IP_DROP_SOURCE_MEMBERSHIP 40
-#define IP_MSFILTER        41
-#define IP_MULTICAST_ALL   49
-#define IP_UNICAST_IF      50
+#define IP_MSFILTER 41
+#define IP_MULTICAST_ALL 49
+#define IP_UNICAST_IF 50
 
 #define IP_RECVRETOPTS IP_RETOPTS
 
-#define IP_PMTUDISC_DONT   0
-#define IP_PMTUDISC_WANT   1
-#define IP_PMTUDISC_DO     2
-#define IP_PMTUDISC_PROBE  3
+#define IP_PMTUDISC_DONT 0
+#define IP_PMTUDISC_WANT 1
+#define IP_PMTUDISC_DO 2
+#define IP_PMTUDISC_PROBE 3
 #define IP_PMTUDISC_INTERFACE 4
-#define IP_PMTUDISC_OMIT   5
+#define IP_PMTUDISC_OMIT 5
 
-#define IP_DEFAULT_MULTICAST_TTL        1
-#define IP_DEFAULT_MULTICAST_LOOP       1
-#define IP_MAX_MEMBERSHIPS              20
+#define IP_DEFAULT_MULTICAST_TTL 1
+#define IP_DEFAULT_MULTICAST_LOOP 1
+#define IP_MAX_MEMBERSHIPS 20
 
-struct ip_opts
-{
-	struct in_addr ip_dst;
-	char ip_opts[40];
+struct ip_opts {
+  struct in_addr ip_dst;
+  char ip_opts[40];
 };
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
-#define MCAST_JOIN_GROUP   42
+#define MCAST_JOIN_GROUP 42
 #define MCAST_BLOCK_SOURCE 43
-#define MCAST_UNBLOCK_SOURCE      44
-#define MCAST_LEAVE_GROUP  45
-#define MCAST_JOIN_SOURCE_GROUP   46
-#define MCAST_LEAVE_SOURCE_GROUP  47
-#define MCAST_MSFILTER     48
+#define MCAST_UNBLOCK_SOURCE 44
+#define MCAST_LEAVE_GROUP 45
+#define MCAST_JOIN_SOURCE_GROUP 46
+#define MCAST_LEAVE_SOURCE_GROUP 47
+#define MCAST_MSFILTER 48
 
 #define MCAST_EXCLUDE 0
 #define MCAST_INCLUDE 1
 
-struct ip_mreq
-{
-	struct in_addr imr_multiaddr;
-	struct in_addr imr_interface;
+struct ip_mreq {
+  struct in_addr imr_multiaddr;
+  struct in_addr imr_interface;
 };
 
-struct ip_mreqn
-{
-	struct in_addr imr_multiaddr;
-	struct in_addr imr_address;
-	int imr_ifindex;
+struct ip_mreqn {
+  struct in_addr imr_multiaddr;
+  struct in_addr imr_address;
+  int imr_ifindex;
 };
 
 struct ip_mreq_source {
-	struct in_addr imr_multiaddr;
-	struct in_addr imr_interface;
-	struct in_addr imr_sourceaddr;
+  struct in_addr imr_multiaddr;
+  struct in_addr imr_interface;
+  struct in_addr imr_sourceaddr;
 };
 
 struct ip_msfilter {
-	struct in_addr imsf_multiaddr;
-	struct in_addr imsf_interface;
-	uint32_t imsf_fmode;
-	uint32_t imsf_numsrc;
-	struct in_addr imsf_slist[1];
+  struct in_addr imsf_multiaddr;
+  struct in_addr imsf_interface;
+  uint32_t imsf_fmode;
+  uint32_t imsf_numsrc;
+  struct in_addr imsf_slist[1];
 };
-#define IP_MSFILTER_SIZE(numsrc) \
-	(sizeof(struct ip_msfilter) - sizeof(struct in_addr) \
-	+ (numsrc) * sizeof(struct in_addr))
+#define IP_MSFILTER_SIZE(numsrc)                         \
+  (sizeof(struct ip_msfilter) - sizeof(struct in_addr) + \
+   (numsrc) * sizeof(struct in_addr))
 
 struct group_req {
-	uint32_t gr_interface;
-	struct sockaddr_storage gr_group;
+  uint32_t gr_interface;
+  struct sockaddr_storage gr_group;
 };
 
 struct group_source_req {
-	uint32_t gsr_interface;
-	struct sockaddr_storage gsr_group;
-	struct sockaddr_storage gsr_source;
+  uint32_t gsr_interface;
+  struct sockaddr_storage gsr_group;
+  struct sockaddr_storage gsr_source;
 };
 
 struct group_filter {
-	uint32_t gf_interface;
-	struct sockaddr_storage gf_group;
-	uint32_t gf_fmode;
-	uint32_t gf_numsrc;
-	struct sockaddr_storage gf_slist[1];
+  uint32_t gf_interface;
+  struct sockaddr_storage gf_group;
+  uint32_t gf_fmode;
+  uint32_t gf_numsrc;
+  struct sockaddr_storage gf_slist[1];
 };
-#define GROUP_FILTER_SIZE(numsrc) \
-	(sizeof(struct group_filter) - sizeof(struct sockaddr_storage) \
-	+ (numsrc) * sizeof(struct sockaddr_storage))
+#define GROUP_FILTER_SIZE(numsrc)                                  \
+  (sizeof(struct group_filter) - sizeof(struct sockaddr_storage) + \
+   (numsrc) * sizeof(struct sockaddr_storage))
 
-struct in_pktinfo
-{
-	int ipi_ifindex;
-	struct in_addr ipi_spec_dst;
-	struct in_addr ipi_addr;
+struct in_pktinfo {
+  int ipi_ifindex;
+  struct in_addr ipi_spec_dst;
+  struct in_addr ipi_addr;
 };
 
-struct in6_pktinfo
-{
-	struct in6_addr ipi6_addr;
-	unsigned ipi6_ifindex;
+struct in6_pktinfo {
+  struct in6_addr ipi6_addr;
+  unsigned ipi6_ifindex;
 };
 
-struct ip6_mtuinfo
-{
-	struct sockaddr_in6 ip6m_addr;
-	uint32_t ip6m_mtu;
+struct ip6_mtuinfo {
+  struct sockaddr_in6 ip6m_addr;
+  uint32_t ip6m_mtu;
 };
 #endif
 
-#define IPV6_ADDRFORM           1
-#define IPV6_2292PKTINFO        2
-#define IPV6_2292HOPOPTS        3
-#define IPV6_2292DSTOPTS        4
-#define IPV6_2292RTHDR          5
-#define IPV6_2292PKTOPTIONS     6
-#define IPV6_CHECKSUM           7
-#define IPV6_2292HOPLIMIT       8
-#define IPV6_NEXTHOP            9
-#define IPV6_AUTHHDR            10
-#define IPV6_UNICAST_HOPS       16
-#define IPV6_MULTICAST_IF       17
-#define IPV6_MULTICAST_HOPS     18
-#define IPV6_MULTICAST_LOOP     19
-#define IPV6_JOIN_GROUP         20
-#define IPV6_LEAVE_GROUP        21
-#define IPV6_ROUTER_ALERT       22
-#define IPV6_MTU_DISCOVER       23
-#define IPV6_MTU                24
-#define IPV6_RECVERR            25
-#define IPV6_V6ONLY             26
-#define IPV6_JOIN_ANYCAST       27
-#define IPV6_LEAVE_ANYCAST      28
-#define IPV6_IPSEC_POLICY       34
-#define IPV6_XFRM_POLICY        35
+#define IPV6_ADDRFORM 1
+#define IPV6_2292PKTINFO 2
+#define IPV6_2292HOPOPTS 3
+#define IPV6_2292DSTOPTS 4
+#define IPV6_2292RTHDR 5
+#define IPV6_2292PKTOPTIONS 6
+#define IPV6_CHECKSUM 7
+#define IPV6_2292HOPLIMIT 8
+#define IPV6_NEXTHOP 9
+#define IPV6_AUTHHDR 10
+#define IPV6_UNICAST_HOPS 16
+#define IPV6_MULTICAST_IF 17
+#define IPV6_MULTICAST_HOPS 18
+#define IPV6_MULTICAST_LOOP 19
+#define IPV6_JOIN_GROUP 20
+#define IPV6_LEAVE_GROUP 21
+#define IPV6_ROUTER_ALERT 22
+#define IPV6_MTU_DISCOVER 23
+#define IPV6_MTU 24
+#define IPV6_RECVERR 25
+#define IPV6_V6ONLY 26
+#define IPV6_JOIN_ANYCAST 27
+#define IPV6_LEAVE_ANYCAST 28
+#define IPV6_IPSEC_POLICY 34
+#define IPV6_XFRM_POLICY 35
 
-#define IPV6_RECVPKTINFO        49
-#define IPV6_PKTINFO            50
-#define IPV6_RECVHOPLIMIT       51
-#define IPV6_HOPLIMIT           52
-#define IPV6_RECVHOPOPTS        53
-#define IPV6_HOPOPTS            54
-#define IPV6_RTHDRDSTOPTS       55
-#define IPV6_RECVRTHDR          56
-#define IPV6_RTHDR              57
-#define IPV6_RECVDSTOPTS        58
-#define IPV6_DSTOPTS            59
-#define IPV6_RECVPATHMTU        60
-#define IPV6_PATHMTU            61
-#define IPV6_DONTFRAG           62
-#define IPV6_RECVTCLASS         66
-#define IPV6_TCLASS             67
-#define IPV6_AUTOFLOWLABEL      70
-#define IPV6_ADDR_PREFERENCES   72
-#define IPV6_MINHOPCOUNT        73
-#define IPV6_ORIGDSTADDR        74
-#define IPV6_RECVORIGDSTADDR    IPV6_ORIGDSTADDR
-#define IPV6_TRANSPARENT        75
-#define IPV6_UNICAST_IF         76
+#define IPV6_RECVPKTINFO 49
+#define IPV6_PKTINFO 50
+#define IPV6_RECVHOPLIMIT 51
+#define IPV6_HOPLIMIT 52
+#define IPV6_RECVHOPOPTS 53
+#define IPV6_HOPOPTS 54
+#define IPV6_RTHDRDSTOPTS 55
+#define IPV6_RECVRTHDR 56
+#define IPV6_RTHDR 57
+#define IPV6_RECVDSTOPTS 58
+#define IPV6_DSTOPTS 59
+#define IPV6_RECVPATHMTU 60
+#define IPV6_PATHMTU 61
+#define IPV6_DONTFRAG 62
+#define IPV6_RECVTCLASS 66
+#define IPV6_TCLASS 67
+#define IPV6_AUTOFLOWLABEL 70
+#define IPV6_ADDR_PREFERENCES 72
+#define IPV6_MINHOPCOUNT 73
+#define IPV6_ORIGDSTADDR 74
+#define IPV6_RECVORIGDSTADDR IPV6_ORIGDSTADDR
+#define IPV6_TRANSPARENT 75
+#define IPV6_UNICAST_IF 76
 
-#define IPV6_ADD_MEMBERSHIP     IPV6_JOIN_GROUP
-#define IPV6_DROP_MEMBERSHIP    IPV6_LEAVE_GROUP
-#define IPV6_RXHOPOPTS          IPV6_HOPOPTS
-#define IPV6_RXDSTOPTS          IPV6_DSTOPTS
+#define IPV6_ADD_MEMBERSHIP IPV6_JOIN_GROUP
+#define IPV6_DROP_MEMBERSHIP IPV6_LEAVE_GROUP
+#define IPV6_RXHOPOPTS IPV6_HOPOPTS
+#define IPV6_RXDSTOPTS IPV6_DSTOPTS
 
-#define IPV6_PMTUDISC_DONT      0
-#define IPV6_PMTUDISC_WANT      1
-#define IPV6_PMTUDISC_DO        2
-#define IPV6_PMTUDISC_PROBE     3
+#define IPV6_PMTUDISC_DONT 0
+#define IPV6_PMTUDISC_WANT 1
+#define IPV6_PMTUDISC_DO 2
+#define IPV6_PMTUDISC_PROBE 3
 #define IPV6_PMTUDISC_INTERFACE 4
-#define IPV6_PMTUDISC_OMIT      5
+#define IPV6_PMTUDISC_OMIT 5
 
-#define IPV6_PREFER_SRC_TMP            0x0001
-#define IPV6_PREFER_SRC_PUBLIC         0x0002
+#define IPV6_PREFER_SRC_TMP 0x0001
+#define IPV6_PREFER_SRC_PUBLIC 0x0002
 #define IPV6_PREFER_SRC_PUBTMP_DEFAULT 0x0100
-#define IPV6_PREFER_SRC_COA            0x0004
-#define IPV6_PREFER_SRC_HOME           0x0400
-#define IPV6_PREFER_SRC_CGA            0x0008
-#define IPV6_PREFER_SRC_NONCGA         0x0800
+#define IPV6_PREFER_SRC_COA 0x0004
+#define IPV6_PREFER_SRC_HOME 0x0400
+#define IPV6_PREFER_SRC_CGA 0x0008
+#define IPV6_PREFER_SRC_NONCGA 0x0800
 
-#define IPV6_RTHDR_LOOSE        0
-#define IPV6_RTHDR_STRICT       1
+#define IPV6_RTHDR_LOOSE 0
+#define IPV6_RTHDR_STRICT 1
 
-#define IPV6_RTHDR_TYPE_0       0
+#define IPV6_RTHDR_TYPE_0 0
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/netinet/ip.h b/fusl/include/netinet/ip.h
index d7fa8d5..dff6d20 100644
--- a/fusl/include/netinet/ip.h
+++ b/fusl/include/netinet/ip.h
@@ -10,186 +10,186 @@
 #include <endian.h>
 
 struct timestamp {
-	uint8_t len;
-	uint8_t ptr;
+  uint8_t len;
+  uint8_t ptr;
 #if __BYTE_ORDER == __LITTLE_ENDIAN
-	unsigned int flags:4;
-	unsigned int overflow:4;
+  unsigned int flags : 4;
+  unsigned int overflow : 4;
 #else
-	unsigned int overflow:4;
-	unsigned int flags:4;
+  unsigned int overflow : 4;
+  unsigned int flags : 4;
 #endif
-	uint32_t data[9];
-  };
+  uint32_t data[9];
+};
 
 struct iphdr {
 #if __BYTE_ORDER == __LITTLE_ENDIAN
-	unsigned int ihl:4;
-	unsigned int version:4;
+  unsigned int ihl : 4;
+  unsigned int version : 4;
 #else
-	unsigned int version:4;
-	unsigned int ihl:4;
+  unsigned int version : 4;
+  unsigned int ihl : 4;
 #endif
-	uint8_t tos;
-	uint16_t tot_len;
-	uint16_t id;
-	uint16_t frag_off;
-	uint8_t ttl;
-	uint8_t protocol;
-	uint16_t check;
-	uint32_t saddr;
-	uint32_t daddr;
+  uint8_t tos;
+  uint16_t tot_len;
+  uint16_t id;
+  uint16_t frag_off;
+  uint8_t ttl;
+  uint8_t protocol;
+  uint16_t check;
+  uint32_t saddr;
+  uint32_t daddr;
 };
 
 struct ip {
 #if __BYTE_ORDER == __LITTLE_ENDIAN
-	unsigned int ip_hl:4;
-	unsigned int ip_v:4;
+  unsigned int ip_hl : 4;
+  unsigned int ip_v : 4;
 #else
-	unsigned int ip_v:4;
-	unsigned int ip_hl:4;
+  unsigned int ip_v : 4;
+  unsigned int ip_hl : 4;
 #endif
-	uint8_t ip_tos;
-	uint16_t ip_len;
-	uint16_t ip_id;
-	uint16_t ip_off;
-	uint8_t ip_ttl;
-	uint8_t ip_p;
-	uint16_t ip_sum;
-	struct in_addr ip_src, ip_dst;
+  uint8_t ip_tos;
+  uint16_t ip_len;
+  uint16_t ip_id;
+  uint16_t ip_off;
+  uint8_t ip_ttl;
+  uint8_t ip_p;
+  uint16_t ip_sum;
+  struct in_addr ip_src, ip_dst;
 };
 
-#define	IP_RF 0x8000
-#define	IP_DF 0x4000
-#define	IP_MF 0x2000
-#define	IP_OFFMASK 0x1fff
+#define IP_RF 0x8000
+#define IP_DF 0x4000
+#define IP_MF 0x2000
+#define IP_OFFMASK 0x1fff
 
 struct ip_timestamp {
-	uint8_t ipt_code;
-	uint8_t ipt_len;
-	uint8_t ipt_ptr;
+  uint8_t ipt_code;
+  uint8_t ipt_len;
+  uint8_t ipt_ptr;
 #if __BYTE_ORDER == __LITTLE_ENDIAN
-	unsigned int ipt_flg:4;
-	unsigned int ipt_oflw:4;
+  unsigned int ipt_flg : 4;
+  unsigned int ipt_oflw : 4;
 #else
-	unsigned int ipt_oflw:4;
-	unsigned int ipt_flg:4;
+  unsigned int ipt_oflw : 4;
+  unsigned int ipt_flg : 4;
 #endif
-	uint32_t data[9];
+  uint32_t data[9];
 };
 
-#define	IPVERSION	4
-#define	IP_MAXPACKET	65535
+#define IPVERSION 4
+#define IP_MAXPACKET 65535
 
-#define	IPTOS_ECN_MASK		0x03
-#define	IPTOS_ECN(x)		((x) & IPTOS_ECN_MASK)
-#define	IPTOS_ECN_NOT_ECT	0x00
-#define	IPTOS_ECN_ECT1		0x01
-#define	IPTOS_ECN_ECT0		0x02
-#define	IPTOS_ECN_CE		0x03
+#define IPTOS_ECN_MASK 0x03
+#define IPTOS_ECN(x) ((x)&IPTOS_ECN_MASK)
+#define IPTOS_ECN_NOT_ECT 0x00
+#define IPTOS_ECN_ECT1 0x01
+#define IPTOS_ECN_ECT0 0x02
+#define IPTOS_ECN_CE 0x03
 
-#define	IPTOS_DSCP_MASK		0xfc
-#define	IPTOS_DSCP(x)		((x) & IPTOS_DSCP_MASK)
-#define	IPTOS_DSCP_AF11		0x28
-#define	IPTOS_DSCP_AF12		0x30
-#define	IPTOS_DSCP_AF13		0x38
-#define	IPTOS_DSCP_AF21		0x48
-#define	IPTOS_DSCP_AF22		0x50
-#define	IPTOS_DSCP_AF23		0x58
-#define	IPTOS_DSCP_AF31		0x68
-#define	IPTOS_DSCP_AF32		0x70
-#define	IPTOS_DSCP_AF33		0x78
-#define	IPTOS_DSCP_AF41		0x88
-#define	IPTOS_DSCP_AF42		0x90
-#define	IPTOS_DSCP_AF43		0x98
-#define	IPTOS_DSCP_EF		0xb8
+#define IPTOS_DSCP_MASK 0xfc
+#define IPTOS_DSCP(x) ((x)&IPTOS_DSCP_MASK)
+#define IPTOS_DSCP_AF11 0x28
+#define IPTOS_DSCP_AF12 0x30
+#define IPTOS_DSCP_AF13 0x38
+#define IPTOS_DSCP_AF21 0x48
+#define IPTOS_DSCP_AF22 0x50
+#define IPTOS_DSCP_AF23 0x58
+#define IPTOS_DSCP_AF31 0x68
+#define IPTOS_DSCP_AF32 0x70
+#define IPTOS_DSCP_AF33 0x78
+#define IPTOS_DSCP_AF41 0x88
+#define IPTOS_DSCP_AF42 0x90
+#define IPTOS_DSCP_AF43 0x98
+#define IPTOS_DSCP_EF 0xb8
 
-#define	IPTOS_CLASS_MASK	0xe0
-#define	IPTOS_CLASS(x)		((x) & IPTOS_CLASS_MASK)
-#define	IPTOS_CLASS_CS0		0x00
-#define	IPTOS_CLASS_CS1		0x20
-#define	IPTOS_CLASS_CS2		0x40
-#define	IPTOS_CLASS_CS3		0x60
-#define	IPTOS_CLASS_CS4		0x80
-#define	IPTOS_CLASS_CS5		0xa0
-#define	IPTOS_CLASS_CS6		0xc0
-#define	IPTOS_CLASS_CS7		0xe0
-#define	IPTOS_CLASS_DEFAULT	IPTOS_CLASS_CS0
+#define IPTOS_CLASS_MASK 0xe0
+#define IPTOS_CLASS(x) ((x)&IPTOS_CLASS_MASK)
+#define IPTOS_CLASS_CS0 0x00
+#define IPTOS_CLASS_CS1 0x20
+#define IPTOS_CLASS_CS2 0x40
+#define IPTOS_CLASS_CS3 0x60
+#define IPTOS_CLASS_CS4 0x80
+#define IPTOS_CLASS_CS5 0xa0
+#define IPTOS_CLASS_CS6 0xc0
+#define IPTOS_CLASS_CS7 0xe0
+#define IPTOS_CLASS_DEFAULT IPTOS_CLASS_CS0
 
-#define	IPTOS_TOS_MASK		0x1E
-#define	IPTOS_TOS(tos)		((tos) & IPTOS_TOS_MASK)
-#define	IPTOS_LOWDELAY		0x10
-#define	IPTOS_THROUGHPUT	0x08
-#define	IPTOS_RELIABILITY	0x04
-#define	IPTOS_LOWCOST		0x02
-#define	IPTOS_MINCOST		IPTOS_LOWCOST
+#define IPTOS_TOS_MASK 0x1E
+#define IPTOS_TOS(tos) ((tos)&IPTOS_TOS_MASK)
+#define IPTOS_LOWDELAY 0x10
+#define IPTOS_THROUGHPUT 0x08
+#define IPTOS_RELIABILITY 0x04
+#define IPTOS_LOWCOST 0x02
+#define IPTOS_MINCOST IPTOS_LOWCOST
 
-#define	IPTOS_PREC_MASK			0xe0
-#define	IPTOS_PREC(tos)                ((tos) & IPTOS_PREC_MASK)
-#define	IPTOS_PREC_NETCONTROL		0xe0
-#define	IPTOS_PREC_INTERNETCONTROL	0xc0
-#define	IPTOS_PREC_CRITIC_ECP		0xa0
-#define	IPTOS_PREC_FLASHOVERRIDE	0x80
-#define	IPTOS_PREC_FLASH		0x60
-#define	IPTOS_PREC_IMMEDIATE		0x40
-#define	IPTOS_PREC_PRIORITY		0x20
-#define	IPTOS_PREC_ROUTINE		0x00
+#define IPTOS_PREC_MASK 0xe0
+#define IPTOS_PREC(tos) ((tos)&IPTOS_PREC_MASK)
+#define IPTOS_PREC_NETCONTROL 0xe0
+#define IPTOS_PREC_INTERNETCONTROL 0xc0
+#define IPTOS_PREC_CRITIC_ECP 0xa0
+#define IPTOS_PREC_FLASHOVERRIDE 0x80
+#define IPTOS_PREC_FLASH 0x60
+#define IPTOS_PREC_IMMEDIATE 0x40
+#define IPTOS_PREC_PRIORITY 0x20
+#define IPTOS_PREC_ROUTINE 0x00
 
-#define	IPOPT_COPY		0x80
-#define	IPOPT_CLASS_MASK	0x60
-#define	IPOPT_NUMBER_MASK	0x1f
+#define IPOPT_COPY 0x80
+#define IPOPT_CLASS_MASK 0x60
+#define IPOPT_NUMBER_MASK 0x1f
 
-#define	IPOPT_COPIED(o)		((o) & IPOPT_COPY)
-#define	IPOPT_CLASS(o)		((o) & IPOPT_CLASS_MASK)
-#define	IPOPT_NUMBER(o)		((o) & IPOPT_NUMBER_MASK)
+#define IPOPT_COPIED(o) ((o)&IPOPT_COPY)
+#define IPOPT_CLASS(o) ((o)&IPOPT_CLASS_MASK)
+#define IPOPT_NUMBER(o) ((o)&IPOPT_NUMBER_MASK)
 
-#define	IPOPT_CONTROL		0x00
-#define	IPOPT_RESERVED1		0x20
-#define	IPOPT_DEBMEAS		0x40
-#define	IPOPT_MEASUREMENT       IPOPT_DEBMEAS
-#define	IPOPT_RESERVED2		0x60
+#define IPOPT_CONTROL 0x00
+#define IPOPT_RESERVED1 0x20
+#define IPOPT_DEBMEAS 0x40
+#define IPOPT_MEASUREMENT IPOPT_DEBMEAS
+#define IPOPT_RESERVED2 0x60
 
-#define	IPOPT_EOL		0
-#define	IPOPT_END		IPOPT_EOL
-#define	IPOPT_NOP		1
-#define	IPOPT_NOOP		IPOPT_NOP
+#define IPOPT_EOL 0
+#define IPOPT_END IPOPT_EOL
+#define IPOPT_NOP 1
+#define IPOPT_NOOP IPOPT_NOP
 
-#define	IPOPT_RR		7
-#define	IPOPT_TS		68
-#define	IPOPT_TIMESTAMP		IPOPT_TS
-#define	IPOPT_SECURITY		130
-#define	IPOPT_SEC		IPOPT_SECURITY
-#define	IPOPT_LSRR		131
-#define	IPOPT_SATID		136
-#define	IPOPT_SID		IPOPT_SATID
-#define	IPOPT_SSRR		137
-#define	IPOPT_RA		148
+#define IPOPT_RR 7
+#define IPOPT_TS 68
+#define IPOPT_TIMESTAMP IPOPT_TS
+#define IPOPT_SECURITY 130
+#define IPOPT_SEC IPOPT_SECURITY
+#define IPOPT_LSRR 131
+#define IPOPT_SATID 136
+#define IPOPT_SID IPOPT_SATID
+#define IPOPT_SSRR 137
+#define IPOPT_RA 148
 
-#define	IPOPT_OPTVAL		0
-#define	IPOPT_OLEN		1
-#define	IPOPT_OFFSET		2
-#define	IPOPT_MINOFF		4
+#define IPOPT_OPTVAL 0
+#define IPOPT_OLEN 1
+#define IPOPT_OFFSET 2
+#define IPOPT_MINOFF 4
 
-#define	MAX_IPOPTLEN		40
+#define MAX_IPOPTLEN 40
 
-#define	IPOPT_TS_TSONLY		0
-#define	IPOPT_TS_TSANDADDR	1
-#define	IPOPT_TS_PRESPEC	3
+#define IPOPT_TS_TSONLY 0
+#define IPOPT_TS_TSANDADDR 1
+#define IPOPT_TS_PRESPEC 3
 
-#define	IPOPT_SECUR_UNCLASS	0x0000
-#define	IPOPT_SECUR_CONFID	0xf135
-#define	IPOPT_SECUR_EFTO	0x789a
-#define	IPOPT_SECUR_MMMM	0xbc4d
-#define	IPOPT_SECUR_RESTR	0xaf13
-#define	IPOPT_SECUR_SECRET	0xd788
-#define	IPOPT_SECUR_TOPSECRET	0x6bc5
+#define IPOPT_SECUR_UNCLASS 0x0000
+#define IPOPT_SECUR_CONFID 0xf135
+#define IPOPT_SECUR_EFTO 0x789a
+#define IPOPT_SECUR_MMMM 0xbc4d
+#define IPOPT_SECUR_RESTR 0xaf13
+#define IPOPT_SECUR_SECRET 0xd788
+#define IPOPT_SECUR_TOPSECRET 0x6bc5
 
-#define	MAXTTL		255
-#define	IPDEFTTL	64
-#define	IPFRAGTTL	60
-#define	IPTTLDEC	1
+#define MAXTTL 255
+#define IPDEFTTL 64
+#define IPFRAGTTL 60
+#define IPTTLDEC 1
 
-#define	IP_MSS		576
+#define IP_MSS 576
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/netinet/ip6.h b/fusl/include/netinet/ip6.h
index a4347a5..02acb70 100644
--- a/fusl/include/netinet/ip6.h
+++ b/fusl/include/netinet/ip6.h
@@ -10,129 +10,129 @@
 #include <endian.h>
 
 struct ip6_hdr {
-	union {
-		struct ip6_hdrctl {
-			uint32_t ip6_un1_flow;
-			uint16_t ip6_un1_plen;
-			uint8_t  ip6_un1_nxt;
-			uint8_t  ip6_un1_hlim;
-		} ip6_un1;
-		uint8_t ip6_un2_vfc;
-	} ip6_ctlun;
-	struct in6_addr ip6_src;
-	struct in6_addr ip6_dst;
+  union {
+    struct ip6_hdrctl {
+      uint32_t ip6_un1_flow;
+      uint16_t ip6_un1_plen;
+      uint8_t ip6_un1_nxt;
+      uint8_t ip6_un1_hlim;
+    } ip6_un1;
+    uint8_t ip6_un2_vfc;
+  } ip6_ctlun;
+  struct in6_addr ip6_src;
+  struct in6_addr ip6_dst;
 };
 
-#define ip6_vfc   ip6_ctlun.ip6_un2_vfc
-#define ip6_flow  ip6_ctlun.ip6_un1.ip6_un1_flow
-#define ip6_plen  ip6_ctlun.ip6_un1.ip6_un1_plen
-#define ip6_nxt   ip6_ctlun.ip6_un1.ip6_un1_nxt
-#define ip6_hlim  ip6_ctlun.ip6_un1.ip6_un1_hlim
-#define ip6_hops  ip6_ctlun.ip6_un1.ip6_un1_hlim
+#define ip6_vfc ip6_ctlun.ip6_un2_vfc
+#define ip6_flow ip6_ctlun.ip6_un1.ip6_un1_flow
+#define ip6_plen ip6_ctlun.ip6_un1.ip6_un1_plen
+#define ip6_nxt ip6_ctlun.ip6_un1.ip6_un1_nxt
+#define ip6_hlim ip6_ctlun.ip6_un1.ip6_un1_hlim
+#define ip6_hops ip6_ctlun.ip6_un1.ip6_un1_hlim
 
 struct ip6_ext {
-	uint8_t  ip6e_nxt;
-	uint8_t  ip6e_len;
+  uint8_t ip6e_nxt;
+  uint8_t ip6e_len;
 };
 
 struct ip6_hbh {
-	uint8_t  ip6h_nxt;
-	uint8_t  ip6h_len;
+  uint8_t ip6h_nxt;
+  uint8_t ip6h_len;
 };
 
 struct ip6_dest {
-	uint8_t  ip6d_nxt;
-	uint8_t  ip6d_len;
+  uint8_t ip6d_nxt;
+  uint8_t ip6d_len;
 };
 
 struct ip6_rthdr {
-	uint8_t  ip6r_nxt;
-	uint8_t  ip6r_len;
-	uint8_t  ip6r_type;
-	uint8_t  ip6r_segleft;
+  uint8_t ip6r_nxt;
+  uint8_t ip6r_len;
+  uint8_t ip6r_type;
+  uint8_t ip6r_segleft;
 };
 
 struct ip6_rthdr0 {
-	uint8_t  ip6r0_nxt;
-	uint8_t  ip6r0_len;
-	uint8_t  ip6r0_type;
-	uint8_t  ip6r0_segleft;
-	uint8_t  ip6r0_reserved;
-	uint8_t  ip6r0_slmap[3];
-	struct in6_addr ip6r0_addr[];
+  uint8_t ip6r0_nxt;
+  uint8_t ip6r0_len;
+  uint8_t ip6r0_type;
+  uint8_t ip6r0_segleft;
+  uint8_t ip6r0_reserved;
+  uint8_t ip6r0_slmap[3];
+  struct in6_addr ip6r0_addr[];
 };
 
 struct ip6_frag {
-	uint8_t   ip6f_nxt;
-	uint8_t   ip6f_reserved;
-	uint16_t  ip6f_offlg;
-	uint32_t  ip6f_ident;
+  uint8_t ip6f_nxt;
+  uint8_t ip6f_reserved;
+  uint16_t ip6f_offlg;
+  uint32_t ip6f_ident;
 };
 
 #if __BYTE_ORDER == __BIG_ENDIAN
-#define IP6F_OFF_MASK       0xfff8
-#define IP6F_RESERVED_MASK  0x0006
-#define IP6F_MORE_FRAG      0x0001
+#define IP6F_OFF_MASK 0xfff8
+#define IP6F_RESERVED_MASK 0x0006
+#define IP6F_MORE_FRAG 0x0001
 #else
-#define IP6F_OFF_MASK       0xf8ff
-#define IP6F_RESERVED_MASK  0x0600
-#define IP6F_MORE_FRAG      0x0100
+#define IP6F_OFF_MASK 0xf8ff
+#define IP6F_RESERVED_MASK 0x0600
+#define IP6F_MORE_FRAG 0x0100
 #endif
 
 struct ip6_opt {
-	uint8_t  ip6o_type;
-	uint8_t  ip6o_len;
+  uint8_t ip6o_type;
+  uint8_t ip6o_len;
 };
 
-#define IP6OPT_TYPE(o)		((o) & 0xc0)
-#define IP6OPT_TYPE_SKIP	0x00
-#define IP6OPT_TYPE_DISCARD	0x40
-#define IP6OPT_TYPE_FORCEICMP	0x80
-#define IP6OPT_TYPE_ICMP	0xc0
-#define IP6OPT_TYPE_MUTABLE	0x20
+#define IP6OPT_TYPE(o) ((o)&0xc0)
+#define IP6OPT_TYPE_SKIP 0x00
+#define IP6OPT_TYPE_DISCARD 0x40
+#define IP6OPT_TYPE_FORCEICMP 0x80
+#define IP6OPT_TYPE_ICMP 0xc0
+#define IP6OPT_TYPE_MUTABLE 0x20
 
-#define IP6OPT_PAD1	0
-#define IP6OPT_PADN	1
+#define IP6OPT_PAD1 0
+#define IP6OPT_PADN 1
 
-#define IP6OPT_JUMBO		0xc2
-#define IP6OPT_NSAP_ADDR	0xc3
-#define IP6OPT_TUNNEL_LIMIT	0x04
-#define IP6OPT_ROUTER_ALERT	0x05
+#define IP6OPT_JUMBO 0xc2
+#define IP6OPT_NSAP_ADDR 0xc3
+#define IP6OPT_TUNNEL_LIMIT 0x04
+#define IP6OPT_ROUTER_ALERT 0x05
 
 struct ip6_opt_jumbo {
-	uint8_t  ip6oj_type;
-	uint8_t  ip6oj_len;
-	uint8_t  ip6oj_jumbo_len[4];
+  uint8_t ip6oj_type;
+  uint8_t ip6oj_len;
+  uint8_t ip6oj_jumbo_len[4];
 };
-#define IP6OPT_JUMBO_LEN	6
+#define IP6OPT_JUMBO_LEN 6
 
 struct ip6_opt_nsap {
-	uint8_t  ip6on_type;
-	uint8_t  ip6on_len;
-	uint8_t  ip6on_src_nsap_len;
-	uint8_t  ip6on_dst_nsap_len;
+  uint8_t ip6on_type;
+  uint8_t ip6on_len;
+  uint8_t ip6on_src_nsap_len;
+  uint8_t ip6on_dst_nsap_len;
 };
 
 struct ip6_opt_tunnel {
-	uint8_t  ip6ot_type;
-	uint8_t  ip6ot_len;
-	uint8_t  ip6ot_encap_limit;
+  uint8_t ip6ot_type;
+  uint8_t ip6ot_len;
+  uint8_t ip6ot_encap_limit;
 };
 
 struct ip6_opt_router {
-	uint8_t  ip6or_type;
-	uint8_t  ip6or_len;
-	uint8_t  ip6or_value[2];
+  uint8_t ip6or_type;
+  uint8_t ip6or_len;
+  uint8_t ip6or_value[2];
 };
 
 #if __BYTE_ORDER == __BIG_ENDIAN
-#define IP6_ALERT_MLD	0x0000
-#define IP6_ALERT_RSVP	0x0001
-#define IP6_ALERT_AN	0x0002
+#define IP6_ALERT_MLD 0x0000
+#define IP6_ALERT_RSVP 0x0001
+#define IP6_ALERT_AN 0x0002
 #else
-#define IP6_ALERT_MLD	0x0000
-#define IP6_ALERT_RSVP	0x0100
-#define IP6_ALERT_AN	0x0200
+#define IP6_ALERT_MLD 0x0000
+#define IP6_ALERT_RSVP 0x0100
+#define IP6_ALERT_AN 0x0200
 #endif
 
 #ifdef __cplusplus
diff --git a/fusl/include/netinet/ip_icmp.h b/fusl/include/netinet/ip_icmp.h
index 2f4a86d..67d7107 100644
--- a/fusl/include/netinet/ip_icmp.h
+++ b/fusl/include/netinet/ip_icmp.h
@@ -10,180 +10,178 @@
 #endif
 
 struct icmphdr {
-	uint8_t type;
-	uint8_t code;
-	uint16_t checksum;
-	union {
-		struct {
-			uint16_t id;
-			uint16_t sequence;
-		} echo;
-		uint32_t gateway;
-		struct {
-			uint16_t __unused;
-			uint16_t mtu;
-		} frag;
-	} un;
+  uint8_t type;
+  uint8_t code;
+  uint16_t checksum;
+  union {
+    struct {
+      uint16_t id;
+      uint16_t sequence;
+    } echo;
+    uint32_t gateway;
+    struct {
+      uint16_t __unused;
+      uint16_t mtu;
+    } frag;
+  } un;
 };
 
-#define ICMP_ECHOREPLY		0
-#define ICMP_DEST_UNREACH	3
-#define ICMP_SOURCE_QUENCH	4
-#define ICMP_REDIRECT		5
-#define ICMP_ECHO		8
-#define ICMP_TIME_EXCEEDED	11
-#define ICMP_PARAMETERPROB	12
-#define ICMP_TIMESTAMP		13
-#define ICMP_TIMESTAMPREPLY	14
-#define ICMP_INFO_REQUEST	15
-#define ICMP_INFO_REPLY		16
-#define ICMP_ADDRESS		17
-#define ICMP_ADDRESSREPLY	18
-#define NR_ICMP_TYPES		18
+#define ICMP_ECHOREPLY 0
+#define ICMP_DEST_UNREACH 3
+#define ICMP_SOURCE_QUENCH 4
+#define ICMP_REDIRECT 5
+#define ICMP_ECHO 8
+#define ICMP_TIME_EXCEEDED 11
+#define ICMP_PARAMETERPROB 12
+#define ICMP_TIMESTAMP 13
+#define ICMP_TIMESTAMPREPLY 14
+#define ICMP_INFO_REQUEST 15
+#define ICMP_INFO_REPLY 16
+#define ICMP_ADDRESS 17
+#define ICMP_ADDRESSREPLY 18
+#define NR_ICMP_TYPES 18
 
+#define ICMP_NET_UNREACH 0
+#define ICMP_HOST_UNREACH 1
+#define ICMP_PROT_UNREACH 2
+#define ICMP_PORT_UNREACH 3
+#define ICMP_FRAG_NEEDED 4
+#define ICMP_SR_FAILED 5
+#define ICMP_NET_UNKNOWN 6
+#define ICMP_HOST_UNKNOWN 7
+#define ICMP_HOST_ISOLATED 8
+#define ICMP_NET_ANO 9
+#define ICMP_HOST_ANO 10
+#define ICMP_NET_UNR_TOS 11
+#define ICMP_HOST_UNR_TOS 12
+#define ICMP_PKT_FILTERED 13
+#define ICMP_PREC_VIOLATION 14
+#define ICMP_PREC_CUTOFF 15
+#define NR_ICMP_UNREACH 15
 
-#define ICMP_NET_UNREACH	0
-#define ICMP_HOST_UNREACH	1
-#define ICMP_PROT_UNREACH	2
-#define ICMP_PORT_UNREACH	3
-#define ICMP_FRAG_NEEDED	4
-#define ICMP_SR_FAILED		5
-#define ICMP_NET_UNKNOWN	6
-#define ICMP_HOST_UNKNOWN	7
-#define ICMP_HOST_ISOLATED	8
-#define ICMP_NET_ANO		9
-#define ICMP_HOST_ANO		10
-#define ICMP_NET_UNR_TOS	11
-#define ICMP_HOST_UNR_TOS	12
-#define ICMP_PKT_FILTERED	13
-#define ICMP_PREC_VIOLATION	14
-#define ICMP_PREC_CUTOFF	15
-#define NR_ICMP_UNREACH		15
+#define ICMP_REDIR_NET 0
+#define ICMP_REDIR_HOST 1
+#define ICMP_REDIR_NETTOS 2
+#define ICMP_REDIR_HOSTTOS 3
 
-#define ICMP_REDIR_NET		0
-#define ICMP_REDIR_HOST		1
-#define ICMP_REDIR_NETTOS	2
-#define ICMP_REDIR_HOSTTOS	3
-
-#define ICMP_EXC_TTL		0
-#define ICMP_EXC_FRAGTIME	1
-
+#define ICMP_EXC_TTL 0
+#define ICMP_EXC_FRAGTIME 1
 
 struct icmp_ra_addr {
-	uint32_t ira_addr;
-	uint32_t ira_preference;
+  uint32_t ira_addr;
+  uint32_t ira_preference;
 };
 
 struct icmp {
-	uint8_t  icmp_type;
-	uint8_t  icmp_code;
-	uint16_t icmp_cksum;
-	union {
-		uint8_t ih_pptr;
-		struct in_addr ih_gwaddr;
-		struct ih_idseq {
-			uint16_t icd_id;
-			uint16_t icd_seq;
-		} ih_idseq;
-		uint32_t ih_void;
+  uint8_t icmp_type;
+  uint8_t icmp_code;
+  uint16_t icmp_cksum;
+  union {
+    uint8_t ih_pptr;
+    struct in_addr ih_gwaddr;
+    struct ih_idseq {
+      uint16_t icd_id;
+      uint16_t icd_seq;
+    } ih_idseq;
+    uint32_t ih_void;
 
-		struct ih_pmtu {
-			uint16_t ipm_void;
-			uint16_t ipm_nextmtu;
-		} ih_pmtu;
+    struct ih_pmtu {
+      uint16_t ipm_void;
+      uint16_t ipm_nextmtu;
+    } ih_pmtu;
 
-		struct ih_rtradv {
-			uint8_t irt_num_addrs;
-			uint8_t irt_wpa;
-			uint16_t irt_lifetime;
-		} ih_rtradv;
-	} icmp_hun;
-	union {
-		struct {
-			uint32_t its_otime;
-			uint32_t its_rtime;
-			uint32_t its_ttime;
-		} id_ts;
-		struct {
-			struct ip idi_ip;
-		} id_ip;
-		struct icmp_ra_addr id_radv;
-		uint32_t   id_mask;
-		uint8_t    id_data[1];
-	} icmp_dun;
+    struct ih_rtradv {
+      uint8_t irt_num_addrs;
+      uint8_t irt_wpa;
+      uint16_t irt_lifetime;
+    } ih_rtradv;
+  } icmp_hun;
+  union {
+    struct {
+      uint32_t its_otime;
+      uint32_t its_rtime;
+      uint32_t its_ttime;
+    } id_ts;
+    struct {
+      struct ip idi_ip;
+    } id_ip;
+    struct icmp_ra_addr id_radv;
+    uint32_t id_mask;
+    uint8_t id_data[1];
+  } icmp_dun;
 };
 
-#define	icmp_pptr	icmp_hun.ih_pptr
-#define	icmp_gwaddr	icmp_hun.ih_gwaddr
-#define	icmp_id		icmp_hun.ih_idseq.icd_id
-#define	icmp_seq	icmp_hun.ih_idseq.icd_seq
-#define	icmp_void	icmp_hun.ih_void
-#define	icmp_pmvoid	icmp_hun.ih_pmtu.ipm_void
-#define	icmp_nextmtu	icmp_hun.ih_pmtu.ipm_nextmtu
-#define	icmp_num_addrs	icmp_hun.ih_rtradv.irt_num_addrs
-#define	icmp_wpa	icmp_hun.ih_rtradv.irt_wpa
-#define	icmp_lifetime	icmp_hun.ih_rtradv.irt_lifetime
-#define	icmp_otime	icmp_dun.id_ts.its_otime
-#define	icmp_rtime	icmp_dun.id_ts.its_rtime
-#define	icmp_ttime	icmp_dun.id_ts.its_ttime
-#define	icmp_ip		icmp_dun.id_ip.idi_ip
-#define	icmp_radv	icmp_dun.id_radv
-#define	icmp_mask	icmp_dun.id_mask
-#define	icmp_data	icmp_dun.id_data
+#define icmp_pptr icmp_hun.ih_pptr
+#define icmp_gwaddr icmp_hun.ih_gwaddr
+#define icmp_id icmp_hun.ih_idseq.icd_id
+#define icmp_seq icmp_hun.ih_idseq.icd_seq
+#define icmp_void icmp_hun.ih_void
+#define icmp_pmvoid icmp_hun.ih_pmtu.ipm_void
+#define icmp_nextmtu icmp_hun.ih_pmtu.ipm_nextmtu
+#define icmp_num_addrs icmp_hun.ih_rtradv.irt_num_addrs
+#define icmp_wpa icmp_hun.ih_rtradv.irt_wpa
+#define icmp_lifetime icmp_hun.ih_rtradv.irt_lifetime
+#define icmp_otime icmp_dun.id_ts.its_otime
+#define icmp_rtime icmp_dun.id_ts.its_rtime
+#define icmp_ttime icmp_dun.id_ts.its_ttime
+#define icmp_ip icmp_dun.id_ip.idi_ip
+#define icmp_radv icmp_dun.id_radv
+#define icmp_mask icmp_dun.id_mask
+#define icmp_data icmp_dun.id_data
 
-#define	ICMP_MINLEN	8
-#define	ICMP_TSLEN	(8 + 3 * sizeof (n_time))
-#define	ICMP_MASKLEN	12
-#define	ICMP_ADVLENMIN	(8 + sizeof (struct ip) + 8)
-#define	ICMP_ADVLEN(p)	(8 + ((p)->icmp_ip.ip_hl << 2) + 8)
+#define ICMP_MINLEN 8
+#define ICMP_TSLEN (8 + 3 * sizeof(n_time))
+#define ICMP_MASKLEN 12
+#define ICMP_ADVLENMIN (8 + sizeof(struct ip) + 8)
+#define ICMP_ADVLEN(p) (8 + ((p)->icmp_ip.ip_hl << 2) + 8)
 
-#define	ICMP_UNREACH		3
-#define	ICMP_SOURCEQUENCH	4
-#define	ICMP_ROUTERADVERT	9
-#define	ICMP_ROUTERSOLICIT	10
-#define	ICMP_TIMXCEED		11
-#define	ICMP_PARAMPROB		12
-#define	ICMP_TSTAMP		13
-#define	ICMP_TSTAMPREPLY	14
-#define	ICMP_IREQ		15
-#define	ICMP_IREQREPLY		16
-#define	ICMP_MASKREQ		17
-#define	ICMP_MASKREPLY		18
-#define	ICMP_MAXTYPE		18
+#define ICMP_UNREACH 3
+#define ICMP_SOURCEQUENCH 4
+#define ICMP_ROUTERADVERT 9
+#define ICMP_ROUTERSOLICIT 10
+#define ICMP_TIMXCEED 11
+#define ICMP_PARAMPROB 12
+#define ICMP_TSTAMP 13
+#define ICMP_TSTAMPREPLY 14
+#define ICMP_IREQ 15
+#define ICMP_IREQREPLY 16
+#define ICMP_MASKREQ 17
+#define ICMP_MASKREPLY 18
+#define ICMP_MAXTYPE 18
 
-#define	ICMP_UNREACH_NET	        0
-#define	ICMP_UNREACH_HOST	        1
-#define	ICMP_UNREACH_PROTOCOL	        2
-#define	ICMP_UNREACH_PORT	        3
-#define	ICMP_UNREACH_NEEDFRAG	        4
-#define	ICMP_UNREACH_SRCFAIL	        5
-#define	ICMP_UNREACH_NET_UNKNOWN        6
-#define	ICMP_UNREACH_HOST_UNKNOWN       7
-#define	ICMP_UNREACH_ISOLATED	        8
-#define	ICMP_UNREACH_NET_PROHIB	        9
-#define	ICMP_UNREACH_HOST_PROHIB        10
-#define	ICMP_UNREACH_TOSNET	        11
-#define	ICMP_UNREACH_TOSHOST	        12
-#define	ICMP_UNREACH_FILTER_PROHIB      13
-#define	ICMP_UNREACH_HOST_PRECEDENCE    14
-#define	ICMP_UNREACH_PRECEDENCE_CUTOFF  15
+#define ICMP_UNREACH_NET 0
+#define ICMP_UNREACH_HOST 1
+#define ICMP_UNREACH_PROTOCOL 2
+#define ICMP_UNREACH_PORT 3
+#define ICMP_UNREACH_NEEDFRAG 4
+#define ICMP_UNREACH_SRCFAIL 5
+#define ICMP_UNREACH_NET_UNKNOWN 6
+#define ICMP_UNREACH_HOST_UNKNOWN 7
+#define ICMP_UNREACH_ISOLATED 8
+#define ICMP_UNREACH_NET_PROHIB 9
+#define ICMP_UNREACH_HOST_PROHIB 10
+#define ICMP_UNREACH_TOSNET 11
+#define ICMP_UNREACH_TOSHOST 12
+#define ICMP_UNREACH_FILTER_PROHIB 13
+#define ICMP_UNREACH_HOST_PRECEDENCE 14
+#define ICMP_UNREACH_PRECEDENCE_CUTOFF 15
 
-#define	ICMP_REDIRECT_NET	0
-#define	ICMP_REDIRECT_HOST	1
-#define	ICMP_REDIRECT_TOSNET	2
-#define	ICMP_REDIRECT_TOSHOST	3
+#define ICMP_REDIRECT_NET 0
+#define ICMP_REDIRECT_HOST 1
+#define ICMP_REDIRECT_TOSNET 2
+#define ICMP_REDIRECT_TOSHOST 3
 
-#define	ICMP_TIMXCEED_INTRANS	0
-#define	ICMP_TIMXCEED_REASS	1
+#define ICMP_TIMXCEED_INTRANS 0
+#define ICMP_TIMXCEED_REASS 1
 
-#define	ICMP_PARAMPROB_OPTABSENT 1
+#define ICMP_PARAMPROB_OPTABSENT 1
 
-#define	ICMP_INFOTYPE(type) \
-	((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO || \
-	(type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \
-	(type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY || \
-	(type) == ICMP_IREQ || (type) == ICMP_IREQREPLY || \
-	(type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY)
+#define ICMP_INFOTYPE(type)                                       \
+  ((type) == ICMP_ECHOREPLY || (type) == ICMP_ECHO ||             \
+   (type) == ICMP_ROUTERADVERT || (type) == ICMP_ROUTERSOLICIT || \
+   (type) == ICMP_TSTAMP || (type) == ICMP_TSTAMPREPLY ||         \
+   (type) == ICMP_IREQ || (type) == ICMP_IREQREPLY ||             \
+   (type) == ICMP_MASKREQ || (type) == ICMP_MASKREPLY)
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/netinet/tcp.h b/fusl/include/netinet/tcp.h
index 244a21e..e51688e 100644
--- a/fusl/include/netinet/tcp.h
+++ b/fusl/include/netinet/tcp.h
@@ -4,57 +4,57 @@
 #include <features.h>
 
 #define TCP_NODELAY 1
-#define TCP_MAXSEG	 2
-#define TCP_CORK	 3
-#define TCP_KEEPIDLE	 4
-#define TCP_KEEPINTVL	 5
-#define TCP_KEEPCNT	 6
-#define TCP_SYNCNT	 7
-#define TCP_LINGER2	 8
+#define TCP_MAXSEG 2
+#define TCP_CORK 3
+#define TCP_KEEPIDLE 4
+#define TCP_KEEPINTVL 5
+#define TCP_KEEPCNT 6
+#define TCP_SYNCNT 7
+#define TCP_LINGER2 8
 #define TCP_DEFER_ACCEPT 9
 #define TCP_WINDOW_CLAMP 10
-#define TCP_INFO	 11
-#define	TCP_QUICKACK	 12
-#define TCP_CONGESTION	 13
-#define TCP_MD5SIG	 14
+#define TCP_INFO 11
+#define TCP_QUICKACK 12
+#define TCP_CONGESTION 13
+#define TCP_MD5SIG 14
 #define TCP_THIN_LINEAR_TIMEOUTS 16
-#define TCP_THIN_DUPACK  17
+#define TCP_THIN_DUPACK 17
 #define TCP_USER_TIMEOUT 18
-#define TCP_REPAIR       19
+#define TCP_REPAIR 19
 #define TCP_REPAIR_QUEUE 20
-#define TCP_QUEUE_SEQ    21
+#define TCP_QUEUE_SEQ 21
 #define TCP_REPAIR_OPTIONS 22
-#define TCP_FASTOPEN     23
-#define TCP_TIMESTAMP    24
+#define TCP_FASTOPEN 23
+#define TCP_TIMESTAMP 24
 #define TCP_NOTSENT_LOWAT 25
-#define TCP_CC_INFO      26
-#define TCP_SAVE_SYN     27
-#define TCP_SAVED_SYN    28
+#define TCP_CC_INFO 26
+#define TCP_SAVE_SYN 27
+#define TCP_SAVED_SYN 28
 
-#define TCP_ESTABLISHED  1
-#define TCP_SYN_SENT     2
-#define TCP_SYN_RECV     3
-#define TCP_FIN_WAIT1    4
-#define TCP_FIN_WAIT2    5
-#define TCP_TIME_WAIT    6
-#define TCP_CLOSE        7
-#define TCP_CLOSE_WAIT   8
-#define TCP_LAST_ACK     9
-#define TCP_LISTEN       10
-#define TCP_CLOSING      11
+#define TCP_ESTABLISHED 1
+#define TCP_SYN_SENT 2
+#define TCP_SYN_RECV 3
+#define TCP_FIN_WAIT1 4
+#define TCP_FIN_WAIT2 5
+#define TCP_TIME_WAIT 6
+#define TCP_CLOSE 7
+#define TCP_CLOSE_WAIT 8
+#define TCP_LAST_ACK 9
+#define TCP_LISTEN 10
+#define TCP_CLOSING 11
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#define TCPOPT_EOL              0
-#define TCPOPT_NOP              1
-#define TCPOPT_MAXSEG           2
-#define TCPOPT_WINDOW           3
-#define TCPOPT_SACK_PERMITTED   4
-#define TCPOPT_SACK             5
-#define TCPOPT_TIMESTAMP        8
-#define TCPOLEN_SACK_PERMITTED  2
-#define TCPOLEN_WINDOW          3
-#define TCPOLEN_MAXSEG          4
-#define TCPOLEN_TIMESTAMP       10
+#define TCPOPT_EOL 0
+#define TCPOPT_NOP 1
+#define TCPOPT_MAXSEG 2
+#define TCPOPT_WINDOW 3
+#define TCPOPT_SACK_PERMITTED 4
+#define TCPOPT_SACK 5
+#define TCPOPT_TIMESTAMP 8
+#define TCPOLEN_SACK_PERMITTED 2
+#define TCPOLEN_WINDOW 3
+#define TCPOLEN_MAXSEG 4
+#define TCPOLEN_TIMESTAMP 10
 
 #define SOL_TCP 6
 
@@ -75,126 +75,125 @@
 struct tcphdr {
 #ifdef _GNU_SOURCE
 #ifdef __GNUC__
-	__extension__
+  __extension__
 #endif
-	union { struct {
-
-	uint16_t source;
-	uint16_t dest;
-	uint32_t seq;
-	uint32_t ack_seq;
+      union {
+    struct {
+      uint16_t source;
+      uint16_t dest;
+      uint32_t seq;
+      uint32_t ack_seq;
 #if __BYTE_ORDER == __LITTLE_ENDIAN
-	uint16_t res1:4;
-	uint16_t doff:4;
-	uint16_t fin:1;
-	uint16_t syn:1;
-	uint16_t rst:1;
-	uint16_t psh:1;
-	uint16_t ack:1;
-	uint16_t urg:1;
-	uint16_t res2:2;
+      uint16_t res1 : 4;
+      uint16_t doff : 4;
+      uint16_t fin : 1;
+      uint16_t syn : 1;
+      uint16_t rst : 1;
+      uint16_t psh : 1;
+      uint16_t ack : 1;
+      uint16_t urg : 1;
+      uint16_t res2 : 2;
 #else
-	uint16_t doff:4;
-	uint16_t res1:4;
-	uint16_t res2:2;
-	uint16_t urg:1;
-	uint16_t ack:1;
-	uint16_t psh:1;
-	uint16_t rst:1;
-	uint16_t syn:1;
-	uint16_t fin:1;
+      uint16_t doff : 4;
+      uint16_t res1 : 4;
+      uint16_t res2 : 2;
+      uint16_t urg : 1;
+      uint16_t ack : 1;
+      uint16_t psh : 1;
+      uint16_t rst : 1;
+      uint16_t syn : 1;
+      uint16_t fin : 1;
 #endif
-	uint16_t window;
-	uint16_t check;
-	uint16_t urg_ptr;
-
-	}; struct {
+      uint16_t window;
+      uint16_t check;
+      uint16_t urg_ptr;
+    };
+    struct {
 #endif
 
-	uint16_t th_sport;
-	uint16_t th_dport;
-	uint32_t th_seq;
-	uint32_t th_ack;
+      uint16_t th_sport;
+      uint16_t th_dport;
+      uint32_t th_seq;
+      uint32_t th_ack;
 #if __BYTE_ORDER == __LITTLE_ENDIAN
-	uint8_t th_x2:4;
-	uint8_t th_off:4;
+      uint8_t th_x2 : 4;
+      uint8_t th_off : 4;
 #else
-	uint8_t th_off:4;
-	uint8_t th_x2:4;
+  uint8_t th_off : 4;
+  uint8_t th_x2 : 4;
 #endif
-	uint8_t th_flags;
-	uint16_t th_win;
-	uint16_t th_sum;
-	uint16_t th_urp;
+      uint8_t th_flags;
+      uint16_t th_win;
+      uint16_t th_sum;
+      uint16_t th_urp;
 
 #ifdef _GNU_SOURCE
-	}; };
+    };
+  };
 #endif
 };
 #endif
 
 #ifdef _GNU_SOURCE
-#define TCPI_OPT_TIMESTAMPS	1
-#define TCPI_OPT_SACK		2
-#define TCPI_OPT_WSCALE		4
-#define TCPI_OPT_ECN		8
+#define TCPI_OPT_TIMESTAMPS 1
+#define TCPI_OPT_SACK 2
+#define TCPI_OPT_WSCALE 4
+#define TCPI_OPT_ECN 8
 
-#define TCP_CA_Open		0
-#define TCP_CA_Disorder		1
-#define TCP_CA_CWR		2
-#define TCP_CA_Recovery		3
-#define TCP_CA_Loss		4
+#define TCP_CA_Open 0
+#define TCP_CA_Disorder 1
+#define TCP_CA_CWR 2
+#define TCP_CA_Recovery 3
+#define TCP_CA_Loss 4
 
-struct tcp_info
-{
-	uint8_t tcpi_state;
-	uint8_t tcpi_ca_state;
-	uint8_t tcpi_retransmits;
-	uint8_t tcpi_probes;
-	uint8_t tcpi_backoff;
-	uint8_t tcpi_options;
-	uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
-	uint32_t tcpi_rto;
-	uint32_t tcpi_ato;
-	uint32_t tcpi_snd_mss;
-	uint32_t tcpi_rcv_mss;
-	uint32_t tcpi_unacked;
-	uint32_t tcpi_sacked;
-	uint32_t tcpi_lost;
-	uint32_t tcpi_retrans;
-	uint32_t tcpi_fackets;
-	uint32_t tcpi_last_data_sent;
-	uint32_t tcpi_last_ack_sent;
-	uint32_t tcpi_last_data_recv;
-	uint32_t tcpi_last_ack_recv;
-	uint32_t tcpi_pmtu;
-	uint32_t tcpi_rcv_ssthresh;
-	uint32_t tcpi_rtt;
-	uint32_t tcpi_rttvar;
-	uint32_t tcpi_snd_ssthresh;
-	uint32_t tcpi_snd_cwnd;
-	uint32_t tcpi_advmss;
-	uint32_t tcpi_reordering;
-	uint32_t tcpi_rcv_rtt;
-	uint32_t tcpi_rcv_space;
-	uint32_t tcpi_total_retrans;
-	uint64_t tcpi_pacing_rate;
-	uint64_t tcpi_max_pacing_rate;
-	uint64_t tcpi_bytes_acked;
-	uint64_t tcpi_bytes_received;
-	uint32_t tcpi_segs_out;
-	uint32_t tcpi_segs_in;
+struct tcp_info {
+  uint8_t tcpi_state;
+  uint8_t tcpi_ca_state;
+  uint8_t tcpi_retransmits;
+  uint8_t tcpi_probes;
+  uint8_t tcpi_backoff;
+  uint8_t tcpi_options;
+  uint8_t tcpi_snd_wscale : 4, tcpi_rcv_wscale : 4;
+  uint32_t tcpi_rto;
+  uint32_t tcpi_ato;
+  uint32_t tcpi_snd_mss;
+  uint32_t tcpi_rcv_mss;
+  uint32_t tcpi_unacked;
+  uint32_t tcpi_sacked;
+  uint32_t tcpi_lost;
+  uint32_t tcpi_retrans;
+  uint32_t tcpi_fackets;
+  uint32_t tcpi_last_data_sent;
+  uint32_t tcpi_last_ack_sent;
+  uint32_t tcpi_last_data_recv;
+  uint32_t tcpi_last_ack_recv;
+  uint32_t tcpi_pmtu;
+  uint32_t tcpi_rcv_ssthresh;
+  uint32_t tcpi_rtt;
+  uint32_t tcpi_rttvar;
+  uint32_t tcpi_snd_ssthresh;
+  uint32_t tcpi_snd_cwnd;
+  uint32_t tcpi_advmss;
+  uint32_t tcpi_reordering;
+  uint32_t tcpi_rcv_rtt;
+  uint32_t tcpi_rcv_space;
+  uint32_t tcpi_total_retrans;
+  uint64_t tcpi_pacing_rate;
+  uint64_t tcpi_max_pacing_rate;
+  uint64_t tcpi_bytes_acked;
+  uint64_t tcpi_bytes_received;
+  uint32_t tcpi_segs_out;
+  uint32_t tcpi_segs_in;
 };
 
-#define TCP_MD5SIG_MAXKEYLEN    80
+#define TCP_MD5SIG_MAXKEYLEN 80
 
-struct tcp_md5sig
-{
-	struct sockaddr_storage tcpm_addr;
-	uint16_t __tcpm_pad1;
-	uint16_t tcpm_keylen;
-	uint32_t __tcpm_pad2;
-	uint8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN];
+struct tcp_md5sig {
+  struct sockaddr_storage tcpm_addr;
+  uint16_t __tcpm_pad1;
+  uint16_t tcpm_keylen;
+  uint32_t __tcpm_pad2;
+  uint8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN];
 };
 
 #endif
diff --git a/fusl/include/netinet/udp.h b/fusl/include/netinet/udp.h
index b1b0eb8..8a76e23 100644
--- a/fusl/include/netinet/udp.h
+++ b/fusl/include/netinet/udp.h
@@ -16,20 +16,20 @@
 #endif
 
 struct udphdr {
-	uint16_t uh_sport;
-	uint16_t uh_dport;
-	uint16_t uh_ulen;
-	uint16_t uh_sum;
+  uint16_t uh_sport;
+  uint16_t uh_dport;
+  uint16_t uh_ulen;
+  uint16_t uh_sum;
 };
 
-#define UDP_CORK	1
-#define UDP_ENCAP	100
+#define UDP_CORK 1
+#define UDP_ENCAP 100
 
 #define UDP_ENCAP_ESPINUDP_NON_IKE 1
-#define UDP_ENCAP_ESPINUDP	2
-#define UDP_ENCAP_L2TPINUDP	3
+#define UDP_ENCAP_ESPINUDP 2
+#define UDP_ENCAP_L2TPINUDP 3
 
-#define SOL_UDP            17
+#define SOL_UDP 17
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/netpacket/packet.h b/fusl/include/netpacket/packet.h
index f2210ce..29eab5f 100644
--- a/fusl/include/netpacket/packet.h
+++ b/fusl/include/netpacket/packet.h
@@ -6,53 +6,53 @@
 #endif
 
 struct sockaddr_ll {
-	unsigned short sll_family, sll_protocol;
-	int sll_ifindex;
-	unsigned short sll_hatype;
-	unsigned char sll_pkttype, sll_halen;
-	unsigned char sll_addr[8];
+  unsigned short sll_family, sll_protocol;
+  int sll_ifindex;
+  unsigned short sll_hatype;
+  unsigned char sll_pkttype, sll_halen;
+  unsigned char sll_addr[8];
 };
 
 struct packet_mreq {
-	int mr_ifindex;
-	unsigned short int mr_type,  mr_alen;
-	unsigned char mr_address[8];
+  int mr_ifindex;
+  unsigned short int mr_type, mr_alen;
+  unsigned char mr_address[8];
 };
 
-#define PACKET_HOST		0
-#define PACKET_BROADCAST	1
-#define PACKET_MULTICAST	2
-#define PACKET_OTHERHOST	3
-#define PACKET_OUTGOING		4
-#define PACKET_LOOPBACK		5
-#define PACKET_FASTROUTE	6
+#define PACKET_HOST 0
+#define PACKET_BROADCAST 1
+#define PACKET_MULTICAST 2
+#define PACKET_OTHERHOST 3
+#define PACKET_OUTGOING 4
+#define PACKET_LOOPBACK 5
+#define PACKET_FASTROUTE 6
 
-#define PACKET_ADD_MEMBERSHIP		1
-#define PACKET_DROP_MEMBERSHIP		2
-#define	PACKET_RECV_OUTPUT		3
-#define	PACKET_RX_RING			5
-#define	PACKET_STATISTICS		6
-#define PACKET_COPY_THRESH		7
-#define PACKET_AUXDATA			8
-#define PACKET_ORIGDEV			9
-#define PACKET_VERSION			10
-#define PACKET_HDRLEN			11
-#define PACKET_RESERVE			12
-#define PACKET_TX_RING			13
-#define PACKET_LOSS			14
-#define PACKET_VNET_HDR			15
-#define PACKET_TX_TIMESTAMP		16
-#define PACKET_TIMESTAMP		17
-#define PACKET_FANOUT			18
-#define PACKET_TX_HAS_OFF		19
-#define PACKET_QDISC_BYPASS		20
-#define PACKET_ROLLOVER_STATS		21
-#define PACKET_FANOUT_DATA		22
+#define PACKET_ADD_MEMBERSHIP 1
+#define PACKET_DROP_MEMBERSHIP 2
+#define PACKET_RECV_OUTPUT 3
+#define PACKET_RX_RING 5
+#define PACKET_STATISTICS 6
+#define PACKET_COPY_THRESH 7
+#define PACKET_AUXDATA 8
+#define PACKET_ORIGDEV 9
+#define PACKET_VERSION 10
+#define PACKET_HDRLEN 11
+#define PACKET_RESERVE 12
+#define PACKET_TX_RING 13
+#define PACKET_LOSS 14
+#define PACKET_VNET_HDR 15
+#define PACKET_TX_TIMESTAMP 16
+#define PACKET_TIMESTAMP 17
+#define PACKET_FANOUT 18
+#define PACKET_TX_HAS_OFF 19
+#define PACKET_QDISC_BYPASS 20
+#define PACKET_ROLLOVER_STATS 21
+#define PACKET_FANOUT_DATA 22
 
-#define PACKET_MR_MULTICAST	0
-#define PACKET_MR_PROMISC	1
-#define PACKET_MR_ALLMULTI	2
-#define PACKET_MR_UNICAST	3
+#define PACKET_MR_MULTICAST 0
+#define PACKET_MR_PROMISC 1
+#define PACKET_MR_ALLMULTI 2
+#define PACKET_MR_UNICAST 3
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/nl_types.h b/fusl/include/nl_types.h
index 7c2d48e..ee49827 100644
--- a/fusl/include/nl_types.h
+++ b/fusl/include/nl_types.h
@@ -9,11 +9,11 @@
 #define NL_CAT_LOCALE 1
 
 typedef int nl_item;
-typedef void *nl_catd;
+typedef void* nl_catd;
 
-nl_catd catopen (const char *, int);
-char *catgets (nl_catd, int, int, const char *);
-int catclose (nl_catd);
+nl_catd catopen(const char*, int);
+char* catgets(nl_catd, int, int, const char*);
+int catclose(nl_catd);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/paths.h b/fusl/include/paths.h
index 67de6b3..1c0433b 100644
--- a/fusl/include/paths.h
+++ b/fusl/include/paths.h
@@ -1,31 +1,31 @@
 #ifndef _PATHS_H
 #define _PATHS_H
 
-#define	_PATH_DEFPATH "/usr/local/bin:/bin:/usr/bin"
-#define	_PATH_STDPATH "/bin:/usr/bin:/sbin:/usr/sbin"
+#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_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/"
+#define _PATH_DEV "/dev/"
+#define _PATH_TMP "/tmp/"
+#define _PATH_VARDB "/var/lib/misc/"
+#define _PATH_VARRUN "/var/run/"
+#define _PATH_VARTMP "/var/tmp/"
 
 #endif
diff --git a/fusl/include/poll.h b/fusl/include/poll.h
index 7af7372..7b42c0e 100644
--- a/fusl/include/poll.h
+++ b/fusl/include/poll.h
@@ -1,5 +1,5 @@
-#ifndef	_POLL_H
-#define	_POLL_H
+#ifndef _POLL_H
+#define _POLL_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,12 +9,12 @@
 
 #include <bits/poll.h>
 
-#define POLLIN     0x001
-#define POLLPRI    0x002
-#define POLLOUT    0x004
-#define POLLERR    0x008
-#define POLLHUP    0x010
-#define POLLNVAL   0x020
+#define POLLIN 0x001
+#define POLLPRI 0x002
+#define POLLOUT 0x004
+#define POLLERR 0x008
+#define POLLHUP 0x010
+#define POLLNVAL 0x020
 #define POLLRDNORM 0x040
 #define POLLRDBAND 0x080
 #ifndef POLLWRNORM
@@ -22,27 +22,26 @@
 #define POLLWRBAND 0x200
 #endif
 #ifndef POLLMSG
-#define POLLMSG    0x400
-#define POLLRDHUP  0x2000
+#define POLLMSG 0x400
+#define POLLRDHUP 0x2000
 #endif
 
 typedef unsigned long nfds_t;
 
-struct pollfd
-{
-	int fd;
-	short events;
-	short revents;
+struct pollfd {
+  int fd;
+  short events;
+  short revents;
 };
 
-int poll (struct pollfd *, nfds_t, int);
+int poll(struct pollfd*, nfds_t, int);
 
 #ifdef _GNU_SOURCE
 #define __NEED_time_t
 #define __NEED_struct_timespec
 #define __NEED_sigset_t
 #include <bits/alltypes.h>
-int ppoll(struct pollfd *, nfds_t, const struct timespec *, const sigset_t *);
+int ppoll(struct pollfd*, nfds_t, const struct timespec*, const sigset_t*);
 #endif
 
 #ifdef __cplusplus
diff --git a/fusl/include/pthread.h b/fusl/include/pthread.h
index af70b73..080be95 100644
--- a/fusl/include/pthread.h
+++ b/fusl/include/pthread.h
@@ -54,13 +54,26 @@
 #define PTHREAD_PROCESS_PRIVATE 0
 #define PTHREAD_PROCESS_SHARED 1
 
-
-#define PTHREAD_MUTEX_INITIALIZER {{{0}}}
-#define PTHREAD_RWLOCK_INITIALIZER {{{0}}}
-#define PTHREAD_COND_INITIALIZER {{{0}}}
+#define PTHREAD_MUTEX_INITIALIZER \
+  {                               \
+    {                             \
+      { 0 }                       \
+    }                             \
+  }
+#define PTHREAD_RWLOCK_INITIALIZER \
+  {                                \
+    {                              \
+      { 0 }                        \
+    }                              \
+  }
+#define PTHREAD_COND_INITIALIZER \
+  {                              \
+    {                            \
+      { 0 }                      \
+    }                            \
+  }
 #define PTHREAD_ONCE_INIT 0
 
-
 #define PTHREAD_CANCEL_ENABLE 0
 #define PTHREAD_CANCEL_DISABLE 1
 #define PTHREAD_CANCEL_MASKED 2
@@ -68,152 +81,191 @@
 #define PTHREAD_CANCEL_DEFERRED 0
 #define PTHREAD_CANCEL_ASYNCHRONOUS 1
 
-#define PTHREAD_CANCELED ((void *)-1)
-
+#define PTHREAD_CANCELED ((void*)-1)
 
 #define PTHREAD_BARRIER_SERIAL_THREAD (-1)
 
-
-int pthread_create(pthread_t *__restrict, const pthread_attr_t *__restrict, void *(*)(void *), void *__restrict);
+int pthread_create(pthread_t* __restrict,
+                   const pthread_attr_t* __restrict,
+                   void* (*)(void*),
+                   void* __restrict);
 int pthread_detach(pthread_t);
-_Noreturn void pthread_exit(void *);
-int pthread_join(pthread_t, void **);
+_Noreturn void pthread_exit(void*);
+int pthread_join(pthread_t, void**);
 
 pthread_t pthread_self(void);
 
 int pthread_equal(pthread_t, pthread_t);
 #ifndef __cplusplus
-#define pthread_equal(x,y) ((x)==(y))
+#define pthread_equal(x, y) ((x) == (y))
 #endif
 
-int pthread_setcancelstate(int, int *);
-int pthread_setcanceltype(int, int *);
+int pthread_setcancelstate(int, int*);
+int pthread_setcanceltype(int, int*);
 void pthread_testcancel(void);
 int pthread_cancel(pthread_t);
 
-int pthread_getschedparam(pthread_t, int *__restrict, struct sched_param *__restrict);
-int pthread_setschedparam(pthread_t, int, const struct sched_param *);
+int pthread_getschedparam(pthread_t,
+                          int* __restrict,
+                          struct sched_param* __restrict);
+int pthread_setschedparam(pthread_t, int, const struct sched_param*);
 int pthread_setschedprio(pthread_t, int);
 
-int pthread_once(pthread_once_t *, void (*)(void));
+int pthread_once(pthread_once_t*, void (*)(void));
 
-int pthread_mutex_init(pthread_mutex_t *__restrict, const pthread_mutexattr_t *__restrict);
-int pthread_mutex_lock(pthread_mutex_t *);
-int pthread_mutex_unlock(pthread_mutex_t *);
-int pthread_mutex_trylock(pthread_mutex_t *);
-int pthread_mutex_timedlock(pthread_mutex_t *__restrict, const struct timespec *__restrict);
-int pthread_mutex_destroy(pthread_mutex_t *);
-int pthread_mutex_consistent(pthread_mutex_t *);
+int pthread_mutex_init(pthread_mutex_t* __restrict,
+                       const pthread_mutexattr_t* __restrict);
+int pthread_mutex_lock(pthread_mutex_t*);
+int pthread_mutex_unlock(pthread_mutex_t*);
+int pthread_mutex_trylock(pthread_mutex_t*);
+int pthread_mutex_timedlock(pthread_mutex_t* __restrict,
+                            const struct timespec* __restrict);
+int pthread_mutex_destroy(pthread_mutex_t*);
+int pthread_mutex_consistent(pthread_mutex_t*);
 
-int pthread_mutex_getprioceiling(const pthread_mutex_t *__restrict, int *__restrict);
-int pthread_mutex_setprioceiling(pthread_mutex_t *__restrict, int, int *__restrict);
+int pthread_mutex_getprioceiling(const pthread_mutex_t* __restrict,
+                                 int* __restrict);
+int pthread_mutex_setprioceiling(pthread_mutex_t* __restrict,
+                                 int,
+                                 int* __restrict);
 
-int pthread_cond_init(pthread_cond_t *__restrict, const pthread_condattr_t *__restrict);
-int pthread_cond_destroy(pthread_cond_t *);
-int pthread_cond_wait(pthread_cond_t *__restrict, pthread_mutex_t *__restrict);
-int pthread_cond_timedwait(pthread_cond_t *__restrict, pthread_mutex_t *__restrict, const struct timespec *__restrict);
-int pthread_cond_broadcast(pthread_cond_t *);
-int pthread_cond_signal(pthread_cond_t *);
+int pthread_cond_init(pthread_cond_t* __restrict,
+                      const pthread_condattr_t* __restrict);
+int pthread_cond_destroy(pthread_cond_t*);
+int pthread_cond_wait(pthread_cond_t* __restrict, pthread_mutex_t* __restrict);
+int pthread_cond_timedwait(pthread_cond_t* __restrict,
+                           pthread_mutex_t* __restrict,
+                           const struct timespec* __restrict);
+int pthread_cond_broadcast(pthread_cond_t*);
+int pthread_cond_signal(pthread_cond_t*);
 
-int pthread_rwlock_init(pthread_rwlock_t *__restrict, const pthread_rwlockattr_t *__restrict);
-int pthread_rwlock_destroy(pthread_rwlock_t *);
-int pthread_rwlock_rdlock(pthread_rwlock_t *);
-int pthread_rwlock_tryrdlock(pthread_rwlock_t *);
-int pthread_rwlock_timedrdlock(pthread_rwlock_t *__restrict, const struct timespec *__restrict);
-int pthread_rwlock_wrlock(pthread_rwlock_t *);
-int pthread_rwlock_trywrlock(pthread_rwlock_t *);
-int pthread_rwlock_timedwrlock(pthread_rwlock_t *__restrict, const struct timespec *__restrict);
-int pthread_rwlock_unlock(pthread_rwlock_t *);
+int pthread_rwlock_init(pthread_rwlock_t* __restrict,
+                        const pthread_rwlockattr_t* __restrict);
+int pthread_rwlock_destroy(pthread_rwlock_t*);
+int pthread_rwlock_rdlock(pthread_rwlock_t*);
+int pthread_rwlock_tryrdlock(pthread_rwlock_t*);
+int pthread_rwlock_timedrdlock(pthread_rwlock_t* __restrict,
+                               const struct timespec* __restrict);
+int pthread_rwlock_wrlock(pthread_rwlock_t*);
+int pthread_rwlock_trywrlock(pthread_rwlock_t*);
+int pthread_rwlock_timedwrlock(pthread_rwlock_t* __restrict,
+                               const struct timespec* __restrict);
+int pthread_rwlock_unlock(pthread_rwlock_t*);
 
-int pthread_spin_init(pthread_spinlock_t *, int);
-int pthread_spin_destroy(pthread_spinlock_t *);
-int pthread_spin_lock(pthread_spinlock_t *);
-int pthread_spin_trylock(pthread_spinlock_t *);
-int pthread_spin_unlock(pthread_spinlock_t *);
+int pthread_spin_init(pthread_spinlock_t*, int);
+int pthread_spin_destroy(pthread_spinlock_t*);
+int pthread_spin_lock(pthread_spinlock_t*);
+int pthread_spin_trylock(pthread_spinlock_t*);
+int pthread_spin_unlock(pthread_spinlock_t*);
 
-int pthread_barrier_init(pthread_barrier_t *__restrict, const pthread_barrierattr_t *__restrict, unsigned);
-int pthread_barrier_destroy(pthread_barrier_t *);
-int pthread_barrier_wait(pthread_barrier_t *);
+int pthread_barrier_init(pthread_barrier_t* __restrict,
+                         const pthread_barrierattr_t* __restrict,
+                         unsigned);
+int pthread_barrier_destroy(pthread_barrier_t*);
+int pthread_barrier_wait(pthread_barrier_t*);
 
-int pthread_key_create(pthread_key_t *, void (*)(void *));
+int pthread_key_create(pthread_key_t*, void (*)(void*));
 int pthread_key_delete(pthread_key_t);
-void *pthread_getspecific(pthread_key_t);
-int pthread_setspecific(pthread_key_t, const void *);
+void* pthread_getspecific(pthread_key_t);
+int pthread_setspecific(pthread_key_t, const void*);
 
-int pthread_attr_init(pthread_attr_t *);
-int pthread_attr_destroy(pthread_attr_t *);
+int pthread_attr_init(pthread_attr_t*);
+int pthread_attr_destroy(pthread_attr_t*);
 
-int pthread_attr_getguardsize(const pthread_attr_t *__restrict, size_t *__restrict);
-int pthread_attr_setguardsize(pthread_attr_t *, size_t);
-int pthread_attr_getstacksize(const pthread_attr_t *__restrict, size_t *__restrict);
-int pthread_attr_setstacksize(pthread_attr_t *, size_t);
-int pthread_attr_getdetachstate(const pthread_attr_t *, int *);
-int pthread_attr_setdetachstate(pthread_attr_t *, int);
-int pthread_attr_getstack(const pthread_attr_t *__restrict, void **__restrict, size_t *__restrict);
-int pthread_attr_setstack(pthread_attr_t *, void *, size_t);
-int pthread_attr_getscope(const pthread_attr_t *__restrict, int *__restrict);
-int pthread_attr_setscope(pthread_attr_t *, int);
-int pthread_attr_getschedpolicy(const pthread_attr_t *__restrict, int *__restrict);
-int pthread_attr_setschedpolicy(pthread_attr_t *, int);
-int pthread_attr_getschedparam(const pthread_attr_t *__restrict, struct sched_param *__restrict);
-int pthread_attr_setschedparam(pthread_attr_t *__restrict, const struct sched_param *__restrict);
-int pthread_attr_getinheritsched(const pthread_attr_t *__restrict, int *__restrict);
-int pthread_attr_setinheritsched(pthread_attr_t *, int);
+int pthread_attr_getguardsize(const pthread_attr_t* __restrict,
+                              size_t* __restrict);
+int pthread_attr_setguardsize(pthread_attr_t*, size_t);
+int pthread_attr_getstacksize(const pthread_attr_t* __restrict,
+                              size_t* __restrict);
+int pthread_attr_setstacksize(pthread_attr_t*, size_t);
+int pthread_attr_getdetachstate(const pthread_attr_t*, int*);
+int pthread_attr_setdetachstate(pthread_attr_t*, int);
+int pthread_attr_getstack(const pthread_attr_t* __restrict,
+                          void** __restrict,
+                          size_t* __restrict);
+int pthread_attr_setstack(pthread_attr_t*, void*, size_t);
+int pthread_attr_getscope(const pthread_attr_t* __restrict, int* __restrict);
+int pthread_attr_setscope(pthread_attr_t*, int);
+int pthread_attr_getschedpolicy(const pthread_attr_t* __restrict,
+                                int* __restrict);
+int pthread_attr_setschedpolicy(pthread_attr_t*, int);
+int pthread_attr_getschedparam(const pthread_attr_t* __restrict,
+                               struct sched_param* __restrict);
+int pthread_attr_setschedparam(pthread_attr_t* __restrict,
+                               const struct sched_param* __restrict);
+int pthread_attr_getinheritsched(const pthread_attr_t* __restrict,
+                                 int* __restrict);
+int pthread_attr_setinheritsched(pthread_attr_t*, int);
 
-int pthread_mutexattr_destroy(pthread_mutexattr_t *);
-int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t *__restrict, int *__restrict);
-int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *__restrict, int *__restrict);
-int pthread_mutexattr_getpshared(const pthread_mutexattr_t *__restrict, int *__restrict);
-int pthread_mutexattr_getrobust(const pthread_mutexattr_t *__restrict, int *__restrict);
-int pthread_mutexattr_gettype(const pthread_mutexattr_t *__restrict, int *__restrict);
-int pthread_mutexattr_init(pthread_mutexattr_t *);
-int pthread_mutexattr_setprioceiling(pthread_mutexattr_t *, int);
-int pthread_mutexattr_setprotocol(pthread_mutexattr_t *, int);
-int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int);
-int pthread_mutexattr_setrobust(pthread_mutexattr_t *, int);
-int pthread_mutexattr_settype(pthread_mutexattr_t *, int);
+int pthread_mutexattr_destroy(pthread_mutexattr_t*);
+int pthread_mutexattr_getprioceiling(const pthread_mutexattr_t* __restrict,
+                                     int* __restrict);
+int pthread_mutexattr_getprotocol(const pthread_mutexattr_t* __restrict,
+                                  int* __restrict);
+int pthread_mutexattr_getpshared(const pthread_mutexattr_t* __restrict,
+                                 int* __restrict);
+int pthread_mutexattr_getrobust(const pthread_mutexattr_t* __restrict,
+                                int* __restrict);
+int pthread_mutexattr_gettype(const pthread_mutexattr_t* __restrict,
+                              int* __restrict);
+int pthread_mutexattr_init(pthread_mutexattr_t*);
+int pthread_mutexattr_setprioceiling(pthread_mutexattr_t*, int);
+int pthread_mutexattr_setprotocol(pthread_mutexattr_t*, int);
+int pthread_mutexattr_setpshared(pthread_mutexattr_t*, int);
+int pthread_mutexattr_setrobust(pthread_mutexattr_t*, int);
+int pthread_mutexattr_settype(pthread_mutexattr_t*, int);
 
-int pthread_condattr_init(pthread_condattr_t *);
-int pthread_condattr_destroy(pthread_condattr_t *);
-int pthread_condattr_setclock(pthread_condattr_t *, clockid_t);
-int pthread_condattr_setpshared(pthread_condattr_t *, int);
-int pthread_condattr_getclock(const pthread_condattr_t *__restrict, clockid_t *__restrict);
-int pthread_condattr_getpshared(const pthread_condattr_t *__restrict, int *__restrict);
+int pthread_condattr_init(pthread_condattr_t*);
+int pthread_condattr_destroy(pthread_condattr_t*);
+int pthread_condattr_setclock(pthread_condattr_t*, clockid_t);
+int pthread_condattr_setpshared(pthread_condattr_t*, int);
+int pthread_condattr_getclock(const pthread_condattr_t* __restrict,
+                              clockid_t* __restrict);
+int pthread_condattr_getpshared(const pthread_condattr_t* __restrict,
+                                int* __restrict);
 
-int pthread_rwlockattr_init(pthread_rwlockattr_t *);
-int pthread_rwlockattr_destroy(pthread_rwlockattr_t *);
-int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int);
-int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *__restrict, int *__restrict);
+int pthread_rwlockattr_init(pthread_rwlockattr_t*);
+int pthread_rwlockattr_destroy(pthread_rwlockattr_t*);
+int pthread_rwlockattr_setpshared(pthread_rwlockattr_t*, int);
+int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t* __restrict,
+                                  int* __restrict);
 
-int pthread_barrierattr_destroy(pthread_barrierattr_t *);
-int pthread_barrierattr_getpshared(const pthread_barrierattr_t *__restrict, int *__restrict);
-int pthread_barrierattr_init(pthread_barrierattr_t *);
-int pthread_barrierattr_setpshared(pthread_barrierattr_t *, int);
+int pthread_barrierattr_destroy(pthread_barrierattr_t*);
+int pthread_barrierattr_getpshared(const pthread_barrierattr_t* __restrict,
+                                   int* __restrict);
+int pthread_barrierattr_init(pthread_barrierattr_t*);
+int pthread_barrierattr_setpshared(pthread_barrierattr_t*, int);
 
 int pthread_atfork(void (*)(void), void (*)(void), void (*)(void));
 
 int pthread_getconcurrency(void);
 int pthread_setconcurrency(int);
 
-int pthread_getcpuclockid(pthread_t, clockid_t *);
+int pthread_getcpuclockid(pthread_t, clockid_t*);
 
 struct __ptcb {
-	void (*__f)(void *);
-	void *__x;
-	struct __ptcb *__next;
+  void (*__f)(void*);
+  void* __x;
+  struct __ptcb* __next;
 };
 
-void _pthread_cleanup_push(struct __ptcb *, void (*)(void *), void *);
-void _pthread_cleanup_pop(struct __ptcb *, int);
+void _pthread_cleanup_push(struct __ptcb*, void (*)(void*), void*);
+void _pthread_cleanup_pop(struct __ptcb*, int);
 
-#define pthread_cleanup_push(f, x) do { struct __ptcb __cb; _pthread_cleanup_push(&__cb, f, x);
-#define pthread_cleanup_pop(r) _pthread_cleanup_pop(&__cb, (r)); } while(0)
+#define pthread_cleanup_push(f, x) \
+  do {                             \
+    struct __ptcb __cb;            \
+    _pthread_cleanup_push(&__cb, f, x);
+#define pthread_cleanup_pop(r)      \
+  _pthread_cleanup_pop(&__cb, (r)); \
+  }                                 \
+  while (0)
 
 #ifdef _GNU_SOURCE
 struct cpu_set_t;
-int pthread_getaffinity_np(pthread_t, size_t, struct cpu_set_t *);
-int pthread_setaffinity_np(pthread_t, size_t, const struct cpu_set_t *);
-int pthread_getattr_np(pthread_t, pthread_attr_t *);
+int pthread_getaffinity_np(pthread_t, size_t, struct cpu_set_t*);
+int pthread_setaffinity_np(pthread_t, size_t, const struct cpu_set_t*);
+int pthread_getattr_np(pthread_t, pthread_attr_t*);
 #endif
 
 #ifdef __cplusplus
diff --git a/fusl/include/pty.h b/fusl/include/pty.h
index db63853..1937094 100644
--- a/fusl/include/pty.h
+++ b/fusl/include/pty.h
@@ -1,5 +1,5 @@
-#ifndef	_PTY_H
-#define	_PTY_H
+#ifndef _PTY_H
+#define _PTY_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -8,8 +8,8 @@
 #include <termios.h>
 #include <sys/ioctl.h>
 
-int openpty(int *, int *, char *, const struct termios *, const struct winsize *);
-int forkpty(int *, char *, const struct termios *, const struct winsize *);
+int openpty(int*, int*, char*, const struct termios*, const struct winsize*);
+int forkpty(int*, char*, const struct termios*, const struct winsize*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/pwd.h b/fusl/include/pwd.h
index 55d9d42..66483bb 100644
--- a/fusl/include/pwd.h
+++ b/fusl/include/pwd.h
@@ -17,29 +17,28 @@
 
 #include <bits/alltypes.h>
 
-struct passwd
-{
-	char *pw_name;
-	char *pw_passwd;
-	uid_t pw_uid;
-	gid_t pw_gid;
-	char *pw_gecos;
-	char *pw_dir;
-	char *pw_shell;
+struct passwd {
+  char* pw_name;
+  char* pw_passwd;
+  uid_t pw_uid;
+  gid_t pw_gid;
+  char* pw_gecos;
+  char* pw_dir;
+  char* pw_shell;
 };
 
-void setpwent (void);
-void endpwent (void);
-struct passwd *getpwent (void);
+void setpwent(void);
+void endpwent(void);
+struct passwd* getpwent(void);
 
-struct passwd *getpwuid (uid_t);
-struct passwd *getpwnam (const char *);
-int getpwuid_r (uid_t, struct passwd *, char *, size_t, struct passwd **);
-int getpwnam_r (const char *, struct passwd *, char *, size_t, struct passwd **);
+struct passwd* getpwuid(uid_t);
+struct passwd* getpwnam(const char*);
+int getpwuid_r(uid_t, struct passwd*, char*, size_t, struct passwd**);
+int getpwnam_r(const char*, struct passwd*, char*, size_t, struct passwd**);
 
 #ifdef _GNU_SOURCE
-struct passwd *fgetpwent(FILE *);
-int putpwent(const struct passwd *, FILE *);
+struct passwd* fgetpwent(FILE*);
+int putpwent(const struct passwd*, FILE*);
 #endif
 
 #ifdef __cplusplus
diff --git a/fusl/include/regex.h b/fusl/include/regex.h
index dce2177..826c868 100644
--- a/fusl/include/regex.h
+++ b/fusl/include/regex.h
@@ -13,47 +13,51 @@
 #include <bits/alltypes.h>
 
 typedef struct re_pattern_buffer {
-	size_t re_nsub;
-	void *__opaque, *__padding[4];
-	size_t __nsub2;
-	char __padding2;
+  size_t re_nsub;
+  void *__opaque, *__padding[4];
+  size_t __nsub2;
+  char __padding2;
 } regex_t;
 
 typedef struct {
-	regoff_t rm_so;
-	regoff_t rm_eo;
+  regoff_t rm_so;
+  regoff_t rm_eo;
 } regmatch_t;
 
-#define REG_EXTENDED    1
-#define REG_ICASE       2
-#define REG_NEWLINE     4
-#define REG_NOSUB       8
+#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_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_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
+#define REG_ENOSYS -1
 
-int regcomp(regex_t *__restrict, const char *__restrict, int);
-int regexec(const regex_t *__restrict, const char *__restrict, size_t, regmatch_t *__restrict, int);
-void regfree(regex_t *);
+int regcomp(regex_t* __restrict, const char* __restrict, int);
+int regexec(const regex_t* __restrict,
+            const char* __restrict,
+            size_t,
+            regmatch_t* __restrict,
+            int);
+void regfree(regex_t*);
 
-size_t regerror(int, const regex_t *__restrict, char *__restrict, size_t);
+size_t regerror(int, const regex_t* __restrict, char* __restrict, size_t);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/resolv.h b/fusl/include/resolv.h
index e12cb3c..9ee954e 100644
--- a/fusl/include/resolv.h
+++ b/fusl/include/resolv.h
@@ -9,131 +9,143 @@
 extern "C" {
 #endif
 
-#define MAXNS			3
-#define MAXDFLSRCH		3
-#define MAXDNSRCH		6
-#define LOCALDOMAINPARTS	2
+#define MAXNS 3
+#define MAXDFLSRCH 3
+#define MAXDNSRCH 6
+#define LOCALDOMAINPARTS 2
 
-#define RES_TIMEOUT		5
-#define MAXRESOLVSORT		10
-#define RES_MAXNDOTS		15
-#define RES_MAXRETRANS		30
-#define RES_MAXRETRY		5
-#define RES_DFLRETRY		2
-#define RES_MAXTIME		65535
+#define RES_TIMEOUT 5
+#define MAXRESOLVSORT 10
+#define RES_MAXNDOTS 15
+#define RES_MAXRETRANS 30
+#define RES_MAXRETRY 5
+#define RES_DFLRETRY 2
+#define RES_MAXTIME 65535
 
 /* unused; purely for broken apps */
 typedef struct __res_state {
-	int retrans;
-	int retry;
-	unsigned long options;
-	int nscount;
-	struct sockaddr_in nsaddr_list[MAXNS];
-# define nsaddr	nsaddr_list[0]
-	unsigned short id;
-	char *dnsrch[MAXDNSRCH+1];
-	char defdname[256];
-	unsigned long pfcode;
-	unsigned ndots:4;
-	unsigned nsort:4;
-	unsigned ipv6_unavail:1;
-	unsigned unused:23;
-	struct {
-		struct in_addr addr;
-		uint32_t mask;
-	} sort_list[MAXRESOLVSORT];
-	void *qhook;
-	void *rhook;
-	int res_h_errno;
-	int _vcsock;
-	unsigned _flags;
-	union {
-		char pad[52];
-		struct {
-			uint16_t		nscount;
-			uint16_t		nsmap[MAXNS];
-			int			nssocks[MAXNS];
-			uint16_t		nscount6;
-			uint16_t		nsinit;
-			struct sockaddr_in6	*nsaddrs[MAXNS];
-			unsigned int		_initstamp[2];
-		} _ext;
-	} _u;
-} *res_state;
+  int retrans;
+  int retry;
+  unsigned long options;
+  int nscount;
+  struct sockaddr_in nsaddr_list[MAXNS];
+#define nsaddr nsaddr_list[0]
+  unsigned short id;
+  char* dnsrch[MAXDNSRCH + 1];
+  char defdname[256];
+  unsigned long pfcode;
+  unsigned ndots : 4;
+  unsigned nsort : 4;
+  unsigned ipv6_unavail : 1;
+  unsigned unused : 23;
+  struct {
+    struct in_addr addr;
+    uint32_t mask;
+  } sort_list[MAXRESOLVSORT];
+  void* qhook;
+  void* rhook;
+  int res_h_errno;
+  int _vcsock;
+  unsigned _flags;
+  union {
+    char pad[52];
+    struct {
+      uint16_t nscount;
+      uint16_t nsmap[MAXNS];
+      int nssocks[MAXNS];
+      uint16_t nscount6;
+      uint16_t nsinit;
+      struct sockaddr_in6* nsaddrs[MAXNS];
+      unsigned int _initstamp[2];
+    } _ext;
+  } _u;
+} * res_state;
 
-#define	__RES	19991006
+#define __RES 19991006
 
 #ifndef _PATH_RESCONF
-#define _PATH_RESCONF        "/etc/resolv.conf"
+#define _PATH_RESCONF "/etc/resolv.conf"
 #endif
 
 struct res_sym {
-	int number;
-	char *name;
-	char *humanname;
+  int number;
+  char* name;
+  char* humanname;
 };
 
-#define	RES_F_VC	0x00000001
-#define	RES_F_CONN	0x00000002
-#define RES_F_EDNS0ERR	0x00000004
+#define RES_F_VC 0x00000001
+#define RES_F_CONN 0x00000002
+#define RES_F_EDNS0ERR 0x00000004
 
-#define	RES_EXHAUSTIVE	0x00000001
+#define RES_EXHAUSTIVE 0x00000001
 
-#define RES_INIT	0x00000001
-#define RES_DEBUG	0x00000002
-#define RES_AAONLY	0x00000004
-#define RES_USEVC	0x00000008
-#define RES_PRIMARY	0x00000010
-#define RES_IGNTC	0x00000020
-#define RES_RECURSE	0x00000040
-#define RES_DEFNAMES	0x00000080
-#define RES_STAYOPEN	0x00000100
-#define RES_DNSRCH	0x00000200
-#define	RES_INSECURE1	0x00000400
-#define	RES_INSECURE2	0x00000800
-#define	RES_NOALIASES	0x00001000
-#define	RES_USE_INET6	0x00002000
-#define RES_ROTATE	0x00004000
-#define	RES_NOCHECKNAME	0x00008000
-#define	RES_KEEPTSIG	0x00010000
-#define	RES_BLAST	0x00020000
-#define RES_USEBSTRING	0x00040000
-#define RES_NOIP6DOTINT	0x00080000
-#define RES_USE_EDNS0	0x00100000
-#define RES_SNGLKUP	0x00200000
-#define RES_SNGLKUPREOP	0x00400000
-#define RES_USE_DNSSEC	0x00800000
+#define RES_INIT 0x00000001
+#define RES_DEBUG 0x00000002
+#define RES_AAONLY 0x00000004
+#define RES_USEVC 0x00000008
+#define RES_PRIMARY 0x00000010
+#define RES_IGNTC 0x00000020
+#define RES_RECURSE 0x00000040
+#define RES_DEFNAMES 0x00000080
+#define RES_STAYOPEN 0x00000100
+#define RES_DNSRCH 0x00000200
+#define RES_INSECURE1 0x00000400
+#define RES_INSECURE2 0x00000800
+#define RES_NOALIASES 0x00001000
+#define RES_USE_INET6 0x00002000
+#define RES_ROTATE 0x00004000
+#define RES_NOCHECKNAME 0x00008000
+#define RES_KEEPTSIG 0x00010000
+#define RES_BLAST 0x00020000
+#define RES_USEBSTRING 0x00040000
+#define RES_NOIP6DOTINT 0x00080000
+#define RES_USE_EDNS0 0x00100000
+#define RES_SNGLKUP 0x00200000
+#define RES_SNGLKUPREOP 0x00400000
+#define RES_USE_DNSSEC 0x00800000
 
-#define RES_DEFAULT	(RES_RECURSE|RES_DEFNAMES|RES_DNSRCH|RES_NOIP6DOTINT)
+#define RES_DEFAULT (RES_RECURSE | RES_DEFNAMES | RES_DNSRCH | RES_NOIP6DOTINT)
 
-#define RES_PRF_STATS	0x00000001
-#define RES_PRF_UPDATE	0x00000002
-#define RES_PRF_CLASS   0x00000004
-#define RES_PRF_CMD	0x00000008
-#define RES_PRF_QUES	0x00000010
-#define RES_PRF_ANS	0x00000020
-#define RES_PRF_AUTH	0x00000040
-#define RES_PRF_ADD	0x00000080
-#define RES_PRF_HEAD1	0x00000100
-#define RES_PRF_HEAD2	0x00000200
-#define RES_PRF_TTLID	0x00000400
-#define RES_PRF_HEADX	0x00000800
-#define RES_PRF_QUERY	0x00001000
-#define RES_PRF_REPLY	0x00002000
-#define RES_PRF_INIT	0x00004000
+#define RES_PRF_STATS 0x00000001
+#define RES_PRF_UPDATE 0x00000002
+#define RES_PRF_CLASS 0x00000004
+#define RES_PRF_CMD 0x00000008
+#define RES_PRF_QUES 0x00000010
+#define RES_PRF_ANS 0x00000020
+#define RES_PRF_AUTH 0x00000040
+#define RES_PRF_ADD 0x00000080
+#define RES_PRF_HEAD1 0x00000100
+#define RES_PRF_HEAD2 0x00000200
+#define RES_PRF_TTLID 0x00000400
+#define RES_PRF_HEADX 0x00000800
+#define RES_PRF_QUERY 0x00001000
+#define RES_PRF_REPLY 0x00002000
+#define RES_PRF_INIT 0x00004000
 
-struct __res_state *__res_state(void);
+struct __res_state* __res_state(void);
 #define _res (*__res_state())
 
 int res_init(void);
-int res_query(const char *, int, int, unsigned char *, int);
-int res_querydomain(const char *, const char *, int, int, unsigned char *, int);
-int res_search(const char *, int, int, unsigned char *, int);
-int res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int);
-int res_send(const unsigned char *, int, unsigned char *, int);
-int dn_comp(const char *, unsigned char *, int, unsigned char **, unsigned char **);
-int dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int);
-int dn_skipname(const unsigned char *, const unsigned char *);
+int res_query(const char*, int, int, unsigned char*, int);
+int res_querydomain(const char*, const char*, int, int, unsigned char*, int);
+int res_search(const char*, int, int, unsigned char*, int);
+int res_mkquery(int,
+                const char*,
+                int,
+                int,
+                const unsigned char*,
+                int,
+                const unsigned char*,
+                unsigned char*,
+                int);
+int res_send(const unsigned char*, int, unsigned char*, int);
+int dn_comp(const char*, unsigned char*, int, unsigned char**, unsigned char**);
+int dn_expand(const unsigned char*,
+              const unsigned char*,
+              const unsigned char*,
+              char*,
+              int);
+int dn_skipname(const unsigned char*, const unsigned char*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sched.h b/fusl/include/sched.h
index 3e34a72..d85254e 100644
--- a/fusl/include/sched.h
+++ b/fusl/include/sched.h
@@ -17,21 +17,21 @@
 #include <bits/alltypes.h>
 
 struct sched_param {
-	int sched_priority;
-	int sched_ss_low_priority;
-	struct timespec sched_ss_repl_period;
-	struct timespec sched_ss_init_budget;
-	int sched_ss_max_repl;
+  int sched_priority;
+  int sched_ss_low_priority;
+  struct timespec sched_ss_repl_period;
+  struct timespec sched_ss_init_budget;
+  int sched_ss_max_repl;
 };
 
-int    sched_get_priority_max(int);
-int    sched_get_priority_min(int);
-int    sched_getparam(pid_t, struct sched_param *);
-int    sched_getscheduler(pid_t);
-int    sched_rr_get_interval(pid_t, struct timespec *);
-int    sched_setparam(pid_t, const struct sched_param *);
-int    sched_setscheduler(pid_t, int, const struct sched_param *);
-int     sched_yield(void);
+int sched_get_priority_max(int);
+int sched_get_priority_min(int);
+int sched_getparam(pid_t, struct sched_param*);
+int sched_getscheduler(pid_t);
+int sched_rr_get_interval(pid_t, struct timespec*);
+int sched_setparam(pid_t, const struct sched_param*);
+int sched_setscheduler(pid_t, int, const struct sched_param*);
+int sched_yield(void);
 
 #define SCHED_OTHER 0
 #define SCHED_FIFO 1
@@ -42,88 +42,90 @@
 #define SCHED_RESET_ON_FORK 0x40000000
 
 #ifdef _GNU_SOURCE
-#define CSIGNAL		0x000000ff
-#define CLONE_VM	0x00000100
-#define CLONE_FS	0x00000200
-#define CLONE_FILES	0x00000400
-#define CLONE_SIGHAND	0x00000800
-#define CLONE_PTRACE	0x00002000
-#define CLONE_VFORK	0x00004000
-#define CLONE_PARENT	0x00008000
-#define CLONE_THREAD	0x00010000
-#define CLONE_NEWNS	0x00020000
-#define CLONE_SYSVSEM	0x00040000
-#define CLONE_SETTLS	0x00080000
-#define CLONE_PARENT_SETTID	0x00100000
-#define CLONE_CHILD_CLEARTID	0x00200000
-#define CLONE_DETACHED	0x00400000
-#define CLONE_UNTRACED	0x00800000
-#define CLONE_CHILD_SETTID	0x01000000
-#define CLONE_NEWUTS	0x04000000
-#define CLONE_NEWIPC	0x08000000
-#define CLONE_NEWUSER	0x10000000
-#define CLONE_NEWPID	0x20000000
-#define CLONE_NEWNET	0x40000000
-#define CLONE_IO	0x80000000
-int clone (int (*)(void *), void *, int, void *, ...);
+#define CSIGNAL 0x000000ff
+#define CLONE_VM 0x00000100
+#define CLONE_FS 0x00000200
+#define CLONE_FILES 0x00000400
+#define CLONE_SIGHAND 0x00000800
+#define CLONE_PTRACE 0x00002000
+#define CLONE_VFORK 0x00004000
+#define CLONE_PARENT 0x00008000
+#define CLONE_THREAD 0x00010000
+#define CLONE_NEWNS 0x00020000
+#define CLONE_SYSVSEM 0x00040000
+#define CLONE_SETTLS 0x00080000
+#define CLONE_PARENT_SETTID 0x00100000
+#define CLONE_CHILD_CLEARTID 0x00200000
+#define CLONE_DETACHED 0x00400000
+#define CLONE_UNTRACED 0x00800000
+#define CLONE_CHILD_SETTID 0x01000000
+#define CLONE_NEWUTS 0x04000000
+#define CLONE_NEWIPC 0x08000000
+#define CLONE_NEWUSER 0x10000000
+#define CLONE_NEWPID 0x20000000
+#define CLONE_NEWNET 0x40000000
+#define CLONE_IO 0x80000000
+int clone(int (*)(void*), void*, int, void*, ...);
 int unshare(int);
 int setns(int, int);
 
-void *memcpy(void *__restrict, const void *__restrict, size_t);
-int memcmp(const void *, const void *, size_t);
-void *calloc(size_t, size_t);
-void free(void *);
+void* memcpy(void* __restrict, const void* __restrict, size_t);
+int memcmp(const void*, const void*, size_t);
+void* calloc(size_t, size_t);
+void free(void*);
 
-typedef struct cpu_set_t { unsigned long __bits[128/sizeof(long)]; } cpu_set_t;
-int __sched_cpucount(size_t, const cpu_set_t *);
-int sched_getaffinity(pid_t, size_t, cpu_set_t *);
-int sched_setaffinity(pid_t, size_t, const cpu_set_t *);
+typedef struct cpu_set_t {
+  unsigned long __bits[128 / sizeof(long)];
+} cpu_set_t;
+int __sched_cpucount(size_t, const cpu_set_t*);
+int sched_getaffinity(pid_t, size_t, cpu_set_t*);
+int sched_setaffinity(pid_t, size_t, const cpu_set_t*);
 
-#define __CPU_op_S(i, size, set, op) ( (i)/8U >= (size) ? 0 : \
-	((set)->__bits[(i)/8/sizeof(long)] op (1UL<<((i)%(8*sizeof(long))))) )
+#define __CPU_op_S(i, size, set, op)                                   \
+  ((i) / 8U >= (size) ? 0 : ((set)->__bits[(i) / 8 / sizeof(long)] op( \
+                                1UL << ((i) % (8 * sizeof(long))))))
 
 #define CPU_SET_S(i, size, set) __CPU_op_S(i, size, set, |=)
-#define CPU_CLR_S(i, size, set) __CPU_op_S(i, size, set, &=~)
+#define CPU_CLR_S(i, size, set) __CPU_op_S(i, size, set, &= ~)
 #define CPU_ISSET_S(i, size, set) __CPU_op_S(i, size, set, &)
 
-#define __CPU_op_func_S(func, op) \
-static __inline void __CPU_##func##_S(size_t __size, cpu_set_t *__dest, \
-	const cpu_set_t *__src1, const cpu_set_t *__src2) \
-{ \
-	size_t __i; \
-	for (__i=0; __i<__size/sizeof(long); __i++) \
-		__dest->__bits[__i] = __src1->__bits[__i] \
-			op __src2->__bits[__i] ; \
-}
+#define __CPU_op_func_S(func, op)                                         \
+  static __inline void __CPU_##func##_S(size_t __size, cpu_set_t* __dest, \
+                                        const cpu_set_t* __src1,          \
+                                        const cpu_set_t* __src2) {        \
+    size_t __i;                                                           \
+    for (__i = 0; __i < __size / sizeof(long); __i++)                     \
+      __dest->__bits[__i] = __src1->__bits[__i] op __src2->__bits[__i];   \
+  }
 
-__CPU_op_func_S(AND, &)
-__CPU_op_func_S(OR, |)
-__CPU_op_func_S(XOR, ^)
+__CPU_op_func_S(AND, &) __CPU_op_func_S(OR, |) __CPU_op_func_S(XOR, ^)
 
-#define CPU_AND_S(a,b,c,d) __CPU_AND_S(a,b,c,d)
-#define CPU_OR_S(a,b,c,d) __CPU_OR_S(a,b,c,d)
-#define CPU_XOR_S(a,b,c,d) __CPU_XOR_S(a,b,c,d)
+#define CPU_AND_S(a, b, c, d) __CPU_AND_S(a, b, c, d)
+#define CPU_OR_S(a, b, c, d) __CPU_OR_S(a, b, c, d)
+#define CPU_XOR_S(a, b, c, d) __CPU_XOR_S(a, b, c, d)
 
-#define CPU_COUNT_S(size,set) __sched_cpucount(size,set)
-#define CPU_ZERO_S(size,set) memset(set,0,size)
-#define CPU_EQUAL_S(size,set1,set2) (!memcmp(set1,set2,size))
+#define CPU_COUNT_S(size, set) __sched_cpucount(size, set)
+#define CPU_ZERO_S(size, set) memset(set, 0, size)
+#define CPU_EQUAL_S(size, set1, set2) (!memcmp(set1, set2, size))
 
-#define CPU_ALLOC_SIZE(n) (sizeof(long) * ( (n)/(8*sizeof(long)) \
-	+ ((n)%(8*sizeof(long)) + 8*sizeof(long)-1)/(8*sizeof(long)) ) )
-#define CPU_ALLOC(n) ((cpu_set_t *)calloc(1,CPU_ALLOC_SIZE(n)))
+#define CPU_ALLOC_SIZE(n)      \
+  (sizeof(long) *              \
+   ((n) / (8 * sizeof(long)) + \
+    ((n) % (8 * sizeof(long)) + 8 * sizeof(long) - 1) / (8 * sizeof(long))))
+#define CPU_ALLOC(n) ((cpu_set_t*)calloc(1, CPU_ALLOC_SIZE(n)))
 #define CPU_FREE(set) free(set)
 
 #define CPU_SETSIZE 128
 
-#define CPU_SET(i, set) CPU_SET_S(i,sizeof(cpu_set_t),set)
-#define CPU_CLR(i, set) CPU_CLR_S(i,sizeof(cpu_set_t),set)
-#define CPU_ISSET(i, set) CPU_ISSET_S(i,sizeof(cpu_set_t),set)
-#define CPU_AND(d,s1,s2) CPU_AND_S(sizeof(cpu_set_t),d,s1,s2)
-#define CPU_OR(d,s1,s2) CPU_OR_S(sizeof(cpu_set_t),d,s1,s2)
-#define CPU_XOR(d,s1,s2) CPU_XOR_S(sizeof(cpu_set_t),d,s1,s2)
-#define CPU_COUNT(set) CPU_COUNT_S(sizeof(cpu_set_t),set)
-#define CPU_ZERO(set) CPU_ZERO_S(sizeof(cpu_set_t),set)
-#define CPU_EQUAL(s1,s2) CPU_EQUAL_S(sizeof(cpu_set_t),s1,s2)
+#define CPU_SET(i, set) CPU_SET_S(i, sizeof(cpu_set_t), set)
+#define CPU_CLR(i, set) CPU_CLR_S(i, sizeof(cpu_set_t), set)
+#define CPU_ISSET(i, set) CPU_ISSET_S(i, sizeof(cpu_set_t), set)
+#define CPU_AND(d, s1, s2) CPU_AND_S(sizeof(cpu_set_t), d, s1, s2)
+#define CPU_OR(d, s1, s2) CPU_OR_S(sizeof(cpu_set_t), d, s1, s2)
+#define CPU_XOR(d, s1, s2) CPU_XOR_S(sizeof(cpu_set_t), d, s1, s2)
+#define CPU_COUNT(set) CPU_COUNT_S(sizeof(cpu_set_t), set)
+#define CPU_ZERO(set) CPU_ZERO_S(sizeof(cpu_set_t), set)
+#define CPU_EQUAL(s1, s2) CPU_EQUAL_S(sizeof(cpu_set_t), s1, s2)
 
 #endif
 
diff --git a/fusl/include/scsi/scsi.h b/fusl/include/scsi/scsi.h
index 8837f58..2f586cf 100644
--- a/fusl/include/scsi/scsi.h
+++ b/fusl/include/scsi/scsi.h
@@ -132,19 +132,18 @@
 #define SCSI_IOCTL_GET_BUS_NUMBER 0x5386
 
 struct ccs_modesel_head {
-	unsigned char _r1;
-	unsigned char medium;
-	unsigned char _r2;
-	unsigned char block_desc_length;
-	unsigned char density;
-	unsigned char number_blocks_hi;
-	unsigned char number_blocks_med;
-	unsigned char number_blocks_lo;
-	unsigned char _r3;
-	unsigned char block_length_hi;
-	unsigned char block_length_med;
-	unsigned char block_length_lo;
+  unsigned char _r1;
+  unsigned char medium;
+  unsigned char _r2;
+  unsigned char block_desc_length;
+  unsigned char density;
+  unsigned char number_blocks_hi;
+  unsigned char number_blocks_med;
+  unsigned char number_blocks_lo;
+  unsigned char _r3;
+  unsigned char block_length_hi;
+  unsigned char block_length_med;
+  unsigned char block_length_lo;
 };
 
 #endif
-
diff --git a/fusl/include/scsi/sg.h b/fusl/include/scsi/sg.h
index a7ac247..f17097d 100644
--- a/fusl/include/scsi/sg.h
+++ b/fusl/include/scsi/sg.h
@@ -52,60 +52,60 @@
 #define SG_SET_COMMAND_Q 0x2271
 #define SG_SET_DEBUG 0x227e
 #define SG_NEXT_CMD_LEN 0x2283
-#define SG_DEFAULT_TIMEOUT (60*100) /* 60*HZ */
+#define SG_DEFAULT_TIMEOUT (60 * 100) /* 60*HZ */
 #define SG_DEF_COMMAND_Q 0
 #define SG_DEF_UNDERRUN_FLAG 0
 
 typedef struct sg_iovec {
-	void *iov_base;
-	unsigned long iov_len;
+  void* iov_base;
+  unsigned long iov_len;
 } sg_iovec_t;
 
-typedef struct sg_io_hdr { 
-	int interface_id; 
-	int dxfer_direction; 
-	unsigned char cmd_len;
-	unsigned char mx_sb_len;
-	unsigned short iovec_count;
-	unsigned dxfer_len;
-	void *dxferp;
-	unsigned char *cmdp;
-	unsigned char *sbp;
-	unsigned timeout;
-	unsigned flags;
-	int pack_id;
-	void *usr_ptr;
-	unsigned char status;
-	unsigned char masked_status;
-	unsigned char msg_status;
-	unsigned char sb_len_wr;
-	unsigned short host_status;
-	unsigned short driver_status;
-	int resid; 
-	unsigned int duration;
-	unsigned int info;
+typedef struct sg_io_hdr {
+  int interface_id;
+  int dxfer_direction;
+  unsigned char cmd_len;
+  unsigned char mx_sb_len;
+  unsigned short iovec_count;
+  unsigned dxfer_len;
+  void* dxferp;
+  unsigned char* cmdp;
+  unsigned char* sbp;
+  unsigned timeout;
+  unsigned flags;
+  int pack_id;
+  void* usr_ptr;
+  unsigned char status;
+  unsigned char masked_status;
+  unsigned char msg_status;
+  unsigned char sb_len_wr;
+  unsigned short host_status;
+  unsigned short driver_status;
+  int resid;
+  unsigned int duration;
+  unsigned int info;
 } sg_io_hdr_t;
 
 struct sg_scsi_id {
-	int host_no;
-	int channel;
-	int scsi_id;
-	int lun;
-	int scsi_type;
-	short h_cmd_per_lun;
-	short d_queue_depth;
-	int unused[2];
+  int host_no;
+  int channel;
+  int scsi_id;
+  int lun;
+  int scsi_type;
+  short h_cmd_per_lun;
+  short d_queue_depth;
+  int unused[2];
 };
 
 typedef struct sg_req_info {
-	char req_state;
-	char orphan;
-	char sg_io_owned;
-	char problem;
-	int pack_id;
-	void *usr_ptr;
-	unsigned duration; 
-	int unused; 
+  char req_state;
+  char orphan;
+  char sg_io_owned;
+  char problem;
+  int pack_id;
+  void* usr_ptr;
+  unsigned duration;
+  int unused;
 } sg_req_info_t;
 
 typedef struct sg_io_hdr Sg_io_hdr;
@@ -114,16 +114,16 @@
 typedef struct sg_req_info Sg_req_info;
 
 struct sg_header {
-	int pack_len;
-	int reply_len;
-	int pack_id;
-	int result;
-	unsigned twelve_byte:1;
-	unsigned target_status:5;
-	unsigned host_status:8;
-	unsigned driver_status:8;
-	unsigned other_flags:10;
-	unsigned char sense_buffer[SG_MAX_SENSE];
+  int pack_len;
+  int reply_len;
+  int pack_id;
+  int result;
+  unsigned twelve_byte : 1;
+  unsigned target_status : 5;
+  unsigned host_status : 8;
+  unsigned driver_status : 8;
+  unsigned other_flags : 10;
+  unsigned char sense_buffer[SG_MAX_SENSE];
 };
 
 #endif
diff --git a/fusl/include/search.h b/fusl/include/search.h
index 02e407e..4f3d35f 100644
--- a/fusl/include/search.h
+++ b/fusl/include/search.h
@@ -14,46 +14,54 @@
 typedef enum { preorder, postorder, endorder, leaf } VISIT;
 
 typedef struct entry {
-	char *key;
-	void *data;
+  char* key;
+  void* data;
 } ENTRY;
 
 int hcreate(size_t);
 void hdestroy(void);
-ENTRY *hsearch(ENTRY, ACTION);
+ENTRY* hsearch(ENTRY, ACTION);
 
 #ifdef _GNU_SOURCE
 struct hsearch_data {
-	struct __tab *__tab;
-	unsigned int __unused1;
-	unsigned int __unused2;
+  struct __tab* __tab;
+  unsigned int __unused1;
+  unsigned int __unused2;
 };
 
-int hcreate_r(size_t, struct hsearch_data *);
-void hdestroy_r(struct hsearch_data *);
-int hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *);
+int hcreate_r(size_t, struct hsearch_data*);
+void hdestroy_r(struct hsearch_data*);
+int hsearch_r(ENTRY, ACTION, ENTRY**, struct hsearch_data*);
 #endif
 
-void insque(void *, void *);
-void remque(void *);
+void insque(void*, void*);
+void remque(void*);
 
-void *lsearch(const void *, void *, size_t *, size_t,
-	int (*)(const void *, const void *));
-void *lfind(const void *, const void *, size_t *, size_t,
-	int (*)(const void *, const void *));
+void* lsearch(const void*,
+              void*,
+              size_t*,
+              size_t,
+              int (*)(const void*, const void*));
+void* lfind(const void*,
+            const void*,
+            size_t*,
+            size_t,
+            int (*)(const void*, const void*));
 
-void *tdelete(const void *__restrict, void **__restrict, int(*)(const void *, const void *));
-void *tfind(const void *, void *const *, int(*)(const void *, const void *));
-void *tsearch(const void *, void **, int (*)(const void *, const void *));
-void twalk(const void *, void (*)(const void *, VISIT, int));
+void* tdelete(const void* __restrict,
+              void** __restrict,
+              int (*)(const void*, const void*));
+void* tfind(const void*, void* const*, int (*)(const void*, const void*));
+void* tsearch(const void*, void**, int (*)(const void*, const void*));
+void twalk(const void*, void (*)(const void*, VISIT, int));
 
 #ifdef _GNU_SOURCE
 struct qelem {
-	struct qelem *q_forw, *q_back;
-	char q_data[1];
+  struct qelem *q_forw, *q_back;
+  char q_data[1];
 };
 
-void tdestroy(void *, void (*)(void *));
+void tdestroy(void*, void (*)(void*));
 #endif
 
 #ifdef __cplusplus
diff --git a/fusl/include/semaphore.h b/fusl/include/semaphore.h
index 277c47d..5f30e3f 100644
--- a/fusl/include/semaphore.h
+++ b/fusl/include/semaphore.h
@@ -12,22 +12,20 @@
 
 #include <fcntl.h>
 
-#define SEM_FAILED ((sem_t *)0)
+#define SEM_FAILED ((sem_t*)0)
 
-typedef struct {
-	volatile int __val[4*sizeof(long)/sizeof(int)];
-} sem_t;
+typedef struct { volatile int __val[4 * sizeof(long) / sizeof(int)]; } sem_t;
 
-int    sem_close(sem_t *);
-int    sem_destroy(sem_t *);
-int    sem_getvalue(sem_t *__restrict, int *__restrict);
-int    sem_init(sem_t *, int, unsigned);
-sem_t *sem_open(const char *, int, ...);
-int    sem_post(sem_t *);
-int    sem_timedwait(sem_t *__restrict, const struct timespec *__restrict);
-int    sem_trywait(sem_t *);
-int    sem_unlink(const char *);
-int    sem_wait(sem_t *);
+int sem_close(sem_t*);
+int sem_destroy(sem_t*);
+int sem_getvalue(sem_t* __restrict, int* __restrict);
+int sem_init(sem_t*, int, unsigned);
+sem_t* sem_open(const char*, int, ...);
+int sem_post(sem_t*);
+int sem_timedwait(sem_t* __restrict, const struct timespec* __restrict);
+int sem_trywait(sem_t*);
+int sem_unlink(const char*);
+int sem_wait(sem_t*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/setjmp.h b/fusl/include/setjmp.h
index 2d43abf..7720481 100644
--- a/fusl/include/setjmp.h
+++ b/fusl/include/setjmp.h
@@ -1,5 +1,5 @@
-#ifndef	_SETJMP_H
-#define	_SETJMP_H
+#ifndef _SETJMP_H
+#define _SETJMP_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -10,27 +10,25 @@
 #include <bits/setjmp.h>
 
 typedef struct __jmp_buf_tag {
-	__jmp_buf __jb;
-	unsigned long __fl;
-	unsigned long __ss[128/sizeof(long)];
+  __jmp_buf __jb;
+  unsigned long __fl;
+  unsigned long __ss[128 / sizeof(long)];
 } jmp_buf[1];
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 typedef jmp_buf sigjmp_buf;
-int sigsetjmp (sigjmp_buf, int);
-_Noreturn void siglongjmp (sigjmp_buf, int);
+int sigsetjmp(sigjmp_buf, int);
+_Noreturn void siglongjmp(sigjmp_buf, int);
 #endif
 
-#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
-int _setjmp (jmp_buf);
-_Noreturn void _longjmp (jmp_buf, int);
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int _setjmp(jmp_buf);
+_Noreturn void _longjmp(jmp_buf, int);
 #endif
 
-int setjmp (jmp_buf);
-_Noreturn void longjmp (jmp_buf, int);
+int setjmp(jmp_buf);
+_Noreturn void longjmp(jmp_buf, int);
 
 #define setjmp setjmp
 
diff --git a/fusl/include/shadow.h b/fusl/include/shadow.h
index 2b1be41..67bc706 100644
--- a/fusl/include/shadow.h
+++ b/fusl/include/shadow.h
@@ -5,34 +5,34 @@
 extern "C" {
 #endif
 
-#define	__NEED_FILE
+#define __NEED_FILE
 #define __NEED_size_t
 
 #include <bits/alltypes.h>
 
-#define	SHADOW "/etc/shadow"
+#define SHADOW "/etc/shadow"
 
 struct spwd {
-	char *sp_namp;
-	char *sp_pwdp;
-	long sp_lstchg;
-	long sp_min;
-	long sp_max;
-	long sp_warn;
-	long sp_inact;
-	long sp_expire;
-	unsigned long sp_flag;
+  char* sp_namp;
+  char* sp_pwdp;
+  long sp_lstchg;
+  long sp_min;
+  long sp_max;
+  long sp_warn;
+  long sp_inact;
+  long sp_expire;
+  unsigned long sp_flag;
 };
 
 void setspent(void);
 void endspent(void);
-struct spwd *getspent(void);
-struct spwd *fgetspent(FILE *);
-struct spwd *sgetspent(const char *);
-int putspent(const struct spwd *, FILE *);
+struct spwd* getspent(void);
+struct spwd* fgetspent(FILE*);
+struct spwd* sgetspent(const char*);
+int putspent(const struct spwd*, FILE*);
 
-struct spwd *getspnam(const char *);
-int getspnam_r(const char *, struct spwd *, char *, size_t, struct spwd **);
+struct spwd* getspnam(const char*);
+int getspnam_r(const char*, struct spwd*, char*, size_t, struct spwd**);
 
 int lckpwdf(void);
 int ulckpwdf(void);
diff --git a/fusl/include/signal.h b/fusl/include/signal.h
index c6323c6..4c59ade 100644
--- a/fusl/include/signal.h
+++ b/fusl/include/signal.h
@@ -7,9 +7,8 @@
 
 #include <features.h>
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
 #ifdef _GNU_SOURCE
 #define __ucontext ucontext
@@ -27,9 +26,9 @@
 
 #include <bits/alltypes.h>
 
-#define SIG_BLOCK     0
-#define SIG_UNBLOCK   1
-#define SIG_SETMASK   2
+#define SIG_BLOCK 0
+#define SIG_UNBLOCK 1
+#define SIG_SETMASK 2
 
 #define SI_ASYNCNL (-60)
 #define SI_TKILL (-6)
@@ -47,11 +46,10 @@
 
 #include <bits/signal.h>
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
-#define SIG_HOLD ((void (*)(int)) 2)
+#define SIG_HOLD ((void (*)(int))2)
 
 #define FPE_INTDIV 1
 #define FPE_INTOVF 2
@@ -89,95 +87,95 @@
 #define CLD_CONTINUED 6
 
 union sigval {
-	int sival_int;
-	void *sival_ptr;
+  int sival_int;
+  void* sival_ptr;
 };
 
 typedef struct {
 #ifdef __SI_SWAP_ERRNO_CODE
-	int si_signo, si_code, si_errno;
+  int si_signo, si_code, si_errno;
 #else
-	int si_signo, si_errno, si_code;
+  int si_signo, si_errno, si_code;
 #endif
-	union {
-		char __pad[128 - 2*sizeof(int) - sizeof(long)];
-		struct {
-			union {
-				struct {
-					pid_t si_pid;
-					uid_t si_uid;
-				} __piduid;
-				struct {
-					int si_timerid;
-					int si_overrun;
-				} __timer;
-			} __first;
-			union {
-				union sigval si_value;
-				struct {
-					int si_status;
-					clock_t si_utime, si_stime;
-				} __sigchld;
-			} __second;
-		} __si_common;
-		struct {
-			void *si_addr;
-			short si_addr_lsb;
-			struct {
-				void *si_lower;
-				void *si_upper;
-			} __addr_bnd;
-		} __sigfault;
-		struct {
-			long si_band;
-			int si_fd;
-		} __sigpoll;
-		struct {
-			void *si_call_addr;
-			int si_syscall;
-			unsigned si_arch;
-		} __sigsys;
-	} __si_fields;
+  union {
+    char __pad[128 - 2 * sizeof(int) - sizeof(long)];
+    struct {
+      union {
+        struct {
+          pid_t si_pid;
+          uid_t si_uid;
+        } __piduid;
+        struct {
+          int si_timerid;
+          int si_overrun;
+        } __timer;
+      } __first;
+      union {
+        union sigval si_value;
+        struct {
+          int si_status;
+          clock_t si_utime, si_stime;
+        } __sigchld;
+      } __second;
+    } __si_common;
+    struct {
+      void* si_addr;
+      short si_addr_lsb;
+      struct {
+        void* si_lower;
+        void* si_upper;
+      } __addr_bnd;
+    } __sigfault;
+    struct {
+      long si_band;
+      int si_fd;
+    } __sigpoll;
+    struct {
+      void* si_call_addr;
+      int si_syscall;
+      unsigned si_arch;
+    } __sigsys;
+  } __si_fields;
 } siginfo_t;
-#define si_pid     __si_fields.__si_common.__first.__piduid.si_pid
-#define si_uid     __si_fields.__si_common.__first.__piduid.si_uid
-#define si_status  __si_fields.__si_common.__second.__sigchld.si_status
-#define si_utime   __si_fields.__si_common.__second.__sigchld.si_utime
-#define si_stime   __si_fields.__si_common.__second.__sigchld.si_stime
-#define si_value   __si_fields.__si_common.__second.si_value
-#define si_addr    __si_fields.__sigfault.si_addr
+#define si_pid __si_fields.__si_common.__first.__piduid.si_pid
+#define si_uid __si_fields.__si_common.__first.__piduid.si_uid
+#define si_status __si_fields.__si_common.__second.__sigchld.si_status
+#define si_utime __si_fields.__si_common.__second.__sigchld.si_utime
+#define si_stime __si_fields.__si_common.__second.__sigchld.si_stime
+#define si_value __si_fields.__si_common.__second.si_value
+#define si_addr __si_fields.__sigfault.si_addr
 #define si_addr_lsb __si_fields.__sigfault.si_addr_lsb
-#define si_lower   __si_fields.__sigfault.__addr_bnd.si_lower
-#define si_upper   __si_fields.__sigfault.__addr_bnd.si_upper
-#define si_band    __si_fields.__sigpoll.si_band
-#define si_fd      __si_fields.__sigpoll.si_fd
+#define si_lower __si_fields.__sigfault.__addr_bnd.si_lower
+#define si_upper __si_fields.__sigfault.__addr_bnd.si_upper
+#define si_band __si_fields.__sigpoll.si_band
+#define si_fd __si_fields.__sigpoll.si_fd
 #define si_timerid __si_fields.__si_common.__first.__timer.si_timerid
 #define si_overrun __si_fields.__si_common.__first.__timer.si_overrun
-#define si_ptr     si_value.sival_ptr
-#define si_int     si_value.sival_int
+#define si_ptr si_value.sival_ptr
+#define si_int si_value.sival_int
 #define si_call_addr __si_fields.__sigsys.si_call_addr
 #define si_syscall __si_fields.__sigsys.si_syscall
-#define si_arch    __si_fields.__sigsys.si_arch
+#define si_arch __si_fields.__sigsys.si_arch
 
 struct sigaction {
-	union {
-		void (*sa_handler)(int);
-		void (*sa_sigaction)(int, siginfo_t *, void *);
-	} __sa_handler;
-	sigset_t sa_mask;
-	int sa_flags;
-	void (*sa_restorer)(void);
+  union {
+    void (*sa_handler)(int);
+    void (*sa_sigaction)(int, siginfo_t*, void*);
+  } __sa_handler;
+  sigset_t sa_mask;
+  int sa_flags;
+  void (*sa_restorer)(void);
 };
-#define sa_handler   __sa_handler.sa_handler
+#define sa_handler __sa_handler.sa_handler
 #define sa_sigaction __sa_handler.sa_sigaction
 
 struct sigevent {
-	union sigval sigev_value;
-	int sigev_signo;
-	int sigev_notify;
-	void (*sigev_notify_function)(union sigval);
-	pthread_attr_t *sigev_notify_attributes;
-	char __pad[56-3*sizeof(long)];
+  union sigval sigev_value;
+  int sigev_signo;
+  int sigev_notify;
+  void (*sigev_notify_function)(union sigval);
+  pthread_attr_t* sigev_notify_attributes;
+  char __pad[56 - 3 * sizeof(long)];
 };
 
 #define SIGEV_SIGNAL 0
@@ -187,37 +185,41 @@
 int __libc_current_sigrtmin(void);
 int __libc_current_sigrtmax(void);
 
-#define SIGRTMIN  (__libc_current_sigrtmin())
-#define SIGRTMAX  (__libc_current_sigrtmax())
+#define SIGRTMIN (__libc_current_sigrtmin())
+#define SIGRTMAX (__libc_current_sigrtmax())
 
 int kill(pid_t, int);
 
-int sigemptyset(sigset_t *);
-int sigfillset(sigset_t *);
-int sigaddset(sigset_t *, int);
-int sigdelset(sigset_t *, int);
-int sigismember(const sigset_t *, int);
+int sigemptyset(sigset_t*);
+int sigfillset(sigset_t*);
+int sigaddset(sigset_t*, int);
+int sigdelset(sigset_t*, int);
+int sigismember(const sigset_t*, int);
 
-int sigprocmask(int, const sigset_t *__restrict, sigset_t *__restrict);
-int sigsuspend(const sigset_t *);
-int sigaction(int, const struct sigaction *__restrict, struct sigaction *__restrict);
-int sigpending(sigset_t *);
-int sigwait(const sigset_t *__restrict, int *__restrict);
-int sigwaitinfo(const sigset_t *__restrict, siginfo_t *__restrict);
-int sigtimedwait(const sigset_t *__restrict, siginfo_t *__restrict, const struct timespec *__restrict);
+int sigprocmask(int, const sigset_t* __restrict, sigset_t* __restrict);
+int sigsuspend(const sigset_t*);
+int sigaction(int,
+              const struct sigaction* __restrict,
+              struct sigaction* __restrict);
+int sigpending(sigset_t*);
+int sigwait(const sigset_t* __restrict, int* __restrict);
+int sigwaitinfo(const sigset_t* __restrict, siginfo_t* __restrict);
+int sigtimedwait(const sigset_t* __restrict,
+                 siginfo_t* __restrict,
+                 const struct timespec* __restrict);
 int sigqueue(pid_t, int, const union sigval);
 
-int pthread_sigmask(int, const sigset_t *__restrict, sigset_t *__restrict);
+int pthread_sigmask(int, const sigset_t* __restrict, sigset_t* __restrict);
 int pthread_kill(pthread_t, int);
 
-void psiginfo(const siginfo_t *, const char *);
-void psignal(int, const char *);
+void psiginfo(const siginfo_t*, const char*);
+void psignal(int, const char*);
 
 #endif
 
 #if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
 int killpg(pid_t, int);
-int sigaltstack(const stack_t *__restrict, stack_t *__restrict);
+int sigaltstack(const stack_t* __restrict, stack_t* __restrict);
 int sighold(int);
 int sigignore(int);
 int siginterrupt(int, int);
@@ -232,8 +234,8 @@
 #define POLL_ERR 4
 #define POLL_PRI 5
 #define POLL_HUP 6
-#define SS_ONSTACK    1
-#define SS_DISABLE    2
+#define SS_ONSTACK 1
+#define SS_DISABLE 2
 #endif
 
 #if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
@@ -244,17 +246,17 @@
 #ifdef _GNU_SOURCE
 typedef void (*sighandler_t)(int);
 void (*bsd_signal(int, void (*)(int)))(int);
-int sigisemptyset(const sigset_t *);
-int sigorset (sigset_t *, const sigset_t *, const sigset_t *);
-int sigandset(sigset_t *, const sigset_t *, const sigset_t *);
+int sigisemptyset(const sigset_t*);
+int sigorset(sigset_t*, const sigset_t*, const sigset_t*);
+int sigandset(sigset_t*, const sigset_t*, const sigset_t*);
 
 #define SA_NOMASK SA_NODEFER
 #define SA_ONESHOT SA_RESETHAND
 #endif
 
-#define SIG_ERR  ((void (*)(int))-1)
-#define SIG_DFL  ((void (*)(int)) 0)
-#define SIG_IGN  ((void (*)(int)) 1)
+#define SIG_ERR ((void (*)(int)) - 1)
+#define SIG_DFL ((void (*)(int))0)
+#define SIG_IGN ((void (*)(int))1)
 
 typedef int sig_atomic_t;
 
diff --git a/fusl/include/spawn.h b/fusl/include/spawn.h
index 29c799e..27fb548 100644
--- a/fusl/include/spawn.h
+++ b/fusl/include/spawn.h
@@ -23,49 +23,70 @@
 #define POSIX_SPAWN_SETSCHEDULER 32
 
 typedef struct {
-	int __flags;
-	pid_t __pgrp;
-	sigset_t __def, __mask;
-	int __prio, __pol, __pad[16];
+  int __flags;
+  pid_t __pgrp;
+  sigset_t __def, __mask;
+  int __prio, __pol, __pad[16];
 } posix_spawnattr_t;
 
 typedef struct {
-	int __pad0[2];
-	void *__actions;
-	int __pad[16];
+  int __pad0[2];
+  void* __actions;
+  int __pad[16];
 } posix_spawn_file_actions_t;
 
-int posix_spawn(pid_t *__restrict, const char *__restrict, const posix_spawn_file_actions_t *,
-	const posix_spawnattr_t *__restrict, char *const *__restrict, char *const *__restrict);
-int posix_spawnp(pid_t *__restrict, const char *__restrict, const posix_spawn_file_actions_t *,
-	const posix_spawnattr_t *__restrict, char *const *__restrict, char *const *__restrict);
+int posix_spawn(pid_t* __restrict,
+                const char* __restrict,
+                const posix_spawn_file_actions_t*,
+                const posix_spawnattr_t* __restrict,
+                char* const* __restrict,
+                char* const* __restrict);
+int posix_spawnp(pid_t* __restrict,
+                 const char* __restrict,
+                 const posix_spawn_file_actions_t*,
+                 const posix_spawnattr_t* __restrict,
+                 char* const* __restrict,
+                 char* const* __restrict);
 
-int posix_spawnattr_init(posix_spawnattr_t *);
-int posix_spawnattr_destroy(posix_spawnattr_t *);
+int posix_spawnattr_init(posix_spawnattr_t*);
+int posix_spawnattr_destroy(posix_spawnattr_t*);
 
-int posix_spawnattr_setflags(posix_spawnattr_t *, short);
-int posix_spawnattr_getflags(const posix_spawnattr_t *__restrict, short *__restrict);
+int posix_spawnattr_setflags(posix_spawnattr_t*, short);
+int posix_spawnattr_getflags(const posix_spawnattr_t* __restrict,
+                             short* __restrict);
 
-int posix_spawnattr_setpgroup(posix_spawnattr_t *, pid_t);
-int posix_spawnattr_getpgroup(const posix_spawnattr_t *__restrict, pid_t *__restrict);
+int posix_spawnattr_setpgroup(posix_spawnattr_t*, pid_t);
+int posix_spawnattr_getpgroup(const posix_spawnattr_t* __restrict,
+                              pid_t* __restrict);
 
-int posix_spawnattr_setsigmask(posix_spawnattr_t *__restrict, const sigset_t *__restrict);
-int posix_spawnattr_getsigmask(const posix_spawnattr_t *__restrict, sigset_t *__restrict);
+int posix_spawnattr_setsigmask(posix_spawnattr_t* __restrict,
+                               const sigset_t* __restrict);
+int posix_spawnattr_getsigmask(const posix_spawnattr_t* __restrict,
+                               sigset_t* __restrict);
 
-int posix_spawnattr_setsigdefault(posix_spawnattr_t *__restrict, const sigset_t *__restrict);
-int posix_spawnattr_getsigdefault(const posix_spawnattr_t *__restrict, sigset_t *__restrict);
+int posix_spawnattr_setsigdefault(posix_spawnattr_t* __restrict,
+                                  const sigset_t* __restrict);
+int posix_spawnattr_getsigdefault(const posix_spawnattr_t* __restrict,
+                                  sigset_t* __restrict);
 
-int posix_spawnattr_setschedparam(posix_spawnattr_t *__restrict, const struct sched_param *__restrict);
-int posix_spawnattr_getschedparam(const posix_spawnattr_t *__restrict, struct sched_param *__restrict);
-int posix_spawnattr_setschedpolicy(posix_spawnattr_t *, int);
-int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *__restrict, int *__restrict);
+int posix_spawnattr_setschedparam(posix_spawnattr_t* __restrict,
+                                  const struct sched_param* __restrict);
+int posix_spawnattr_getschedparam(const posix_spawnattr_t* __restrict,
+                                  struct sched_param* __restrict);
+int posix_spawnattr_setschedpolicy(posix_spawnattr_t*, int);
+int posix_spawnattr_getschedpolicy(const posix_spawnattr_t* __restrict,
+                                   int* __restrict);
 
-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_init(posix_spawn_file_actions_t*);
+int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t*);
 
-int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *__restrict, int, const char *__restrict, int, mode_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* __restrict,
+                                     int,
+                                     const char* __restrict,
+                                     int,
+                                     mode_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);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/stdalign.h b/fusl/include/stdalign.h
index 2cc94be..f18c08b 100644
--- a/fusl/include/stdalign.h
+++ b/fusl/include/stdalign.h
@@ -4,7 +4,7 @@
 #ifndef __cplusplus
 
 /* this whole header only works in C11 or with compiler extensions */
-#if __STDC_VERSION__ < 201112L && defined( __GNUC__)
+#if __STDC_VERSION__ < 201112L && defined(__GNUC__)
 #define _Alignas(t) __attribute__((__aligned__(t)))
 #define _Alignof(t) __alignof__(t)
 #endif
diff --git a/fusl/include/stdarg.h b/fusl/include/stdarg.h
index 60d4e2a..16ffc88 100644
--- a/fusl/include/stdarg.h
+++ b/fusl/include/stdarg.h
@@ -10,10 +10,10 @@
 #include <bits/alltypes.h>
 
 #if __GNUC__ >= 3
-#define va_start(v,l)   __builtin_va_start(v,l)
-#define va_end(v)       __builtin_va_end(v)
-#define va_arg(v,l)     __builtin_va_arg(v,l)
-#define va_copy(d,s)    __builtin_va_copy(d,s)
+#define va_start(v, l) __builtin_va_start(v, l)
+#define va_end(v) __builtin_va_end(v)
+#define va_arg(v, l) __builtin_va_arg(v, l)
+#define va_copy(d, s) __builtin_va_copy(d, s)
 #else
 #include <bits/stdarg.h>
 #endif
diff --git a/fusl/include/stddef.h b/fusl/include/stddef.h
index bd75385..2aa803f 100644
--- a/fusl/include/stddef.h
+++ b/fusl/include/stddef.h
@@ -19,7 +19,8 @@
 #if __GNUC__ > 3
 #define offsetof(type, member) __builtin_offsetof(type, member)
 #else
-#define offsetof(type, member) ((size_t)( (char *)&(((type *)0)->member) - (char *)0 ))
+#define offsetof(type, member) \
+  ((size_t)((char*)&(((type*)0)->member) - (char*)0))
 #endif
 
 #endif
diff --git a/fusl/include/stdint.h b/fusl/include/stdint.h
index a296819..4616a48 100644
--- a/fusl/include/stdint.h
+++ b/fusl/include/stdint.h
@@ -22,7 +22,7 @@
 typedef int8_t int_fast8_t;
 typedef int64_t int_fast64_t;
 
-typedef int8_t  int_least8_t;
+typedef int8_t int_least8_t;
 typedef int16_t int_least16_t;
 typedef int32_t int_least32_t;
 typedef int64_t int_least64_t;
@@ -30,88 +30,88 @@
 typedef uint8_t uint_fast8_t;
 typedef uint64_t uint_fast64_t;
 
-typedef uint8_t  uint_least8_t;
+typedef uint8_t uint_least8_t;
 typedef uint16_t uint_least16_t;
 typedef uint32_t uint_least32_t;
 typedef uint64_t uint_least64_t;
 
-#define INT8_MIN   (-1-0x7f)
-#define INT16_MIN  (-1-0x7fff)
-#define INT32_MIN  (-1-0x7fffffff)
-#define INT64_MIN  (-1-0x7fffffffffffffff)
+#define INT8_MIN (-1 - 0x7f)
+#define INT16_MIN (-1 - 0x7fff)
+#define INT32_MIN (-1 - 0x7fffffff)
+#define INT64_MIN (-1 - 0x7fffffffffffffff)
 
-#define INT8_MAX   (0x7f)
-#define INT16_MAX  (0x7fff)
-#define INT32_MAX  (0x7fffffff)
-#define INT64_MAX  (0x7fffffffffffffff)
+#define INT8_MAX (0x7f)
+#define INT16_MAX (0x7fff)
+#define INT32_MAX (0x7fffffff)
+#define INT64_MAX (0x7fffffffffffffff)
 
-#define UINT8_MAX  (0xff)
+#define UINT8_MAX (0xff)
 #define UINT16_MAX (0xffff)
 #define UINT32_MAX (0xffffffffu)
 #define UINT64_MAX (0xffffffffffffffffu)
 
-#define INT_FAST8_MIN   INT8_MIN
-#define INT_FAST64_MIN  INT64_MIN
+#define INT_FAST8_MIN INT8_MIN
+#define INT_FAST64_MIN INT64_MIN
 
-#define INT_LEAST8_MIN   INT8_MIN
-#define INT_LEAST16_MIN  INT16_MIN
-#define INT_LEAST32_MIN  INT32_MIN
-#define INT_LEAST64_MIN  INT64_MIN
+#define INT_LEAST8_MIN INT8_MIN
+#define INT_LEAST16_MIN INT16_MIN
+#define INT_LEAST32_MIN INT32_MIN
+#define INT_LEAST64_MIN INT64_MIN
 
-#define INT_FAST8_MAX   INT8_MAX
-#define INT_FAST64_MAX  INT64_MAX
+#define INT_FAST8_MAX INT8_MAX
+#define INT_FAST64_MAX INT64_MAX
 
-#define INT_LEAST8_MAX   INT8_MAX
-#define INT_LEAST16_MAX  INT16_MAX
-#define INT_LEAST32_MAX  INT32_MAX
-#define INT_LEAST64_MAX  INT64_MAX
+#define INT_LEAST8_MAX INT8_MAX
+#define INT_LEAST16_MAX INT16_MAX
+#define INT_LEAST32_MAX INT32_MAX
+#define INT_LEAST64_MAX INT64_MAX
 
-#define UINT_FAST8_MAX  UINT8_MAX
+#define UINT_FAST8_MAX UINT8_MAX
 #define UINT_FAST64_MAX UINT64_MAX
 
-#define UINT_LEAST8_MAX  UINT8_MAX
+#define UINT_LEAST8_MAX UINT8_MAX
 #define UINT_LEAST16_MAX UINT16_MAX
 #define UINT_LEAST32_MAX UINT32_MAX
 #define UINT_LEAST64_MAX UINT64_MAX
 
-#define INTMAX_MIN  INT64_MIN
-#define INTMAX_MAX  INT64_MAX
+#define INTMAX_MIN INT64_MIN
+#define INTMAX_MAX INT64_MAX
 #define UINTMAX_MAX UINT64_MAX
 
 #define WINT_MIN 0U
 #define WINT_MAX UINT32_MAX
 
-#if L'\0'-1 > 0
-#define WCHAR_MAX (0xffffffffu+L'\0')
-#define WCHAR_MIN (0+L'\0')
+#if L'\0' - 1 > 0
+#define WCHAR_MAX (0xffffffffu + L'\0')
+#define WCHAR_MIN (0 + L'\0')
 #else
-#define WCHAR_MAX (0x7fffffff+L'\0')
-#define WCHAR_MIN (-1-0x7fffffff+L'\0')
+#define WCHAR_MAX (0x7fffffff + L'\0')
+#define WCHAR_MIN (-1 - 0x7fffffff + L'\0')
 #endif
 
-#define SIG_ATOMIC_MIN  INT32_MIN
-#define SIG_ATOMIC_MAX  INT32_MAX
+#define SIG_ATOMIC_MIN INT32_MIN
+#define SIG_ATOMIC_MAX INT32_MAX
 
 #include <bits/stdint.h>
 
-#define INT8_C(c)  c
+#define INT8_C(c) c
 #define INT16_C(c) c
 #define INT32_C(c) c
 
-#define UINT8_C(c)  c
+#define UINT8_C(c) c
 #define UINT16_C(c) c
-#define UINT32_C(c) c ## U
+#define UINT32_C(c) c##U
 
 #if UINTPTR_MAX == UINT64_MAX
-#define INT64_C(c) c ## L
-#define UINT64_C(c) c ## UL
-#define INTMAX_C(c)  c ## L
-#define UINTMAX_C(c) c ## UL
+#define INT64_C(c) c##L
+#define UINT64_C(c) c##UL
+#define INTMAX_C(c) c##L
+#define UINTMAX_C(c) c##UL
 #else
-#define INT64_C(c) c ## LL
-#define UINT64_C(c) c ## ULL
-#define INTMAX_C(c)  c ## LL
-#define UINTMAX_C(c) c ## ULL
+#define INT64_C(c) c##LL
+#define UINT64_C(c) c##ULL
+#define INTMAX_C(c) c##LL
+#define UINTMAX_C(c) c##ULL
 #endif
 
 #endif
diff --git a/fusl/include/stdio.h b/fusl/include/stdio.h
index 884d2e6..3b62650 100644
--- a/fusl/include/stdio.h
+++ b/fusl/include/stdio.h
@@ -11,9 +11,8 @@
 #define __NEED___isoc_va_list
 #define __NEED_size_t
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define __NEED_ssize_t
 #define __NEED_off_t
 #define __NEED_va_list
@@ -48,140 +47,137 @@
 #define L_tmpnam 20
 
 typedef union _G_fpos64_t {
-	char __opaque[16];
-	double __align;
+  char __opaque[16];
+  double __align;
 } fpos_t;
 
-extern FILE *const stdin;
-extern FILE *const stdout;
-extern FILE *const stderr;
+extern FILE* const stdin;
+extern FILE* const stdout;
+extern FILE* const stderr;
 
-#define stdin  (stdin)
+#define stdin (stdin)
 #define stdout (stdout)
 #define stderr (stderr)
 
-FILE *fopen(const char *__restrict, const char *__restrict);
-FILE *freopen(const char *__restrict, const char *__restrict, FILE *__restrict);
-int fclose(FILE *);
+FILE* fopen(const char* __restrict, const char* __restrict);
+FILE* freopen(const char* __restrict, const char* __restrict, FILE* __restrict);
+int fclose(FILE*);
 
-int remove(const char *);
-int rename(const char *, const char *);
+int remove(const char*);
+int rename(const char*, const char*);
 
-int feof(FILE *);
-int ferror(FILE *);
-int fflush(FILE *);
-void clearerr(FILE *);
+int feof(FILE*);
+int ferror(FILE*);
+int fflush(FILE*);
+void clearerr(FILE*);
 
-int fseek(FILE *, long, int);
-long ftell(FILE *);
-void rewind(FILE *);
+int fseek(FILE*, long, int);
+long ftell(FILE*);
+void rewind(FILE*);
 
-int fgetpos(FILE *__restrict, fpos_t *__restrict);
-int fsetpos(FILE *, const fpos_t *);
+int fgetpos(FILE* __restrict, fpos_t* __restrict);
+int fsetpos(FILE*, const fpos_t*);
 
-size_t fread(void *__restrict, size_t, size_t, FILE *__restrict);
-size_t fwrite(const void *__restrict, size_t, size_t, FILE *__restrict);
+size_t fread(void* __restrict, size_t, size_t, FILE* __restrict);
+size_t fwrite(const void* __restrict, size_t, size_t, FILE* __restrict);
 
-int fgetc(FILE *);
-int getc(FILE *);
+int fgetc(FILE*);
+int getc(FILE*);
 int getchar(void);
-int ungetc(int, FILE *);
+int ungetc(int, FILE*);
 
-int fputc(int, FILE *);
-int putc(int, FILE *);
+int fputc(int, FILE*);
+int putc(int, FILE*);
 int putchar(int);
 
-char *fgets(char *__restrict, int, FILE *__restrict);
+char* fgets(char* __restrict, int, FILE* __restrict);
 #if __STDC_VERSION__ < 201112L
-char *gets(char *);
+char* gets(char*);
 #endif
 
-int fputs(const char *__restrict, FILE *__restrict);
-int puts(const char *);
+int fputs(const char* __restrict, FILE* __restrict);
+int puts(const char*);
 
-int printf(const char *__restrict, ...);
-int fprintf(FILE *__restrict, const char *__restrict, ...);
-int sprintf(char *__restrict, const char *__restrict, ...);
-int snprintf(char *__restrict, size_t, const char *__restrict, ...);
+int printf(const char* __restrict, ...);
+int fprintf(FILE* __restrict, const char* __restrict, ...);
+int sprintf(char* __restrict, const char* __restrict, ...);
+int snprintf(char* __restrict, size_t, const char* __restrict, ...);
 
-int vprintf(const char *__restrict, __isoc_va_list);
-int vfprintf(FILE *__restrict, const char *__restrict, __isoc_va_list);
-int vsprintf(char *__restrict, const char *__restrict, __isoc_va_list);
-int vsnprintf(char *__restrict, size_t, const char *__restrict, __isoc_va_list);
+int vprintf(const char* __restrict, __isoc_va_list);
+int vfprintf(FILE* __restrict, const char* __restrict, __isoc_va_list);
+int vsprintf(char* __restrict, const char* __restrict, __isoc_va_list);
+int vsnprintf(char* __restrict, size_t, const char* __restrict, __isoc_va_list);
 
-int scanf(const char *__restrict, ...);
-int fscanf(FILE *__restrict, const char *__restrict, ...);
-int sscanf(const char *__restrict, const char *__restrict, ...);
-int vscanf(const char *__restrict, __isoc_va_list);
-int vfscanf(FILE *__restrict, const char *__restrict, __isoc_va_list);
-int vsscanf(const char *__restrict, const char *__restrict, __isoc_va_list);
+int scanf(const char* __restrict, ...);
+int fscanf(FILE* __restrict, const char* __restrict, ...);
+int sscanf(const char* __restrict, const char* __restrict, ...);
+int vscanf(const char* __restrict, __isoc_va_list);
+int vfscanf(FILE* __restrict, const char* __restrict, __isoc_va_list);
+int vsscanf(const char* __restrict, const char* __restrict, __isoc_va_list);
 
-void perror(const char *);
+void perror(const char*);
 
-int setvbuf(FILE *__restrict, char *__restrict, int, size_t);
-void setbuf(FILE *__restrict, char *__restrict);
+int setvbuf(FILE* __restrict, char* __restrict, int, size_t);
+void setbuf(FILE* __restrict, char* __restrict);
 
-char *tmpnam(char *);
-FILE *tmpfile(void);
+char* tmpnam(char*);
+FILE* tmpfile(void);
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
-FILE *fmemopen(void *__restrict, size_t, const char *__restrict);
-FILE *open_memstream(char **, size_t *);
-FILE *fdopen(int, const char *);
-FILE *popen(const char *, const char *);
-int pclose(FILE *);
-int fileno(FILE *);
-int fseeko(FILE *, off_t, int);
-off_t ftello(FILE *);
-int dprintf(int, const char *__restrict, ...);
-int vdprintf(int, const char *__restrict, __isoc_va_list);
-void flockfile(FILE *);
-int ftrylockfile(FILE *);
-void funlockfile(FILE *);
-int getc_unlocked(FILE *);
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+FILE* fmemopen(void* __restrict, size_t, const char* __restrict);
+FILE* open_memstream(char**, size_t*);
+FILE* fdopen(int, const char*);
+FILE* popen(const char*, const char*);
+int pclose(FILE*);
+int fileno(FILE*);
+int fseeko(FILE*, off_t, int);
+off_t ftello(FILE*);
+int dprintf(int, const char* __restrict, ...);
+int vdprintf(int, const char* __restrict, __isoc_va_list);
+void flockfile(FILE*);
+int ftrylockfile(FILE*);
+void funlockfile(FILE*);
+int getc_unlocked(FILE*);
 int getchar_unlocked(void);
-int putc_unlocked(int, FILE *);
+int putc_unlocked(int, FILE*);
 int putchar_unlocked(int);
-ssize_t getdelim(char **__restrict, size_t *__restrict, int, FILE *__restrict);
-ssize_t getline(char **__restrict, size_t *__restrict, FILE *__restrict);
-int renameat(int, const char *, int, const char *);
-char *ctermid(char *);
+ssize_t getdelim(char** __restrict, size_t* __restrict, int, FILE* __restrict);
+ssize_t getline(char** __restrict, size_t* __restrict, FILE* __restrict);
+int renameat(int, const char*, int, const char*);
+char* ctermid(char*);
 #define L_ctermid 20
 #endif
 
-
-#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define P_tmpdir "/tmp"
-char *tempnam(const char *, const char *);
+char* tempnam(const char*, const char*);
 #endif
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define L_cuserid 20
-char *cuserid(char *);
-void setlinebuf(FILE *);
-void setbuffer(FILE *, char *, size_t);
-int fgetc_unlocked(FILE *);
-int fputc_unlocked(int, FILE *);
-int fflush_unlocked(FILE *);
-size_t fread_unlocked(void *, size_t, size_t, FILE *);
-size_t fwrite_unlocked(const void *, size_t, size_t, FILE *);
-void clearerr_unlocked(FILE *);
-int feof_unlocked(FILE *);
-int ferror_unlocked(FILE *);
-int fileno_unlocked(FILE *);
-int getw(FILE *);
-int putw(int, FILE *);
-char *fgetln(FILE *, size_t *);
-int asprintf(char **, const char *, ...);
-int vasprintf(char **, const char *, __isoc_va_list);
+char* cuserid(char*);
+void setlinebuf(FILE*);
+void setbuffer(FILE*, char*, size_t);
+int fgetc_unlocked(FILE*);
+int fputc_unlocked(int, FILE*);
+int fflush_unlocked(FILE*);
+size_t fread_unlocked(void*, size_t, size_t, FILE*);
+size_t fwrite_unlocked(const void*, size_t, size_t, FILE*);
+void clearerr_unlocked(FILE*);
+int feof_unlocked(FILE*);
+int ferror_unlocked(FILE*);
+int fileno_unlocked(FILE*);
+int getw(FILE*);
+int putw(int, FILE*);
+char* fgetln(FILE*, size_t*);
+int asprintf(char**, const char*, ...);
+int vasprintf(char**, const char*, __isoc_va_list);
 #endif
 
 #ifdef _GNU_SOURCE
-char *fgets_unlocked(char *, int, FILE *);
-int fputs_unlocked(const char *, FILE *);
+char* fgets_unlocked(char*, int, FILE*);
+int fputs_unlocked(const char*, FILE*);
 #endif
 
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
diff --git a/fusl/include/stdio_ext.h b/fusl/include/stdio_ext.h
index e3ab7fd..3b8bdc1 100644
--- a/fusl/include/stdio_ext.h
+++ b/fusl/include/stdio_ext.h
@@ -12,20 +12,20 @@
 #define FSETLOCKING_BYCALLER 2
 
 void _flushlbf(void);
-int __fsetlocking(FILE *, int);
-int __fwriting(FILE *);
-int __freading(FILE *);
-int __freadable(FILE *);
-int __fwritable(FILE *);
-int __flbf(FILE *);
-size_t __fbufsize(FILE *);
-size_t __fpending(FILE *);
-int __fpurge(FILE *);
+int __fsetlocking(FILE*, int);
+int __fwriting(FILE*);
+int __freading(FILE*);
+int __freadable(FILE*);
+int __fwritable(FILE*);
+int __flbf(FILE*);
+size_t __fbufsize(FILE*);
+size_t __fpending(FILE*);
+int __fpurge(FILE*);
 
-size_t __freadahead(FILE *);
-const char *__freadptr(FILE *, size_t *);
-void __freadptrinc(FILE *, size_t);
-void __fseterr(FILE *);
+size_t __freadahead(FILE*);
+const char* __freadptr(FILE*, size_t*);
+void __freadptrinc(FILE*, size_t);
+void __fseterr(FILE*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/stdlib.h b/fusl/include/stdlib.h
index d2c911f..dbd9e11 100644
--- a/fusl/include/stdlib.h
+++ b/fusl/include/stdlib.h
@@ -18,60 +18,64 @@
 
 #include <bits/alltypes.h>
 
-int atoi (const char *);
-long atol (const char *);
-long long atoll (const char *);
-double atof (const char *);
+int atoi(const char*);
+long atol(const char*);
+long long atoll(const char*);
+double atof(const char*);
 
-float strtof (const char *__restrict, char **__restrict);
-double strtod (const char *__restrict, char **__restrict);
-long double strtold (const char *__restrict, char **__restrict);
+float strtof(const char* __restrict, char** __restrict);
+double strtod(const char* __restrict, char** __restrict);
+long double strtold(const char* __restrict, char** __restrict);
 
-long strtol (const char *__restrict, char **__restrict, int);
-unsigned long strtoul (const char *__restrict, char **__restrict, int);
-long long strtoll (const char *__restrict, char **__restrict, int);
-unsigned long long strtoull (const char *__restrict, char **__restrict, int);
+long strtol(const char* __restrict, char** __restrict, int);
+unsigned long strtoul(const char* __restrict, char** __restrict, int);
+long long strtoll(const char* __restrict, char** __restrict, int);
+unsigned long long strtoull(const char* __restrict, char** __restrict, int);
 
-int rand (void);
-void srand (unsigned);
+int rand(void);
+void srand(unsigned);
 
-void *malloc (size_t);
-void *calloc (size_t, size_t);
-void *realloc (void *, size_t);
-void free (void *);
-void *aligned_alloc(size_t alignment, size_t size);
+void* malloc(size_t);
+void* calloc(size_t, size_t);
+void* realloc(void*, size_t);
+void free(void*);
+void* aligned_alloc(size_t alignment, size_t size);
 
-_Noreturn void abort (void);
-int atexit (void (*) (void));
-_Noreturn void exit (int);
-_Noreturn void _Exit (int);
-int at_quick_exit (void (*) (void));
-_Noreturn void quick_exit (int);
+_Noreturn void abort(void);
+int atexit(void (*)(void));
+_Noreturn void exit(int);
+_Noreturn void _Exit(int);
+int at_quick_exit(void (*)(void));
+_Noreturn void quick_exit(int);
 
-char *getenv (const char *);
+char* getenv(const char*);
 
-int system (const char *);
+int system(const char*);
 
-void *bsearch (const void *, const void *, size_t, size_t, int (*)(const void *, const void *));
-void qsort (void *, size_t, size_t, int (*)(const void *, const void *));
+void* bsearch(const void*,
+              const void*,
+              size_t,
+              size_t,
+              int (*)(const void*, const void*));
+void qsort(void*, size_t, size_t, int (*)(const void*, const void*));
 
-int abs (int);
-long labs (long);
-long long llabs (long long);
+int abs(int);
+long labs(long);
+long long llabs(long long);
 
 typedef struct { int quot, rem; } div_t;
 typedef struct { long quot, rem; } ldiv_t;
 typedef struct { long long quot, rem; } lldiv_t;
 
-div_t div (int, int);
-ldiv_t ldiv (long, long);
-lldiv_t lldiv (long long, long long);
+div_t div(int, int);
+ldiv_t ldiv(long, long);
+lldiv_t lldiv(long long, long long);
 
-int mblen (const char *, size_t);
-int mbtowc (wchar_t *__restrict, const char *__restrict, size_t);
-int wctomb (char *, wchar_t);
-size_t mbstowcs (wchar_t *__restrict, const char *__restrict, size_t);
-size_t wcstombs (char *__restrict, const wchar_t *__restrict, size_t);
+int mblen(const char*, size_t);
+int mbtowc(wchar_t* __restrict, const char* __restrict, size_t);
+int wctomb(char*, wchar_t);
+size_t mbstowcs(wchar_t* __restrict, const char* __restrict, size_t);
+size_t wcstombs(char* __restrict, const wchar_t* __restrict, size_t);
 
 #define EXIT_FAILURE 1
 #define EXIT_SUCCESS 0
@@ -81,81 +85,83 @@
 
 #define RAND_MAX (0x7fffffff)
 
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
+#define WNOHANG 1
+#define WUNTRACED 2
 
-#define WNOHANG    1
-#define WUNTRACED  2
-
-#define WEXITSTATUS(s) (((s) & 0xff00) >> 8)
-#define WTERMSIG(s) ((s) & 0x7f)
+#define WEXITSTATUS(s) (((s)&0xff00) >> 8)
+#define WTERMSIG(s) ((s)&0x7f)
 #define WSTOPSIG(s) WEXITSTATUS(s)
 #define WIFEXITED(s) (!WTERMSIG(s))
-#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00)
-#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu)
+#define WIFSTOPPED(s) ((short)((((s)&0xffff) * 0x10001) >> 8) > 0x7f00)
+#define WIFSIGNALED(s) (((s)&0xffff) - 1U < 0xffu)
 
-int posix_memalign (void **, size_t, size_t);
-int setenv (const char *, const char *, int);
-int unsetenv (const char *);
-int mkstemp (char *);
-int mkostemp (char *, int);
-char *mkdtemp (char *);
-int getsubopt (char **, char *const *, char **);
-int rand_r (unsigned *);
+int posix_memalign(void**, size_t, size_t);
+int setenv(const char*, const char*, int);
+int unsetenv(const char*);
+int mkstemp(char*);
+int mkostemp(char*, int);
+char* mkdtemp(char*);
+int getsubopt(char**, char* const*, char**);
+int rand_r(unsigned*);
 
 #endif
 
-
-#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
-char *realpath (const char *__restrict, char *__restrict);
-long int random (void);
-void srandom (unsigned int);
-char *initstate (unsigned int, char *, size_t);
-char *setstate (char *);
-int putenv (char *);
-int posix_openpt (int);
-int grantpt (int);
-int unlockpt (int);
-char *ptsname (int);
-char *l64a (long);
-long a64l (const char *);
-void setkey (const char *);
-double drand48 (void);
-double erand48 (unsigned short [3]);
-long int lrand48 (void);
-long int nrand48 (unsigned short [3]);
-long mrand48 (void);
-long jrand48 (unsigned short [3]);
-void srand48 (long);
-unsigned short *seed48 (unsigned short [3]);
-void lcong48 (unsigned short [7]);
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+char* realpath(const char* __restrict, char* __restrict);
+long int random(void);
+void srandom(unsigned int);
+char* initstate(unsigned int, char*, size_t);
+char* setstate(char*);
+int putenv(char*);
+int posix_openpt(int);
+int grantpt(int);
+int unlockpt(int);
+char* ptsname(int);
+char* l64a(long);
+long a64l(const char*);
+void setkey(const char*);
+double drand48(void);
+double erand48(unsigned short[3]);
+long int lrand48(void);
+long int nrand48(unsigned short[3]);
+long mrand48(void);
+long jrand48(unsigned short[3]);
+void srand48(long);
+unsigned short* seed48(unsigned short[3]);
+void lcong48(unsigned short[7]);
 #endif
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #include <alloca.h>
-char *mktemp (char *);
-int mkstemps (char *, int);
-int mkostemps (char *, int, int);
-void *valloc (size_t);
-void *memalign(size_t, size_t);
-int getloadavg(double *, int);
+char* mktemp(char*);
+int mkstemps(char*, int);
+int mkostemps(char*, int, int);
+void* valloc(size_t);
+void* memalign(size_t, size_t);
+int getloadavg(double*, int);
 int clearenv(void);
-#define WCOREDUMP(s) ((s) & 0x80)
+#define WCOREDUMP(s) ((s)&0x80)
 #define WIFCONTINUED(s) ((s) == 0xffff)
 #endif
 
 #ifdef _GNU_SOURCE
-int ptsname_r(int, char *, size_t);
-char *ecvt(double, int, int *, int *);
-char *fcvt(double, int, int *, int *);
-char *gcvt(double, int, char *);
+int ptsname_r(int, char*, size_t);
+char* ecvt(double, int, int*, int*);
+char* fcvt(double, int, int*, int*);
+char* gcvt(double, int, char*);
 struct __locale_struct;
-float strtof_l(const char *__restrict, char **__restrict, struct __locale_struct *);
-double strtod_l(const char *__restrict, char **__restrict, struct __locale_struct *);
-long double strtold_l(const char *__restrict, char **__restrict, struct __locale_struct *);
+float strtof_l(const char* __restrict,
+               char** __restrict,
+               struct __locale_struct*);
+double strtod_l(const char* __restrict,
+                char** __restrict,
+                struct __locale_struct*);
+long double strtold_l(const char* __restrict,
+                      char** __restrict,
+                      struct __locale_struct*);
 #endif
 
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
diff --git a/fusl/include/string.h b/fusl/include/string.h
index ff9badb..0a2d7e3 100644
--- a/fusl/include/string.h
+++ b/fusl/include/string.h
@@ -1,5 +1,5 @@
-#ifndef	_STRING_H
-#define	_STRING_H
+#ifndef _STRING_H
+#define _STRING_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -14,88 +14,85 @@
 #endif
 
 #define __NEED_size_t
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define __NEED_locale_t
 #endif
 
 #include <bits/alltypes.h>
 
-void *memcpy (void *__restrict, const void *__restrict, size_t);
-void *memmove (void *, const void *, size_t);
-void *memset (void *, int, size_t);
-int memcmp (const void *, const void *, size_t);
-void *memchr (const void *, int, size_t);
+void* memcpy(void* __restrict, const void* __restrict, size_t);
+void* memmove(void*, const void*, size_t);
+void* memset(void*, int, size_t);
+int memcmp(const void*, const void*, size_t);
+void* memchr(const void*, int, size_t);
 
-char *strcpy (char *__restrict, const char *__restrict);
-char *strncpy (char *__restrict, const char *__restrict, size_t);
+char* strcpy(char* __restrict, const char* __restrict);
+char* strncpy(char* __restrict, const char* __restrict, size_t);
 
-char *strcat (char *__restrict, const char *__restrict);
-char *strncat (char *__restrict, const char *__restrict, size_t);
+char* strcat(char* __restrict, const char* __restrict);
+char* strncat(char* __restrict, const char* __restrict, size_t);
 
-int strcmp (const char *, const char *);
-int strncmp (const char *, const char *, size_t);
+int strcmp(const char*, const char*);
+int strncmp(const char*, const char*, size_t);
 
-int strcoll (const char *, const char *);
-size_t strxfrm (char *__restrict, const char *__restrict, size_t);
+int strcoll(const char*, const char*);
+size_t strxfrm(char* __restrict, const char* __restrict, size_t);
 
-char *strchr (const char *, int);
-char *strrchr (const char *, int);
+char* strchr(const char*, int);
+char* strrchr(const char*, int);
 
-size_t strcspn (const char *, const char *);
-size_t strspn (const char *, const char *);
-char *strpbrk (const char *, const char *);
-char *strstr (const char *, const char *);
-char *strtok (char *__restrict, const char *__restrict);
+size_t strcspn(const char*, const char*);
+size_t strspn(const char*, const char*);
+char* strpbrk(const char*, const char*);
+char* strstr(const char*, const char*);
+char* strtok(char* __restrict, const char* __restrict);
 
-size_t strlen (const char *);
+size_t strlen(const char*);
 
-char *strerror (int);
+char* strerror(int);
 
 #if defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
 #include <strings.h>
 #endif
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
-char *strtok_r (char *__restrict, const char *__restrict, char **__restrict);
-int strerror_r (int, char *, size_t);
-char *stpcpy(char *__restrict, const char *__restrict);
-char *stpncpy(char *__restrict, const char *__restrict, size_t);
-size_t strnlen (const char *, size_t);
-char *strdup (const char *);
-char *strndup (const char *, size_t);
-char *strsignal(int);
-char *strerror_l (int, locale_t);
-int strcoll_l (const char *, const char *, locale_t);
-size_t strxfrm_l (char *__restrict, const char *__restrict, size_t, locale_t);
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+char* strtok_r(char* __restrict, const char* __restrict, char** __restrict);
+int strerror_r(int, char*, size_t);
+char* stpcpy(char* __restrict, const char* __restrict);
+char* stpncpy(char* __restrict, const char* __restrict, size_t);
+size_t strnlen(const char*, size_t);
+char* strdup(const char*);
+char* strndup(const char*, size_t);
+char* strsignal(int);
+char* strerror_l(int, locale_t);
+int strcoll_l(const char*, const char*, locale_t);
+size_t strxfrm_l(char* __restrict, const char* __restrict, size_t, locale_t);
 #endif
 
-#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
-void *memccpy (void *__restrict, const void *__restrict, int, size_t);
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+void* memccpy(void* __restrict, const void* __restrict, int, size_t);
 #endif
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-char *strsep(char **, const char *);
-size_t strlcat (char *, const char *, size_t);
-size_t strlcpy (char *, const char *, size_t);
+char* strsep(char**, const char*);
+size_t strlcat(char*, const char*, size_t);
+size_t strlcpy(char*, const char*, size_t);
 #endif
 
 #ifdef _GNU_SOURCE
-#define	strdupa(x)	strcpy(alloca(strlen(x)+1),x)
-int strverscmp (const char *, const char *);
-int strcasecmp_l (const char *, const char *, locale_t);
-int strncasecmp_l (const char *, const char *, size_t, locale_t);
-char *strchrnul(const char *, int);
-char *strcasestr(const char *, const char *);
-void *memmem(const void *, size_t, const void *, size_t);
-void *memrchr(const void *, int, size_t);
-void *mempcpy(void *, const void *, size_t);
+#define strdupa(x) strcpy(alloca(strlen(x) + 1), x)
+int strverscmp(const char*, const char*);
+int strcasecmp_l(const char*, const char*, locale_t);
+int strncasecmp_l(const char*, const char*, size_t, locale_t);
+char* strchrnul(const char*, int);
+char* strcasestr(const char*, const char*);
+void* memmem(const void*, size_t, const void*, size_t);
+void* memrchr(const void*, int, size_t);
+void* mempcpy(void*, const void*, size_t);
 #ifndef __cplusplus
-char *basename();
+char* basename();
 #endif
 #endif
 
diff --git a/fusl/include/strings.h b/fusl/include/strings.h
index db0960b..a157c9d 100644
--- a/fusl/include/strings.h
+++ b/fusl/include/strings.h
@@ -1,36 +1,35 @@
-#ifndef	_STRINGS_H
-#define	_STRINGS_H
+#ifndef _STRINGS_H
+#define _STRINGS_H
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-
 #define __NEED_size_t
 #define __NEED_locale_t
 #include <bits/alltypes.h>
 
-#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) \
- || (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE+0 < 200809L) \
- || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
-int bcmp (const void *, const void *, size_t);
-void bcopy (const void *, void *, size_t);
-void bzero (void *, size_t);
-char *index (const char *, int);
-char *rindex (const char *, int);
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || defined(_POSIX_SOURCE) || \
+    (defined(_POSIX_C_SOURCE) && _POSIX_C_SOURCE + 0 < 200809L) ||            \
+    (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE + 0 < 700)
+int bcmp(const void*, const void*, size_t);
+void bcopy(const void*, void*, size_t);
+void bzero(void*, size_t);
+char* index(const char*, int);
+char* rindex(const char*, int);
 #endif
 
-#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)  || defined(_BSD_SOURCE)
-int ffs (int);
-int ffsl (long);
-int ffsll (long long);
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+int ffs(int);
+int ffsl(long);
+int ffsll(long long);
 #endif
 
-int strcasecmp (const char *, const char *);
-int strncasecmp (const char *, const char *, size_t);
+int strcasecmp(const char*, const char*);
+int strncasecmp(const char*, const char*, size_t);
 
-int strcasecmp_l (const char *, const char *, locale_t);
-int strncasecmp_l (const char *, const char *, size_t, locale_t);
+int strcasecmp_l(const char*, const char*, locale_t);
+int strncasecmp_l(const char*, const char*, size_t, locale_t);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/stropts.h b/fusl/include/stropts.h
index c99c922..3ba37aa 100644
--- a/fusl/include/stropts.h
+++ b/fusl/include/stropts.h
@@ -5,128 +5,128 @@
 extern "C" {
 #endif
 
-#define __SID		('S' << 8)
+#define __SID ('S' << 8)
 
-#define I_NREAD		(__SID | 1)
-#define I_PUSH		(__SID | 2)
-#define I_POP		(__SID | 3)
-#define I_LOOK		(__SID | 4)
-#define I_FLUSH		(__SID | 5)
-#define I_SRDOPT	(__SID | 6)
-#define I_GRDOPT	(__SID | 7)
-#define I_STR		(__SID | 8)
-#define I_SETSIG	(__SID | 9)
-#define I_GETSIG	(__SID |10)
-#define I_FIND		(__SID |11)
-#define I_LINK		(__SID |12)
-#define I_UNLINK	(__SID |13)
-#define I_PEEK		(__SID |15)
-#define I_FDINSERT	(__SID |16)
-#define I_SENDFD	(__SID |17)
-#define I_RECVFD	(__SID |14)
-#define I_SWROPT	(__SID |19)
-#define I_GWROPT	(__SID |20)
-#define I_LIST		(__SID |21)
-#define I_PLINK		(__SID |22)
-#define I_PUNLINK	(__SID |23)
-#define I_FLUSHBAND	(__SID |28)
-#define I_CKBAND	(__SID |29)
-#define I_GETBAND	(__SID |30)
-#define I_ATMARK	(__SID |31)
-#define I_SETCLTIME	(__SID |32)
-#define I_GETCLTIME	(__SID |33)
-#define I_CANPUT	(__SID |34)
+#define I_NREAD (__SID | 1)
+#define I_PUSH (__SID | 2)
+#define I_POP (__SID | 3)
+#define I_LOOK (__SID | 4)
+#define I_FLUSH (__SID | 5)
+#define I_SRDOPT (__SID | 6)
+#define I_GRDOPT (__SID | 7)
+#define I_STR (__SID | 8)
+#define I_SETSIG (__SID | 9)
+#define I_GETSIG (__SID | 10)
+#define I_FIND (__SID | 11)
+#define I_LINK (__SID | 12)
+#define I_UNLINK (__SID | 13)
+#define I_PEEK (__SID | 15)
+#define I_FDINSERT (__SID | 16)
+#define I_SENDFD (__SID | 17)
+#define I_RECVFD (__SID | 14)
+#define I_SWROPT (__SID | 19)
+#define I_GWROPT (__SID | 20)
+#define I_LIST (__SID | 21)
+#define I_PLINK (__SID | 22)
+#define I_PUNLINK (__SID | 23)
+#define I_FLUSHBAND (__SID | 28)
+#define I_CKBAND (__SID | 29)
+#define I_GETBAND (__SID | 30)
+#define I_ATMARK (__SID | 31)
+#define I_SETCLTIME (__SID | 32)
+#define I_GETCLTIME (__SID | 33)
+#define I_CANPUT (__SID | 34)
 
-#define FMNAMESZ	8
+#define FMNAMESZ 8
 
-#define FLUSHR		0x01
-#define FLUSHW		0x02
-#define FLUSHRW		0x03
-#define FLUSHBAND	0x04
+#define FLUSHR 0x01
+#define FLUSHW 0x02
+#define FLUSHRW 0x03
+#define FLUSHBAND 0x04
 
-#define S_INPUT		0x0001
-#define S_HIPRI		0x0002
-#define S_OUTPUT	0x0004
-#define S_MSG		0x0008
-#define S_ERROR		0x0010
-#define S_HANGUP	0x0020
-#define S_RDNORM	0x0040
-#define S_WRNORM	S_OUTPUT
-#define S_RDBAND	0x0080
-#define S_WRBAND	0x0100
-#define S_BANDURG	0x0200
+#define S_INPUT 0x0001
+#define S_HIPRI 0x0002
+#define S_OUTPUT 0x0004
+#define S_MSG 0x0008
+#define S_ERROR 0x0010
+#define S_HANGUP 0x0020
+#define S_RDNORM 0x0040
+#define S_WRNORM S_OUTPUT
+#define S_RDBAND 0x0080
+#define S_WRBAND 0x0100
+#define S_BANDURG 0x0200
 
-#define RS_HIPRI	0x01
+#define RS_HIPRI 0x01
 
-#define RNORM		0x0000
-#define RMSGD		0x0001
-#define RMSGN		0x0002
-#define RPROTDAT	0x0004
-#define RPROTDIS	0x0008
-#define RPROTNORM	0x0010
-#define RPROTMASK	0x001C
+#define RNORM 0x0000
+#define RMSGD 0x0001
+#define RMSGN 0x0002
+#define RPROTDAT 0x0004
+#define RPROTDIS 0x0008
+#define RPROTNORM 0x0010
+#define RPROTMASK 0x001C
 
-#define SNDZERO		0x001
-#define SNDPIPE		0x002
+#define SNDZERO 0x001
+#define SNDPIPE 0x002
 
-#define ANYMARK		0x01
-#define LASTMARK	0x02
+#define ANYMARK 0x01
+#define LASTMARK 0x02
 
-#define MUXID_ALL	(-1)
+#define MUXID_ALL (-1)
 
-#define MSG_HIPRI	0x01
-#define MSG_ANY		0x02
-#define MSG_BAND	0x04
+#define MSG_HIPRI 0x01
+#define MSG_ANY 0x02
+#define MSG_BAND 0x04
 
-#define MORECTL		1
-#define MOREDATA	2
+#define MORECTL 1
+#define MOREDATA 2
 
 struct bandinfo {
-	unsigned char bi_pri;
-	int bi_flag;
+  unsigned char bi_pri;
+  int bi_flag;
 };
 
 struct strbuf {
-	int maxlen;
-	int len;
-	char *buf;
+  int maxlen;
+  int len;
+  char* buf;
 };
 
 struct strpeek {
-	struct strbuf ctlbuf;
-	struct strbuf databuf;
-	unsigned flags;
+  struct strbuf ctlbuf;
+  struct strbuf databuf;
+  unsigned flags;
 };
 
 struct strfdinsert {
-	struct strbuf ctlbuf;
-	struct strbuf databuf;
-	unsigned flags;
-	int fildes;
-	int offset;
+  struct strbuf ctlbuf;
+  struct strbuf databuf;
+  unsigned flags;
+  int fildes;
+  int offset;
 };
 
 struct strioctl {
-	int ic_cmd;
-	int ic_timout;
-	int ic_len;
-	char *ic_dp;
+  int ic_cmd;
+  int ic_timout;
+  int ic_len;
+  char* ic_dp;
 };
 
 struct strrecvfd {
-	int fd;
-	int uid;
-	int gid;
-	char __fill[8];
+  int fd;
+  int uid;
+  int gid;
+  char __fill[8];
 };
 
 struct str_mlist {
-	char l_name[FMNAMESZ + 1];
+  char l_name[FMNAMESZ + 1];
 };
 
 struct str_list {
-	int sl_nmods;
-	struct str_mlist *sl_modlist;
+  int sl_nmods;
+  struct str_mlist* sl_modlist;
 };
 
 int isastream(int);
diff --git a/fusl/include/sys/acct.h b/fusl/include/sys/acct.h
index ee576c4..97c8eed 100644
--- a/fusl/include/sys/acct.h
+++ b/fusl/include/sys/acct.h
@@ -14,59 +14,56 @@
 
 typedef uint16_t comp_t;
 
-struct acct
-{
-	char ac_flag;
-	uint16_t ac_uid;
-	uint16_t ac_gid;
-	uint16_t ac_tty;
-	uint32_t ac_btime;
-	comp_t ac_utime;
-	comp_t ac_stime;
-	comp_t ac_etime;
-	comp_t ac_mem;
-	comp_t ac_io;
-	comp_t ac_rw;
-	comp_t ac_minflt;
-	comp_t ac_majflt;
-	comp_t ac_swaps;
-	uint32_t ac_exitcode;
-	char ac_comm[ACCT_COMM+1];
-	char ac_pad[10];
+struct acct {
+  char ac_flag;
+  uint16_t ac_uid;
+  uint16_t ac_gid;
+  uint16_t ac_tty;
+  uint32_t ac_btime;
+  comp_t ac_utime;
+  comp_t ac_stime;
+  comp_t ac_etime;
+  comp_t ac_mem;
+  comp_t ac_io;
+  comp_t ac_rw;
+  comp_t ac_minflt;
+  comp_t ac_majflt;
+  comp_t ac_swaps;
+  uint32_t ac_exitcode;
+  char ac_comm[ACCT_COMM + 1];
+  char ac_pad[10];
 };
 
-
-struct acct_v3
-{
-	char ac_flag;
-	char ac_version;
-	uint16_t ac_tty;
-	uint32_t ac_exitcode;
-	uint32_t ac_uid;
-	uint32_t ac_gid;
-	uint32_t ac_pid;
-	uint32_t ac_ppid;
-	uint32_t ac_btime;
-	float ac_etime;
-	comp_t ac_utime;
-	comp_t ac_stime;
-	comp_t ac_mem;
-	comp_t ac_io;
-	comp_t ac_rw;
-	comp_t ac_minflt;
-	comp_t ac_majflt;
-	comp_t ac_swaps;
-	char ac_comm[ACCT_COMM];
+struct acct_v3 {
+  char ac_flag;
+  char ac_version;
+  uint16_t ac_tty;
+  uint32_t ac_exitcode;
+  uint32_t ac_uid;
+  uint32_t ac_gid;
+  uint32_t ac_pid;
+  uint32_t ac_ppid;
+  uint32_t ac_btime;
+  float ac_etime;
+  comp_t ac_utime;
+  comp_t ac_stime;
+  comp_t ac_mem;
+  comp_t ac_io;
+  comp_t ac_rw;
+  comp_t ac_minflt;
+  comp_t ac_majflt;
+  comp_t ac_swaps;
+  char ac_comm[ACCT_COMM];
 };
 
 #define AFORK 1
 #define ASU 2
 #define ACORE 8
 #define AXSIG 16
-#define ACCT_BYTEORDER (128*(__BYTE_ORDER==__BIG_ENDIAN))
+#define ACCT_BYTEORDER (128 * (__BYTE_ORDER == __BIG_ENDIAN))
 #define AHZ 100
 
-int acct(const char *);
+int acct(const char*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/cachectl.h b/fusl/include/sys/cachectl.h
index f3b896a..edbda58 100644
--- a/fusl/include/sys/cachectl.h
+++ b/fusl/include/sys/cachectl.h
@@ -5,15 +5,15 @@
 extern "C" {
 #endif
 
-#define ICACHE (1<<0)
-#define DCACHE (1<<1)
-#define BCACHE (ICACHE|DCACHE)
+#define ICACHE (1 << 0)
+#define DCACHE (1 << 1)
+#define BCACHE (ICACHE | DCACHE)
 #define CACHEABLE 0
 #define UNCACHEABLE 1
- 
-int cachectl(void *, int, int);
-int cacheflush(void *, int, int);
-int _flush_cache(void *, int, int);
+
+int cachectl(void*, int, int);
+int cacheflush(void*, int, int);
+int _flush_cache(void*, int, int);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/epoll.h b/fusl/include/sys/epoll.h
index 1f0312e..316c5f3 100644
--- a/fusl/include/sys/epoll.h
+++ b/fusl/include/sys/epoll.h
@@ -1,5 +1,5 @@
-#ifndef	_SYS_EPOLL_H
-#define	_SYS_EPOLL_H
+#ifndef _SYS_EPOLL_H
+#define _SYS_EPOLL_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -28,37 +28,35 @@
 #define EPOLLERR 0x008
 #define EPOLLHUP 0x010
 #define EPOLLRDHUP 0x2000
-#define EPOLLWAKEUP (1U<<29)
-#define EPOLLONESHOT (1U<<30)
-#define EPOLLET (1U<<31)
+#define EPOLLWAKEUP (1U << 29)
+#define EPOLLONESHOT (1U << 30)
+#define EPOLLET (1U << 31)
 
 #define EPOLL_CTL_ADD 1
 #define EPOLL_CTL_DEL 2
 #define EPOLL_CTL_MOD 3
 
 typedef union epoll_data {
-	void *ptr;
-	int fd;
-	uint32_t u32;
-	uint64_t u64;
+  void* ptr;
+  int fd;
+  uint32_t u32;
+  uint64_t u64;
 } epoll_data_t;
 
 struct epoll_event {
-	uint32_t events;
-	epoll_data_t data;
+  uint32_t events;
+  epoll_data_t data;
 }
 #ifdef __x86_64__
-__attribute__ ((__packed__))
+__attribute__((__packed__))
 #endif
 ;
 
-
 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);
-int epoll_pwait(int, struct epoll_event *, int, int, const sigset_t *);
-
+int epoll_ctl(int, int, int, struct epoll_event*);
+int epoll_wait(int, struct epoll_event*, int, int);
+int epoll_pwait(int, struct epoll_event*, int, int, const sigset_t*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/eventfd.h b/fusl/include/sys/eventfd.h
index dc5c88f..dda2aac 100644
--- a/fusl/include/sys/eventfd.h
+++ b/fusl/include/sys/eventfd.h
@@ -15,10 +15,9 @@
 #define EFD_NONBLOCK O_NONBLOCK
 
 int eventfd(unsigned int, int);
-int eventfd_read(int, eventfd_t *);
+int eventfd_read(int, eventfd_t*);
 int eventfd_write(int, eventfd_t);
 
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/fusl/include/sys/fanotify.h b/fusl/include/sys/fanotify.h
index daab76b..bcd325e 100644
--- a/fusl/include/sys/fanotify.h
+++ b/fusl/include/sys/fanotify.h
@@ -6,22 +6,22 @@
 #endif
 
 struct fanotify_event_metadata {
-	unsigned event_len;
-	unsigned char vers;
-	unsigned char reserved;
-	unsigned short metadata_len;
-	unsigned long long mask
+  unsigned event_len;
+  unsigned char vers;
+  unsigned char reserved;
+  unsigned short metadata_len;
+  unsigned long long mask
 #ifdef __GNUC__
-	__attribute__((__aligned__(8)))
+      __attribute__((__aligned__(8)))
 #endif
-	;
-	int fd;
-	int pid;
+      ;
+  int fd;
+  int pid;
 };
 
 struct fanotify_response {
-	int fd;
-	unsigned response;
+  int fd;
+  unsigned response;
 };
 
 #define FAN_ACCESS 0x01
@@ -40,10 +40,13 @@
 #define FAN_CLASS_NOTIF 0
 #define FAN_CLASS_CONTENT 0x04
 #define FAN_CLASS_PRE_CONTENT 0x08
-#define FAN_ALL_CLASS_BITS (FAN_CLASS_NOTIF | FAN_CLASS_CONTENT | FAN_CLASS_PRE_CONTENT)
+#define FAN_ALL_CLASS_BITS \
+  (FAN_CLASS_NOTIF | FAN_CLASS_CONTENT | FAN_CLASS_PRE_CONTENT)
 #define FAN_UNLIMITED_QUEUE 0x10
 #define FAN_UNLIMITED_MARKS 0x20
-#define FAN_ALL_INIT_FLAGS (FAN_CLOEXEC | FAN_NONBLOCK | FAN_ALL_CLASS_BITS | FAN_UNLIMITED_QUEUE | FAN_UNLIMITED_MARKS)
+#define FAN_ALL_INIT_FLAGS                                                 \
+  (FAN_CLOEXEC | FAN_NONBLOCK | FAN_ALL_CLASS_BITS | FAN_UNLIMITED_QUEUE | \
+   FAN_UNLIMITED_MARKS)
 #define FAN_MARK_ADD 0x01
 #define FAN_MARK_REMOVE 0x02
 #define FAN_MARK_DONT_FOLLOW 0x04
@@ -52,20 +55,29 @@
 #define FAN_MARK_IGNORED_MASK 0x20
 #define FAN_MARK_IGNORED_SURV_MODIFY 0x40
 #define FAN_MARK_FLUSH 0x80
-#define FAN_ALL_MARK_FLAGS (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_DONT_FOLLOW | FAN_MARK_ONLYDIR | FAN_MARK_MOUNT | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY | FAN_MARK_FLUSH)
+#define FAN_ALL_MARK_FLAGS                                                    \
+  (FAN_MARK_ADD | FAN_MARK_REMOVE | FAN_MARK_DONT_FOLLOW | FAN_MARK_ONLYDIR | \
+   FAN_MARK_MOUNT | FAN_MARK_IGNORED_MASK | FAN_MARK_IGNORED_SURV_MODIFY |    \
+   FAN_MARK_FLUSH)
 #define FAN_ALL_EVENTS (FAN_ACCESS | FAN_MODIFY | FAN_CLOSE | FAN_OPEN)
 #define FAN_ALL_PERM_EVENTS (FAN_OPEN_PERM | FAN_ACCESS_PERM)
-#define FAN_ALL_OUTGOING_EVENTS (FAN_ALL_EVENTS | FAN_ALL_PERM_EVENTS | FAN_Q_OVERFLOW)
+#define FAN_ALL_OUTGOING_EVENTS \
+  (FAN_ALL_EVENTS | FAN_ALL_PERM_EVENTS | FAN_Q_OVERFLOW)
 #define FANOTIFY_METADATA_VERSION 3
 #define FAN_ALLOW 0x01
 #define FAN_DENY 0x02
 #define FAN_NOFD -1
 #define FAN_EVENT_METADATA_LEN (sizeof(struct fanotify_event_metadata))
-#define FAN_EVENT_NEXT(meta, len) ((len) -= (meta)->event_len, (struct fanotify_event_metadata*)(((char *)(meta)) + (meta)->event_len))
-#define FAN_EVENT_OK(meta, len) ((long)(len) >= (long)FAN_EVENT_METADATA_LEN && (long)(meta)->event_len >= (long)FAN_EVENT_METADATA_LEN && (long)(meta)->event_len <= (long)(len))
+#define FAN_EVENT_NEXT(meta, len) \
+  ((len) -= (meta)->event_len,    \
+   (struct fanotify_event_metadata*)(((char*)(meta)) + (meta)->event_len))
+#define FAN_EVENT_OK(meta, len)                               \
+  ((long)(len) >= (long)FAN_EVENT_METADATA_LEN &&             \
+   (long)(meta)->event_len >= (long)FAN_EVENT_METADATA_LEN && \
+   (long)(meta)->event_len <= (long)(len))
 
 int fanotify_init(unsigned, unsigned);
-int fanotify_mark(int, unsigned, unsigned long long, int, const char *);
+int fanotify_mark(int, unsigned, unsigned long long, int, const char*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/file.h b/fusl/include/sys/file.h
index 4fc83b9..5497b3a 100644
--- a/fusl/include/sys/file.h
+++ b/fusl/include/sys/file.h
@@ -4,10 +4,10 @@
 extern "C" {
 #endif
 
-#define LOCK_SH	1
-#define LOCK_EX	2
-#define LOCK_NB	4
-#define LOCK_UN	8
+#define LOCK_SH 1
+#define LOCK_EX 2
+#define LOCK_NB 4
+#define LOCK_UN 8
 
 #define L_SET 0
 #define L_INCR 1
diff --git a/fusl/include/sys/inotify.h b/fusl/include/sys/inotify.h
index 46638ca..f75dba1 100644
--- a/fusl/include/sys/inotify.h
+++ b/fusl/include/sys/inotify.h
@@ -9,45 +9,45 @@
 #include <fcntl.h>
 
 struct inotify_event {
-	int wd;
-	uint32_t mask, cookie, len;
-	char name[];
+  int wd;
+  uint32_t mask, cookie, len;
+  char name[];
 };
 
 #define IN_CLOEXEC O_CLOEXEC
 #define IN_NONBLOCK O_NONBLOCK
 
-#define IN_ACCESS        0x00000001
-#define IN_MODIFY        0x00000002
-#define IN_ATTRIB        0x00000004
-#define IN_CLOSE_WRITE   0x00000008
+#define IN_ACCESS 0x00000001
+#define IN_MODIFY 0x00000002
+#define IN_ATTRIB 0x00000004
+#define IN_CLOSE_WRITE 0x00000008
 #define IN_CLOSE_NOWRITE 0x00000010
-#define IN_CLOSE         (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
-#define IN_OPEN          0x00000020
-#define IN_MOVED_FROM    0x00000040
-#define IN_MOVED_TO      0x00000080
-#define IN_MOVE          (IN_MOVED_FROM | IN_MOVED_TO)
-#define IN_CREATE        0x00000100
-#define IN_DELETE        0x00000200
-#define IN_DELETE_SELF   0x00000400
-#define IN_MOVE_SELF     0x00000800
-#define IN_ALL_EVENTS    0x00000fff
+#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE)
+#define IN_OPEN 0x00000020
+#define IN_MOVED_FROM 0x00000040
+#define IN_MOVED_TO 0x00000080
+#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO)
+#define IN_CREATE 0x00000100
+#define IN_DELETE 0x00000200
+#define IN_DELETE_SELF 0x00000400
+#define IN_MOVE_SELF 0x00000800
+#define IN_ALL_EVENTS 0x00000fff
 
-#define IN_UNMOUNT       0x00002000
-#define IN_Q_OVERFLOW    0x00004000
-#define IN_IGNORED       0x00008000
+#define IN_UNMOUNT 0x00002000
+#define IN_Q_OVERFLOW 0x00004000
+#define IN_IGNORED 0x00008000
 
-#define IN_ONLYDIR       0x01000000
-#define IN_DONT_FOLLOW   0x02000000
-#define IN_EXCL_UNLINK   0x04000000
-#define IN_MASK_ADD      0x20000000
+#define IN_ONLYDIR 0x01000000
+#define IN_DONT_FOLLOW 0x02000000
+#define IN_EXCL_UNLINK 0x04000000
+#define IN_MASK_ADD 0x20000000
 
-#define IN_ISDIR         0x40000000
-#define IN_ONESHOT       0x80000000
+#define IN_ISDIR 0x40000000
+#define IN_ONESHOT 0x80000000
 
 int inotify_init(void);
 int inotify_init1(int);
-int inotify_add_watch(int, const char *, uint32_t);
+int inotify_add_watch(int, const char*, uint32_t);
 int inotify_rm_watch(int, int);
 
 #ifdef __cplusplus
diff --git a/fusl/include/sys/io.h b/fusl/include/sys/io.h
index 16658ce..648dd67 100644
--- a/fusl/include/sys/io.h
+++ b/fusl/include/sys/io.h
@@ -1,5 +1,5 @@
-#ifndef	_SYS_IO_H
-#define	_SYS_IO_H
+#ifndef _SYS_IO_H
+#define _SYS_IO_H
 #ifdef __cplusplus
 extern "C" {
 #endif
diff --git a/fusl/include/sys/ioctl.h b/fusl/include/sys/ioctl.h
index d0415b3..9901d7e 100644
--- a/fusl/include/sys/ioctl.h
+++ b/fusl/include/sys/ioctl.h
@@ -1,12 +1,12 @@
-#ifndef	_SYS_IOCTL_H
-#define	_SYS_IOCTL_H
+#ifndef _SYS_IOCTL_H
+#define _SYS_IOCTL_H
 #ifdef __cplusplus
 extern "C" {
 #endif
 
 #include <bits/ioctl.h>
 
-int ioctl (int, int, ...);
+int ioctl(int, int, ...);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/ipc.h b/fusl/include/sys/ipc.h
index c5a3981..7c439fb 100644
--- a/fusl/include/sys/ipc.h
+++ b/fusl/include/sys/ipc.h
@@ -23,18 +23,18 @@
 
 #include <bits/ipc.h>
 
-#define IPC_CREAT  01000
-#define IPC_EXCL   02000
+#define IPC_CREAT 01000
+#define IPC_EXCL 02000
 #define IPC_NOWAIT 04000
 
 #define IPC_RMID 0
-#define IPC_SET  1
+#define IPC_SET 1
 #define IPC_STAT 2
 #define IPC_INFO 3
 
-#define IPC_PRIVATE ((key_t) 0)
+#define IPC_PRIVATE ((key_t)0)
 
-key_t ftok (const char *, int);
+key_t ftok(const char*, int);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/klog.h b/fusl/include/sys/klog.h
index aa66684..f3a8115 100644
--- a/fusl/include/sys/klog.h
+++ b/fusl/include/sys/klog.h
@@ -1,11 +1,11 @@
-#ifndef	_SYS_KLOG_H
-#define	_SYS_KLOG_H
+#ifndef _SYS_KLOG_H
+#define _SYS_KLOG_H
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-int klogctl (int, char *, int);
+int klogctl(int, char*, int);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/mman.h b/fusl/include/sys/mman.h
index a1864ec..748875d 100644
--- a/fusl/include/sys/mman.h
+++ b/fusl/include/sys/mman.h
@@ -1,5 +1,5 @@
-#ifndef	_SYS_MMAN_H
-#define	_SYS_MMAN_H
+#ifndef _SYS_MMAN_H
+#define _SYS_MMAN_H
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -18,34 +18,34 @@
 
 #include <bits/mman.h>
 
-void *mmap (void *, size_t, int, int, int, off_t);
-int munmap (void *, size_t);
+void* mmap(void*, size_t, int, int, int, off_t);
+int munmap(void*, size_t);
 
-int mprotect (void *, size_t, int);
-int msync (void *, size_t, int);
+int mprotect(void*, size_t, int);
+int msync(void*, size_t, int);
 
-int posix_madvise (void *, size_t, int);
+int posix_madvise(void*, size_t, int);
 
-int mlock (const void *, size_t);
-int munlock (const void *, size_t);
-int mlockall (int);
-int munlockall (void);
+int mlock(const void*, size_t);
+int munlock(const void*, size_t);
+int mlockall(int);
+int munlockall(void);
 
 #ifdef _GNU_SOURCE
 #define MREMAP_MAYMOVE 1
 #define MREMAP_FIXED 2
-void *mremap (void *, size_t, size_t, int, ...);
-int remap_file_pages (void *, size_t, int, size_t, int);
+void* mremap(void*, size_t, size_t, int, ...);
+int remap_file_pages(void*, size_t, int, size_t, int);
 #endif
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#define MLOCK_ONFAULT   0x01
-int madvise (void *, size_t, int);
-int mincore (void *, size_t, unsigned char *);
+#define MLOCK_ONFAULT 0x01
+int madvise(void*, size_t, int);
+int mincore(void*, size_t, unsigned char*);
 #endif
 
-int shm_open (const char *, int, mode_t);
-int shm_unlink (const char *);
+int shm_open(const char*, int, mode_t);
+int shm_unlink(const char*);
 
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
 #define mmap64 mmap
diff --git a/fusl/include/sys/mount.h b/fusl/include/sys/mount.h
index 6674e65..f6adaf1 100644
--- a/fusl/include/sys/mount.h
+++ b/fusl/include/sys/mount.h
@@ -7,64 +7,65 @@
 
 #include <sys/ioctl.h>
 
-#define BLKROSET   _IO(0x12, 93)
-#define BLKROGET   _IO(0x12, 94)
-#define BLKRRPART  _IO(0x12, 95)
+#define BLKROSET _IO(0x12, 93)
+#define BLKROGET _IO(0x12, 94)
+#define BLKRRPART _IO(0x12, 95)
 #define BLKGETSIZE _IO(0x12, 96)
-#define BLKFLSBUF  _IO(0x12, 97)
-#define BLKRASET   _IO(0x12, 98)
-#define BLKRAGET   _IO(0x12, 99)
-#define BLKFRASET  _IO(0x12,100)
-#define BLKFRAGET  _IO(0x12,101)
-#define BLKSECTSET _IO(0x12,102)
-#define BLKSECTGET _IO(0x12,103)
-#define BLKSSZGET  _IO(0x12,104)
-#define BLKBSZGET  _IOR(0x12,112,size_t)
-#define BLKBSZSET  _IOW(0x12,113,size_t)
-#define BLKGETSIZE64 _IOR(0x12,114,size_t)
+#define BLKFLSBUF _IO(0x12, 97)
+#define BLKRASET _IO(0x12, 98)
+#define BLKRAGET _IO(0x12, 99)
+#define BLKFRASET _IO(0x12, 100)
+#define BLKFRAGET _IO(0x12, 101)
+#define BLKSECTSET _IO(0x12, 102)
+#define BLKSECTGET _IO(0x12, 103)
+#define BLKSSZGET _IO(0x12, 104)
+#define BLKBSZGET _IOR(0x12, 112, size_t)
+#define BLKBSZSET _IOW(0x12, 113, size_t)
+#define BLKGETSIZE64 _IOR(0x12, 114, size_t)
 
-#define MS_RDONLY      1
-#define MS_NOSUID      2
-#define MS_NODEV       4
-#define MS_NOEXEC      8
+#define MS_RDONLY 1
+#define MS_NOSUID 2
+#define MS_NODEV 4
+#define MS_NOEXEC 8
 #define MS_SYNCHRONOUS 16
-#define MS_REMOUNT     32
-#define MS_MANDLOCK    64
-#define MS_DIRSYNC     128
-#define MS_NOATIME     1024
-#define MS_NODIRATIME  2048
-#define MS_BIND        4096
-#define MS_MOVE        8192
-#define MS_REC         16384
-#define MS_SILENT      32768
-#define MS_POSIXACL    (1<<16)
-#define MS_UNBINDABLE  (1<<17)
-#define MS_PRIVATE     (1<<18)
-#define MS_SLAVE       (1<<19)
-#define MS_SHARED      (1<<20)
-#define MS_RELATIME    (1<<21)
-#define MS_KERNMOUNT   (1<<22)
-#define MS_I_VERSION   (1<<23)
-#define MS_STRICTATIME (1<<24)
-#define MS_LAZYTIME    (1<<25)
-#define MS_NOSEC       (1<<28)
-#define MS_BORN        (1<<29)
-#define MS_ACTIVE      (1<<30)
-#define MS_NOUSER      (1U<<31)
+#define MS_REMOUNT 32
+#define MS_MANDLOCK 64
+#define MS_DIRSYNC 128
+#define MS_NOATIME 1024
+#define MS_NODIRATIME 2048
+#define MS_BIND 4096
+#define MS_MOVE 8192
+#define MS_REC 16384
+#define MS_SILENT 32768
+#define MS_POSIXACL (1 << 16)
+#define MS_UNBINDABLE (1 << 17)
+#define MS_PRIVATE (1 << 18)
+#define MS_SLAVE (1 << 19)
+#define MS_SHARED (1 << 20)
+#define MS_RELATIME (1 << 21)
+#define MS_KERNMOUNT (1 << 22)
+#define MS_I_VERSION (1 << 23)
+#define MS_STRICTATIME (1 << 24)
+#define MS_LAZYTIME (1 << 25)
+#define MS_NOSEC (1 << 28)
+#define MS_BORN (1 << 29)
+#define MS_ACTIVE (1 << 30)
+#define MS_NOUSER (1U << 31)
 
-#define MS_RMT_MASK (MS_RDONLY|MS_SYNCHRONOUS|MS_MANDLOCK|MS_I_VERSION|MS_LAZYTIME)
+#define MS_RMT_MASK \
+  (MS_RDONLY | MS_SYNCHRONOUS | MS_MANDLOCK | MS_I_VERSION | MS_LAZYTIME)
 
 #define MS_MGC_VAL 0xc0ed0000
 #define MS_MGC_MSK 0xffff0000
 
-#define MNT_FORCE       1
-#define MNT_DETACH      2
-#define MNT_EXPIRE      4
+#define MNT_FORCE 1
+#define MNT_DETACH 2
+#define MNT_EXPIRE 4
 #define UMOUNT_NOFOLLOW 8
 
-int mount(const char *, const char *, const char *, unsigned long, const void *);
-int umount(const char *);
-int umount2(const char *, int);
+int mount(const char*, const char*, const char*, unsigned long, const void*);
+int umount(const char*);
+int umount2(const char*, int);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/msg.h b/fusl/include/sys/msg.h
index 139f22b..b5c7e06 100644
--- a/fusl/include/sys/msg.h
+++ b/fusl/include/sys/msg.h
@@ -23,25 +23,25 @@
 #define __msg_cbytes msg_cbytes
 
 #define MSG_NOERROR 010000
-#define MSG_EXCEPT  020000
+#define MSG_EXCEPT 020000
 
 #define MSG_STAT 11
 #define MSG_INFO 12
 
 struct msginfo {
-	int msgpool, msgmap, msgmax, msgmnb, msgmni, msgssz, msgtql;
-	unsigned short msgseg;
+  int msgpool, msgmap, msgmax, msgmnb, msgmni, msgssz, msgtql;
+  unsigned short msgseg;
 };
 
-int msgctl (int, int, struct msqid_ds *);
-int msgget (key_t, int);
-ssize_t msgrcv (int, void *, size_t, long, int);
-int msgsnd (int, const void *, size_t, int);
+int msgctl(int, int, struct msqid_ds*);
+int msgget(key_t, int);
+ssize_t msgrcv(int, void*, size_t, long, int);
+int msgsnd(int, const void*, size_t, int);
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 struct msgbuf {
-	long mtype;
-	char mtext[1];
+  long mtype;
+  char mtext[1];
 };
 #endif
 
diff --git a/fusl/include/sys/mtio.h b/fusl/include/sys/mtio.h
index f16a529..e1d15e4 100644
--- a/fusl/include/sys/mtio.h
+++ b/fusl/include/sys/mtio.h
@@ -5,184 +5,184 @@
 #include <sys/ioctl.h>
 
 struct mtop {
-	short mt_op;
-	int mt_count;
+  short mt_op;
+  int mt_count;
 };
 
-#define _IOT_mtop _IOT (_IOTS (short), 1, _IOTS (int), 1, 0, 0)
-#define _IOT_mtget _IOT (_IOTS (long), 7, 0, 0, 0, 0)
-#define _IOT_mtpos _IOT_SIMPLE (long)
-#define _IOT_mtconfiginfo _IOT (_IOTS (long), 2, _IOTS (short), 3, _IOTS (long), 1)
-
+#define _IOT_mtop _IOT(_IOTS(short), 1, _IOTS(int), 1, 0, 0)
+#define _IOT_mtget _IOT(_IOTS(long), 7, 0, 0, 0, 0)
+#define _IOT_mtpos _IOT_SIMPLE(long)
+#define _IOT_mtconfiginfo _IOT(_IOTS(long), 2, _IOTS(short), 3, _IOTS(long), 1)
 
 #define MTRESET 0
-#define MTFSF	1
-#define MTBSF	2
-#define MTFSR	3
-#define MTBSR	4
-#define MTWEOF	5
-#define MTREW	6
-#define MTOFFL	7
-#define MTNOP	8
+#define MTFSF 1
+#define MTBSF 2
+#define MTFSR 3
+#define MTBSR 4
+#define MTWEOF 5
+#define MTREW 6
+#define MTOFFL 7
+#define MTNOP 8
 #define MTRETEN 9
-#define MTBSFM	10
-#define MTFSFM  11
-#define MTEOM	12
+#define MTBSFM 10
+#define MTFSFM 11
+#define MTEOM 12
 #define MTERASE 13
-#define MTRAS1  14
-#define MTRAS2	15
-#define MTRAS3  16
+#define MTRAS1 14
+#define MTRAS2 15
+#define MTRAS3 16
 #define MTSETBLK 20
 #define MTSETDENSITY 21
-#define MTSEEK	22
-#define MTTELL	23
+#define MTSEEK 22
+#define MTTELL 23
 #define MTSETDRVBUFFER 24
-#define MTFSS	25
-#define MTBSS	26
-#define MTWSM	27
-#define MTLOCK  28
+#define MTFSS 25
+#define MTBSS 26
+#define MTWSM 27
+#define MTLOCK 28
 #define MTUNLOCK 29
-#define MTLOAD  30
+#define MTLOAD 30
 #define MTUNLOAD 31
 #define MTCOMPRESSION 32
 #define MTSETPART 33
-#define MTMKPART  34
+#define MTMKPART 34
 
 struct mtget {
-	long mt_type;
-	long mt_resid;
-	long mt_dsreg;
-	long mt_gstat;
-	long mt_erreg;
-	int mt_fileno;
-	int mt_blkno;
+  long mt_type;
+  long mt_resid;
+  long mt_dsreg;
+  long mt_gstat;
+  long mt_erreg;
+  int mt_fileno;
+  int mt_blkno;
 };
 
-#define MT_ISUNKNOWN		0x01
-#define MT_ISQIC02		0x02
-#define MT_ISWT5150		0x03
-#define MT_ISARCHIVE_5945L2	0x04
-#define MT_ISCMSJ500		0x05
-#define MT_ISTDC3610		0x06
-#define MT_ISARCHIVE_VP60I	0x07
-#define MT_ISARCHIVE_2150L	0x08
-#define MT_ISARCHIVE_2060L	0x09
-#define MT_ISARCHIVESC499	0x0A
-#define MT_ISQIC02_ALL_FEATURES	0x0F
-#define MT_ISWT5099EEN24	0x11
-#define MT_ISTEAC_MT2ST		0x12
-#define MT_ISEVEREX_FT40A	0x32
-#define MT_ISDDS1		0x51
-#define MT_ISDDS2		0x52
-#define MT_ISSCSI1		0x71
-#define MT_ISSCSI2		0x72
-#define MT_ISFTAPE_UNKNOWN	0x800000
-#define MT_ISFTAPE_FLAG		0x800000
+#define MT_ISUNKNOWN 0x01
+#define MT_ISQIC02 0x02
+#define MT_ISWT5150 0x03
+#define MT_ISARCHIVE_5945L2 0x04
+#define MT_ISCMSJ500 0x05
+#define MT_ISTDC3610 0x06
+#define MT_ISARCHIVE_VP60I 0x07
+#define MT_ISARCHIVE_2150L 0x08
+#define MT_ISARCHIVE_2060L 0x09
+#define MT_ISARCHIVESC499 0x0A
+#define MT_ISQIC02_ALL_FEATURES 0x0F
+#define MT_ISWT5099EEN24 0x11
+#define MT_ISTEAC_MT2ST 0x12
+#define MT_ISEVEREX_FT40A 0x32
+#define MT_ISDDS1 0x51
+#define MT_ISDDS2 0x52
+#define MT_ISSCSI1 0x71
+#define MT_ISSCSI2 0x72
+#define MT_ISFTAPE_UNKNOWN 0x800000
+#define MT_ISFTAPE_FLAG 0x800000
 
 struct mt_tape_info {
-	long t_type;
-	char *t_name;
+  long t_type;
+  char* t_name;
 };
 
-#define MT_TAPE_INFO \
-{									      \
-	{MT_ISUNKNOWN,		"Unknown type of tape device"},		      \
-	{MT_ISQIC02,		"Generic QIC-02 tape streamer"},	      \
-	{MT_ISWT5150,		"Wangtek 5150, QIC-150"},		      \
-	{MT_ISARCHIVE_5945L2,	"Archive 5945L-2"},			      \
-	{MT_ISCMSJ500,		"CMS Jumbo 500"},			      \
-	{MT_ISTDC3610,		"Tandberg TDC 3610, QIC-24"},		      \
-	{MT_ISARCHIVE_VP60I,	"Archive VP60i, QIC-02"},		      \
-	{MT_ISARCHIVE_2150L,	"Archive Viper 2150L"},			      \
-	{MT_ISARCHIVE_2060L,	"Archive Viper 2060L"},			      \
-	{MT_ISARCHIVESC499,	"Archive SC-499 QIC-36 controller"},	      \
-	{MT_ISQIC02_ALL_FEATURES, "Generic QIC-02 tape, all features"},	      \
-	{MT_ISWT5099EEN24,	"Wangtek 5099-een24, 60MB"},		      \
-	{MT_ISTEAC_MT2ST,	"Teac MT-2ST 155mb data cassette drive"},     \
-	{MT_ISEVEREX_FT40A,	"Everex FT40A, QIC-40"},		      \
-	{MT_ISSCSI1,		"Generic SCSI-1 tape"},			      \
-	{MT_ISSCSI2,		"Generic SCSI-2 tape"},			      \
-	{0, 0}								      \
-}
+#define MT_TAPE_INFO                                                    \
+  {                                                                     \
+    {MT_ISUNKNOWN, "Unknown type of tape device"},                      \
+        {MT_ISQIC02, "Generic QIC-02 tape streamer"},                   \
+        {MT_ISWT5150, "Wangtek 5150, QIC-150"},                         \
+        {MT_ISARCHIVE_5945L2, "Archive 5945L-2"},                       \
+        {MT_ISCMSJ500, "CMS Jumbo 500"},                                \
+        {MT_ISTDC3610, "Tandberg TDC 3610, QIC-24"},                    \
+        {MT_ISARCHIVE_VP60I, "Archive VP60i, QIC-02"},                  \
+        {MT_ISARCHIVE_2150L, "Archive Viper 2150L"},                    \
+        {MT_ISARCHIVE_2060L, "Archive Viper 2060L"},                    \
+        {MT_ISARCHIVESC499, "Archive SC-499 QIC-36 controller"},        \
+        {MT_ISQIC02_ALL_FEATURES, "Generic QIC-02 tape, all features"}, \
+        {MT_ISWT5099EEN24, "Wangtek 5099-een24, 60MB"},                 \
+        {MT_ISTEAC_MT2ST, "Teac MT-2ST 155mb data cassette drive"},     \
+        {MT_ISEVEREX_FT40A, "Everex FT40A, QIC-40"},                    \
+        {MT_ISSCSI1, "Generic SCSI-1 tape"},                            \
+        {MT_ISSCSI2, "Generic SCSI-2 tape"}, {                          \
+      0, 0                                                              \
+    }                                                                   \
+  }
 
 struct mtpos {
-	long mt_blkno;
+  long mt_blkno;
 };
 
-struct mtconfiginfo  {
-	long mt_type;
-	long ifc_type;
-	unsigned short irqnr;
-	unsigned short dmanr;
-	unsigned short port;
-	unsigned long debug;
-	unsigned have_dens:1;
-	unsigned have_bsf:1;
-	unsigned have_fsr:1;
-	unsigned have_bsr:1;
-	unsigned have_eod:1;
-	unsigned have_seek:1;
-	unsigned have_tell:1;
-	unsigned have_ras1:1;
-	unsigned have_ras2:1;
-	unsigned have_ras3:1;
-	unsigned have_qfa:1;
-	unsigned pad1:5;
-	char reserved[10];
+struct mtconfiginfo {
+  long mt_type;
+  long ifc_type;
+  unsigned short irqnr;
+  unsigned short dmanr;
+  unsigned short port;
+  unsigned long debug;
+  unsigned have_dens : 1;
+  unsigned have_bsf : 1;
+  unsigned have_fsr : 1;
+  unsigned have_bsr : 1;
+  unsigned have_eod : 1;
+  unsigned have_seek : 1;
+  unsigned have_tell : 1;
+  unsigned have_ras1 : 1;
+  unsigned have_ras2 : 1;
+  unsigned have_ras3 : 1;
+  unsigned have_qfa : 1;
+  unsigned pad1 : 5;
+  char reserved[10];
 };
 
-#define	MTIOCTOP _IOW('m', 1, struct mtop)
-#define	MTIOCGET _IOR('m', 2, struct mtget)
-#define	MTIOCPOS _IOR('m', 3, struct mtpos)
+#define MTIOCTOP _IOW('m', 1, struct mtop)
+#define MTIOCGET _IOR('m', 2, struct mtget)
+#define MTIOCPOS _IOR('m', 3, struct mtpos)
 
-#define	MTIOCGETCONFIG	_IOR('m', 4, struct mtconfiginfo)
-#define	MTIOCSETCONFIG	_IOW('m', 5, struct mtconfiginfo)
+#define MTIOCGETCONFIG _IOR('m', 4, struct mtconfiginfo)
+#define MTIOCSETCONFIG _IOW('m', 5, struct mtconfiginfo)
 
-#define GMT_EOF(x)              ((x) & 0x80000000)
-#define GMT_BOT(x)              ((x) & 0x40000000)
-#define GMT_EOT(x)              ((x) & 0x20000000)
-#define GMT_SM(x)               ((x) & 0x10000000)
-#define GMT_EOD(x)              ((x) & 0x08000000)
-#define GMT_WR_PROT(x)          ((x) & 0x04000000)
-#define GMT_ONLINE(x)           ((x) & 0x01000000)
-#define GMT_D_6250(x)           ((x) & 0x00800000)
-#define GMT_D_1600(x)           ((x) & 0x00400000)
-#define GMT_D_800(x)            ((x) & 0x00200000)
-#define GMT_DR_OPEN(x)          ((x) & 0x00040000)
-#define GMT_IM_REP_EN(x)        ((x) & 0x00010000)
+#define GMT_EOF(x) ((x)&0x80000000)
+#define GMT_BOT(x) ((x)&0x40000000)
+#define GMT_EOT(x) ((x)&0x20000000)
+#define GMT_SM(x) ((x)&0x10000000)
+#define GMT_EOD(x) ((x)&0x08000000)
+#define GMT_WR_PROT(x) ((x)&0x04000000)
+#define GMT_ONLINE(x) ((x)&0x01000000)
+#define GMT_D_6250(x) ((x)&0x00800000)
+#define GMT_D_1600(x) ((x)&0x00400000)
+#define GMT_D_800(x) ((x)&0x00200000)
+#define GMT_DR_OPEN(x) ((x)&0x00040000)
+#define GMT_IM_REP_EN(x) ((x)&0x00010000)
 
-#define MT_ST_BLKSIZE_SHIFT	0
-#define MT_ST_BLKSIZE_MASK	0xffffff
-#define MT_ST_DENSITY_SHIFT	24
-#define MT_ST_DENSITY_MASK	0xff000000
-#define MT_ST_SOFTERR_SHIFT	0
-#define MT_ST_SOFTERR_MASK	0xffff
-#define MT_ST_OPTIONS		0xf0000000
-#define MT_ST_BOOLEANS		0x10000000
-#define MT_ST_SETBOOLEANS	0x30000000
-#define MT_ST_CLEARBOOLEANS	0x40000000
-#define MT_ST_WRITE_THRESHOLD	0x20000000
-#define MT_ST_DEF_BLKSIZE	0x50000000
-#define MT_ST_DEF_OPTIONS	0x60000000
-#define MT_ST_BUFFER_WRITES	0x1
-#define MT_ST_ASYNC_WRITES	0x2
-#define MT_ST_READ_AHEAD	0x4
-#define MT_ST_DEBUGGING		0x8
-#define MT_ST_TWO_FM		0x10
-#define MT_ST_FAST_MTEOM	0x20
-#define MT_ST_AUTO_LOCK		0x40
-#define MT_ST_DEF_WRITES	0x80
-#define MT_ST_CAN_BSR		0x100
-#define MT_ST_NO_BLKLIMS	0x200
-#define MT_ST_CAN_PARTITIONS    0x400
-#define MT_ST_SCSI2LOGICAL      0x800
-#define MT_ST_CLEAR_DEFAULT	0xfffff
-#define MT_ST_DEF_DENSITY	(MT_ST_DEF_OPTIONS | 0x100000)
-#define MT_ST_DEF_COMPRESSION	(MT_ST_DEF_OPTIONS | 0x200000)
-#define MT_ST_DEF_DRVBUFFER	(MT_ST_DEF_OPTIONS | 0x300000)
+#define MT_ST_BLKSIZE_SHIFT 0
+#define MT_ST_BLKSIZE_MASK 0xffffff
+#define MT_ST_DENSITY_SHIFT 24
+#define MT_ST_DENSITY_MASK 0xff000000
+#define MT_ST_SOFTERR_SHIFT 0
+#define MT_ST_SOFTERR_MASK 0xffff
+#define MT_ST_OPTIONS 0xf0000000
+#define MT_ST_BOOLEANS 0x10000000
+#define MT_ST_SETBOOLEANS 0x30000000
+#define MT_ST_CLEARBOOLEANS 0x40000000
+#define MT_ST_WRITE_THRESHOLD 0x20000000
+#define MT_ST_DEF_BLKSIZE 0x50000000
+#define MT_ST_DEF_OPTIONS 0x60000000
+#define MT_ST_BUFFER_WRITES 0x1
+#define MT_ST_ASYNC_WRITES 0x2
+#define MT_ST_READ_AHEAD 0x4
+#define MT_ST_DEBUGGING 0x8
+#define MT_ST_TWO_FM 0x10
+#define MT_ST_FAST_MTEOM 0x20
+#define MT_ST_AUTO_LOCK 0x40
+#define MT_ST_DEF_WRITES 0x80
+#define MT_ST_CAN_BSR 0x100
+#define MT_ST_NO_BLKLIMS 0x200
+#define MT_ST_CAN_PARTITIONS 0x400
+#define MT_ST_SCSI2LOGICAL 0x800
+#define MT_ST_CLEAR_DEFAULT 0xfffff
+#define MT_ST_DEF_DENSITY (MT_ST_DEF_OPTIONS | 0x100000)
+#define MT_ST_DEF_COMPRESSION (MT_ST_DEF_OPTIONS | 0x200000)
+#define MT_ST_DEF_DRVBUFFER (MT_ST_DEF_OPTIONS | 0x300000)
 #define MT_ST_HPLOADER_OFFSET 10000
 #ifndef DEFTAPE
-# define DEFTAPE	"/dev/tape"
+#define DEFTAPE "/dev/tape"
 #endif
 
 #endif
diff --git a/fusl/include/sys/param.h b/fusl/include/sys/param.h
index 344c0d2..6c2ebe9 100644
--- a/fusl/include/sys/param.h
+++ b/fusl/include/sys/param.h
@@ -15,17 +15,17 @@
 
 #undef MIN
 #undef MAX
-#define MIN(a,b) (((a)<(b))?(a):(b))
-#define MAX(a,b) (((a)>(b))?(a):(b))
+#define MIN(a, b) (((a) < (b)) ? (a) : (b))
+#define MAX(a, b) (((a) > (b)) ? (a) : (b))
 
-#define __bitop(x,i,o) ((x)[(i)/8] o (1<<(i)%8))
-#define setbit(x,i) __bitop(x,i,|=)
-#define clrbit(x,i) __bitop(x,i,&=~)
-#define isset(x,i) __bitop(x,i,&)
-#define isclr(x,i) !isset(x,i)
+#define __bitop(x, i, o) ((x)[(i) / 8] o(1 << (i) % 8))
+#define setbit(x, i) __bitop(x, i, |=)
+#define clrbit(x, i) __bitop(x, i, &= ~)
+#define isset(x, i) __bitop(x, i, &)
+#define isclr(x, i) !isset(x, i)
 
-#define howmany(n,d) (((n)+((d)-1))/(d))
-#define roundup(n,d) (howmany(n,d)*(d))
+#define howmany(n, d) (((n) + ((d)-1)) / (d))
+#define roundup(n, d) (howmany(n, d) * (d))
 #define powerof2(n) !(((n)-1) & (n))
 
 #include <sys/resource.h>
diff --git a/fusl/include/sys/personality.h b/fusl/include/sys/personality.h
index 31d43df..badcbf4 100644
--- a/fusl/include/sys/personality.h
+++ b/fusl/include/sys/personality.h
@@ -5,15 +5,15 @@
 extern "C" {
 #endif
 
-#define ADDR_NO_RANDOMIZE  0x0040000
-#define MMAP_PAGE_ZERO     0x0100000
+#define ADDR_NO_RANDOMIZE 0x0040000
+#define MMAP_PAGE_ZERO 0x0100000
 #define ADDR_COMPAT_LAYOUT 0x0200000
-#define READ_IMPLIES_EXEC  0x0400000
-#define ADDR_LIMIT_32BIT   0x0800000
-#define SHORT_INODE        0x1000000
-#define WHOLE_SECONDS      0x2000000
-#define STICKY_TIMEOUTS    0x4000000
-#define ADDR_LIMIT_3GB     0x8000000
+#define READ_IMPLIES_EXEC 0x0400000
+#define ADDR_LIMIT_32BIT 0x0800000
+#define SHORT_INODE 0x1000000
+#define WHOLE_SECONDS 0x2000000
+#define STICKY_TIMEOUTS 0x4000000
+#define ADDR_LIMIT_3GB 0x8000000
 
 #define PER_LINUX 0
 #define PER_LINUX_32BIT ADDR_LIMIT_32BIT
diff --git a/fusl/include/sys/prctl.h b/fusl/include/sys/prctl.h
index 24f4f8b..8989e37 100644
--- a/fusl/include/sys/prctl.h
+++ b/fusl/include/sys/prctl.h
@@ -7,38 +7,38 @@
 
 #include <stdint.h>
 
-#define PR_SET_PDEATHSIG  1
-#define PR_GET_PDEATHSIG  2
-#define PR_GET_DUMPABLE   3
-#define PR_SET_DUMPABLE   4
-#define PR_GET_UNALIGN   5
-#define PR_SET_UNALIGN   6
+#define PR_SET_PDEATHSIG 1
+#define PR_GET_PDEATHSIG 2
+#define PR_GET_DUMPABLE 3
+#define PR_SET_DUMPABLE 4
+#define PR_GET_UNALIGN 5
+#define PR_SET_UNALIGN 6
 #define PR_UNALIGN_NOPRINT 1
 #define PR_UNALIGN_SIGBUS 2
-#define PR_GET_KEEPCAPS   7
-#define PR_SET_KEEPCAPS   8
-#define PR_GET_FPEMU  9
+#define PR_GET_KEEPCAPS 7
+#define PR_SET_KEEPCAPS 8
+#define PR_GET_FPEMU 9
 #define PR_SET_FPEMU 10
 #define PR_FPEMU_NOPRINT 1
 #define PR_FPEMU_SIGFPE 2
 #define PR_GET_FPEXC 11
 #define PR_SET_FPEXC 12
 #define PR_FP_EXC_SW_ENABLE 0x80
-#define PR_FP_EXC_DIV  0x010000
-#define PR_FP_EXC_OVF  0x020000
-#define PR_FP_EXC_UND  0x040000
-#define PR_FP_EXC_RES  0x080000
-#define PR_FP_EXC_INV  0x100000
+#define PR_FP_EXC_DIV 0x010000
+#define PR_FP_EXC_OVF 0x020000
+#define PR_FP_EXC_UND 0x040000
+#define PR_FP_EXC_RES 0x080000
+#define PR_FP_EXC_INV 0x100000
 #define PR_FP_EXC_DISABLED 0
 #define PR_FP_EXC_NONRECOV 1
 #define PR_FP_EXC_ASYNC 2
 #define PR_FP_EXC_PRECISE 3
-#define PR_GET_TIMING   13
-#define PR_SET_TIMING   14
-#define PR_TIMING_STATISTICAL  0
-#define PR_TIMING_TIMESTAMP    1
-#define PR_SET_NAME    15
-#define PR_GET_NAME    16
+#define PR_GET_TIMING 13
+#define PR_SET_TIMING 14
+#define PR_TIMING_STATISTICAL 0
+#define PR_TIMING_TIMESTAMP 1
+#define PR_SET_NAME 15
+#define PR_GET_NAME 16
 #define PR_GET_ENDIAN 19
 #define PR_SET_ENDIAN 20
 #define PR_ENDIAN_BIG 0
@@ -57,80 +57,80 @@
 #define PR_SET_TIMERSLACK 29
 #define PR_GET_TIMERSLACK 30
 
-#define PR_TASK_PERF_EVENTS_DISABLE             31
-#define PR_TASK_PERF_EVENTS_ENABLE              32
+#define PR_TASK_PERF_EVENTS_DISABLE 31
+#define PR_TASK_PERF_EVENTS_ENABLE 32
 
-#define PR_MCE_KILL     33
-#define PR_MCE_KILL_CLEAR   0
-#define PR_MCE_KILL_SET     1
-#define PR_MCE_KILL_LATE    0
-#define PR_MCE_KILL_EARLY   1
+#define PR_MCE_KILL 33
+#define PR_MCE_KILL_CLEAR 0
+#define PR_MCE_KILL_SET 1
+#define PR_MCE_KILL_LATE 0
+#define PR_MCE_KILL_EARLY 1
 #define PR_MCE_KILL_DEFAULT 2
 #define PR_MCE_KILL_GET 34
 
-#define PR_SET_MM               35
-#define PR_SET_MM_START_CODE           1
-#define PR_SET_MM_END_CODE             2
-#define PR_SET_MM_START_DATA           3
-#define PR_SET_MM_END_DATA             4
-#define PR_SET_MM_START_STACK          5
-#define PR_SET_MM_START_BRK            6
-#define PR_SET_MM_BRK                  7
-#define PR_SET_MM_ARG_START            8
-#define PR_SET_MM_ARG_END              9
-#define PR_SET_MM_ENV_START            10
-#define PR_SET_MM_ENV_END              11
-#define PR_SET_MM_AUXV                 12
-#define PR_SET_MM_EXE_FILE             13
-#define PR_SET_MM_MAP                  14
-#define PR_SET_MM_MAP_SIZE             15
+#define PR_SET_MM 35
+#define PR_SET_MM_START_CODE 1
+#define PR_SET_MM_END_CODE 2
+#define PR_SET_MM_START_DATA 3
+#define PR_SET_MM_END_DATA 4
+#define PR_SET_MM_START_STACK 5
+#define PR_SET_MM_START_BRK 6
+#define PR_SET_MM_BRK 7
+#define PR_SET_MM_ARG_START 8
+#define PR_SET_MM_ARG_END 9
+#define PR_SET_MM_ENV_START 10
+#define PR_SET_MM_ENV_END 11
+#define PR_SET_MM_AUXV 12
+#define PR_SET_MM_EXE_FILE 13
+#define PR_SET_MM_MAP 14
+#define PR_SET_MM_MAP_SIZE 15
 
 struct prctl_mm_map {
-	uint64_t start_code;
-	uint64_t end_code;
-	uint64_t start_data;
-	uint64_t end_data;
-	uint64_t start_brk;
-	uint64_t brk;
-	uint64_t start_stack;
-	uint64_t arg_start;
-	uint64_t arg_end;
-	uint64_t env_start;
-	uint64_t env_end;
-	uint64_t *auxv;
-	uint32_t auxv_size;
-	uint32_t exe_fd;
+  uint64_t start_code;
+  uint64_t end_code;
+  uint64_t start_data;
+  uint64_t end_data;
+  uint64_t start_brk;
+  uint64_t brk;
+  uint64_t start_stack;
+  uint64_t arg_start;
+  uint64_t arg_end;
+  uint64_t env_start;
+  uint64_t env_end;
+  uint64_t* auxv;
+  uint32_t auxv_size;
+  uint32_t exe_fd;
 };
 
 #define PR_SET_PTRACER 0x59616d61
 #define PR_SET_PTRACER_ANY (-1UL)
 
-#define PR_SET_CHILD_SUBREAPER  36
-#define PR_GET_CHILD_SUBREAPER  37
+#define PR_SET_CHILD_SUBREAPER 36
+#define PR_GET_CHILD_SUBREAPER 37
 
-#define PR_SET_NO_NEW_PRIVS     38
-#define PR_GET_NO_NEW_PRIVS     39
+#define PR_SET_NO_NEW_PRIVS 38
+#define PR_GET_NO_NEW_PRIVS 39
 
-#define PR_GET_TID_ADDRESS      40
+#define PR_GET_TID_ADDRESS 40
 
-#define PR_SET_THP_DISABLE      41
-#define PR_GET_THP_DISABLE      42
+#define PR_SET_THP_DISABLE 41
+#define PR_GET_THP_DISABLE 42
 
-#define PR_MPX_ENABLE_MANAGEMENT  43
+#define PR_MPX_ENABLE_MANAGEMENT 43
 #define PR_MPX_DISABLE_MANAGEMENT 44
 
-#define PR_SET_FP_MODE          45
-#define PR_GET_FP_MODE          46
+#define PR_SET_FP_MODE 45
+#define PR_GET_FP_MODE 46
 #define PR_FP_MODE_FR (1 << 0)
 #define PR_FP_MODE_FRE (1 << 1)
 
-#define PR_CAP_AMBIENT          47
-#define PR_CAP_AMBIENT_IS_SET   1
-#define PR_CAP_AMBIENT_RAISE    2
-#define PR_CAP_AMBIENT_LOWER    3
+#define PR_CAP_AMBIENT 47
+#define PR_CAP_AMBIENT_IS_SET 1
+#define PR_CAP_AMBIENT_RAISE 2
+#define PR_CAP_AMBIENT_LOWER 3
 #define PR_CAP_AMBIENT_CLEAR_ALL 4
 
-int prctl (int, ...);
+int prctl(int, ...);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/procfs.h b/fusl/include/sys/procfs.h
index f7936c4..c52d9bc 100644
--- a/fusl/include/sys/procfs.h
+++ b/fusl/include/sys/procfs.h
@@ -9,50 +9,49 @@
 #include <sys/user.h>
 
 struct elf_siginfo {
-	int si_signo;
-	int si_code;
-	int si_errno;
+  int si_signo;
+  int si_code;
+  int si_errno;
 };
 
 struct elf_prstatus {
-	struct elf_siginfo pr_info;
-	short int pr_cursig;
-	unsigned long int pr_sigpend;
-	unsigned long int pr_sighold;
-	pid_t pr_pid;
-	pid_t pr_ppid;
-	pid_t pr_pgrp;
-	pid_t pr_sid;
-	struct timeval pr_utime;
-	struct timeval pr_stime;
-	struct timeval pr_cutime;
-	struct timeval pr_cstime;
-	elf_gregset_t pr_reg;
-	int pr_fpvalid;
+  struct elf_siginfo pr_info;
+  short int pr_cursig;
+  unsigned long int pr_sigpend;
+  unsigned long int pr_sighold;
+  pid_t pr_pid;
+  pid_t pr_ppid;
+  pid_t pr_pgrp;
+  pid_t pr_sid;
+  struct timeval pr_utime;
+  struct timeval pr_stime;
+  struct timeval pr_cutime;
+  struct timeval pr_cstime;
+  elf_gregset_t pr_reg;
+  int pr_fpvalid;
 };
 
 #define ELF_PRARGSZ 80
 
-struct elf_prpsinfo
-	{
-	char pr_state;
-	char pr_sname;
-	char pr_zomb;
-	char pr_nice;
-	unsigned long int pr_flag;
+struct elf_prpsinfo {
+  char pr_state;
+  char pr_sname;
+  char pr_zomb;
+  char pr_nice;
+  unsigned long int pr_flag;
 #if UINTPTR_MAX == 0xffffffff
-	unsigned short int pr_uid;
-	unsigned short int pr_gid;
+  unsigned short int pr_uid;
+  unsigned short int pr_gid;
 #else
-	unsigned int pr_uid;
-	unsigned int pr_gid;
+  unsigned int pr_uid;
+  unsigned int pr_gid;
 #endif
-	int pr_pid, pr_ppid, pr_pgrp, pr_sid;
-	char pr_fname[16];
-	char pr_psargs[ELF_PRARGSZ];
+  int pr_pid, pr_ppid, pr_pgrp, pr_sid;
+  char pr_fname[16];
+  char pr_psargs[ELF_PRARGSZ];
 };
 
-typedef void *psaddr_t;
+typedef void* psaddr_t;
 typedef elf_gregset_t prgregset_t;
 typedef elf_fpregset_t prfpregset_t;
 typedef pid_t lwpid_t;
diff --git a/fusl/include/sys/ptrace.h b/fusl/include/sys/ptrace.h
index d9d4540..9bf8619 100644
--- a/fusl/include/sys/ptrace.h
+++ b/fusl/include/sys/ptrace.h
@@ -64,17 +64,17 @@
 #define PT_GETSIGINFO PTRACE_GETSIGINFO
 #define PT_SETSIGINFO PTRACE_SETSIGINFO
 
-#define PTRACE_O_TRACESYSGOOD   0x00000001
-#define PTRACE_O_TRACEFORK      0x00000002
-#define PTRACE_O_TRACEVFORK     0x00000004
-#define PTRACE_O_TRACECLONE     0x00000008
-#define PTRACE_O_TRACEEXEC      0x00000010
+#define PTRACE_O_TRACESYSGOOD 0x00000001
+#define PTRACE_O_TRACEFORK 0x00000002
+#define PTRACE_O_TRACEVFORK 0x00000004
+#define PTRACE_O_TRACECLONE 0x00000008
+#define PTRACE_O_TRACEEXEC 0x00000010
 #define PTRACE_O_TRACEVFORKDONE 0x00000020
-#define PTRACE_O_TRACEEXIT      0x00000040
-#define PTRACE_O_TRACESECCOMP   0x00000080
-#define PTRACE_O_EXITKILL       0x00100000
+#define PTRACE_O_TRACEEXIT 0x00000040
+#define PTRACE_O_TRACESECCOMP 0x00000080
+#define PTRACE_O_EXITKILL 0x00100000
 #define PTRACE_O_SUSPEND_SECCOMP 0x00200000
-#define PTRACE_O_MASK           0x003000ff
+#define PTRACE_O_MASK 0x003000ff
 
 #define PTRACE_EVENT_FORK 1
 #define PTRACE_EVENT_VFORK 2
@@ -87,9 +87,9 @@
 #define PTRACE_PEEKSIGINFO_SHARED 1
 
 struct ptrace_peeksiginfo_args {
-	uint64_t off;
-	uint32_t flags;
-	int32_t nr;
+  uint64_t off;
+  uint32_t flags;
+  int32_t nr;
 };
 
 long ptrace(int, ...);
diff --git a/fusl/include/sys/quota.h b/fusl/include/sys/quota.h
index a06f335..b39a724 100644
--- a/fusl/include/sys/quota.h
+++ b/fusl/include/sys/quota.h
@@ -17,10 +17,10 @@
 #define MAX_DQ_TIME 604800
 
 #define MAXQUOTAS 2
-#define USRQUOTA  0
-#define GRPQUOTA  1
+#define USRQUOTA 0
+#define GRPQUOTA 1
 
-#define INITQFNAMES { "user", "group", "undefined" };
+#define INITQFNAMES {"user", "group", "undefined"};
 
 #define QUOTAFILENAME "quota"
 #define QUOTAGROUP "staff"
@@ -28,74 +28,72 @@
 #define NR_DQHASH 43
 #define NR_DQUOTS 256
 
-#define SUBCMDMASK       0x00ff
-#define SUBCMDSHIFT      8
-#define QCMD(cmd, type)  (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK))
+#define SUBCMDMASK 0x00ff
+#define SUBCMDSHIFT 8
+#define QCMD(cmd, type) (((cmd) << SUBCMDSHIFT) | ((type)&SUBCMDMASK))
 
-#define Q_SYNC     0x800001
-#define Q_QUOTAON  0x800002
+#define Q_SYNC 0x800001
+#define Q_QUOTAON 0x800002
 #define Q_QUOTAOFF 0x800003
-#define Q_GETFMT   0x800004
-#define Q_GETINFO  0x800005
-#define Q_SETINFO  0x800006
+#define Q_GETFMT 0x800004
+#define Q_GETINFO 0x800005
+#define Q_SETINFO 0x800006
 #define Q_GETQUOTA 0x800007
 #define Q_SETQUOTA 0x800008
 
-#define	QFMT_VFS_OLD 1
-#define	QFMT_VFS_V0 2
+#define QFMT_VFS_OLD 1
+#define QFMT_VFS_V0 2
 #define QFMT_OCFS2 3
-#define	QFMT_VFS_V1 4
+#define QFMT_VFS_V1 4
 
-#define QIF_BLIMITS	1
-#define QIF_SPACE	2
-#define QIF_ILIMITS	4
-#define QIF_INODES	8
-#define QIF_BTIME	16
-#define QIF_ITIME	32
-#define QIF_LIMITS	(QIF_BLIMITS | QIF_ILIMITS)
-#define QIF_USAGE	(QIF_SPACE | QIF_INODES)
-#define QIF_TIMES	(QIF_BTIME | QIF_ITIME)
-#define QIF_ALL		(QIF_LIMITS | QIF_USAGE | QIF_TIMES)
+#define QIF_BLIMITS 1
+#define QIF_SPACE 2
+#define QIF_ILIMITS 4
+#define QIF_INODES 8
+#define QIF_BTIME 16
+#define QIF_ITIME 32
+#define QIF_LIMITS (QIF_BLIMITS | QIF_ILIMITS)
+#define QIF_USAGE (QIF_SPACE | QIF_INODES)
+#define QIF_TIMES (QIF_BTIME | QIF_ITIME)
+#define QIF_ALL (QIF_LIMITS | QIF_USAGE | QIF_TIMES)
 
-struct dqblk
-{
-	uint64_t dqb_bhardlimit;
-	uint64_t dqb_bsoftlimit;
-	uint64_t dqb_curspace;
-	uint64_t dqb_ihardlimit;
-	uint64_t dqb_isoftlimit;
-	uint64_t dqb_curinodes;
-	uint64_t dqb_btime;
-	uint64_t dqb_itime;
-	uint32_t dqb_valid;
+struct dqblk {
+  uint64_t dqb_bhardlimit;
+  uint64_t dqb_bsoftlimit;
+  uint64_t dqb_curspace;
+  uint64_t dqb_ihardlimit;
+  uint64_t dqb_isoftlimit;
+  uint64_t dqb_curinodes;
+  uint64_t dqb_btime;
+  uint64_t dqb_itime;
+  uint32_t dqb_valid;
 };
 
-#define	dq_bhardlimit	dq_dqb.dqb_bhardlimit
-#define	dq_bsoftlimit	dq_dqb.dqb_bsoftlimit
-#define dq_curspace	dq_dqb.dqb_curspace
-#define dq_valid	dq_dqb.dqb_valid
-#define	dq_ihardlimit	dq_dqb.dqb_ihardlimit
-#define	dq_isoftlimit	dq_dqb.dqb_isoftlimit
-#define	dq_curinodes	dq_dqb.dqb_curinodes
-#define	dq_btime	dq_dqb.dqb_btime
-#define	dq_itime	dq_dqb.dqb_itime
+#define dq_bhardlimit dq_dqb.dqb_bhardlimit
+#define dq_bsoftlimit dq_dqb.dqb_bsoftlimit
+#define dq_curspace dq_dqb.dqb_curspace
+#define dq_valid dq_dqb.dqb_valid
+#define dq_ihardlimit dq_dqb.dqb_ihardlimit
+#define dq_isoftlimit dq_dqb.dqb_isoftlimit
+#define dq_curinodes dq_dqb.dqb_curinodes
+#define dq_btime dq_dqb.dqb_btime
+#define dq_itime dq_dqb.dqb_itime
 
-#define dqoff(UID)      ((long long)(UID) * sizeof (struct dqblk))
+#define dqoff(UID) ((long long)(UID) * sizeof(struct dqblk))
 
-#define IIF_BGRACE	1
-#define IIF_IGRACE	2
-#define IIF_FLAGS	4
-#define IIF_ALL		(IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)
+#define IIF_BGRACE 1
+#define IIF_IGRACE 2
+#define IIF_FLAGS 4
+#define IIF_ALL (IIF_BGRACE | IIF_IGRACE | IIF_FLAGS)
 
-struct dqinfo
-{
-	uint64_t dqi_bgrace;
-	uint64_t dqi_igrace;
-	uint32_t dqi_flags;
-	uint32_t dqi_valid;
+struct dqinfo {
+  uint64_t dqi_bgrace;
+  uint64_t dqi_igrace;
+  uint32_t dqi_flags;
+  uint32_t dqi_valid;
 };
 
-int quotactl(int, const char *, int, char *);
+int quotactl(int, const char*, int, char*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/reboot.h b/fusl/include/sys/reboot.h
index 9702edd..726ddcd 100644
--- a/fusl/include/sys/reboot.h
+++ b/fusl/include/sys/reboot.h
@@ -4,13 +4,13 @@
 extern "C" {
 #endif
 
-#define RB_AUTOBOOT     0x01234567
-#define RB_HALT_SYSTEM  0xcdef0123
-#define RB_ENABLE_CAD   0x89abcdef
-#define RB_DISABLE_CAD  0
-#define RB_POWER_OFF    0x4321fedc
-#define RB_SW_SUSPEND   0xd000fce2
-#define RB_KEXEC        0x45584543
+#define RB_AUTOBOOT 0x01234567
+#define RB_HALT_SYSTEM 0xcdef0123
+#define RB_ENABLE_CAD 0x89abcdef
+#define RB_DISABLE_CAD 0
+#define RB_POWER_OFF 0x4321fedc
+#define RB_SW_SUSPEND 0xd000fce2
+#define RB_KEXEC 0x45584543
 
 int reboot(int);
 
diff --git a/fusl/include/sys/resource.h b/fusl/include/sys/resource.h
index cc33de7..1cdc7d7 100644
--- a/fusl/include/sys/resource.h
+++ b/fusl/include/sys/resource.h
@@ -1,5 +1,5 @@
-#ifndef	_SYS_RESOURCE_H
-#define	_SYS_RESOURCE_H
+#ifndef _SYS_RESOURCE_H
+#define _SYS_RESOURCE_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -19,44 +19,42 @@
 
 typedef unsigned long long rlim_t;
 
-struct rlimit
-{
-	rlim_t rlim_cur;
-	rlim_t rlim_max;
+struct rlimit {
+  rlim_t rlim_cur;
+  rlim_t rlim_max;
 };
 
-struct rusage
-{
-	struct timeval ru_utime;
-	struct timeval ru_stime;
-	/* linux extentions, but useful */
-	long	ru_maxrss;
-	long	ru_ixrss;
-	long	ru_idrss;
-	long	ru_isrss;
-	long	ru_minflt;
-	long	ru_majflt;
-	long	ru_nswap;
-	long	ru_inblock;
-	long	ru_oublock;
-	long	ru_msgsnd;
-	long	ru_msgrcv;
-	long	ru_nsignals;
-	long	ru_nvcsw;
-	long	ru_nivcsw;
-	/* room for more... */
-	long    __reserved[16];
+struct rusage {
+  struct timeval ru_utime;
+  struct timeval ru_stime;
+  /* linux extentions, but useful */
+  long ru_maxrss;
+  long ru_ixrss;
+  long ru_idrss;
+  long ru_isrss;
+  long ru_minflt;
+  long ru_majflt;
+  long ru_nswap;
+  long ru_inblock;
+  long ru_oublock;
+  long ru_msgsnd;
+  long ru_msgrcv;
+  long ru_nsignals;
+  long ru_nvcsw;
+  long ru_nivcsw;
+  /* room for more... */
+  long __reserved[16];
 };
 
-int getrlimit (int, struct rlimit *);
-int setrlimit (int, const struct rlimit *);
-int getrusage (int, struct rusage *);
+int getrlimit(int, struct rlimit*);
+int setrlimit(int, const struct rlimit*);
+int getrusage(int, struct rusage*);
 
-int getpriority (int, id_t);
-int setpriority (int, id_t, int);
+int getpriority(int, id_t);
+int setpriority(int, id_t, int);
 
 #ifdef _GNU_SOURCE
-int prlimit(pid_t, int, const struct rlimit *, struct rlimit *);
+int prlimit(pid_t, int, const struct rlimit*, struct rlimit*);
 #define prlimit64 prlimit
 #endif
 
@@ -64,33 +62,33 @@
 #define PRIO_MAX 20
 
 #define PRIO_PROCESS 0
-#define PRIO_PGRP    1
-#define PRIO_USER    2
+#define PRIO_PGRP 1
+#define PRIO_USER 2
 
-#define RUSAGE_SELF     0
+#define RUSAGE_SELF 0
 #define RUSAGE_CHILDREN 1
 
 #define RLIM_INFINITY (~0ULL)
 #define RLIM_SAVED_CUR RLIM_INFINITY
 #define RLIM_SAVED_MAX RLIM_INFINITY
 
-#define RLIMIT_CPU     0
-#define RLIMIT_FSIZE   1
-#define RLIMIT_DATA    2
-#define RLIMIT_STACK   3
-#define RLIMIT_CORE    4
+#define RLIMIT_CPU 0
+#define RLIMIT_FSIZE 1
+#define RLIMIT_DATA 2
+#define RLIMIT_STACK 3
+#define RLIMIT_CORE 4
 #ifndef RLIMIT_RSS
-#define RLIMIT_RSS     5
-#define RLIMIT_NPROC   6
-#define RLIMIT_NOFILE  7
+#define RLIMIT_RSS 5
+#define RLIMIT_NPROC 6
+#define RLIMIT_NOFILE 7
 #define RLIMIT_MEMLOCK 8
-#define RLIMIT_AS      9
+#define RLIMIT_AS 9
 #endif
-#define RLIMIT_LOCKS   10
+#define RLIMIT_LOCKS 10
 #define RLIMIT_SIGPENDING 11
 #define RLIMIT_MSGQUEUE 12
-#define RLIMIT_NICE    13
-#define RLIMIT_RTPRIO  14
+#define RLIMIT_NICE 13
+#define RLIMIT_RTPRIO 14
 #define RLIMIT_NLIMITS 15
 
 #define RLIM_NLIMITS RLIMIT_NLIMITS
diff --git a/fusl/include/sys/select.h b/fusl/include/sys/select.h
index e25257d..356433c 100644
--- a/fusl/include/sys/select.h
+++ b/fusl/include/sys/select.h
@@ -19,21 +19,41 @@
 
 typedef unsigned long fd_mask;
 
-typedef struct
-{
-	unsigned long fds_bits[FD_SETSIZE / 8 / sizeof(long)];
+typedef struct {
+  unsigned long fds_bits[FD_SETSIZE / 8 / sizeof(long)];
 } fd_set;
 
-#define FD_ZERO(s) do { int __i; unsigned long *__b=(s)->fds_bits; for(__i=sizeof (fd_set)/sizeof (long); __i; __i--) *__b++=0; } while(0)
-#define FD_SET(d, s)   ((s)->fds_bits[(d)/(8*sizeof(long))] |= (1UL<<((d)%(8*sizeof(long)))))
-#define FD_CLR(d, s)   ((s)->fds_bits[(d)/(8*sizeof(long))] &= ~(1UL<<((d)%(8*sizeof(long)))))
-#define FD_ISSET(d, s) !!((s)->fds_bits[(d)/(8*sizeof(long))] & (1UL<<((d)%(8*sizeof(long)))))
+#define FD_ZERO(s)                                        \
+  do {                                                    \
+    int __i;                                              \
+    unsigned long* __b = (s)->fds_bits;                   \
+    for (__i = sizeof(fd_set) / sizeof(long); __i; __i--) \
+      *__b++ = 0;                                         \
+  } while (0)
+#define FD_SET(d, s)                          \
+  ((s)->fds_bits[(d) / (8 * sizeof(long))] |= \
+   (1UL << ((d) % (8 * sizeof(long)))))
+#define FD_CLR(d, s)                          \
+  ((s)->fds_bits[(d) / (8 * sizeof(long))] &= \
+   ~(1UL << ((d) % (8 * sizeof(long)))))
+#define FD_ISSET(d, s)                         \
+  !!((s)->fds_bits[(d) / (8 * sizeof(long))] & \
+     (1UL << ((d) % (8 * sizeof(long)))))
 
-int select (int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict, struct timeval *__restrict);
-int pselect (int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict, const struct timespec *__restrict, const sigset_t *__restrict);
+int select(int,
+           fd_set* __restrict,
+           fd_set* __restrict,
+           fd_set* __restrict,
+           struct timeval* __restrict);
+int pselect(int,
+            fd_set* __restrict,
+            fd_set* __restrict,
+            fd_set* __restrict,
+            const struct timespec* __restrict,
+            const sigset_t* __restrict);
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#define NFDBITS (8*(int)sizeof(long))
+#define NFDBITS (8 * (int)sizeof(long))
 #endif
 
 #ifdef __cplusplus
diff --git a/fusl/include/sys/sem.h b/fusl/include/sys/sem.h
index e7c3698..8f2f5bd 100644
--- a/fusl/include/sys/sem.h
+++ b/fusl/include/sys/sem.h
@@ -16,14 +16,14 @@
 
 #include <sys/ipc.h>
 
-#define SEM_UNDO	0x1000
-#define GETPID		11
-#define GETVAL		12
-#define GETALL		13
-#define GETNCNT		14
-#define GETZCNT		15
-#define SETVAL		16
-#define SETALL		17
+#define SEM_UNDO 0x1000
+#define GETPID 11
+#define GETVAL 12
+#define GETALL 13
+#define GETNCNT 14
+#define GETZCNT 15
+#define SETVAL 16
+#define SETALL 17
 
 #include <endian.h>
 
@@ -34,31 +34,31 @@
 #define SEM_STAT 18
 #define SEM_INFO 19
 
-struct  seminfo {
-	int semmap;
-	int semmni;
-	int semmns;
-	int semmnu;
-	int semmsl;
-	int semopm;
-	int semume;
-	int semusz;
-	int semvmx;
-	int semaem;
+struct seminfo {
+  int semmap;
+  int semmni;
+  int semmns;
+  int semmnu;
+  int semmsl;
+  int semopm;
+  int semume;
+  int semusz;
+  int semvmx;
+  int semaem;
 };
 
 struct sembuf {
-	unsigned short sem_num;
-	short sem_op;
-	short sem_flg;
+  unsigned short sem_num;
+  short sem_op;
+  short sem_flg;
 };
 
 int semctl(int, int, int, ...);
 int semget(key_t, int, int);
-int semop(int, struct sembuf *, size_t);
+int semop(int, struct sembuf*, size_t);
 
 #ifdef _GNU_SOURCE
-int semtimedop(int, struct sembuf *, size_t, const struct timespec *);
+int semtimedop(int, struct sembuf*, size_t, const struct timespec*);
 #endif
 
 #ifdef __cplusplus
diff --git a/fusl/include/sys/sendfile.h b/fusl/include/sys/sendfile.h
index e7570d8..5b27ee7 100644
--- a/fusl/include/sys/sendfile.h
+++ b/fusl/include/sys/sendfile.h
@@ -8,7 +8,7 @@
 #include <features.h>
 #include <unistd.h>
 
-ssize_t sendfile(int, int, off_t *, size_t);
+ssize_t sendfile(int, int, off_t*, size_t);
 
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
 #define sendfile64 sendfile
diff --git a/fusl/include/sys/shm.h b/fusl/include/sys/shm.h
index 67be822..7e66d7a 100644
--- a/fusl/include/sys/shm.h
+++ b/fusl/include/sys/shm.h
@@ -27,9 +27,9 @@
 #define SHM_W 0200
 
 #define SHM_RDONLY 010000
-#define SHM_RND    020000
-#define SHM_REMAP  040000
-#define SHM_EXEC   0100000
+#define SHM_RND 020000
+#define SHM_REMAP 040000
+#define SHM_EXEC 0100000
 
 #define SHM_LOCK 11
 #define SHM_UNLOCK 12
@@ -42,9 +42,9 @@
 
 typedef unsigned long shmatt_t;
 
-void *shmat(int, const void *, int);
-int shmctl(int, int, struct shmid_ds *);
-int shmdt(const void *);
+void* shmat(int, const void*, int);
+int shmctl(int, int, struct shmid_ds*);
+int shmdt(const void*);
 int shmget(key_t, size_t, int);
 
 #ifdef __cplusplus
diff --git a/fusl/include/sys/signalfd.h b/fusl/include/sys/signalfd.h
index 55431b9..9518ba0 100644
--- a/fusl/include/sys/signalfd.h
+++ b/fusl/include/sys/signalfd.h
@@ -15,27 +15,27 @@
 #define SFD_CLOEXEC O_CLOEXEC
 #define SFD_NONBLOCK O_NONBLOCK
 
-int signalfd(int, const sigset_t *, int);
+int signalfd(int, const sigset_t*, int);
 
 struct signalfd_siginfo {
-	uint32_t  ssi_signo;
-	int32_t   ssi_errno;
-	int32_t   ssi_code;
-	uint32_t  ssi_pid;
-	uint32_t  ssi_uid;
-	int32_t   ssi_fd;
-	uint32_t  ssi_tid;
-	uint32_t  ssi_band;
-	uint32_t  ssi_overrun;
-	uint32_t  ssi_trapno;
-	int32_t   ssi_status;
-	int32_t   ssi_int;
-	uint64_t  ssi_ptr;
-	uint64_t  ssi_utime;
-	uint64_t  ssi_stime;
-	uint64_t  ssi_addr;
-	uint16_t  ssi_addr_lsb;
-	uint8_t   pad[128-12*4-4*8-2];
+  uint32_t ssi_signo;
+  int32_t ssi_errno;
+  int32_t ssi_code;
+  uint32_t ssi_pid;
+  uint32_t ssi_uid;
+  int32_t ssi_fd;
+  uint32_t ssi_tid;
+  uint32_t ssi_band;
+  uint32_t ssi_overrun;
+  uint32_t ssi_trapno;
+  int32_t ssi_status;
+  int32_t ssi_int;
+  uint64_t ssi_ptr;
+  uint64_t ssi_utime;
+  uint64_t ssi_stime;
+  uint64_t ssi_addr;
+  uint16_t ssi_addr_lsb;
+  uint8_t pad[128 - 12 * 4 - 4 * 8 - 2];
 };
 
 #ifdef __cplusplus
diff --git a/fusl/include/sys/socket.h b/fusl/include/sys/socket.h
index a4db940..b01c8d7 100644
--- a/fusl/include/sys/socket.h
+++ b/fusl/include/sys/socket.h
@@ -1,5 +1,5 @@
-#ifndef	_SYS_SOCKET_H
-#define	_SYS_SOCKET_H
+#ifndef _SYS_SOCKET_H
+#define _SYS_SOCKET_H
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -20,29 +20,30 @@
 #include <bits/socket.h>
 
 #ifdef _GNU_SOURCE
-struct ucred
-{
-	pid_t pid;
-	uid_t uid;
-	gid_t gid;
+struct ucred {
+  pid_t pid;
+  uid_t uid;
+  gid_t gid;
 };
 
-struct mmsghdr
-{
-	struct msghdr msg_hdr;
-	unsigned int  msg_len;
+struct mmsghdr {
+  struct msghdr msg_hdr;
+  unsigned int msg_len;
 };
 
 struct timespec;
 
-int sendmmsg (int, struct mmsghdr *, unsigned int, unsigned int);
-int recvmmsg (int, struct mmsghdr *, unsigned int, unsigned int, struct timespec *);
+int sendmmsg(int, struct mmsghdr*, unsigned int, unsigned int);
+int recvmmsg(int,
+             struct mmsghdr*,
+             unsigned int,
+             unsigned int,
+             struct timespec*);
 #endif
 
-struct linger
-{
-	int l_onoff;
-	int l_linger;
+struct linger {
+  int l_onoff;
+  int l_linger;
 };
 
 #define SHUT_RD 0
@@ -50,271 +51,287 @@
 #define SHUT_RDWR 2
 
 #ifndef SOCK_STREAM
-#define SOCK_STREAM    1
-#define SOCK_DGRAM     2
+#define SOCK_STREAM 1
+#define SOCK_DGRAM 2
 #endif
 
-#define SOCK_RAW       3
-#define SOCK_RDM       4
+#define SOCK_RAW 3
+#define SOCK_RDM 4
 #define SOCK_SEQPACKET 5
-#define SOCK_DCCP      6
-#define SOCK_PACKET    10
+#define SOCK_DCCP 6
+#define SOCK_PACKET 10
 
 #ifndef SOCK_CLOEXEC
-#define SOCK_CLOEXEC   02000000
-#define SOCK_NONBLOCK  04000
+#define SOCK_CLOEXEC 02000000
+#define SOCK_NONBLOCK 04000
 #endif
 
-#define PF_UNSPEC       0
-#define PF_LOCAL        1
-#define PF_UNIX         PF_LOCAL
-#define PF_FILE         PF_LOCAL
-#define PF_INET         2
-#define PF_AX25         3
-#define PF_IPX          4
-#define PF_APPLETALK    5
-#define PF_NETROM       6
-#define PF_BRIDGE       7
-#define PF_ATMPVC       8
-#define PF_X25          9
-#define PF_INET6        10
-#define PF_ROSE         11
-#define PF_DECnet       12
-#define PF_NETBEUI      13
-#define PF_SECURITY     14
-#define PF_KEY          15
-#define PF_NETLINK      16
-#define PF_ROUTE        PF_NETLINK
-#define PF_PACKET       17
-#define PF_ASH          18
-#define PF_ECONET       19
-#define PF_ATMSVC       20
-#define PF_RDS          21
-#define PF_SNA          22
-#define PF_IRDA         23
-#define PF_PPPOX        24
-#define PF_WANPIPE      25
-#define PF_LLC          26
-#define PF_IB           27
-#define PF_MPLS         28
-#define PF_CAN          29
-#define PF_TIPC         30
-#define PF_BLUETOOTH    31
-#define PF_IUCV         32
-#define PF_RXRPC        33
-#define PF_ISDN         34
-#define PF_PHONET       35
-#define PF_IEEE802154   36
-#define PF_CAIF         37
-#define PF_ALG          38
-#define PF_NFC          39
-#define PF_VSOCK        40
-#define PF_MAX          41
+#define PF_UNSPEC 0
+#define PF_LOCAL 1
+#define PF_UNIX PF_LOCAL
+#define PF_FILE PF_LOCAL
+#define PF_INET 2
+#define PF_AX25 3
+#define PF_IPX 4
+#define PF_APPLETALK 5
+#define PF_NETROM 6
+#define PF_BRIDGE 7
+#define PF_ATMPVC 8
+#define PF_X25 9
+#define PF_INET6 10
+#define PF_ROSE 11
+#define PF_DECnet 12
+#define PF_NETBEUI 13
+#define PF_SECURITY 14
+#define PF_KEY 15
+#define PF_NETLINK 16
+#define PF_ROUTE PF_NETLINK
+#define PF_PACKET 17
+#define PF_ASH 18
+#define PF_ECONET 19
+#define PF_ATMSVC 20
+#define PF_RDS 21
+#define PF_SNA 22
+#define PF_IRDA 23
+#define PF_PPPOX 24
+#define PF_WANPIPE 25
+#define PF_LLC 26
+#define PF_IB 27
+#define PF_MPLS 28
+#define PF_CAN 29
+#define PF_TIPC 30
+#define PF_BLUETOOTH 31
+#define PF_IUCV 32
+#define PF_RXRPC 33
+#define PF_ISDN 34
+#define PF_PHONET 35
+#define PF_IEEE802154 36
+#define PF_CAIF 37
+#define PF_ALG 38
+#define PF_NFC 39
+#define PF_VSOCK 40
+#define PF_MAX 41
 
-#define AF_UNSPEC       PF_UNSPEC
-#define AF_LOCAL        PF_LOCAL
-#define AF_UNIX         AF_LOCAL
-#define AF_FILE         AF_LOCAL
-#define AF_INET         PF_INET
-#define AF_AX25         PF_AX25
-#define AF_IPX          PF_IPX
-#define AF_APPLETALK    PF_APPLETALK
-#define AF_NETROM       PF_NETROM
-#define AF_BRIDGE       PF_BRIDGE
-#define AF_ATMPVC       PF_ATMPVC
-#define AF_X25          PF_X25
-#define AF_INET6        PF_INET6
-#define AF_ROSE         PF_ROSE
-#define AF_DECnet       PF_DECnet
-#define AF_NETBEUI      PF_NETBEUI
-#define AF_SECURITY     PF_SECURITY
-#define AF_KEY          PF_KEY
-#define AF_NETLINK      PF_NETLINK
-#define AF_ROUTE        PF_ROUTE
-#define AF_PACKET       PF_PACKET
-#define AF_ASH          PF_ASH
-#define AF_ECONET       PF_ECONET
-#define AF_ATMSVC       PF_ATMSVC
-#define AF_RDS          PF_RDS
-#define AF_SNA          PF_SNA
-#define AF_IRDA         PF_IRDA
-#define AF_PPPOX        PF_PPPOX
-#define AF_WANPIPE      PF_WANPIPE
-#define AF_LLC          PF_LLC
-#define AF_IB           PF_IB
-#define AF_MPLS         PF_MPLS
-#define AF_CAN          PF_CAN
-#define AF_TIPC         PF_TIPC
-#define AF_BLUETOOTH    PF_BLUETOOTH
-#define AF_IUCV         PF_IUCV
-#define AF_RXRPC        PF_RXRPC
-#define AF_ISDN         PF_ISDN
-#define AF_PHONET       PF_PHONET
-#define AF_IEEE802154   PF_IEEE802154
-#define AF_CAIF         PF_CAIF
-#define AF_ALG          PF_ALG
-#define AF_NFC          PF_NFC
-#define AF_VSOCK        PF_VSOCK
-#define AF_MAX          PF_MAX
+#define AF_UNSPEC PF_UNSPEC
+#define AF_LOCAL PF_LOCAL
+#define AF_UNIX AF_LOCAL
+#define AF_FILE AF_LOCAL
+#define AF_INET PF_INET
+#define AF_AX25 PF_AX25
+#define AF_IPX PF_IPX
+#define AF_APPLETALK PF_APPLETALK
+#define AF_NETROM PF_NETROM
+#define AF_BRIDGE PF_BRIDGE
+#define AF_ATMPVC PF_ATMPVC
+#define AF_X25 PF_X25
+#define AF_INET6 PF_INET6
+#define AF_ROSE PF_ROSE
+#define AF_DECnet PF_DECnet
+#define AF_NETBEUI PF_NETBEUI
+#define AF_SECURITY PF_SECURITY
+#define AF_KEY PF_KEY
+#define AF_NETLINK PF_NETLINK
+#define AF_ROUTE PF_ROUTE
+#define AF_PACKET PF_PACKET
+#define AF_ASH PF_ASH
+#define AF_ECONET PF_ECONET
+#define AF_ATMSVC PF_ATMSVC
+#define AF_RDS PF_RDS
+#define AF_SNA PF_SNA
+#define AF_IRDA PF_IRDA
+#define AF_PPPOX PF_PPPOX
+#define AF_WANPIPE PF_WANPIPE
+#define AF_LLC PF_LLC
+#define AF_IB PF_IB
+#define AF_MPLS PF_MPLS
+#define AF_CAN PF_CAN
+#define AF_TIPC PF_TIPC
+#define AF_BLUETOOTH PF_BLUETOOTH
+#define AF_IUCV PF_IUCV
+#define AF_RXRPC PF_RXRPC
+#define AF_ISDN PF_ISDN
+#define AF_PHONET PF_PHONET
+#define AF_IEEE802154 PF_IEEE802154
+#define AF_CAIF PF_CAIF
+#define AF_ALG PF_ALG
+#define AF_NFC PF_NFC
+#define AF_VSOCK PF_VSOCK
+#define AF_MAX PF_MAX
 
 #ifndef SO_DEBUG
-#define SO_DEBUG        1
-#define SO_REUSEADDR    2
-#define SO_TYPE         3
-#define SO_ERROR        4
-#define SO_DONTROUTE    5
-#define SO_BROADCAST    6
-#define SO_SNDBUF       7
-#define SO_RCVBUF       8
-#define SO_KEEPALIVE    9
-#define SO_OOBINLINE    10
-#define SO_NO_CHECK     11
-#define SO_PRIORITY     12
-#define SO_LINGER       13
-#define SO_BSDCOMPAT    14
-#define SO_REUSEPORT    15
-#define SO_PASSCRED     16
-#define SO_PEERCRED     17
-#define SO_RCVLOWAT     18
-#define SO_SNDLOWAT     19
-#define SO_RCVTIMEO     20
-#define SO_SNDTIMEO     21
-#define SO_ACCEPTCONN   30
-#define SO_SNDBUFFORCE  32
-#define SO_RCVBUFFORCE  33
-#define SO_PROTOCOL     38
-#define SO_DOMAIN       39
+#define SO_DEBUG 1
+#define SO_REUSEADDR 2
+#define SO_TYPE 3
+#define SO_ERROR 4
+#define SO_DONTROUTE 5
+#define SO_BROADCAST 6
+#define SO_SNDBUF 7
+#define SO_RCVBUF 8
+#define SO_KEEPALIVE 9
+#define SO_OOBINLINE 10
+#define SO_NO_CHECK 11
+#define SO_PRIORITY 12
+#define SO_LINGER 13
+#define SO_BSDCOMPAT 14
+#define SO_REUSEPORT 15
+#define SO_PASSCRED 16
+#define SO_PEERCRED 17
+#define SO_RCVLOWAT 18
+#define SO_SNDLOWAT 19
+#define SO_RCVTIMEO 20
+#define SO_SNDTIMEO 21
+#define SO_ACCEPTCONN 30
+#define SO_SNDBUFFORCE 32
+#define SO_RCVBUFFORCE 33
+#define SO_PROTOCOL 38
+#define SO_DOMAIN 39
 #endif
 
-#define SO_SECURITY_AUTHENTICATION              22
-#define SO_SECURITY_ENCRYPTION_TRANSPORT        23
-#define SO_SECURITY_ENCRYPTION_NETWORK          24
+#define SO_SECURITY_AUTHENTICATION 22
+#define SO_SECURITY_ENCRYPTION_TRANSPORT 23
+#define SO_SECURITY_ENCRYPTION_NETWORK 24
 
 #define SO_BINDTODEVICE 25
 
-#define SO_ATTACH_FILTER        26
-#define SO_DETACH_FILTER        27
-#define SO_GET_FILTER           SO_ATTACH_FILTER
+#define SO_ATTACH_FILTER 26
+#define SO_DETACH_FILTER 27
+#define SO_GET_FILTER SO_ATTACH_FILTER
 
-#define SO_PEERNAME             28
-#define SO_TIMESTAMP            29
-#define SCM_TIMESTAMP           SO_TIMESTAMP
+#define SO_PEERNAME 28
+#define SO_TIMESTAMP 29
+#define SCM_TIMESTAMP SO_TIMESTAMP
 
-#define SO_PEERSEC              31
-#define SO_PASSSEC              34
-#define SO_TIMESTAMPNS          35
-#define SCM_TIMESTAMPNS         SO_TIMESTAMPNS
-#define SO_MARK                 36
-#define SO_TIMESTAMPING         37
-#define SCM_TIMESTAMPING        SO_TIMESTAMPING
-#define SO_RXQ_OVFL             40
-#define SO_WIFI_STATUS          41
-#define SCM_WIFI_STATUS         SO_WIFI_STATUS
-#define SO_PEEK_OFF             42
-#define SO_NOFCS                43
-#define SO_LOCK_FILTER          44
-#define SO_SELECT_ERR_QUEUE     45
-#define SO_BUSY_POLL            46
-#define SO_MAX_PACING_RATE      47
-#define SO_BPF_EXTENSIONS       48
-#define SO_INCOMING_CPU         49
-#define SO_ATTACH_BPF           50
-#define SO_DETACH_BPF           SO_DETACH_FILTER
-
+#define SO_PEERSEC 31
+#define SO_PASSSEC 34
+#define SO_TIMESTAMPNS 35
+#define SCM_TIMESTAMPNS SO_TIMESTAMPNS
+#define SO_MARK 36
+#define SO_TIMESTAMPING 37
+#define SCM_TIMESTAMPING SO_TIMESTAMPING
+#define SO_RXQ_OVFL 40
+#define SO_WIFI_STATUS 41
+#define SCM_WIFI_STATUS SO_WIFI_STATUS
+#define SO_PEEK_OFF 42
+#define SO_NOFCS 43
+#define SO_LOCK_FILTER 44
+#define SO_SELECT_ERR_QUEUE 45
+#define SO_BUSY_POLL 46
+#define SO_MAX_PACING_RATE 47
+#define SO_BPF_EXTENSIONS 48
+#define SO_INCOMING_CPU 49
+#define SO_ATTACH_BPF 50
+#define SO_DETACH_BPF SO_DETACH_FILTER
 
 #ifndef SOL_SOCKET
-#define SOL_SOCKET      1
+#define SOL_SOCKET 1
 #endif
 
-#define SOL_IP          0
-#define SOL_IPV6        41
-#define SOL_ICMPV6      58
+#define SOL_IP 0
+#define SOL_IPV6 41
+#define SOL_ICMPV6 58
 
-#define SOL_RAW         255
-#define SOL_DECNET      261
-#define SOL_X25         262
-#define SOL_PACKET      263
-#define SOL_ATM         264
-#define SOL_AAL         265
-#define SOL_IRDA        266
+#define SOL_RAW 255
+#define SOL_DECNET 261
+#define SOL_X25 262
+#define SOL_PACKET 263
+#define SOL_ATM 264
+#define SOL_AAL 265
+#define SOL_IRDA 266
 
-#define SOMAXCONN       128
+#define SOMAXCONN 128
 
-#define MSG_OOB       0x0001
-#define MSG_PEEK      0x0002
+#define MSG_OOB 0x0001
+#define MSG_PEEK 0x0002
 #define MSG_DONTROUTE 0x0004
-#define MSG_CTRUNC    0x0008
-#define MSG_PROXY     0x0010
-#define MSG_TRUNC     0x0020
-#define MSG_DONTWAIT  0x0040
-#define MSG_EOR       0x0080
-#define MSG_WAITALL   0x0100
-#define MSG_FIN       0x0200
-#define MSG_SYN       0x0400
-#define MSG_CONFIRM   0x0800
-#define MSG_RST       0x1000
-#define MSG_ERRQUEUE  0x2000
-#define MSG_NOSIGNAL  0x4000
-#define MSG_MORE      0x8000
+#define MSG_CTRUNC 0x0008
+#define MSG_PROXY 0x0010
+#define MSG_TRUNC 0x0020
+#define MSG_DONTWAIT 0x0040
+#define MSG_EOR 0x0080
+#define MSG_WAITALL 0x0100
+#define MSG_FIN 0x0200
+#define MSG_SYN 0x0400
+#define MSG_CONFIRM 0x0800
+#define MSG_RST 0x1000
+#define MSG_ERRQUEUE 0x2000
+#define MSG_NOSIGNAL 0x4000
+#define MSG_MORE 0x8000
 #define MSG_WAITFORONE 0x10000
-#define MSG_FASTOPEN  0x20000000
+#define MSG_FASTOPEN 0x20000000
 #define MSG_CMSG_CLOEXEC 0x40000000
 
-#define __CMSG_LEN(cmsg) (((cmsg)->cmsg_len + sizeof(long) - 1) & ~(long)(sizeof(long) - 1))
-#define __CMSG_NEXT(cmsg) ((unsigned char *)(cmsg) + __CMSG_LEN(cmsg))
-#define __MHDR_END(mhdr) ((unsigned char *)(mhdr)->msg_control + (mhdr)->msg_controllen)
+#define __CMSG_LEN(cmsg) \
+  (((cmsg)->cmsg_len + sizeof(long) - 1) & ~(long)(sizeof(long) - 1))
+#define __CMSG_NEXT(cmsg) ((unsigned char*)(cmsg) + __CMSG_LEN(cmsg))
+#define __MHDR_END(mhdr) \
+  ((unsigned char*)(mhdr)->msg_control + (mhdr)->msg_controllen)
 
-#define CMSG_DATA(cmsg) ((unsigned char *) (((struct cmsghdr *)(cmsg)) + 1))
-#define CMSG_NXTHDR(mhdr, cmsg) ((cmsg)->cmsg_len < sizeof (struct cmsghdr) ? (struct cmsghdr *)0 : \
-        (__CMSG_NEXT(cmsg) + sizeof (struct cmsghdr) >= __MHDR_END(mhdr) ? (struct cmsghdr *)0 : \
-        ((struct cmsghdr *)__CMSG_NEXT(cmsg))))
-#define CMSG_FIRSTHDR(mhdr) ((size_t) (mhdr)->msg_controllen >= sizeof (struct cmsghdr) ? (struct cmsghdr *) (mhdr)->msg_control : (struct cmsghdr *) 0)
+#define CMSG_DATA(cmsg) ((unsigned char*)(((struct cmsghdr*)(cmsg)) + 1))
+#define CMSG_NXTHDR(mhdr, cmsg)                                          \
+  ((cmsg)->cmsg_len < sizeof(struct cmsghdr)                             \
+       ? (struct cmsghdr*)0                                              \
+       : (__CMSG_NEXT(cmsg) + sizeof(struct cmsghdr) >= __MHDR_END(mhdr) \
+              ? (struct cmsghdr*)0                                       \
+              : ((struct cmsghdr*)__CMSG_NEXT(cmsg))))
+#define CMSG_FIRSTHDR(mhdr)                                 \
+  ((size_t)(mhdr)->msg_controllen >= sizeof(struct cmsghdr) \
+       ? (struct cmsghdr*)(mhdr)->msg_control               \
+       : (struct cmsghdr*)0)
 
-#define CMSG_ALIGN(len) (((len) + sizeof (size_t) - 1) & (size_t) ~(sizeof (size_t) - 1))
-#define CMSG_SPACE(len) (CMSG_ALIGN (len) + CMSG_ALIGN (sizeof (struct cmsghdr)))
-#define CMSG_LEN(len)   (CMSG_ALIGN (sizeof (struct cmsghdr)) + (len))
+#define CMSG_ALIGN(len) \
+  (((len) + sizeof(size_t) - 1) & (size_t) ~(sizeof(size_t) - 1))
+#define CMSG_SPACE(len) (CMSG_ALIGN(len) + CMSG_ALIGN(sizeof(struct cmsghdr)))
+#define CMSG_LEN(len) (CMSG_ALIGN(sizeof(struct cmsghdr)) + (len))
 
-#define SCM_RIGHTS      0x01
+#define SCM_RIGHTS 0x01
 #define SCM_CREDENTIALS 0x02
 
-struct sockaddr
-{
-	sa_family_t sa_family;
-	char sa_data[14];
+struct sockaddr {
+  sa_family_t sa_family;
+  char sa_data[14];
 };
 
-struct sockaddr_storage
-{
-	sa_family_t ss_family;
-	unsigned long __ss_align;
-	char __ss_padding[128-2*sizeof(unsigned long)];
+struct sockaddr_storage {
+  sa_family_t ss_family;
+  unsigned long __ss_align;
+  char __ss_padding[128 - 2 * sizeof(unsigned long)];
 };
 
-int socket (int, int, int);
-int socketpair (int, int, int, int [2]);
+int socket(int, int, int);
+int socketpair(int, int, int, int[2]);
 
-int shutdown (int, int);
+int shutdown(int, int);
 
-int bind (int, const struct sockaddr *, socklen_t);
-int connect (int, const struct sockaddr *, socklen_t);
-int listen (int, int);
-int accept (int, struct sockaddr *__restrict, socklen_t *__restrict);
-int accept4(int, struct sockaddr *__restrict, socklen_t *__restrict, int);
+int bind(int, const struct sockaddr*, socklen_t);
+int connect(int, const struct sockaddr*, socklen_t);
+int listen(int, int);
+int accept(int, struct sockaddr* __restrict, socklen_t* __restrict);
+int accept4(int, struct sockaddr* __restrict, socklen_t* __restrict, int);
 
-int getsockname (int, struct sockaddr *__restrict, socklen_t *__restrict);
-int getpeername (int, struct sockaddr *__restrict, socklen_t *__restrict);
+int getsockname(int, struct sockaddr* __restrict, socklen_t* __restrict);
+int getpeername(int, struct sockaddr* __restrict, socklen_t* __restrict);
 
-ssize_t send (int, const void *, size_t, int);
-ssize_t recv (int, void *, size_t, int);
-ssize_t sendto (int, const void *, size_t, int, const struct sockaddr *, socklen_t);
-ssize_t recvfrom (int, void *__restrict, size_t, int, struct sockaddr *__restrict, socklen_t *__restrict);
-ssize_t sendmsg (int, const struct msghdr *, int);
-ssize_t recvmsg (int, struct msghdr *, int);
+ssize_t send(int, const void*, size_t, int);
+ssize_t recv(int, void*, size_t, int);
+ssize_t sendto(int,
+               const void*,
+               size_t,
+               int,
+               const struct sockaddr*,
+               socklen_t);
+ssize_t recvfrom(int,
+                 void* __restrict,
+                 size_t,
+                 int,
+                 struct sockaddr* __restrict,
+                 socklen_t* __restrict);
+ssize_t sendmsg(int, const struct msghdr*, int);
+ssize_t recvmsg(int, struct msghdr*, int);
 
-int getsockopt (int, int, int, void *__restrict, socklen_t *__restrict);
-int setsockopt (int, int, int, const void *, socklen_t);
+int getsockopt(int, int, int, void* __restrict, socklen_t* __restrict);
+int setsockopt(int, int, int, const void*, socklen_t);
 
-int sockatmark (int);
+int sockatmark(int);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/stat.h b/fusl/include/sys/stat.h
index 82a6490..071a7d6 100644
--- a/fusl/include/sys/stat.h
+++ b/fusl/include/sys/stat.h
@@ -1,5 +1,5 @@
-#ifndef	_SYS_STAT_H
-#define	_SYS_STAT_H
+#ifndef _SYS_STAT_H
+#define _SYS_STAT_H
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -26,7 +26,7 @@
 #define st_mtime st_mtim.tv_sec
 #define st_ctime st_ctim.tv_sec
 
-#define S_IFMT  0170000
+#define S_IFMT 0170000
 
 #define S_IFDIR 0040000
 #define S_IFCHR 0020000
@@ -36,18 +36,18 @@
 #define S_IFLNK 0120000
 #define S_IFSOCK 0140000
 
-#define S_TYPEISMQ(buf)  0
+#define S_TYPEISMQ(buf) 0
 #define S_TYPEISSEM(buf) 0
 #define S_TYPEISSHM(buf) 0
 #define S_TYPEISTMO(buf) 0
 
-#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 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)
 
 #ifndef S_IRUSR
 #define S_ISUID 04000
@@ -67,29 +67,29 @@
 #define S_IRWXO 0007
 #endif
 
-#define UTIME_NOW  0x3fffffff
+#define UTIME_NOW 0x3fffffff
 #define UTIME_OMIT 0x3ffffffe
 
-int stat(const char *__restrict, struct stat *__restrict);
-int fstat(int, struct stat *);
-int lstat(const char *__restrict, struct stat *__restrict);
-int fstatat(int, const char *__restrict, struct stat *__restrict, int);
-int chmod(const char *, mode_t);
+int stat(const char* __restrict, struct stat* __restrict);
+int fstat(int, struct stat*);
+int lstat(const char* __restrict, struct stat* __restrict);
+int fstatat(int, const char* __restrict, struct stat* __restrict, int);
+int chmod(const char*, mode_t);
 int fchmod(int, mode_t);
-int fchmodat(int, const char *, mode_t, int);
+int fchmodat(int, const char*, mode_t, int);
 mode_t umask(mode_t);
-int mkdir(const char *, mode_t);
-int mknod(const char *, mode_t, dev_t);
-int mkfifo(const char *, mode_t);
-int mkdirat(int, const char *, mode_t);
-int mknodat(int, const char *, mode_t, dev_t);
-int mkfifoat(int, const char *, mode_t);
+int mkdir(const char*, mode_t);
+int mknod(const char*, mode_t, dev_t);
+int mkfifo(const char*, mode_t);
+int mkdirat(int, const char*, mode_t);
+int mknodat(int, const char*, mode_t, dev_t);
+int mkfifoat(int, const char*, mode_t);
 
-int futimens(int, const struct timespec [2]);
-int utimensat(int, const char *, const struct timespec [2], int);
+int futimens(int, const struct timespec[2]);
+int utimensat(int, const char*, const struct timespec[2], int);
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-int lchmod(const char *, mode_t);
+int lchmod(const char*, mode_t);
 #define S_IREAD S_IRUSR
 #define S_IWRITE S_IWUSR
 #define S_IEXEC S_IXUSR
@@ -111,5 +111,3 @@
 }
 #endif
 #endif
-
-
diff --git a/fusl/include/sys/statfs.h b/fusl/include/sys/statfs.h
index 6f4c623..dffeb26 100644
--- a/fusl/include/sys/statfs.h
+++ b/fusl/include/sys/statfs.h
@@ -1,5 +1,5 @@
-#ifndef	_SYS_STATFS_H
-#define	_SYS_STATFS_H
+#ifndef _SYS_STATFS_H
+#define _SYS_STATFS_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,14 +9,12 @@
 
 #include <sys/statvfs.h>
 
-typedef struct __fsid_t {
-	int __val[2];
-} fsid_t;
+typedef struct __fsid_t { int __val[2]; } fsid_t;
 
 #include <bits/statfs.h>
 
-int statfs (const char *, struct statfs *);
-int fstatfs (int, struct statfs *);
+int statfs(const char*, struct statfs*);
+int fstatfs(int, struct statfs*);
 
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
 #define statfs64 statfs
diff --git a/fusl/include/sys/statvfs.h b/fusl/include/sys/statvfs.h
index e0839ec..b1ffd8a 100644
--- a/fusl/include/sys/statvfs.h
+++ b/fusl/include/sys/statvfs.h
@@ -1,5 +1,5 @@
-#ifndef	_SYS_STATVFS_H
-#define	_SYS_STATVFS_H
+#ifndef _SYS_STATVFS_H
+#define _SYS_STATVFS_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -14,34 +14,34 @@
 #include <endian.h>
 
 struct statvfs {
-	unsigned long f_bsize, f_frsize;
-	fsblkcnt_t f_blocks, f_bfree, f_bavail;
-	fsfilcnt_t f_files, f_ffree, f_favail;
+  unsigned long f_bsize, f_frsize;
+  fsblkcnt_t f_blocks, f_bfree, f_bavail;
+  fsfilcnt_t f_files, f_ffree, f_favail;
 #if __BYTE_ORDER == __LITTLE_ENDIAN
-	unsigned long f_fsid;
-	unsigned :8*(2*sizeof(int)-sizeof(long));
+  unsigned long f_fsid;
+  unsigned : 8 * (2 * sizeof(int) - sizeof(long));
 #else
-	unsigned :8*(2*sizeof(int)-sizeof(long));
-	unsigned long f_fsid;
+  unsigned : 8 * (2 * sizeof(int) - sizeof(long));
+  unsigned long f_fsid;
 #endif
-	unsigned long f_flag, f_namemax;
-	int __reserved[6];
+  unsigned long f_flag, f_namemax;
+  int __reserved[6];
 };
 
-int statvfs (const char *__restrict, struct statvfs *__restrict);
-int fstatvfs (int, struct statvfs *);
+int statvfs(const char* __restrict, struct statvfs* __restrict);
+int fstatvfs(int, struct statvfs*);
 
 #define ST_RDONLY 1
 #define ST_NOSUID 2
-#define ST_NODEV  4
+#define ST_NODEV 4
 #define ST_NOEXEC 8
 #define ST_SYNCHRONOUS 16
-#define ST_MANDLOCK    64
-#define ST_WRITE       128
-#define ST_APPEND      256
-#define ST_IMMUTABLE   512
-#define ST_NOATIME     1024
-#define ST_NODIRATIME  2048
+#define ST_MANDLOCK 64
+#define ST_WRITE 128
+#define ST_APPEND 256
+#define ST_IMMUTABLE 512
+#define ST_NOATIME 1024
+#define ST_NODIRATIME 2048
 
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
 #define statvfs64 statvfs
diff --git a/fusl/include/sys/swap.h b/fusl/include/sys/swap.h
index 11c0f92..7529227 100644
--- a/fusl/include/sys/swap.h
+++ b/fusl/include/sys/swap.h
@@ -5,14 +5,13 @@
 extern "C" {
 #endif
 
+#define SWAP_FLAG_PREFER 0x8000
+#define SWAP_FLAG_PRIO_MASK 0x7fff
+#define SWAP_FLAG_PRIO_SHIFT 0
+#define SWAP_FLAG_DISCARD 0x10000
 
-#define	SWAP_FLAG_PREFER        0x8000
-#define	SWAP_FLAG_PRIO_MASK     0x7fff
-#define	SWAP_FLAG_PRIO_SHIFT    0
-#define SWAP_FLAG_DISCARD       0x10000
-
-int swapon (const char *, int);
-int swapoff (const char *);
+int swapon(const char*, int);
+int swapoff(const char*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/sysinfo.h b/fusl/include/sys/sysinfo.h
index 6a3931e..fbcbe1b 100644
--- a/fusl/include/sys/sysinfo.h
+++ b/fusl/include/sys/sysinfo.h
@@ -8,26 +8,26 @@
 #define SI_LOAD_SHIFT 16
 
 struct sysinfo {
-	unsigned long uptime;
-	unsigned long loads[3];
-	unsigned long totalram;
-	unsigned long freeram;
-	unsigned long sharedram;
-	unsigned long bufferram;
-	unsigned long totalswap;
-	unsigned long freeswap;
-	unsigned short procs, pad;
-	unsigned long totalhigh;
-	unsigned long freehigh;
-	unsigned mem_unit;
-	char __reserved[256];
+  unsigned long uptime;
+  unsigned long loads[3];
+  unsigned long totalram;
+  unsigned long freeram;
+  unsigned long sharedram;
+  unsigned long bufferram;
+  unsigned long totalswap;
+  unsigned long freeswap;
+  unsigned short procs, pad;
+  unsigned long totalhigh;
+  unsigned long freehigh;
+  unsigned mem_unit;
+  char __reserved[256];
 };
 
-int sysinfo (struct sysinfo *);
-int get_nprocs_conf (void);
-int get_nprocs (void);
-long get_phys_pages (void);
-long get_avphys_pages (void);
+int sysinfo(struct sysinfo*);
+int get_nprocs_conf(void);
+int get_nprocs(void);
+long get_phys_pages(void);
+long get_avphys_pages(void);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/sysmacros.h b/fusl/include/sys/sysmacros.h
index 07a3ef1..3691b5a 100644
--- a/fusl/include/sys/sysmacros.h
+++ b/fusl/include/sys/sysmacros.h
@@ -2,14 +2,11 @@
 #define _SYS_SYSMACROS_H
 
 #define major(x) \
-	((unsigned)( (((x)>>31>>1) & 0xfffff000) | (((x)>>8) & 0x00000fff) ))
-#define minor(x) \
-	((unsigned)( (((x)>>12) & 0xffffff00) | ((x) & 0x000000ff) ))
+  ((unsigned)((((x) >> 31 >> 1) & 0xfffff000) | (((x) >> 8) & 0x00000fff)))
+#define minor(x) ((unsigned)((((x) >> 12) & 0xffffff00) | ((x)&0x000000ff)))
 
-#define makedev(x,y) ( \
-        (((x)&0xfffff000ULL) << 32) | \
-	(((x)&0x00000fffULL) << 8) | \
-        (((y)&0xffffff00ULL) << 12) | \
-	(((y)&0x000000ffULL)) )
+#define makedev(x, y)                                         \
+  ((((x)&0xfffff000ULL) << 32) | (((x)&0x00000fffULL) << 8) | \
+   (((y)&0xffffff00ULL) << 12) | (((y)&0x000000ffULL)))
 
 #endif
diff --git a/fusl/include/sys/time.h b/fusl/include/sys/time.h
index bfe1414..30c8a25 100644
--- a/fusl/include/sys/time.h
+++ b/fusl/include/sys/time.h
@@ -8,58 +8,57 @@
 
 #include <sys/select.h>
 
-int gettimeofday (struct timeval *__restrict, void *__restrict);
+int gettimeofday(struct timeval* __restrict, void* __restrict);
 
-#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
+#if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
-#define ITIMER_REAL    0
+#define ITIMER_REAL 0
 #define ITIMER_VIRTUAL 1
-#define ITIMER_PROF    2
+#define ITIMER_PROF 2
 
-struct itimerval
-{
-	struct timeval it_interval;
-	struct timeval it_value;
+struct itimerval {
+  struct timeval it_interval;
+  struct timeval it_value;
 };
 
-int getitimer (int, struct itimerval *);
-int setitimer (int, const struct itimerval *__restrict, struct itimerval *__restrict);
-int utimes (const char *, const struct timeval [2]);
+int getitimer(int, struct itimerval*);
+int setitimer(int,
+              const struct itimerval* __restrict,
+              struct itimerval* __restrict);
+int utimes(const char*, const struct timeval[2]);
 
 #endif
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 struct timezone {
-	int tz_minuteswest;
-	int tz_dsttime;
+  int tz_minuteswest;
+  int tz_dsttime;
 };
-int futimes(int, const struct timeval [2]);
-int futimesat(int, const char *, const struct timeval [2]);
-int lutimes(const char *, const struct timeval [2]);
-int settimeofday(const struct timeval *, const struct timezone *);
-int adjtime (const struct timeval *, struct timeval *);
+int futimes(int, const struct timeval[2]);
+int futimesat(int, const char*, const struct timeval[2]);
+int lutimes(const char*, const struct timeval[2]);
+int settimeofday(const struct timeval*, const struct timezone*);
+int adjtime(const struct timeval*, struct timeval*);
 #define timerisset(t) ((t)->tv_sec || (t)->tv_usec)
 #define timerclear(t) ((t)->tv_sec = (t)->tv_usec = 0)
-#define timercmp(s,t,op) ((s)->tv_sec == (t)->tv_sec ? \
-	(s)->tv_usec op (t)->tv_usec : (s)->tv_sec op (t)->tv_sec)
-#define timeradd(s,t,a) (void) ( (a)->tv_sec = (s)->tv_sec + (t)->tv_sec, \
-	((a)->tv_usec = (s)->tv_usec + (t)->tv_usec) >= 1000000 && \
-	((a)->tv_usec -= 1000000, (a)->tv_sec++) )
-#define timersub(s,t,a) (void) ( (a)->tv_sec = (s)->tv_sec - (t)->tv_sec, \
-	((a)->tv_usec = (s)->tv_usec - (t)->tv_usec) < 0 && \
-	((a)->tv_usec += 1000000, (a)->tv_sec--) )
+#define timercmp(s, t, op)                                  \
+  ((s)->tv_sec == (t)->tv_sec ? (s)->tv_usec op(t)->tv_usec \
+                              : (s)->tv_sec op(t)->tv_sec)
+#define timeradd(s, t, a)                                           \
+  (void)((a)->tv_sec = (s)->tv_sec + (t)->tv_sec,                   \
+         ((a)->tv_usec = (s)->tv_usec + (t)->tv_usec) >= 1000000 && \
+             ((a)->tv_usec -= 1000000, (a)->tv_sec++))
+#define timersub(s, t, a)                                    \
+  (void)((a)->tv_sec = (s)->tv_sec - (t)->tv_sec,            \
+         ((a)->tv_usec = (s)->tv_usec - (t)->tv_usec) < 0 && \
+             ((a)->tv_usec += 1000000, (a)->tv_sec--))
 #endif
 
 #if defined(_GNU_SOURCE)
-#define TIMEVAL_TO_TIMESPEC(tv, ts) ( \
-	(ts)->tv_sec = (tv)->tv_sec, \
-	(ts)->tv_nsec = (tv)->tv_usec * 1000, \
-	(void)0 )
-#define TIMESPEC_TO_TIMEVAL(tv, ts) ( \
-	(tv)->tv_sec = (ts)->tv_sec, \
-	(tv)->tv_usec = (ts)->tv_nsec / 1000, \
-	(void)0 )
+#define TIMEVAL_TO_TIMESPEC(tv, ts) \
+  ((ts)->tv_sec = (tv)->tv_sec, (ts)->tv_nsec = (tv)->tv_usec * 1000, (void)0)
+#define TIMESPEC_TO_TIMEVAL(tv, ts) \
+  ((tv)->tv_sec = (ts)->tv_sec, (tv)->tv_usec = (ts)->tv_nsec / 1000, (void)0)
 #endif
 
 #ifdef __cplusplus
diff --git a/fusl/include/sys/timeb.h b/fusl/include/sys/timeb.h
index 108c1f5..d218bcc 100644
--- a/fusl/include/sys/timeb.h
+++ b/fusl/include/sys/timeb.h
@@ -9,12 +9,12 @@
 #include <bits/alltypes.h>
 
 struct timeb {
-	time_t time;
-	unsigned short millitm;
-	short timezone, dstflag;
+  time_t time;
+  unsigned short millitm;
+  short timezone, dstflag;
 };
 
-int ftime(struct timeb *);
+int ftime(struct timeb*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/timerfd.h b/fusl/include/sys/timerfd.h
index 9724d90..b9d4653 100644
--- a/fusl/include/sys/timerfd.h
+++ b/fusl/include/sys/timerfd.h
@@ -16,8 +16,8 @@
 struct itimerspec;
 
 int timerfd_create(int, int);
-int timerfd_settime(int, int, const struct itimerspec *, struct itimerspec *);
-int timerfd_gettime(int, struct itimerspec *);
+int timerfd_settime(int, int, const struct itimerspec*, struct itimerspec*);
+int timerfd_gettime(int, struct itimerspec*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/times.h b/fusl/include/sys/times.h
index cc55e57..de45d55 100644
--- a/fusl/include/sys/times.h
+++ b/fusl/include/sys/times.h
@@ -1,5 +1,5 @@
-#ifndef	_SYS_TIMES_H
-#define	_SYS_TIMES_H
+#ifndef _SYS_TIMES_H
+#define _SYS_TIMES_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -8,19 +8,17 @@
 #define __NEED_clock_t
 #include <bits/alltypes.h>
 
-struct tms
-{
-	clock_t tms_utime;
-	clock_t tms_stime;
-	clock_t tms_cutime;
-	clock_t tms_cstime;
+struct tms {
+  clock_t tms_utime;
+  clock_t tms_stime;
+  clock_t tms_cutime;
+  clock_t tms_cstime;
 };
 
-clock_t times (struct tms *);
+clock_t times(struct tms*);
 
 #ifdef __cplusplus
 }
 #endif
 
 #endif
-
diff --git a/fusl/include/sys/timex.h b/fusl/include/sys/timex.h
index 2e68888..6273306 100644
--- a/fusl/include/sys/timex.h
+++ b/fusl/include/sys/timex.h
@@ -12,84 +12,85 @@
 #include <sys/time.h>
 
 struct ntptimeval {
-	struct timeval time;
-	long maxerror, esterror;
+  struct timeval time;
+  long maxerror, esterror;
 };
 
 struct timex {
-	unsigned modes;
-	long offset, freq, maxerror, esterror;
-	int status;
-	long constant, precision, tolerance;
-	struct timeval time;
-	long tick, ppsfreq, jitter;
-	int shift;
-	long stabil, jitcnt, calcnt, errcnt, stbcnt;
-	int tai;
-	int __padding[11];
+  unsigned modes;
+  long offset, freq, maxerror, esterror;
+  int status;
+  long constant, precision, tolerance;
+  struct timeval time;
+  long tick, ppsfreq, jitter;
+  int shift;
+  long stabil, jitcnt, calcnt, errcnt, stbcnt;
+  int tai;
+  int __padding[11];
 };
 
-#define ADJ_OFFSET		0x0001
-#define ADJ_FREQUENCY		0x0002
-#define ADJ_MAXERROR		0x0004
-#define ADJ_ESTERROR		0x0008
-#define ADJ_STATUS		0x0010
-#define ADJ_TIMECONST		0x0020
-#define ADJ_TAI			0x0080
-#define ADJ_SETOFFSET		0x0100
-#define ADJ_MICRO		0x1000
-#define ADJ_NANO		0x2000
-#define ADJ_TICK		0x4000
-#define ADJ_OFFSET_SINGLESHOT	0x8001
-#define ADJ_OFFSET_SS_READ	0xa001
+#define ADJ_OFFSET 0x0001
+#define ADJ_FREQUENCY 0x0002
+#define ADJ_MAXERROR 0x0004
+#define ADJ_ESTERROR 0x0008
+#define ADJ_STATUS 0x0010
+#define ADJ_TIMECONST 0x0020
+#define ADJ_TAI 0x0080
+#define ADJ_SETOFFSET 0x0100
+#define ADJ_MICRO 0x1000
+#define ADJ_NANO 0x2000
+#define ADJ_TICK 0x4000
+#define ADJ_OFFSET_SINGLESHOT 0x8001
+#define ADJ_OFFSET_SS_READ 0xa001
 
-#define MOD_OFFSET	ADJ_OFFSET
-#define MOD_FREQUENCY	ADJ_FREQUENCY
-#define MOD_MAXERROR	ADJ_MAXERROR
-#define MOD_ESTERROR	ADJ_ESTERROR
-#define MOD_STATUS	ADJ_STATUS
-#define MOD_TIMECONST	ADJ_TIMECONST
-#define MOD_CLKB	ADJ_TICK
-#define MOD_CLKA	ADJ_OFFSET_SINGLESHOT
-#define MOD_TAI		ADJ_TAI
-#define MOD_MICRO	ADJ_MICRO
-#define MOD_NANO	ADJ_NANO
+#define MOD_OFFSET ADJ_OFFSET
+#define MOD_FREQUENCY ADJ_FREQUENCY
+#define MOD_MAXERROR ADJ_MAXERROR
+#define MOD_ESTERROR ADJ_ESTERROR
+#define MOD_STATUS ADJ_STATUS
+#define MOD_TIMECONST ADJ_TIMECONST
+#define MOD_CLKB ADJ_TICK
+#define MOD_CLKA ADJ_OFFSET_SINGLESHOT
+#define MOD_TAI ADJ_TAI
+#define MOD_MICRO ADJ_MICRO
+#define MOD_NANO ADJ_NANO
 
-#define STA_PLL		0x0001
-#define STA_PPSFREQ	0x0002
-#define STA_PPSTIME	0x0004
-#define STA_FLL		0x0008
+#define STA_PLL 0x0001
+#define STA_PPSFREQ 0x0002
+#define STA_PPSTIME 0x0004
+#define STA_FLL 0x0008
 
-#define STA_INS		0x0010
-#define STA_DEL		0x0020
-#define STA_UNSYNC	0x0040
-#define STA_FREQHOLD	0x0080
+#define STA_INS 0x0010
+#define STA_DEL 0x0020
+#define STA_UNSYNC 0x0040
+#define STA_FREQHOLD 0x0080
 
-#define STA_PPSSIGNAL	0x0100
-#define STA_PPSJITTER	0x0200
-#define STA_PPSWANDER	0x0400
-#define STA_PPSERROR	0x0800
+#define STA_PPSSIGNAL 0x0100
+#define STA_PPSJITTER 0x0200
+#define STA_PPSWANDER 0x0400
+#define STA_PPSERROR 0x0800
 
-#define STA_CLOCKERR	0x1000
-#define STA_NANO	0x2000
-#define STA_MODE	0x4000
-#define STA_CLK		0x8000
+#define STA_CLOCKERR 0x1000
+#define STA_NANO 0x2000
+#define STA_MODE 0x4000
+#define STA_CLK 0x8000
 
-#define STA_RONLY (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | \
-    STA_PPSERROR | STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
+#define STA_RONLY                                                 \
+  (STA_PPSSIGNAL | STA_PPSJITTER | STA_PPSWANDER | STA_PPSERROR | \
+   STA_CLOCKERR | STA_NANO | STA_MODE | STA_CLK)
 
-#define TIME_OK		0
-#define TIME_INS	1
-#define TIME_DEL	2
-#define TIME_OOP	3
-#define TIME_WAIT	4
-#define TIME_ERROR	5
-#define TIME_BAD	TIME_ERROR
+#define TIME_OK 0
+#define TIME_INS 1
+#define TIME_DEL 2
+#define TIME_OOP 3
+#define TIME_WAIT 4
+#define TIME_ERROR 5
+#define TIME_BAD TIME_ERROR
 
-#define MAXTC		6
+#define MAXTC 6
 
-int adjtimex(struct timex *);
-int clock_adjtime(clockid_t, struct timex *);
+int adjtimex(struct timex*);
+int clock_adjtime(clockid_t, struct timex*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/ttydefaults.h b/fusl/include/sys/ttydefaults.h
index d251b71..6b86e1d 100644
--- a/fusl/include/sys/ttydefaults.h
+++ b/fusl/include/sys/ttydefaults.h
@@ -3,10 +3,10 @@
 
 #define TTYDEF_IFLAG (BRKINT | ISTRIP | ICRNL | IMAXBEL | IXON | IXANY)
 #define TTYDEF_OFLAG (OPOST | ONLCR | XTABS)
-#define TTYDEF_LFLAG (ECHO | ICANON | ISIG | IEXTEN | ECHOE|ECHOKE|ECHOCTL)
+#define TTYDEF_LFLAG (ECHO | ICANON | ISIG | IEXTEN | ECHOE | ECHOKE | ECHOCTL)
 #define TTYDEF_CFLAG (CREAD | CS7 | PARENB | HUPCL)
 #define TTYDEF_SPEED (B9600)
-#define CTRL(x) (x&037)
+#define CTRL(x) (x & 037)
 #define CEOF CTRL('d')
 
 #ifdef _POSIX_VDISABLE
diff --git a/fusl/include/sys/types.h b/fusl/include/sys/types.h
index 75e489c..cf20b0c 100644
--- a/fusl/include/sys/types.h
+++ b/fusl/include/sys/types.h
@@ -1,5 +1,5 @@
-#ifndef	_SYS_TYPES_H
-#define	_SYS_TYPES_H
+#ifndef _SYS_TYPES_H
+#define _SYS_TYPES_H
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -60,7 +60,7 @@
 typedef unsigned char u_int8_t;
 typedef unsigned short u_int16_t;
 typedef unsigned u_int32_t;
-typedef char *caddr_t;
+typedef char* caddr_t;
 typedef unsigned char u_char;
 typedef unsigned short u_short, ushort;
 typedef unsigned u_int, uint;
diff --git a/fusl/include/sys/uio.h b/fusl/include/sys/uio.h
index 00f73a2..45d605b 100644
--- a/fusl/include/sys/uio.h
+++ b/fusl/include/sys/uio.h
@@ -23,12 +23,12 @@
 
 #define UIO_MAXIOV 1024
 
-ssize_t readv (int, const struct iovec *, int);
-ssize_t writev (int, const struct iovec *, int);
+ssize_t readv(int, const struct iovec*, int);
+ssize_t writev(int, const struct iovec*, int);
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-ssize_t preadv (int, const struct iovec *, int, off_t);
-ssize_t pwritev (int, const struct iovec *, int, off_t);
+ssize_t preadv(int, const struct iovec*, int, off_t);
+ssize_t pwritev(int, const struct iovec*, int, off_t);
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
 #define preadv64 preadv
 #define pwritev64 pwritev
@@ -37,8 +37,18 @@
 #endif
 
 #ifdef _GNU_SOURCE
-ssize_t process_vm_writev(pid_t, const struct iovec *, unsigned long, const struct iovec *, unsigned long, unsigned long);
-ssize_t process_vm_readv(pid_t, const struct iovec *, unsigned long, const struct iovec *, unsigned long, unsigned long);
+ssize_t process_vm_writev(pid_t,
+                          const struct iovec*,
+                          unsigned long,
+                          const struct iovec*,
+                          unsigned long,
+                          unsigned long);
+ssize_t process_vm_readv(pid_t,
+                         const struct iovec*,
+                         unsigned long,
+                         const struct iovec*,
+                         unsigned long,
+                         unsigned long);
 #endif
 
 #ifdef __cplusplus
diff --git a/fusl/include/sys/un.h b/fusl/include/sys/un.h
index 7494f1a..07a1a90 100644
--- a/fusl/include/sys/un.h
+++ b/fusl/include/sys/un.h
@@ -1,5 +1,5 @@
-#ifndef	_SYS_UN_H
-#define	_SYS_UN_H
+#ifndef _SYS_UN_H
+#define _SYS_UN_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -14,15 +14,14 @@
 
 #include <bits/alltypes.h>
 
-struct sockaddr_un
-{
-	sa_family_t sun_family;
-	char sun_path[108];
+struct sockaddr_un {
+  sa_family_t sun_family;
+  char sun_path[108];
 };
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-size_t strlen(const char *);
-#define SUN_LEN(s) (2+strlen((s)->sun_path))
+size_t strlen(const char*);
+#define SUN_LEN(s) (2 + strlen((s)->sun_path))
 #endif
 
 #ifdef __cplusplus
diff --git a/fusl/include/sys/utsname.h b/fusl/include/sys/utsname.h
index 6b9ea97..2a5762e 100644
--- a/fusl/include/sys/utsname.h
+++ b/fusl/include/sys/utsname.h
@@ -1,5 +1,5 @@
-#ifndef	_SYS_UTSNAME_H
-#define	_SYS_UTSNAME_H
+#ifndef _SYS_UTSNAME_H
+#define _SYS_UTSNAME_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -7,21 +7,20 @@
 
 #include <features.h>
 
-struct utsname
-{
-	char sysname[65];
-	char nodename[65];
-	char release[65];
-	char version[65];
-	char machine[65];
+struct utsname {
+  char sysname[65];
+  char nodename[65];
+  char release[65];
+  char version[65];
+  char machine[65];
 #ifdef _GNU_SOURCE
-	char domainname[65];
+  char domainname[65];
 #else
-	char __domainname[65];
+  char __domainname[65];
 #endif
 };
 
-int uname (struct utsname *);
+int uname(struct utsname*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sys/wait.h b/fusl/include/sys/wait.h
index 50c5c70..76648a5 100644
--- a/fusl/include/sys/wait.h
+++ b/fusl/include/sys/wait.h
@@ -1,5 +1,5 @@
-#ifndef	_SYS_WAIT_H
-#define	_SYS_WAIT_H
+#ifndef _SYS_WAIT_H
+#define _SYS_WAIT_H
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -10,47 +10,42 @@
 #define __NEED_id_t
 #include <bits/alltypes.h>
 
-typedef enum {
-	P_ALL = 0,
-	P_PID = 1,
-	P_PGID = 2
-} idtype_t;
+typedef enum { P_ALL = 0, P_PID = 1, P_PGID = 2 } idtype_t;
 
-pid_t wait (int *);
-pid_t waitpid (pid_t, int *, int );
+pid_t wait(int*);
+pid_t waitpid(pid_t, int*, int);
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #include <signal.h>
-int waitid (idtype_t, id_t, siginfo_t *, int);
+int waitid(idtype_t, id_t, siginfo_t*, int);
 #endif
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #include <sys/resource.h>
-pid_t wait3 (int *, int, struct rusage *);
-pid_t wait4 (pid_t, int *, int, struct rusage *);
+pid_t wait3(int*, int, struct rusage*);
+pid_t wait4(pid_t, int*, int, struct rusage*);
 #endif
 
-#define WNOHANG    1
-#define WUNTRACED  2
+#define WNOHANG 1
+#define WUNTRACED 2
 
-#define WSTOPPED   2
-#define WEXITED    4
+#define WSTOPPED 2
+#define WEXITED 4
 #define WCONTINUED 8
-#define WNOWAIT    0x1000000
+#define WNOWAIT 0x1000000
 
 #define __WNOTHREAD 0x20000000
-#define __WALL      0x40000000
-#define __WCLONE    0x80000000
+#define __WALL 0x40000000
+#define __WCLONE 0x80000000
 
-#define WEXITSTATUS(s) (((s) & 0xff00) >> 8)
-#define WTERMSIG(s) ((s) & 0x7f)
+#define WEXITSTATUS(s) (((s)&0xff00) >> 8)
+#define WTERMSIG(s) ((s)&0x7f)
 #define WSTOPSIG(s) WEXITSTATUS(s)
-#define WCOREDUMP(s) ((s) & 0x80)
+#define WCOREDUMP(s) ((s)&0x80)
 #define WIFEXITED(s) (!WTERMSIG(s))
-#define WIFSTOPPED(s) ((short)((((s)&0xffff)*0x10001)>>8) > 0x7f00)
-#define WIFSIGNALED(s) (((s)&0xffff)-1U < 0xffu)
+#define WIFSTOPPED(s) ((short)((((s)&0xffff) * 0x10001) >> 8) > 0x7f00)
+#define WIFSIGNALED(s) (((s)&0xffff) - 1U < 0xffu)
 #define WIFCONTINUED(s) ((s) == 0xffff)
 
 #ifdef __cplusplus
diff --git a/fusl/include/sys/xattr.h b/fusl/include/sys/xattr.h
index f926493..171d36c 100644
--- a/fusl/include/sys/xattr.h
+++ b/fusl/include/sys/xattr.h
@@ -1,5 +1,5 @@
-#ifndef	_SYS_XATTR_H
-#define	_SYS_XATTR_H
+#ifndef _SYS_XATTR_H
+#define _SYS_XATTR_H
 #ifdef __cplusplus
 extern "C" {
 #endif
@@ -11,18 +11,18 @@
 #define XATTR_CREATE 1
 #define XATTR_REPLACE 2
 
-ssize_t getxattr(const char *, const char *, void *, size_t);
-ssize_t lgetxattr(const char *, const char *, void *, size_t);
-ssize_t fgetxattr(int filedes, const char *, void *, size_t);
-ssize_t listxattr(const char *, char *, size_t);
-ssize_t llistxattr(const char *, char *, size_t);
-ssize_t flistxattr(int filedes, char *, size_t);
-int setxattr(const char *, const char *, const void *, size_t, int);
-int lsetxattr(const char *, const char *, const void *, size_t, int);
-int fsetxattr(int, const char *, const void *, size_t, int);
-int removexattr(const char *, const char *);
-int lremovexattr(const char *, const char *);
-int fremovexattr(int, const char *);
+ssize_t getxattr(const char*, const char*, void*, size_t);
+ssize_t lgetxattr(const char*, const char*, void*, size_t);
+ssize_t fgetxattr(int filedes, const char*, void*, size_t);
+ssize_t listxattr(const char*, char*, size_t);
+ssize_t llistxattr(const char*, char*, size_t);
+ssize_t flistxattr(int filedes, char*, size_t);
+int setxattr(const char*, const char*, const void*, size_t, int);
+int lsetxattr(const char*, const char*, const void*, size_t, int);
+int fsetxattr(int, const char*, const void*, size_t, int);
+int removexattr(const char*, const char*);
+int lremovexattr(const char*, const char*);
+int fremovexattr(int, const char*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/sysexits.h b/fusl/include/sysexits.h
index 16eeb41..17a9eec 100644
--- a/fusl/include/sysexits.h
+++ b/fusl/include/sysexits.h
@@ -1,4 +1,4 @@
-#ifndef	_SYSEXITS_H
+#ifndef _SYSEXITS_H
 #define _SYSEXITS_H
 #define EX_OK 0
 #define EX__BASE 64
diff --git a/fusl/include/syslog.h b/fusl/include/syslog.h
index 5b4d296..681eec7 100644
--- a/fusl/include/syslog.h
+++ b/fusl/include/syslog.h
@@ -7,89 +7,110 @@
 
 #include <features.h>
 
-#define LOG_EMERG   0
-#define LOG_ALERT   1
-#define LOG_CRIT    2
-#define LOG_ERR     3
+#define LOG_EMERG 0
+#define LOG_ALERT 1
+#define LOG_CRIT 2
+#define LOG_ERR 3
 #define LOG_WARNING 4
-#define LOG_NOTICE  5
-#define LOG_INFO    6
-#define LOG_DEBUG   7
+#define LOG_NOTICE 5
+#define LOG_INFO 6
+#define LOG_DEBUG 7
 
 #define LOG_PRIMASK 7
 #define LOG_PRI(p) ((p)&LOG_PRIMASK)
-#define	LOG_MAKEPRI(f, p) (((f)<<3)|(p))
+#define LOG_MAKEPRI(f, p) (((f) << 3) | (p))
 
-#define LOG_MASK(p) (1<<(p))
-#define LOG_UPTO(p) ((1<<((p)+1))-1)
+#define LOG_MASK(p) (1 << (p))
+#define LOG_UPTO(p) ((1 << ((p) + 1)) - 1)
 
-#define LOG_KERN     (0<<3)
-#define LOG_USER     (1<<3)
-#define LOG_MAIL     (2<<3)
-#define LOG_DAEMON   (3<<3)
-#define LOG_AUTH     (4<<3)
-#define LOG_SYSLOG   (5<<3)
-#define LOG_LPR      (6<<3)
-#define LOG_NEWS     (7<<3)
-#define LOG_UUCP     (8<<3)
-#define LOG_CRON     (9<<3)
-#define	LOG_AUTHPRIV (10<<3)
-#define	LOG_FTP      (11<<3)
+#define LOG_KERN (0 << 3)
+#define LOG_USER (1 << 3)
+#define LOG_MAIL (2 << 3)
+#define LOG_DAEMON (3 << 3)
+#define LOG_AUTH (4 << 3)
+#define LOG_SYSLOG (5 << 3)
+#define LOG_LPR (6 << 3)
+#define LOG_NEWS (7 << 3)
+#define LOG_UUCP (8 << 3)
+#define LOG_CRON (9 << 3)
+#define LOG_AUTHPRIV (10 << 3)
+#define LOG_FTP (11 << 3)
 
-#define LOG_LOCAL0   (16<<3)
-#define LOG_LOCAL1   (17<<3)
-#define LOG_LOCAL2   (18<<3)
-#define LOG_LOCAL3   (19<<3)
-#define LOG_LOCAL4   (20<<3)
-#define LOG_LOCAL5   (21<<3)
-#define LOG_LOCAL6   (22<<3)
-#define LOG_LOCAL7   (23<<3)
+#define LOG_LOCAL0 (16 << 3)
+#define LOG_LOCAL1 (17 << 3)
+#define LOG_LOCAL2 (18 << 3)
+#define LOG_LOCAL3 (19 << 3)
+#define LOG_LOCAL4 (20 << 3)
+#define LOG_LOCAL5 (21 << 3)
+#define LOG_LOCAL6 (22 << 3)
+#define LOG_LOCAL7 (23 << 3)
 
 #define LOG_NFACILITIES 24
 #define LOG_FACMASK 0x3f8
-#define LOG_FAC(p) (((p)&LOG_FACMASK)>>3)
+#define LOG_FAC(p) (((p)&LOG_FACMASK) >> 3)
 
-#define LOG_PID    0x01
-#define LOG_CONS   0x02
+#define LOG_PID 0x01
+#define LOG_CONS 0x02
 #define LOG_ODELAY 0x04
 #define LOG_NDELAY 0x08
 #define LOG_NOWAIT 0x10
 #define LOG_PERROR 0x20
 
-void closelog (void);
-void openlog (const char *, int, int);
-int setlogmask (int);
-void syslog (int, const char *, ...);
+void closelog(void);
+void openlog(const char*, int, int);
+int setlogmask(int);
+void syslog(int, const char*, ...);
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define _PATH_LOG "/dev/log"
 #define __NEED_va_list
 #include <bits/alltypes.h>
-void vsyslog (int, const char *, va_list);
+void vsyslog(int, const char*, va_list);
 #if defined(SYSLOG_NAMES)
-#define	INTERNAL_NOPRI 0x10
-#define	INTERNAL_MARK (LOG_NFACILITIES<<3)
+#define INTERNAL_NOPRI 0x10
+#define INTERNAL_MARK (LOG_NFACILITIES << 3)
 typedef struct {
-	char *c_name;
-	int c_val;
+  char* c_name;
+  int c_val;
 } CODE;
-#define prioritynames ((CODE *)(const CODE []){ \
-	{ "alert", LOG_ALERT }, { "crit", LOG_CRIT }, { "debug", LOG_DEBUG }, \
-	{ "emerg", LOG_EMERG }, { "err", LOG_ERR }, { "error", LOG_ERR }, \
-	{ "info", LOG_INFO }, { "none", INTERNAL_NOPRI }, \
-	{ "notice", LOG_NOTICE }, { "panic", LOG_EMERG }, \
-	{ "warn", LOG_WARNING }, { "warning", LOG_WARNING }, { 0, -1 } })
-#define facilitynames ((CODE *)(const CODE []){ \
-	{ "auth", LOG_AUTH }, { "authpriv", LOG_AUTHPRIV }, \
-	{ "cron", LOG_CRON }, { "daemon", LOG_DAEMON }, { "ftp", LOG_FTP }, \
-	{ "kern", LOG_KERN }, { "lpr", LOG_LPR }, { "mail", LOG_MAIL }, \
-	{ "mark", INTERNAL_MARK }, { "news", LOG_NEWS }, \
-	{ "security", LOG_AUTH }, { "syslog", LOG_SYSLOG }, \
-	{ "user", LOG_USER }, { "uucp", LOG_UUCP }, \
-	{ "local0", LOG_LOCAL0 }, { "local1", LOG_LOCAL1 }, \
-	{ "local2", LOG_LOCAL2 }, { "local3", LOG_LOCAL3 }, \
-	{ "local4", LOG_LOCAL4 }, { "local5", LOG_LOCAL5 }, \
-	{ "local6", LOG_LOCAL6 }, { "local7", LOG_LOCAL7 }, { 0, -1 } })
+#define prioritynames                              \
+  ((CODE*)(const CODE[]){{"alert", LOG_ALERT},     \
+                         {"crit", LOG_CRIT},       \
+                         {"debug", LOG_DEBUG},     \
+                         {"emerg", LOG_EMERG},     \
+                         {"err", LOG_ERR},         \
+                         {"error", LOG_ERR},       \
+                         {"info", LOG_INFO},       \
+                         {"none", INTERNAL_NOPRI}, \
+                         {"notice", LOG_NOTICE},   \
+                         {"panic", LOG_EMERG},     \
+                         {"warn", LOG_WARNING},    \
+                         {"warning", LOG_WARNING}, \
+                         {0, -1}})
+#define facilitynames                                \
+  ((CODE*)(const CODE[]){{"auth", LOG_AUTH},         \
+                         {"authpriv", LOG_AUTHPRIV}, \
+                         {"cron", LOG_CRON},         \
+                         {"daemon", LOG_DAEMON},     \
+                         {"ftp", LOG_FTP},           \
+                         {"kern", LOG_KERN},         \
+                         {"lpr", LOG_LPR},           \
+                         {"mail", LOG_MAIL},         \
+                         {"mark", INTERNAL_MARK},    \
+                         {"news", LOG_NEWS},         \
+                         {"security", LOG_AUTH},     \
+                         {"syslog", LOG_SYSLOG},     \
+                         {"user", LOG_USER},         \
+                         {"uucp", LOG_UUCP},         \
+                         {"local0", LOG_LOCAL0},     \
+                         {"local1", LOG_LOCAL1},     \
+                         {"local2", LOG_LOCAL2},     \
+                         {"local3", LOG_LOCAL3},     \
+                         {"local4", LOG_LOCAL4},     \
+                         {"local5", LOG_LOCAL5},     \
+                         {"local6", LOG_LOCAL6},     \
+                         {"local7", LOG_LOCAL7},     \
+                         {0, -1}})
 #endif
 #endif
 
diff --git a/fusl/include/tar.h b/fusl/include/tar.h
index be58984..70ea81b 100644
--- a/fusl/include/tar.h
+++ b/fusl/include/tar.h
@@ -1,26 +1,26 @@
-#ifndef	_TAR_H
-#define	_TAR_H
+#ifndef _TAR_H
+#define _TAR_H
 
-#define TSUID   04000
-#define TSGID   02000
-#define TSVTX   01000
-#define TUREAD  00400
+#define TSUID 04000
+#define TSGID 02000
+#define TSVTX 01000
+#define TUREAD 00400
 #define TUWRITE 00200
-#define TUEXEC  00100
-#define TGREAD  00040
+#define TUEXEC 00100
+#define TGREAD 00040
 #define TGWRITE 00020
-#define TGEXEC  00010
-#define TOREAD  00004
+#define TGEXEC 00010
+#define TOREAD 00004
 #define TOWRITE 00002
-#define TOEXEC  00001
+#define TOEXEC 00001
 
-#define REGTYPE  '0'
+#define REGTYPE '0'
 #define AREGTYPE '\0'
-#define LNKTYPE  '1'
-#define SYMTYPE  '2'
-#define CHRTYPE  '3'
-#define BLKTYPE  '4'
-#define DIRTYPE  '5'
+#define LNKTYPE '1'
+#define SYMTYPE '2'
+#define CHRTYPE '3'
+#define BLKTYPE '4'
+#define DIRTYPE '5'
 #define FIFOTYPE '6'
 #define CONTTYPE '7'
 
diff --git a/fusl/include/termios.h b/fusl/include/termios.h
index d73c780..9931015 100644
--- a/fusl/include/termios.h
+++ b/fusl/include/termios.h
@@ -1,5 +1,5 @@
-#ifndef	_TERMIOS_H
-#define	_TERMIOS_H
+#ifndef _TERMIOS_H
+#define _TERMIOS_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -19,24 +19,24 @@
 
 #include <bits/termios.h>
 
-speed_t cfgetospeed (const struct termios *);
-speed_t cfgetispeed (const struct termios *);
-int cfsetospeed (struct termios *, speed_t);
-int cfsetispeed (struct termios *, speed_t);
+speed_t cfgetospeed(const struct termios*);
+speed_t cfgetispeed(const struct termios*);
+int cfsetospeed(struct termios*, speed_t);
+int cfsetispeed(struct termios*, speed_t);
 
-int tcgetattr (int, struct termios *);
-int tcsetattr (int, int, const struct termios *);
+int tcgetattr(int, struct termios*);
+int tcsetattr(int, int, const struct termios*);
 
-int tcsendbreak (int, int);
-int tcdrain (int);
-int tcflush (int, int);
-int tcflow (int, int);
+int tcsendbreak(int, int);
+int tcdrain(int);
+int tcflush(int, int);
+int tcflow(int, int);
 
-pid_t tcgetsid (int);
+pid_t tcgetsid(int);
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-void cfmakeraw(struct termios *);
-int cfsetspeed(struct termios *, speed_t);
+void cfmakeraw(struct termios*);
+int cfsetspeed(struct termios*, speed_t);
 #endif
 
 #ifdef __cplusplus
diff --git a/fusl/include/tgmath.h b/fusl/include/tgmath.h
index e41ccac..f27b31e 100644
--- a/fusl/include/tgmath.h
+++ b/fusl/include/tgmath.h
@@ -13,16 +13,20 @@
 #include <math.h>
 #include <complex.h>
 
-#define __IS_FP(x) (sizeof((x)+1ULL) == sizeof((x)+1.0f))
-#define __IS_CX(x) (__IS_FP(x) && sizeof(x) == sizeof((x)+I))
-#define __IS_REAL(x) (__IS_FP(x) && 2*sizeof(x) == sizeof((x)+I))
+#define __IS_FP(x) (sizeof((x) + 1ULL) == sizeof((x) + 1.0f))
+#define __IS_CX(x) (__IS_FP(x) && sizeof(x) == sizeof((x) + I))
+#define __IS_REAL(x) (__IS_FP(x) && 2 * sizeof(x) == sizeof((x) + I))
 
 #define __FLT(x) (__IS_REAL(x) && sizeof(x) == sizeof(float))
-#define __LDBL(x) (__IS_REAL(x) && sizeof(x) == sizeof(long double) && sizeof(long double) != sizeof(double))
+#define __LDBL(x)                                      \
+  (__IS_REAL(x) && sizeof(x) == sizeof(long double) && \
+   sizeof(long double) != sizeof(double))
 
 #define __FLTCX(x) (__IS_CX(x) && sizeof(x) == sizeof(float complex))
 #define __DBLCX(x) (__IS_CX(x) && sizeof(x) == sizeof(double complex))
-#define __LDBLCX(x) (__IS_CX(x) && sizeof(x) == sizeof(long double complex) && sizeof(long double) != sizeof(double))
+#define __LDBLCX(x)                                          \
+  (__IS_CX(x) && sizeof(x) == sizeof(long double complex) && \
+   sizeof(long double) != sizeof(double))
 
 /* return type */
 
@@ -43,30 +47,28 @@
 (__IS_FP above was carefully chosen this way)
 */
 /* if c then t else void */
-#define __type1(c,t) __typeof__(*(0?(t*)0:(void*)!(c)))
+#define __type1(c, t) __typeof__(*(0 ? (t*)0 : (void*)!(c)))
 /* if c then t1 else t2 */
-#define __type2(c,t1,t2) __typeof__(*(0?(__type1(c,t1)*)0:(__type1(!(c),t2)*)0))
+#define __type2(c, t1, t2) \
+  __typeof__(*(0 ? (__type1(c, t1)*)0 : (__type1(!(c), t2)*)0))
 /* cast to double when x is integral, otherwise use typeof(x) */
-#define __RETCAST(x) ( \
-	__type2(__IS_FP(x), __typeof__(x), double))
+#define __RETCAST(x) (__type2(__IS_FP(x), __typeof__(x), double))
 /* 2 args case, should work for complex types (cpow) */
-#define __RETCAST_2(x, y) ( \
-	__type2(__IS_FP(x) && __IS_FP(y), \
-		__typeof__((x)+(y)), \
-		__typeof__((x)+(y)+1.0)))
+#define __RETCAST_2(x, y)                                   \
+  (__type2(__IS_FP(x) && __IS_FP(y), __typeof__((x) + (y)), \
+           __typeof__((x) + (y) + 1.0)))
 /* 3 args case (fma only) */
-#define __RETCAST_3(x, y, z) ( \
-	__type2(__IS_FP(x) && __IS_FP(y) && __IS_FP(z), \
-		__typeof__((x)+(y)+(z)), \
-		__typeof__((x)+(y)+(z)+1.0)))
+#define __RETCAST_3(x, y, z)                       \
+  (__type2(__IS_FP(x) && __IS_FP(y) && __IS_FP(z), \
+           __typeof__((x) + (y) + (z)), __typeof__((x) + (y) + (z) + 1.0)))
 /* drop complex from the type of x */
 /* TODO: wrong when sizeof(long double)==sizeof(double) */
-#define __RETCAST_REAL(x) (  \
-	__type2(__IS_FP(x) && sizeof((x)+I) == sizeof(float complex), float, \
-	__type2(sizeof((x)+1.0+I) == sizeof(double complex), double, \
-		long double)))
+#define __RETCAST_REAL(x)                                                   \
+  (__type2(__IS_FP(x) && sizeof((x) + I) == sizeof(float complex), float,   \
+           __type2(sizeof((x) + 1.0 + I) == sizeof(double complex), double, \
+                   long double)))
 /* add complex to the type of x */
-#define __RETCAST_CX(x) (__typeof__(__RETCAST(x)0+I))
+#define __RETCAST_CX(x) (__typeof__(__RETCAST(x) 0 + I))
 #else
 #define __RETCAST(x)
 #define __RETCAST_2(x, y)
@@ -77,69 +79,75 @@
 
 /* function selection */
 
-#define __tg_real_nocast(fun, x) ( \
-	__FLT(x) ? fun ## f (x) : \
-	__LDBL(x) ? fun ## l (x) : \
-	fun(x) )
+#define __tg_real_nocast(fun, x) \
+  (__FLT(x) ? fun##f(x) : __LDBL(x) ? fun##l(x) : fun(x))
 
-#define __tg_real(fun, x) (__RETCAST(x)__tg_real_nocast(fun, x))
+#define __tg_real(fun, x) (__RETCAST(x) __tg_real_nocast(fun, x))
 
-#define __tg_real_2_1(fun, x, y) (__RETCAST(x)( \
-	__FLT(x) ? fun ## f (x, y) : \
-	__LDBL(x) ? fun ## l (x, y) : \
-	fun(x, y) ))
+#define __tg_real_2_1(fun, x, y) \
+  (__RETCAST(x)(__FLT(x) ? fun##f(x, y) : __LDBL(x) ? fun##l(x, y) : fun(x, y)))
 
-#define __tg_real_2(fun, x, y) (__RETCAST_2(x, y)( \
-	__FLT(x) && __FLT(y) ? fun ## f (x, y) : \
-	__LDBL((x)+(y)) ? fun ## l (x, y) : \
-	fun(x, y) ))
+#define __tg_real_2(fun, x, y)                                                \
+  (__RETCAST_2(x, y)(__FLT(x) && __FLT(y) ? fun##f(x, y) : __LDBL((x) + (y))  \
+                                                               ? fun##l(x, y) \
+                                                               : fun(x, y)))
 
-#define __tg_complex(fun, x) (__RETCAST_CX(x)( \
-	__FLTCX((x)+I) && __IS_FP(x) ? fun ## f (x) : \
-	__LDBLCX((x)+I) ? fun ## l (x) : \
-	fun(x) ))
+#define __tg_complex(fun, x)                      \
+  (__RETCAST_CX(x)(__FLTCX((x) + I) && __IS_FP(x) \
+                       ? fun##f(x)                \
+                       : __LDBLCX((x) + I) ? fun##l(x) : fun(x)))
 
-#define __tg_complex_retreal(fun, x) (__RETCAST_REAL(x)( \
-	__FLTCX((x)+I) && __IS_FP(x) ? fun ## f (x) : \
-	__LDBLCX((x)+I) ? fun ## l (x) : \
-	fun(x) ))
+#define __tg_complex_retreal(fun, x)                \
+  (__RETCAST_REAL(x)(__FLTCX((x) + I) && __IS_FP(x) \
+                         ? fun##f(x)                \
+                         : __LDBLCX((x) + I) ? fun##l(x) : fun(x)))
 
-#define __tg_real_complex(fun, x) (__RETCAST(x)( \
-	__FLTCX(x) ? c ## fun ## f (x) : \
-	__DBLCX(x) ? c ## fun (x) : \
-	__LDBLCX(x) ? c ## fun ## l (x) : \
-	__FLT(x) ? fun ## f (x) : \
-	__LDBL(x) ? fun ## l (x) : \
-	fun(x) ))
+#define __tg_real_complex(fun, x)                                              \
+  (__RETCAST(x)(                                                               \
+      __FLTCX(x) ? c##fun##f(x)                                                \
+                 : __DBLCX(x) ? c##fun(x)                                      \
+                              : __LDBLCX(x) ? c##fun##l(x)                     \
+                                            : __FLT(x) ? fun##f(x)             \
+                                                       : __LDBL(x) ? fun##l(x) \
+                                                                   : fun(x)))
 
 /* special cases */
 
-#define __tg_real_remquo(x, y, z) (__RETCAST_2(x, y)( \
-	__FLT(x) && __FLT(y) ? remquof(x, y, z) : \
-	__LDBL((x)+(y)) ? remquol(x, y, z) : \
-	remquo(x, y, z) ))
+#define __tg_real_remquo(x, y, z)                                            \
+  (__RETCAST_2(                                                              \
+      x, y)(__FLT(x) && __FLT(y) ? remquof(x, y, z) : __LDBL((x) + (y))      \
+                                                          ? remquol(x, y, z) \
+                                                          : remquo(x, y, z)))
 
-#define __tg_real_fma(x, y, z) (__RETCAST_3(x, y, z)( \
-	__FLT(x) && __FLT(y) && __FLT(z) ? fmaf(x, y, z) : \
-	__LDBL((x)+(y)+(z)) ? fmal(x, y, z) : \
-	fma(x, y, z) ))
+#define __tg_real_fma(x, y, z)                  \
+  (__RETCAST_3(                                 \
+      x, y, z)(__FLT(x) && __FLT(y) && __FLT(z) \
+                   ? fmaf(x, y, z)              \
+                   : __LDBL((x) + (y) + (z)) ? fmal(x, y, z) : fma(x, y, z)))
 
-#define __tg_real_complex_pow(x, y) (__RETCAST_2(x, y)( \
-	__FLTCX((x)+(y)) && __IS_FP(x) && __IS_FP(y) ? cpowf(x, y) : \
-	__FLTCX((x)+(y)) ? cpow(x, y) : \
-	__DBLCX((x)+(y)) ? cpow(x, y) : \
-	__LDBLCX((x)+(y)) ? cpowl(x, y) : \
-	__FLT(x) && __FLT(y) ? powf(x, y) : \
-	__LDBL((x)+(y)) ? powl(x, y) : \
-	pow(x, y) ))
+#define __tg_real_complex_pow(x, y)                                  \
+  (__RETCAST_2(x, y)(__FLTCX((x) + (y)) && __IS_FP(x) && __IS_FP(y)  \
+                         ? cpowf(x, y)                               \
+                         : __FLTCX((x) + (y))                        \
+                               ? cpow(x, y)                          \
+                               : __DBLCX((x) + (y))                  \
+                                     ? cpow(x, y)                    \
+                                     : __LDBLCX((x) + (y))           \
+                                           ? cpowl(x, y)             \
+                                           : __FLT(x) && __FLT(y)    \
+                                                 ? powf(x, y)        \
+                                                 : __LDBL((x) + (y)) \
+                                                       ? powl(x, y)  \
+                                                       : pow(x, y)))
 
-#define __tg_real_complex_fabs(x) (__RETCAST_REAL(x)( \
-	__FLTCX(x) ? cabsf(x) : \
-	__DBLCX(x) ? cabs(x) : \
-	__LDBLCX(x) ? cabsl(x) : \
-	__FLT(x) ? fabsf(x) : \
-	__LDBL(x) ? fabsl(x) : \
-	fabs(x) ))
+#define __tg_real_complex_fabs(x)                                             \
+  (__RETCAST_REAL(x)(                                                         \
+      __FLTCX(x) ? cabsf(x)                                                   \
+                 : __DBLCX(x) ? cabs(x)                                       \
+                              : __LDBLCX(x) ? cabsl(x)                        \
+                                            : __FLT(x) ? fabsf(x)             \
+                                                       : __LDBL(x) ? fabsl(x) \
+                                                                   : fabs(x)))
 
 /* suppress any macros in math.h or complex.h */
 
@@ -206,65 +214,65 @@
 
 /* tg functions */
 
-#define acos(x)         __tg_real_complex(acos, (x))
-#define acosh(x)        __tg_real_complex(acosh, (x))
-#define asin(x)         __tg_real_complex(asin, (x))
-#define asinh(x)        __tg_real_complex(asinh, (x))
-#define atan(x)         __tg_real_complex(atan, (x))
-#define atan2(x,y)      __tg_real_2(atan2, (x), (y))
-#define atanh(x)        __tg_real_complex(atanh, (x))
-#define carg(x)         __tg_complex_retreal(carg, (x))
-#define cbrt(x)         __tg_real(cbrt, (x))
-#define ceil(x)         __tg_real(ceil, (x))
-#define cimag(x)        __tg_complex_retreal(cimag, (x))
-#define conj(x)         __tg_complex(conj, (x))
-#define copysign(x,y)   __tg_real_2(copysign, (x), (y))
-#define cos(x)          __tg_real_complex(cos, (x))
-#define cosh(x)         __tg_real_complex(cosh, (x))
-#define cproj(x)        __tg_complex(cproj, (x))
-#define creal(x)        __tg_complex_retreal(creal, (x))
-#define erf(x)          __tg_real(erf, (x))
-#define erfc(x)         __tg_real(erfc, (x))
-#define exp(x)          __tg_real_complex(exp, (x))
-#define exp2(x)         __tg_real(exp2, (x))
-#define expm1(x)        __tg_real(expm1, (x))
-#define fabs(x)         __tg_real_complex_fabs(x)
-#define fdim(x,y)       __tg_real_2(fdim, (x), (y))
-#define floor(x)        __tg_real(floor, (x))
-#define fma(x,y,z)      __tg_real_fma((x), (y), (z))
-#define fmax(x,y)       __tg_real_2(fmax, (x), (y))
-#define fmin(x,y)       __tg_real_2(fmin, (x), (y))
-#define fmod(x,y)       __tg_real_2(fmod, (x), (y))
-#define frexp(x,y)      __tg_real_2_1(frexp, (x), (y))
-#define hypot(x,y)      __tg_real_2(hypot, (x), (y))
-#define ilogb(x)        __tg_real_nocast(ilogb, (x))
-#define ldexp(x,y)      __tg_real_2_1(ldexp, (x), (y))
-#define lgamma(x)       __tg_real(lgamma, (x))
-#define llrint(x)       __tg_real_nocast(llrint, (x))
-#define llround(x)      __tg_real_nocast(llround, (x))
-#define log(x)          __tg_real_complex(log, (x))
-#define log10(x)        __tg_real(log10, (x))
-#define log1p(x)        __tg_real(log1p, (x))
-#define log2(x)         __tg_real(log2, (x))
-#define logb(x)         __tg_real(logb, (x))
-#define lrint(x)        __tg_real_nocast(lrint, (x))
-#define lround(x)       __tg_real_nocast(lround, (x))
-#define nearbyint(x)    __tg_real(nearbyint, (x))
-#define nextafter(x,y)  __tg_real_2(nextafter, (x), (y))
-#define nexttoward(x,y) __tg_real_2(nexttoward, (x), (y))
-#define pow(x,y)        __tg_real_complex_pow((x), (y))
-#define remainder(x,y)  __tg_real_2(remainder, (x), (y))
-#define remquo(x,y,z)   __tg_real_remquo((x), (y), (z))
-#define rint(x)         __tg_real(rint, (x))
-#define round(x)        __tg_real(round, (x))
-#define scalbln(x,y)    __tg_real_2_1(scalbln, (x), (y))
-#define scalbn(x,y)     __tg_real_2_1(scalbn, (x), (y))
-#define sin(x)          __tg_real_complex(sin, (x))
-#define sinh(x)         __tg_real_complex(sinh, (x))
-#define sqrt(x)         __tg_real_complex(sqrt, (x))
-#define tan(x)          __tg_real_complex(tan, (x))
-#define tanh(x)         __tg_real_complex(tanh, (x))
-#define tgamma(x)       __tg_real(tgamma, (x))
-#define trunc(x)        __tg_real(trunc, (x))
+#define acos(x) __tg_real_complex(acos, (x))
+#define acosh(x) __tg_real_complex(acosh, (x))
+#define asin(x) __tg_real_complex(asin, (x))
+#define asinh(x) __tg_real_complex(asinh, (x))
+#define atan(x) __tg_real_complex(atan, (x))
+#define atan2(x, y) __tg_real_2(atan2, (x), (y))
+#define atanh(x) __tg_real_complex(atanh, (x))
+#define carg(x) __tg_complex_retreal(carg, (x))
+#define cbrt(x) __tg_real(cbrt, (x))
+#define ceil(x) __tg_real(ceil, (x))
+#define cimag(x) __tg_complex_retreal(cimag, (x))
+#define conj(x) __tg_complex(conj, (x))
+#define copysign(x, y) __tg_real_2(copysign, (x), (y))
+#define cos(x) __tg_real_complex(cos, (x))
+#define cosh(x) __tg_real_complex(cosh, (x))
+#define cproj(x) __tg_complex(cproj, (x))
+#define creal(x) __tg_complex_retreal(creal, (x))
+#define erf(x) __tg_real(erf, (x))
+#define erfc(x) __tg_real(erfc, (x))
+#define exp(x) __tg_real_complex(exp, (x))
+#define exp2(x) __tg_real(exp2, (x))
+#define expm1(x) __tg_real(expm1, (x))
+#define fabs(x) __tg_real_complex_fabs(x)
+#define fdim(x, y) __tg_real_2(fdim, (x), (y))
+#define floor(x) __tg_real(floor, (x))
+#define fma(x, y, z) __tg_real_fma((x), (y), (z))
+#define fmax(x, y) __tg_real_2(fmax, (x), (y))
+#define fmin(x, y) __tg_real_2(fmin, (x), (y))
+#define fmod(x, y) __tg_real_2(fmod, (x), (y))
+#define frexp(x, y) __tg_real_2_1(frexp, (x), (y))
+#define hypot(x, y) __tg_real_2(hypot, (x), (y))
+#define ilogb(x) __tg_real_nocast(ilogb, (x))
+#define ldexp(x, y) __tg_real_2_1(ldexp, (x), (y))
+#define lgamma(x) __tg_real(lgamma, (x))
+#define llrint(x) __tg_real_nocast(llrint, (x))
+#define llround(x) __tg_real_nocast(llround, (x))
+#define log(x) __tg_real_complex(log, (x))
+#define log10(x) __tg_real(log10, (x))
+#define log1p(x) __tg_real(log1p, (x))
+#define log2(x) __tg_real(log2, (x))
+#define logb(x) __tg_real(logb, (x))
+#define lrint(x) __tg_real_nocast(lrint, (x))
+#define lround(x) __tg_real_nocast(lround, (x))
+#define nearbyint(x) __tg_real(nearbyint, (x))
+#define nextafter(x, y) __tg_real_2(nextafter, (x), (y))
+#define nexttoward(x, y) __tg_real_2(nexttoward, (x), (y))
+#define pow(x, y) __tg_real_complex_pow((x), (y))
+#define remainder(x, y) __tg_real_2(remainder, (x), (y))
+#define remquo(x, y, z) __tg_real_remquo((x), (y), (z))
+#define rint(x) __tg_real(rint, (x))
+#define round(x) __tg_real(round, (x))
+#define scalbln(x, y) __tg_real_2_1(scalbln, (x), (y))
+#define scalbn(x, y) __tg_real_2_1(scalbn, (x), (y))
+#define sin(x) __tg_real_complex(sin, (x))
+#define sinh(x) __tg_real_complex(sinh, (x))
+#define sqrt(x) __tg_real_complex(sqrt, (x))
+#define tan(x) __tg_real_complex(tan, (x))
+#define tanh(x) __tg_real_complex(tanh, (x))
+#define tgamma(x) __tg_real(tgamma, (x))
+#define trunc(x) __tg_real(trunc, (x))
 
 #endif
diff --git a/fusl/include/threads.h b/fusl/include/threads.h
index 0179482..0ea5ff6 100644
--- a/fusl/include/threads.h
+++ b/fusl/include/threads.h
@@ -8,14 +8,14 @@
 extern "C" {
 typedef unsigned long thrd_t;
 #else
-typedef struct __pthread *thrd_t;
+typedef struct __pthread* thrd_t;
 #define thread_local _Thread_local
 #endif
 
 typedef int once_flag;
 typedef unsigned tss_t;
-typedef int (*thrd_start_t)(void *);
-typedef void (*tss_dtor_t)(void *);
+typedef int (*thrd_start_t)(void*);
+typedef void (*tss_dtor_t)(void*);
 
 #define __NEED_cnd_t
 #define __NEED_mtx_t
@@ -25,28 +25,28 @@
 #define TSS_DTOR_ITERATIONS 4
 
 enum {
-	thrd_success  = 0,
-	thrd_busy     = 1,
-	thrd_error    = 2,
-	thrd_nomem    = 3,
-	thrd_timedout = 4,
+  thrd_success = 0,
+  thrd_busy = 1,
+  thrd_error = 2,
+  thrd_nomem = 3,
+  thrd_timedout = 4,
 };
 
 enum {
-	mtx_plain     = 0,
-	mtx_recursive = 1,
-	mtx_timed     = 2,
+  mtx_plain = 0,
+  mtx_recursive = 1,
+  mtx_timed = 2,
 };
 
 #define ONCE_FLAG_INIT 0
 
-int thrd_create(thrd_t *, thrd_start_t, void *);
+int thrd_create(thrd_t*, thrd_start_t, void*);
 _Noreturn void thrd_exit(int);
 
 int thrd_detach(thrd_t);
-int thrd_join(thrd_t, int *);
+int thrd_join(thrd_t, int*);
 
-int thrd_sleep(const struct timespec *, struct timespec *);
+int thrd_sleep(const struct timespec*, struct timespec*);
 void thrd_yield(void);
 
 thrd_t thrd_current(void);
@@ -55,30 +55,32 @@
 #define thrd_equal(A, B) ((A) == (B))
 #endif
 
-void call_once(once_flag *, void (*)(void));
+void call_once(once_flag*, void (*)(void));
 
-int mtx_init(mtx_t *, int);
-void mtx_destroy(mtx_t *);
+int mtx_init(mtx_t*, int);
+void mtx_destroy(mtx_t*);
 
-int mtx_lock(mtx_t *);
-int mtx_timedlock(mtx_t *__restrict, const struct timespec *__restrict);
-int mtx_trylock(mtx_t *);
-int mtx_unlock(mtx_t *);
+int mtx_lock(mtx_t*);
+int mtx_timedlock(mtx_t* __restrict, const struct timespec* __restrict);
+int mtx_trylock(mtx_t*);
+int mtx_unlock(mtx_t*);
 
-int cnd_init(cnd_t *);
-void cnd_destroy(cnd_t *);
+int cnd_init(cnd_t*);
+void cnd_destroy(cnd_t*);
 
-int cnd_broadcast(cnd_t *);
-int cnd_signal(cnd_t *);
+int cnd_broadcast(cnd_t*);
+int cnd_signal(cnd_t*);
 
-int cnd_timedwait(cnd_t *__restrict, mtx_t *__restrict, const struct timespec *__restrict);
-int cnd_wait(cnd_t *, mtx_t *);
+int cnd_timedwait(cnd_t* __restrict,
+                  mtx_t* __restrict,
+                  const struct timespec* __restrict);
+int cnd_wait(cnd_t*, mtx_t*);
 
-int tss_create(tss_t *, tss_dtor_t);
+int tss_create(tss_t*, tss_dtor_t);
 void tss_delete(tss_t key);
 
-int tss_set(tss_t, void *);
-void *tss_get(tss_t);
+int tss_set(tss_t, void*);
+void* tss_get(tss_t);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/time.h b/fusl/include/time.h
index 16ec08a..f62de05 100644
--- a/fusl/include/time.h
+++ b/fusl/include/time.h
@@ -1,4 +1,4 @@
-#ifndef	_TIME_H
+#ifndef _TIME_H
 #define _TIME_H
 
 #ifdef __cplusplus
@@ -13,15 +13,13 @@
 #define NULL ((void*)0)
 #endif
 
-
 #define __NEED_size_t
 #define __NEED_time_t
 #define __NEED_clock_t
 #define __NEED_struct_timespec
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define __NEED_clockid_t
 #define __NEED_timer_t
 #define __NEED_pid_t
@@ -35,105 +33,111 @@
 #define __tm_zone tm_zone
 #endif
 
-struct tm
-{
-	int tm_sec;
-	int tm_min;
-	int tm_hour;
-	int tm_mday;
-	int tm_mon;
-	int tm_year;
-	int tm_wday;
-	int tm_yday;
-	int tm_isdst;
-	long __tm_gmtoff;
-	const char *__tm_zone;
+struct tm {
+  int tm_sec;
+  int tm_min;
+  int tm_hour;
+  int tm_mday;
+  int tm_mon;
+  int tm_year;
+  int tm_wday;
+  int tm_yday;
+  int tm_isdst;
+  long __tm_gmtoff;
+  const char* __tm_zone;
 };
 
-clock_t clock (void);
-time_t time (time_t *);
-double difftime (time_t, time_t);
-time_t mktime (struct tm *);
-size_t strftime (char *__restrict, size_t, const char *__restrict, const struct tm *__restrict);
-struct tm *gmtime (const time_t *);
-struct tm *localtime (const time_t *);
-char *asctime (const struct tm *);
-char *ctime (const time_t *);
-int timespec_get(struct timespec *, int);
+clock_t clock(void);
+time_t time(time_t*);
+double difftime(time_t, time_t);
+time_t mktime(struct tm*);
+size_t strftime(char* __restrict,
+                size_t,
+                const char* __restrict,
+                const struct tm* __restrict);
+struct tm* gmtime(const time_t*);
+struct tm* localtime(const time_t*);
+char* asctime(const struct tm*);
+char* ctime(const time_t*);
+int timespec_get(struct timespec*, int);
 
 #define CLOCKS_PER_SEC 1000000L
 
 #define TIME_UTC 1
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) \
- || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
-size_t strftime_l (char *  __restrict, size_t, const char *  __restrict, const struct tm *  __restrict, locale_t);
+size_t strftime_l(char* __restrict,
+                  size_t,
+                  const char* __restrict,
+                  const struct tm* __restrict,
+                  locale_t);
 
-struct tm *gmtime_r (const time_t *__restrict, struct tm *__restrict);
-struct tm *localtime_r (const time_t *__restrict, struct tm *__restrict);
-char *asctime_r (const struct tm *__restrict, char *__restrict);
-char *ctime_r (const time_t *, char *);
+struct tm* gmtime_r(const time_t* __restrict, struct tm* __restrict);
+struct tm* localtime_r(const time_t* __restrict, struct tm* __restrict);
+char* asctime_r(const struct tm* __restrict, char* __restrict);
+char* ctime_r(const time_t*, char*);
 
-void tzset (void);
+void tzset(void);
 
-struct itimerspec
-{
-	struct timespec it_interval;
-	struct timespec it_value;
+struct itimerspec {
+  struct timespec it_interval;
+  struct timespec it_value;
 };
 
-#define CLOCK_REALTIME           0
-#define CLOCK_MONOTONIC          1
+#define CLOCK_REALTIME 0
+#define CLOCK_MONOTONIC 1
 #define CLOCK_PROCESS_CPUTIME_ID 2
-#define CLOCK_THREAD_CPUTIME_ID  3
-#define CLOCK_MONOTONIC_RAW      4
-#define CLOCK_REALTIME_COARSE    5
-#define CLOCK_MONOTONIC_COARSE   6
-#define CLOCK_BOOTTIME           7
-#define CLOCK_REALTIME_ALARM     8
-#define CLOCK_BOOTTIME_ALARM     9
-#define CLOCK_SGI_CYCLE         10
-#define CLOCK_TAI               11
+#define CLOCK_THREAD_CPUTIME_ID 3
+#define CLOCK_MONOTONIC_RAW 4
+#define CLOCK_REALTIME_COARSE 5
+#define CLOCK_MONOTONIC_COARSE 6
+#define CLOCK_BOOTTIME 7
+#define CLOCK_REALTIME_ALARM 8
+#define CLOCK_BOOTTIME_ALARM 9
+#define CLOCK_SGI_CYCLE 10
+#define CLOCK_TAI 11
 
 #define TIMER_ABSTIME 1
 
-int nanosleep (const struct timespec *, struct timespec *);
-int clock_getres (clockid_t, struct timespec *);
-int clock_gettime (clockid_t, struct timespec *);
-int clock_settime (clockid_t, const struct timespec *);
-int clock_nanosleep (clockid_t, int, const struct timespec *, struct timespec *);
-int clock_getcpuclockid (pid_t, clockid_t *);
+int nanosleep(const struct timespec*, struct timespec*);
+int clock_getres(clockid_t, struct timespec*);
+int clock_gettime(clockid_t, struct timespec*);
+int clock_settime(clockid_t, const struct timespec*);
+int clock_nanosleep(clockid_t, int, const struct timespec*, struct timespec*);
+int clock_getcpuclockid(pid_t, clockid_t*);
 
 struct sigevent;
-int timer_create (clockid_t, struct sigevent *__restrict, timer_t *__restrict);
-int timer_delete (timer_t);
-int timer_settime (timer_t, int, const struct itimerspec *__restrict, struct itimerspec *__restrict);
-int timer_gettime (timer_t, struct itimerspec *);
-int timer_getoverrun (timer_t);
+int timer_create(clockid_t, struct sigevent* __restrict, timer_t* __restrict);
+int timer_delete(timer_t);
+int timer_settime(timer_t,
+                  int,
+                  const struct itimerspec* __restrict,
+                  struct itimerspec* __restrict);
+int timer_gettime(timer_t, struct itimerspec*);
+int timer_getoverrun(timer_t);
 
 #endif
 
-
 #if defined(_XOPEN_SOURCE) || defined(_BSD_SOURCE) || defined(_GNU_SOURCE)
-char *strptime (const char *__restrict, const char *__restrict, struct tm *__restrict);
+char* strptime(const char* __restrict,
+               const char* __restrict,
+               struct tm* __restrict);
 extern int daylight;
 extern long timezone;
-extern char *tzname[2];
+extern char* tzname[2];
 extern int getdate_err;
-struct tm *getdate (const char *);
+struct tm* getdate(const char*);
 #endif
 
-
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-int stime(const time_t *);
-time_t timegm(struct tm *);
+int stime(const time_t*);
+time_t timegm(struct tm*);
 #endif
 
 #ifdef __cplusplus
 }
 #endif
 
-
 #endif
diff --git a/fusl/include/uchar.h b/fusl/include/uchar.h
index 8dabf1e..eae0cbb 100644
--- a/fusl/include/uchar.h
+++ b/fusl/include/uchar.h
@@ -14,11 +14,17 @@
 #include <features.h>
 #include <bits/alltypes.h>
 
-size_t c16rtomb(char *__restrict, char16_t, mbstate_t *__restrict);
-size_t mbrtoc16(char16_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict);
+size_t c16rtomb(char* __restrict, char16_t, mbstate_t* __restrict);
+size_t mbrtoc16(char16_t* __restrict,
+                const char* __restrict,
+                size_t,
+                mbstate_t* __restrict);
 
-size_t c32rtomb(char *__restrict, char32_t, mbstate_t *__restrict);
-size_t mbrtoc32(char32_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict);
+size_t c32rtomb(char* __restrict, char32_t, mbstate_t* __restrict);
+size_t mbrtoc32(char32_t* __restrict,
+                const char* __restrict,
+                size_t,
+                mbstate_t* __restrict);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/ucontext.h b/fusl/include/ucontext.h
index 3bb776e..5164ef1 100644
--- a/fusl/include/ucontext.h
+++ b/fusl/include/ucontext.h
@@ -9,15 +9,15 @@
 #include <signal.h>
 
 #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-#define NGREG (sizeof(gregset_t)/sizeof(greg_t))
+#define NGREG (sizeof(gregset_t) / sizeof(greg_t))
 #endif
 
 struct __ucontext;
 
-int  getcontext(struct __ucontext *);
-void makecontext(struct __ucontext *, void (*)(void), int, ...);
-int  setcontext(const struct __ucontext *);
-int  swapcontext(struct __ucontext *, const struct __ucontext *);
+int getcontext(struct __ucontext*);
+void makecontext(struct __ucontext*, void (*)(void), int, ...);
+int setcontext(const struct __ucontext*);
+int swapcontext(struct __ucontext*, const struct __ucontext*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/ulimit.h b/fusl/include/ulimit.h
index efdcd31..e020140 100644
--- a/fusl/include/ulimit.h
+++ b/fusl/include/ulimit.h
@@ -8,7 +8,7 @@
 #define UL_GETFSIZE 1
 #define UL_SETFSIZE 2
 
-long ulimit (int, ...);
+long ulimit(int, ...);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/unistd.h b/fusl/include/unistd.h
index 760a165..24e9aeb 100644
--- a/fusl/include/unistd.h
+++ b/fusl/include/unistd.h
@@ -1,5 +1,5 @@
-#ifndef	_UNISTD_H
-#define	_UNISTD_H
+#ifndef _UNISTD_H
+#define _UNISTD_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -7,7 +7,7 @@
 
 #include <features.h>
 
-#define STDIN_FILENO  0
+#define STDIN_FILENO 0
 #define STDOUT_FILENO 1
 #define STDERR_FILENO 2
 
@@ -32,8 +32,8 @@
 
 #include <bits/alltypes.h>
 
-int pipe(int [2]);
-int pipe2(int [2], int);
+int pipe(int[2]);
+int pipe2(int[2], int);
 int close(int);
 int posix_close(int, int);
 int dup(int);
@@ -43,26 +43,26 @@
 int fsync(int);
 int fdatasync(int);
 
-ssize_t read(int, void *, size_t);
-ssize_t write(int, const void *, size_t);
-ssize_t pread(int, void *, size_t, off_t);
-ssize_t pwrite(int, const void *, size_t, off_t);
+ssize_t read(int, void*, size_t);
+ssize_t write(int, const void*, size_t);
+ssize_t pread(int, void*, size_t, off_t);
+ssize_t pwrite(int, const void*, size_t, off_t);
 
-int chown(const char *, uid_t, gid_t);
+int chown(const char*, uid_t, gid_t);
 int fchown(int, uid_t, gid_t);
-int lchown(const char *, uid_t, gid_t);
-int fchownat(int, const char *, uid_t, gid_t, int);
+int lchown(const char*, uid_t, gid_t);
+int fchownat(int, const char*, uid_t, gid_t, int);
 
-int link(const char *, const char *);
-int linkat(int, const char *, int, const char *, int);
-int symlink(const char *, const char *);
-int symlinkat(const char *, int, const char *);
-ssize_t readlink(const char *__restrict, char *__restrict, size_t);
-ssize_t readlinkat(int, const char *__restrict, char *__restrict, size_t);
-int unlink(const char *);
-int unlinkat(int, const char *, int);
-int rmdir(const char *);
-int truncate(const char *, off_t);
+int link(const char*, const char*);
+int linkat(int, const char*, int, const char*, int);
+int symlink(const char*, const char*);
+int symlinkat(const char*, int, const char*);
+ssize_t readlink(const char* __restrict, char* __restrict, size_t);
+ssize_t readlinkat(int, const char* __restrict, char* __restrict, size_t);
+int unlink(const char*);
+int unlinkat(int, const char*, int);
+int rmdir(const char*);
+int truncate(const char*, off_t);
 int ftruncate(int, off_t);
 
 #define F_OK 0
@@ -70,25 +70,25 @@
 #define W_OK 2
 #define X_OK 1
 
-int access(const char *, int);
-int faccessat(int, const char *, int, int);
+int access(const char*, int);
+int faccessat(int, const char*, int, int);
 
-int chdir(const char *);
+int chdir(const char*);
 int fchdir(int);
-char *getcwd(char *, size_t);
+char* getcwd(char*, size_t);
 
 unsigned alarm(unsigned);
 unsigned sleep(unsigned);
 int pause(void);
 
 pid_t fork(void);
-int execve(const char *, char *const [], char *const []);
-int execv(const char *, char *const []);
-int execle(const char *, const char *, ...);
-int execl(const char *, const char *, ...);
-int execvp(const char *, char *const []);
-int execlp(const char *, const char *, ...);
-int fexecve(int, char *const [], char *const []);
+int execve(const char*, char* const[], char* const[]);
+int execv(const char*, char* const[]);
+int execle(const char*, const char*, ...);
+int execl(const char*, const char*, ...);
+int execvp(const char*, char* const[]);
+int execlp(const char*, const char*, ...);
+int fexecve(int, char* const[], char* const[]);
 _Noreturn void _exit(int);
 
 pid_t getpid(void);
@@ -98,8 +98,8 @@
 int setpgid(pid_t, pid_t);
 pid_t setsid(void);
 pid_t getsid(pid_t);
-char *ttyname(int);
-int ttyname_r(int, char *, size_t);
+char* ttyname(int);
+int ttyname_r(int, char*, size_t);
 int isatty(int);
 pid_t tcgetpgrp(int);
 int tcsetpgrp(int, pid_t);
@@ -108,7 +108,7 @@
 uid_t geteuid(void);
 gid_t getgid(void);
 gid_t getegid(void);
-int getgroups(int, gid_t []);
+int getgroups(int, gid_t[]);
 int setuid(uid_t);
 int setreuid(uid_t, uid_t);
 int seteuid(uid_t);
@@ -116,24 +116,24 @@
 int setregid(gid_t, gid_t);
 int setegid(gid_t);
 
-char *getlogin(void);
-int getlogin_r(char *, size_t);
-int gethostname(char *, size_t);
-char *ctermid(char *);
+char* getlogin(void);
+int getlogin_r(char*, size_t);
+int gethostname(char*, size_t);
+char* ctermid(char*);
 
-int getopt(int, char * const [], const char *);
-extern char *optarg;
+int getopt(int, char* const[], const char*);
+extern char* optarg;
 extern int optind, opterr, optopt;
 
-long pathconf(const char *, int);
+long pathconf(const char*, int);
 long fpathconf(int, int);
 long sysconf(int);
-size_t confstr(int, char *, size_t);
+size_t confstr(int, char*, size_t);
 
 #define F_ULOCK 0
-#define F_LOCK  1
+#define F_LOCK 1
 #define F_TLOCK 2
-#define F_TEST  3
+#define F_TEST 3
 
 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 int lockf(int, int, off_t);
@@ -141,13 +141,13 @@
 int nice(int);
 void sync(void);
 pid_t setpgrp(void);
-char *crypt(const char *, const char *);
-void encrypt(char *, int);
-void swab(const void *__restrict, void *__restrict, ssize_t);
+char* crypt(const char*, const char*);
+void encrypt(char*, int);
+void swab(const void* __restrict, void* __restrict, ssize_t);
 #endif
 
-#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) \
- || (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE+0 < 700)
+#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) || \
+    (defined(_XOPEN_SOURCE) && _XOPEN_SOURCE + 0 < 700)
 int usleep(unsigned);
 unsigned ualarm(unsigned, unsigned);
 #endif
@@ -156,38 +156,38 @@
 #define L_SET 0
 #define L_INCR 1
 #define L_XTND 2
-int brk(void *);
-void *sbrk(intptr_t);
+int brk(void*);
+void* sbrk(intptr_t);
 pid_t vfork(void);
 int vhangup(void);
-int chroot(const char *);
+int chroot(const char*);
 int getpagesize(void);
 int getdtablesize(void);
-int sethostname(const char *, size_t);
-int getdomainname(char *, size_t);
-int setdomainname(const char *, size_t);
-int setgroups(size_t, const gid_t *);
-char *getpass(const char *);
+int sethostname(const char*, size_t);
+int getdomainname(char*, size_t);
+int setdomainname(const char*, size_t);
+int setgroups(size_t, const gid_t*);
+char* getpass(const char*);
 int daemon(int, int);
 void setusershell(void);
 void endusershell(void);
-char *getusershell(void);
-int acct(const char *);
+char* getusershell(void);
+int acct(const char*);
 long syscall(long, ...);
-int execvpe(const char *, char *const [], char *const []);
+int execvpe(const char*, char* const[], char* const[]);
 int issetugid(void);
 #endif
 
 #ifdef _GNU_SOURCE
-extern char **environ;
+extern char** environ;
 int setresuid(uid_t, uid_t, uid_t);
 int setresgid(gid_t, gid_t, gid_t);
-int getresuid(uid_t *, uid_t *, uid_t *);
-int getresgid(gid_t *, gid_t *, gid_t *);
-char *get_current_dir_name(void);
+int getresuid(uid_t*, uid_t*, uid_t*);
+int getresgid(gid_t*, gid_t*, gid_t*);
+char* get_current_dir_name(void);
 int syncfs(int);
-int euidaccess(const char *, int);
-int eaccess(const char *, int);
+int euidaccess(const char*, int);
+int eaccess(const char*, int);
 #endif
 
 #if defined(_LARGEFILE64_SOURCE) || defined(_GNU_SOURCE)
@@ -200,263 +200,261 @@
 #define off64_t off_t
 #endif
 
-#define POSIX_CLOSE_RESTART     0
+#define POSIX_CLOSE_RESTART 0
 
-#define _XOPEN_VERSION          700
-#define _XOPEN_UNIX             1
-#define _XOPEN_ENH_I18N         1
+#define _XOPEN_VERSION 700
+#define _XOPEN_UNIX 1
+#define _XOPEN_ENH_I18N 1
 
-#define _POSIX_VERSION          200809L
-#define _POSIX2_VERSION         _POSIX_VERSION
+#define _POSIX_VERSION 200809L
+#define _POSIX2_VERSION _POSIX_VERSION
 
-#define _POSIX_ADVISORY_INFO    _POSIX_VERSION
+#define _POSIX_ADVISORY_INFO _POSIX_VERSION
 #define _POSIX_CHOWN_RESTRICTED 1
-#define _POSIX_IPV6             _POSIX_VERSION
-#define _POSIX_JOB_CONTROL      1
-#define _POSIX_MAPPED_FILES     _POSIX_VERSION
-#define _POSIX_MEMLOCK          _POSIX_VERSION
-#define _POSIX_MEMLOCK_RANGE    _POSIX_VERSION
+#define _POSIX_IPV6 _POSIX_VERSION
+#define _POSIX_JOB_CONTROL 1
+#define _POSIX_MAPPED_FILES _POSIX_VERSION
+#define _POSIX_MEMLOCK _POSIX_VERSION
+#define _POSIX_MEMLOCK_RANGE _POSIX_VERSION
 #define _POSIX_MEMORY_PROTECTION _POSIX_VERSION
-#define _POSIX_MESSAGE_PASSING  _POSIX_VERSION
-#define _POSIX_FSYNC            _POSIX_VERSION
-#define _POSIX_NO_TRUNC         1
-#define _POSIX_RAW_SOCKETS      _POSIX_VERSION
+#define _POSIX_MESSAGE_PASSING _POSIX_VERSION
+#define _POSIX_FSYNC _POSIX_VERSION
+#define _POSIX_NO_TRUNC 1
+#define _POSIX_RAW_SOCKETS _POSIX_VERSION
 #define _POSIX_REALTIME_SIGNALS _POSIX_VERSION
-#define _POSIX_REGEXP           1
-#define _POSIX_SAVED_IDS        1
-#define _POSIX_SHELL            1
-#define _POSIX_SPAWN            _POSIX_VERSION
-#define _POSIX_VDISABLE         0
+#define _POSIX_REGEXP 1
+#define _POSIX_SAVED_IDS 1
+#define _POSIX_SHELL 1
+#define _POSIX_SPAWN _POSIX_VERSION
+#define _POSIX_VDISABLE 0
 
-#define _POSIX_THREADS          _POSIX_VERSION
+#define _POSIX_THREADS _POSIX_VERSION
 #define _POSIX_THREAD_PROCESS_SHARED _POSIX_VERSION
 #define _POSIX_THREAD_SAFE_FUNCTIONS _POSIX_VERSION
 #define _POSIX_THREAD_ATTR_STACKADDR _POSIX_VERSION
 #define _POSIX_THREAD_ATTR_STACKSIZE _POSIX_VERSION
 #define _POSIX_THREAD_PRIORITY_SCHEDULING _POSIX_VERSION
-#define _POSIX_THREAD_CPUTIME   _POSIX_VERSION
-#define _POSIX_TIMERS           _POSIX_VERSION
-#define _POSIX_TIMEOUTS         _POSIX_VERSION
-#define _POSIX_MONOTONIC_CLOCK  _POSIX_VERSION
-#define _POSIX_CPUTIME          _POSIX_VERSION
-#define _POSIX_CLOCK_SELECTION  _POSIX_VERSION
-#define _POSIX_BARRIERS         _POSIX_VERSION
-#define _POSIX_SPIN_LOCKS       _POSIX_VERSION
+#define _POSIX_THREAD_CPUTIME _POSIX_VERSION
+#define _POSIX_TIMERS _POSIX_VERSION
+#define _POSIX_TIMEOUTS _POSIX_VERSION
+#define _POSIX_MONOTONIC_CLOCK _POSIX_VERSION
+#define _POSIX_CPUTIME _POSIX_VERSION
+#define _POSIX_CLOCK_SELECTION _POSIX_VERSION
+#define _POSIX_BARRIERS _POSIX_VERSION
+#define _POSIX_SPIN_LOCKS _POSIX_VERSION
 #define _POSIX_READER_WRITER_LOCKS _POSIX_VERSION
-#define _POSIX_ASYNCHRONOUS_IO  _POSIX_VERSION
-#define _POSIX_SEMAPHORES       _POSIX_VERSION
+#define _POSIX_ASYNCHRONOUS_IO _POSIX_VERSION
+#define _POSIX_SEMAPHORES _POSIX_VERSION
 #define _POSIX_SHARED_MEMORY_OBJECTS _POSIX_VERSION
 
-#define _POSIX2_C_BIND          _POSIX_VERSION
+#define _POSIX2_C_BIND _POSIX_VERSION
 
 #include <bits/posix.h>
 
+#define _PC_LINK_MAX 0
+#define _PC_MAX_CANON 1
+#define _PC_MAX_INPUT 2
+#define _PC_NAME_MAX 3
+#define _PC_PATH_MAX 4
+#define _PC_PIPE_BUF 5
+#define _PC_CHOWN_RESTRICTED 6
+#define _PC_NO_TRUNC 7
+#define _PC_VDISABLE 8
+#define _PC_SYNC_IO 9
+#define _PC_ASYNC_IO 10
+#define _PC_PRIO_IO 11
+#define _PC_SOCK_MAXBUF 12
+#define _PC_FILESIZEBITS 13
+#define _PC_REC_INCR_XFER_SIZE 14
+#define _PC_REC_MAX_XFER_SIZE 15
+#define _PC_REC_MIN_XFER_SIZE 16
+#define _PC_REC_XFER_ALIGN 17
+#define _PC_ALLOC_SIZE_MIN 18
+#define _PC_SYMLINK_MAX 19
+#define _PC_2_SYMLINKS 20
 
+#define _SC_ARG_MAX 0
+#define _SC_CHILD_MAX 1
+#define _SC_CLK_TCK 2
+#define _SC_NGROUPS_MAX 3
+#define _SC_OPEN_MAX 4
+#define _SC_STREAM_MAX 5
+#define _SC_TZNAME_MAX 6
+#define _SC_JOB_CONTROL 7
+#define _SC_SAVED_IDS 8
+#define _SC_REALTIME_SIGNALS 9
+#define _SC_PRIORITY_SCHEDULING 10
+#define _SC_TIMERS 11
+#define _SC_ASYNCHRONOUS_IO 12
+#define _SC_PRIORITIZED_IO 13
+#define _SC_SYNCHRONIZED_IO 14
+#define _SC_FSYNC 15
+#define _SC_MAPPED_FILES 16
+#define _SC_MEMLOCK 17
+#define _SC_MEMLOCK_RANGE 18
+#define _SC_MEMORY_PROTECTION 19
+#define _SC_MESSAGE_PASSING 20
+#define _SC_SEMAPHORES 21
+#define _SC_SHARED_MEMORY_OBJECTS 22
+#define _SC_AIO_LISTIO_MAX 23
+#define _SC_AIO_MAX 24
+#define _SC_AIO_PRIO_DELTA_MAX 25
+#define _SC_DELAYTIMER_MAX 26
+#define _SC_MQ_OPEN_MAX 27
+#define _SC_MQ_PRIO_MAX 28
+#define _SC_VERSION 29
+#define _SC_PAGE_SIZE 30
+#define _SC_PAGESIZE 30 /* !! */
+#define _SC_RTSIG_MAX 31
+#define _SC_SEM_NSEMS_MAX 32
+#define _SC_SEM_VALUE_MAX 33
+#define _SC_SIGQUEUE_MAX 34
+#define _SC_TIMER_MAX 35
+#define _SC_BC_BASE_MAX 36
+#define _SC_BC_DIM_MAX 37
+#define _SC_BC_SCALE_MAX 38
+#define _SC_BC_STRING_MAX 39
+#define _SC_COLL_WEIGHTS_MAX 40
+#define _SC_EXPR_NEST_MAX 42
+#define _SC_LINE_MAX 43
+#define _SC_RE_DUP_MAX 44
+#define _SC_2_VERSION 46
+#define _SC_2_C_BIND 47
+#define _SC_2_C_DEV 48
+#define _SC_2_FORT_DEV 49
+#define _SC_2_FORT_RUN 50
+#define _SC_2_SW_DEV 51
+#define _SC_2_LOCALEDEF 52
+#define _SC_UIO_MAXIOV 60 /* !! */
+#define _SC_IOV_MAX 60
+#define _SC_THREADS 67
+#define _SC_THREAD_SAFE_FUNCTIONS 68
+#define _SC_GETGR_R_SIZE_MAX 69
+#define _SC_GETPW_R_SIZE_MAX 70
+#define _SC_LOGIN_NAME_MAX 71
+#define _SC_TTY_NAME_MAX 72
+#define _SC_THREAD_DESTRUCTOR_ITERATIONS 73
+#define _SC_THREAD_KEYS_MAX 74
+#define _SC_THREAD_STACK_MIN 75
+#define _SC_THREAD_THREADS_MAX 76
+#define _SC_THREAD_ATTR_STACKADDR 77
+#define _SC_THREAD_ATTR_STACKSIZE 78
+#define _SC_THREAD_PRIORITY_SCHEDULING 79
+#define _SC_THREAD_PRIO_INHERIT 80
+#define _SC_THREAD_PRIO_PROTECT 81
+#define _SC_THREAD_PROCESS_SHARED 82
+#define _SC_NPROCESSORS_CONF 83
+#define _SC_NPROCESSORS_ONLN 84
+#define _SC_PHYS_PAGES 85
+#define _SC_AVPHYS_PAGES 86
+#define _SC_ATEXIT_MAX 87
+#define _SC_PASS_MAX 88
+#define _SC_XOPEN_VERSION 89
+#define _SC_XOPEN_XCU_VERSION 90
+#define _SC_XOPEN_UNIX 91
+#define _SC_XOPEN_CRYPT 92
+#define _SC_XOPEN_ENH_I18N 93
+#define _SC_XOPEN_SHM 94
+#define _SC_2_CHAR_TERM 95
+#define _SC_2_UPE 97
+#define _SC_XOPEN_XPG2 98
+#define _SC_XOPEN_XPG3 99
+#define _SC_XOPEN_XPG4 100
+#define _SC_NZERO 109
+#define _SC_XBS5_ILP32_OFF32 125
+#define _SC_XBS5_ILP32_OFFBIG 126
+#define _SC_XBS5_LP64_OFF64 127
+#define _SC_XBS5_LPBIG_OFFBIG 128
+#define _SC_XOPEN_LEGACY 129
+#define _SC_XOPEN_REALTIME 130
+#define _SC_XOPEN_REALTIME_THREADS 131
+#define _SC_ADVISORY_INFO 132
+#define _SC_BARRIERS 133
+#define _SC_CLOCK_SELECTION 137
+#define _SC_CPUTIME 138
+#define _SC_THREAD_CPUTIME 139
+#define _SC_MONOTONIC_CLOCK 149
+#define _SC_READER_WRITER_LOCKS 153
+#define _SC_SPIN_LOCKS 154
+#define _SC_REGEXP 155
+#define _SC_SHELL 157
+#define _SC_SPAWN 159
+#define _SC_SPORADIC_SERVER 160
+#define _SC_THREAD_SPORADIC_SERVER 161
+#define _SC_TIMEOUTS 164
+#define _SC_TYPED_MEMORY_OBJECTS 165
+#define _SC_2_PBS 168
+#define _SC_2_PBS_ACCOUNTING 169
+#define _SC_2_PBS_LOCATE 170
+#define _SC_2_PBS_MESSAGE 171
+#define _SC_2_PBS_TRACK 172
+#define _SC_SYMLOOP_MAX 173
+#define _SC_STREAMS 174
+#define _SC_2_PBS_CHECKPOINT 175
+#define _SC_V6_ILP32_OFF32 176
+#define _SC_V6_ILP32_OFFBIG 177
+#define _SC_V6_LP64_OFF64 178
+#define _SC_V6_LPBIG_OFFBIG 179
+#define _SC_HOST_NAME_MAX 180
+#define _SC_TRACE 181
+#define _SC_TRACE_EVENT_FILTER 182
+#define _SC_TRACE_INHERIT 183
+#define _SC_TRACE_LOG 184
 
-#define _PC_LINK_MAX	0
-#define _PC_MAX_CANON	1
-#define _PC_MAX_INPUT	2
-#define _PC_NAME_MAX	3
-#define _PC_PATH_MAX	4
-#define _PC_PIPE_BUF	5
-#define _PC_CHOWN_RESTRICTED	6
-#define _PC_NO_TRUNC	7
-#define _PC_VDISABLE	8
-#define _PC_SYNC_IO	9
-#define _PC_ASYNC_IO	10
-#define _PC_PRIO_IO	11
-#define _PC_SOCK_MAXBUF	12
-#define _PC_FILESIZEBITS	13
-#define _PC_REC_INCR_XFER_SIZE	14
-#define _PC_REC_MAX_XFER_SIZE	15
-#define _PC_REC_MIN_XFER_SIZE	16
-#define _PC_REC_XFER_ALIGN	17
-#define _PC_ALLOC_SIZE_MIN	18
-#define _PC_SYMLINK_MAX	19
-#define _PC_2_SYMLINKS	20
+#define _SC_IPV6 235
+#define _SC_RAW_SOCKETS 236
+#define _SC_V7_ILP32_OFF32 237
+#define _SC_V7_ILP32_OFFBIG 238
+#define _SC_V7_LP64_OFF64 239
+#define _SC_V7_LPBIG_OFFBIG 240
+#define _SC_SS_REPL_MAX 241
+#define _SC_TRACE_EVENT_NAME_MAX 242
+#define _SC_TRACE_NAME_MAX 243
+#define _SC_TRACE_SYS_MAX 244
+#define _SC_TRACE_USER_EVENT_MAX 245
+#define _SC_XOPEN_STREAMS 246
+#define _SC_THREAD_ROBUST_PRIO_INHERIT 247
+#define _SC_THREAD_ROBUST_PRIO_PROTECT 248
 
-#define _SC_ARG_MAX	0
-#define _SC_CHILD_MAX	1
-#define _SC_CLK_TCK	2
-#define _SC_NGROUPS_MAX	3
-#define _SC_OPEN_MAX	4
-#define _SC_STREAM_MAX	5
-#define _SC_TZNAME_MAX	6
-#define _SC_JOB_CONTROL	7
-#define _SC_SAVED_IDS	8
-#define _SC_REALTIME_SIGNALS	9
-#define _SC_PRIORITY_SCHEDULING	10
-#define _SC_TIMERS	11
-#define _SC_ASYNCHRONOUS_IO	12
-#define _SC_PRIORITIZED_IO	13
-#define _SC_SYNCHRONIZED_IO	14
-#define _SC_FSYNC	15
-#define _SC_MAPPED_FILES	16
-#define _SC_MEMLOCK	17
-#define _SC_MEMLOCK_RANGE	18
-#define _SC_MEMORY_PROTECTION	19
-#define _SC_MESSAGE_PASSING	20
-#define _SC_SEMAPHORES	21
-#define _SC_SHARED_MEMORY_OBJECTS	22
-#define _SC_AIO_LISTIO_MAX	23
-#define _SC_AIO_MAX	24
-#define _SC_AIO_PRIO_DELTA_MAX	25
-#define _SC_DELAYTIMER_MAX	26
-#define _SC_MQ_OPEN_MAX	27
-#define _SC_MQ_PRIO_MAX	28
-#define _SC_VERSION	29
-#define _SC_PAGE_SIZE	30
-#define _SC_PAGESIZE	30 /* !! */
-#define _SC_RTSIG_MAX	31
-#define _SC_SEM_NSEMS_MAX	32
-#define _SC_SEM_VALUE_MAX	33
-#define _SC_SIGQUEUE_MAX	34
-#define _SC_TIMER_MAX	35
-#define _SC_BC_BASE_MAX	36
-#define _SC_BC_DIM_MAX	37
-#define _SC_BC_SCALE_MAX	38
-#define _SC_BC_STRING_MAX	39
-#define _SC_COLL_WEIGHTS_MAX	40
-#define _SC_EXPR_NEST_MAX	42
-#define _SC_LINE_MAX	43
-#define _SC_RE_DUP_MAX	44
-#define _SC_2_VERSION	46
-#define _SC_2_C_BIND	47
-#define _SC_2_C_DEV	48
-#define _SC_2_FORT_DEV	49
-#define _SC_2_FORT_RUN	50
-#define _SC_2_SW_DEV	51
-#define _SC_2_LOCALEDEF	52
-#define _SC_UIO_MAXIOV	60 /* !! */
-#define _SC_IOV_MAX	60
-#define _SC_THREADS	67
-#define _SC_THREAD_SAFE_FUNCTIONS	68
-#define _SC_GETGR_R_SIZE_MAX	69
-#define _SC_GETPW_R_SIZE_MAX	70
-#define _SC_LOGIN_NAME_MAX	71
-#define _SC_TTY_NAME_MAX	72
-#define _SC_THREAD_DESTRUCTOR_ITERATIONS	73
-#define _SC_THREAD_KEYS_MAX	74
-#define _SC_THREAD_STACK_MIN	75
-#define _SC_THREAD_THREADS_MAX	76
-#define _SC_THREAD_ATTR_STACKADDR	77
-#define _SC_THREAD_ATTR_STACKSIZE	78
-#define _SC_THREAD_PRIORITY_SCHEDULING	79
-#define _SC_THREAD_PRIO_INHERIT	80
-#define _SC_THREAD_PRIO_PROTECT	81
-#define _SC_THREAD_PROCESS_SHARED	82
-#define _SC_NPROCESSORS_CONF	83
-#define _SC_NPROCESSORS_ONLN	84
-#define _SC_PHYS_PAGES	85
-#define _SC_AVPHYS_PAGES	86
-#define _SC_ATEXIT_MAX	87
-#define _SC_PASS_MAX	88
-#define _SC_XOPEN_VERSION	89
-#define _SC_XOPEN_XCU_VERSION	90
-#define _SC_XOPEN_UNIX	91
-#define _SC_XOPEN_CRYPT	92
-#define _SC_XOPEN_ENH_I18N	93
-#define _SC_XOPEN_SHM	94
-#define _SC_2_CHAR_TERM	95
-#define _SC_2_UPE	97
-#define _SC_XOPEN_XPG2	98
-#define _SC_XOPEN_XPG3	99
-#define _SC_XOPEN_XPG4	100
-#define _SC_NZERO	109
-#define _SC_XBS5_ILP32_OFF32	125
-#define _SC_XBS5_ILP32_OFFBIG	126
-#define _SC_XBS5_LP64_OFF64	127
-#define _SC_XBS5_LPBIG_OFFBIG	128
-#define _SC_XOPEN_LEGACY	129
-#define _SC_XOPEN_REALTIME	130
-#define _SC_XOPEN_REALTIME_THREADS	131
-#define _SC_ADVISORY_INFO	132
-#define _SC_BARRIERS	133
-#define _SC_CLOCK_SELECTION	137
-#define _SC_CPUTIME	138
-#define _SC_THREAD_CPUTIME	139
-#define _SC_MONOTONIC_CLOCK	149
-#define _SC_READER_WRITER_LOCKS	153
-#define _SC_SPIN_LOCKS	154
-#define _SC_REGEXP	155
-#define _SC_SHELL	157
-#define _SC_SPAWN	159
-#define _SC_SPORADIC_SERVER	160
-#define _SC_THREAD_SPORADIC_SERVER	161
-#define _SC_TIMEOUTS	164
-#define _SC_TYPED_MEMORY_OBJECTS	165
-#define _SC_2_PBS	168
-#define _SC_2_PBS_ACCOUNTING	169
-#define _SC_2_PBS_LOCATE	170
-#define _SC_2_PBS_MESSAGE	171
-#define _SC_2_PBS_TRACK	172
-#define _SC_SYMLOOP_MAX	173
-#define _SC_STREAMS	174
-#define _SC_2_PBS_CHECKPOINT	175
-#define _SC_V6_ILP32_OFF32	176
-#define _SC_V6_ILP32_OFFBIG	177
-#define _SC_V6_LP64_OFF64	178
-#define _SC_V6_LPBIG_OFFBIG	179
-#define _SC_HOST_NAME_MAX	180
-#define _SC_TRACE	181
-#define _SC_TRACE_EVENT_FILTER	182
-#define _SC_TRACE_INHERIT	183
-#define _SC_TRACE_LOG	184
+#define _CS_PATH 0
+#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS 1
+#define _CS_GNU_LIBC_VERSION 2
+#define _CS_GNU_LIBPTHREAD_VERSION 3
+#define _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS 4
+#define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS 5
 
-#define _SC_IPV6	235
-#define _SC_RAW_SOCKETS	236
-#define _SC_V7_ILP32_OFF32	237
-#define _SC_V7_ILP32_OFFBIG	238
-#define _SC_V7_LP64_OFF64	239
-#define _SC_V7_LPBIG_OFFBIG	240
-#define _SC_SS_REPL_MAX	241
-#define _SC_TRACE_EVENT_NAME_MAX	242
-#define _SC_TRACE_NAME_MAX	243
-#define _SC_TRACE_SYS_MAX	244
-#define _SC_TRACE_USER_EVENT_MAX	245
-#define _SC_XOPEN_STREAMS	246
-#define _SC_THREAD_ROBUST_PRIO_INHERIT	247
-#define _SC_THREAD_ROBUST_PRIO_PROTECT	248
-
-#define _CS_PATH	0
-#define _CS_POSIX_V6_WIDTH_RESTRICTED_ENVS	1
-#define _CS_GNU_LIBC_VERSION	2
-#define _CS_GNU_LIBPTHREAD_VERSION	3
-#define _CS_POSIX_V5_WIDTH_RESTRICTED_ENVS	4
-#define _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS	5
-
-#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS	1116
-#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS	1117
-#define _CS_POSIX_V6_ILP32_OFF32_LIBS	1118
-#define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS	1119
-#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS	1120
-#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS	1121
-#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS	1122
-#define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS	1123
-#define _CS_POSIX_V6_LP64_OFF64_CFLAGS	1124
-#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS	1125
-#define _CS_POSIX_V6_LP64_OFF64_LIBS	1126
-#define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS	1127
-#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS	1128
-#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS	1129
-#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS	1130
-#define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS	1131
-#define _CS_POSIX_V7_ILP32_OFF32_CFLAGS	1132
-#define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS	1133
-#define _CS_POSIX_V7_ILP32_OFF32_LIBS	1134
-#define _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS	1135
-#define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS	1136
-#define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS	1137
-#define _CS_POSIX_V7_ILP32_OFFBIG_LIBS	1138
-#define _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS	1139
-#define _CS_POSIX_V7_LP64_OFF64_CFLAGS	1140
-#define _CS_POSIX_V7_LP64_OFF64_LDFLAGS	1141
-#define _CS_POSIX_V7_LP64_OFF64_LIBS	1142
-#define _CS_POSIX_V7_LP64_OFF64_LINTFLAGS	1143
-#define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS	1144
-#define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS	1145
-#define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS	1146
-#define _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS	1147
+#define _CS_POSIX_V6_ILP32_OFF32_CFLAGS 1116
+#define _CS_POSIX_V6_ILP32_OFF32_LDFLAGS 1117
+#define _CS_POSIX_V6_ILP32_OFF32_LIBS 1118
+#define _CS_POSIX_V6_ILP32_OFF32_LINTFLAGS 1119
+#define _CS_POSIX_V6_ILP32_OFFBIG_CFLAGS 1120
+#define _CS_POSIX_V6_ILP32_OFFBIG_LDFLAGS 1121
+#define _CS_POSIX_V6_ILP32_OFFBIG_LIBS 1122
+#define _CS_POSIX_V6_ILP32_OFFBIG_LINTFLAGS 1123
+#define _CS_POSIX_V6_LP64_OFF64_CFLAGS 1124
+#define _CS_POSIX_V6_LP64_OFF64_LDFLAGS 1125
+#define _CS_POSIX_V6_LP64_OFF64_LIBS 1126
+#define _CS_POSIX_V6_LP64_OFF64_LINTFLAGS 1127
+#define _CS_POSIX_V6_LPBIG_OFFBIG_CFLAGS 1128
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LDFLAGS 1129
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LIBS 1130
+#define _CS_POSIX_V6_LPBIG_OFFBIG_LINTFLAGS 1131
+#define _CS_POSIX_V7_ILP32_OFF32_CFLAGS 1132
+#define _CS_POSIX_V7_ILP32_OFF32_LDFLAGS 1133
+#define _CS_POSIX_V7_ILP32_OFF32_LIBS 1134
+#define _CS_POSIX_V7_ILP32_OFF32_LINTFLAGS 1135
+#define _CS_POSIX_V7_ILP32_OFFBIG_CFLAGS 1136
+#define _CS_POSIX_V7_ILP32_OFFBIG_LDFLAGS 1137
+#define _CS_POSIX_V7_ILP32_OFFBIG_LIBS 1138
+#define _CS_POSIX_V7_ILP32_OFFBIG_LINTFLAGS 1139
+#define _CS_POSIX_V7_LP64_OFF64_CFLAGS 1140
+#define _CS_POSIX_V7_LP64_OFF64_LDFLAGS 1141
+#define _CS_POSIX_V7_LP64_OFF64_LIBS 1142
+#define _CS_POSIX_V7_LP64_OFF64_LINTFLAGS 1143
+#define _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS 1144
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS 1145
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LIBS 1146
+#define _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS 1147
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/utime.h b/fusl/include/utime.h
index ec82e0f..acded53 100644
--- a/fusl/include/utime.h
+++ b/fusl/include/utime.h
@@ -1,5 +1,5 @@
-#ifndef	_UTIME_H
-#define	_UTIME_H
+#ifndef _UTIME_H
+#define _UTIME_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -9,13 +9,12 @@
 
 #include <bits/alltypes.h>
 
-struct utimbuf
-{
-	time_t actime;
-	time_t modtime;
+struct utimbuf {
+  time_t actime;
+  time_t modtime;
 };
 
-int utime (const char *, const struct utimbuf *);
+int utime(const char*, const struct utimbuf*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/utmp.h b/fusl/include/utmp.h
index 48a400d..336acfe 100644
--- a/fusl/include/utmp.h
+++ b/fusl/include/utmp.h
@@ -13,9 +13,9 @@
 #define UT_LINESIZE 32
 
 struct lastlog {
-	time_t ll_time;
-	char ll_line[UT_LINESIZE];
-	char ll_host[UT_HOSTSIZE];
+  time_t ll_time;
+  char ll_line[UT_LINESIZE];
+  char ll_host[UT_HOSTSIZE];
 };
 
 #define ut_time ut_tv.tv_sec
@@ -25,15 +25,15 @@
 #define e_exit __e_exit
 #define e_termination __e_termination
 
-void         endutent(void);
-struct utmp *getutent(void);
-struct utmp *getutid(const struct utmp *);
-struct utmp *getutline(const struct utmp *);
-struct utmp *pututline(const struct utmp *);
-void         setutent(void);
+void endutent(void);
+struct utmp* getutent(void);
+struct utmp* getutid(const struct utmp*);
+struct utmp* getutline(const struct utmp*);
+struct utmp* pututline(const struct utmp*);
+void setutent(void);
 
-void updwtmp(const char *, const struct utmp *);
-int utmpname(const char *);
+void updwtmp(const char*, const struct utmp*);
+int utmpname(const char*);
 
 int login_tty(int);
 
diff --git a/fusl/include/utmpx.h b/fusl/include/utmpx.h
index 44b501d..3f4b2f8 100644
--- a/fusl/include/utmpx.h
+++ b/fusl/include/utmpx.h
@@ -14,47 +14,46 @@
 
 #include <bits/alltypes.h>
 
-struct utmpx
-{
-	short ut_type;
-	pid_t ut_pid;
-	char ut_line[32];
-	char ut_id[4];
-	char ut_user[32];
-	char ut_host[256];
-	struct {
-		short __e_termination;
-		short __e_exit;
-	} ut_exit;
-	long ut_session;
-	struct timeval ut_tv;
-	unsigned ut_addr_v6[4];
-	char __unused[20];
+struct utmpx {
+  short ut_type;
+  pid_t ut_pid;
+  char ut_line[32];
+  char ut_id[4];
+  char ut_user[32];
+  char ut_host[256];
+  struct {
+    short __e_termination;
+    short __e_exit;
+  } ut_exit;
+  long ut_session;
+  struct timeval ut_tv;
+  unsigned ut_addr_v6[4];
+  char __unused[20];
 };
 
-void          endutxent(void);
-struct utmpx *getutxent(void);
-struct utmpx *getutxid(const struct utmpx *);
-struct utmpx *getutxline(const struct utmpx *);
-struct utmpx *pututxline(const struct utmpx *);
-void          setutxent(void);
+void endutxent(void);
+struct utmpx* getutxent(void);
+struct utmpx* getutxid(const struct utmpx*);
+struct utmpx* getutxline(const struct utmpx*);
+struct utmpx* pututxline(const struct utmpx*);
+void setutxent(void);
 
 #if defined(_BSD_SOURCE) | defined(_GNU_SOURCE)
 #define e_exit __e_exit
 #define e_termination __e_termination
-void updwtmpx(const char *, const struct utmpx *);
-int utmpxname(const char *);
+void updwtmpx(const char*, const struct utmpx*);
+int utmpxname(const char*);
 #endif
 
-#define EMPTY           0
-#define RUN_LVL         1
-#define BOOT_TIME       2
-#define NEW_TIME        3
-#define OLD_TIME        4
-#define INIT_PROCESS    5
-#define LOGIN_PROCESS   6
-#define USER_PROCESS    7
-#define DEAD_PROCESS    8
+#define EMPTY 0
+#define RUN_LVL 1
+#define BOOT_TIME 2
+#define NEW_TIME 3
+#define OLD_TIME 4
+#define INIT_PROCESS 5
+#define LOGIN_PROCESS 6
+#define USER_PROCESS 7
+#define DEAD_PROCESS 8
 
 #ifdef __cplusplus
 }
diff --git a/fusl/include/values.h b/fusl/include/values.h
index fe4949f..76d4080 100644
--- a/fusl/include/values.h
+++ b/fusl/include/values.h
@@ -3,36 +3,36 @@
 
 #include <limits.h>
 
-#define CHARBITS   (sizeof(char)   * 8)
-#define SHORTBITS  (sizeof(short)  * 8)
-#define INTBITS    (sizeof(int)    * 8)
-#define LONGBITS   (sizeof(long)   * 8)
-#define PTRBITS    (sizeof(char *) * 8)
+#define CHARBITS (sizeof(char) * 8)
+#define SHORTBITS (sizeof(short) * 8)
+#define INTBITS (sizeof(int) * 8)
+#define LONGBITS (sizeof(long) * 8)
+#define PTRBITS (sizeof(char*) * 8)
 #define DOUBLEBITS (sizeof(double) * 8)
-#define FLOATBITS  (sizeof(float)  * 8)
+#define FLOATBITS (sizeof(float) * 8)
 
 #define MINSHORT SHRT_MIN
-#define MININT   INT_MIN
-#define MINLONG  LONG_MIN
+#define MININT INT_MIN
+#define MINLONG LONG_MIN
 
 #define MAXSHORT SHRT_MAX
-#define MAXINT   INT_MAX
-#define MAXLONG  LONG_MAX
+#define MAXINT INT_MAX
+#define MAXLONG LONG_MAX
 
-#define HIBITS   MINSHORT
-#define HIBITL   MINLONG
+#define HIBITS MINSHORT
+#define HIBITL MINLONG
 
 #include <float.h>
 
 #define MAXDOUBLE DBL_MAX
-#undef  MAXFLOAT
-#define MAXFLOAT  FLT_MAX
+#undef MAXFLOAT
+#define MAXFLOAT FLT_MAX
 #define MINDOUBLE DBL_MIN
-#define MINFLOAT  FLT_MIN
-#define DMINEXP   DBL_MIN_EXP
-#define FMINEXP   FLT_MIN_EXP
-#define DMAXEXP   DBL_MAX_EXP
-#define FMAXEXP   FLT_MAX_EXP
+#define MINFLOAT FLT_MIN
+#define DMINEXP DBL_MIN_EXP
+#define FMINEXP FLT_MIN_EXP
+#define DMAXEXP DBL_MAX_EXP
+#define FMAXEXP FLT_MAX_EXP
 
 #define BITSPERBYTE CHAR_BIT
 
diff --git a/fusl/include/wchar.h b/fusl/include/wchar.h
index 0167dce..ddf077f 100644
--- a/fusl/include/wchar.h
+++ b/fusl/include/wchar.h
@@ -14,8 +14,8 @@
 #define __NEED_wint_t
 #define __NEED_mbstate_t
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define __NEED_locale_t
 #define __NEED_va_list
 #endif
@@ -26,12 +26,12 @@
 
 #include <bits/alltypes.h>
 
-#if L'\0'-1 > 0
-#define WCHAR_MAX (0xffffffffu+L'\0')
-#define WCHAR_MIN (0+L'\0')
+#if L'\0' - 1 > 0
+#define WCHAR_MAX (0xffffffffu + L'\0')
+#define WCHAR_MIN (0 + L'\0')
 #else
-#define WCHAR_MAX (0x7fffffff+L'\0')
-#define WCHAR_MIN (-1-0x7fffffff+L'\0')
+#define WCHAR_MAX (0x7fffffff + L'\0')
+#define WCHAR_MIN (-1 - 0x7fffffff + L'\0')
 #endif
 
 #ifdef __cplusplus
@@ -43,139 +43,168 @@
 #undef WEOF
 #define WEOF 0xffffffffU
 
-wchar_t *wcscpy (wchar_t *__restrict, const wchar_t *__restrict);
-wchar_t *wcsncpy (wchar_t *__restrict, const wchar_t *__restrict, size_t);
+wchar_t* wcscpy(wchar_t* __restrict, const wchar_t* __restrict);
+wchar_t* wcsncpy(wchar_t* __restrict, const wchar_t* __restrict, size_t);
 
-wchar_t *wcscat (wchar_t *__restrict, const wchar_t *__restrict);
-wchar_t *wcsncat (wchar_t *__restrict, const wchar_t *__restrict, size_t);
+wchar_t* wcscat(wchar_t* __restrict, const wchar_t* __restrict);
+wchar_t* wcsncat(wchar_t* __restrict, const wchar_t* __restrict, size_t);
 
-int wcscmp (const wchar_t *, const wchar_t *);
-int wcsncmp (const wchar_t *, const wchar_t *, size_t);
+int wcscmp(const wchar_t*, const wchar_t*);
+int wcsncmp(const wchar_t*, const wchar_t*, size_t);
 
-int wcscoll(const wchar_t *, const wchar_t *);
-size_t wcsxfrm (wchar_t *__restrict, const wchar_t *__restrict, size_t n);
+int wcscoll(const wchar_t*, const wchar_t*);
+size_t wcsxfrm(wchar_t* __restrict, const wchar_t* __restrict, size_t n);
 
-wchar_t *wcschr (const wchar_t *, wchar_t);
-wchar_t *wcsrchr (const wchar_t *, wchar_t);
+wchar_t* wcschr(const wchar_t*, wchar_t);
+wchar_t* wcsrchr(const wchar_t*, wchar_t);
 
-size_t wcscspn (const wchar_t *, const wchar_t *);
-size_t wcsspn (const wchar_t *, const wchar_t *);
-wchar_t *wcspbrk (const wchar_t *, const wchar_t *);
+size_t wcscspn(const wchar_t*, const wchar_t*);
+size_t wcsspn(const wchar_t*, const wchar_t*);
+wchar_t* wcspbrk(const wchar_t*, const wchar_t*);
 
-wchar_t *wcstok (wchar_t *__restrict, const wchar_t *__restrict, wchar_t **__restrict);
+wchar_t* wcstok(wchar_t* __restrict,
+                const wchar_t* __restrict,
+                wchar_t** __restrict);
 
-size_t wcslen (const wchar_t *);
+size_t wcslen(const wchar_t*);
 
-wchar_t *wcsstr (const wchar_t *__restrict, const wchar_t *__restrict);
-wchar_t *wcswcs (const wchar_t *, const wchar_t *);
+wchar_t* wcsstr(const wchar_t* __restrict, const wchar_t* __restrict);
+wchar_t* wcswcs(const wchar_t*, const wchar_t*);
 
-wchar_t *wmemchr (const wchar_t *, wchar_t, size_t);
-int wmemcmp (const wchar_t *, const wchar_t *, size_t);
-wchar_t *wmemcpy (wchar_t *__restrict, const wchar_t *__restrict, size_t);
-wchar_t *wmemmove (wchar_t *, const wchar_t *, size_t);
-wchar_t *wmemset (wchar_t *, wchar_t, size_t);
+wchar_t* wmemchr(const wchar_t*, wchar_t, size_t);
+int wmemcmp(const wchar_t*, const wchar_t*, size_t);
+wchar_t* wmemcpy(wchar_t* __restrict, const wchar_t* __restrict, size_t);
+wchar_t* wmemmove(wchar_t*, const wchar_t*, size_t);
+wchar_t* wmemset(wchar_t*, wchar_t, size_t);
 
-wint_t btowc (int);
-int wctob (wint_t);
+wint_t btowc(int);
+int wctob(wint_t);
 
-int mbsinit (const mbstate_t *);
-size_t mbrtowc (wchar_t *__restrict, const char *__restrict, size_t, mbstate_t *__restrict);
-size_t wcrtomb (char *__restrict, wchar_t, mbstate_t *__restrict);
+int mbsinit(const mbstate_t*);
+size_t mbrtowc(wchar_t* __restrict,
+               const char* __restrict,
+               size_t,
+               mbstate_t* __restrict);
+size_t wcrtomb(char* __restrict, wchar_t, mbstate_t* __restrict);
 
-size_t mbrlen (const char *__restrict, size_t, mbstate_t *__restrict);
+size_t mbrlen(const char* __restrict, size_t, mbstate_t* __restrict);
 
-size_t mbsrtowcs (wchar_t *__restrict, const char **__restrict, size_t, mbstate_t *__restrict);
-size_t wcsrtombs (char *__restrict, const wchar_t **__restrict, size_t, mbstate_t *__restrict);
+size_t mbsrtowcs(wchar_t* __restrict,
+                 const char** __restrict,
+                 size_t,
+                 mbstate_t* __restrict);
+size_t wcsrtombs(char* __restrict,
+                 const wchar_t** __restrict,
+                 size_t,
+                 mbstate_t* __restrict);
 
-float wcstof (const wchar_t *__restrict, wchar_t **__restrict);
-double wcstod (const wchar_t *__restrict, wchar_t **__restrict);
-long double wcstold (const wchar_t *__restrict, wchar_t **__restrict);
+float wcstof(const wchar_t* __restrict, wchar_t** __restrict);
+double wcstod(const wchar_t* __restrict, wchar_t** __restrict);
+long double wcstold(const wchar_t* __restrict, wchar_t** __restrict);
 
-long wcstol (const wchar_t *__restrict, wchar_t **__restrict, int);
-unsigned long wcstoul (const wchar_t *__restrict, wchar_t **__restrict, int);
+long wcstol(const wchar_t* __restrict, wchar_t** __restrict, int);
+unsigned long wcstoul(const wchar_t* __restrict, wchar_t** __restrict, int);
 
-long long wcstoll (const wchar_t *__restrict, wchar_t **__restrict, int);
-unsigned long long wcstoull (const wchar_t *__restrict, wchar_t **__restrict, int);
+long long wcstoll(const wchar_t* __restrict, wchar_t** __restrict, int);
+unsigned long long wcstoull(const wchar_t* __restrict,
+                            wchar_t** __restrict,
+                            int);
 
+int fwide(FILE*, int);
 
+int wprintf(const wchar_t* __restrict, ...);
+int fwprintf(FILE* __restrict, const wchar_t* __restrict, ...);
+int swprintf(wchar_t* __restrict, size_t, const wchar_t* __restrict, ...);
 
-int fwide (FILE *, int);
+int vwprintf(const wchar_t* __restrict, __isoc_va_list);
+int vfwprintf(FILE* __restrict, const wchar_t* __restrict, __isoc_va_list);
+int vswprintf(wchar_t* __restrict,
+              size_t,
+              const wchar_t* __restrict,
+              __isoc_va_list);
 
+int wscanf(const wchar_t* __restrict, ...);
+int fwscanf(FILE* __restrict, const wchar_t* __restrict, ...);
+int swscanf(const wchar_t* __restrict, const wchar_t* __restrict, ...);
 
-int wprintf (const wchar_t *__restrict, ...);
-int fwprintf (FILE *__restrict, const wchar_t *__restrict, ...);
-int swprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, ...);
+int vwscanf(const wchar_t* __restrict, __isoc_va_list);
+int vfwscanf(FILE* __restrict, const wchar_t* __restrict, __isoc_va_list);
+int vswscanf(const wchar_t* __restrict,
+             const wchar_t* __restrict,
+             __isoc_va_list);
 
-int vwprintf (const wchar_t *__restrict, __isoc_va_list);
-int vfwprintf (FILE *__restrict, const wchar_t *__restrict, __isoc_va_list);
-int vswprintf (wchar_t *__restrict, size_t, const wchar_t *__restrict, __isoc_va_list);
+wint_t fgetwc(FILE*);
+wint_t getwc(FILE*);
+wint_t getwchar(void);
 
-int wscanf (const wchar_t *__restrict, ...);
-int fwscanf (FILE *__restrict, const wchar_t *__restrict, ...);
-int swscanf (const wchar_t *__restrict, const wchar_t *__restrict, ...);
+wint_t fputwc(wchar_t, FILE*);
+wint_t putwc(wchar_t, FILE*);
+wint_t putwchar(wchar_t);
 
-int vwscanf (const wchar_t *__restrict, __isoc_va_list);
-int vfwscanf (FILE *__restrict, const wchar_t *__restrict, __isoc_va_list);
-int vswscanf (const wchar_t *__restrict, const wchar_t *__restrict, __isoc_va_list);
+wchar_t* fgetws(wchar_t* __restrict, int, FILE* __restrict);
+int fputws(const wchar_t* __restrict, FILE* __restrict);
 
-wint_t fgetwc (FILE *);
-wint_t getwc (FILE *);
-wint_t getwchar (void);
-
-wint_t fputwc (wchar_t, FILE *);
-wint_t putwc (wchar_t, FILE *);
-wint_t putwchar (wchar_t);
-
-wchar_t *fgetws (wchar_t *__restrict, int, FILE *__restrict);
-int fputws (const wchar_t *__restrict, FILE *__restrict);
-
-wint_t ungetwc (wint_t, FILE *);
+wint_t ungetwc(wint_t, FILE*);
 
 struct tm;
-size_t wcsftime (wchar_t *__restrict, size_t, const wchar_t *__restrict, const struct tm *__restrict);
+size_t wcsftime(wchar_t* __restrict,
+                size_t,
+                const wchar_t* __restrict,
+                const struct tm* __restrict);
 
 #undef iswdigit
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE)  || defined(_BSD_SOURCE)
-FILE *open_wmemstream(wchar_t **, size_t *);
-size_t mbsnrtowcs(wchar_t *__restrict, const char **__restrict, size_t, size_t, mbstate_t *__restrict);
-size_t wcsnrtombs(char *__restrict, const wchar_t **__restrict, size_t, size_t, mbstate_t *__restrict);
-wchar_t *wcsdup(const wchar_t *);
-size_t wcsnlen (const wchar_t *, size_t);
-wchar_t *wcpcpy (wchar_t *__restrict, const wchar_t *__restrict);
-wchar_t *wcpncpy (wchar_t *__restrict, const wchar_t *__restrict, size_t);
-int wcscasecmp(const wchar_t *, const wchar_t *);
-int wcscasecmp_l(const wchar_t *, const wchar_t *, locale_t);
-int wcsncasecmp(const wchar_t *, const wchar_t *, size_t);
-int wcsncasecmp_l(const wchar_t *, const wchar_t *, size_t, locale_t);
-int wcscoll_l(const wchar_t *, const wchar_t *, locale_t);
-size_t wcsxfrm_l(wchar_t *__restrict, const wchar_t *__restrict, size_t n, locale_t);
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+FILE* open_wmemstream(wchar_t**, size_t*);
+size_t mbsnrtowcs(wchar_t* __restrict,
+                  const char** __restrict,
+                  size_t,
+                  size_t,
+                  mbstate_t* __restrict);
+size_t wcsnrtombs(char* __restrict,
+                  const wchar_t** __restrict,
+                  size_t,
+                  size_t,
+                  mbstate_t* __restrict);
+wchar_t* wcsdup(const wchar_t*);
+size_t wcsnlen(const wchar_t*, size_t);
+wchar_t* wcpcpy(wchar_t* __restrict, const wchar_t* __restrict);
+wchar_t* wcpncpy(wchar_t* __restrict, const wchar_t* __restrict, size_t);
+int wcscasecmp(const wchar_t*, const wchar_t*);
+int wcscasecmp_l(const wchar_t*, const wchar_t*, locale_t);
+int wcsncasecmp(const wchar_t*, const wchar_t*, size_t);
+int wcsncasecmp_l(const wchar_t*, const wchar_t*, size_t, locale_t);
+int wcscoll_l(const wchar_t*, const wchar_t*, locale_t);
+size_t wcsxfrm_l(wchar_t* __restrict,
+                 const wchar_t* __restrict,
+                 size_t n,
+                 locale_t);
 #endif
 
 #if defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
-int wcwidth (wchar_t);
-int wcswidth (const wchar_t *, size_t);
-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       iswprint(wint_t);
-int       iswpunct(wint_t);
-int       iswspace(wint_t);
-int       iswupper(wint_t);
-int       iswxdigit(wint_t);
-int       iswctype(wint_t, wctype_t);
-wint_t    towlower(wint_t);
-wint_t    towupper(wint_t);
-wctype_t  wctype(const char *);
+int wcwidth(wchar_t);
+int wcswidth(const wchar_t*, size_t);
+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 iswprint(wint_t);
+int iswpunct(wint_t);
+int iswspace(wint_t);
+int iswupper(wint_t);
+int iswxdigit(wint_t);
+int iswctype(wint_t, wctype_t);
+wint_t towlower(wint_t);
+wint_t towupper(wint_t);
+wctype_t wctype(const char*);
 
 #ifndef __cplusplus
 #undef iswdigit
-#define iswdigit(a) (0 ? iswdigit(a) : ((unsigned)(a)-'0') < 10)
+#define iswdigit(a) (0 ? iswdigit(a) : ((unsigned)(a) - '0') < 10)
 #endif
 #endif
 
diff --git a/fusl/include/wctype.h b/fusl/include/wctype.h
index bc2420d..543442b 100644
--- a/fusl/include/wctype.h
+++ b/fusl/include/wctype.h
@@ -10,46 +10,46 @@
 #define __NEED_wint_t
 #define __NEED_wctype_t
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 #define __NEED_locale_t
 #endif
 
 #include <bits/alltypes.h>
 
-typedef const int * wctrans_t;
+typedef const int* wctrans_t;
 
 #undef WEOF
 #define WEOF 0xffffffffU
 
 #undef iswdigit
 
-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       iswprint(wint_t);
-int       iswpunct(wint_t);
-int       iswspace(wint_t);
-int       iswupper(wint_t);
-int       iswxdigit(wint_t);
-int       iswctype(wint_t, wctype_t);
-wint_t    towctrans(wint_t, wctrans_t);
-wint_t    towlower(wint_t);
-wint_t    towupper(wint_t);
-wctrans_t wctrans(const char *);
-wctype_t  wctype(const char *);
+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 iswprint(wint_t);
+int iswpunct(wint_t);
+int iswspace(wint_t);
+int iswupper(wint_t);
+int iswxdigit(wint_t);
+int iswctype(wint_t, wctype_t);
+wint_t towctrans(wint_t, wctrans_t);
+wint_t towlower(wint_t);
+wint_t towupper(wint_t);
+wctrans_t wctrans(const char*);
+wctype_t wctype(const char*);
 
 #ifndef __cplusplus
 #undef iswdigit
-#define iswdigit(a) (0 ? iswdigit(a) : ((unsigned)(a)-'0') < 10)
+#define iswdigit(a) (0 ? iswdigit(a) : ((unsigned)(a) - '0') < 10)
 #endif
 
-#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
- || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
+#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) || \
+    defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
 
 int iswalnum_l(wint_t, locale_t);
 int iswalpha_l(wint_t, locale_t);
@@ -67,8 +67,8 @@
 wint_t towlower_l(wint_t, locale_t);
 wint_t towupper_l(wint_t, locale_t);
 wint_t towctrans_l(wint_t, wctrans_t, locale_t);
-wctrans_t wctrans_l(const char *, locale_t);
-wctype_t  wctype_l(const char *, locale_t);
+wctrans_t wctrans_l(const char*, locale_t);
+wctype_t wctype_l(const char*, locale_t);
 
 #endif
 
diff --git a/fusl/include/wordexp.h b/fusl/include/wordexp.h
index d12081e..3517192 100644
--- a/fusl/include/wordexp.h
+++ b/fusl/include/wordexp.h
@@ -1,5 +1,5 @@
-#ifndef	_WORDEXP_H
-#define	_WORDEXP_H
+#ifndef _WORDEXP_H
+#define _WORDEXP_H
 
 #ifdef __cplusplus
 extern "C" {
@@ -11,29 +11,28 @@
 
 #include <bits/alltypes.h>
 
-#define WRDE_DOOFFS  1
-#define WRDE_APPEND  2
-#define WRDE_NOCMD   4
-#define WRDE_REUSE   8
+#define WRDE_DOOFFS 1
+#define WRDE_APPEND 2
+#define WRDE_NOCMD 4
+#define WRDE_REUSE 8
 #define WRDE_SHOWERR 16
-#define WRDE_UNDEF   32
+#define WRDE_UNDEF 32
 
-typedef struct
-{
-	size_t we_wordc;
-	char **we_wordv;
-	size_t we_offs;
+typedef struct {
+  size_t we_wordc;
+  char** we_wordv;
+  size_t we_offs;
 } wordexp_t;
 
-#define WRDE_NOSYS   -1
+#define WRDE_NOSYS -1
 #define WRDE_NOSPACE 1
 #define WRDE_BADCHAR 2
-#define WRDE_BADVAL  3
-#define WRDE_CMDSUB  4
-#define WRDE_SYNTAX  5
+#define WRDE_BADVAL 3
+#define WRDE_CMDSUB 4
+#define WRDE_SYNTAX 5
 
-int wordexp (const char *__restrict, wordexp_t *__restrict, int);
-void wordfree (wordexp_t *);
+int wordexp(const char* __restrict, wordexp_t* __restrict, int);
+void wordfree(wordexp_t*);
 
 #ifdef __cplusplus
 }
diff --git a/fusl/ldso/dlstart.c b/fusl/ldso/dlstart.c
index 4482d52..3681b24 100644
--- a/fusl/ldso/dlstart.c
+++ b/fusl/ldso/dlstart.c
@@ -8,139 +8,154 @@
 #include "crt_arch.h"
 
 #ifndef GETFUNCSYM
-#define GETFUNCSYM(fp, sym, got) do { \
-	__attribute__((__visibility__("hidden"))) void sym(); \
-	static void (*static_func_ptr)() = sym; \
-	__asm__ __volatile__ ( "" : "+m"(static_func_ptr) : : "memory"); \
-	*(fp) = static_func_ptr; } while(0)
+#define GETFUNCSYM(fp, sym, got)                                   \
+  do {                                                             \
+    __attribute__((__visibility__("hidden"))) void sym();          \
+    static void (*static_func_ptr)() = sym;                        \
+    __asm__ __volatile__("" : "+m"(static_func_ptr) : : "memory"); \
+    *(fp) = static_func_ptr;                                       \
+  } while (0)
 #endif
 
-__attribute__((__visibility__("hidden")))
-void _dlstart_c(size_t *sp, size_t *dynv)
-{
-	size_t i, aux[AUX_CNT], dyn[DYN_CNT];
-	size_t *rel, rel_size, base;
+__attribute__((__visibility__("hidden"))) void _dlstart_c(size_t* sp,
+                                                          size_t* dynv) {
+  size_t i, aux[AUX_CNT], dyn[DYN_CNT];
+  size_t *rel, rel_size, base;
 
-	int argc = *sp;
-	char **argv = (void *)(sp+1);
+  int argc = *sp;
+  char** argv = (void*)(sp + 1);
 
-	for (i=argc+1; argv[i]; i++);
-	size_t *auxv = (void *)(argv+i+1);
+  for (i = argc + 1; argv[i]; i++)
+    ;
+  size_t* auxv = (void*)(argv + i + 1);
 
-	for (i=0; i<AUX_CNT; i++) aux[i] = 0;
-	for (i=0; auxv[i]; i+=2) if (auxv[i]<AUX_CNT)
-		aux[auxv[i]] = auxv[i+1];
+  for (i = 0; i < AUX_CNT; i++)
+    aux[i] = 0;
+  for (i = 0; auxv[i]; i += 2)
+    if (auxv[i] < AUX_CNT)
+      aux[auxv[i]] = auxv[i + 1];
 
 #if DL_FDPIC
-	struct fdpic_loadseg *segs, fakeseg;
-	size_t j;
-	if (dynv) {
-		/* crt_arch.h entry point asm is responsible for reserving
-		 * space and moving the extra fdpic arguments to the stack
-		 * vector where they are easily accessible from C. */
-		segs = ((struct fdpic_loadmap *)(sp[-1] ? sp[-1] : sp[-2]))->segs;
-	} else {
-		/* If dynv is null, the entry point was started from loader
-		 * that is not fdpic-aware. We can assume normal fixed-
-		 * displacement ELF loading was performed, but when ldso was
-		 * run as a command, finding the Ehdr is a heursitic: we
-		 * have to assume Phdrs start in the first 4k of the file. */
-		base = aux[AT_BASE];
-		if (!base) base = aux[AT_PHDR] & -4096;
-		segs = &fakeseg;
-		segs[0].addr = base;
-		segs[0].p_vaddr = 0;
-		segs[0].p_memsz = -1;
-		Ehdr *eh = (void *)base;
-		Phdr *ph = (void *)(base + eh->e_phoff);
-		size_t phnum = eh->e_phnum;
-		size_t phent = eh->e_phentsize;
-		while (phnum-- && ph->p_type != PT_DYNAMIC)
-			ph = (void *)((size_t)ph + phent);
-		dynv = (void *)(base + ph->p_vaddr);
-	}
+  struct fdpic_loadseg *segs, fakeseg;
+  size_t j;
+  if (dynv) {
+    /* crt_arch.h entry point asm is responsible for reserving
+     * space and moving the extra fdpic arguments to the stack
+     * vector where they are easily accessible from C. */
+    segs = ((struct fdpic_loadmap*)(sp[-1] ? sp[-1] : sp[-2]))->segs;
+  } else {
+    /* If dynv is null, the entry point was started from loader
+     * that is not fdpic-aware. We can assume normal fixed-
+     * displacement ELF loading was performed, but when ldso was
+     * run as a command, finding the Ehdr is a heursitic: we
+     * have to assume Phdrs start in the first 4k of the file. */
+    base = aux[AT_BASE];
+    if (!base)
+      base = aux[AT_PHDR] & -4096;
+    segs = &fakeseg;
+    segs[0].addr = base;
+    segs[0].p_vaddr = 0;
+    segs[0].p_memsz = -1;
+    Ehdr* eh = (void*)base;
+    Phdr* ph = (void*)(base + eh->e_phoff);
+    size_t phnum = eh->e_phnum;
+    size_t phent = eh->e_phentsize;
+    while (phnum-- && ph->p_type != PT_DYNAMIC)
+      ph = (void*)((size_t)ph + phent);
+    dynv = (void*)(base + ph->p_vaddr);
+  }
 #endif
 
-	for (i=0; i<DYN_CNT; i++) dyn[i] = 0;
-	for (i=0; dynv[i]; i+=2) if (dynv[i]<DYN_CNT)
-		dyn[dynv[i]] = dynv[i+1];
+  for (i = 0; i < DYN_CNT; i++)
+    dyn[i] = 0;
+  for (i = 0; dynv[i]; i += 2)
+    if (dynv[i] < DYN_CNT)
+      dyn[dynv[i]] = dynv[i + 1];
 
 #if DL_FDPIC
-	for (i=0; i<DYN_CNT; i++) {
-		if (i==DT_RELASZ || i==DT_RELSZ) continue;
-		if (!dyn[i]) continue;
-		for (j=0; dyn[i]-segs[j].p_vaddr >= segs[j].p_memsz; j++);
-		dyn[i] += segs[j].addr - segs[j].p_vaddr;
-	}
-	base = 0;
+  for (i = 0; i < DYN_CNT; i++) {
+    if (i == DT_RELASZ || i == DT_RELSZ)
+      continue;
+    if (!dyn[i])
+      continue;
+    for (j = 0; dyn[i] - segs[j].p_vaddr >= segs[j].p_memsz; j++)
+      ;
+    dyn[i] += segs[j].addr - segs[j].p_vaddr;
+  }
+  base = 0;
 
-	const Sym *syms = (void *)dyn[DT_SYMTAB];
+  const Sym* syms = (void*)dyn[DT_SYMTAB];
 
-	rel = (void *)dyn[DT_RELA];
-	rel_size = dyn[DT_RELASZ];
-	for (; rel_size; rel+=3, rel_size-=3*sizeof(size_t)) {
-		if (!IS_RELATIVE(rel[1], syms)) continue;
-		for (j=0; rel[0]-segs[j].p_vaddr >= segs[j].p_memsz; j++);
-		size_t *rel_addr = (void *)
-			(rel[0] + segs[j].addr - segs[j].p_vaddr);
-		if (R_TYPE(rel[1]) == REL_FUNCDESC_VAL) {
-			*rel_addr += segs[rel_addr[1]].addr
-				- segs[rel_addr[1]].p_vaddr
-				+ syms[R_SYM(rel[1])].st_value;
-			rel_addr[1] = dyn[DT_PLTGOT];
-		} else {
-			size_t val = syms[R_SYM(rel[1])].st_value;
-			for (j=0; val-segs[j].p_vaddr >= segs[j].p_memsz; j++);
-			*rel_addr = rel[2] + segs[j].addr - segs[j].p_vaddr + val;
-		}
-	}
+  rel = (void*)dyn[DT_RELA];
+  rel_size = dyn[DT_RELASZ];
+  for (; rel_size; rel += 3, rel_size -= 3 * sizeof(size_t)) {
+    if (!IS_RELATIVE(rel[1], syms))
+      continue;
+    for (j = 0; rel[0] - segs[j].p_vaddr >= segs[j].p_memsz; j++)
+      ;
+    size_t* rel_addr = (void*)(rel[0] + segs[j].addr - segs[j].p_vaddr);
+    if (R_TYPE(rel[1]) == REL_FUNCDESC_VAL) {
+      *rel_addr += segs[rel_addr[1]].addr - segs[rel_addr[1]].p_vaddr +
+                   syms[R_SYM(rel[1])].st_value;
+      rel_addr[1] = dyn[DT_PLTGOT];
+    } else {
+      size_t val = syms[R_SYM(rel[1])].st_value;
+      for (j = 0; val - segs[j].p_vaddr >= segs[j].p_memsz; j++)
+        ;
+      *rel_addr = rel[2] + segs[j].addr - segs[j].p_vaddr + val;
+    }
+  }
 #else
-	/* If the dynamic linker is invoked as a command, its load
-	 * address is not available in the aux vector. Instead, compute
-	 * the load address as the difference between &_DYNAMIC and the
-	 * virtual address in the PT_DYNAMIC program header. */
-	base = aux[AT_BASE];
-	if (!base) {
-		size_t phnum = aux[AT_PHNUM];
-		size_t phentsize = aux[AT_PHENT];
-		Phdr *ph = (void *)aux[AT_PHDR];
-		for (i=phnum; i--; ph = (void *)((char *)ph + phentsize)) {
-			if (ph->p_type == PT_DYNAMIC) {
-				base = (size_t)dynv - ph->p_vaddr;
-				break;
-			}
-		}
-	}
+  /* If the dynamic linker is invoked as a command, its load
+   * address is not available in the aux vector. Instead, compute
+   * the load address as the difference between &_DYNAMIC and the
+   * virtual address in the PT_DYNAMIC program header. */
+  base = aux[AT_BASE];
+  if (!base) {
+    size_t phnum = aux[AT_PHNUM];
+    size_t phentsize = aux[AT_PHENT];
+    Phdr* ph = (void*)aux[AT_PHDR];
+    for (i = phnum; i--; ph = (void*)((char*)ph + phentsize)) {
+      if (ph->p_type == PT_DYNAMIC) {
+        base = (size_t)dynv - ph->p_vaddr;
+        break;
+      }
+    }
+  }
 
-	/* MIPS uses an ugly packed form for GOT relocations. Since we
-	 * can't make function calls yet and the code is tiny anyway,
-	 * it's simply inlined here. */
-	if (NEED_MIPS_GOT_RELOCS) {
-		size_t local_cnt = 0;
-		size_t *got = (void *)(base + dyn[DT_PLTGOT]);
-		for (i=0; dynv[i]; i+=2) if (dynv[i]==DT_MIPS_LOCAL_GOTNO)
-			local_cnt = dynv[i+1];
-		for (i=0; i<local_cnt; i++) got[i] += base;
-	}
+  /* MIPS uses an ugly packed form for GOT relocations. Since we
+   * can't make function calls yet and the code is tiny anyway,
+   * it's simply inlined here. */
+  if (NEED_MIPS_GOT_RELOCS) {
+    size_t local_cnt = 0;
+    size_t* got = (void*)(base + dyn[DT_PLTGOT]);
+    for (i = 0; dynv[i]; i += 2)
+      if (dynv[i] == DT_MIPS_LOCAL_GOTNO)
+        local_cnt = dynv[i + 1];
+    for (i = 0; i < local_cnt; i++)
+      got[i] += base;
+  }
 
-	rel = (void *)(base+dyn[DT_REL]);
-	rel_size = dyn[DT_RELSZ];
-	for (; rel_size; rel+=2, rel_size-=2*sizeof(size_t)) {
-		if (!IS_RELATIVE(rel[1], 0)) continue;
-		size_t *rel_addr = (void *)(base + rel[0]);
-		*rel_addr += base;
-	}
+  rel = (void*)(base + dyn[DT_REL]);
+  rel_size = dyn[DT_RELSZ];
+  for (; rel_size; rel += 2, rel_size -= 2 * sizeof(size_t)) {
+    if (!IS_RELATIVE(rel[1], 0))
+      continue;
+    size_t* rel_addr = (void*)(base + rel[0]);
+    *rel_addr += base;
+  }
 
-	rel = (void *)(base+dyn[DT_RELA]);
-	rel_size = dyn[DT_RELASZ];
-	for (; rel_size; rel+=3, rel_size-=3*sizeof(size_t)) {
-		if (!IS_RELATIVE(rel[1], 0)) continue;
-		size_t *rel_addr = (void *)(base + rel[0]);
-		*rel_addr = base + rel[2];
-	}
+  rel = (void*)(base + dyn[DT_RELA]);
+  rel_size = dyn[DT_RELASZ];
+  for (; rel_size; rel += 3, rel_size -= 3 * sizeof(size_t)) {
+    if (!IS_RELATIVE(rel[1], 0))
+      continue;
+    size_t* rel_addr = (void*)(base + rel[0]);
+    *rel_addr = base + rel[2];
+  }
 #endif
 
-	stage2_func dls2;
-	GETFUNCSYM(&dls2, __dls2, base+dyn[DT_PLTGOT]);
-	dls2((void *)base, sp);
+  stage2_func dls2;
+  GETFUNCSYM(&dls2, __dls2, base + dyn[DT_PLTGOT]);
+  dls2((void*)base, sp);
 }
diff --git a/fusl/ldso/dynlink.c b/fusl/ldso/dynlink.c
index 307354d..32b4156 100644
--- a/fusl/ldso/dynlink.c
+++ b/fusl/ldso/dynlink.c
@@ -21,91 +21,90 @@
 #include "libc.h"
 #include "dynlink.h"
 
-static void error(const char *, ...);
+static void error(const char*, ...);
 
-#define MAXP2(a,b) (-(-(a)&-(b)))
-#define ALIGN(x,y) ((x)+(y)-1 & -(y))
+#define MAXP2(a, b) (-(-(a) & -(b)))
+#define ALIGN(x, y) ((x) + (y)-1 & -(y))
 
 struct debug {
-	int ver;
-	void *head;
-	void (*bp)(void);
-	int state;
-	void *base;
+  int ver;
+  void* head;
+  void (*bp)(void);
+  int state;
+  void* base;
 };
 
 struct td_index {
-	size_t args[2];
-	struct td_index *next;
+  size_t args[2];
+  struct td_index* next;
 };
 
 struct dso {
 #if DL_FDPIC
-	struct fdpic_loadmap *loadmap;
+  struct fdpic_loadmap* loadmap;
 #else
-	unsigned char *base;
+  unsigned char* base;
 #endif
-	char *name;
-	size_t *dynv;
-	struct dso *next, *prev;
+  char* name;
+  size_t* dynv;
+  struct dso *next, *prev;
 
-	Phdr *phdr;
-	int phnum;
-	size_t phentsize;
-	int refcnt;
-	Sym *syms;
-	uint32_t *hashtab;
-	uint32_t *ghashtab;
-	int16_t *versym;
-	char *strings;
-	unsigned char *map;
-	size_t map_len;
-	dev_t dev;
-	ino_t ino;
-	signed char global;
-	char relocated;
-	char constructed;
-	char kernel_mapped;
-	struct dso **deps, *needed_by;
-	char *rpath_orig, *rpath;
-	struct tls_module tls;
-	size_t tls_id;
-	size_t relro_start, relro_end;
-	void **new_dtv;
-	unsigned char *new_tls;
-	volatile int new_dtv_idx, new_tls_idx;
-	struct td_index *td_index;
-	struct dso *fini_next;
-	char *shortname;
+  Phdr* phdr;
+  int phnum;
+  size_t phentsize;
+  int refcnt;
+  Sym* syms;
+  uint32_t* hashtab;
+  uint32_t* ghashtab;
+  int16_t* versym;
+  char* strings;
+  unsigned char* map;
+  size_t map_len;
+  dev_t dev;
+  ino_t ino;
+  signed char global;
+  char relocated;
+  char constructed;
+  char kernel_mapped;
+  struct dso **deps, *needed_by;
+  char *rpath_orig, *rpath;
+  struct tls_module tls;
+  size_t tls_id;
+  size_t relro_start, relro_end;
+  void** new_dtv;
+  unsigned char* new_tls;
+  volatile int new_dtv_idx, new_tls_idx;
+  struct td_index* td_index;
+  struct dso* fini_next;
+  char* shortname;
 #if DL_FDPIC
-	unsigned char *base;
+  unsigned char* base;
 #else
-	struct fdpic_loadmap *loadmap;
+  struct fdpic_loadmap* loadmap;
 #endif
-	struct funcdesc {
-		void *addr;
-		size_t *got;
-	} *funcdescs;
-	size_t *got;
-	char buf[];
+  struct funcdesc {
+    void* addr;
+    size_t* got;
+  } * funcdescs;
+  size_t* got;
+  char buf[];
 };
 
 struct symdef {
-	Sym *sym;
-	struct dso *dso;
+  Sym* sym;
+  struct dso* dso;
 };
 
-int __init_tp(void *);
-void __init_libc(char **, char *);
-void *__copy_tls(unsigned char *);
+int __init_tp(void*);
+void __init_libc(char**, char*);
+void* __copy_tls(unsigned char*);
 
-__attribute__((__visibility__("hidden")))
-const char *__libc_get_version(void);
+__attribute__((__visibility__("hidden"))) const char* __libc_get_version(void);
 
 static struct builtin_tls {
-	char c;
-	struct pthread pt;
-	void *space[16];
+  char c;
+  struct pthread pt;
+  void* space[16];
 } builtin_tls[1];
 #define MIN_TLS_ALIGN offsetof(struct builtin_tls, pt)
 
@@ -120,337 +119,363 @@
 static int ldd_mode;
 static int ldso_fail;
 static int noload;
-static jmp_buf *rtld_fail;
+static jmp_buf* rtld_fail;
 static pthread_rwlock_t lock;
 static struct debug debug;
-static struct tls_module *tls_tail;
+static struct tls_module* tls_tail;
 static size_t tls_cnt, tls_offset, tls_align = MIN_TLS_ALIGN;
 static size_t static_tls_cnt;
-static pthread_mutex_t init_fini_lock = { ._m_type = PTHREAD_MUTEX_RECURSIVE };
-static struct fdpic_loadmap *app_loadmap;
+static pthread_mutex_t init_fini_lock = {._m_type = PTHREAD_MUTEX_RECURSIVE};
+static struct fdpic_loadmap* app_loadmap;
 static struct fdpic_dummy_loadmap app_dummy_loadmap;
 
-struct debug *_dl_debug_addr = &debug;
+struct debug* _dl_debug_addr = &debug;
 
-__attribute__((__visibility__("hidden")))
-void (*const __init_array_start)(void)=0, (*const __fini_array_start)(void)=0;
+__attribute__((__visibility__("hidden"))) void (*const __init_array_start)(
+    void) = 0,
+  (*const __fini_array_start)(void) = 0;
 
-__attribute__((__visibility__("hidden")))
-extern void (*const __init_array_end)(void), (*const __fini_array_end)(void);
+__attribute__((__visibility__("hidden"))) extern void (*const __init_array_end)(
+    void),
+    (*const __fini_array_end)(void);
 
 weak_alias(__init_array_start, __init_array_end);
 weak_alias(__fini_array_start, __fini_array_end);
 
-static int dl_strcmp(const char *l, const char *r)
-{
-	for (; *l==*r && *l; l++, r++);
-	return *(unsigned char *)l - *(unsigned char *)r;
+static int dl_strcmp(const char* l, const char* r) {
+  for (; *l == *r && *l; l++, r++)
+    ;
+  return *(unsigned char*)l - *(unsigned char*)r;
 }
-#define strcmp(l,r) dl_strcmp(l,r)
+#define strcmp(l, r) dl_strcmp(l, r)
 
 /* Compute load address for a virtual address in a given dso. */
 #if DL_FDPIC
-static void *laddr(const struct dso *p, size_t v)
-{
-	size_t j=0;
-	if (!p->loadmap) return p->base + v;
-	for (j=0; v-p->loadmap->segs[j].p_vaddr >= p->loadmap->segs[j].p_memsz; j++);
-	return (void *)(v - p->loadmap->segs[j].p_vaddr + p->loadmap->segs[j].addr);
+static void* laddr(const struct dso* p, size_t v) {
+  size_t j = 0;
+  if (!p->loadmap)
+    return p->base + v;
+  for (j = 0; v - p->loadmap->segs[j].p_vaddr >= p->loadmap->segs[j].p_memsz;
+       j++)
+    ;
+  return (void*)(v - p->loadmap->segs[j].p_vaddr + p->loadmap->segs[j].addr);
 }
-#define fpaddr(p, v) ((void (*)())&(struct funcdesc){ \
-	laddr(p, v), (p)->got })
+#define fpaddr(p, v) ((void (*)()) & (struct funcdesc){laddr(p, v), (p)->got})
 #else
-#define laddr(p, v) (void *)((p)->base + (v))
+#define laddr(p, v) (void*)((p)->base + (v))
 #define fpaddr(p, v) ((void (*)())laddr(p, v))
 #endif
 
-static void decode_vec(size_t *v, size_t *a, size_t cnt)
-{
-	size_t i;
-	for (i=0; i<cnt; i++) a[i] = 0;
-	for (; v[0]; v+=2) if (v[0]-1<cnt-1) {
-		a[0] |= 1UL<<v[0];
-		a[v[0]] = v[1];
-	}
+static void decode_vec(size_t* v, size_t* a, size_t cnt) {
+  size_t i;
+  for (i = 0; i < cnt; i++)
+    a[i] = 0;
+  for (; v[0]; v += 2)
+    if (v[0] - 1 < cnt - 1) {
+      a[0] |= 1UL << v[0];
+      a[v[0]] = v[1];
+    }
 }
 
-static int search_vec(size_t *v, size_t *r, size_t key)
-{
-	for (; v[0]!=key; v+=2)
-		if (!v[0]) return 0;
-	*r = v[1];
-	return 1;
+static int search_vec(size_t* v, size_t* r, size_t key) {
+  for (; v[0] != key; v += 2)
+    if (!v[0])
+      return 0;
+  *r = v[1];
+  return 1;
 }
 
-static uint32_t sysv_hash(const char *s0)
-{
-	const unsigned char *s = (void *)s0;
-	uint_fast32_t h = 0;
-	while (*s) {
-		h = 16*h + *s++;
-		h ^= h>>24 & 0xf0;
-	}
-	return h & 0xfffffff;
+static uint32_t sysv_hash(const char* s0) {
+  const unsigned char* s = (void*)s0;
+  uint_fast32_t h = 0;
+  while (*s) {
+    h = 16 * h + *s++;
+    h ^= h >> 24 & 0xf0;
+  }
+  return h & 0xfffffff;
 }
 
-static uint32_t gnu_hash(const char *s0)
-{
-	const unsigned char *s = (void *)s0;
-	uint_fast32_t h = 5381;
-	for (; *s; s++)
-		h += h*32 + *s;
-	return h;
+static uint32_t gnu_hash(const char* s0) {
+  const unsigned char* s = (void*)s0;
+  uint_fast32_t h = 5381;
+  for (; *s; s++)
+    h += h * 32 + *s;
+  return h;
 }
 
-static Sym *sysv_lookup(const char *s, uint32_t h, struct dso *dso)
-{
-	size_t i;
-	Sym *syms = dso->syms;
-	uint32_t *hashtab = dso->hashtab;
-	char *strings = dso->strings;
-	for (i=hashtab[2+h%hashtab[0]]; i; i=hashtab[2+hashtab[0]+i]) {
-		if ((!dso->versym || dso->versym[i] >= 0)
-		    && (!strcmp(s, strings+syms[i].st_name)))
-			return syms+i;
-	}
-	return 0;
+static Sym* sysv_lookup(const char* s, uint32_t h, struct dso* dso) {
+  size_t i;
+  Sym* syms = dso->syms;
+  uint32_t* hashtab = dso->hashtab;
+  char* strings = dso->strings;
+  for (i = hashtab[2 + h % hashtab[0]]; i; i = hashtab[2 + hashtab[0] + i]) {
+    if ((!dso->versym || dso->versym[i] >= 0) &&
+        (!strcmp(s, strings + syms[i].st_name)))
+      return syms + i;
+  }
+  return 0;
 }
 
-static Sym *gnu_lookup(uint32_t h1, uint32_t *hashtab, struct dso *dso, const char *s)
-{
-	uint32_t nbuckets = hashtab[0];
-	uint32_t *buckets = hashtab + 4 + hashtab[2]*(sizeof(size_t)/4);
-	uint32_t i = buckets[h1 % nbuckets];
+static Sym* gnu_lookup(uint32_t h1,
+                       uint32_t* hashtab,
+                       struct dso* dso,
+                       const char* s) {
+  uint32_t nbuckets = hashtab[0];
+  uint32_t* buckets = hashtab + 4 + hashtab[2] * (sizeof(size_t) / 4);
+  uint32_t i = buckets[h1 % nbuckets];
 
-	if (!i) return 0;
+  if (!i)
+    return 0;
 
-	uint32_t *hashval = buckets + nbuckets + (i - hashtab[1]);
+  uint32_t* hashval = buckets + nbuckets + (i - hashtab[1]);
 
-	for (h1 |= 1; ; i++) {
-		uint32_t h2 = *hashval++;
-		if ((h1 == (h2|1)) && (!dso->versym || dso->versym[i] >= 0)
-		    && !strcmp(s, dso->strings + dso->syms[i].st_name))
-			return dso->syms+i;
-		if (h2 & 1) break;
-	}
+  for (h1 |= 1;; i++) {
+    uint32_t h2 = *hashval++;
+    if ((h1 == (h2 | 1)) && (!dso->versym || dso->versym[i] >= 0) &&
+        !strcmp(s, dso->strings + dso->syms[i].st_name))
+      return dso->syms + i;
+    if (h2 & 1)
+      break;
+  }
 
-	return 0;
+  return 0;
 }
 
-static Sym *gnu_lookup_filtered(uint32_t h1, uint32_t *hashtab, struct dso *dso, const char *s, uint32_t fofs, size_t fmask)
-{
-	const size_t *bloomwords = (const void *)(hashtab+4);
-	size_t f = bloomwords[fofs & (hashtab[2]-1)];
-	if (!(f & fmask)) return 0;
+static Sym* gnu_lookup_filtered(uint32_t h1,
+                                uint32_t* hashtab,
+                                struct dso* dso,
+                                const char* s,
+                                uint32_t fofs,
+                                size_t fmask) {
+  const size_t* bloomwords = (const void*)(hashtab + 4);
+  size_t f = bloomwords[fofs & (hashtab[2] - 1)];
+  if (!(f & fmask))
+    return 0;
 
-	f >>= (h1 >> hashtab[3]) % (8 * sizeof f);
-	if (!(f & 1)) return 0;
+  f >>= (h1 >> hashtab[3]) % (8 * sizeof f);
+  if (!(f & 1))
+    return 0;
 
-	return gnu_lookup(h1, hashtab, dso, s);
+  return gnu_lookup(h1, hashtab, dso, s);
 }
 
-#define OK_TYPES (1<<STT_NOTYPE | 1<<STT_OBJECT | 1<<STT_FUNC | 1<<STT_COMMON | 1<<STT_TLS)
-#define OK_BINDS (1<<STB_GLOBAL | 1<<STB_WEAK | 1<<STB_GNU_UNIQUE)
+#define OK_TYPES                                                         \
+  (1 << STT_NOTYPE | 1 << STT_OBJECT | 1 << STT_FUNC | 1 << STT_COMMON | \
+   1 << STT_TLS)
+#define OK_BINDS (1 << STB_GLOBAL | 1 << STB_WEAK | 1 << STB_GNU_UNIQUE)
 
 #ifndef ARCH_SYM_REJECT_UND
 #define ARCH_SYM_REJECT_UND(s) 0
 #endif
 
-static struct symdef find_sym(struct dso *dso, const char *s, int need_def)
-{
-	uint32_t h = 0, gh, gho, *ght;
-	size_t ghm = 0;
-	struct symdef def = {0};
-	for (; dso; dso=dso->next) {
-		Sym *sym;
-		if (!dso->global) continue;
-		if ((ght = dso->ghashtab)) {
-			if (!ghm) {
-				gh = gnu_hash(s);
-				int maskbits = 8 * sizeof ghm;
-				gho = gh / maskbits;
-				ghm = 1ul << gh % maskbits;
-			}
-			sym = gnu_lookup_filtered(gh, ght, dso, s, gho, ghm);
-		} else {
-			if (!h) h = sysv_hash(s);
-			sym = sysv_lookup(s, h, dso);
-		}
-		if (!sym) continue;
-		if (!sym->st_shndx)
-			if (need_def || (sym->st_info&0xf) == STT_TLS
-			    || ARCH_SYM_REJECT_UND(sym))
-				continue;
-		if (!sym->st_value)
-			if ((sym->st_info&0xf) != STT_TLS)
-				continue;
-		if (!(1<<(sym->st_info&0xf) & OK_TYPES)) continue;
-		if (!(1<<(sym->st_info>>4) & OK_BINDS)) continue;
+static struct symdef find_sym(struct dso* dso, const char* s, int need_def) {
+  uint32_t h = 0, gh, gho, *ght;
+  size_t ghm = 0;
+  struct symdef def = {0};
+  for (; dso; dso = dso->next) {
+    Sym* sym;
+    if (!dso->global)
+      continue;
+    if ((ght = dso->ghashtab)) {
+      if (!ghm) {
+        gh = gnu_hash(s);
+        int maskbits = 8 * sizeof ghm;
+        gho = gh / maskbits;
+        ghm = 1ul << gh % maskbits;
+      }
+      sym = gnu_lookup_filtered(gh, ght, dso, s, gho, ghm);
+    } else {
+      if (!h)
+        h = sysv_hash(s);
+      sym = sysv_lookup(s, h, dso);
+    }
+    if (!sym)
+      continue;
+    if (!sym->st_shndx)
+      if (need_def || (sym->st_info & 0xf) == STT_TLS ||
+          ARCH_SYM_REJECT_UND(sym))
+        continue;
+    if (!sym->st_value)
+      if ((sym->st_info & 0xf) != STT_TLS)
+        continue;
+    if (!(1 << (sym->st_info & 0xf) & OK_TYPES))
+      continue;
+    if (!(1 << (sym->st_info >> 4) & OK_BINDS))
+      continue;
 
-		if (def.sym && sym->st_info>>4 == STB_WEAK) continue;
-		def.sym = sym;
-		def.dso = dso;
-		if (sym->st_info>>4 == STB_GLOBAL) break;
-	}
-	return def;
+    if (def.sym && sym->st_info >> 4 == STB_WEAK)
+      continue;
+    def.sym = sym;
+    def.dso = dso;
+    if (sym->st_info >> 4 == STB_GLOBAL)
+      break;
+  }
+  return def;
 }
 
-__attribute__((__visibility__("hidden")))
-ptrdiff_t __tlsdesc_static(), __tlsdesc_dynamic();
+__attribute__((__visibility__("hidden"))) ptrdiff_t __tlsdesc_static(),
+    __tlsdesc_dynamic();
 
-static void do_relocs(struct dso *dso, size_t *rel, size_t rel_size, size_t stride)
-{
-	unsigned char *base = dso->base;
-	Sym *syms = dso->syms;
-	char *strings = dso->strings;
-	Sym *sym;
-	const char *name;
-	void *ctx;
-	int type;
-	int sym_index;
-	struct symdef def;
-	size_t *reloc_addr;
-	size_t sym_val;
-	size_t tls_val;
-	size_t addend;
-	int skip_relative = 0, reuse_addends = 0, save_slot = 0;
+static void do_relocs(struct dso* dso,
+                      size_t* rel,
+                      size_t rel_size,
+                      size_t stride) {
+  unsigned char* base = dso->base;
+  Sym* syms = dso->syms;
+  char* strings = dso->strings;
+  Sym* sym;
+  const char* name;
+  void* ctx;
+  int type;
+  int sym_index;
+  struct symdef def;
+  size_t* reloc_addr;
+  size_t sym_val;
+  size_t tls_val;
+  size_t addend;
+  int skip_relative = 0, reuse_addends = 0, save_slot = 0;
 
-	if (dso == &ldso) {
-		/* Only ldso's REL table needs addend saving/reuse. */
-		if (rel == apply_addends_to)
-			reuse_addends = 1;
-		skip_relative = 1;
-	}
+  if (dso == &ldso) {
+    /* Only ldso's REL table needs addend saving/reuse. */
+    if (rel == apply_addends_to)
+      reuse_addends = 1;
+    skip_relative = 1;
+  }
 
-	for (; rel_size; rel+=stride, rel_size-=stride*sizeof(size_t)) {
-		if (skip_relative && IS_RELATIVE(rel[1], dso->syms)) continue;
-		type = R_TYPE(rel[1]);
-		if (type == REL_NONE) continue;
-		sym_index = R_SYM(rel[1]);
-		reloc_addr = laddr(dso, rel[0]);
-		if (sym_index) {
-			sym = syms + sym_index;
-			name = strings + sym->st_name;
-			ctx = type==REL_COPY ? head->next : head;
-			def = (sym->st_info&0xf) == STT_SECTION
-				? (struct symdef){ .dso = dso, .sym = sym }
-				: find_sym(ctx, name, type==REL_PLT);
-			if (!def.sym && (sym->st_shndx != SHN_UNDEF
-			    || sym->st_info>>4 != STB_WEAK)) {
-				error("Error relocating %s: %s: symbol not found",
-					dso->name, name);
-				if (runtime) longjmp(*rtld_fail, 1);
-				continue;
-			}
-		} else {
-			sym = 0;
-			def.sym = 0;
-			def.dso = dso;
-		}
+  for (; rel_size; rel += stride, rel_size -= stride * sizeof(size_t)) {
+    if (skip_relative && IS_RELATIVE(rel[1], dso->syms))
+      continue;
+    type = R_TYPE(rel[1]);
+    if (type == REL_NONE)
+      continue;
+    sym_index = R_SYM(rel[1]);
+    reloc_addr = laddr(dso, rel[0]);
+    if (sym_index) {
+      sym = syms + sym_index;
+      name = strings + sym->st_name;
+      ctx = type == REL_COPY ? head->next : head;
+      def = (sym->st_info & 0xf) == STT_SECTION
+                ? (struct symdef){.dso = dso, .sym = sym}
+                : find_sym(ctx, name, type == REL_PLT);
+      if (!def.sym &&
+          (sym->st_shndx != SHN_UNDEF || sym->st_info >> 4 != STB_WEAK)) {
+        error("Error relocating %s: %s: symbol not found", dso->name, name);
+        if (runtime)
+          longjmp(*rtld_fail, 1);
+        continue;
+      }
+    } else {
+      sym = 0;
+      def.sym = 0;
+      def.dso = dso;
+    }
 
-		if (stride > 2) {
-			addend = rel[2];
-		} else if (type==REL_GOT || type==REL_PLT|| type==REL_COPY) {
-			addend = 0;
-		} else if (reuse_addends) {
-			/* Save original addend in stage 2 where the dso
-			 * chain consists of just ldso; otherwise read back
-			 * saved addend since the inline one was clobbered. */
-			if (head==&ldso)
-				saved_addends[save_slot] = *reloc_addr;
-			addend = saved_addends[save_slot++];
-		} else {
-			addend = *reloc_addr;
-		}
+    if (stride > 2) {
+      addend = rel[2];
+    } else if (type == REL_GOT || type == REL_PLT || type == REL_COPY) {
+      addend = 0;
+    } else if (reuse_addends) {
+      /* Save original addend in stage 2 where the dso
+       * chain consists of just ldso; otherwise read back
+       * saved addend since the inline one was clobbered. */
+      if (head == &ldso)
+        saved_addends[save_slot] = *reloc_addr;
+      addend = saved_addends[save_slot++];
+    } else {
+      addend = *reloc_addr;
+    }
 
-		sym_val = def.sym ? (size_t)laddr(def.dso, def.sym->st_value) : 0;
-		tls_val = def.sym ? def.sym->st_value : 0;
+    sym_val = def.sym ? (size_t)laddr(def.dso, def.sym->st_value) : 0;
+    tls_val = def.sym ? def.sym->st_value : 0;
 
-		switch(type) {
-		case REL_NONE:
-			break;
-		case REL_OFFSET:
-			addend -= (size_t)reloc_addr;
-		case REL_SYMBOLIC:
-		case REL_GOT:
-		case REL_PLT:
-			*reloc_addr = sym_val + addend;
-			break;
-		case REL_RELATIVE:
-			*reloc_addr = (size_t)base + addend;
-			break;
-		case REL_SYM_OR_REL:
-			if (sym) *reloc_addr = sym_val + addend;
-			else *reloc_addr = (size_t)base + addend;
-			break;
-		case REL_COPY:
-			memcpy(reloc_addr, (void *)sym_val, sym->st_size);
-			break;
-		case REL_OFFSET32:
-			*(uint32_t *)reloc_addr = sym_val + addend
-				- (size_t)reloc_addr;
-			break;
-		case REL_FUNCDESC:
-			*reloc_addr = def.sym ? (size_t)(def.dso->funcdescs
-				+ (def.sym - def.dso->syms)) : 0;
-			break;
-		case REL_FUNCDESC_VAL:
-			if ((sym->st_info&0xf) == STT_SECTION) *reloc_addr += sym_val;
-			else *reloc_addr = sym_val;
-			reloc_addr[1] = def.sym ? (size_t)def.dso->got : 0;
-			break;
-		case REL_DTPMOD:
-			*reloc_addr = def.dso->tls_id;
-			break;
-		case REL_DTPOFF:
-			*reloc_addr = tls_val + addend - DTP_OFFSET;
-			break;
+    switch (type) {
+      case REL_NONE:
+        break;
+      case REL_OFFSET:
+        addend -= (size_t)reloc_addr;
+      case REL_SYMBOLIC:
+      case REL_GOT:
+      case REL_PLT:
+        *reloc_addr = sym_val + addend;
+        break;
+      case REL_RELATIVE:
+        *reloc_addr = (size_t)base + addend;
+        break;
+      case REL_SYM_OR_REL:
+        if (sym)
+          *reloc_addr = sym_val + addend;
+        else
+          *reloc_addr = (size_t)base + addend;
+        break;
+      case REL_COPY:
+        memcpy(reloc_addr, (void*)sym_val, sym->st_size);
+        break;
+      case REL_OFFSET32:
+        *(uint32_t*)reloc_addr = sym_val + addend - (size_t)reloc_addr;
+        break;
+      case REL_FUNCDESC:
+        *reloc_addr =
+            def.sym ? (size_t)(def.dso->funcdescs + (def.sym - def.dso->syms))
+                    : 0;
+        break;
+      case REL_FUNCDESC_VAL:
+        if ((sym->st_info & 0xf) == STT_SECTION)
+          *reloc_addr += sym_val;
+        else
+          *reloc_addr = sym_val;
+        reloc_addr[1] = def.sym ? (size_t)def.dso->got : 0;
+        break;
+      case REL_DTPMOD:
+        *reloc_addr = def.dso->tls_id;
+        break;
+      case REL_DTPOFF:
+        *reloc_addr = tls_val + addend - DTP_OFFSET;
+        break;
 #ifdef TLS_ABOVE_TP
-		case REL_TPOFF:
-			*reloc_addr = tls_val + def.dso->tls.offset + TPOFF_K + addend;
-			break;
+      case REL_TPOFF:
+        *reloc_addr = tls_val + def.dso->tls.offset + TPOFF_K + addend;
+        break;
 #else
-		case REL_TPOFF:
-			*reloc_addr = tls_val - def.dso->tls.offset + addend;
-			break;
-		case REL_TPOFF_NEG:
-			*reloc_addr = def.dso->tls.offset - tls_val + addend;
-			break;
+      case REL_TPOFF:
+        *reloc_addr = tls_val - def.dso->tls.offset + addend;
+        break;
+      case REL_TPOFF_NEG:
+        *reloc_addr = def.dso->tls.offset - tls_val + addend;
+        break;
 #endif
-		case REL_TLSDESC:
-			if (stride<3) addend = reloc_addr[1];
-			if (runtime && def.dso->tls_id >= static_tls_cnt) {
-				struct td_index *new = malloc(sizeof *new);
-				if (!new) {
-					error(
-					"Error relocating %s: cannot allocate TLSDESC for %s",
-					dso->name, sym ? name : "(local)" );
-					longjmp(*rtld_fail, 1);
-				}
-				new->next = dso->td_index;
-				dso->td_index = new;
-				new->args[0] = def.dso->tls_id;
-				new->args[1] = tls_val + addend;
-				reloc_addr[0] = (size_t)__tlsdesc_dynamic;
-				reloc_addr[1] = (size_t)new;
-			} else {
-				reloc_addr[0] = (size_t)__tlsdesc_static;
+      case REL_TLSDESC:
+        if (stride < 3)
+          addend = reloc_addr[1];
+        if (runtime && def.dso->tls_id >= static_tls_cnt) {
+          struct td_index* new = malloc(sizeof *new);
+          if (!new) {
+            error("Error relocating %s: cannot allocate TLSDESC for %s",
+                  dso->name, sym ? name : "(local)");
+            longjmp(*rtld_fail, 1);
+          }
+          new->next = dso->td_index;
+          dso->td_index = new;
+          new->args[0] = def.dso->tls_id;
+          new->args[1] = tls_val + addend;
+          reloc_addr[0] = (size_t)__tlsdesc_dynamic;
+          reloc_addr[1] = (size_t) new;
+        } else {
+          reloc_addr[0] = (size_t)__tlsdesc_static;
 #ifdef TLS_ABOVE_TP
-				reloc_addr[1] = tls_val + def.dso->tls.offset
-					+ TPOFF_K + addend;
+          reloc_addr[1] = tls_val + def.dso->tls.offset + TPOFF_K + addend;
 #else
-				reloc_addr[1] = tls_val - def.dso->tls.offset
-					+ addend;
+          reloc_addr[1] = tls_val - def.dso->tls.offset + addend;
 #endif
-			}
-			break;
-		default:
-			error("Error relocating %s: unsupported relocation type %d",
-				dso->name, type);
-			if (runtime) longjmp(*rtld_fail, 1);
-			continue;
-		}
-	}
+        }
+        break;
+      default:
+        error("Error relocating %s: unsupported relocation type %d", dso->name,
+              type);
+        if (runtime)
+          longjmp(*rtld_fail, 1);
+        continue;
+    }
+  }
 }
 
 /* A huge hack: to make up for the wastefulness of shared libraries
@@ -459,930 +484,977 @@
  * and "donate" them to the heap by setting up minimal malloc
  * structures and then freeing them. */
 
-static void reclaim(struct dso *dso, size_t start, size_t end)
-{
-	size_t *a, *z;
-	if (start >= dso->relro_start && start < dso->relro_end) start = dso->relro_end;
-	if (end   >= dso->relro_start && end   < dso->relro_end) end = dso->relro_start;
-	start = start + 6*sizeof(size_t)-1 & -4*sizeof(size_t);
-	end = (end & -4*sizeof(size_t)) - 2*sizeof(size_t);
-	if (start>end || end-start < 4*sizeof(size_t)) return;
-	a = laddr(dso, start);
-	z = laddr(dso, end);
-	a[-2] = 1;
-	a[-1] = z[0] = end-start + 2*sizeof(size_t) | 1;
-	z[1] = 1;
-	free(a);
+static void reclaim(struct dso* dso, size_t start, size_t end) {
+  size_t *a, *z;
+  if (start >= dso->relro_start && start < dso->relro_end)
+    start = dso->relro_end;
+  if (end >= dso->relro_start && end < dso->relro_end)
+    end = dso->relro_start;
+  start = start + 6 * sizeof(size_t) - 1 & -4 * sizeof(size_t);
+  end = (end & -4 * sizeof(size_t)) - 2 * sizeof(size_t);
+  if (start > end || end - start < 4 * sizeof(size_t))
+    return;
+  a = laddr(dso, start);
+  z = laddr(dso, end);
+  a[-2] = 1;
+  a[-1] = z[0] = end - start + 2 * sizeof(size_t) | 1;
+  z[1] = 1;
+  free(a);
 }
 
-static void reclaim_gaps(struct dso *dso)
-{
-	Phdr *ph = dso->phdr;
-	size_t phcnt = dso->phnum;
+static void reclaim_gaps(struct dso* dso) {
+  Phdr* ph = dso->phdr;
+  size_t phcnt = dso->phnum;
 
-	if (DL_FDPIC) return; // FIXME
-	for (; phcnt--; ph=(void *)((char *)ph+dso->phentsize)) {
-		if (ph->p_type!=PT_LOAD) continue;
-		if ((ph->p_flags&(PF_R|PF_W))!=(PF_R|PF_W)) continue;
-		reclaim(dso, ph->p_vaddr & -PAGE_SIZE, ph->p_vaddr);
-		reclaim(dso, ph->p_vaddr+ph->p_memsz,
-			ph->p_vaddr+ph->p_memsz+PAGE_SIZE-1 & -PAGE_SIZE);
-	}
+  if (DL_FDPIC)
+    return;  // FIXME
+  for (; phcnt--; ph = (void*)((char*)ph + dso->phentsize)) {
+    if (ph->p_type != PT_LOAD)
+      continue;
+    if ((ph->p_flags & (PF_R | PF_W)) != (PF_R | PF_W))
+      continue;
+    reclaim(dso, ph->p_vaddr & -PAGE_SIZE, ph->p_vaddr);
+    reclaim(dso, ph->p_vaddr + ph->p_memsz,
+            ph->p_vaddr + ph->p_memsz + PAGE_SIZE - 1 & -PAGE_SIZE);
+  }
 }
 
-static void *mmap_fixed(void *p, size_t n, int prot, int flags, int fd, off_t off)
-{
-	static int no_map_fixed;
-	char *q;
-	if (!no_map_fixed) {
-		q = mmap(p, n, prot, flags|MAP_FIXED, fd, off);
-		if (!DL_NOMMU_SUPPORT || q != MAP_FAILED || errno != EINVAL)
-			return q;
-		no_map_fixed = 1;
-	}
-	/* Fallbacks for MAP_FIXED failure on NOMMU kernels. */
-	if (flags & MAP_ANONYMOUS) {
-		memset(p, 0, n);
-		return p;
-	}
-	ssize_t r;
-	if (lseek(fd, off, SEEK_SET) < 0) return MAP_FAILED;
-	for (q=p; n; q+=r, off+=r, n-=r) {
-		r = read(fd, q, n);
-		if (r < 0 && errno != EINTR) return MAP_FAILED;
-		if (!r) {
-			memset(q, 0, n);
-			break;
-		}
-	}
-	return p;
+static void* mmap_fixed(void* p,
+                        size_t n,
+                        int prot,
+                        int flags,
+                        int fd,
+                        off_t off) {
+  static int no_map_fixed;
+  char* q;
+  if (!no_map_fixed) {
+    q = mmap(p, n, prot, flags | MAP_FIXED, fd, off);
+    if (!DL_NOMMU_SUPPORT || q != MAP_FAILED || errno != EINVAL)
+      return q;
+    no_map_fixed = 1;
+  }
+  /* Fallbacks for MAP_FIXED failure on NOMMU kernels. */
+  if (flags & MAP_ANONYMOUS) {
+    memset(p, 0, n);
+    return p;
+  }
+  ssize_t r;
+  if (lseek(fd, off, SEEK_SET) < 0)
+    return MAP_FAILED;
+  for (q = p; n; q += r, off += r, n -= r) {
+    r = read(fd, q, n);
+    if (r < 0 && errno != EINTR)
+      return MAP_FAILED;
+    if (!r) {
+      memset(q, 0, n);
+      break;
+    }
+  }
+  return p;
 }
 
-static void unmap_library(struct dso *dso)
-{
-	if (dso->loadmap) {
-		size_t i;
-		for (i=0; i<dso->loadmap->nsegs; i++) {
-			if (!dso->loadmap->segs[i].p_memsz)
-				continue;
-			munmap((void *)dso->loadmap->segs[i].addr,
-				dso->loadmap->segs[i].p_memsz);
-		}
-		free(dso->loadmap);
-	} else if (dso->map && dso->map_len) {
-		munmap(dso->map, dso->map_len);
-	}
+static void unmap_library(struct dso* dso) {
+  if (dso->loadmap) {
+    size_t i;
+    for (i = 0; i < dso->loadmap->nsegs; i++) {
+      if (!dso->loadmap->segs[i].p_memsz)
+        continue;
+      munmap((void*)dso->loadmap->segs[i].addr, dso->loadmap->segs[i].p_memsz);
+    }
+    free(dso->loadmap);
+  } else if (dso->map && dso->map_len) {
+    munmap(dso->map, dso->map_len);
+  }
 }
 
-static void *map_library(int fd, struct dso *dso)
-{
-	Ehdr buf[(896+sizeof(Ehdr))/sizeof(Ehdr)];
-	void *allocated_buf=0;
-	size_t phsize;
-	size_t addr_min=SIZE_MAX, addr_max=0, map_len;
-	size_t this_min, this_max;
-	size_t nsegs = 0;
-	off_t off_start;
-	Ehdr *eh;
-	Phdr *ph, *ph0;
-	unsigned prot;
-	unsigned char *map=MAP_FAILED, *base;
-	size_t dyn=0;
-	size_t tls_image=0;
-	size_t i;
+static void* map_library(int fd, struct dso* dso) {
+  Ehdr buf[(896 + sizeof(Ehdr)) / sizeof(Ehdr)];
+  void* allocated_buf = 0;
+  size_t phsize;
+  size_t addr_min = SIZE_MAX, addr_max = 0, map_len;
+  size_t this_min, this_max;
+  size_t nsegs = 0;
+  off_t off_start;
+  Ehdr* eh;
+  Phdr *ph, *ph0;
+  unsigned prot;
+  unsigned char *map = MAP_FAILED, *base;
+  size_t dyn = 0;
+  size_t tls_image = 0;
+  size_t i;
 
-	ssize_t l = read(fd, buf, sizeof buf);
-	eh = buf;
-	if (l<0) return 0;
-	if (l<sizeof *eh || (eh->e_type != ET_DYN && eh->e_type != ET_EXEC))
-		goto noexec;
-	phsize = eh->e_phentsize * eh->e_phnum;
-	if (phsize > sizeof buf - sizeof *eh) {
-		allocated_buf = malloc(phsize);
-		if (!allocated_buf) return 0;
-		l = pread(fd, allocated_buf, phsize, eh->e_phoff);
-		if (l < 0) goto error;
-		if (l != phsize) goto noexec;
-		ph = ph0 = allocated_buf;
-	} else if (eh->e_phoff + phsize > l) {
-		l = pread(fd, buf+1, phsize, eh->e_phoff);
-		if (l < 0) goto error;
-		if (l != phsize) goto noexec;
-		ph = ph0 = (void *)(buf + 1);
-	} else {
-		ph = ph0 = (void *)((char *)buf + eh->e_phoff);
-	}
-	for (i=eh->e_phnum; i; i--, ph=(void *)((char *)ph+eh->e_phentsize)) {
-		if (ph->p_type == PT_DYNAMIC) {
-			dyn = ph->p_vaddr;
-		} else if (ph->p_type == PT_TLS) {
-			tls_image = ph->p_vaddr;
-			dso->tls.align = ph->p_align;
-			dso->tls.len = ph->p_filesz;
-			dso->tls.size = ph->p_memsz;
-		} else if (ph->p_type == PT_GNU_RELRO) {
-			dso->relro_start = ph->p_vaddr & -PAGE_SIZE;
-			dso->relro_end = (ph->p_vaddr + ph->p_memsz) & -PAGE_SIZE;
-		}
-		if (ph->p_type != PT_LOAD) continue;
-		nsegs++;
-		if (ph->p_vaddr < addr_min) {
-			addr_min = ph->p_vaddr;
-			off_start = ph->p_offset;
-			prot = (((ph->p_flags&PF_R) ? PROT_READ : 0) |
-				((ph->p_flags&PF_W) ? PROT_WRITE: 0) |
-				((ph->p_flags&PF_X) ? PROT_EXEC : 0));
-		}
-		if (ph->p_vaddr+ph->p_memsz > addr_max) {
-			addr_max = ph->p_vaddr+ph->p_memsz;
-		}
-	}
-	if (!dyn) goto noexec;
-	if (DL_FDPIC && !(eh->e_flags & FDPIC_CONSTDISP_FLAG)) {
-		dso->loadmap = calloc(1, sizeof *dso->loadmap
-			+ nsegs * sizeof *dso->loadmap->segs);
-		if (!dso->loadmap) goto error;
-		dso->loadmap->nsegs = nsegs;
-		for (ph=ph0, i=0; i<nsegs; ph=(void *)((char *)ph+eh->e_phentsize)) {
-			if (ph->p_type != PT_LOAD) continue;
-			prot = (((ph->p_flags&PF_R) ? PROT_READ : 0) |
-				((ph->p_flags&PF_W) ? PROT_WRITE: 0) |
-				((ph->p_flags&PF_X) ? PROT_EXEC : 0));
-			map = mmap(0, ph->p_memsz + (ph->p_vaddr & PAGE_SIZE-1),
-				prot, MAP_PRIVATE,
-				fd, ph->p_offset & -PAGE_SIZE);
-			if (map == MAP_FAILED) {
-				unmap_library(dso);
-				goto error;
-			}
-			dso->loadmap->segs[i].addr = (size_t)map +
-				(ph->p_vaddr & PAGE_SIZE-1);
-			dso->loadmap->segs[i].p_vaddr = ph->p_vaddr;
-			dso->loadmap->segs[i].p_memsz = ph->p_memsz;
-			i++;
-			if (prot & PROT_WRITE) {
-				size_t brk = (ph->p_vaddr & PAGE_SIZE-1)
-					+ ph->p_filesz;
-				size_t pgbrk = brk + PAGE_SIZE-1 & -PAGE_SIZE;
-				size_t pgend = brk + ph->p_memsz - ph->p_filesz
-					+ PAGE_SIZE-1 & -PAGE_SIZE;
-				if (pgend > pgbrk && mmap_fixed(map+pgbrk,
-					pgend-pgbrk, prot,
-					MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS,
-					-1, off_start) == MAP_FAILED)
-					goto error;
-				memset(map + brk, 0, pgbrk-brk);
-			}
-		}
-		map = (void *)dso->loadmap->segs[0].addr;
-		map_len = 0;
-		goto done_mapping;
-	}
-	addr_max += PAGE_SIZE-1;
-	addr_max &= -PAGE_SIZE;
-	addr_min &= -PAGE_SIZE;
-	off_start &= -PAGE_SIZE;
-	map_len = addr_max - addr_min + off_start;
-	/* The first time, we map too much, possibly even more than
-	 * the length of the file. This is okay because we will not
-	 * use the invalid part; we just need to reserve the right
-	 * amount of virtual address space to map over later. */
-	map = DL_NOMMU_SUPPORT
-		? mmap((void *)addr_min, map_len, PROT_READ|PROT_WRITE|PROT_EXEC,
-			MAP_PRIVATE|MAP_ANONYMOUS, -1, 0)
-		: mmap((void *)addr_min, map_len, prot,
-			MAP_PRIVATE, fd, off_start);
-	if (map==MAP_FAILED) goto error;
-	dso->map = map;
-	dso->map_len = map_len;
-	/* If the loaded file is not relocatable and the requested address is
-	 * not available, then the load operation must fail. */
-	if (eh->e_type != ET_DYN && addr_min && map!=(void *)addr_min) {
-		errno = EBUSY;
-		goto error;
-	}
-	base = map - addr_min;
-	dso->phdr = 0;
-	dso->phnum = 0;
-	for (ph=ph0, i=eh->e_phnum; i; i--, ph=(void *)((char *)ph+eh->e_phentsize)) {
-		if (ph->p_type != PT_LOAD) continue;
-		/* Check if the programs headers are in this load segment, and
-		 * if so, record the address for use by dl_iterate_phdr. */
-		if (!dso->phdr && eh->e_phoff >= ph->p_offset
-		    && eh->e_phoff+phsize <= ph->p_offset+ph->p_filesz) {
-			dso->phdr = (void *)(base + ph->p_vaddr
-				+ (eh->e_phoff-ph->p_offset));
-			dso->phnum = eh->e_phnum;
-			dso->phentsize = eh->e_phentsize;
-		}
-		/* Reuse the existing mapping for the lowest-address LOAD */
-		if ((ph->p_vaddr & -PAGE_SIZE) == addr_min && !DL_NOMMU_SUPPORT)
-			continue;
-		this_min = ph->p_vaddr & -PAGE_SIZE;
-		this_max = ph->p_vaddr+ph->p_memsz+PAGE_SIZE-1 & -PAGE_SIZE;
-		off_start = ph->p_offset & -PAGE_SIZE;
-		prot = (((ph->p_flags&PF_R) ? PROT_READ : 0) |
-			((ph->p_flags&PF_W) ? PROT_WRITE: 0) |
-			((ph->p_flags&PF_X) ? PROT_EXEC : 0));
-		if (mmap_fixed(base+this_min, this_max-this_min, prot, MAP_PRIVATE|MAP_FIXED, fd, off_start) == MAP_FAILED)
-			goto error;
-		if (ph->p_memsz > ph->p_filesz) {
-			size_t brk = (size_t)base+ph->p_vaddr+ph->p_filesz;
-			size_t pgbrk = brk+PAGE_SIZE-1 & -PAGE_SIZE;
-			memset((void *)brk, 0, pgbrk-brk & PAGE_SIZE-1);
-			if (pgbrk-(size_t)base < this_max && mmap_fixed((void *)pgbrk, (size_t)base+this_max-pgbrk, prot, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) == MAP_FAILED)
-				goto error;
-		}
-	}
-	for (i=0; ((size_t *)(base+dyn))[i]; i+=2)
-		if (((size_t *)(base+dyn))[i]==DT_TEXTREL) {
-			if (mprotect(map, map_len, PROT_READ|PROT_WRITE|PROT_EXEC)
-			    && errno != ENOSYS)
-				goto error;
-			break;
-		}
+  ssize_t l = read(fd, buf, sizeof buf);
+  eh = buf;
+  if (l < 0)
+    return 0;
+  if (l < sizeof *eh || (eh->e_type != ET_DYN && eh->e_type != ET_EXEC))
+    goto noexec;
+  phsize = eh->e_phentsize * eh->e_phnum;
+  if (phsize > sizeof buf - sizeof *eh) {
+    allocated_buf = malloc(phsize);
+    if (!allocated_buf)
+      return 0;
+    l = pread(fd, allocated_buf, phsize, eh->e_phoff);
+    if (l < 0)
+      goto error;
+    if (l != phsize)
+      goto noexec;
+    ph = ph0 = allocated_buf;
+  } else if (eh->e_phoff + phsize > l) {
+    l = pread(fd, buf + 1, phsize, eh->e_phoff);
+    if (l < 0)
+      goto error;
+    if (l != phsize)
+      goto noexec;
+    ph = ph0 = (void*)(buf + 1);
+  } else {
+    ph = ph0 = (void*)((char*)buf + eh->e_phoff);
+  }
+  for (i = eh->e_phnum; i; i--, ph = (void*)((char*)ph + eh->e_phentsize)) {
+    if (ph->p_type == PT_DYNAMIC) {
+      dyn = ph->p_vaddr;
+    } else if (ph->p_type == PT_TLS) {
+      tls_image = ph->p_vaddr;
+      dso->tls.align = ph->p_align;
+      dso->tls.len = ph->p_filesz;
+      dso->tls.size = ph->p_memsz;
+    } else if (ph->p_type == PT_GNU_RELRO) {
+      dso->relro_start = ph->p_vaddr & -PAGE_SIZE;
+      dso->relro_end = (ph->p_vaddr + ph->p_memsz) & -PAGE_SIZE;
+    }
+    if (ph->p_type != PT_LOAD)
+      continue;
+    nsegs++;
+    if (ph->p_vaddr < addr_min) {
+      addr_min = ph->p_vaddr;
+      off_start = ph->p_offset;
+      prot = (((ph->p_flags & PF_R) ? PROT_READ : 0) |
+              ((ph->p_flags & PF_W) ? PROT_WRITE : 0) |
+              ((ph->p_flags & PF_X) ? PROT_EXEC : 0));
+    }
+    if (ph->p_vaddr + ph->p_memsz > addr_max) {
+      addr_max = ph->p_vaddr + ph->p_memsz;
+    }
+  }
+  if (!dyn)
+    goto noexec;
+  if (DL_FDPIC && !(eh->e_flags & FDPIC_CONSTDISP_FLAG)) {
+    dso->loadmap =
+        calloc(1, sizeof *dso->loadmap + nsegs * sizeof *dso->loadmap->segs);
+    if (!dso->loadmap)
+      goto error;
+    dso->loadmap->nsegs = nsegs;
+    for (ph = ph0, i = 0; i < nsegs;
+         ph = (void*)((char*)ph + eh->e_phentsize)) {
+      if (ph->p_type != PT_LOAD)
+        continue;
+      prot = (((ph->p_flags & PF_R) ? PROT_READ : 0) |
+              ((ph->p_flags & PF_W) ? PROT_WRITE : 0) |
+              ((ph->p_flags & PF_X) ? PROT_EXEC : 0));
+      map = mmap(0, ph->p_memsz + (ph->p_vaddr & PAGE_SIZE - 1), prot,
+                 MAP_PRIVATE, fd, ph->p_offset & -PAGE_SIZE);
+      if (map == MAP_FAILED) {
+        unmap_library(dso);
+        goto error;
+      }
+      dso->loadmap->segs[i].addr = (size_t)map + (ph->p_vaddr & PAGE_SIZE - 1);
+      dso->loadmap->segs[i].p_vaddr = ph->p_vaddr;
+      dso->loadmap->segs[i].p_memsz = ph->p_memsz;
+      i++;
+      if (prot & PROT_WRITE) {
+        size_t brk = (ph->p_vaddr & PAGE_SIZE - 1) + ph->p_filesz;
+        size_t pgbrk = brk + PAGE_SIZE - 1 & -PAGE_SIZE;
+        size_t pgend =
+            brk + ph->p_memsz - ph->p_filesz + PAGE_SIZE - 1 & -PAGE_SIZE;
+        if (pgend > pgbrk &&
+            mmap_fixed(map + pgbrk, pgend - pgbrk, prot,
+                       MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS, -1,
+                       off_start) == MAP_FAILED)
+          goto error;
+        memset(map + brk, 0, pgbrk - brk);
+      }
+    }
+    map = (void*)dso->loadmap->segs[0].addr;
+    map_len = 0;
+    goto done_mapping;
+  }
+  addr_max += PAGE_SIZE - 1;
+  addr_max &= -PAGE_SIZE;
+  addr_min &= -PAGE_SIZE;
+  off_start &= -PAGE_SIZE;
+  map_len = addr_max - addr_min + off_start;
+  /* The first time, we map too much, possibly even more than
+   * the length of the file. This is okay because we will not
+   * use the invalid part; we just need to reserve the right
+   * amount of virtual address space to map over later. */
+  map = DL_NOMMU_SUPPORT
+            ? mmap((void*)addr_min, map_len, PROT_READ | PROT_WRITE | PROT_EXEC,
+                   MAP_PRIVATE | MAP_ANONYMOUS, -1, 0)
+            : mmap((void*)addr_min, map_len, prot, MAP_PRIVATE, fd, off_start);
+  if (map == MAP_FAILED)
+    goto error;
+  dso->map = map;
+  dso->map_len = map_len;
+  /* If the loaded file is not relocatable and the requested address is
+   * not available, then the load operation must fail. */
+  if (eh->e_type != ET_DYN && addr_min && map != (void*)addr_min) {
+    errno = EBUSY;
+    goto error;
+  }
+  base = map - addr_min;
+  dso->phdr = 0;
+  dso->phnum = 0;
+  for (ph = ph0, i = eh->e_phnum; i;
+       i--, ph = (void*)((char*)ph + eh->e_phentsize)) {
+    if (ph->p_type != PT_LOAD)
+      continue;
+    /* Check if the programs headers are in this load segment, and
+     * if so, record the address for use by dl_iterate_phdr. */
+    if (!dso->phdr && eh->e_phoff >= ph->p_offset &&
+        eh->e_phoff + phsize <= ph->p_offset + ph->p_filesz) {
+      dso->phdr = (void*)(base + ph->p_vaddr + (eh->e_phoff - ph->p_offset));
+      dso->phnum = eh->e_phnum;
+      dso->phentsize = eh->e_phentsize;
+    }
+    /* Reuse the existing mapping for the lowest-address LOAD */
+    if ((ph->p_vaddr & -PAGE_SIZE) == addr_min && !DL_NOMMU_SUPPORT)
+      continue;
+    this_min = ph->p_vaddr & -PAGE_SIZE;
+    this_max = ph->p_vaddr + ph->p_memsz + PAGE_SIZE - 1 & -PAGE_SIZE;
+    off_start = ph->p_offset & -PAGE_SIZE;
+    prot = (((ph->p_flags & PF_R) ? PROT_READ : 0) |
+            ((ph->p_flags & PF_W) ? PROT_WRITE : 0) |
+            ((ph->p_flags & PF_X) ? PROT_EXEC : 0));
+    if (mmap_fixed(base + this_min, this_max - this_min, prot,
+                   MAP_PRIVATE | MAP_FIXED, fd, off_start) == MAP_FAILED)
+      goto error;
+    if (ph->p_memsz > ph->p_filesz) {
+      size_t brk = (size_t)base + ph->p_vaddr + ph->p_filesz;
+      size_t pgbrk = brk + PAGE_SIZE - 1 & -PAGE_SIZE;
+      memset((void*)brk, 0, pgbrk - brk & PAGE_SIZE - 1);
+      if (pgbrk - (size_t)base < this_max &&
+          mmap_fixed((void*)pgbrk, (size_t)base + this_max - pgbrk, prot,
+                     MAP_PRIVATE | MAP_FIXED | MAP_ANONYMOUS, -1,
+                     0) == MAP_FAILED)
+        goto error;
+    }
+  }
+  for (i = 0; ((size_t*)(base + dyn))[i]; i += 2)
+    if (((size_t*)(base + dyn))[i] == DT_TEXTREL) {
+      if (mprotect(map, map_len, PROT_READ | PROT_WRITE | PROT_EXEC) &&
+          errno != ENOSYS)
+        goto error;
+      break;
+    }
 done_mapping:
-	dso->base = base;
-	dso->dynv = laddr(dso, dyn);
-	if (dso->tls.size) dso->tls.image = laddr(dso, tls_image);
-	if (!runtime) reclaim_gaps(dso);
-	free(allocated_buf);
-	return map;
+  dso->base = base;
+  dso->dynv = laddr(dso, dyn);
+  if (dso->tls.size)
+    dso->tls.image = laddr(dso, tls_image);
+  if (!runtime)
+    reclaim_gaps(dso);
+  free(allocated_buf);
+  return map;
 noexec:
-	errno = ENOEXEC;
+  errno = ENOEXEC;
 error:
-	if (map!=MAP_FAILED) unmap_library(dso);
-	free(allocated_buf);
-	return 0;
+  if (map != MAP_FAILED)
+    unmap_library(dso);
+  free(allocated_buf);
+  return 0;
 }
 
-static int path_open(const char *name, const char *s, char *buf, size_t buf_size)
-{
-	size_t l;
-	int fd;
-	for (;;) {
-		s += strspn(s, ":\n");
-		l = strcspn(s, ":\n");
-		if (l-1 >= INT_MAX) return -1;
-		if (snprintf(buf, buf_size, "%.*s/%s", (int)l, s, name) < buf_size) {
-			if ((fd = open(buf, O_RDONLY|O_CLOEXEC))>=0) return fd;
-			switch (errno) {
-			case ENOENT:
-			case ENOTDIR:
-			case EACCES:
-			case ENAMETOOLONG:
-				break;
-			default:
-				/* Any negative value but -1 will inhibit
-				 * futher path search. */
-				return -2;
-			}
-		}
-		s += l;
-	}
+static int path_open(const char* name,
+                     const char* s,
+                     char* buf,
+                     size_t buf_size) {
+  size_t l;
+  int fd;
+  for (;;) {
+    s += strspn(s, ":\n");
+    l = strcspn(s, ":\n");
+    if (l - 1 >= INT_MAX)
+      return -1;
+    if (snprintf(buf, buf_size, "%.*s/%s", (int)l, s, name) < buf_size) {
+      if ((fd = open(buf, O_RDONLY | O_CLOEXEC)) >= 0)
+        return fd;
+      switch (errno) {
+        case ENOENT:
+        case ENOTDIR:
+        case EACCES:
+        case ENAMETOOLONG:
+          break;
+        default:
+          /* Any negative value but -1 will inhibit
+           * futher path search. */
+          return -2;
+      }
+    }
+    s += l;
+  }
 }
 
-static int fixup_rpath(struct dso *p, char *buf, size_t buf_size)
-{
-	size_t n, l;
-	const char *s, *t, *origin;
-	char *d;
-	if (p->rpath || !p->rpath_orig) return 0;
-	if (!strchr(p->rpath_orig, '$')) {
-		p->rpath = p->rpath_orig;
-		return 0;
-	}
-	n = 0;
-	s = p->rpath_orig;
-	while ((t=strchr(s, '$'))) {
-		if (strncmp(t, "$ORIGIN", 7) && strncmp(t, "${ORIGIN}", 9))
-			return 0;
-		s = t+1;
-		n++;
-	}
-	if (n > SSIZE_MAX/PATH_MAX) return 0;
+static int fixup_rpath(struct dso* p, char* buf, size_t buf_size) {
+  size_t n, l;
+  const char *s, *t, *origin;
+  char* d;
+  if (p->rpath || !p->rpath_orig)
+    return 0;
+  if (!strchr(p->rpath_orig, '$')) {
+    p->rpath = p->rpath_orig;
+    return 0;
+  }
+  n = 0;
+  s = p->rpath_orig;
+  while ((t = strchr(s, '$'))) {
+    if (strncmp(t, "$ORIGIN", 7) && strncmp(t, "${ORIGIN}", 9))
+      return 0;
+    s = t + 1;
+    n++;
+  }
+  if (n > SSIZE_MAX / PATH_MAX)
+    return 0;
 
-	if (p->kernel_mapped) {
-		/* $ORIGIN searches cannot be performed for the main program
-		 * when it is suid/sgid/AT_SECURE. This is because the
-		 * pathname is under the control of the caller of execve.
-		 * For libraries, however, $ORIGIN can be processed safely
-		 * since the library's pathname came from a trusted source
-		 * (either system paths or a call to dlopen). */
-		if (libc.secure)
-			return 0;
-		l = readlink("/proc/self/exe", buf, buf_size);
-		if (l == -1) switch (errno) {
-		case ENOENT:
-		case ENOTDIR:
-		case EACCES:
-			break;
-		default:
-			return -1;
-		}
-		if (l >= buf_size)
-			return 0;
-		buf[l] = 0;
-		origin = buf;
-	} else {
-		origin = p->name;
-	}
-	t = strrchr(origin, '/');
-	l = t ? t-origin : 0;
-	p->rpath = malloc(strlen(p->rpath_orig) + n*l + 1);
-	if (!p->rpath) return -1;
+  if (p->kernel_mapped) {
+    /* $ORIGIN searches cannot be performed for the main program
+     * when it is suid/sgid/AT_SECURE. This is because the
+     * pathname is under the control of the caller of execve.
+     * For libraries, however, $ORIGIN can be processed safely
+     * since the library's pathname came from a trusted source
+     * (either system paths or a call to dlopen). */
+    if (libc.secure)
+      return 0;
+    l = readlink("/proc/self/exe", buf, buf_size);
+    if (l == -1)
+      switch (errno) {
+        case ENOENT:
+        case ENOTDIR:
+        case EACCES:
+          break;
+        default:
+          return -1;
+      }
+    if (l >= buf_size)
+      return 0;
+    buf[l] = 0;
+    origin = buf;
+  } else {
+    origin = p->name;
+  }
+  t = strrchr(origin, '/');
+  l = t ? t - origin : 0;
+  p->rpath = malloc(strlen(p->rpath_orig) + n * l + 1);
+  if (!p->rpath)
+    return -1;
 
-	d = p->rpath;
-	s = p->rpath_orig;
-	while ((t=strchr(s, '$'))) {
-		memcpy(d, s, t-s);
-		d += t-s;
-		memcpy(d, origin, l);
-		d += l;
-		/* It was determined previously that the '$' is followed
-		 * either by "ORIGIN" or "{ORIGIN}". */
-		s = t + 7 + 2*(t[1]=='{');
-	}
-	strcpy(d, s);
-	return 0;
+  d = p->rpath;
+  s = p->rpath_orig;
+  while ((t = strchr(s, '$'))) {
+    memcpy(d, s, t - s);
+    d += t - s;
+    memcpy(d, origin, l);
+    d += l;
+    /* It was determined previously that the '$' is followed
+     * either by "ORIGIN" or "{ORIGIN}". */
+    s = t + 7 + 2 * (t[1] == '{');
+  }
+  strcpy(d, s);
+  return 0;
 }
 
-static void decode_dyn(struct dso *p)
-{
-	size_t dyn[DYN_CNT];
-	decode_vec(p->dynv, dyn, DYN_CNT);
-	p->syms = laddr(p, dyn[DT_SYMTAB]);
-	p->strings = laddr(p, dyn[DT_STRTAB]);
-	if (dyn[0]&(1<<DT_HASH))
-		p->hashtab = laddr(p, dyn[DT_HASH]);
-	if (dyn[0]&(1<<DT_RPATH))
-		p->rpath_orig = p->strings + dyn[DT_RPATH];
-	if (dyn[0]&(1<<DT_RUNPATH))
-		p->rpath_orig = p->strings + dyn[DT_RUNPATH];
-	if (dyn[0]&(1<<DT_PLTGOT))
-		p->got = laddr(p, dyn[DT_PLTGOT]);
-	if (search_vec(p->dynv, dyn, DT_GNU_HASH))
-		p->ghashtab = laddr(p, *dyn);
-	if (search_vec(p->dynv, dyn, DT_VERSYM))
-		p->versym = laddr(p, *dyn);
+static void decode_dyn(struct dso* p) {
+  size_t dyn[DYN_CNT];
+  decode_vec(p->dynv, dyn, DYN_CNT);
+  p->syms = laddr(p, dyn[DT_SYMTAB]);
+  p->strings = laddr(p, dyn[DT_STRTAB]);
+  if (dyn[0] & (1 << DT_HASH))
+    p->hashtab = laddr(p, dyn[DT_HASH]);
+  if (dyn[0] & (1 << DT_RPATH))
+    p->rpath_orig = p->strings + dyn[DT_RPATH];
+  if (dyn[0] & (1 << DT_RUNPATH))
+    p->rpath_orig = p->strings + dyn[DT_RUNPATH];
+  if (dyn[0] & (1 << DT_PLTGOT))
+    p->got = laddr(p, dyn[DT_PLTGOT]);
+  if (search_vec(p->dynv, dyn, DT_GNU_HASH))
+    p->ghashtab = laddr(p, *dyn);
+  if (search_vec(p->dynv, dyn, DT_VERSYM))
+    p->versym = laddr(p, *dyn);
 }
 
-static size_t count_syms(struct dso *p)
-{
-	if (p->hashtab) return p->hashtab[1];
+static size_t count_syms(struct dso* p) {
+  if (p->hashtab)
+    return p->hashtab[1];
 
-	size_t nsym, i;
-	uint32_t *buckets = p->ghashtab + 4 + (p->ghashtab[2]*sizeof(size_t)/4);
-	uint32_t *hashval;
-	for (i = nsym = 0; i < p->ghashtab[0]; i++) {
-		if (buckets[i] > nsym)
-			nsym = buckets[i];
-	}
-	if (nsym) {
-		hashval = buckets + p->ghashtab[0] + (nsym - p->ghashtab[1]);
-		do nsym++;
-		while (!(*hashval++ & 1));
-	}
-	return nsym;
+  size_t nsym, i;
+  uint32_t* buckets = p->ghashtab + 4 + (p->ghashtab[2] * sizeof(size_t) / 4);
+  uint32_t* hashval;
+  for (i = nsym = 0; i < p->ghashtab[0]; i++) {
+    if (buckets[i] > nsym)
+      nsym = buckets[i];
+  }
+  if (nsym) {
+    hashval = buckets + p->ghashtab[0] + (nsym - p->ghashtab[1]);
+    do
+      nsym++;
+    while (!(*hashval++ & 1));
+  }
+  return nsym;
 }
 
-static void *dl_mmap(size_t n)
-{
-	void *p;
-	int prot = PROT_READ|PROT_WRITE, flags = MAP_ANONYMOUS|MAP_PRIVATE;
+static void* dl_mmap(size_t n) {
+  void* p;
+  int prot = PROT_READ | PROT_WRITE, flags = MAP_ANONYMOUS | MAP_PRIVATE;
 #ifdef SYS_mmap2
-	p = (void *)__syscall(SYS_mmap2, 0, n, prot, flags, -1, 0);
+  p = (void*)__syscall(SYS_mmap2, 0, n, prot, flags, -1, 0);
 #else
-	p = (void *)__syscall(SYS_mmap, 0, n, prot, flags, -1, 0);
+  p = (void*)__syscall(SYS_mmap, 0, n, prot, flags, -1, 0);
 #endif
-	return p == MAP_FAILED ? 0 : p;
+  return p == MAP_FAILED ? 0 : p;
 }
 
-static void makefuncdescs(struct dso *p)
-{
-	static int self_done;
-	size_t nsym = count_syms(p);
-	size_t i, size = nsym * sizeof(*p->funcdescs);
+static void makefuncdescs(struct dso* p) {
+  static int self_done;
+  size_t nsym = count_syms(p);
+  size_t i, size = nsym * sizeof(*p->funcdescs);
 
-	if (!self_done) {
-		p->funcdescs = dl_mmap(size);
-		self_done = 1;
-	} else {
-		p->funcdescs = malloc(size);
-	}
-	if (!p->funcdescs) {
-		if (!runtime) a_crash();
-		error("Error allocating function descriptors for %s", p->name);
-		longjmp(*rtld_fail, 1);
-	}
-	for (i=0; i<nsym; i++) {
-		if ((p->syms[i].st_info&0xf)==STT_FUNC && p->syms[i].st_shndx) {
-			p->funcdescs[i].addr = laddr(p, p->syms[i].st_value);
-			p->funcdescs[i].got = p->got;
-		} else {
-			p->funcdescs[i].addr = 0;
-			p->funcdescs[i].got = 0;
-		}
-	}
+  if (!self_done) {
+    p->funcdescs = dl_mmap(size);
+    self_done = 1;
+  } else {
+    p->funcdescs = malloc(size);
+  }
+  if (!p->funcdescs) {
+    if (!runtime)
+      a_crash();
+    error("Error allocating function descriptors for %s", p->name);
+    longjmp(*rtld_fail, 1);
+  }
+  for (i = 0; i < nsym; i++) {
+    if ((p->syms[i].st_info & 0xf) == STT_FUNC && p->syms[i].st_shndx) {
+      p->funcdescs[i].addr = laddr(p, p->syms[i].st_value);
+      p->funcdescs[i].got = p->got;
+    } else {
+      p->funcdescs[i].addr = 0;
+      p->funcdescs[i].got = 0;
+    }
+  }
 }
 
-static struct dso *load_library(const char *name, struct dso *needed_by)
-{
-	char buf[2*NAME_MAX+2];
-	const char *pathname;
-	unsigned char *map;
-	struct dso *p, temp_dso = {0};
-	int fd;
-	struct stat st;
-	size_t alloc_size;
-	int n_th = 0;
-	int is_self = 0;
+static struct dso* load_library(const char* name, struct dso* needed_by) {
+  char buf[2 * NAME_MAX + 2];
+  const char* pathname;
+  unsigned char* map;
+  struct dso *p, temp_dso = {0};
+  int fd;
+  struct stat st;
+  size_t alloc_size;
+  int n_th = 0;
+  int is_self = 0;
 
-	if (!*name) {
-		errno = EINVAL;
-		return 0;
-	}
+  if (!*name) {
+    errno = EINVAL;
+    return 0;
+  }
 
-	/* Catch and block attempts to reload the implementation itself */
-	if (name[0]=='l' && name[1]=='i' && name[2]=='b') {
-		static const char *rp, reserved[] =
-			"c\0pthread\0rt\0m\0dl\0util\0xnet\0";
-		char *z = strchr(name, '.');
-		if (z) {
-			size_t l = z-name;
-			for (rp=reserved; *rp && strncmp(name+3, rp, l-3); rp+=strlen(rp)+1);
-			if (*rp) {
-				if (ldd_mode) {
-					/* Track which names have been resolved
-					 * and only report each one once. */
-					static unsigned reported;
-					unsigned mask = 1U<<(rp-reserved);
-					if (!(reported & mask)) {
-						reported |= mask;
-						dprintf(1, "\t%s => %s (%p)\n",
-							name, ldso.name,
-							ldso.base);
-					}
-				}
-				is_self = 1;
-			}
-		}
-	}
-	if (!strcmp(name, ldso.name)) is_self = 1;
-	if (is_self) {
-		if (!ldso.prev) {
-			tail->next = &ldso;
-			ldso.prev = tail;
-			tail = ldso.next ? ldso.next : &ldso;
-		}
-		return &ldso;
-	}
-	if (strchr(name, '/')) {
-		pathname = name;
-		fd = open(name, O_RDONLY|O_CLOEXEC);
-	} else {
-		/* Search for the name to see if it's already loaded */
-		for (p=head->next; p; p=p->next) {
-			if (p->shortname && !strcmp(p->shortname, name)) {
-				p->refcnt++;
-				return p;
-			}
-		}
-		if (strlen(name) > NAME_MAX) return 0;
-		fd = -1;
-		if (env_path) fd = path_open(name, env_path, buf, sizeof buf);
-		for (p=needed_by; fd == -1 && p; p=p->needed_by) {
-			if (fixup_rpath(p, buf, sizeof buf) < 0)
-				fd = -2; /* Inhibit further search. */
-			if (p->rpath)
-				fd = path_open(name, p->rpath, buf, sizeof buf);
-		}
-		if (fd == -1) {
-			if (!sys_path) {
-				char *prefix = 0;
-				size_t prefix_len;
-				if (ldso.name[0]=='/') {
-					char *s, *t, *z;
-					for (s=t=z=ldso.name; *s; s++)
-						if (*s=='/') z=t, t=s;
-					prefix_len = z-ldso.name;
-					if (prefix_len < PATH_MAX)
-						prefix = ldso.name;
-				}
-				if (!prefix) {
-					prefix = "";
-					prefix_len = 0;
-				}
-				char etc_ldso_path[prefix_len + 1
-					+ sizeof "/etc/ld-musl-" LDSO_ARCH ".path"];
-				snprintf(etc_ldso_path, sizeof etc_ldso_path,
-					"%.*s/etc/ld-musl-" LDSO_ARCH ".path",
-					(int)prefix_len, prefix);
-				FILE *f = fopen(etc_ldso_path, "rbe");
-				if (f) {
-					if (getdelim(&sys_path, (size_t[1]){0}, 0, f) <= 0) {
-						free(sys_path);
-						sys_path = "";
-					}
-					fclose(f);
-				} else if (errno != ENOENT) {
-					sys_path = "";
-				}
-			}
-			if (!sys_path) sys_path = "/lib:/usr/local/lib:/usr/lib";
-			fd = path_open(name, sys_path, buf, sizeof buf);
-		}
-		pathname = buf;
-	}
-	if (fd < 0) return 0;
-	if (fstat(fd, &st) < 0) {
-		close(fd);
-		return 0;
-	}
-	for (p=head->next; p; p=p->next) {
-		if (p->dev == st.st_dev && p->ino == st.st_ino) {
-			/* If this library was previously loaded with a
-			 * pathname but a search found the same inode,
-			 * setup its shortname so it can be found by name. */
-			if (!p->shortname && pathname != name)
-				p->shortname = strrchr(p->name, '/')+1;
-			close(fd);
-			p->refcnt++;
-			return p;
-		}
-	}
-	map = noload ? 0 : map_library(fd, &temp_dso);
-	close(fd);
-	if (!map) return 0;
+  /* Catch and block attempts to reload the implementation itself */
+  if (name[0] == 'l' && name[1] == 'i' && name[2] == 'b') {
+    static const char *rp, reserved[] = "c\0pthread\0rt\0m\0dl\0util\0xnet\0";
+    char* z = strchr(name, '.');
+    if (z) {
+      size_t l = z - name;
+      for (rp = reserved; *rp && strncmp(name + 3, rp, l - 3);
+           rp += strlen(rp) + 1)
+        ;
+      if (*rp) {
+        if (ldd_mode) {
+          /* Track which names have been resolved
+           * and only report each one once. */
+          static unsigned reported;
+          unsigned mask = 1U << (rp - reserved);
+          if (!(reported & mask)) {
+            reported |= mask;
+            dprintf(1, "\t%s => %s (%p)\n", name, ldso.name, ldso.base);
+          }
+        }
+        is_self = 1;
+      }
+    }
+  }
+  if (!strcmp(name, ldso.name))
+    is_self = 1;
+  if (is_self) {
+    if (!ldso.prev) {
+      tail->next = &ldso;
+      ldso.prev = tail;
+      tail = ldso.next ? ldso.next : &ldso;
+    }
+    return &ldso;
+  }
+  if (strchr(name, '/')) {
+    pathname = name;
+    fd = open(name, O_RDONLY | O_CLOEXEC);
+  } else {
+    /* Search for the name to see if it's already loaded */
+    for (p = head->next; p; p = p->next) {
+      if (p->shortname && !strcmp(p->shortname, name)) {
+        p->refcnt++;
+        return p;
+      }
+    }
+    if (strlen(name) > NAME_MAX)
+      return 0;
+    fd = -1;
+    if (env_path)
+      fd = path_open(name, env_path, buf, sizeof buf);
+    for (p = needed_by; fd == -1 && p; p = p->needed_by) {
+      if (fixup_rpath(p, buf, sizeof buf) < 0)
+        fd = -2; /* Inhibit further search. */
+      if (p->rpath)
+        fd = path_open(name, p->rpath, buf, sizeof buf);
+    }
+    if (fd == -1) {
+      if (!sys_path) {
+        char* prefix = 0;
+        size_t prefix_len;
+        if (ldso.name[0] == '/') {
+          char *s, *t, *z;
+          for (s = t = z = ldso.name; *s; s++)
+            if (*s == '/')
+              z = t, t = s;
+          prefix_len = z - ldso.name;
+          if (prefix_len < PATH_MAX)
+            prefix = ldso.name;
+        }
+        if (!prefix) {
+          prefix = "";
+          prefix_len = 0;
+        }
+        char etc_ldso_path[prefix_len + 1 + sizeof "/etc/ld-musl-" LDSO_ARCH
+                                                   ".path"];
+        snprintf(etc_ldso_path, sizeof etc_ldso_path,
+                 "%.*s/etc/ld-musl-" LDSO_ARCH ".path", (int)prefix_len,
+                 prefix);
+        FILE* f = fopen(etc_ldso_path, "rbe");
+        if (f) {
+          if (getdelim(&sys_path, (size_t[1]){0}, 0, f) <= 0) {
+            free(sys_path);
+            sys_path = "";
+          }
+          fclose(f);
+        } else if (errno != ENOENT) {
+          sys_path = "";
+        }
+      }
+      if (!sys_path)
+        sys_path = "/lib:/usr/local/lib:/usr/lib";
+      fd = path_open(name, sys_path, buf, sizeof buf);
+    }
+    pathname = buf;
+  }
+  if (fd < 0)
+    return 0;
+  if (fstat(fd, &st) < 0) {
+    close(fd);
+    return 0;
+  }
+  for (p = head->next; p; p = p->next) {
+    if (p->dev == st.st_dev && p->ino == st.st_ino) {
+      /* If this library was previously loaded with a
+       * pathname but a search found the same inode,
+       * setup its shortname so it can be found by name. */
+      if (!p->shortname && pathname != name)
+        p->shortname = strrchr(p->name, '/') + 1;
+      close(fd);
+      p->refcnt++;
+      return p;
+    }
+  }
+  map = noload ? 0 : map_library(fd, &temp_dso);
+  close(fd);
+  if (!map)
+    return 0;
 
-	/* Allocate storage for the new DSO. When there is TLS, this
-	 * storage must include a reservation for all pre-existing
-	 * threads to obtain copies of both the new TLS, and an
-	 * extended DTV capable of storing an additional slot for
-	 * the newly-loaded DSO. */
-	alloc_size = sizeof *p + strlen(pathname) + 1;
-	if (runtime && temp_dso.tls.image) {
-		size_t per_th = temp_dso.tls.size + temp_dso.tls.align
-			+ sizeof(void *) * (tls_cnt+3);
-		n_th = libc.threads_minus_1 + 1;
-		if (n_th > SSIZE_MAX / per_th) alloc_size = SIZE_MAX;
-		else alloc_size += n_th * per_th;
-	}
-	p = calloc(1, alloc_size);
-	if (!p) {
-		unmap_library(&temp_dso);
-		return 0;
-	}
-	memcpy(p, &temp_dso, sizeof temp_dso);
-	decode_dyn(p);
-	p->dev = st.st_dev;
-	p->ino = st.st_ino;
-	p->refcnt = 1;
-	p->needed_by = needed_by;
-	p->name = p->buf;
-	strcpy(p->name, pathname);
-	/* Add a shortname only if name arg was not an explicit pathname. */
-	if (pathname != name) p->shortname = strrchr(p->name, '/')+1;
-	if (p->tls.image) {
-		p->tls_id = ++tls_cnt;
-		tls_align = MAXP2(tls_align, p->tls.align);
+  /* Allocate storage for the new DSO. When there is TLS, this
+   * storage must include a reservation for all pre-existing
+   * threads to obtain copies of both the new TLS, and an
+   * extended DTV capable of storing an additional slot for
+   * the newly-loaded DSO. */
+  alloc_size = sizeof *p + strlen(pathname) + 1;
+  if (runtime && temp_dso.tls.image) {
+    size_t per_th =
+        temp_dso.tls.size + temp_dso.tls.align + sizeof(void*) * (tls_cnt + 3);
+    n_th = libc.threads_minus_1 + 1;
+    if (n_th > SSIZE_MAX / per_th)
+      alloc_size = SIZE_MAX;
+    else
+      alloc_size += n_th * per_th;
+  }
+  p = calloc(1, alloc_size);
+  if (!p) {
+    unmap_library(&temp_dso);
+    return 0;
+  }
+  memcpy(p, &temp_dso, sizeof temp_dso);
+  decode_dyn(p);
+  p->dev = st.st_dev;
+  p->ino = st.st_ino;
+  p->refcnt = 1;
+  p->needed_by = needed_by;
+  p->name = p->buf;
+  strcpy(p->name, pathname);
+  /* Add a shortname only if name arg was not an explicit pathname. */
+  if (pathname != name)
+    p->shortname = strrchr(p->name, '/') + 1;
+  if (p->tls.image) {
+    p->tls_id = ++tls_cnt;
+    tls_align = MAXP2(tls_align, p->tls.align);
 #ifdef TLS_ABOVE_TP
-		p->tls.offset = tls_offset + ( (tls_align-1) &
-			-(tls_offset + (uintptr_t)p->tls.image) );
-		tls_offset += p->tls.size;
+    p->tls.offset = tls_offset +
+                    ((tls_align - 1) & -(tls_offset + (uintptr_t)p->tls.image));
+    tls_offset += p->tls.size;
 #else
-		tls_offset += p->tls.size + p->tls.align - 1;
-		tls_offset -= (tls_offset + (uintptr_t)p->tls.image)
-			& (p->tls.align-1);
-		p->tls.offset = tls_offset;
+    tls_offset += p->tls.size + p->tls.align - 1;
+    tls_offset -= (tls_offset + (uintptr_t)p->tls.image) & (p->tls.align - 1);
+    p->tls.offset = tls_offset;
 #endif
-		p->new_dtv = (void *)(-sizeof(size_t) &
-			(uintptr_t)(p->name+strlen(p->name)+sizeof(size_t)));
-		p->new_tls = (void *)(p->new_dtv + n_th*(tls_cnt+1));
-		if (tls_tail) tls_tail->next = &p->tls;
-		else libc.tls_head = &p->tls;
-		tls_tail = &p->tls;
-	}
+    p->new_dtv =
+        (void*)(-sizeof(size_t) &
+                (uintptr_t)(p->name + strlen(p->name) + sizeof(size_t)));
+    p->new_tls = (void*)(p->new_dtv + n_th * (tls_cnt + 1));
+    if (tls_tail)
+      tls_tail->next = &p->tls;
+    else
+      libc.tls_head = &p->tls;
+    tls_tail = &p->tls;
+  }
 
-	tail->next = p;
-	p->prev = tail;
-	tail = p;
+  tail->next = p;
+  p->prev = tail;
+  tail = p;
 
-	if (DL_FDPIC) makefuncdescs(p);
+  if (DL_FDPIC)
+    makefuncdescs(p);
 
-	if (ldd_mode) dprintf(1, "\t%s => %s (%p)\n", name, pathname, p->base);
+  if (ldd_mode)
+    dprintf(1, "\t%s => %s (%p)\n", name, pathname, p->base);
 
-	return p;
+  return p;
 }
 
-static void load_deps(struct dso *p)
-{
-	size_t i, ndeps=0;
-	struct dso ***deps = &p->deps, **tmp, *dep;
-	for (; p; p=p->next) {
-		for (i=0; p->dynv[i]; i+=2) {
-			if (p->dynv[i] != DT_NEEDED) continue;
-			dep = load_library(p->strings + p->dynv[i+1], p);
-			if (!dep) {
-				error("Error loading shared library %s: %m (needed by %s)",
-					p->strings + p->dynv[i+1], p->name);
-				if (runtime) longjmp(*rtld_fail, 1);
-				continue;
-			}
-			if (runtime) {
-				tmp = realloc(*deps, sizeof(*tmp)*(ndeps+2));
-				if (!tmp) longjmp(*rtld_fail, 1);
-				tmp[ndeps++] = dep;
-				tmp[ndeps] = 0;
-				*deps = tmp;
-			}
-		}
-	}
+static void load_deps(struct dso* p) {
+  size_t i, ndeps = 0;
+  struct dso ***deps = &p->deps, **tmp, *dep;
+  for (; p; p = p->next) {
+    for (i = 0; p->dynv[i]; i += 2) {
+      if (p->dynv[i] != DT_NEEDED)
+        continue;
+      dep = load_library(p->strings + p->dynv[i + 1], p);
+      if (!dep) {
+        error("Error loading shared library %s: %m (needed by %s)",
+              p->strings + p->dynv[i + 1], p->name);
+        if (runtime)
+          longjmp(*rtld_fail, 1);
+        continue;
+      }
+      if (runtime) {
+        tmp = realloc(*deps, sizeof(*tmp) * (ndeps + 2));
+        if (!tmp)
+          longjmp(*rtld_fail, 1);
+        tmp[ndeps++] = dep;
+        tmp[ndeps] = 0;
+        *deps = tmp;
+      }
+    }
+  }
 }
 
-static void load_preload(char *s)
-{
-	int tmp;
-	char *z;
-	for (z=s; *z; s=z) {
-		for (   ; *s && (isspace(*s) || *s==':'); s++);
-		for (z=s; *z && !isspace(*z) && *z!=':'; z++);
-		tmp = *z;
-		*z = 0;
-		load_library(s, 0);
-		*z = tmp;
-	}
+static void load_preload(char* s) {
+  int tmp;
+  char* z;
+  for (z = s; *z; s = z) {
+    for (; *s && (isspace(*s) || *s == ':'); s++)
+      ;
+    for (z = s; *z && !isspace(*z) && *z != ':'; z++)
+      ;
+    tmp = *z;
+    *z = 0;
+    load_library(s, 0);
+    *z = tmp;
+  }
 }
 
-static void make_global(struct dso *p)
-{
-	for (; p; p=p->next) p->global = 1;
+static void make_global(struct dso* p) {
+  for (; p; p = p->next)
+    p->global = 1;
 }
 
-static void do_mips_relocs(struct dso *p, size_t *got)
-{
-	size_t i, j, rel[2];
-	unsigned char *base = p->base;
-	i=0; search_vec(p->dynv, &i, DT_MIPS_LOCAL_GOTNO);
-	if (p==&ldso) {
-		got += i;
-	} else {
-		while (i--) *got++ += (size_t)base;
-	}
-	j=0; search_vec(p->dynv, &j, DT_MIPS_GOTSYM);
-	i=0; search_vec(p->dynv, &i, DT_MIPS_SYMTABNO);
-	Sym *sym = p->syms + j;
-	rel[0] = (unsigned char *)got - base;
-	for (i-=j; i; i--, sym++, rel[0]+=sizeof(size_t)) {
-		rel[1] = (sym-p->syms) << 8 | R_MIPS_JUMP_SLOT;
-		do_relocs(p, rel, sizeof rel, 2);
-	}
+static void do_mips_relocs(struct dso* p, size_t* got) {
+  size_t i, j, rel[2];
+  unsigned char* base = p->base;
+  i = 0;
+  search_vec(p->dynv, &i, DT_MIPS_LOCAL_GOTNO);
+  if (p == &ldso) {
+    got += i;
+  } else {
+    while (i--)
+      *got++ += (size_t)base;
+  }
+  j = 0;
+  search_vec(p->dynv, &j, DT_MIPS_GOTSYM);
+  i = 0;
+  search_vec(p->dynv, &i, DT_MIPS_SYMTABNO);
+  Sym* sym = p->syms + j;
+  rel[0] = (unsigned char*)got - base;
+  for (i -= j; i; i--, sym++, rel[0] += sizeof(size_t)) {
+    rel[1] = (sym - p->syms) << 8 | R_MIPS_JUMP_SLOT;
+    do_relocs(p, rel, sizeof rel, 2);
+  }
 }
 
-static void reloc_all(struct dso *p)
-{
-	size_t dyn[DYN_CNT];
-	for (; p; p=p->next) {
-		if (p->relocated) continue;
-		decode_vec(p->dynv, dyn, DYN_CNT);
-		if (NEED_MIPS_GOT_RELOCS)
-			do_mips_relocs(p, laddr(p, dyn[DT_PLTGOT]));
-		do_relocs(p, laddr(p, dyn[DT_JMPREL]), dyn[DT_PLTRELSZ],
-			2+(dyn[DT_PLTREL]==DT_RELA));
-		do_relocs(p, laddr(p, dyn[DT_REL]), dyn[DT_RELSZ], 2);
-		do_relocs(p, laddr(p, dyn[DT_RELA]), dyn[DT_RELASZ], 3);
+static void reloc_all(struct dso* p) {
+  size_t dyn[DYN_CNT];
+  for (; p; p = p->next) {
+    if (p->relocated)
+      continue;
+    decode_vec(p->dynv, dyn, DYN_CNT);
+    if (NEED_MIPS_GOT_RELOCS)
+      do_mips_relocs(p, laddr(p, dyn[DT_PLTGOT]));
+    do_relocs(p, laddr(p, dyn[DT_JMPREL]), dyn[DT_PLTRELSZ],
+              2 + (dyn[DT_PLTREL] == DT_RELA));
+    do_relocs(p, laddr(p, dyn[DT_REL]), dyn[DT_RELSZ], 2);
+    do_relocs(p, laddr(p, dyn[DT_RELA]), dyn[DT_RELASZ], 3);
 
-		if (head != &ldso && p->relro_start != p->relro_end &&
-		    mprotect(laddr(p, p->relro_start), p->relro_end-p->relro_start, PROT_READ)
-		    && errno != ENOSYS) {
-			error("Error relocating %s: RELRO protection failed: %m",
-				p->name);
-			if (runtime) longjmp(*rtld_fail, 1);
-		}
+    if (head != &ldso && p->relro_start != p->relro_end &&
+        mprotect(laddr(p, p->relro_start), p->relro_end - p->relro_start,
+                 PROT_READ) &&
+        errno != ENOSYS) {
+      error("Error relocating %s: RELRO protection failed: %m", p->name);
+      if (runtime)
+        longjmp(*rtld_fail, 1);
+    }
 
-		p->relocated = 1;
-	}
+    p->relocated = 1;
+  }
 }
 
-static void kernel_mapped_dso(struct dso *p)
-{
-	size_t min_addr = -1, max_addr = 0, cnt;
-	Phdr *ph = p->phdr;
-	for (cnt = p->phnum; cnt--; ph = (void *)((char *)ph + p->phentsize)) {
-		if (ph->p_type == PT_DYNAMIC) {
-			p->dynv = laddr(p, ph->p_vaddr);
-		} else if (ph->p_type == PT_GNU_RELRO) {
-			p->relro_start = ph->p_vaddr & -PAGE_SIZE;
-			p->relro_end = (ph->p_vaddr + ph->p_memsz) & -PAGE_SIZE;
-		}
-		if (ph->p_type != PT_LOAD) continue;
-		if (ph->p_vaddr < min_addr)
-			min_addr = ph->p_vaddr;
-		if (ph->p_vaddr+ph->p_memsz > max_addr)
-			max_addr = ph->p_vaddr+ph->p_memsz;
-	}
-	min_addr &= -PAGE_SIZE;
-	max_addr = (max_addr + PAGE_SIZE-1) & -PAGE_SIZE;
-	p->map = p->base + min_addr;
-	p->map_len = max_addr - min_addr;
-	p->kernel_mapped = 1;
+static void kernel_mapped_dso(struct dso* p) {
+  size_t min_addr = -1, max_addr = 0, cnt;
+  Phdr* ph = p->phdr;
+  for (cnt = p->phnum; cnt--; ph = (void*)((char*)ph + p->phentsize)) {
+    if (ph->p_type == PT_DYNAMIC) {
+      p->dynv = laddr(p, ph->p_vaddr);
+    } else if (ph->p_type == PT_GNU_RELRO) {
+      p->relro_start = ph->p_vaddr & -PAGE_SIZE;
+      p->relro_end = (ph->p_vaddr + ph->p_memsz) & -PAGE_SIZE;
+    }
+    if (ph->p_type != PT_LOAD)
+      continue;
+    if (ph->p_vaddr < min_addr)
+      min_addr = ph->p_vaddr;
+    if (ph->p_vaddr + ph->p_memsz > max_addr)
+      max_addr = ph->p_vaddr + ph->p_memsz;
+  }
+  min_addr &= -PAGE_SIZE;
+  max_addr = (max_addr + PAGE_SIZE - 1) & -PAGE_SIZE;
+  p->map = p->base + min_addr;
+  p->map_len = max_addr - min_addr;
+  p->kernel_mapped = 1;
 }
 
-void __libc_exit_fini()
-{
-	struct dso *p;
-	size_t dyn[DYN_CNT];
-	for (p=fini_head; p; p=p->fini_next) {
-		if (!p->constructed) continue;
-		decode_vec(p->dynv, dyn, DYN_CNT);
-		if (dyn[0] & (1<<DT_FINI_ARRAY)) {
-			size_t n = dyn[DT_FINI_ARRAYSZ]/sizeof(size_t);
-			size_t *fn = (size_t *)laddr(p, dyn[DT_FINI_ARRAY])+n;
-			while (n--) ((void (*)(void))*--fn)();
-		}
+void __libc_exit_fini() {
+  struct dso* p;
+  size_t dyn[DYN_CNT];
+  for (p = fini_head; p; p = p->fini_next) {
+    if (!p->constructed)
+      continue;
+    decode_vec(p->dynv, dyn, DYN_CNT);
+    if (dyn[0] & (1 << DT_FINI_ARRAY)) {
+      size_t n = dyn[DT_FINI_ARRAYSZ] / sizeof(size_t);
+      size_t* fn = (size_t*)laddr(p, dyn[DT_FINI_ARRAY]) + n;
+      while (n--)
+        ((void (*)(void)) * --fn)();
+    }
 #ifndef NO_LEGACY_INITFINI
-		if ((dyn[0] & (1<<DT_FINI)) && dyn[DT_FINI])
-			fpaddr(p, dyn[DT_FINI])();
+    if ((dyn[0] & (1 << DT_FINI)) && dyn[DT_FINI])
+      fpaddr(p, dyn[DT_FINI])();
 #endif
-	}
+  }
 }
 
-static void do_init_fini(struct dso *p)
-{
-	size_t dyn[DYN_CNT];
-	int need_locking = libc.threads_minus_1;
-	/* Allow recursive calls that arise when a library calls
-	 * dlopen from one of its constructors, but block any
-	 * other threads until all ctors have finished. */
-	if (need_locking) pthread_mutex_lock(&init_fini_lock);
-	for (; p; p=p->prev) {
-		if (p->constructed) continue;
-		p->constructed = 1;
-		decode_vec(p->dynv, dyn, DYN_CNT);
-		if (dyn[0] & ((1<<DT_FINI) | (1<<DT_FINI_ARRAY))) {
-			p->fini_next = fini_head;
-			fini_head = p;
-		}
+static void do_init_fini(struct dso* p) {
+  size_t dyn[DYN_CNT];
+  int need_locking = libc.threads_minus_1;
+  /* Allow recursive calls that arise when a library calls
+   * dlopen from one of its constructors, but block any
+   * other threads until all ctors have finished. */
+  if (need_locking)
+    pthread_mutex_lock(&init_fini_lock);
+  for (; p; p = p->prev) {
+    if (p->constructed)
+      continue;
+    p->constructed = 1;
+    decode_vec(p->dynv, dyn, DYN_CNT);
+    if (dyn[0] & ((1 << DT_FINI) | (1 << DT_FINI_ARRAY))) {
+      p->fini_next = fini_head;
+      fini_head = p;
+    }
 #ifndef NO_LEGACY_INITFINI
-		if ((dyn[0] & (1<<DT_INIT)) && dyn[DT_INIT])
-			fpaddr(p, dyn[DT_INIT])();
+    if ((dyn[0] & (1 << DT_INIT)) && dyn[DT_INIT])
+      fpaddr(p, dyn[DT_INIT])();
 #endif
-		if (dyn[0] & (1<<DT_INIT_ARRAY)) {
-			size_t n = dyn[DT_INIT_ARRAYSZ]/sizeof(size_t);
-			size_t *fn = laddr(p, dyn[DT_INIT_ARRAY]);
-			while (n--) ((void (*)(void))*fn++)();
-		}
-		if (!need_locking && libc.threads_minus_1) {
-			need_locking = 1;
-			pthread_mutex_lock(&init_fini_lock);
-		}
-	}
-	if (need_locking) pthread_mutex_unlock(&init_fini_lock);
+    if (dyn[0] & (1 << DT_INIT_ARRAY)) {
+      size_t n = dyn[DT_INIT_ARRAYSZ] / sizeof(size_t);
+      size_t* fn = laddr(p, dyn[DT_INIT_ARRAY]);
+      while (n--)
+        ((void (*)(void)) * fn++)();
+    }
+    if (!need_locking && libc.threads_minus_1) {
+      need_locking = 1;
+      pthread_mutex_lock(&init_fini_lock);
+    }
+  }
+  if (need_locking)
+    pthread_mutex_unlock(&init_fini_lock);
 }
 
-void __libc_start_init(void)
-{
-	do_init_fini(tail);
+void __libc_start_init(void) {
+  do_init_fini(tail);
 }
 
-static void dl_debug_state(void)
-{
-}
+static void dl_debug_state(void) {}
 
 weak_alias(dl_debug_state, _dl_debug_state);
 
-void __init_tls(size_t *auxv)
-{
+void __init_tls(size_t* auxv) {}
+
+__attribute__((__visibility__("hidden"))) void* __tls_get_new(size_t* v) {
+  pthread_t self = __pthread_self();
+
+  /* Block signals to make accessing new TLS async-signal-safe */
+  sigset_t set;
+  __block_all_sigs(&set);
+  if (v[0] <= (size_t)self->dtv[0]) {
+    __restore_sigs(&set);
+    return (char*)self->dtv[v[0]] + v[1] + DTP_OFFSET;
+  }
+
+  /* This is safe without any locks held because, if the caller
+   * is able to request the Nth entry of the DTV, the DSO list
+   * must be valid at least that far out and it was synchronized
+   * at program startup or by an already-completed call to dlopen. */
+  struct dso* p;
+  for (p = head; p->tls_id != v[0]; p = p->next)
+    ;
+
+  /* Get new DTV space from new DSO if needed */
+  if (v[0] > (size_t)self->dtv[0]) {
+    void** newdtv = p->new_dtv + (v[0] + 1) * a_fetch_add(&p->new_dtv_idx, 1);
+    memcpy(newdtv, self->dtv, ((size_t)self->dtv[0] + 1) * sizeof(void*));
+    newdtv[0] = (void*)v[0];
+    self->dtv = self->dtv_copy = newdtv;
+  }
+
+  /* Get new TLS memory from all new DSOs up to the requested one */
+  unsigned char* mem;
+  for (p = head;; p = p->next) {
+    if (!p->tls_id || self->dtv[p->tls_id])
+      continue;
+    mem = p->new_tls +
+          (p->tls.size + p->tls.align) * a_fetch_add(&p->new_tls_idx, 1);
+    mem += ((uintptr_t)p->tls.image - (uintptr_t)mem) & (p->tls.align - 1);
+    self->dtv[p->tls_id] = mem;
+    memcpy(mem, p->tls.image, p->tls.len);
+    if (p->tls_id == v[0])
+      break;
+  }
+  __restore_sigs(&set);
+  return mem + v[1] + DTP_OFFSET;
 }
 
-__attribute__((__visibility__("hidden")))
-void *__tls_get_new(size_t *v)
-{
-	pthread_t self = __pthread_self();
-
-	/* Block signals to make accessing new TLS async-signal-safe */
-	sigset_t set;
-	__block_all_sigs(&set);
-	if (v[0]<=(size_t)self->dtv[0]) {
-		__restore_sigs(&set);
-		return (char *)self->dtv[v[0]]+v[1]+DTP_OFFSET;
-	}
-
-	/* This is safe without any locks held because, if the caller
-	 * is able to request the Nth entry of the DTV, the DSO list
-	 * must be valid at least that far out and it was synchronized
-	 * at program startup or by an already-completed call to dlopen. */
-	struct dso *p;
-	for (p=head; p->tls_id != v[0]; p=p->next);
-
-	/* Get new DTV space from new DSO if needed */
-	if (v[0] > (size_t)self->dtv[0]) {
-		void **newdtv = p->new_dtv +
-			(v[0]+1)*a_fetch_add(&p->new_dtv_idx,1);
-		memcpy(newdtv, self->dtv,
-			((size_t)self->dtv[0]+1) * sizeof(void *));
-		newdtv[0] = (void *)v[0];
-		self->dtv = self->dtv_copy = newdtv;
-	}
-
-	/* Get new TLS memory from all new DSOs up to the requested one */
-	unsigned char *mem;
-	for (p=head; ; p=p->next) {
-		if (!p->tls_id || self->dtv[p->tls_id]) continue;
-		mem = p->new_tls + (p->tls.size + p->tls.align)
-			* a_fetch_add(&p->new_tls_idx,1);
-		mem += ((uintptr_t)p->tls.image - (uintptr_t)mem)
-			& (p->tls.align-1);
-		self->dtv[p->tls_id] = mem;
-		memcpy(mem, p->tls.image, p->tls.len);
-		if (p->tls_id == v[0]) break;
-	}
-	__restore_sigs(&set);
-	return mem + v[1] + DTP_OFFSET;
-}
-
-static void update_tls_size()
-{
-	libc.tls_cnt = tls_cnt;
-	libc.tls_align = tls_align;
-	libc.tls_size = ALIGN(
-		(1+tls_cnt) * sizeof(void *) +
-		tls_offset +
-		sizeof(struct pthread) +
-		tls_align * 2,
-	tls_align);
+static void update_tls_size() {
+  libc.tls_cnt = tls_cnt;
+  libc.tls_align = tls_align;
+  libc.tls_size = ALIGN((1 + tls_cnt) * sizeof(void*) + tls_offset +
+                            sizeof(struct pthread) + tls_align * 2,
+                        tls_align);
 }
 
 /* Stage 1 of the dynamic linker is defined in dlstart.c. It calls the
  * following stage 2 and stage 3 functions via primitive symbolic lookup
  * since it does not have access to their addresses to begin with. */
 
-/* Stage 2 of the dynamic linker is called after relative relocations 
+/* Stage 2 of the dynamic linker is called after relative relocations
  * have been processed. It can make function calls to static functions
  * and access string literals and static data, but cannot use extern
  * symbols. Its job is to perform symbolic relocations on the dynamic
  * linker itself, but some of the relocations performed may need to be
  * replaced later due to copy relocations in the main program. */
 
-__attribute__((__visibility__("hidden")))
-void __dls2(unsigned char *base, size_t *sp)
-{
-	if (DL_FDPIC) {
-		void *p1 = (void *)sp[-2];
-		void *p2 = (void *)sp[-1];
-		if (!p1) {
-			size_t *auxv, aux[AUX_CNT];
-			for (auxv=sp+1+*sp+1; *auxv; auxv++)
-				; // Pass
-			auxv++;
-			decode_vec(auxv, aux, AUX_CNT);
-			if (aux[AT_BASE]) ldso.base = (void *)aux[AT_BASE];
-			else ldso.base = (void *)(aux[AT_PHDR] & -4096);
-		}
-		app_loadmap = p2 ? p1 : 0;
-		ldso.loadmap = p2 ? p2 : p1;
-		ldso.base = laddr(&ldso, 0);
-	} else {
-		ldso.base = base;
-	}
-	Ehdr *ehdr = (void *)ldso.base;
-	ldso.name = ldso.shortname = "libc.so";
-	ldso.global = 1;
-	ldso.phnum = ehdr->e_phnum;
-	ldso.phdr = laddr(&ldso, ehdr->e_phoff);
-	ldso.phentsize = ehdr->e_phentsize;
-	kernel_mapped_dso(&ldso);
-	decode_dyn(&ldso);
+__attribute__((__visibility__("hidden"))) void __dls2(unsigned char* base,
+                                                      size_t* sp) {
+  if (DL_FDPIC) {
+    void* p1 = (void*)sp[-2];
+    void* p2 = (void*)sp[-1];
+    if (!p1) {
+      size_t *auxv, aux[AUX_CNT];
+      for (auxv = sp + 1 + *sp + 1; *auxv; auxv++)
+        ;  // Pass
+      auxv++;
+      decode_vec(auxv, aux, AUX_CNT);
+      if (aux[AT_BASE])
+        ldso.base = (void*)aux[AT_BASE];
+      else
+        ldso.base = (void*)(aux[AT_PHDR] & -4096);
+    }
+    app_loadmap = p2 ? p1 : 0;
+    ldso.loadmap = p2 ? p2 : p1;
+    ldso.base = laddr(&ldso, 0);
+  } else {
+    ldso.base = base;
+  }
+  Ehdr* ehdr = (void*)ldso.base;
+  ldso.name = ldso.shortname = "libc.so";
+  ldso.global = 1;
+  ldso.phnum = ehdr->e_phnum;
+  ldso.phdr = laddr(&ldso, ehdr->e_phoff);
+  ldso.phentsize = ehdr->e_phentsize;
+  kernel_mapped_dso(&ldso);
+  decode_dyn(&ldso);
 
-	if (DL_FDPIC) makefuncdescs(&ldso);
+  if (DL_FDPIC)
+    makefuncdescs(&ldso);
 
-	/* Prepare storage for to save clobbered REL addends so they
-	 * can be reused in stage 3. There should be very few. If
-	 * something goes wrong and there are a huge number, abort
-	 * instead of risking stack overflow. */
-	size_t dyn[DYN_CNT];
-	decode_vec(ldso.dynv, dyn, DYN_CNT);
-	size_t *rel = laddr(&ldso, dyn[DT_REL]);
-	size_t rel_size = dyn[DT_RELSZ];
-	size_t symbolic_rel_cnt = 0;
-	apply_addends_to = rel;
-	for (; rel_size; rel+=2, rel_size-=2*sizeof(size_t))
-		if (!IS_RELATIVE(rel[1], ldso.syms)) symbolic_rel_cnt++;
-	if (symbolic_rel_cnt >= ADDEND_LIMIT) a_crash();
-	size_t addends[symbolic_rel_cnt+1];
-	saved_addends = addends;
+  /* Prepare storage for to save clobbered REL addends so they
+   * can be reused in stage 3. There should be very few. If
+   * something goes wrong and there are a huge number, abort
+   * instead of risking stack overflow. */
+  size_t dyn[DYN_CNT];
+  decode_vec(ldso.dynv, dyn, DYN_CNT);
+  size_t* rel = laddr(&ldso, dyn[DT_REL]);
+  size_t rel_size = dyn[DT_RELSZ];
+  size_t symbolic_rel_cnt = 0;
+  apply_addends_to = rel;
+  for (; rel_size; rel += 2, rel_size -= 2 * sizeof(size_t))
+    if (!IS_RELATIVE(rel[1], ldso.syms))
+      symbolic_rel_cnt++;
+  if (symbolic_rel_cnt >= ADDEND_LIMIT)
+    a_crash();
+  size_t addends[symbolic_rel_cnt + 1];
+  saved_addends = addends;
 
-	head = &ldso;
-	reloc_all(&ldso);
+  head = &ldso;
+  reloc_all(&ldso);
 
-	ldso.relocated = 0;
+  ldso.relocated = 0;
 
-	/* Call dynamic linker stage-3, __dls3, looking it up
-	 * symbolically as a barrier against moving the address
-	 * load across the above relocation processing. */
-	struct symdef dls3_def = find_sym(&ldso, "__dls3", 0);
-	if (DL_FDPIC) ((stage3_func)&ldso.funcdescs[dls3_def.sym-ldso.syms])(sp);
-	else ((stage3_func)laddr(&ldso, dls3_def.sym->st_value))(sp);
+  /* Call dynamic linker stage-3, __dls3, looking it up
+   * symbolically as a barrier against moving the address
+   * load across the above relocation processing. */
+  struct symdef dls3_def = find_sym(&ldso, "__dls3", 0);
+  if (DL_FDPIC)
+    ((stage3_func)&ldso.funcdescs[dls3_def.sym - ldso.syms])(sp);
+  else
+    ((stage3_func)laddr(&ldso, dls3_def.sym->st_value))(sp);
 }
 
 /* Stage 3 of the dynamic linker is called with the dynamic linker/libc
@@ -1390,547 +1462,576 @@
  * process dependencies and relocations for the main application and
  * transfer control to its entry point. */
 
-_Noreturn void __dls3(size_t *sp)
-{
-	static struct dso app, vdso;
-	size_t aux[AUX_CNT], *auxv;
-	size_t i;
-	char *env_preload=0;
-	size_t vdso_base;
-	int argc = *sp;
-	char **argv = (void *)(sp+1);
-	char **argv_orig = argv;
-	char **envp = argv+argc+1;
+_Noreturn void __dls3(size_t* sp) {
+  static struct dso app, vdso;
+  size_t aux[AUX_CNT], *auxv;
+  size_t i;
+  char* env_preload = 0;
+  size_t vdso_base;
+  int argc = *sp;
+  char** argv = (void*)(sp + 1);
+  char** argv_orig = argv;
+  char** envp = argv + argc + 1;
 
-	/* Find aux vector just past environ[] and use it to initialize
-	 * global data that may be needed before we can make syscalls. */
-	__environ = envp;
-	for (i=argc+1; argv[i]; i++);
-	libc.auxv = auxv = (void *)(argv+i+1);
-	decode_vec(auxv, aux, AUX_CNT);
-	__hwcap = aux[AT_HWCAP];
-	libc.page_size = aux[AT_PAGESZ];
-	libc.secure = ((aux[0]&0x7800)!=0x7800 || aux[AT_UID]!=aux[AT_EUID]
-		|| aux[AT_GID]!=aux[AT_EGID] || aux[AT_SECURE]);
+  /* Find aux vector just past environ[] and use it to initialize
+   * global data that may be needed before we can make syscalls. */
+  __environ = envp;
+  for (i = argc + 1; argv[i]; i++)
+    ;
+  libc.auxv = auxv = (void*)(argv + i + 1);
+  decode_vec(auxv, aux, AUX_CNT);
+  __hwcap = aux[AT_HWCAP];
+  libc.page_size = aux[AT_PAGESZ];
+  libc.secure = ((aux[0] & 0x7800) != 0x7800 || aux[AT_UID] != aux[AT_EUID] ||
+                 aux[AT_GID] != aux[AT_EGID] || aux[AT_SECURE]);
 
-	/* Setup early thread pointer in builtin_tls for ldso/libc itself to
-	 * use during dynamic linking. If possible it will also serve as the
-	 * thread pointer at runtime. */
-	libc.tls_size = sizeof builtin_tls;
-	libc.tls_align = tls_align;
-	if (__init_tp(__copy_tls((void *)builtin_tls)) < 0) {
-		a_crash();
-	}
+  /* Setup early thread pointer in builtin_tls for ldso/libc itself to
+   * use during dynamic linking. If possible it will also serve as the
+   * thread pointer at runtime. */
+  libc.tls_size = sizeof builtin_tls;
+  libc.tls_align = tls_align;
+  if (__init_tp(__copy_tls((void*)builtin_tls)) < 0) {
+    a_crash();
+  }
 
-	/* Only trust user/env if kernel says we're not suid/sgid */
-	if (!libc.secure) {
-		env_path = getenv("LD_LIBRARY_PATH");
-		env_preload = getenv("LD_PRELOAD");
-	}
+  /* Only trust user/env if kernel says we're not suid/sgid */
+  if (!libc.secure) {
+    env_path = getenv("LD_LIBRARY_PATH");
+    env_preload = getenv("LD_PRELOAD");
+  }
 
-	/* If the main program was already loaded by the kernel,
-	 * AT_PHDR will point to some location other than the dynamic
-	 * linker's program headers. */
-	if (aux[AT_PHDR] != (size_t)ldso.phdr) {
-		size_t interp_off = 0;
-		size_t tls_image = 0;
-		/* Find load address of the main program, via AT_PHDR vs PT_PHDR. */
-		Phdr *phdr = app.phdr = (void *)aux[AT_PHDR];
-		app.phnum = aux[AT_PHNUM];
-		app.phentsize = aux[AT_PHENT];
-		for (i=aux[AT_PHNUM]; i; i--, phdr=(void *)((char *)phdr + aux[AT_PHENT])) {
-			if (phdr->p_type == PT_PHDR)
-				app.base = (void *)(aux[AT_PHDR] - phdr->p_vaddr);
-			else if (phdr->p_type == PT_INTERP)
-				interp_off = (size_t)phdr->p_vaddr;
-			else if (phdr->p_type == PT_TLS) {
-				tls_image = phdr->p_vaddr;
-				app.tls.len = phdr->p_filesz;
-				app.tls.size = phdr->p_memsz;
-				app.tls.align = phdr->p_align;
-			}
-		}
-		if (DL_FDPIC) app.loadmap = app_loadmap;
-		if (app.tls.size) app.tls.image = laddr(&app, tls_image);
-		if (interp_off) ldso.name = laddr(&app, interp_off);
-		if ((aux[0] & (1UL<<AT_EXECFN))
-		    && strncmp((char *)aux[AT_EXECFN], "/proc/", 6))
-			app.name = (char *)aux[AT_EXECFN];
-		else
-			app.name = argv[0];
-		kernel_mapped_dso(&app);
-	} else {
-		int fd;
-		char *ldname = argv[0];
-		size_t l = strlen(ldname);
-		if (l >= 3 && !strcmp(ldname+l-3, "ldd")) ldd_mode = 1;
-		argv++;
-		while (argv[0] && argv[0][0]=='-' && argv[0][1]=='-') {
-			char *opt = argv[0]+2;
-			*argv++ = (void *)-1;
-			if (!*opt) {
-				break;
-			} else if (!memcmp(opt, "list", 5)) {
-				ldd_mode = 1;
-			} else if (!memcmp(opt, "library-path", 12)) {
-				if (opt[12]=='=') env_path = opt+13;
-				else if (opt[12]) *argv = 0;
-				else if (*argv) env_path = *argv++;
-			} else if (!memcmp(opt, "preload", 7)) {
-				if (opt[7]=='=') env_preload = opt+8;
-				else if (opt[7]) *argv = 0;
-				else if (*argv) env_preload = *argv++;
-			} else {
-				argv[0] = 0;
-			}
-		}
-		argv[-1] = (void *)(argc - (argv-argv_orig));
-		if (!argv[0]) {
-			dprintf(2, "musl libc (" LDSO_ARCH ")\n"
-				"Version %s\n"
-				"Dynamic Program Loader\n"
-				"Usage: %s [options] [--] pathname%s\n",
-				__libc_get_version(), ldname,
-				ldd_mode ? "" : " [args]");
-			_exit(1);
-		}
-		fd = open(argv[0], O_RDONLY);
-		if (fd < 0) {
-			dprintf(2, "%s: cannot load %s: %s\n", ldname, argv[0], strerror(errno));
-			_exit(1);
-		}
-		runtime = 1;
-		Ehdr *ehdr = (void *)map_library(fd, &app);
-		if (!ehdr) {
-			dprintf(2, "%s: %s: Not a valid dynamic program\n", ldname, argv[0]);
-			_exit(1);
-		}
-		runtime = 0;
-		close(fd);
-		ldso.name = ldname;
-		app.name = argv[0];
-		aux[AT_ENTRY] = (size_t)laddr(&app, ehdr->e_entry);
-		/* Find the name that would have been used for the dynamic
-		 * linker had ldd not taken its place. */
-		if (ldd_mode) {
-			for (i=0; i<app.phnum; i++) {
-				if (app.phdr[i].p_type == PT_INTERP)
-					ldso.name = laddr(&app, app.phdr[i].p_vaddr);
-			}
-			dprintf(1, "\t%s (%p)\n", ldso.name, ldso.base);
-		}
-	}
-	if (app.tls.size) {
-		libc.tls_head = tls_tail = &app.tls;
-		app.tls_id = tls_cnt = 1;
+  /* If the main program was already loaded by the kernel,
+   * AT_PHDR will point to some location other than the dynamic
+   * linker's program headers. */
+  if (aux[AT_PHDR] != (size_t)ldso.phdr) {
+    size_t interp_off = 0;
+    size_t tls_image = 0;
+    /* Find load address of the main program, via AT_PHDR vs PT_PHDR. */
+    Phdr* phdr = app.phdr = (void*)aux[AT_PHDR];
+    app.phnum = aux[AT_PHNUM];
+    app.phentsize = aux[AT_PHENT];
+    for (i = aux[AT_PHNUM]; i;
+         i--, phdr = (void*)((char*)phdr + aux[AT_PHENT])) {
+      if (phdr->p_type == PT_PHDR)
+        app.base = (void*)(aux[AT_PHDR] - phdr->p_vaddr);
+      else if (phdr->p_type == PT_INTERP)
+        interp_off = (size_t)phdr->p_vaddr;
+      else if (phdr->p_type == PT_TLS) {
+        tls_image = phdr->p_vaddr;
+        app.tls.len = phdr->p_filesz;
+        app.tls.size = phdr->p_memsz;
+        app.tls.align = phdr->p_align;
+      }
+    }
+    if (DL_FDPIC)
+      app.loadmap = app_loadmap;
+    if (app.tls.size)
+      app.tls.image = laddr(&app, tls_image);
+    if (interp_off)
+      ldso.name = laddr(&app, interp_off);
+    if ((aux[0] & (1UL << AT_EXECFN)) &&
+        strncmp((char*)aux[AT_EXECFN], "/proc/", 6))
+      app.name = (char*)aux[AT_EXECFN];
+    else
+      app.name = argv[0];
+    kernel_mapped_dso(&app);
+  } else {
+    int fd;
+    char* ldname = argv[0];
+    size_t l = strlen(ldname);
+    if (l >= 3 && !strcmp(ldname + l - 3, "ldd"))
+      ldd_mode = 1;
+    argv++;
+    while (argv[0] && argv[0][0] == '-' && argv[0][1] == '-') {
+      char* opt = argv[0] + 2;
+      *argv++ = (void*)-1;
+      if (!*opt) {
+        break;
+      } else if (!memcmp(opt, "list", 5)) {
+        ldd_mode = 1;
+      } else if (!memcmp(opt, "library-path", 12)) {
+        if (opt[12] == '=')
+          env_path = opt + 13;
+        else if (opt[12])
+          *argv = 0;
+        else if (*argv)
+          env_path = *argv++;
+      } else if (!memcmp(opt, "preload", 7)) {
+        if (opt[7] == '=')
+          env_preload = opt + 8;
+        else if (opt[7])
+          *argv = 0;
+        else if (*argv)
+          env_preload = *argv++;
+      } else {
+        argv[0] = 0;
+      }
+    }
+    argv[-1] = (void*)(argc - (argv - argv_orig));
+    if (!argv[0]) {
+      dprintf(2, "musl libc (" LDSO_ARCH
+                 ")\n"
+                 "Version %s\n"
+                 "Dynamic Program Loader\n"
+                 "Usage: %s [options] [--] pathname%s\n",
+              __libc_get_version(), ldname, ldd_mode ? "" : " [args]");
+      _exit(1);
+    }
+    fd = open(argv[0], O_RDONLY);
+    if (fd < 0) {
+      dprintf(2, "%s: cannot load %s: %s\n", ldname, argv[0], strerror(errno));
+      _exit(1);
+    }
+    runtime = 1;
+    Ehdr* ehdr = (void*)map_library(fd, &app);
+    if (!ehdr) {
+      dprintf(2, "%s: %s: Not a valid dynamic program\n", ldname, argv[0]);
+      _exit(1);
+    }
+    runtime = 0;
+    close(fd);
+    ldso.name = ldname;
+    app.name = argv[0];
+    aux[AT_ENTRY] = (size_t)laddr(&app, ehdr->e_entry);
+    /* Find the name that would have been used for the dynamic
+     * linker had ldd not taken its place. */
+    if (ldd_mode) {
+      for (i = 0; i < app.phnum; i++) {
+        if (app.phdr[i].p_type == PT_INTERP)
+          ldso.name = laddr(&app, app.phdr[i].p_vaddr);
+      }
+      dprintf(1, "\t%s (%p)\n", ldso.name, ldso.base);
+    }
+  }
+  if (app.tls.size) {
+    libc.tls_head = tls_tail = &app.tls;
+    app.tls_id = tls_cnt = 1;
 #ifdef TLS_ABOVE_TP
-		app.tls.offset = 0;
-		tls_offset = app.tls.size
-			+ ( -((uintptr_t)app.tls.image + app.tls.size)
-			& (app.tls.align-1) );
+    app.tls.offset = 0;
+    tls_offset = app.tls.size + (-((uintptr_t)app.tls.image + app.tls.size) &
+                                 (app.tls.align - 1));
 #else
-		tls_offset = app.tls.offset = app.tls.size
-			+ ( -((uintptr_t)app.tls.image + app.tls.size)
-			& (app.tls.align-1) );
+    tls_offset = app.tls.offset =
+        app.tls.size +
+        (-((uintptr_t)app.tls.image + app.tls.size) & (app.tls.align - 1));
 #endif
-		tls_align = MAXP2(tls_align, app.tls.align);
-	}
-	app.global = 1;
-	decode_dyn(&app);
-	if (DL_FDPIC) {
-		makefuncdescs(&app);
-		if (!app.loadmap) {
-			app.loadmap = (void *)&app_dummy_loadmap;
-			app.loadmap->nsegs = 1;
-			app.loadmap->segs[0].addr = (size_t)app.map;
-			app.loadmap->segs[0].p_vaddr = (size_t)app.map
-				- (size_t)app.base;
-			app.loadmap->segs[0].p_memsz = app.map_len;
-		}
-		argv[-3] = (void *)app.loadmap;
-	}
+    tls_align = MAXP2(tls_align, app.tls.align);
+  }
+  app.global = 1;
+  decode_dyn(&app);
+  if (DL_FDPIC) {
+    makefuncdescs(&app);
+    if (!app.loadmap) {
+      app.loadmap = (void*)&app_dummy_loadmap;
+      app.loadmap->nsegs = 1;
+      app.loadmap->segs[0].addr = (size_t)app.map;
+      app.loadmap->segs[0].p_vaddr = (size_t)app.map - (size_t)app.base;
+      app.loadmap->segs[0].p_memsz = app.map_len;
+    }
+    argv[-3] = (void*)app.loadmap;
+  }
 
-	/* Attach to vdso, if provided by the kernel */
-	if (search_vec(auxv, &vdso_base, AT_SYSINFO_EHDR)) {
-		Ehdr *ehdr = (void *)vdso_base;
-		Phdr *phdr = vdso.phdr = (void *)(vdso_base + ehdr->e_phoff);
-		vdso.phnum = ehdr->e_phnum;
-		vdso.phentsize = ehdr->e_phentsize;
-		for (i=ehdr->e_phnum; i; i--, phdr=(void *)((char *)phdr + ehdr->e_phentsize)) {
-			if (phdr->p_type == PT_DYNAMIC)
-				vdso.dynv = (void *)(vdso_base + phdr->p_offset);
-			if (phdr->p_type == PT_LOAD)
-				vdso.base = (void *)(vdso_base - phdr->p_vaddr + phdr->p_offset);
-		}
-		vdso.name = "";
-		vdso.shortname = "linux-gate.so.1";
-		vdso.global = 1;
-		vdso.relocated = 1;
-		decode_dyn(&vdso);
-		vdso.prev = &ldso;
-		ldso.next = &vdso;
-	}
+  /* Attach to vdso, if provided by the kernel */
+  if (search_vec(auxv, &vdso_base, AT_SYSINFO_EHDR)) {
+    Ehdr* ehdr = (void*)vdso_base;
+    Phdr* phdr = vdso.phdr = (void*)(vdso_base + ehdr->e_phoff);
+    vdso.phnum = ehdr->e_phnum;
+    vdso.phentsize = ehdr->e_phentsize;
+    for (i = ehdr->e_phnum; i;
+         i--, phdr = (void*)((char*)phdr + ehdr->e_phentsize)) {
+      if (phdr->p_type == PT_DYNAMIC)
+        vdso.dynv = (void*)(vdso_base + phdr->p_offset);
+      if (phdr->p_type == PT_LOAD)
+        vdso.base = (void*)(vdso_base - phdr->p_vaddr + phdr->p_offset);
+    }
+    vdso.name = "";
+    vdso.shortname = "linux-gate.so.1";
+    vdso.global = 1;
+    vdso.relocated = 1;
+    decode_dyn(&vdso);
+    vdso.prev = &ldso;
+    ldso.next = &vdso;
+  }
 
-	/* Initial dso chain consists only of the app. */
-	head = tail = &app;
+  /* Initial dso chain consists only of the app. */
+  head = tail = &app;
 
-	/* Donate unused parts of app and library mapping to malloc */
-	reclaim_gaps(&app);
-	reclaim_gaps(&ldso);
+  /* Donate unused parts of app and library mapping to malloc */
+  reclaim_gaps(&app);
+  reclaim_gaps(&ldso);
 
-	/* Load preload/needed libraries, add their symbols to the global
-	 * namespace, and perform all remaining relocations. */
-	if (env_preload) load_preload(env_preload);
-	load_deps(&app);
-	make_global(&app);
+  /* Load preload/needed libraries, add their symbols to the global
+   * namespace, and perform all remaining relocations. */
+  if (env_preload)
+    load_preload(env_preload);
+  load_deps(&app);
+  make_global(&app);
 
-	for (i=0; app.dynv[i]; i+=2) {
-		if (!DT_DEBUG_INDIRECT && app.dynv[i]==DT_DEBUG)
-			app.dynv[i+1] = (size_t)&debug;
-		if (DT_DEBUG_INDIRECT && app.dynv[i]==DT_DEBUG_INDIRECT) {
-			size_t *ptr = (size_t *) app.dynv[i+1];
-			*ptr = (size_t)&debug;
-		}
-	}
+  for (i = 0; app.dynv[i]; i += 2) {
+    if (!DT_DEBUG_INDIRECT && app.dynv[i] == DT_DEBUG)
+      app.dynv[i + 1] = (size_t)&debug;
+    if (DT_DEBUG_INDIRECT && app.dynv[i] == DT_DEBUG_INDIRECT) {
+      size_t* ptr = (size_t*)app.dynv[i + 1];
+      *ptr = (size_t)&debug;
+    }
+  }
 
-	/* The main program must be relocated LAST since it may contin
-	 * copy relocations which depend on libraries' relocations. */
-	reloc_all(app.next);
-	reloc_all(&app);
+  /* The main program must be relocated LAST since it may contin
+   * copy relocations which depend on libraries' relocations. */
+  reloc_all(app.next);
+  reloc_all(&app);
 
-	update_tls_size();
-	if (libc.tls_size > sizeof builtin_tls || tls_align > MIN_TLS_ALIGN) {
-		void *initial_tls = calloc(libc.tls_size, 1);
-		if (!initial_tls) {
-			dprintf(2, "%s: Error getting %zu bytes thread-local storage: %m\n",
-				argv[0], libc.tls_size);
-			_exit(127);
-		}
-		if (__init_tp(__copy_tls(initial_tls)) < 0) {
-			a_crash();
-		}
-	} else {
-		size_t tmp_tls_size = libc.tls_size;
-		pthread_t self = __pthread_self();
-		/* Temporarily set the tls size to the full size of
-		 * builtin_tls so that __copy_tls will use the same layout
-		 * as it did for before. Then check, just to be safe. */
-		libc.tls_size = sizeof builtin_tls;
-		if (__copy_tls((void*)builtin_tls) != self) a_crash();
-		libc.tls_size = tmp_tls_size;
-	}
-	static_tls_cnt = tls_cnt;
+  update_tls_size();
+  if (libc.tls_size > sizeof builtin_tls || tls_align > MIN_TLS_ALIGN) {
+    void* initial_tls = calloc(libc.tls_size, 1);
+    if (!initial_tls) {
+      dprintf(2, "%s: Error getting %zu bytes thread-local storage: %m\n",
+              argv[0], libc.tls_size);
+      _exit(127);
+    }
+    if (__init_tp(__copy_tls(initial_tls)) < 0) {
+      a_crash();
+    }
+  } else {
+    size_t tmp_tls_size = libc.tls_size;
+    pthread_t self = __pthread_self();
+    /* Temporarily set the tls size to the full size of
+     * builtin_tls so that __copy_tls will use the same layout
+     * as it did for before. Then check, just to be safe. */
+    libc.tls_size = sizeof builtin_tls;
+    if (__copy_tls((void*)builtin_tls) != self)
+      a_crash();
+    libc.tls_size = tmp_tls_size;
+  }
+  static_tls_cnt = tls_cnt;
 
-	if (ldso_fail) _exit(127);
-	if (ldd_mode) _exit(0);
+  if (ldso_fail)
+    _exit(127);
+  if (ldd_mode)
+    _exit(0);
 
-	/* Switch to runtime mode: any further failures in the dynamic
-	 * linker are a reportable failure rather than a fatal startup
-	 * error. */
-	runtime = 1;
+  /* Switch to runtime mode: any further failures in the dynamic
+   * linker are a reportable failure rather than a fatal startup
+   * error. */
+  runtime = 1;
 
-	debug.ver = 1;
-	debug.bp = dl_debug_state;
-	debug.head = head;
-	debug.base = ldso.base;
-	debug.state = 0;
-	_dl_debug_state();
+  debug.ver = 1;
+  debug.bp = dl_debug_state;
+  debug.head = head;
+  debug.base = ldso.base;
+  debug.state = 0;
+  _dl_debug_state();
 
-	errno = 0;
+  errno = 0;
 
-	CRTJMP((void *)aux[AT_ENTRY], argv-1);
-	for(;;);
+  CRTJMP((void*)aux[AT_ENTRY], argv - 1);
+  for (;;)
+    ;
 }
 
-void *dlopen(const char *file, int mode)
-{
-	struct dso *volatile p, *orig_tail, *next;
-	struct tls_module *orig_tls_tail;
-	size_t orig_tls_cnt, orig_tls_offset, orig_tls_align;
-	size_t i;
-	int cs;
-	jmp_buf jb;
+void* dlopen(const char* file, int mode) {
+  struct dso* volatile p, *orig_tail, *next;
+  struct tls_module* orig_tls_tail;
+  size_t orig_tls_cnt, orig_tls_offset, orig_tls_align;
+  size_t i;
+  int cs;
+  jmp_buf jb;
 
-	if (!file) return head;
+  if (!file)
+    return head;
 
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-	pthread_rwlock_wrlock(&lock);
-	__inhibit_ptc();
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  pthread_rwlock_wrlock(&lock);
+  __inhibit_ptc();
 
-	p = 0;
-	orig_tls_tail = tls_tail;
-	orig_tls_cnt = tls_cnt;
-	orig_tls_offset = tls_offset;
-	orig_tls_align = tls_align;
-	orig_tail = tail;
-	noload = mode & RTLD_NOLOAD;
+  p = 0;
+  orig_tls_tail = tls_tail;
+  orig_tls_cnt = tls_cnt;
+  orig_tls_offset = tls_offset;
+  orig_tls_align = tls_align;
+  orig_tail = tail;
+  noload = mode & RTLD_NOLOAD;
 
-	rtld_fail = &jb;
-	if (setjmp(*rtld_fail)) {
-		/* Clean up anything new that was (partially) loaded */
-		if (p && p->deps) for (i=0; p->deps[i]; i++)
-			if (p->deps[i]->global < 0)
-				p->deps[i]->global = 0;
-		for (p=orig_tail->next; p; p=next) {
-			next = p->next;
-			while (p->td_index) {
-				void *tmp = p->td_index->next;
-				free(p->td_index);
-				p->td_index = tmp;
-			}
-			free(p->funcdescs);
-			if (p->rpath != p->rpath_orig)
-				free(p->rpath);
-			free(p->deps);
-			unmap_library(p);
-			free(p);
-		}
-		if (!orig_tls_tail) libc.tls_head = 0;
-		tls_tail = orig_tls_tail;
-		tls_cnt = orig_tls_cnt;
-		tls_offset = orig_tls_offset;
-		tls_align = orig_tls_align;
-		tail = orig_tail;
-		tail->next = 0;
-		p = 0;
-		goto end;
-	} else p = load_library(file, head);
+  rtld_fail = &jb;
+  if (setjmp(*rtld_fail)) {
+    /* Clean up anything new that was (partially) loaded */
+    if (p && p->deps)
+      for (i = 0; p->deps[i]; i++)
+        if (p->deps[i]->global < 0)
+          p->deps[i]->global = 0;
+    for (p = orig_tail->next; p; p = next) {
+      next = p->next;
+      while (p->td_index) {
+        void* tmp = p->td_index->next;
+        free(p->td_index);
+        p->td_index = tmp;
+      }
+      free(p->funcdescs);
+      if (p->rpath != p->rpath_orig)
+        free(p->rpath);
+      free(p->deps);
+      unmap_library(p);
+      free(p);
+    }
+    if (!orig_tls_tail)
+      libc.tls_head = 0;
+    tls_tail = orig_tls_tail;
+    tls_cnt = orig_tls_cnt;
+    tls_offset = orig_tls_offset;
+    tls_align = orig_tls_align;
+    tail = orig_tail;
+    tail->next = 0;
+    p = 0;
+    goto end;
+  } else
+    p = load_library(file, head);
 
-	if (!p) {
-		error(noload ?
-			"Library %s is not already loaded" :
-			"Error loading shared library %s: %m",
-			file);
-		goto end;
-	}
+  if (!p) {
+    error(noload ? "Library %s is not already loaded"
+                 : "Error loading shared library %s: %m",
+          file);
+    goto end;
+  }
 
-	/* First load handling */
-	if (!p->deps) {
-		load_deps(p);
-		if (p->deps) for (i=0; p->deps[i]; i++)
-			if (!p->deps[i]->global)
-				p->deps[i]->global = -1;
-		if (!p->global) p->global = -1;
-		reloc_all(p);
-		if (p->deps) for (i=0; p->deps[i]; i++)
-			if (p->deps[i]->global < 0)
-				p->deps[i]->global = 0;
-		if (p->global < 0) p->global = 0;
-	}
+  /* First load handling */
+  if (!p->deps) {
+    load_deps(p);
+    if (p->deps)
+      for (i = 0; p->deps[i]; i++)
+        if (!p->deps[i]->global)
+          p->deps[i]->global = -1;
+    if (!p->global)
+      p->global = -1;
+    reloc_all(p);
+    if (p->deps)
+      for (i = 0; p->deps[i]; i++)
+        if (p->deps[i]->global < 0)
+          p->deps[i]->global = 0;
+    if (p->global < 0)
+      p->global = 0;
+  }
 
-	if (mode & RTLD_GLOBAL) {
-		if (p->deps) for (i=0; p->deps[i]; i++)
-			p->deps[i]->global = 1;
-		p->global = 1;
-	}
+  if (mode & RTLD_GLOBAL) {
+    if (p->deps)
+      for (i = 0; p->deps[i]; i++)
+        p->deps[i]->global = 1;
+    p->global = 1;
+  }
 
-	update_tls_size();
-	_dl_debug_state();
-	orig_tail = tail;
+  update_tls_size();
+  _dl_debug_state();
+  orig_tail = tail;
 end:
-	__release_ptc();
-	if (p) gencnt++;
-	pthread_rwlock_unlock(&lock);
-	if (p) do_init_fini(orig_tail);
-	pthread_setcancelstate(cs, 0);
-	return p;
+  __release_ptc();
+  if (p)
+    gencnt++;
+  pthread_rwlock_unlock(&lock);
+  if (p)
+    do_init_fini(orig_tail);
+  pthread_setcancelstate(cs, 0);
+  return p;
 }
 
-__attribute__((__visibility__("hidden")))
-int __dl_invalid_handle(void *h)
-{
-	struct dso *p;
-	for (p=head; p; p=p->next) if (h==p) return 0;
-	error("Invalid library handle %p", (void *)h);
-	return 1;
+__attribute__((__visibility__("hidden"))) int __dl_invalid_handle(void* h) {
+  struct dso* p;
+  for (p = head; p; p = p->next)
+    if (h == p)
+      return 0;
+  error("Invalid library handle %p", (void*)h);
+  return 1;
 }
 
-static void *addr2dso(size_t a)
-{
-	struct dso *p;
-	size_t i;
-	if (DL_FDPIC) for (p=head; p; p=p->next) {
-		i = count_syms(p);
-		if (a-(size_t)p->funcdescs < i*sizeof(*p->funcdescs))
-			return p;
-	}
-	for (p=head; p; p=p->next) {
-		if (DL_FDPIC && p->loadmap) {
-			for (i=0; i<p->loadmap->nsegs; i++) {
-				if (a-p->loadmap->segs[i].p_vaddr
-				    < p->loadmap->segs[i].p_memsz)
-					return p;
-			}
-		} else {
-			if (a-(size_t)p->map < p->map_len)
-				return p;
-		}
-	}
-	return 0;
+static void* addr2dso(size_t a) {
+  struct dso* p;
+  size_t i;
+  if (DL_FDPIC)
+    for (p = head; p; p = p->next) {
+      i = count_syms(p);
+      if (a - (size_t)p->funcdescs < i * sizeof(*p->funcdescs))
+        return p;
+    }
+  for (p = head; p; p = p->next) {
+    if (DL_FDPIC && p->loadmap) {
+      for (i = 0; i < p->loadmap->nsegs; i++) {
+        if (a - p->loadmap->segs[i].p_vaddr < p->loadmap->segs[i].p_memsz)
+          return p;
+      }
+    } else {
+      if (a - (size_t)p->map < p->map_len)
+        return p;
+    }
+  }
+  return 0;
 }
 
-void *__tls_get_addr(size_t *);
+void* __tls_get_addr(size_t*);
 
-static void *do_dlsym(struct dso *p, const char *s, void *ra)
-{
-	size_t i;
-	uint32_t h = 0, gh = 0, *ght;
-	Sym *sym;
-	if (p == head || p == RTLD_DEFAULT || p == RTLD_NEXT) {
-		if (p == RTLD_DEFAULT) {
-			p = head;
-		} else if (p == RTLD_NEXT) {
-			p = addr2dso((size_t)ra);
-			if (!p) p=head;
-			p = p->next;
-		}
-		struct symdef def = find_sym(p, s, 0);
-		if (!def.sym) goto failed;
-		if ((def.sym->st_info&0xf) == STT_TLS)
-			return __tls_get_addr((size_t []){def.dso->tls_id, def.sym->st_value});
-		if (DL_FDPIC && (def.sym->st_info&0xf) == STT_FUNC)
-			return def.dso->funcdescs + (def.sym - def.dso->syms);
-		return laddr(def.dso, def.sym->st_value);
-	}
-	if (__dl_invalid_handle(p))
-		return 0;
-	if ((ght = p->ghashtab)) {
-		gh = gnu_hash(s);
-		sym = gnu_lookup(gh, ght, p, s);
-	} else {
-		h = sysv_hash(s);
-		sym = sysv_lookup(s, h, p);
-	}
-	if (sym && (sym->st_info&0xf) == STT_TLS)
-		return __tls_get_addr((size_t []){p->tls_id, sym->st_value});
-	if (DL_FDPIC && sym && sym->st_shndx && (sym->st_info&0xf) == STT_FUNC)
-		return p->funcdescs + (sym - p->syms);
-	if (sym && sym->st_value && (1<<(sym->st_info&0xf) & OK_TYPES))
-		return laddr(p, sym->st_value);
-	if (p->deps) for (i=0; p->deps[i]; i++) {
-		if ((ght = p->deps[i]->ghashtab)) {
-			if (!gh) gh = gnu_hash(s);
-			sym = gnu_lookup(gh, ght, p->deps[i], s);
-		} else {
-			if (!h) h = sysv_hash(s);
-			sym = sysv_lookup(s, h, p->deps[i]);
-		}
-		if (sym && (sym->st_info&0xf) == STT_TLS)
-			return __tls_get_addr((size_t []){p->deps[i]->tls_id, sym->st_value});
-		if (DL_FDPIC && sym && sym->st_shndx && (sym->st_info&0xf) == STT_FUNC)
-			return p->deps[i]->funcdescs + (sym - p->deps[i]->syms);
-		if (sym && sym->st_value && (1<<(sym->st_info&0xf) & OK_TYPES))
-			return laddr(p->deps[i], sym->st_value);
-	}
+static void* do_dlsym(struct dso* p, const char* s, void* ra) {
+  size_t i;
+  uint32_t h = 0, gh = 0, *ght;
+  Sym* sym;
+  if (p == head || p == RTLD_DEFAULT || p == RTLD_NEXT) {
+    if (p == RTLD_DEFAULT) {
+      p = head;
+    } else if (p == RTLD_NEXT) {
+      p = addr2dso((size_t)ra);
+      if (!p)
+        p = head;
+      p = p->next;
+    }
+    struct symdef def = find_sym(p, s, 0);
+    if (!def.sym)
+      goto failed;
+    if ((def.sym->st_info & 0xf) == STT_TLS)
+      return __tls_get_addr((size_t[]){def.dso->tls_id, def.sym->st_value});
+    if (DL_FDPIC && (def.sym->st_info & 0xf) == STT_FUNC)
+      return def.dso->funcdescs + (def.sym - def.dso->syms);
+    return laddr(def.dso, def.sym->st_value);
+  }
+  if (__dl_invalid_handle(p))
+    return 0;
+  if ((ght = p->ghashtab)) {
+    gh = gnu_hash(s);
+    sym = gnu_lookup(gh, ght, p, s);
+  } else {
+    h = sysv_hash(s);
+    sym = sysv_lookup(s, h, p);
+  }
+  if (sym && (sym->st_info & 0xf) == STT_TLS)
+    return __tls_get_addr((size_t[]){p->tls_id, sym->st_value});
+  if (DL_FDPIC && sym && sym->st_shndx && (sym->st_info & 0xf) == STT_FUNC)
+    return p->funcdescs + (sym - p->syms);
+  if (sym && sym->st_value && (1 << (sym->st_info & 0xf) & OK_TYPES))
+    return laddr(p, sym->st_value);
+  if (p->deps)
+    for (i = 0; p->deps[i]; i++) {
+      if ((ght = p->deps[i]->ghashtab)) {
+        if (!gh)
+          gh = gnu_hash(s);
+        sym = gnu_lookup(gh, ght, p->deps[i], s);
+      } else {
+        if (!h)
+          h = sysv_hash(s);
+        sym = sysv_lookup(s, h, p->deps[i]);
+      }
+      if (sym && (sym->st_info & 0xf) == STT_TLS)
+        return __tls_get_addr((size_t[]){p->deps[i]->tls_id, sym->st_value});
+      if (DL_FDPIC && sym && sym->st_shndx && (sym->st_info & 0xf) == STT_FUNC)
+        return p->deps[i]->funcdescs + (sym - p->deps[i]->syms);
+      if (sym && sym->st_value && (1 << (sym->st_info & 0xf) & OK_TYPES))
+        return laddr(p->deps[i], sym->st_value);
+    }
 failed:
-	error("Symbol not found: %s", s);
-	return 0;
+  error("Symbol not found: %s", s);
+  return 0;
 }
 
-int dladdr(const void *addr, Dl_info *info)
-{
-	struct dso *p;
-	Sym *sym, *bestsym;
-	uint32_t nsym;
-	char *strings;
-	void *best = 0;
+int dladdr(const void* addr, Dl_info* info) {
+  struct dso* p;
+  Sym *sym, *bestsym;
+  uint32_t nsym;
+  char* strings;
+  void* best = 0;
 
-	pthread_rwlock_rdlock(&lock);
-	p = addr2dso((size_t)addr);
-	pthread_rwlock_unlock(&lock);
+  pthread_rwlock_rdlock(&lock);
+  p = addr2dso((size_t)addr);
+  pthread_rwlock_unlock(&lock);
 
-	if (!p) return 0;
+  if (!p)
+    return 0;
 
-	sym = p->syms;
-	strings = p->strings;
-	nsym = count_syms(p);
+  sym = p->syms;
+  strings = p->strings;
+  nsym = count_syms(p);
 
-	if (DL_FDPIC) {
-		size_t idx = ((size_t)addr-(size_t)p->funcdescs)
-			/ sizeof(*p->funcdescs);
-		if (idx < nsym && (sym[idx].st_info&0xf) == STT_FUNC) {
-			best = p->funcdescs + idx;
-			bestsym = sym + idx;
-		}
-	}
+  if (DL_FDPIC) {
+    size_t idx = ((size_t)addr - (size_t)p->funcdescs) / sizeof(*p->funcdescs);
+    if (idx < nsym && (sym[idx].st_info & 0xf) == STT_FUNC) {
+      best = p->funcdescs + idx;
+      bestsym = sym + idx;
+    }
+  }
 
-	if (!best) for (; nsym; nsym--, sym++) {
-		if (sym->st_value
-		 && (1<<(sym->st_info&0xf) & OK_TYPES)
-		 && (1<<(sym->st_info>>4) & OK_BINDS)) {
-			void *symaddr = laddr(p, sym->st_value);
-			if (symaddr > addr || symaddr < best)
-				continue;
-			best = symaddr;
-			bestsym = sym;
-			if (addr == symaddr)
-				break;
-		}
-	}
+  if (!best)
+    for (; nsym; nsym--, sym++) {
+      if (sym->st_value && (1 << (sym->st_info & 0xf) & OK_TYPES) &&
+          (1 << (sym->st_info >> 4) & OK_BINDS)) {
+        void* symaddr = laddr(p, sym->st_value);
+        if (symaddr > addr || symaddr < best)
+          continue;
+        best = symaddr;
+        bestsym = sym;
+        if (addr == symaddr)
+          break;
+      }
+    }
 
-	if (!best) return 0;
+  if (!best)
+    return 0;
 
-	if (DL_FDPIC && (bestsym->st_info&0xf) == STT_FUNC)
-		best = p->funcdescs + (bestsym - p->syms);
+  if (DL_FDPIC && (bestsym->st_info & 0xf) == STT_FUNC)
+    best = p->funcdescs + (bestsym - p->syms);
 
-	info->dli_fname = p->name;
-	info->dli_fbase = p->base;
-	info->dli_sname = strings + bestsym->st_name;
-	info->dli_saddr = best;
+  info->dli_fname = p->name;
+  info->dli_fbase = p->base;
+  info->dli_sname = strings + bestsym->st_name;
+  info->dli_saddr = best;
 
-	return 1;
+  return 1;
 }
 
-__attribute__((__visibility__("hidden")))
-void *__dlsym(void *restrict p, const char *restrict s, void *restrict ra)
-{
-	void *res;
-	pthread_rwlock_rdlock(&lock);
-	res = do_dlsym(p, s, ra);
-	pthread_rwlock_unlock(&lock);
-	return res;
+__attribute__((__visibility__("hidden"))) void* __dlsym(void* restrict p,
+                                                        const char* restrict s,
+                                                        void* restrict ra) {
+  void* res;
+  pthread_rwlock_rdlock(&lock);
+  res = do_dlsym(p, s, ra);
+  pthread_rwlock_unlock(&lock);
+  return res;
 }
 
-int dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size_t size, void *data), void *data)
-{
-	struct dso *current;
-	struct dl_phdr_info info;
-	int ret = 0;
-	for(current = head; current;) {
-		info.dlpi_addr      = (uintptr_t)current->base;
-		info.dlpi_name      = current->name;
-		info.dlpi_phdr      = current->phdr;
-		info.dlpi_phnum     = current->phnum;
-		info.dlpi_adds      = gencnt;
-		info.dlpi_subs      = 0;
-		info.dlpi_tls_modid = current->tls_id;
-		info.dlpi_tls_data  = current->tls.image;
+int dl_iterate_phdr(int (*callback)(struct dl_phdr_info* info,
+                                    size_t size,
+                                    void* data),
+                    void* data) {
+  struct dso* current;
+  struct dl_phdr_info info;
+  int ret = 0;
+  for (current = head; current;) {
+    info.dlpi_addr = (uintptr_t)current->base;
+    info.dlpi_name = current->name;
+    info.dlpi_phdr = current->phdr;
+    info.dlpi_phnum = current->phnum;
+    info.dlpi_adds = gencnt;
+    info.dlpi_subs = 0;
+    info.dlpi_tls_modid = current->tls_id;
+    info.dlpi_tls_data = current->tls.image;
 
-		ret = (callback)(&info, sizeof (info), data);
+    ret = (callback)(&info, sizeof(info), data);
 
-		if (ret != 0) break;
+    if (ret != 0)
+      break;
 
-		pthread_rwlock_rdlock(&lock);
-		current = current->next;
-		pthread_rwlock_unlock(&lock);
-	}
-	return ret;
+    pthread_rwlock_rdlock(&lock);
+    current = current->next;
+    pthread_rwlock_unlock(&lock);
+  }
+  return ret;
 }
 
-__attribute__((__visibility__("hidden")))
-void __dl_vseterr(const char *, va_list);
+__attribute__((__visibility__("hidden"))) void __dl_vseterr(const char*,
+                                                            va_list);
 
-static void error(const char *fmt, ...)
-{
-	va_list ap;
-	va_start(ap, fmt);
-	if (!runtime) {
-		vdprintf(2, fmt, ap);
-		dprintf(2, "\n");
-		ldso_fail = 1;
-		va_end(ap);
-		return;
-	}
-	__dl_vseterr(fmt, ap);
-	va_end(ap);
+static void error(const char* fmt, ...) {
+  va_list ap;
+  va_start(ap, fmt);
+  if (!runtime) {
+    vdprintf(2, fmt, ap);
+    dprintf(2, "\n");
+    ldso_fail = 1;
+    va_end(ap);
+    return;
+  }
+  __dl_vseterr(fmt, ap);
+  va_end(ap);
 }
diff --git a/fusl/src/aio/aio.c b/fusl/src/aio/aio.c
index aafd8e8..d9d3c89 100644
--- a/fusl/src/aio/aio.c
+++ b/fusl/src/aio/aio.c
@@ -42,333 +42,343 @@
  */
 
 struct aio_args {
-	struct aiocb *cb;
-	int op;
-	int err;
-	sem_t sem;
+  struct aiocb* cb;
+  int op;
+  int err;
+  sem_t sem;
 };
 
 struct aio_thread {
-	pthread_t td;
-	struct aiocb *cb;
-	struct aio_thread *next, *prev;
-	struct aio_queue *q;
-	volatile int running;
-	int err, op;
-	ssize_t ret;
+  pthread_t td;
+  struct aiocb* cb;
+  struct aio_thread *next, *prev;
+  struct aio_queue* q;
+  volatile int running;
+  int err, op;
+  ssize_t ret;
 };
 
 struct aio_queue {
-	int fd, seekable, append, ref, init;
-	pthread_mutex_t lock;
-	pthread_cond_t cond;
-	struct aio_thread *head;
+  int fd, seekable, append, ref, init;
+  pthread_mutex_t lock;
+  pthread_cond_t cond;
+  struct aio_thread* head;
 };
 
 static pthread_rwlock_t maplock = PTHREAD_RWLOCK_INITIALIZER;
-static struct aio_queue *****map;
+static struct aio_queue***** map;
 static volatile int aio_fd_cnt;
 volatile int __aio_fut;
 
-static struct aio_queue *__aio_get_queue(int fd, int need)
-{
-	if (fd < 0) return 0;
-	int a=fd>>24;
-	unsigned char b=fd>>16, c=fd>>8, d=fd;
-	struct aio_queue *q = 0;
-	pthread_rwlock_rdlock(&maplock);
-	if ((!map || !map[a] || !map[a][b] || !map[a][b][c] || !(q=map[a][b][c][d])) && need) {
-		pthread_rwlock_unlock(&maplock);
-		pthread_rwlock_wrlock(&maplock);
-		if (!map) map = calloc(sizeof *map, (-1U/2+1)>>24);
-		if (!map) goto out;
-		if (!map[a]) map[a] = calloc(sizeof **map, 256);
-		if (!map[a]) goto out;
-		if (!map[a][b]) map[a][b] = calloc(sizeof ***map, 256);
-		if (!map[a][b]) goto out;
-		if (!map[a][b][c]) map[a][b][c] = calloc(sizeof ****map, 256);
-		if (!map[a][b][c]) goto out;
-		if (!(q = map[a][b][c][d])) {
-			map[a][b][c][d] = q = calloc(sizeof *****map, 1);
-			if (q) {
-				q->fd = fd;
-				pthread_mutex_init(&q->lock, 0);
-				pthread_cond_init(&q->cond, 0);
-				a_inc(&aio_fd_cnt);
-			}
-		}
-	}
-	if (q) pthread_mutex_lock(&q->lock);
+static struct aio_queue* __aio_get_queue(int fd, int need) {
+  if (fd < 0)
+    return 0;
+  int a = fd >> 24;
+  unsigned char b = fd >> 16, c = fd >> 8, d = fd;
+  struct aio_queue* q = 0;
+  pthread_rwlock_rdlock(&maplock);
+  if ((!map || !map[a] || !map[a][b] || !map[a][b][c] ||
+       !(q = map[a][b][c][d])) &&
+      need) {
+    pthread_rwlock_unlock(&maplock);
+    pthread_rwlock_wrlock(&maplock);
+    if (!map)
+      map = calloc(sizeof *map, (-1U / 2 + 1) >> 24);
+    if (!map)
+      goto out;
+    if (!map[a])
+      map[a] = calloc(sizeof **map, 256);
+    if (!map[a])
+      goto out;
+    if (!map[a][b])
+      map[a][b] = calloc(sizeof ***map, 256);
+    if (!map[a][b])
+      goto out;
+    if (!map[a][b][c])
+      map[a][b][c] = calloc(sizeof ****map, 256);
+    if (!map[a][b][c])
+      goto out;
+    if (!(q = map[a][b][c][d])) {
+      map[a][b][c][d] = q = calloc(sizeof *****map, 1);
+      if (q) {
+        q->fd = fd;
+        pthread_mutex_init(&q->lock, 0);
+        pthread_cond_init(&q->cond, 0);
+        a_inc(&aio_fd_cnt);
+      }
+    }
+  }
+  if (q)
+    pthread_mutex_lock(&q->lock);
 out:
-	pthread_rwlock_unlock(&maplock);
-	return q;
+  pthread_rwlock_unlock(&maplock);
+  return q;
 }
 
-static void __aio_unref_queue(struct aio_queue *q)
-{
-	if (q->ref > 1) {
-		q->ref--;
-		pthread_mutex_unlock(&q->lock);
-		return;
-	}
+static void __aio_unref_queue(struct aio_queue* q) {
+  if (q->ref > 1) {
+    q->ref--;
+    pthread_mutex_unlock(&q->lock);
+    return;
+  }
 
-	/* This is potentially the last reference, but a new reference
-	 * may arrive since we cannot free the queue object without first
-	 * taking the maplock, which requires releasing the queue lock. */
-	pthread_mutex_unlock(&q->lock);
-	pthread_rwlock_wrlock(&maplock);
-	pthread_mutex_lock(&q->lock);
-	if (q->ref == 1) {
-		int fd=q->fd;
-		int a=fd>>24;
-		unsigned char b=fd>>16, c=fd>>8, d=fd;
-		map[a][b][c][d] = 0;
-		a_dec(&aio_fd_cnt);
-		pthread_rwlock_unlock(&maplock);
-		pthread_mutex_unlock(&q->lock);
-		free(q);
-	} else {
-		q->ref--;
-		pthread_rwlock_unlock(&maplock);
-		pthread_mutex_unlock(&q->lock);
-	}
+  /* This is potentially the last reference, but a new reference
+   * may arrive since we cannot free the queue object without first
+   * taking the maplock, which requires releasing the queue lock. */
+  pthread_mutex_unlock(&q->lock);
+  pthread_rwlock_wrlock(&maplock);
+  pthread_mutex_lock(&q->lock);
+  if (q->ref == 1) {
+    int fd = q->fd;
+    int a = fd >> 24;
+    unsigned char b = fd >> 16, c = fd >> 8, d = fd;
+    map[a][b][c][d] = 0;
+    a_dec(&aio_fd_cnt);
+    pthread_rwlock_unlock(&maplock);
+    pthread_mutex_unlock(&q->lock);
+    free(q);
+  } else {
+    q->ref--;
+    pthread_rwlock_unlock(&maplock);
+    pthread_mutex_unlock(&q->lock);
+  }
 }
 
-static void cleanup(void *ctx)
-{
-	struct aio_thread *at = ctx;
-	struct aio_queue *q = at->q;
-	struct aiocb *cb = at->cb;
-	struct sigevent sev = cb->aio_sigevent;
+static void cleanup(void* ctx) {
+  struct aio_thread* at = ctx;
+  struct aio_queue* q = at->q;
+  struct aiocb* cb = at->cb;
+  struct sigevent sev = cb->aio_sigevent;
 
-	/* There are four potential types of waiters we could need to wake:
-	 *   1. Callers of aio_cancel/close.
-	 *   2. Callers of aio_suspend with a single aiocb.
-	 *   3. Callers of aio_suspend with a list.
-	 *   4. AIO worker threads waiting for sequenced operations.
-	 * Types 1-3 are notified via atomics/futexes, mainly for AS-safety
-	 * considerations. Type 4 is notified later via a cond var. */
+  /* There are four potential types of waiters we could need to wake:
+   *   1. Callers of aio_cancel/close.
+   *   2. Callers of aio_suspend with a single aiocb.
+   *   3. Callers of aio_suspend with a list.
+   *   4. AIO worker threads waiting for sequenced operations.
+   * Types 1-3 are notified via atomics/futexes, mainly for AS-safety
+   * considerations. Type 4 is notified later via a cond var. */
 
-	cb->__ret = at->ret;
-	if (a_swap(&at->running, 0) < 0)
-		__wake(&at->running, -1, 1);
-	if (a_swap(&cb->__err, at->err) != EINPROGRESS)
-		__wake(&cb->__err, -1, 1);
-	if (a_swap(&__aio_fut, 0))
-		__wake(&__aio_fut, -1, 1);
+  cb->__ret = at->ret;
+  if (a_swap(&at->running, 0) < 0)
+    __wake(&at->running, -1, 1);
+  if (a_swap(&cb->__err, at->err) != EINPROGRESS)
+    __wake(&cb->__err, -1, 1);
+  if (a_swap(&__aio_fut, 0))
+    __wake(&__aio_fut, -1, 1);
 
-	pthread_mutex_lock(&q->lock);
+  pthread_mutex_lock(&q->lock);
 
-	if (at->next) at->next->prev = at->prev;
-	if (at->prev) at->prev->next = at->next;
-	else q->head = at->next;
+  if (at->next)
+    at->next->prev = at->prev;
+  if (at->prev)
+    at->prev->next = at->next;
+  else
+    q->head = at->next;
 
-	/* Signal aio worker threads waiting for sequenced operations. */
-	pthread_cond_broadcast(&q->cond);
+  /* Signal aio worker threads waiting for sequenced operations. */
+  pthread_cond_broadcast(&q->cond);
 
-	__aio_unref_queue(q);
+  __aio_unref_queue(q);
 
-	if (sev.sigev_notify == SIGEV_SIGNAL) {
-		siginfo_t si = {
-			.si_signo = sev.sigev_signo,
-			.si_value = sev.sigev_value,
-			.si_code = SI_ASYNCIO,
-			.si_pid = getpid(),
-			.si_uid = getuid()
-		};
-		__syscall(SYS_rt_sigqueueinfo, si.si_pid, si.si_signo, &si);
-	}
-	if (sev.sigev_notify == SIGEV_THREAD) {
-		a_store(&__pthread_self()->cancel, 0);
-		sev.sigev_notify_function(sev.sigev_value);
-	}
+  if (sev.sigev_notify == SIGEV_SIGNAL) {
+    siginfo_t si = {.si_signo = sev.sigev_signo,
+                    .si_value = sev.sigev_value,
+                    .si_code = SI_ASYNCIO,
+                    .si_pid = getpid(),
+                    .si_uid = getuid()};
+    __syscall(SYS_rt_sigqueueinfo, si.si_pid, si.si_signo, &si);
+  }
+  if (sev.sigev_notify == SIGEV_THREAD) {
+    a_store(&__pthread_self()->cancel, 0);
+    sev.sigev_notify_function(sev.sigev_value);
+  }
 }
 
-static void *io_thread_func(void *ctx)
-{
-	struct aio_thread at, *p;
+static void* io_thread_func(void* ctx) {
+  struct aio_thread at, *p;
 
-	struct aio_args *args = ctx;
-	struct aiocb *cb = args->cb;
-	int fd = cb->aio_fildes;
-	int op = args->op;
-	void *buf = (void *)cb->aio_buf;
-	size_t len = cb->aio_nbytes;
-	off_t off = cb->aio_offset;
+  struct aio_args* args = ctx;
+  struct aiocb* cb = args->cb;
+  int fd = cb->aio_fildes;
+  int op = args->op;
+  void* buf = (void*)cb->aio_buf;
+  size_t len = cb->aio_nbytes;
+  off_t off = cb->aio_offset;
 
-	struct aio_queue *q = __aio_get_queue(fd, 1);
-	ssize_t ret;
+  struct aio_queue* q = __aio_get_queue(fd, 1);
+  ssize_t ret;
 
-	args->err = q ? 0 : EAGAIN;
-	sem_post(&args->sem);
-	if (!q) return 0;
+  args->err = q ? 0 : EAGAIN;
+  sem_post(&args->sem);
+  if (!q)
+    return 0;
 
-	at.op = op;
-	at.running = 1;
-	at.ret = -1;
-	at.err = ECANCELED;
-	at.q = q;
-	at.td = __pthread_self();
-	at.cb = cb;
-	at.prev = 0;
-	if ((at.next = q->head)) at.next->prev = &at;
-	q->head = &at;
-	q->ref++;
+  at.op = op;
+  at.running = 1;
+  at.ret = -1;
+  at.err = ECANCELED;
+  at.q = q;
+  at.td = __pthread_self();
+  at.cb = cb;
+  at.prev = 0;
+  if ((at.next = q->head))
+    at.next->prev = &at;
+  q->head = &at;
+  q->ref++;
 
-	if (!q->init) {
-		int seekable = lseek(fd, 0, SEEK_CUR) >= 0;
-		q->seekable = seekable;
-		q->append = !seekable || (fcntl(fd, F_GETFL) & O_APPEND);
-		q->init = 1;
-	}
+  if (!q->init) {
+    int seekable = lseek(fd, 0, SEEK_CUR) >= 0;
+    q->seekable = seekable;
+    q->append = !seekable || (fcntl(fd, F_GETFL) & O_APPEND);
+    q->init = 1;
+  }
 
-	pthread_cleanup_push(cleanup, &at);
+  pthread_cleanup_push(cleanup, &at);
 
-	/* Wait for sequenced operations. */
-	if (op!=LIO_READ && (op!=LIO_WRITE || q->append)) {
-		for (;;) {
-			for (p=at.next; p && p->op!=LIO_WRITE; p=p->next);
-			if (!p) break;
-			pthread_cond_wait(&q->cond, &q->lock);
-		}
-	}
+  /* Wait for sequenced operations. */
+  if (op != LIO_READ && (op != LIO_WRITE || q->append)) {
+    for (;;) {
+      for (p = at.next; p && p->op != LIO_WRITE; p = p->next)
+        ;
+      if (!p)
+        break;
+      pthread_cond_wait(&q->cond, &q->lock);
+    }
+  }
 
-	pthread_mutex_unlock(&q->lock);
+  pthread_mutex_unlock(&q->lock);
 
-	switch (op) {
-	case LIO_WRITE:
-		ret = q->append ? write(fd, buf, len) : pwrite(fd, buf, len, off);
-		break;
-	case LIO_READ:
-		ret = !q->seekable ? read(fd, buf, len) : pread(fd, buf, len, off);
-		break;
-	case O_SYNC:
-		ret = fsync(fd);
-		break;
-	case O_DSYNC:
-		ret = fdatasync(fd);
-		break;
-	}
-	at.ret = ret;
-	at.err = ret<0 ? errno : 0;
-	
-	pthread_cleanup_pop(1);
+  switch (op) {
+    case LIO_WRITE:
+      ret = q->append ? write(fd, buf, len) : pwrite(fd, buf, len, off);
+      break;
+    case LIO_READ:
+      ret = !q->seekable ? read(fd, buf, len) : pread(fd, buf, len, off);
+      break;
+    case O_SYNC:
+      ret = fsync(fd);
+      break;
+    case O_DSYNC:
+      ret = fdatasync(fd);
+      break;
+  }
+  at.ret = ret;
+  at.err = ret < 0 ? errno : 0;
 
-	return 0;
+  pthread_cleanup_pop(1);
+
+  return 0;
 }
 
-static int submit(struct aiocb *cb, int op)
-{
-	int ret = 0;
-	pthread_attr_t a;
-	sigset_t allmask, origmask;
-	pthread_t td;
-	struct aio_args args = { .cb = cb, .op = op };
-	sem_init(&args.sem, 0, 0);
+static int submit(struct aiocb* cb, int op) {
+  int ret = 0;
+  pthread_attr_t a;
+  sigset_t allmask, origmask;
+  pthread_t td;
+  struct aio_args args = {.cb = cb, .op = op};
+  sem_init(&args.sem, 0, 0);
 
-	if (cb->aio_sigevent.sigev_notify == SIGEV_THREAD) {
-		if (cb->aio_sigevent.sigev_notify_attributes)
-			a = *cb->aio_sigevent.sigev_notify_attributes;
-		else
-			pthread_attr_init(&a);
-	} else {
-		pthread_attr_init(&a);
-		pthread_attr_setstacksize(&a, PTHREAD_STACK_MIN);
-		pthread_attr_setguardsize(&a, 0);
-	}
-	pthread_attr_setdetachstate(&a, PTHREAD_CREATE_DETACHED);
-	sigfillset(&allmask);
-	pthread_sigmask(SIG_BLOCK, &allmask, &origmask);
-	cb->__err = EINPROGRESS;
-	if (pthread_create(&td, &a, io_thread_func, &args)) {
-		errno = EAGAIN;
-		ret = -1;
-	}
-	pthread_sigmask(SIG_SETMASK, &origmask, 0);
+  if (cb->aio_sigevent.sigev_notify == SIGEV_THREAD) {
+    if (cb->aio_sigevent.sigev_notify_attributes)
+      a = *cb->aio_sigevent.sigev_notify_attributes;
+    else
+      pthread_attr_init(&a);
+  } else {
+    pthread_attr_init(&a);
+    pthread_attr_setstacksize(&a, PTHREAD_STACK_MIN);
+    pthread_attr_setguardsize(&a, 0);
+  }
+  pthread_attr_setdetachstate(&a, PTHREAD_CREATE_DETACHED);
+  sigfillset(&allmask);
+  pthread_sigmask(SIG_BLOCK, &allmask, &origmask);
+  cb->__err = EINPROGRESS;
+  if (pthread_create(&td, &a, io_thread_func, &args)) {
+    errno = EAGAIN;
+    ret = -1;
+  }
+  pthread_sigmask(SIG_SETMASK, &origmask, 0);
 
-	if (!ret) {
-		while (sem_wait(&args.sem));
-		if (args.err) {
-			errno = args.err;
-			ret = -1;
-		}
-	}
+  if (!ret) {
+    while (sem_wait(&args.sem))
+      ;
+    if (args.err) {
+      errno = args.err;
+      ret = -1;
+    }
+  }
 
-	return ret;
+  return ret;
 }
 
-int aio_read(struct aiocb *cb)
-{
-	return submit(cb, LIO_READ);
+int aio_read(struct aiocb* cb) {
+  return submit(cb, LIO_READ);
 }
 
-int aio_write(struct aiocb *cb)
-{
-	return submit(cb, LIO_WRITE);
+int aio_write(struct aiocb* cb) {
+  return submit(cb, LIO_WRITE);
 }
 
-int aio_fsync(int op, struct aiocb *cb)
-{
-	if (op != O_SYNC && op != O_DSYNC) {
-		errno = EINVAL;
-		return -1;
-	}
-	return submit(cb, op);
+int aio_fsync(int op, struct aiocb* cb) {
+  if (op != O_SYNC && op != O_DSYNC) {
+    errno = EINVAL;
+    return -1;
+  }
+  return submit(cb, op);
 }
 
-ssize_t aio_return(struct aiocb *cb)
-{
-	return cb->__ret;
+ssize_t aio_return(struct aiocb* cb) {
+  return cb->__ret;
 }
 
-int aio_error(const struct aiocb *cb)
-{
-	a_barrier();
-	return cb->__err & 0x7fffffff;
+int aio_error(const struct aiocb* cb) {
+  a_barrier();
+  return cb->__err & 0x7fffffff;
 }
 
-int aio_cancel(int fd, struct aiocb *cb)
-{
-	sigset_t allmask, origmask;
-	int ret = AIO_ALLDONE;
-	struct aio_thread *p;
-	struct aio_queue *q;
+int aio_cancel(int fd, struct aiocb* cb) {
+  sigset_t allmask, origmask;
+  int ret = AIO_ALLDONE;
+  struct aio_thread* p;
+  struct aio_queue* q;
 
-	/* Unspecified behavior case. Report an error. */
-	if (cb && fd != cb->aio_fildes) {
-		errno = EINVAL;
-		return -1;
-	}
+  /* Unspecified behavior case. Report an error. */
+  if (cb && fd != cb->aio_fildes) {
+    errno = EINVAL;
+    return -1;
+  }
 
-	sigfillset(&allmask);
-	pthread_sigmask(SIG_BLOCK, &allmask, &origmask);
+  sigfillset(&allmask);
+  pthread_sigmask(SIG_BLOCK, &allmask, &origmask);
 
-	if (!(q = __aio_get_queue(fd, 0))) {
-		if (fcntl(fd, F_GETFD) < 0) ret = -1;
-		goto done;
-	}
+  if (!(q = __aio_get_queue(fd, 0))) {
+    if (fcntl(fd, F_GETFD) < 0)
+      ret = -1;
+    goto done;
+  }
 
-	for (p = q->head; p; p = p->next) {
-		if (cb && cb != p->cb) continue;
-		/* Transition target from running to running-with-waiters */
-		if (a_cas(&p->running, 1, -1)) {
-			pthread_cancel(p->td);
-			__wait(&p->running, 0, -1, 1);
-			if (p->err == ECANCELED) ret = AIO_CANCELED;
-		}
-	}
+  for (p = q->head; p; p = p->next) {
+    if (cb && cb != p->cb)
+      continue;
+    /* Transition target from running to running-with-waiters */
+    if (a_cas(&p->running, 1, -1)) {
+      pthread_cancel(p->td);
+      __wait(&p->running, 0, -1, 1);
+      if (p->err == ECANCELED)
+        ret = AIO_CANCELED;
+    }
+  }
 
-	pthread_mutex_unlock(&q->lock);
+  pthread_mutex_unlock(&q->lock);
 done:
-	pthread_sigmask(SIG_SETMASK, &origmask, 0);
-	return ret;
+  pthread_sigmask(SIG_SETMASK, &origmask, 0);
+  return ret;
 }
 
-int __aio_close(int fd)
-{
-	a_barrier();
-	if (aio_fd_cnt) aio_cancel(fd, 0);
-	return fd;
+int __aio_close(int fd) {
+  a_barrier();
+  if (aio_fd_cnt)
+    aio_cancel(fd, 0);
+  return fd;
 }
 
 LFS64(aio_cancel);
diff --git a/fusl/src/aio/aio_suspend.c b/fusl/src/aio/aio_suspend.c
index 08fb5dd..7d5e0d3 100644
--- a/fusl/src/aio/aio_suspend.c
+++ b/fusl/src/aio/aio_suspend.c
@@ -7,73 +7,78 @@
 
 extern volatile int __aio_fut;
 
-int aio_suspend(const struct aiocb *const cbs[], int cnt, const struct timespec *ts)
-{
-	int i, tid = 0, ret, expect = 0;
-	struct timespec at;
-	volatile int dummy_fut, *pfut;
-	int nzcnt = 0;
-	const struct aiocb *cb = 0;
+int aio_suspend(const struct aiocb* const cbs[],
+                int cnt,
+                const struct timespec* ts) {
+  int i, tid = 0, ret, expect = 0;
+  struct timespec at;
+  volatile int dummy_fut, *pfut;
+  int nzcnt = 0;
+  const struct aiocb* cb = 0;
 
-	pthread_testcancel();
+  pthread_testcancel();
 
-	if (cnt<0) {
-		errno = EINVAL;
-		return -1;
-	}
+  if (cnt < 0) {
+    errno = EINVAL;
+    return -1;
+  }
 
-	for (i=0; i<cnt; i++) if (cbs[i]) {
-		if (aio_error(cbs[i]) != EINPROGRESS) return 0;
-		nzcnt++;
-		cb = cbs[i];
-	}
+  for (i = 0; i < cnt; i++)
+    if (cbs[i]) {
+      if (aio_error(cbs[i]) != EINPROGRESS)
+        return 0;
+      nzcnt++;
+      cb = cbs[i];
+    }
 
-	if (ts) {
-		clock_gettime(CLOCK_MONOTONIC, &at);
-		at.tv_sec += ts->tv_sec;
-		if ((at.tv_nsec += ts->tv_nsec) >= 1000000000) {
-			at.tv_nsec -= 1000000000;
-			at.tv_sec++;
-		}
-	}
+  if (ts) {
+    clock_gettime(CLOCK_MONOTONIC, &at);
+    at.tv_sec += ts->tv_sec;
+    if ((at.tv_nsec += ts->tv_nsec) >= 1000000000) {
+      at.tv_nsec -= 1000000000;
+      at.tv_sec++;
+    }
+  }
 
-	for (;;) {
-		for (i=0; i<cnt; i++)
-			if (cbs[i] && aio_error(cbs[i]) != EINPROGRESS)
-				return 0;
+  for (;;) {
+    for (i = 0; i < cnt; i++)
+      if (cbs[i] && aio_error(cbs[i]) != EINPROGRESS)
+        return 0;
 
-		switch (nzcnt) {
-		case 0:
-			pfut = &dummy_fut;
-			break;
-		case 1:
-			pfut = (void *)&cb->__err;
-			expect = EINPROGRESS | 0x80000000;
-			a_cas(pfut, EINPROGRESS, expect);
-			break;
-		default:
-			pfut = &__aio_fut;
-			if (!tid) tid = __pthread_self()->tid;
-			expect = a_cas(pfut, 0, tid);
-			if (!expect) expect = tid;
-			/* Need to recheck the predicate before waiting. */
-			for (i=0; i<cnt; i++)
-				if (cbs[i] && aio_error(cbs[i]) != EINPROGRESS)
-					return 0;
-			break;
-		}
+    switch (nzcnt) {
+      case 0:
+        pfut = &dummy_fut;
+        break;
+      case 1:
+        pfut = (void*)&cb->__err;
+        expect = EINPROGRESS | 0x80000000;
+        a_cas(pfut, EINPROGRESS, expect);
+        break;
+      default:
+        pfut = &__aio_fut;
+        if (!tid)
+          tid = __pthread_self()->tid;
+        expect = a_cas(pfut, 0, tid);
+        if (!expect)
+          expect = tid;
+        /* Need to recheck the predicate before waiting. */
+        for (i = 0; i < cnt; i++)
+          if (cbs[i] && aio_error(cbs[i]) != EINPROGRESS)
+            return 0;
+        break;
+    }
 
-		ret = __timedwait_cp(pfut, expect, CLOCK_MONOTONIC, ts?&at:0, 1);
+    ret = __timedwait_cp(pfut, expect, CLOCK_MONOTONIC, ts ? &at : 0, 1);
 
-		switch (ret) {
-		case ETIMEDOUT:
-			ret = EAGAIN;
-		case ECANCELED:
-		case EINTR:
-			errno = ret;
-			return -1;
-		}
-	}
+    switch (ret) {
+      case ETIMEDOUT:
+        ret = EAGAIN;
+      case ECANCELED:
+      case EINTR:
+        errno = ret;
+        return -1;
+    }
+  }
 }
 
 LFS64(aio_suspend);
diff --git a/fusl/src/aio/lio_listio.c b/fusl/src/aio/lio_listio.c
index bd37767..b4576f5 100644
--- a/fusl/src/aio/lio_listio.c
+++ b/fusl/src/aio/lio_listio.c
@@ -6,139 +6,139 @@
 #include "libc.h"
 
 struct lio_state {
-	struct sigevent *sev;
-	int cnt;
-	struct aiocb *cbs[];
+  struct sigevent* sev;
+  int cnt;
+  struct aiocb* cbs[];
 };
 
-static int lio_wait(struct lio_state *st)
-{
-	int i, err, got_err = 0;
-	int cnt = st->cnt;
-	struct aiocb **cbs = st->cbs;
+static int lio_wait(struct lio_state* st) {
+  int i, err, got_err = 0;
+  int cnt = st->cnt;
+  struct aiocb** cbs = st->cbs;
 
-	for (;;) {
-		for (i=0; i<cnt; i++) {
-			if (!cbs[i]) continue;
-			err = aio_error(cbs[i]);
-			if (err==EINPROGRESS)
-				break;
-			if (err) got_err=1;
-			cbs[i] = 0;
-		}
-		if (i==cnt) {
-			if (got_err) {
-				errno = EIO;
-				return -1;
-			}
-			return 0;
-		}
-		if (aio_suspend((void *)cbs, cnt, 0))
-			return -1;
-	}
+  for (;;) {
+    for (i = 0; i < cnt; i++) {
+      if (!cbs[i])
+        continue;
+      err = aio_error(cbs[i]);
+      if (err == EINPROGRESS)
+        break;
+      if (err)
+        got_err = 1;
+      cbs[i] = 0;
+    }
+    if (i == cnt) {
+      if (got_err) {
+        errno = EIO;
+        return -1;
+      }
+      return 0;
+    }
+    if (aio_suspend((void*)cbs, cnt, 0))
+      return -1;
+  }
 }
 
-static void notify_signal(struct sigevent *sev)
-{
-	siginfo_t si = {
-		.si_signo = sev->sigev_signo,
-		.si_value = sev->sigev_value,
-		.si_code = SI_ASYNCIO,
-		.si_pid = getpid(),
-		.si_uid = getuid()
-	};
-	__syscall(SYS_rt_sigqueueinfo, si.si_pid, si.si_signo, &si);
+static void notify_signal(struct sigevent* sev) {
+  siginfo_t si = {.si_signo = sev->sigev_signo,
+                  .si_value = sev->sigev_value,
+                  .si_code = SI_ASYNCIO,
+                  .si_pid = getpid(),
+                  .si_uid = getuid()};
+  __syscall(SYS_rt_sigqueueinfo, si.si_pid, si.si_signo, &si);
 }
 
-static void *wait_thread(void *p)
-{
-	struct lio_state *st = p;
-	struct sigevent *sev = st->sev;
-	lio_wait(st);
-	free(st);
-	switch (sev->sigev_notify) {
-	case SIGEV_SIGNAL:
-		notify_signal(sev);
-		break;
-	case SIGEV_THREAD:
-		sev->sigev_notify_function(sev->sigev_value);
-		break;
-	}
-	return 0;
+static void* wait_thread(void* p) {
+  struct lio_state* st = p;
+  struct sigevent* sev = st->sev;
+  lio_wait(st);
+  free(st);
+  switch (sev->sigev_notify) {
+    case SIGEV_SIGNAL:
+      notify_signal(sev);
+      break;
+    case SIGEV_THREAD:
+      sev->sigev_notify_function(sev->sigev_value);
+      break;
+  }
+  return 0;
 }
 
-int lio_listio(int mode, struct aiocb *restrict const *restrict cbs, int cnt, struct sigevent *restrict sev)
-{
-	int i, ret;
-	struct lio_state *st=0;
+int lio_listio(int mode,
+               struct aiocb* restrict const* restrict cbs,
+               int cnt,
+               struct sigevent* restrict sev) {
+  int i, ret;
+  struct lio_state* st = 0;
 
-	if (cnt < 0) {
-		errno = EINVAL;
-		return -1;
-	}
+  if (cnt < 0) {
+    errno = EINVAL;
+    return -1;
+  }
 
-	if (mode == LIO_WAIT || (sev && sev->sigev_notify != SIGEV_NONE)) {
-		if (!(st = malloc(sizeof *st + cnt*sizeof *cbs))) {
-			errno = EAGAIN;
-			return -1;
-		}
-		st->cnt = cnt;
-		st->sev = sev;
-		memcpy(st->cbs, (void*) cbs, cnt*sizeof *cbs);
-	}
+  if (mode == LIO_WAIT || (sev && sev->sigev_notify != SIGEV_NONE)) {
+    if (!(st = malloc(sizeof *st + cnt * sizeof *cbs))) {
+      errno = EAGAIN;
+      return -1;
+    }
+    st->cnt = cnt;
+    st->sev = sev;
+    memcpy(st->cbs, (void*)cbs, cnt * sizeof *cbs);
+  }
 
-	for (i=0; i<cnt; i++) {
-		if (!cbs[i]) continue;
-		switch (cbs[i]->aio_lio_opcode) {
-		case LIO_READ:
-			ret = aio_read(cbs[i]);
-			break;
-		case LIO_WRITE:
-			ret = aio_write(cbs[i]);
-			break;
-		default:
-			continue;
-		}
-		if (ret) {
-			free(st);
-			errno = EAGAIN;
-			return -1;
-		}
-	}
+  for (i = 0; i < cnt; i++) {
+    if (!cbs[i])
+      continue;
+    switch (cbs[i]->aio_lio_opcode) {
+      case LIO_READ:
+        ret = aio_read(cbs[i]);
+        break;
+      case LIO_WRITE:
+        ret = aio_write(cbs[i]);
+        break;
+      default:
+        continue;
+    }
+    if (ret) {
+      free(st);
+      errno = EAGAIN;
+      return -1;
+    }
+  }
 
-	if (mode == LIO_WAIT) {
-		ret = lio_wait(st);
-		free(st);
-		return ret;
-	}
+  if (mode == LIO_WAIT) {
+    ret = lio_wait(st);
+    free(st);
+    return ret;
+  }
 
-	if (st) {
-		pthread_attr_t a;
-		sigset_t set;
-		pthread_t td;
+  if (st) {
+    pthread_attr_t a;
+    sigset_t set;
+    pthread_t td;
 
-		if (sev->sigev_notify == SIGEV_THREAD) {
-			if (sev->sigev_notify_attributes)
-				a = *sev->sigev_notify_attributes;
-			else
-				pthread_attr_init(&a);
-		} else {
-			pthread_attr_init(&a);
-			pthread_attr_setstacksize(&a, PAGE_SIZE);
-			pthread_attr_setguardsize(&a, 0);
-		}
-		pthread_attr_setdetachstate(&a, PTHREAD_CREATE_DETACHED);
-		sigfillset(&set);
-		pthread_sigmask(SIG_BLOCK, &set, &set);
-		if (pthread_create(&td, &a, wait_thread, st)) {
-			free(st);
-			errno = EAGAIN;
-			return -1;
-		}
-		pthread_sigmask(SIG_SETMASK, &set, 0);
-	}
+    if (sev->sigev_notify == SIGEV_THREAD) {
+      if (sev->sigev_notify_attributes)
+        a = *sev->sigev_notify_attributes;
+      else
+        pthread_attr_init(&a);
+    } else {
+      pthread_attr_init(&a);
+      pthread_attr_setstacksize(&a, PAGE_SIZE);
+      pthread_attr_setguardsize(&a, 0);
+    }
+    pthread_attr_setdetachstate(&a, PTHREAD_CREATE_DETACHED);
+    sigfillset(&set);
+    pthread_sigmask(SIG_BLOCK, &set, &set);
+    if (pthread_create(&td, &a, wait_thread, st)) {
+      free(st);
+      errno = EAGAIN;
+      return -1;
+    }
+    pthread_sigmask(SIG_SETMASK, &set, 0);
+  }
 
-	return 0;
+  return 0;
 }
 
 LFS64(lio_listio);
diff --git a/fusl/src/complex/__cexp.c b/fusl/src/complex/__cexp.c
index 05ac28c..166ff7c 100644
--- a/fusl/src/complex/__cexp.c
+++ b/fusl/src/complex/__cexp.c
@@ -27,7 +27,7 @@
 
 #include "libm.h"
 
-static const uint32_t k = 1799; /* constant for reduction */
+static const uint32_t k = 1799;                    /* constant for reduction */
 static const double kln2 = 1246.97177782734161156; /* k * ln2 */
 
 /*
@@ -37,22 +37,21 @@
  * Input:  ln(DBL_MAX) <= x < ln(2 * DBL_MAX / DBL_MIN_DENORM) ~= 1454.91
  * Output: 2**1023 <= y < 2**1024
  */
-static double __frexp_exp(double x, int *expt)
-{
-	double exp_x;
-	uint32_t hx;
+static double __frexp_exp(double x, int* expt) {
+  double exp_x;
+  uint32_t hx;
 
-	/*
-	 * We use exp(x) = exp(x - kln2) * 2**k, carefully chosen to
-	 * minimize |exp(kln2) - 2**k|.  We also scale the exponent of
-	 * exp_x to MAX_EXP so that the result can be multiplied by
-	 * a tiny number without losing accuracy due to denormalization.
-	 */
-	exp_x = exp(x - kln2);
-	GET_HIGH_WORD(hx, exp_x);
-	*expt = (hx >> 20) - (0x3ff + 1023) + k;
-	SET_HIGH_WORD(exp_x, (hx & 0xfffff) | ((0x3ff + 1023) << 20));
-	return exp_x;
+  /*
+   * We use exp(x) = exp(x - kln2) * 2**k, carefully chosen to
+   * minimize |exp(kln2) - 2**k|.  We also scale the exponent of
+   * exp_x to MAX_EXP so that the result can be multiplied by
+   * a tiny number without losing accuracy due to denormalization.
+   */
+  exp_x = exp(x - kln2);
+  GET_HIGH_WORD(hx, exp_x);
+  *expt = (hx >> 20) - (0x3ff + 1023) + k;
+  SET_HIGH_WORD(exp_x, (hx & 0xfffff) | ((0x3ff + 1023) << 20));
+  return exp_x;
 }
 
 /*
@@ -64,24 +63,24 @@
  * exponential functions.  We assume expt is small (0 or -1), and the caller
  * has filtered out very large x, for which overflow would be inevitable.
  */
-double complex __ldexp_cexp(double complex z, int expt)
-{
-	double x, y, exp_x, scale1, scale2;
-	int ex_expt, half_expt;
+double complex __ldexp_cexp(double complex z, int expt) {
+  double x, y, exp_x, scale1, scale2;
+  int ex_expt, half_expt;
 
-	x = creal(z);
-	y = cimag(z);
-	exp_x = __frexp_exp(x, &ex_expt);
-	expt += ex_expt;
+  x = creal(z);
+  y = cimag(z);
+  exp_x = __frexp_exp(x, &ex_expt);
+  expt += ex_expt;
 
-	/*
-	 * Arrange so that scale1 * scale2 == 2**expt.  We use this to
-	 * compensate for scalbn being horrendously slow.
-	 */
-	half_expt = expt / 2;
-	INSERT_WORDS(scale1, (0x3ff + half_expt) << 20, 0);
-	half_expt = expt - half_expt;
-	INSERT_WORDS(scale2, (0x3ff + half_expt) << 20, 0);
+  /*
+   * Arrange so that scale1 * scale2 == 2**expt.  We use this to
+   * compensate for scalbn being horrendously slow.
+   */
+  half_expt = expt / 2;
+  INSERT_WORDS(scale1, (0x3ff + half_expt) << 20, 0);
+  half_expt = expt - half_expt;
+  INSERT_WORDS(scale2, (0x3ff + half_expt) << 20, 0);
 
-	return CMPLX(cos(y) * exp_x * scale1 * scale2, sin(y) * exp_x * scale1 * scale2);
+  return CMPLX(cos(y) * exp_x * scale1 * scale2,
+               sin(y) * exp_x * scale1 * scale2);
 }
diff --git a/fusl/src/complex/__cexpf.c b/fusl/src/complex/__cexpf.c
index 69b5404..d8b5792 100644
--- a/fusl/src/complex/__cexpf.c
+++ b/fusl/src/complex/__cexpf.c
@@ -27,7 +27,7 @@
 
 #include "libm.h"
 
-static const uint32_t k = 235; /* constant for reduction */
+static const uint32_t k = 235;           /* constant for reduction */
 static const float kln2 = 162.88958740F; /* k * ln2 */
 
 /*
@@ -36,33 +36,31 @@
  * Input:  ln(FLT_MAX) <= x < ln(2 * FLT_MAX / FLT_MIN_DENORM) ~= 192.7
  * Output: 2**127 <= y < 2**128
  */
-static float __frexp_expf(float x, int *expt)
-{
-	float exp_x;
-	uint32_t hx;
+static float __frexp_expf(float x, int* expt) {
+  float exp_x;
+  uint32_t hx;
 
-	exp_x = expf(x - kln2);
-	GET_FLOAT_WORD(hx, exp_x);
-	*expt = (hx >> 23) - (0x7f + 127) + k;
-	SET_FLOAT_WORD(exp_x, (hx & 0x7fffff) | ((0x7f + 127) << 23));
-	return exp_x;
+  exp_x = expf(x - kln2);
+  GET_FLOAT_WORD(hx, exp_x);
+  *expt = (hx >> 23) - (0x7f + 127) + k;
+  SET_FLOAT_WORD(exp_x, (hx & 0x7fffff) | ((0x7f + 127) << 23));
+  return exp_x;
 }
 
-float complex __ldexp_cexpf(float complex z, int expt)
-{
-	float x, y, exp_x, scale1, scale2;
-	int ex_expt, half_expt;
+float complex __ldexp_cexpf(float complex z, int expt) {
+  float x, y, exp_x, scale1, scale2;
+  int ex_expt, half_expt;
 
-	x = crealf(z);
-	y = cimagf(z);
-	exp_x = __frexp_expf(x, &ex_expt);
-	expt += ex_expt;
+  x = crealf(z);
+  y = cimagf(z);
+  exp_x = __frexp_expf(x, &ex_expt);
+  expt += ex_expt;
 
-	half_expt = expt / 2;
-	SET_FLOAT_WORD(scale1, (0x7f + half_expt) << 23);
-	half_expt = expt - half_expt;
-	SET_FLOAT_WORD(scale2, (0x7f + half_expt) << 23);
+  half_expt = expt / 2;
+  SET_FLOAT_WORD(scale1, (0x7f + half_expt) << 23);
+  half_expt = expt - half_expt;
+  SET_FLOAT_WORD(scale2, (0x7f + half_expt) << 23);
 
-	return CMPLXF(cosf(y) * exp_x * scale1 * scale2,
-	  sinf(y) * exp_x * scale1 * scale2);
+  return CMPLXF(cosf(y) * exp_x * scale1 * scale2,
+                sinf(y) * exp_x * scale1 * scale2);
 }
diff --git a/fusl/src/complex/cabs.c b/fusl/src/complex/cabs.c
index f61d364..a03619e 100644
--- a/fusl/src/complex/cabs.c
+++ b/fusl/src/complex/cabs.c
@@ -1,6 +1,5 @@
 #include "libm.h"
 
-double cabs(double complex z)
-{
-	return hypot(creal(z), cimag(z));
+double cabs(double complex z) {
+  return hypot(creal(z), cimag(z));
 }
diff --git a/fusl/src/complex/cabsf.c b/fusl/src/complex/cabsf.c
index 30b25c7..53a7524 100644
--- a/fusl/src/complex/cabsf.c
+++ b/fusl/src/complex/cabsf.c
@@ -1,6 +1,5 @@
 #include "libm.h"
 
-float cabsf(float complex z)
-{
-	return hypotf(crealf(z), cimagf(z));
+float cabsf(float complex z) {
+  return hypotf(crealf(z), cimagf(z));
 }
diff --git a/fusl/src/complex/cabsl.c b/fusl/src/complex/cabsl.c
index 40a067c..096e6dc 100644
--- a/fusl/src/complex/cabsl.c
+++ b/fusl/src/complex/cabsl.c
@@ -1,13 +1,11 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double cabsl(long double complex z)
-{
-	return cabs(z);
+long double cabsl(long double complex z) {
+  return cabs(z);
 }
 #else
-long double cabsl(long double complex z)
-{
-	return hypotl(creall(z), cimagl(z));
+long double cabsl(long double complex z) {
+  return hypotl(creall(z), cimagl(z));
 }
 #endif
diff --git a/fusl/src/complex/cacos.c b/fusl/src/complex/cacos.c
index 27c3563..3e84a0a 100644
--- a/fusl/src/complex/cacos.c
+++ b/fusl/src/complex/cacos.c
@@ -1,11 +1,11 @@
 #include "libm.h"
 
-// FIXME: Hull et al. "Implementing the complex arcsine and arccosine functions using exception handling" 1997
+// FIXME: Hull et al. "Implementing the complex arcsine and arccosine functions
+// using exception handling" 1997
 
 /* acos(z) = pi/2 - asin(z) */
 
-double complex cacos(double complex z)
-{
-	z = casin(z);
-	return CMPLX(M_PI_2 - creal(z), -cimag(z));
+double complex cacos(double complex z) {
+  z = casin(z);
+  return CMPLX(M_PI_2 - creal(z), -cimag(z));
 }
diff --git a/fusl/src/complex/cacosf.c b/fusl/src/complex/cacosf.c
index 1185265..18cb2cf 100644
--- a/fusl/src/complex/cacosf.c
+++ b/fusl/src/complex/cacosf.c
@@ -2,8 +2,7 @@
 
 // FIXME
 
-float complex cacosf(float complex z)
-{
-	z = casinf(z);
-	return CMPLXF((float)M_PI_2 - crealf(z), -cimagf(z));
+float complex cacosf(float complex z) {
+  z = casinf(z);
+  return CMPLXF((float)M_PI_2 - crealf(z), -cimagf(z));
 }
diff --git a/fusl/src/complex/cacosh.c b/fusl/src/complex/cacosh.c
index 8c68cb0..b27a107 100644
--- a/fusl/src/complex/cacosh.c
+++ b/fusl/src/complex/cacosh.c
@@ -2,8 +2,7 @@
 
 /* acosh(z) = i acos(z) */
 
-double complex cacosh(double complex z)
-{
-	z = cacos(z);
-	return CMPLX(-cimag(z), creal(z));
+double complex cacosh(double complex z) {
+  z = cacos(z);
+  return CMPLX(-cimag(z), creal(z));
 }
diff --git a/fusl/src/complex/cacoshf.c b/fusl/src/complex/cacoshf.c
index ade01c0..386a9c1 100644
--- a/fusl/src/complex/cacoshf.c
+++ b/fusl/src/complex/cacoshf.c
@@ -1,7 +1,6 @@
 #include "libm.h"
 
-float complex cacoshf(float complex z)
-{
-	z = cacosf(z);
-	return CMPLXF(-cimagf(z), crealf(z));
+float complex cacoshf(float complex z) {
+  z = cacosf(z);
+  return CMPLXF(-cimagf(z), crealf(z));
 }
diff --git a/fusl/src/complex/cacoshl.c b/fusl/src/complex/cacoshl.c
index 6534255..f8f3760 100644
--- a/fusl/src/complex/cacoshl.c
+++ b/fusl/src/complex/cacoshl.c
@@ -1,14 +1,12 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double complex cacoshl(long double complex z)
-{
-	return cacosh(z);
+long double complex cacoshl(long double complex z) {
+  return cacosh(z);
 }
 #else
-long double complex cacoshl(long double complex z)
-{
-	z = cacosl(z);
-	return CMPLXL(-cimagl(z), creall(z));
+long double complex cacoshl(long double complex z) {
+  z = cacosl(z);
+  return CMPLXL(-cimagl(z), creall(z));
 }
 #endif
diff --git a/fusl/src/complex/cacosl.c b/fusl/src/complex/cacosl.c
index 7fd4a2f..6c3b2e4 100644
--- a/fusl/src/complex/cacosl.c
+++ b/fusl/src/complex/cacosl.c
@@ -1,16 +1,14 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double complex cacosl(long double complex z)
-{
-	return cacos(z);
+long double complex cacosl(long double complex z) {
+  return cacos(z);
 }
 #else
 // FIXME
 #define PI_2 1.57079632679489661923132169163975144L
-long double complex cacosl(long double complex z)
-{
-	z = casinl(z);
-	return CMPLXL(PI_2 - creall(z), -cimagl(z));
+long double complex cacosl(long double complex z) {
+  z = casinl(z);
+  return CMPLXL(PI_2 - creall(z), -cimagl(z));
 }
 #endif
diff --git a/fusl/src/complex/carg.c b/fusl/src/complex/carg.c
index d2d1b46..855bdee 100644
--- a/fusl/src/complex/carg.c
+++ b/fusl/src/complex/carg.c
@@ -1,6 +1,5 @@
 #include "libm.h"
 
-double carg(double complex z)
-{
-	return atan2(cimag(z), creal(z));
+double carg(double complex z) {
+  return atan2(cimag(z), creal(z));
 }
diff --git a/fusl/src/complex/cargf.c b/fusl/src/complex/cargf.c
index ce183c4..39f930d 100644
--- a/fusl/src/complex/cargf.c
+++ b/fusl/src/complex/cargf.c
@@ -1,6 +1,5 @@
 #include "libm.h"
 
-float cargf(float complex z)
-{
-	return atan2f(cimagf(z), crealf(z));
+float cargf(float complex z) {
+  return atan2f(cimagf(z), crealf(z));
 }
diff --git a/fusl/src/complex/cargl.c b/fusl/src/complex/cargl.c
index e0d5047..073ede8 100644
--- a/fusl/src/complex/cargl.c
+++ b/fusl/src/complex/cargl.c
@@ -1,13 +1,11 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double cargl(long double complex z)
-{
-	return carg(z);
+long double cargl(long double complex z) {
+  return carg(z);
 }
 #else
-long double cargl(long double complex z)
-{
-	return atan2l(cimagl(z), creall(z));
+long double cargl(long double complex z) {
+  return atan2l(cimagl(z), creall(z));
 }
 #endif
diff --git a/fusl/src/complex/casin.c b/fusl/src/complex/casin.c
index dfdda98..b44ad11 100644
--- a/fusl/src/complex/casin.c
+++ b/fusl/src/complex/casin.c
@@ -4,13 +4,12 @@
 
 /* asin(z) = -i log(i z + sqrt(1 - z*z)) */
 
-double complex casin(double complex z)
-{
-	double complex w;
-	double x, y;
+double complex casin(double complex z) {
+  double complex w;
+  double x, y;
 
-	x = creal(z);
-	y = cimag(z);
-	w = CMPLX(1.0 - (x - y)*(x + y), -2.0*x*y);
-	return clog(CMPLX(-y, x) + csqrt(w));
+  x = creal(z);
+  y = cimag(z);
+  w = CMPLX(1.0 - (x - y) * (x + y), -2.0 * x * y);
+  return clog(CMPLX(-y, x) + csqrt(w));
 }
diff --git a/fusl/src/complex/casinf.c b/fusl/src/complex/casinf.c
index 93f0e33..a84b7ad 100644
--- a/fusl/src/complex/casinf.c
+++ b/fusl/src/complex/casinf.c
@@ -2,13 +2,12 @@
 
 // FIXME
 
-float complex casinf(float complex z)
-{
-	float complex w;
-	float x, y;
+float complex casinf(float complex z) {
+  float complex w;
+  float x, y;
 
-	x = crealf(z);
-	y = cimagf(z);
-	w = CMPLXF(1.0 - (x - y)*(x + y), -2.0*x*y);
-	return clogf(CMPLXF(-y, x) + csqrtf(w));
+  x = crealf(z);
+  y = cimagf(z);
+  w = CMPLXF(1.0 - (x - y) * (x + y), -2.0 * x * y);
+  return clogf(CMPLXF(-y, x) + csqrtf(w));
 }
diff --git a/fusl/src/complex/casinh.c b/fusl/src/complex/casinh.c
index b57fe8c..6ac7d7a 100644
--- a/fusl/src/complex/casinh.c
+++ b/fusl/src/complex/casinh.c
@@ -2,8 +2,7 @@
 
 /* asinh(z) = -i asin(i z) */
 
-double complex casinh(double complex z)
-{
-	z = casin(CMPLX(-cimag(z), creal(z)));
-	return CMPLX(cimag(z), -creal(z));
+double complex casinh(double complex z) {
+  z = casin(CMPLX(-cimag(z), creal(z)));
+  return CMPLX(cimag(z), -creal(z));
 }
diff --git a/fusl/src/complex/casinhf.c b/fusl/src/complex/casinhf.c
index a11bf90..48f8b66 100644
--- a/fusl/src/complex/casinhf.c
+++ b/fusl/src/complex/casinhf.c
@@ -1,7 +1,6 @@
 #include "libm.h"
 
-float complex casinhf(float complex z)
-{
-	z = casinf(CMPLXF(-cimagf(z), crealf(z)));
-	return CMPLXF(cimagf(z), -crealf(z));
+float complex casinhf(float complex z) {
+  z = casinf(CMPLXF(-cimagf(z), crealf(z)));
+  return CMPLXF(cimagf(z), -crealf(z));
 }
diff --git a/fusl/src/complex/casinhl.c b/fusl/src/complex/casinhl.c
index 714f189..bd77b41 100644
--- a/fusl/src/complex/casinhl.c
+++ b/fusl/src/complex/casinhl.c
@@ -1,14 +1,12 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double complex casinhl(long double complex z)
-{
-	return casinh(z);
+long double complex casinhl(long double complex z) {
+  return casinh(z);
 }
 #else
-long double complex casinhl(long double complex z)
-{
-	z = casinl(CMPLXL(-cimagl(z), creall(z)));
-	return CMPLXL(cimagl(z), -creall(z));
+long double complex casinhl(long double complex z) {
+  z = casinl(CMPLXL(-cimagl(z), creall(z)));
+  return CMPLXL(cimagl(z), -creall(z));
 }
 #endif
diff --git a/fusl/src/complex/casinl.c b/fusl/src/complex/casinl.c
index 0916c60..42c52cc 100644
--- a/fusl/src/complex/casinl.c
+++ b/fusl/src/complex/casinl.c
@@ -1,20 +1,18 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double complex casinl(long double complex z)
-{
-	return casin(z);
+long double complex casinl(long double complex z) {
+  return casin(z);
 }
 #else
 // FIXME
-long double complex casinl(long double complex z)
-{
-	long double complex w;
-	long double x, y;
+long double complex casinl(long double complex z) {
+  long double complex w;
+  long double x, y;
 
-	x = creall(z);
-	y = cimagl(z);
-	w = CMPLXL(1.0 - (x - y)*(x + y), -2.0*x*y);
-	return clogl(CMPLXL(-y, x) + csqrtl(w));
+  x = creall(z);
+  y = cimagl(z);
+  w = CMPLXL(1.0 - (x - y) * (x + y), -2.0 * x * y);
+  return clogl(CMPLXL(-y, x) + csqrtl(w));
 }
 #endif
diff --git a/fusl/src/complex/catan.c b/fusl/src/complex/catan.c
index 39ce6cf..4df2e19 100644
--- a/fusl/src/complex/catan.c
+++ b/fusl/src/complex/catan.c
@@ -66,54 +66,52 @@
 static const double DP2 = 1.98418714791870343106E-9;
 static const double DP3 = 1.14423774522196636802E-17;
 
-static double _redupi(double x)
-{
-	double t;
-	long i;
+static double _redupi(double x) {
+  double t;
+  long i;
 
-	t = x/M_PI;
-	if (t >= 0.0)
-		t += 0.5;
-	else
-		t -= 0.5;
+  t = x / M_PI;
+  if (t >= 0.0)
+    t += 0.5;
+  else
+    t -= 0.5;
 
-	i = t;  /* the multiple */
-	t = i;
-	t = ((x - t * DP1) - t * DP2) - t * DP3;
-	return t;
+  i = t; /* the multiple */
+  t = i;
+  t = ((x - t * DP1) - t * DP2) - t * DP3;
+  return t;
 }
 
-double complex catan(double complex z)
-{
-	double complex w;
-	double a, t, x, x2, y;
+double complex catan(double complex z) {
+  double complex w;
+  double a, t, x, x2, y;
 
-	x = creal(z);
-	y = cimag(z);
+  x = creal(z);
+  y = cimag(z);
 
-	if (x == 0.0 && y > 1.0)
-		goto ovrf;
+  if (x == 0.0 && y > 1.0)
+    goto ovrf;
 
-	x2 = x * x;
-	a = 1.0 - x2 - (y * y);
-	if (a == 0.0)
-		goto ovrf;
+  x2 = x * x;
+  a = 1.0 - x2 - (y * y);
+  if (a == 0.0)
+    goto ovrf;
 
-	t = 0.5 * atan2(2.0 * x, a);
-	w = _redupi(t);
+  t = 0.5 * atan2(2.0 * x, a);
+  w = _redupi(t);
 
-	t = y - 1.0;
-	a = x2 + (t * t);
-	if (a == 0.0)
-		goto ovrf;
+  t = y - 1.0;
+  a = x2 + (t * t);
+  if (a == 0.0)
+    goto ovrf;
 
-	t = y + 1.0;
-	a = (x2 + t * t)/a;
-	w = w + (0.25 * log(a)) * I;
-	return w;
+  t = y + 1.0;
+  a = (x2 + t * t) / a;
+  w = w + (0.25 * log(a)) * I;
+  return w;
 
 ovrf:
-	// FIXME
-	w = MAXNUM + MAXNUM * I;
-	return w;
+  // FIXME
+  w = MAXNUM + MAXNUM * I;
+  return w;
 }
diff --git a/fusl/src/complex/catanf.c b/fusl/src/complex/catanf.c
index 8533bde..7e6773a 100644
--- a/fusl/src/complex/catanf.c
+++ b/fusl/src/complex/catanf.c
@@ -61,55 +61,53 @@
 static const double DP2 = 9.67502593994140625E-4;
 static const double DP3 = 1.509957990978376432E-7;
 
-static float _redupif(float xx)
-{
-	float x, t;
-	long i;
+static float _redupif(float xx) {
+  float x, t;
+  long i;
 
-	x = xx;
-	t = x/(float)M_PI;
-	if (t >= 0.0f)
-		t += 0.5f;
-	else
-		t -= 0.5f;
+  x = xx;
+  t = x / (float)M_PI;
+  if (t >= 0.0f)
+    t += 0.5f;
+  else
+    t -= 0.5f;
 
-	i = t;  /* the multiple */
-	t = i;
-	t = ((x - t * DP1) - t * DP2) - t * DP3;
-	return t;
+  i = t; /* the multiple */
+  t = i;
+  t = ((x - t * DP1) - t * DP2) - t * DP3;
+  return t;
 }
 
-float complex catanf(float complex z)
-{
-	float complex w;
-	float a, t, x, x2, y;
+float complex catanf(float complex z) {
+  float complex w;
+  float a, t, x, x2, y;
 
-	x = crealf(z);
-	y = cimagf(z);
+  x = crealf(z);
+  y = cimagf(z);
 
-	if ((x == 0.0f) && (y > 1.0f))
-		goto ovrf;
+  if ((x == 0.0f) && (y > 1.0f))
+    goto ovrf;
 
-	x2 = x * x;
-	a = 1.0f - x2 - (y * y);
-	if (a == 0.0f)
-		goto ovrf;
+  x2 = x * x;
+  a = 1.0f - x2 - (y * y);
+  if (a == 0.0f)
+    goto ovrf;
 
-	t = 0.5f * atan2f(2.0f * x, a);
-	w = _redupif(t);
+  t = 0.5f * atan2f(2.0f * x, a);
+  w = _redupif(t);
 
-	t = y - 1.0f;
-	a = x2 + (t * t);
-	if (a == 0.0f)
-		goto ovrf;
+  t = y - 1.0f;
+  a = x2 + (t * t);
+  if (a == 0.0f)
+    goto ovrf;
 
-	t = y + 1.0f;
-	a = (x2 + (t * t))/a;
-	w = w + (0.25f * logf (a)) * I;
-	return w;
+  t = y + 1.0f;
+  a = (x2 + (t * t)) / a;
+  w = w + (0.25f * logf(a)) * I;
+  return w;
 
 ovrf:
-	// FIXME
-	w = MAXNUMF + MAXNUMF * I;
-	return w;
+  // FIXME
+  w = MAXNUMF + MAXNUMF * I;
+  return w;
 }
diff --git a/fusl/src/complex/catanh.c b/fusl/src/complex/catanh.c
index e248d9b..559f93a 100644
--- a/fusl/src/complex/catanh.c
+++ b/fusl/src/complex/catanh.c
@@ -2,8 +2,7 @@
 
 /* atanh = -i atan(i z) */
 
-double complex catanh(double complex z)
-{
-	z = catan(CMPLX(-cimag(z), creal(z)));
-	return CMPLX(cimag(z), -creal(z));
+double complex catanh(double complex z) {
+  z = catan(CMPLX(-cimag(z), creal(z)));
+  return CMPLX(cimag(z), -creal(z));
 }
diff --git a/fusl/src/complex/catanhf.c b/fusl/src/complex/catanhf.c
index 4a5eb04..b5da54c 100644
--- a/fusl/src/complex/catanhf.c
+++ b/fusl/src/complex/catanhf.c
@@ -1,7 +1,6 @@
 #include "libm.h"
 
-float complex catanhf(float complex z)
-{
-	z = catanf(CMPLXF(-cimagf(z), crealf(z)));
-	return CMPLXF(cimagf(z), -crealf(z));
+float complex catanhf(float complex z) {
+  z = catanf(CMPLXF(-cimagf(z), crealf(z)));
+  return CMPLXF(cimagf(z), -crealf(z));
 }
diff --git a/fusl/src/complex/catanhl.c b/fusl/src/complex/catanhl.c
index a5dd538..91b8471 100644
--- a/fusl/src/complex/catanhl.c
+++ b/fusl/src/complex/catanhl.c
@@ -1,14 +1,12 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double complex catanhl(long double complex z)
-{
-	return catanh(z);
+long double complex catanhl(long double complex z) {
+  return catanh(z);
 }
 #else
-long double complex catanhl(long double complex z)
-{
-	z = catanl(CMPLXL(-cimagl(z), creall(z)));
-	return CMPLXL(cimagl(z), -creall(z));
+long double complex catanhl(long double complex z) {
+  z = catanl(CMPLXL(-cimagl(z), creall(z)));
+  return CMPLXL(cimagl(z), -creall(z));
 }
 #endif
diff --git a/fusl/src/complex/catanl.c b/fusl/src/complex/catanl.c
index 5ace770..4a24ff5 100644
--- a/fusl/src/complex/catanl.c
+++ b/fusl/src/complex/catanl.c
@@ -62,9 +62,8 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double complex catanl(long double complex z)
-{
-	return catan(z);
+long double complex catanl(long double complex z) {
+  return catan(z);
 }
 #else
 static const long double PIL = 3.141592653589793238462643383279502884197169L;
@@ -72,55 +71,53 @@
 static const long double DP2 = 1.6667485837041756656403424829301998703007e-19L;
 static const long double DP3 = 1.8830410776607851167459095484560349402753e-39L;
 
-static long double redupil(long double x)
-{
-	long double t;
-	long i;
+static long double redupil(long double x) {
+  long double t;
+  long i;
 
-	t = x / PIL;
-	if (t >= 0.0L)
-		t += 0.5L;
-	else
-		t -= 0.5L;
+  t = x / PIL;
+  if (t >= 0.0L)
+    t += 0.5L;
+  else
+    t -= 0.5L;
 
-	i = t;  /* the multiple */
-	t = i;
-	t = ((x - t * DP1) - t * DP2) - t * DP3;
-	return t;
+  i = t; /* the multiple */
+  t = i;
+  t = ((x - t * DP1) - t * DP2) - t * DP3;
+  return t;
 }
 
-long double complex catanl(long double complex z)
-{
-	long double complex w;
-	long double a, t, x, x2, y;
+long double complex catanl(long double complex z) {
+  long double complex w;
+  long double a, t, x, x2, y;
 
-	x = creall(z);
-	y = cimagl(z);
+  x = creall(z);
+  y = cimagl(z);
 
-	if ((x == 0.0L) && (y > 1.0L))
-		goto ovrf;
+  if ((x == 0.0L) && (y > 1.0L))
+    goto ovrf;
 
-	x2 = x * x;
-	a = 1.0L - x2 - (y * y);
-	if (a == 0.0L)
-		goto ovrf;
+  x2 = x * x;
+  a = 1.0L - x2 - (y * y);
+  if (a == 0.0L)
+    goto ovrf;
 
-	t = atan2l(2.0L * x, a) * 0.5L;
-	w = redupil(t);
+  t = atan2l(2.0L * x, a) * 0.5L;
+  w = redupil(t);
 
-	t = y - 1.0L;
-	a = x2 + (t * t);
-	if (a == 0.0L)
-		goto ovrf;
+  t = y - 1.0L;
+  a = x2 + (t * t);
+  if (a == 0.0L)
+    goto ovrf;
 
-	t = y + 1.0L;
-	a = (x2 + (t * t)) / a;
-	w = w + (0.25L * logl(a)) * I;
-	return w;
+  t = y + 1.0L;
+  a = (x2 + (t * t)) / a;
+  w = w + (0.25L * logl(a)) * I;
+  return w;
 
 ovrf:
-	// FIXME
-	w = LDBL_MAX + LDBL_MAX * I;
-	return w;
+  // FIXME
+  w = LDBL_MAX + LDBL_MAX * I;
+  return w;
 }
 #endif
diff --git a/fusl/src/complex/ccos.c b/fusl/src/complex/ccos.c
index 645aec2..00b9d58 100644
--- a/fusl/src/complex/ccos.c
+++ b/fusl/src/complex/ccos.c
@@ -2,7 +2,6 @@
 
 /* cos(z) = cosh(i z) */
 
-double complex ccos(double complex z)
-{
-	return ccosh(CMPLX(-cimag(z), creal(z)));
+double complex ccos(double complex z) {
+  return ccosh(CMPLX(-cimag(z), creal(z)));
 }
diff --git a/fusl/src/complex/ccosf.c b/fusl/src/complex/ccosf.c
index 9a67241..bc6611c 100644
--- a/fusl/src/complex/ccosf.c
+++ b/fusl/src/complex/ccosf.c
@@ -1,6 +1,5 @@
 #include "libm.h"
 
-float complex ccosf(float complex z)
-{
-	return ccoshf(CMPLXF(-cimagf(z), crealf(z)));
+float complex ccosf(float complex z) {
+  return ccoshf(CMPLXF(-cimagf(z), crealf(z)));
 }
diff --git a/fusl/src/complex/ccosh.c b/fusl/src/complex/ccosh.c
index 401f3c6..1c2be7b 100644
--- a/fusl/src/complex/ccosh.c
+++ b/fusl/src/complex/ccosh.c
@@ -38,103 +38,102 @@
 
 static const double huge = 0x1p1023;
 
-double complex ccosh(double complex z)
-{
-	double x, y, h;
-	int32_t hx, hy, ix, iy, lx, ly;
+double complex ccosh(double complex z) {
+  double x, y, h;
+  int32_t hx, hy, ix, iy, lx, ly;
 
-	x = creal(z);
-	y = cimag(z);
+  x = creal(z);
+  y = cimag(z);
 
-	EXTRACT_WORDS(hx, lx, x);
-	EXTRACT_WORDS(hy, ly, y);
+  EXTRACT_WORDS(hx, lx, x);
+  EXTRACT_WORDS(hy, ly, y);
 
-	ix = 0x7fffffff & hx;
-	iy = 0x7fffffff & hy;
+  ix = 0x7fffffff & hx;
+  iy = 0x7fffffff & hy;
 
-	/* Handle the nearly-non-exceptional cases where x and y are finite. */
-	if (ix < 0x7ff00000 && iy < 0x7ff00000) {
-		if ((iy | ly) == 0)
-			return CMPLX(cosh(x), x * y);
-		if (ix < 0x40360000)    /* small x: normal case */
-			return CMPLX(cosh(x) * cos(y), sinh(x) * sin(y));
+  /* Handle the nearly-non-exceptional cases where x and y are finite. */
+  if (ix < 0x7ff00000 && iy < 0x7ff00000) {
+    if ((iy | ly) == 0)
+      return CMPLX(cosh(x), x * y);
+    if (ix < 0x40360000) /* small x: normal case */
+      return CMPLX(cosh(x) * cos(y), sinh(x) * sin(y));
 
-		/* |x| >= 22, so cosh(x) ~= exp(|x|) */
-		if (ix < 0x40862e42) {
-			/* x < 710: exp(|x|) won't overflow */
-			h = exp(fabs(x)) * 0.5;
-			return CMPLX(h * cos(y), copysign(h, x) * sin(y));
-		} else if (ix < 0x4096bbaa) {
-			/* x < 1455: scale to avoid overflow */
-			z = __ldexp_cexp(CMPLX(fabs(x), y), -1);
-			return CMPLX(creal(z), cimag(z) * copysign(1, x));
-		} else {
-			/* x >= 1455: the result always overflows */
-			h = huge * x;
-			return CMPLX(h * h * cos(y), h * sin(y));
-		}
-	}
+    /* |x| >= 22, so cosh(x) ~= exp(|x|) */
+    if (ix < 0x40862e42) {
+      /* x < 710: exp(|x|) won't overflow */
+      h = exp(fabs(x)) * 0.5;
+      return CMPLX(h * cos(y), copysign(h, x) * sin(y));
+    } else if (ix < 0x4096bbaa) {
+      /* x < 1455: scale to avoid overflow */
+      z = __ldexp_cexp(CMPLX(fabs(x), y), -1);
+      return CMPLX(creal(z), cimag(z) * copysign(1, x));
+    } else {
+      /* x >= 1455: the result always overflows */
+      h = huge * x;
+      return CMPLX(h * h * cos(y), h * sin(y));
+    }
+  }
 
-	/*
-	 * cosh(+-0 +- I Inf) = dNaN + I sign(d(+-0, dNaN))0.
-	 * The sign of 0 in the result is unspecified.  Choice = normally
-	 * the same as dNaN.  Raise the invalid floating-point exception.
-	 *
-	 * cosh(+-0 +- I NaN) = d(NaN) + I sign(d(+-0, NaN))0.
-	 * The sign of 0 in the result is unspecified.  Choice = normally
-	 * the same as d(NaN).
-	 */
-	if ((ix | lx) == 0 && iy >= 0x7ff00000)
-		return CMPLX(y - y, copysign(0, x * (y - y)));
+  /*
+   * cosh(+-0 +- I Inf) = dNaN + I sign(d(+-0, dNaN))0.
+   * The sign of 0 in the result is unspecified.  Choice = normally
+   * the same as dNaN.  Raise the invalid floating-point exception.
+   *
+   * cosh(+-0 +- I NaN) = d(NaN) + I sign(d(+-0, NaN))0.
+   * The sign of 0 in the result is unspecified.  Choice = normally
+   * the same as d(NaN).
+   */
+  if ((ix | lx) == 0 && iy >= 0x7ff00000)
+    return CMPLX(y - y, copysign(0, x * (y - y)));
 
-	/*
-	 * cosh(+-Inf +- I 0) = +Inf + I (+-)(+-)0.
-	 *
-	 * cosh(NaN +- I 0)   = d(NaN) + I sign(d(NaN, +-0))0.
-	 * The sign of 0 in the result is unspecified.
-	 */
-	if ((iy | ly) == 0 && ix >= 0x7ff00000) {
-		if (((hx & 0xfffff) | lx) == 0)
-			return CMPLX(x * x, copysign(0, x) * y);
-		return CMPLX(x * x, copysign(0, (x + x) * y));
-	}
+  /*
+   * cosh(+-Inf +- I 0) = +Inf + I (+-)(+-)0.
+   *
+   * cosh(NaN +- I 0)   = d(NaN) + I sign(d(NaN, +-0))0.
+   * The sign of 0 in the result is unspecified.
+   */
+  if ((iy | ly) == 0 && ix >= 0x7ff00000) {
+    if (((hx & 0xfffff) | lx) == 0)
+      return CMPLX(x * x, copysign(0, x) * y);
+    return CMPLX(x * x, copysign(0, (x + x) * y));
+  }
 
-	/*
-	 * cosh(x +- I Inf) = dNaN + I dNaN.
-	 * Raise the invalid floating-point exception for finite nonzero x.
-	 *
-	 * cosh(x + I NaN) = d(NaN) + I d(NaN).
-	 * Optionally raises the invalid floating-point exception for finite
-	 * nonzero x.  Choice = don't raise (except for signaling NaNs).
-	 */
-	if (ix < 0x7ff00000 && iy >= 0x7ff00000)
-		return CMPLX(y - y, x * (y - y));
+  /*
+   * cosh(x +- I Inf) = dNaN + I dNaN.
+   * Raise the invalid floating-point exception for finite nonzero x.
+   *
+   * cosh(x + I NaN) = d(NaN) + I d(NaN).
+   * Optionally raises the invalid floating-point exception for finite
+   * nonzero x.  Choice = don't raise (except for signaling NaNs).
+   */
+  if (ix < 0x7ff00000 && iy >= 0x7ff00000)
+    return CMPLX(y - y, x * (y - y));
 
-	/*
-	 * cosh(+-Inf + I NaN)  = +Inf + I d(NaN).
-	 *
-	 * cosh(+-Inf +- I Inf) = +Inf + I dNaN.
-	 * The sign of Inf in the result is unspecified.  Choice = always +.
-	 * Raise the invalid floating-point exception.
-	 *
-	 * cosh(+-Inf + I y)   = +Inf cos(y) +- I Inf sin(y)
-	 */
-	if (ix >= 0x7ff00000 && ((hx & 0xfffff) | lx) == 0) {
-		if (iy >= 0x7ff00000)
-			return CMPLX(x * x, x * (y - y));
-		return CMPLX((x * x) * cos(y), x * sin(y));
-	}
+  /*
+   * cosh(+-Inf + I NaN)  = +Inf + I d(NaN).
+   *
+   * cosh(+-Inf +- I Inf) = +Inf + I dNaN.
+   * The sign of Inf in the result is unspecified.  Choice = always +.
+   * Raise the invalid floating-point exception.
+   *
+   * cosh(+-Inf + I y)   = +Inf cos(y) +- I Inf sin(y)
+   */
+  if (ix >= 0x7ff00000 && ((hx & 0xfffff) | lx) == 0) {
+    if (iy >= 0x7ff00000)
+      return CMPLX(x * x, x * (y - y));
+    return CMPLX((x * x) * cos(y), x * sin(y));
+  }
 
-	/*
-	 * cosh(NaN + I NaN)  = d(NaN) + I d(NaN).
-	 *
-	 * cosh(NaN +- I Inf) = d(NaN) + I d(NaN).
-	 * Optionally raises the invalid floating-point exception.
-	 * Choice = raise.
-	 *
-	 * cosh(NaN + I y)    = d(NaN) + I d(NaN).
-	 * Optionally raises the invalid floating-point exception for finite
-	 * nonzero y.  Choice = don't raise (except for signaling NaNs).
-	 */
-	return CMPLX((x * x) * (y - y), (x + x) * (y - y));
+  /*
+   * cosh(NaN + I NaN)  = d(NaN) + I d(NaN).
+   *
+   * cosh(NaN +- I Inf) = d(NaN) + I d(NaN).
+   * Optionally raises the invalid floating-point exception.
+   * Choice = raise.
+   *
+   * cosh(NaN + I y)    = d(NaN) + I d(NaN).
+   * Optionally raises the invalid floating-point exception for finite
+   * nonzero y.  Choice = don't raise (except for signaling NaNs).
+   */
+  return CMPLX((x * x) * (y - y), (x + x) * (y - y));
 }
diff --git a/fusl/src/complex/ccoshf.c b/fusl/src/complex/ccoshf.c
index 90acfe0..bff7221 100644
--- a/fusl/src/complex/ccoshf.c
+++ b/fusl/src/complex/ccoshf.c
@@ -32,59 +32,58 @@
 
 static const float huge = 0x1p127;
 
-float complex ccoshf(float complex z)
-{
-	float x, y, h;
-	int32_t hx, hy, ix, iy;
+float complex ccoshf(float complex z) {
+  float x, y, h;
+  int32_t hx, hy, ix, iy;
 
-	x = crealf(z);
-	y = cimagf(z);
+  x = crealf(z);
+  y = cimagf(z);
 
-	GET_FLOAT_WORD(hx, x);
-	GET_FLOAT_WORD(hy, y);
+  GET_FLOAT_WORD(hx, x);
+  GET_FLOAT_WORD(hy, y);
 
-	ix = 0x7fffffff & hx;
-	iy = 0x7fffffff & hy;
+  ix = 0x7fffffff & hx;
+  iy = 0x7fffffff & hy;
 
-	if (ix < 0x7f800000 && iy < 0x7f800000) {
-		if (iy == 0)
-			return CMPLXF(coshf(x), x * y);
-		if (ix < 0x41100000)    /* small x: normal case */
-			return CMPLXF(coshf(x) * cosf(y), sinhf(x) * sinf(y));
+  if (ix < 0x7f800000 && iy < 0x7f800000) {
+    if (iy == 0)
+      return CMPLXF(coshf(x), x * y);
+    if (ix < 0x41100000) /* small x: normal case */
+      return CMPLXF(coshf(x) * cosf(y), sinhf(x) * sinf(y));
 
-		/* |x| >= 9, so cosh(x) ~= exp(|x|) */
-		if (ix < 0x42b17218) {
-			/* x < 88.7: expf(|x|) won't overflow */
-			h = expf(fabsf(x)) * 0.5f;
-			return CMPLXF(h * cosf(y), copysignf(h, x) * sinf(y));
-		} else if (ix < 0x4340b1e7) {
-			/* x < 192.7: scale to avoid overflow */
-			z = __ldexp_cexpf(CMPLXF(fabsf(x), y), -1);
-			return CMPLXF(crealf(z), cimagf(z) * copysignf(1, x));
-		} else {
-			/* x >= 192.7: the result always overflows */
-			h = huge * x;
-			return CMPLXF(h * h * cosf(y), h * sinf(y));
-		}
-	}
+    /* |x| >= 9, so cosh(x) ~= exp(|x|) */
+    if (ix < 0x42b17218) {
+      /* x < 88.7: expf(|x|) won't overflow */
+      h = expf(fabsf(x)) * 0.5f;
+      return CMPLXF(h * cosf(y), copysignf(h, x) * sinf(y));
+    } else if (ix < 0x4340b1e7) {
+      /* x < 192.7: scale to avoid overflow */
+      z = __ldexp_cexpf(CMPLXF(fabsf(x), y), -1);
+      return CMPLXF(crealf(z), cimagf(z) * copysignf(1, x));
+    } else {
+      /* x >= 192.7: the result always overflows */
+      h = huge * x;
+      return CMPLXF(h * h * cosf(y), h * sinf(y));
+    }
+  }
 
-	if (ix == 0 && iy >= 0x7f800000)
-		return CMPLXF(y - y, copysignf(0, x * (y - y)));
+  if (ix == 0 && iy >= 0x7f800000)
+    return CMPLXF(y - y, copysignf(0, x * (y - y)));
 
-	if (iy == 0 && ix >= 0x7f800000) {
-		if ((hx & 0x7fffff) == 0)
-			return CMPLXF(x * x, copysignf(0, x) * y);
-		return CMPLXF(x * x, copysignf(0, (x + x) * y));
-	}
+  if (iy == 0 && ix >= 0x7f800000) {
+    if ((hx & 0x7fffff) == 0)
+      return CMPLXF(x * x, copysignf(0, x) * y);
+    return CMPLXF(x * x, copysignf(0, (x + x) * y));
+  }
 
-	if (ix < 0x7f800000 && iy >= 0x7f800000)
-		return CMPLXF(y - y, x * (y - y));
+  if (ix < 0x7f800000 && iy >= 0x7f800000)
+    return CMPLXF(y - y, x * (y - y));
 
-	if (ix >= 0x7f800000 && (hx & 0x7fffff) == 0) {
-		if (iy >= 0x7f800000)
-			return CMPLXF(x * x, x * (y - y));
-		return CMPLXF((x * x) * cosf(y), x * sinf(y));
-	}
+  if (ix >= 0x7f800000 && (hx & 0x7fffff) == 0) {
+    if (iy >= 0x7f800000)
+      return CMPLXF(x * x, x * (y - y));
+    return CMPLXF((x * x) * cosf(y), x * sinf(y));
+  }
 
-	return CMPLXF((x * x) * (y - y), (x + x) * (y - y));
+  return CMPLXF((x * x) * (y - y), (x + x) * (y - y));
 }
diff --git a/fusl/src/complex/ccoshl.c b/fusl/src/complex/ccoshl.c
index 9b2aed9..a055d93 100644
--- a/fusl/src/complex/ccoshl.c
+++ b/fusl/src/complex/ccoshl.c
@@ -1,7 +1,6 @@
 #include "libm.h"
 
-//FIXME
-long double complex ccoshl(long double complex z)
-{
-	return ccosh(z);
+// FIXME
+long double complex ccoshl(long double complex z) {
+  return ccosh(z);
 }
diff --git a/fusl/src/complex/ccosl.c b/fusl/src/complex/ccosl.c
index d787047..1b6fcc6 100644
--- a/fusl/src/complex/ccosl.c
+++ b/fusl/src/complex/ccosl.c
@@ -1,13 +1,11 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double complex ccosl(long double complex z)
-{
-	return ccos(z);
+long double complex ccosl(long double complex z) {
+  return ccos(z);
 }
 #else
-long double complex ccosl(long double complex z)
-{
-	return ccoshl(CMPLXL(-cimagl(z), creall(z)));
+long double complex ccosl(long double complex z) {
+  return ccoshl(CMPLXL(-cimagl(z), creall(z)));
 }
 #endif
diff --git a/fusl/src/complex/cexp.c b/fusl/src/complex/cexp.c
index 5118e00..edc3a68 100644
--- a/fusl/src/complex/cexp.c
+++ b/fusl/src/complex/cexp.c
@@ -27,57 +27,56 @@
 
 #include "libm.h"
 
-static const uint32_t
-exp_ovfl  = 0x40862e42,  /* high bits of MAX_EXP * ln2 ~= 710 */
-cexp_ovfl = 0x4096b8e4;  /* (MAX_EXP - MIN_DENORM_EXP) * ln2 */
+static const uint32_t exp_ovfl =
+                          0x40862e42, /* high bits of MAX_EXP * ln2 ~= 710 */
+    cexp_ovfl = 0x4096b8e4;           /* (MAX_EXP - MIN_DENORM_EXP) * ln2 */
 
-double complex cexp(double complex z)
-{
-	double x, y, exp_x;
-	uint32_t hx, hy, lx, ly;
+double complex cexp(double complex z) {
+  double x, y, exp_x;
+  uint32_t hx, hy, lx, ly;
 
-	x = creal(z);
-	y = cimag(z);
+  x = creal(z);
+  y = cimag(z);
 
-	EXTRACT_WORDS(hy, ly, y);
-	hy &= 0x7fffffff;
+  EXTRACT_WORDS(hy, ly, y);
+  hy &= 0x7fffffff;
 
-	/* cexp(x + I 0) = exp(x) + I 0 */
-	if ((hy | ly) == 0)
-		return CMPLX(exp(x), y);
-	EXTRACT_WORDS(hx, lx, x);
-	/* cexp(0 + I y) = cos(y) + I sin(y) */
-	if (((hx & 0x7fffffff) | lx) == 0)
-		return CMPLX(cos(y), sin(y));
+  /* cexp(x + I 0) = exp(x) + I 0 */
+  if ((hy | ly) == 0)
+    return CMPLX(exp(x), y);
+  EXTRACT_WORDS(hx, lx, x);
+  /* cexp(0 + I y) = cos(y) + I sin(y) */
+  if (((hx & 0x7fffffff) | lx) == 0)
+    return CMPLX(cos(y), sin(y));
 
-	if (hy >= 0x7ff00000) {
-		if (lx != 0 || (hx & 0x7fffffff) != 0x7ff00000) {
-			/* cexp(finite|NaN +- I Inf|NaN) = NaN + I NaN */
-			return CMPLX(y - y, y - y);
-		} else if (hx & 0x80000000) {
-			/* cexp(-Inf +- I Inf|NaN) = 0 + I 0 */
-			return CMPLX(0.0, 0.0);
-		} else {
-			/* cexp(+Inf +- I Inf|NaN) = Inf + I NaN */
-			return CMPLX(x, y - y);
-		}
-	}
+  if (hy >= 0x7ff00000) {
+    if (lx != 0 || (hx & 0x7fffffff) != 0x7ff00000) {
+      /* cexp(finite|NaN +- I Inf|NaN) = NaN + I NaN */
+      return CMPLX(y - y, y - y);
+    } else if (hx & 0x80000000) {
+      /* cexp(-Inf +- I Inf|NaN) = 0 + I 0 */
+      return CMPLX(0.0, 0.0);
+    } else {
+      /* cexp(+Inf +- I Inf|NaN) = Inf + I NaN */
+      return CMPLX(x, y - y);
+    }
+  }
 
-	if (hx >= exp_ovfl && hx <= cexp_ovfl) {
-		/*
-		 * x is between 709.7 and 1454.3, so we must scale to avoid
-		 * overflow in exp(x).
-		 */
-		return __ldexp_cexp(z, 0);
-	} else {
-		/*
-		 * Cases covered here:
-		 *  -  x < exp_ovfl and exp(x) won't overflow (common case)
-		 *  -  x > cexp_ovfl, so exp(x) * s overflows for all s > 0
-		 *  -  x = +-Inf (generated by exp())
-		 *  -  x = NaN (spurious inexact exception from y)
-		 */
-		exp_x = exp(x);
-		return CMPLX(exp_x * cos(y), exp_x * sin(y));
-	}
+  if (hx >= exp_ovfl && hx <= cexp_ovfl) {
+    /*
+     * x is between 709.7 and 1454.3, so we must scale to avoid
+     * overflow in exp(x).
+     */
+    return __ldexp_cexp(z, 0);
+  } else {
+    /*
+     * Cases covered here:
+     *  -  x < exp_ovfl and exp(x) won't overflow (common case)
+     *  -  x > cexp_ovfl, so exp(x) * s overflows for all s > 0
+     *  -  x = +-Inf (generated by exp())
+     *  -  x = NaN (spurious inexact exception from y)
+     */
+    exp_x = exp(x);
+    return CMPLX(exp_x * cos(y), exp_x * sin(y));
+  }
 }
diff --git a/fusl/src/complex/cexpf.c b/fusl/src/complex/cexpf.c
index 1a09964..e71e20d 100644
--- a/fusl/src/complex/cexpf.c
+++ b/fusl/src/complex/cexpf.c
@@ -27,57 +27,55 @@
 
 #include "libm.h"
 
-static const uint32_t
-exp_ovfl  = 0x42b17218,  /* MAX_EXP * ln2 ~= 88.722839355 */
-cexp_ovfl = 0x43400074;  /* (MAX_EXP - MIN_DENORM_EXP) * ln2 */
+static const uint32_t exp_ovfl = 0x42b17218, /* MAX_EXP * ln2 ~= 88.722839355 */
+    cexp_ovfl = 0x43400074; /* (MAX_EXP - MIN_DENORM_EXP) * ln2 */
 
-float complex cexpf(float complex z)
-{
-	float x, y, exp_x;
-	uint32_t hx, hy;
+float complex cexpf(float complex z) {
+  float x, y, exp_x;
+  uint32_t hx, hy;
 
-	x = crealf(z);
-	y = cimagf(z);
+  x = crealf(z);
+  y = cimagf(z);
 
-	GET_FLOAT_WORD(hy, y);
-	hy &= 0x7fffffff;
+  GET_FLOAT_WORD(hy, y);
+  hy &= 0x7fffffff;
 
-	/* cexp(x + I 0) = exp(x) + I 0 */
-	if (hy == 0)
-		return CMPLXF(expf(x), y);
-	GET_FLOAT_WORD(hx, x);
-	/* cexp(0 + I y) = cos(y) + I sin(y) */
-	if ((hx & 0x7fffffff) == 0)
-		return CMPLXF(cosf(y), sinf(y));
+  /* cexp(x + I 0) = exp(x) + I 0 */
+  if (hy == 0)
+    return CMPLXF(expf(x), y);
+  GET_FLOAT_WORD(hx, x);
+  /* cexp(0 + I y) = cos(y) + I sin(y) */
+  if ((hx & 0x7fffffff) == 0)
+    return CMPLXF(cosf(y), sinf(y));
 
-	if (hy >= 0x7f800000) {
-		if ((hx & 0x7fffffff) != 0x7f800000) {
-			/* cexp(finite|NaN +- I Inf|NaN) = NaN + I NaN */
-			return CMPLXF(y - y, y - y);
-		} else if (hx & 0x80000000) {
-			/* cexp(-Inf +- I Inf|NaN) = 0 + I 0 */
-			return CMPLXF(0.0, 0.0);
-		} else {
-			/* cexp(+Inf +- I Inf|NaN) = Inf + I NaN */
-			return CMPLXF(x, y - y);
-		}
-	}
+  if (hy >= 0x7f800000) {
+    if ((hx & 0x7fffffff) != 0x7f800000) {
+      /* cexp(finite|NaN +- I Inf|NaN) = NaN + I NaN */
+      return CMPLXF(y - y, y - y);
+    } else if (hx & 0x80000000) {
+      /* cexp(-Inf +- I Inf|NaN) = 0 + I 0 */
+      return CMPLXF(0.0, 0.0);
+    } else {
+      /* cexp(+Inf +- I Inf|NaN) = Inf + I NaN */
+      return CMPLXF(x, y - y);
+    }
+  }
 
-	if (hx >= exp_ovfl && hx <= cexp_ovfl) {
-		/*
-		 * x is between 88.7 and 192, so we must scale to avoid
-		 * overflow in expf(x).
-		 */
-		return __ldexp_cexpf(z, 0);
-	} else {
-		/*
-		 * Cases covered here:
-		 *  -  x < exp_ovfl and exp(x) won't overflow (common case)
-		 *  -  x > cexp_ovfl, so exp(x) * s overflows for all s > 0
-		 *  -  x = +-Inf (generated by exp())
-		 *  -  x = NaN (spurious inexact exception from y)
-		 */
-		exp_x = expf(x);
-		return CMPLXF(exp_x * cosf(y), exp_x * sinf(y));
-	}
+  if (hx >= exp_ovfl && hx <= cexp_ovfl) {
+    /*
+     * x is between 88.7 and 192, so we must scale to avoid
+     * overflow in expf(x).
+     */
+    return __ldexp_cexpf(z, 0);
+  } else {
+    /*
+     * Cases covered here:
+     *  -  x < exp_ovfl and exp(x) won't overflow (common case)
+     *  -  x > cexp_ovfl, so exp(x) * s overflows for all s > 0
+     *  -  x = +-Inf (generated by exp())
+     *  -  x = NaN (spurious inexact exception from y)
+     */
+    exp_x = expf(x);
+    return CMPLXF(exp_x * cosf(y), exp_x * sinf(y));
+  }
 }
diff --git a/fusl/src/complex/cexpl.c b/fusl/src/complex/cexpl.c
index a27f85c..71c2aea 100644
--- a/fusl/src/complex/cexpl.c
+++ b/fusl/src/complex/cexpl.c
@@ -1,7 +1,6 @@
 #include "libm.h"
 
-//FIXME
-long double complex cexpl(long double complex z)
-{
-	return cexp(z);
+// FIXME
+long double complex cexpl(long double complex z) {
+  return cexp(z);
 }
diff --git a/fusl/src/complex/cimag.c b/fusl/src/complex/cimag.c
index 0095564..98303fe 100644
--- a/fusl/src/complex/cimag.c
+++ b/fusl/src/complex/cimag.c
@@ -1,6 +1,5 @@
 #include "libm.h"
 
-double (cimag)(double complex z)
-{
-	return cimag(z);
+double(cimag)(double complex z) {
+  return cimag(z);
 }
diff --git a/fusl/src/complex/cimagf.c b/fusl/src/complex/cimagf.c
index f7bcd76..1f461fd 100644
--- a/fusl/src/complex/cimagf.c
+++ b/fusl/src/complex/cimagf.c
@@ -1,6 +1,5 @@
 #include "libm.h"
 
-float (cimagf)(float complex z)
-{
-	return cimagf(z);
+float(cimagf)(float complex z) {
+  return cimagf(z);
 }
diff --git a/fusl/src/complex/cimagl.c b/fusl/src/complex/cimagl.c
index 9ec24ee..464e7d1 100644
--- a/fusl/src/complex/cimagl.c
+++ b/fusl/src/complex/cimagl.c
@@ -1,6 +1,5 @@
 #include "libm.h"
 
-long double (cimagl)(long double complex z)
-{
-	return cimagl(z);
+long double(cimagl)(long double complex z) {
+  return cimagl(z);
 }
diff --git a/fusl/src/complex/clog.c b/fusl/src/complex/clog.c
index 12aae9c..4ed923f 100644
--- a/fusl/src/complex/clog.c
+++ b/fusl/src/complex/clog.c
@@ -4,11 +4,10 @@
 
 /* log(z) = log(|z|) + i arg(z) */
 
-double complex clog(double complex z)
-{
-	double r, phi;
+double complex clog(double complex z) {
+  double r, phi;
 
-	r = cabs(z);
-	phi = carg(z);
-	return CMPLX(log(r), phi);
+  r = cabs(z);
+  phi = carg(z);
+  return CMPLX(log(r), phi);
 }
diff --git a/fusl/src/complex/clogf.c b/fusl/src/complex/clogf.c
index e9b32e6..8d778c6 100644
--- a/fusl/src/complex/clogf.c
+++ b/fusl/src/complex/clogf.c
@@ -2,11 +2,10 @@
 
 // FIXME
 
-float complex clogf(float complex z)
-{
-	float r, phi;
+float complex clogf(float complex z) {
+  float r, phi;
 
-	r = cabsf(z);
-	phi = cargf(z);
-	return CMPLXF(logf(r), phi);
+  r = cabsf(z);
+  phi = cargf(z);
+  return CMPLXF(logf(r), phi);
 }
diff --git a/fusl/src/complex/clogl.c b/fusl/src/complex/clogl.c
index 18f1608..7e68ed3 100644
--- a/fusl/src/complex/clogl.c
+++ b/fusl/src/complex/clogl.c
@@ -1,18 +1,16 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double complex clogl(long double complex z)
-{
-	return clog(z);
+long double complex clogl(long double complex z) {
+  return clog(z);
 }
 #else
 // FIXME
-long double complex clogl(long double complex z)
-{
-	long double r, phi;
+long double complex clogl(long double complex z) {
+  long double r, phi;
 
-	r = cabsl(z);
-	phi = cargl(z);
-	return CMPLXL(logl(r), phi);
+  r = cabsl(z);
+  phi = cargl(z);
+  return CMPLXL(logl(r), phi);
 }
 #endif
diff --git a/fusl/src/complex/conj.c b/fusl/src/complex/conj.c
index 0b3f5f4..b544034 100644
--- a/fusl/src/complex/conj.c
+++ b/fusl/src/complex/conj.c
@@ -1,6 +1,5 @@
 #include "libm.h"
 
-double complex conj(double complex z)
-{
-	return CMPLX(creal(z), -cimag(z));
+double complex conj(double complex z) {
+  return CMPLX(creal(z), -cimag(z));
 }
diff --git a/fusl/src/complex/conjf.c b/fusl/src/complex/conjf.c
index 9af6b2c..84d77f5 100644
--- a/fusl/src/complex/conjf.c
+++ b/fusl/src/complex/conjf.c
@@ -1,6 +1,5 @@
 #include "libm.h"
 
-float complex conjf(float complex z)
-{
-	return CMPLXF(crealf(z), -cimagf(z));
+float complex conjf(float complex z) {
+  return CMPLXF(crealf(z), -cimagf(z));
 }
diff --git a/fusl/src/complex/conjl.c b/fusl/src/complex/conjl.c
index 67f11b9..66a86ac 100644
--- a/fusl/src/complex/conjl.c
+++ b/fusl/src/complex/conjl.c
@@ -1,6 +1,5 @@
 #include "libm.h"
 
-long double complex conjl(long double complex z)
-{
-	return CMPLXL(creall(z), -cimagl(z));
+long double complex conjl(long double complex z) {
+  return CMPLXL(creall(z), -cimagl(z));
 }
diff --git a/fusl/src/complex/cpow.c b/fusl/src/complex/cpow.c
index f863588..e107e8a 100644
--- a/fusl/src/complex/cpow.c
+++ b/fusl/src/complex/cpow.c
@@ -2,7 +2,6 @@
 
 /* pow(z, c) = exp(c log(z)), See C99 G.6.4.1 */
 
-double complex cpow(double complex z, double complex c)
-{
-	return cexp(c * clog(z));
+double complex cpow(double complex z, double complex c) {
+  return cexp(c * clog(z));
 }
diff --git a/fusl/src/complex/cpowf.c b/fusl/src/complex/cpowf.c
index 53c65dc..c852b10 100644
--- a/fusl/src/complex/cpowf.c
+++ b/fusl/src/complex/cpowf.c
@@ -1,6 +1,5 @@
 #include "libm.h"
 
-float complex cpowf(float complex z, float complex c)
-{
-	return cexpf(c * clogf(z));
+float complex cpowf(float complex z, float complex c) {
+  return cexpf(c * clogf(z));
 }
diff --git a/fusl/src/complex/cpowl.c b/fusl/src/complex/cpowl.c
index c1a80a7..bbc622d 100644
--- a/fusl/src/complex/cpowl.c
+++ b/fusl/src/complex/cpowl.c
@@ -1,13 +1,11 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double complex cpowl(long double complex z, long double complex c)
-{
-	return cpow(z, c);
+long double complex cpowl(long double complex z, long double complex c) {
+  return cpow(z, c);
 }
 #else
-long double complex cpowl(long double complex z, long double complex c)
-{
-	return cexpl(c * clogl(z));
+long double complex cpowl(long double complex z, long double complex c) {
+  return cexpl(c * clogl(z));
 }
 #endif
diff --git a/fusl/src/complex/cproj.c b/fusl/src/complex/cproj.c
index 15f358a..9968e05 100644
--- a/fusl/src/complex/cproj.c
+++ b/fusl/src/complex/cproj.c
@@ -1,8 +1,7 @@
 #include "libm.h"
 
-double complex cproj(double complex z)
-{
-	if (isinf(creal(z)) || isinf(cimag(z)))
-		return CMPLX(INFINITY, copysign(0.0, creal(z)));
-	return z;
+double complex cproj(double complex z) {
+  if (isinf(creal(z)) || isinf(cimag(z)))
+    return CMPLX(INFINITY, copysign(0.0, creal(z)));
+  return z;
 }
diff --git a/fusl/src/complex/cprojf.c b/fusl/src/complex/cprojf.c
index 653be5e..0b7464a 100644
--- a/fusl/src/complex/cprojf.c
+++ b/fusl/src/complex/cprojf.c
@@ -1,8 +1,7 @@
 #include "libm.h"
 
-float complex cprojf(float complex z)
-{
-	if (isinf(crealf(z)) || isinf(cimagf(z)))
-		return CMPLXF(INFINITY, copysignf(0.0, crealf(z)));
-	return z;
+float complex cprojf(float complex z) {
+  if (isinf(crealf(z)) || isinf(cimagf(z)))
+    return CMPLXF(INFINITY, copysignf(0.0, crealf(z)));
+  return z;
 }
diff --git a/fusl/src/complex/cprojl.c b/fusl/src/complex/cprojl.c
index 6731aaa..4960a6a 100644
--- a/fusl/src/complex/cprojl.c
+++ b/fusl/src/complex/cprojl.c
@@ -1,15 +1,13 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double complex cprojl(long double complex z)
-{
-	return cproj(z);
+long double complex cprojl(long double complex z) {
+  return cproj(z);
 }
 #else
-long double complex cprojl(long double complex z)
-{
-	if (isinf(creall(z)) || isinf(cimagl(z)))
-		return CMPLXL(INFINITY, copysignl(0.0, creall(z)));
-	return z;
+long double complex cprojl(long double complex z) {
+  if (isinf(creall(z)) || isinf(cimagl(z)))
+    return CMPLXL(INFINITY, copysignl(0.0, creall(z)));
+  return z;
 }
 #endif
diff --git a/fusl/src/complex/creal.c b/fusl/src/complex/creal.c
index f670304..f0d0754 100644
--- a/fusl/src/complex/creal.c
+++ b/fusl/src/complex/creal.c
@@ -1,6 +1,5 @@
 #include <complex.h>
 
-double (creal)(double complex z)
-{
-	return creal(z);
+double(creal)(double complex z) {
+  return creal(z);
 }
diff --git a/fusl/src/complex/crealf.c b/fusl/src/complex/crealf.c
index 5dc3ff1..9a40338 100644
--- a/fusl/src/complex/crealf.c
+++ b/fusl/src/complex/crealf.c
@@ -1,6 +1,5 @@
 #include <complex.h>
 
-float (crealf)(float complex z)
-{
-	return crealf(z);
+float(crealf)(float complex z) {
+  return crealf(z);
 }
diff --git a/fusl/src/complex/creall.c b/fusl/src/complex/creall.c
index fd9dc34..2145949 100644
--- a/fusl/src/complex/creall.c
+++ b/fusl/src/complex/creall.c
@@ -1,6 +1,5 @@
 #include <complex.h>
 
-long double (creall)(long double complex z)
-{
-	return creall(z);
+long double(creall)(long double complex z) {
+  return creall(z);
 }
diff --git a/fusl/src/complex/csin.c b/fusl/src/complex/csin.c
index ad8ae67..e1b0552 100644
--- a/fusl/src/complex/csin.c
+++ b/fusl/src/complex/csin.c
@@ -2,8 +2,7 @@
 
 /* sin(z) = -i sinh(i z) */
 
-double complex csin(double complex z)
-{
-	z = csinh(CMPLX(-cimag(z), creal(z)));
-	return CMPLX(cimag(z), -creal(z));
+double complex csin(double complex z) {
+  z = csinh(CMPLX(-cimag(z), creal(z)));
+  return CMPLX(cimag(z), -creal(z));
 }
diff --git a/fusl/src/complex/csinf.c b/fusl/src/complex/csinf.c
index 60b3cba..5e48654 100644
--- a/fusl/src/complex/csinf.c
+++ b/fusl/src/complex/csinf.c
@@ -1,7 +1,6 @@
 #include "libm.h"
 
-float complex csinf(float complex z)
-{
-	z = csinhf(CMPLXF(-cimagf(z), crealf(z)));
-	return CMPLXF(cimagf(z), -crealf(z));
+float complex csinf(float complex z) {
+  z = csinhf(CMPLXF(-cimagf(z), crealf(z)));
+  return CMPLXF(cimagf(z), -crealf(z));
 }
diff --git a/fusl/src/complex/csinh.c b/fusl/src/complex/csinh.c
index 0f8035d..b4176c5 100644
--- a/fusl/src/complex/csinh.c
+++ b/fusl/src/complex/csinh.c
@@ -38,104 +38,103 @@
 
 static const double huge = 0x1p1023;
 
-double complex csinh(double complex z)
-{
-	double x, y, h;
-	int32_t hx, hy, ix, iy, lx, ly;
+double complex csinh(double complex z) {
+  double x, y, h;
+  int32_t hx, hy, ix, iy, lx, ly;
 
-	x = creal(z);
-	y = cimag(z);
+  x = creal(z);
+  y = cimag(z);
 
-	EXTRACT_WORDS(hx, lx, x);
-	EXTRACT_WORDS(hy, ly, y);
+  EXTRACT_WORDS(hx, lx, x);
+  EXTRACT_WORDS(hy, ly, y);
 
-	ix = 0x7fffffff & hx;
-	iy = 0x7fffffff & hy;
+  ix = 0x7fffffff & hx;
+  iy = 0x7fffffff & hy;
 
-	/* Handle the nearly-non-exceptional cases where x and y are finite. */
-	if (ix < 0x7ff00000 && iy < 0x7ff00000) {
-		if ((iy | ly) == 0)
-			return CMPLX(sinh(x), y);
-		if (ix < 0x40360000)    /* small x: normal case */
-			return CMPLX(sinh(x) * cos(y), cosh(x) * sin(y));
+  /* Handle the nearly-non-exceptional cases where x and y are finite. */
+  if (ix < 0x7ff00000 && iy < 0x7ff00000) {
+    if ((iy | ly) == 0)
+      return CMPLX(sinh(x), y);
+    if (ix < 0x40360000) /* small x: normal case */
+      return CMPLX(sinh(x) * cos(y), cosh(x) * sin(y));
 
-		/* |x| >= 22, so cosh(x) ~= exp(|x|) */
-		if (ix < 0x40862e42) {
-			/* x < 710: exp(|x|) won't overflow */
-			h = exp(fabs(x)) * 0.5;
-			return CMPLX(copysign(h, x) * cos(y), h * sin(y));
-		} else if (ix < 0x4096bbaa) {
-			/* x < 1455: scale to avoid overflow */
-			z = __ldexp_cexp(CMPLX(fabs(x), y), -1);
-			return CMPLX(creal(z) * copysign(1, x), cimag(z));
-		} else {
-			/* x >= 1455: the result always overflows */
-			h = huge * x;
-			return CMPLX(h * cos(y), h * h * sin(y));
-		}
-	}
+    /* |x| >= 22, so cosh(x) ~= exp(|x|) */
+    if (ix < 0x40862e42) {
+      /* x < 710: exp(|x|) won't overflow */
+      h = exp(fabs(x)) * 0.5;
+      return CMPLX(copysign(h, x) * cos(y), h * sin(y));
+    } else if (ix < 0x4096bbaa) {
+      /* x < 1455: scale to avoid overflow */
+      z = __ldexp_cexp(CMPLX(fabs(x), y), -1);
+      return CMPLX(creal(z) * copysign(1, x), cimag(z));
+    } else {
+      /* x >= 1455: the result always overflows */
+      h = huge * x;
+      return CMPLX(h * cos(y), h * h * sin(y));
+    }
+  }
 
-	/*
-	 * sinh(+-0 +- I Inf) = sign(d(+-0, dNaN))0 + I dNaN.
-	 * The sign of 0 in the result is unspecified.  Choice = normally
-	 * the same as dNaN.  Raise the invalid floating-point exception.
-	 *
-	 * sinh(+-0 +- I NaN) = sign(d(+-0, NaN))0 + I d(NaN).
-	 * The sign of 0 in the result is unspecified.  Choice = normally
-	 * the same as d(NaN).
-	 */
-	if ((ix | lx) == 0 && iy >= 0x7ff00000)
-		return CMPLX(copysign(0, x * (y - y)), y - y);
+  /*
+   * sinh(+-0 +- I Inf) = sign(d(+-0, dNaN))0 + I dNaN.
+   * The sign of 0 in the result is unspecified.  Choice = normally
+   * the same as dNaN.  Raise the invalid floating-point exception.
+   *
+   * sinh(+-0 +- I NaN) = sign(d(+-0, NaN))0 + I d(NaN).
+   * The sign of 0 in the result is unspecified.  Choice = normally
+   * the same as d(NaN).
+   */
+  if ((ix | lx) == 0 && iy >= 0x7ff00000)
+    return CMPLX(copysign(0, x * (y - y)), y - y);
 
-	/*
-	 * sinh(+-Inf +- I 0) = +-Inf + I +-0.
-	 *
-	 * sinh(NaN +- I 0)   = d(NaN) + I +-0.
-	 */
-	if ((iy | ly) == 0 && ix >= 0x7ff00000) {
-		if (((hx & 0xfffff) | lx) == 0)
-			return CMPLX(x, y);
-		return CMPLX(x, copysign(0, y));
-	}
+  /*
+   * sinh(+-Inf +- I 0) = +-Inf + I +-0.
+   *
+   * sinh(NaN +- I 0)   = d(NaN) + I +-0.
+   */
+  if ((iy | ly) == 0 && ix >= 0x7ff00000) {
+    if (((hx & 0xfffff) | lx) == 0)
+      return CMPLX(x, y);
+    return CMPLX(x, copysign(0, y));
+  }
 
-	/*
-	 * sinh(x +- I Inf) = dNaN + I dNaN.
-	 * Raise the invalid floating-point exception for finite nonzero x.
-	 *
-	 * sinh(x + I NaN) = d(NaN) + I d(NaN).
-	 * Optionally raises the invalid floating-point exception for finite
-	 * nonzero x.  Choice = don't raise (except for signaling NaNs).
-	 */
-	if (ix < 0x7ff00000 && iy >= 0x7ff00000)
-		return CMPLX(y - y, x * (y - y));
+  /*
+   * sinh(x +- I Inf) = dNaN + I dNaN.
+   * Raise the invalid floating-point exception for finite nonzero x.
+   *
+   * sinh(x + I NaN) = d(NaN) + I d(NaN).
+   * Optionally raises the invalid floating-point exception for finite
+   * nonzero x.  Choice = don't raise (except for signaling NaNs).
+   */
+  if (ix < 0x7ff00000 && iy >= 0x7ff00000)
+    return CMPLX(y - y, x * (y - y));
 
-	/*
-	 * sinh(+-Inf + I NaN)  = +-Inf + I d(NaN).
-	 * The sign of Inf in the result is unspecified.  Choice = normally
-	 * the same as d(NaN).
-	 *
-	 * sinh(+-Inf +- I Inf) = +Inf + I dNaN.
-	 * The sign of Inf in the result is unspecified.  Choice = always +.
-	 * Raise the invalid floating-point exception.
-	 *
-	 * sinh(+-Inf + I y)   = +-Inf cos(y) + I Inf sin(y)
-	 */
-	if (ix >= 0x7ff00000 && ((hx & 0xfffff) | lx) == 0) {
-		if (iy >= 0x7ff00000)
-			return CMPLX(x * x, x * (y - y));
-		return CMPLX(x * cos(y), INFINITY * sin(y));
-	}
+  /*
+   * sinh(+-Inf + I NaN)  = +-Inf + I d(NaN).
+   * The sign of Inf in the result is unspecified.  Choice = normally
+   * the same as d(NaN).
+   *
+   * sinh(+-Inf +- I Inf) = +Inf + I dNaN.
+   * The sign of Inf in the result is unspecified.  Choice = always +.
+   * Raise the invalid floating-point exception.
+   *
+   * sinh(+-Inf + I y)   = +-Inf cos(y) + I Inf sin(y)
+   */
+  if (ix >= 0x7ff00000 && ((hx & 0xfffff) | lx) == 0) {
+    if (iy >= 0x7ff00000)
+      return CMPLX(x * x, x * (y - y));
+    return CMPLX(x * cos(y), INFINITY * sin(y));
+  }
 
-	/*
-	 * sinh(NaN + I NaN)  = d(NaN) + I d(NaN).
-	 *
-	 * sinh(NaN +- I Inf) = d(NaN) + I d(NaN).
-	 * Optionally raises the invalid floating-point exception.
-	 * Choice = raise.
-	 *
-	 * sinh(NaN + I y)    = d(NaN) + I d(NaN).
-	 * Optionally raises the invalid floating-point exception for finite
-	 * nonzero y.  Choice = don't raise (except for signaling NaNs).
-	 */
-	return CMPLX((x * x) * (y - y), (x + x) * (y - y));
+  /*
+   * sinh(NaN + I NaN)  = d(NaN) + I d(NaN).
+   *
+   * sinh(NaN +- I Inf) = d(NaN) + I d(NaN).
+   * Optionally raises the invalid floating-point exception.
+   * Choice = raise.
+   *
+   * sinh(NaN + I y)    = d(NaN) + I d(NaN).
+   * Optionally raises the invalid floating-point exception for finite
+   * nonzero y.  Choice = don't raise (except for signaling NaNs).
+   */
+  return CMPLX((x * x) * (y - y), (x + x) * (y - y));
 }
diff --git a/fusl/src/complex/csinhf.c b/fusl/src/complex/csinhf.c
index 49697f0..b31cc12 100644
--- a/fusl/src/complex/csinhf.c
+++ b/fusl/src/complex/csinhf.c
@@ -32,59 +32,58 @@
 
 static const float huge = 0x1p127;
 
-float complex csinhf(float complex z)
-{
-	float x, y, h;
-	int32_t hx, hy, ix, iy;
+float complex csinhf(float complex z) {
+  float x, y, h;
+  int32_t hx, hy, ix, iy;
 
-	x = crealf(z);
-	y = cimagf(z);
+  x = crealf(z);
+  y = cimagf(z);
 
-	GET_FLOAT_WORD(hx, x);
-	GET_FLOAT_WORD(hy, y);
+  GET_FLOAT_WORD(hx, x);
+  GET_FLOAT_WORD(hy, y);
 
-	ix = 0x7fffffff & hx;
-	iy = 0x7fffffff & hy;
+  ix = 0x7fffffff & hx;
+  iy = 0x7fffffff & hy;
 
-	if (ix < 0x7f800000 && iy < 0x7f800000) {
-		if (iy == 0)
-			return CMPLXF(sinhf(x), y);
-		if (ix < 0x41100000)    /* small x: normal case */
-			return CMPLXF(sinhf(x) * cosf(y), coshf(x) * sinf(y));
+  if (ix < 0x7f800000 && iy < 0x7f800000) {
+    if (iy == 0)
+      return CMPLXF(sinhf(x), y);
+    if (ix < 0x41100000) /* small x: normal case */
+      return CMPLXF(sinhf(x) * cosf(y), coshf(x) * sinf(y));
 
-		/* |x| >= 9, so cosh(x) ~= exp(|x|) */
-		if (ix < 0x42b17218) {
-			/* x < 88.7: expf(|x|) won't overflow */
-			h = expf(fabsf(x)) * 0.5f;
-			return CMPLXF(copysignf(h, x) * cosf(y), h * sinf(y));
-		} else if (ix < 0x4340b1e7) {
-			/* x < 192.7: scale to avoid overflow */
-			z = __ldexp_cexpf(CMPLXF(fabsf(x), y), -1);
-			return CMPLXF(crealf(z) * copysignf(1, x), cimagf(z));
-		} else {
-			/* x >= 192.7: the result always overflows */
-			h = huge * x;
-			return CMPLXF(h * cosf(y), h * h * sinf(y));
-		}
-	}
+    /* |x| >= 9, so cosh(x) ~= exp(|x|) */
+    if (ix < 0x42b17218) {
+      /* x < 88.7: expf(|x|) won't overflow */
+      h = expf(fabsf(x)) * 0.5f;
+      return CMPLXF(copysignf(h, x) * cosf(y), h * sinf(y));
+    } else if (ix < 0x4340b1e7) {
+      /* x < 192.7: scale to avoid overflow */
+      z = __ldexp_cexpf(CMPLXF(fabsf(x), y), -1);
+      return CMPLXF(crealf(z) * copysignf(1, x), cimagf(z));
+    } else {
+      /* x >= 192.7: the result always overflows */
+      h = huge * x;
+      return CMPLXF(h * cosf(y), h * h * sinf(y));
+    }
+  }
 
-	if (ix == 0 && iy >= 0x7f800000)
-		return CMPLXF(copysignf(0, x * (y - y)), y - y);
+  if (ix == 0 && iy >= 0x7f800000)
+    return CMPLXF(copysignf(0, x * (y - y)), y - y);
 
-	if (iy == 0 && ix >= 0x7f800000) {
-		if ((hx & 0x7fffff) == 0)
-			return CMPLXF(x, y);
-		return CMPLXF(x, copysignf(0, y));
-	}
+  if (iy == 0 && ix >= 0x7f800000) {
+    if ((hx & 0x7fffff) == 0)
+      return CMPLXF(x, y);
+    return CMPLXF(x, copysignf(0, y));
+  }
 
-	if (ix < 0x7f800000 && iy >= 0x7f800000)
-		return CMPLXF(y - y, x * (y - y));
+  if (ix < 0x7f800000 && iy >= 0x7f800000)
+    return CMPLXF(y - y, x * (y - y));
 
-	if (ix >= 0x7f800000 && (hx & 0x7fffff) == 0) {
-		if (iy >= 0x7f800000)
-			return CMPLXF(x * x, x * (y - y));
-		return CMPLXF(x * cosf(y), INFINITY * sinf(y));
-	}
+  if (ix >= 0x7f800000 && (hx & 0x7fffff) == 0) {
+    if (iy >= 0x7f800000)
+      return CMPLXF(x * x, x * (y - y));
+    return CMPLXF(x * cosf(y), INFINITY * sinf(y));
+  }
 
-	return CMPLXF((x * x) * (y - y), (x + x) * (y - y));
+  return CMPLXF((x * x) * (y - y), (x + x) * (y - y));
 }
diff --git a/fusl/src/complex/csinhl.c b/fusl/src/complex/csinhl.c
index c566653..3691dcd 100644
--- a/fusl/src/complex/csinhl.c
+++ b/fusl/src/complex/csinhl.c
@@ -1,7 +1,6 @@
 #include "libm.h"
 
-//FIXME
-long double complex csinhl(long double complex z)
-{
-	return csinh(z);
+// FIXME
+long double complex csinhl(long double complex z) {
+  return csinh(z);
 }
diff --git a/fusl/src/complex/csinl.c b/fusl/src/complex/csinl.c
index 4e9f86c..b6787ce 100644
--- a/fusl/src/complex/csinl.c
+++ b/fusl/src/complex/csinl.c
@@ -1,14 +1,12 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double complex csinl(long double complex z)
-{
-	return csin(z);
+long double complex csinl(long double complex z) {
+  return csin(z);
 }
 #else
-long double complex csinl(long double complex z)
-{
-	z = csinhl(CMPLXL(-cimagl(z), creall(z)));
-	return CMPLXL(cimagl(z), -creall(z));
+long double complex csinl(long double complex z) {
+  z = csinhl(CMPLXL(-cimagl(z), creall(z)));
+  return CMPLXL(cimagl(z), -creall(z));
 }
 #endif
diff --git a/fusl/src/complex/csqrt.c b/fusl/src/complex/csqrt.c
index 8a2ba60..951ab4f 100644
--- a/fusl/src/complex/csqrt.c
+++ b/fusl/src/complex/csqrt.c
@@ -37,64 +37,63 @@
 #pragma STDC CX_LIMITED_RANGE ON
 
 /* We risk spurious overflow for components >= DBL_MAX / (1 + sqrt(2)). */
-#define THRESH  0x1.a827999fcef32p+1022
+#define THRESH 0x1.a827999fcef32p+1022
 
-double complex csqrt(double complex z)
-{
-	double complex result;
-	double a, b;
-	double t;
-	int scale;
+double complex csqrt(double complex z) {
+  double complex result;
+  double a, b;
+  double t;
+  int scale;
 
-	a = creal(z);
-	b = cimag(z);
+  a = creal(z);
+  b = cimag(z);
 
-	/* Handle special cases. */
-	if (z == 0)
-		return CMPLX(0, b);
-	if (isinf(b))
-		return CMPLX(INFINITY, b);
-	if (isnan(a)) {
-		t = (b - b) / (b - b);  /* raise invalid if b is not a NaN */
-		return CMPLX(a, t);   /* return NaN + NaN i */
-	}
-	if (isinf(a)) {
-		/*
-		 * csqrt(inf + NaN i)  = inf +  NaN i
-		 * csqrt(inf + y i)    = inf +  0 i
-		 * csqrt(-inf + NaN i) = NaN +- inf i
-		 * csqrt(-inf + y i)   = 0   +  inf i
-		 */
-		if (signbit(a))
-			return CMPLX(fabs(b - b), copysign(a, b));
-		else
-			return CMPLX(a, copysign(b - b, b));
-	}
-	/*
-	 * The remaining special case (b is NaN) is handled just fine by
-	 * the normal code path below.
-	 */
+  /* Handle special cases. */
+  if (z == 0)
+    return CMPLX(0, b);
+  if (isinf(b))
+    return CMPLX(INFINITY, b);
+  if (isnan(a)) {
+    t = (b - b) / (b - b); /* raise invalid if b is not a NaN */
+    return CMPLX(a, t);    /* return NaN + NaN i */
+  }
+  if (isinf(a)) {
+    /*
+     * csqrt(inf + NaN i)  = inf +  NaN i
+     * csqrt(inf + y i)    = inf +  0 i
+     * csqrt(-inf + NaN i) = NaN +- inf i
+     * csqrt(-inf + y i)   = 0   +  inf i
+     */
+    if (signbit(a))
+      return CMPLX(fabs(b - b), copysign(a, b));
+    else
+      return CMPLX(a, copysign(b - b, b));
+  }
+  /*
+   * The remaining special case (b is NaN) is handled just fine by
+   * the normal code path below.
+   */
 
-	/* Scale to avoid overflow. */
-	if (fabs(a) >= THRESH || fabs(b) >= THRESH) {
-		a *= 0.25;
-		b *= 0.25;
-		scale = 1;
-	} else {
-		scale = 0;
-	}
+  /* Scale to avoid overflow. */
+  if (fabs(a) >= THRESH || fabs(b) >= THRESH) {
+    a *= 0.25;
+    b *= 0.25;
+    scale = 1;
+  } else {
+    scale = 0;
+  }
 
-	/* Algorithm 312, CACM vol 10, Oct 1967. */
-	if (a >= 0) {
-		t = sqrt((a + hypot(a, b)) * 0.5);
-		result = CMPLX(t, b / (2 * t));
-	} else {
-		t = sqrt((-a + hypot(a, b)) * 0.5);
-		result = CMPLX(fabs(b) / (2 * t), copysign(t, b));
-	}
+  /* Algorithm 312, CACM vol 10, Oct 1967. */
+  if (a >= 0) {
+    t = sqrt((a + hypot(a, b)) * 0.5);
+    result = CMPLX(t, b / (2 * t));
+  } else {
+    t = sqrt((-a + hypot(a, b)) * 0.5);
+    result = CMPLX(fabs(b) / (2 * t), copysign(t, b));
+  }
 
-	/* Rescale. */
-	if (scale)
-		result *= 2;
-	return result;
+  /* Rescale. */
+  if (scale)
+    result *= 2;
+  return result;
 }
diff --git a/fusl/src/complex/csqrtf.c b/fusl/src/complex/csqrtf.c
index ab5102f..7e0955b 100644
--- a/fusl/src/complex/csqrtf.c
+++ b/fusl/src/complex/csqrtf.c
@@ -36,47 +36,46 @@
  */
 #pragma STDC CX_LIMITED_RANGE ON
 
-float complex csqrtf(float complex z)
-{
-	float a = crealf(z), b = cimagf(z);
-	double t;
+float complex csqrtf(float complex z) {
+  float a = crealf(z), b = cimagf(z);
+  double t;
 
-	/* Handle special cases. */
-	if (z == 0)
-		return CMPLXF(0, b);
-	if (isinf(b))
-		return CMPLXF(INFINITY, b);
-	if (isnan(a)) {
-		t = (b - b) / (b - b);  /* raise invalid if b is not a NaN */
-		return CMPLXF(a, t);  /* return NaN + NaN i */
-	}
-	if (isinf(a)) {
-		/*
-		 * csqrtf(inf + NaN i)  = inf +  NaN i
-		 * csqrtf(inf + y i)    = inf +  0 i
-		 * csqrtf(-inf + NaN i) = NaN +- inf i
-		 * csqrtf(-inf + y i)   = 0   +  inf i
-		 */
-		if (signbit(a))
-			return CMPLXF(fabsf(b - b), copysignf(a, b));
-		else
-			return CMPLXF(a, copysignf(b - b, b));
-	}
-	/*
-	 * The remaining special case (b is NaN) is handled just fine by
-	 * the normal code path below.
-	 */
+  /* Handle special cases. */
+  if (z == 0)
+    return CMPLXF(0, b);
+  if (isinf(b))
+    return CMPLXF(INFINITY, b);
+  if (isnan(a)) {
+    t = (b - b) / (b - b); /* raise invalid if b is not a NaN */
+    return CMPLXF(a, t);   /* return NaN + NaN i */
+  }
+  if (isinf(a)) {
+    /*
+     * csqrtf(inf + NaN i)  = inf +  NaN i
+     * csqrtf(inf + y i)    = inf +  0 i
+     * csqrtf(-inf + NaN i) = NaN +- inf i
+     * csqrtf(-inf + y i)   = 0   +  inf i
+     */
+    if (signbit(a))
+      return CMPLXF(fabsf(b - b), copysignf(a, b));
+    else
+      return CMPLXF(a, copysignf(b - b, b));
+  }
+  /*
+   * The remaining special case (b is NaN) is handled just fine by
+   * the normal code path below.
+   */
 
-	/*
-	 * We compute t in double precision to avoid overflow and to
-	 * provide correct rounding in nearly all cases.
-	 * This is Algorithm 312, CACM vol 10, Oct 1967.
-	 */
-	if (a >= 0) {
-		t = sqrt((a + hypot(a, b)) * 0.5);
-		return CMPLXF(t, b / (2.0 * t));
-	} else {
-		t = sqrt((-a + hypot(a, b)) * 0.5);
-		return CMPLXF(fabsf(b) / (2.0 * t), copysignf(t, b));
-	}
+  /*
+   * We compute t in double precision to avoid overflow and to
+   * provide correct rounding in nearly all cases.
+   * This is Algorithm 312, CACM vol 10, Oct 1967.
+   */
+  if (a >= 0) {
+    t = sqrt((a + hypot(a, b)) * 0.5);
+    return CMPLXF(t, b / (2.0 * t));
+  } else {
+    t = sqrt((-a + hypot(a, b)) * 0.5);
+    return CMPLXF(fabsf(b) / (2.0 * t), copysignf(t, b));
+  }
 }
diff --git a/fusl/src/complex/csqrtl.c b/fusl/src/complex/csqrtl.c
index 0600ef3..07f1cad 100644
--- a/fusl/src/complex/csqrtl.c
+++ b/fusl/src/complex/csqrtl.c
@@ -1,7 +1,6 @@
 #include "libm.h"
 
-//FIXME
-long double complex csqrtl(long double complex z)
-{
-	return csqrt(z);
+// FIXME
+long double complex csqrtl(long double complex z) {
+  return csqrt(z);
 }
diff --git a/fusl/src/complex/ctan.c b/fusl/src/complex/ctan.c
index c092637..6e24525 100644
--- a/fusl/src/complex/ctan.c
+++ b/fusl/src/complex/ctan.c
@@ -2,8 +2,7 @@
 
 /* tan(z) = -i tanh(i z) */
 
-double complex ctan(double complex z)
-{
-	z = ctanh(CMPLX(-cimag(z), creal(z)));
-	return CMPLX(cimag(z), -creal(z));
+double complex ctan(double complex z) {
+  z = ctanh(CMPLX(-cimag(z), creal(z)));
+  return CMPLX(cimag(z), -creal(z));
 }
diff --git a/fusl/src/complex/ctanf.c b/fusl/src/complex/ctanf.c
index 009b192..d7ed316 100644
--- a/fusl/src/complex/ctanf.c
+++ b/fusl/src/complex/ctanf.c
@@ -1,7 +1,6 @@
 #include "libm.h"
 
-float complex ctanf(float complex z)
-{
-	z = ctanhf(CMPLXF(-cimagf(z), crealf(z)));
-	return CMPLXF(cimagf(z), -crealf(z));
+float complex ctanf(float complex z) {
+  z = ctanhf(CMPLXF(-cimagf(z), crealf(z)));
+  return CMPLXF(cimagf(z), -crealf(z));
 }
diff --git a/fusl/src/complex/ctanh.c b/fusl/src/complex/ctanh.c
index 3ba3a89..d8883c5 100644
--- a/fusl/src/complex/ctanh.c
+++ b/fusl/src/complex/ctanh.c
@@ -65,65 +65,64 @@
 
 #include "libm.h"
 
-double complex ctanh(double complex z)
-{
-	double x, y;
-	double t, beta, s, rho, denom;
-	uint32_t hx, ix, lx;
+double complex ctanh(double complex z) {
+  double x, y;
+  double t, beta, s, rho, denom;
+  uint32_t hx, ix, lx;
 
-	x = creal(z);
-	y = cimag(z);
+  x = creal(z);
+  y = cimag(z);
 
-	EXTRACT_WORDS(hx, lx, x);
-	ix = hx & 0x7fffffff;
+  EXTRACT_WORDS(hx, lx, x);
+  ix = hx & 0x7fffffff;
 
-	/*
-	 * ctanh(NaN + i 0) = NaN + i 0
-	 *
-	 * ctanh(NaN + i y) = NaN + i NaN               for y != 0
-	 *
-	 * The imaginary part has the sign of x*sin(2*y), but there's no
-	 * special effort to get this right.
-	 *
-	 * ctanh(+-Inf +- i Inf) = +-1 +- 0
-	 *
-	 * ctanh(+-Inf + i y) = +-1 + 0 sin(2y)         for y finite
-	 *
-	 * The imaginary part of the sign is unspecified.  This special
-	 * case is only needed to avoid a spurious invalid exception when
-	 * y is infinite.
-	 */
-	if (ix >= 0x7ff00000) {
-		if ((ix & 0xfffff) | lx)        /* x is NaN */
-			return CMPLX(x, (y == 0 ? y : x * y));
-		SET_HIGH_WORD(x, hx - 0x40000000);      /* x = copysign(1, x) */
-		return CMPLX(x, copysign(0, isinf(y) ? y : sin(y) * cos(y)));
-	}
+  /*
+   * ctanh(NaN + i 0) = NaN + i 0
+   *
+   * ctanh(NaN + i y) = NaN + i NaN               for y != 0
+   *
+   * The imaginary part has the sign of x*sin(2*y), but there's no
+   * special effort to get this right.
+   *
+   * ctanh(+-Inf +- i Inf) = +-1 +- 0
+   *
+   * ctanh(+-Inf + i y) = +-1 + 0 sin(2y)         for y finite
+   *
+   * The imaginary part of the sign is unspecified.  This special
+   * case is only needed to avoid a spurious invalid exception when
+   * y is infinite.
+   */
+  if (ix >= 0x7ff00000) {
+    if ((ix & 0xfffff) | lx) /* x is NaN */
+      return CMPLX(x, (y == 0 ? y : x * y));
+    SET_HIGH_WORD(x, hx - 0x40000000); /* x = copysign(1, x) */
+    return CMPLX(x, copysign(0, isinf(y) ? y : sin(y) * cos(y)));
+  }
 
-	/*
-	 * ctanh(+-0 + i NAN) = +-0 + i NaN
-	 * ctanh(+-0 +- i Inf) = +-0 + i NaN
-	 * ctanh(x + i NAN) = NaN + i NaN
-	 * ctanh(x +- i Inf) = NaN + i NaN
-	 */
-	if (!isfinite(y))
-		return CMPLX(x ? y - y : x, y - y);
+  /*
+   * ctanh(+-0 + i NAN) = +-0 + i NaN
+   * ctanh(+-0 +- i Inf) = +-0 + i NaN
+   * ctanh(x + i NAN) = NaN + i NaN
+   * ctanh(x +- i Inf) = NaN + i NaN
+   */
+  if (!isfinite(y))
+    return CMPLX(x ? y - y : x, y - y);
 
-	/*
-	 * ctanh(+-huge + i +-y) ~= +-1 +- i 2sin(2y)/exp(2x), using the
-	 * approximation sinh^2(huge) ~= exp(2*huge) / 4.
-	 * We use a modified formula to avoid spurious overflow.
-	 */
-	if (ix >= 0x40360000) { /* x >= 22 */
-		double exp_mx = exp(-fabs(x));
-		return CMPLX(copysign(1, x), 4 * sin(y) * cos(y) * exp_mx * exp_mx);
-	}
+  /*
+   * ctanh(+-huge + i +-y) ~= +-1 +- i 2sin(2y)/exp(2x), using the
+   * approximation sinh^2(huge) ~= exp(2*huge) / 4.
+   * We use a modified formula to avoid spurious overflow.
+   */
+  if (ix >= 0x40360000) { /* x >= 22 */
+    double exp_mx = exp(-fabs(x));
+    return CMPLX(copysign(1, x), 4 * sin(y) * cos(y) * exp_mx * exp_mx);
+  }
 
-	/* Kahan's algorithm */
-	t = tan(y);
-	beta = 1.0 + t * t;     /* = 1 / cos^2(y) */
-	s = sinh(x);
-	rho = sqrt(1 + s * s);  /* = cosh(x) */
-	denom = 1 + beta * s * s;
-	return CMPLX((beta * rho * s) / denom, t / denom);
+  /* Kahan's algorithm */
+  t = tan(y);
+  beta = 1.0 + t * t; /* = 1 / cos^2(y) */
+  s = sinh(x);
+  rho = sqrt(1 + s * s); /* = cosh(x) */
+  denom = 1 + beta * s * s;
+  return CMPLX((beta * rho * s) / denom, t / denom);
 }
diff --git a/fusl/src/complex/ctanhf.c b/fusl/src/complex/ctanhf.c
index 72b76da..100fb23 100644
--- a/fusl/src/complex/ctanhf.c
+++ b/fusl/src/complex/ctanhf.c
@@ -30,37 +30,36 @@
 
 #include "libm.h"
 
-float complex ctanhf(float complex z)
-{
-	float x, y;
-	float t, beta, s, rho, denom;
-	uint32_t hx, ix;
+float complex ctanhf(float complex z) {
+  float x, y;
+  float t, beta, s, rho, denom;
+  uint32_t hx, ix;
 
-	x = crealf(z);
-	y = cimagf(z);
+  x = crealf(z);
+  y = cimagf(z);
 
-	GET_FLOAT_WORD(hx, x);
-	ix = hx & 0x7fffffff;
+  GET_FLOAT_WORD(hx, x);
+  ix = hx & 0x7fffffff;
 
-	if (ix >= 0x7f800000) {
-		if (ix & 0x7fffff)
-			return CMPLXF(x, (y == 0 ? y : x * y));
-		SET_FLOAT_WORD(x, hx - 0x40000000);
-		return CMPLXF(x, copysignf(0, isinf(y) ? y : sinf(y) * cosf(y)));
-	}
+  if (ix >= 0x7f800000) {
+    if (ix & 0x7fffff)
+      return CMPLXF(x, (y == 0 ? y : x * y));
+    SET_FLOAT_WORD(x, hx - 0x40000000);
+    return CMPLXF(x, copysignf(0, isinf(y) ? y : sinf(y) * cosf(y)));
+  }
 
-	if (!isfinite(y))
-		return CMPLXF(ix ? y - y : x, y - y);
+  if (!isfinite(y))
+    return CMPLXF(ix ? y - y : x, y - y);
 
-	if (ix >= 0x41300000) { /* x >= 11 */
-		float exp_mx = expf(-fabsf(x));
-		return CMPLXF(copysignf(1, x), 4 * sinf(y) * cosf(y) * exp_mx * exp_mx);
-	}
+  if (ix >= 0x41300000) { /* x >= 11 */
+    float exp_mx = expf(-fabsf(x));
+    return CMPLXF(copysignf(1, x), 4 * sinf(y) * cosf(y) * exp_mx * exp_mx);
+  }
 
-	t = tanf(y);
-	beta = 1.0 + t * t;
-	s = sinhf(x);
-	rho = sqrtf(1 + s * s);
-	denom = 1 + beta * s * s;
-	return CMPLXF((beta * rho * s) / denom, t / denom);
+  t = tanf(y);
+  beta = 1.0 + t * t;
+  s = sinhf(x);
+  rho = sqrtf(1 + s * s);
+  denom = 1 + beta * s * s;
+  return CMPLXF((beta * rho * s) / denom, t / denom);
 }
diff --git a/fusl/src/complex/ctanhl.c b/fusl/src/complex/ctanhl.c
index 89a75d1..f651707 100644
--- a/fusl/src/complex/ctanhl.c
+++ b/fusl/src/complex/ctanhl.c
@@ -1,7 +1,6 @@
 #include "libm.h"
 
-//FIXME
-long double complex ctanhl(long double complex z)
-{
-	return ctanh(z);
+// FIXME
+long double complex ctanhl(long double complex z) {
+  return ctanh(z);
 }
diff --git a/fusl/src/complex/ctanl.c b/fusl/src/complex/ctanl.c
index ac1c3e0..5eb635b 100644
--- a/fusl/src/complex/ctanl.c
+++ b/fusl/src/complex/ctanl.c
@@ -1,14 +1,12 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double complex ctanl(long double complex z)
-{
-	return ctan(z);
+long double complex ctanl(long double complex z) {
+  return ctan(z);
 }
 #else
-long double complex ctanl(long double complex z)
-{
-	z = ctanhl(CMPLXL(-cimagl(z), creall(z)));
-	return CMPLXL(cimagl(z), -creall(z));
+long double complex ctanl(long double complex z) {
+  z = ctanhl(CMPLXL(-cimagl(z), creall(z)));
+  return CMPLXL(cimagl(z), -creall(z));
 }
 #endif
diff --git a/fusl/src/conf/confstr.c b/fusl/src/conf/confstr.c
index 6e9c23a..9fccbe9 100644
--- a/fusl/src/conf/confstr.c
+++ b/fusl/src/conf/confstr.c
@@ -2,16 +2,16 @@
 #include <stdio.h>
 #include <errno.h>
 
-size_t confstr(int name, char *buf, size_t len)
-{
-	const char *s = "";
-	if (!name) {
-		s = "/bin:/usr/bin";
-	} else if ((name&~4U)!=1 && name-_CS_POSIX_V6_ILP32_OFF32_CFLAGS>31U) {
-		errno = EINVAL;
-		return 0;
-	}
-	// snprintf is overkill but avoid wasting code size to implement
-	// this completely useless function and its truncation semantics
-	return snprintf(buf, len, "%s", s) + 1;
+size_t confstr(int name, char* buf, size_t len) {
+  const char* s = "";
+  if (!name) {
+    s = "/bin:/usr/bin";
+  } else if ((name & ~4U) != 1 &&
+             name - _CS_POSIX_V6_ILP32_OFF32_CFLAGS > 31U) {
+    errno = EINVAL;
+    return 0;
+  }
+  // snprintf is overkill but avoid wasting code size to implement
+  // this completely useless function and its truncation semantics
+  return snprintf(buf, len, "%s", s) + 1;
 }
diff --git a/fusl/src/conf/fpathconf.c b/fusl/src/conf/fpathconf.c
index 8eb037e..7835142 100644
--- a/fusl/src/conf/fpathconf.c
+++ b/fusl/src/conf/fpathconf.c
@@ -2,34 +2,31 @@
 #include <limits.h>
 #include <errno.h>
 
-long fpathconf(int fd, int name)
-{
-	static const short values[] = {
-		[_PC_LINK_MAX] = _POSIX_LINK_MAX,
-		[_PC_MAX_CANON] = _POSIX_MAX_CANON,
-		[_PC_MAX_INPUT] = _POSIX_MAX_INPUT,
-		[_PC_NAME_MAX] = NAME_MAX,
-		[_PC_PATH_MAX] = PATH_MAX,
-		[_PC_PIPE_BUF] = PIPE_BUF,
-		[_PC_CHOWN_RESTRICTED] = 1,
-		[_PC_NO_TRUNC] = 1,
-		[_PC_VDISABLE] = 0,
-		[_PC_SYNC_IO] = 1,
-		[_PC_ASYNC_IO] = -1,
-		[_PC_PRIO_IO] = -1,
-		[_PC_SOCK_MAXBUF] = -1,
-		[_PC_FILESIZEBITS] = FILESIZEBITS,
-		[_PC_REC_INCR_XFER_SIZE] = 4096,
-		[_PC_REC_MAX_XFER_SIZE] = 4096,
-		[_PC_REC_MIN_XFER_SIZE] = 4096,
-		[_PC_REC_XFER_ALIGN] = 4096,
-		[_PC_ALLOC_SIZE_MIN] = 4096,
-		[_PC_SYMLINK_MAX] = SYMLINK_MAX,
-		[_PC_2_SYMLINKS] = 1
-	};
-	if (name >= sizeof(values)/sizeof(values[0])) {
-		errno = EINVAL;
-		return -1;
-	}
-	return values[name];
+long fpathconf(int fd, int name) {
+  static const short values[] = {[_PC_LINK_MAX] = _POSIX_LINK_MAX,
+                                 [_PC_MAX_CANON] = _POSIX_MAX_CANON,
+                                 [_PC_MAX_INPUT] = _POSIX_MAX_INPUT,
+                                 [_PC_NAME_MAX] = NAME_MAX,
+                                 [_PC_PATH_MAX] = PATH_MAX,
+                                 [_PC_PIPE_BUF] = PIPE_BUF,
+                                 [_PC_CHOWN_RESTRICTED] = 1,
+                                 [_PC_NO_TRUNC] = 1,
+                                 [_PC_VDISABLE] = 0,
+                                 [_PC_SYNC_IO] = 1,
+                                 [_PC_ASYNC_IO] = -1,
+                                 [_PC_PRIO_IO] = -1,
+                                 [_PC_SOCK_MAXBUF] = -1,
+                                 [_PC_FILESIZEBITS] = FILESIZEBITS,
+                                 [_PC_REC_INCR_XFER_SIZE] = 4096,
+                                 [_PC_REC_MAX_XFER_SIZE] = 4096,
+                                 [_PC_REC_MIN_XFER_SIZE] = 4096,
+                                 [_PC_REC_XFER_ALIGN] = 4096,
+                                 [_PC_ALLOC_SIZE_MIN] = 4096,
+                                 [_PC_SYMLINK_MAX] = SYMLINK_MAX,
+                                 [_PC_2_SYMLINKS] = 1};
+  if (name >= sizeof(values) / sizeof(values[0])) {
+    errno = EINVAL;
+    return -1;
+  }
+  return values[name];
 }
diff --git a/fusl/src/conf/legacy.c b/fusl/src/conf/legacy.c
index f1d9e32..a06975c 100644
--- a/fusl/src/conf/legacy.c
+++ b/fusl/src/conf/legacy.c
@@ -1,22 +1,18 @@
 #include <sys/sysinfo.h>
 #include <unistd.h>
 
-int get_nprocs_conf()
-{
-	return sysconf(_SC_NPROCESSORS_CONF);
+int get_nprocs_conf() {
+  return sysconf(_SC_NPROCESSORS_CONF);
 }
 
-int get_nprocs()
-{
-	return sysconf(_SC_NPROCESSORS_ONLN);
+int get_nprocs() {
+  return sysconf(_SC_NPROCESSORS_ONLN);
 }
 
-long get_phys_pages()
-{
-	return sysconf(_SC_PHYS_PAGES);	
+long get_phys_pages() {
+  return sysconf(_SC_PHYS_PAGES);
 }
 
-long get_avphys_pages()
-{
-	return sysconf(_SC_AVPHYS_PAGES);	
+long get_avphys_pages() {
+  return sysconf(_SC_AVPHYS_PAGES);
 }
diff --git a/fusl/src/conf/pathconf.c b/fusl/src/conf/pathconf.c
index 01e19c5..c8fa7a8 100644
--- a/fusl/src/conf/pathconf.c
+++ b/fusl/src/conf/pathconf.c
@@ -1,6 +1,5 @@
 #include <unistd.h>
 
-long pathconf(const char *path, int name)
-{
-	return fpathconf(-1, name);
+long pathconf(const char* path, int name) {
+  return fpathconf(-1, name);
 }
diff --git a/fusl/src/conf/sysconf.c b/fusl/src/conf/sysconf.c
index b8b761d..084f399 100644
--- a/fusl/src/conf/sysconf.c
+++ b/fusl/src/conf/sysconf.c
@@ -7,7 +7,7 @@
 #include "syscall.h"
 #include "libc.h"
 
-#define JT(x) (-256|(x))
+#define JT(x) (-256 | (x))
 #define VER JT(1)
 #define JT_ARG_MAX JT(2)
 #define JT_MQ_PRIO_MAX JT(3)
@@ -19,197 +19,200 @@
 #define JT_AVPHYS_PAGES JT(9)
 #define JT_ZERO JT(10)
 
-#define RLIM(x) (-32768|(RLIMIT_ ## x))
+#define RLIM(x) (-32768 | (RLIMIT_##x))
 
-long sysconf(int name)
-{
-	static const short values[] = {
-		[_SC_ARG_MAX] = JT_ARG_MAX,
-		[_SC_CHILD_MAX] = RLIM(NPROC),
-		[_SC_CLK_TCK] = 100,
-		[_SC_NGROUPS_MAX] = 32,
-		[_SC_OPEN_MAX] = RLIM(NOFILE),
-		[_SC_STREAM_MAX] = -1,
-		[_SC_TZNAME_MAX] = TZNAME_MAX,
-		[_SC_JOB_CONTROL] = 1,
-		[_SC_SAVED_IDS] = 1,
-		[_SC_REALTIME_SIGNALS] = 1,
-		[_SC_PRIORITY_SCHEDULING] = -1,
-		[_SC_TIMERS] = VER,
-		[_SC_ASYNCHRONOUS_IO] = VER,
-		[_SC_PRIORITIZED_IO] = -1,
-		[_SC_SYNCHRONIZED_IO] = -1,
-		[_SC_FSYNC] = VER,
-		[_SC_MAPPED_FILES] = VER,
-		[_SC_MEMLOCK] = VER,
-		[_SC_MEMLOCK_RANGE] = VER,
-		[_SC_MEMORY_PROTECTION] = VER,
-		[_SC_MESSAGE_PASSING] = VER,
-		[_SC_SEMAPHORES] = VER,
-		[_SC_SHARED_MEMORY_OBJECTS] = VER,
-		[_SC_AIO_LISTIO_MAX] = -1,
-		[_SC_AIO_MAX] = -1,
-		[_SC_AIO_PRIO_DELTA_MAX] = JT_ZERO, /* ?? */
-		[_SC_DELAYTIMER_MAX] = _POSIX_DELAYTIMER_MAX,
-		[_SC_MQ_OPEN_MAX] = -1,
-		[_SC_MQ_PRIO_MAX] = JT_MQ_PRIO_MAX,
-		[_SC_VERSION] = VER,
-		[_SC_PAGE_SIZE] = JT_PAGE_SIZE,
-		[_SC_RTSIG_MAX] = _NSIG - 1 - 31 - 3,
-		[_SC_SEM_NSEMS_MAX] = SEM_NSEMS_MAX,
-		[_SC_SEM_VALUE_MAX] = JT_SEM_VALUE_MAX,
-		[_SC_SIGQUEUE_MAX] = -1,
-		[_SC_TIMER_MAX] = -1,
-		[_SC_BC_BASE_MAX] = _POSIX2_BC_BASE_MAX,
-		[_SC_BC_DIM_MAX] = _POSIX2_BC_DIM_MAX,
-		[_SC_BC_SCALE_MAX] = _POSIX2_BC_SCALE_MAX,
-		[_SC_BC_STRING_MAX] = _POSIX2_BC_STRING_MAX,
-		[_SC_COLL_WEIGHTS_MAX] = COLL_WEIGHTS_MAX,
-		[_SC_EXPR_NEST_MAX] = -1,
-		[_SC_LINE_MAX] = -1,
-		[_SC_RE_DUP_MAX] = RE_DUP_MAX,
-		[_SC_2_VERSION] = VER,
-		[_SC_2_C_BIND] = VER,
-		[_SC_2_C_DEV] = -1,
-		[_SC_2_FORT_DEV] = -1,
-		[_SC_2_FORT_RUN] = -1,
-		[_SC_2_SW_DEV] = -1,
-		[_SC_2_LOCALEDEF] = -1,
-		[_SC_IOV_MAX] = IOV_MAX,
-		[_SC_THREADS] = VER,
-		[_SC_THREAD_SAFE_FUNCTIONS] = VER,
-		[_SC_GETGR_R_SIZE_MAX] = -1,
-		[_SC_GETPW_R_SIZE_MAX] = -1,
-		[_SC_LOGIN_NAME_MAX] = 256,
-		[_SC_TTY_NAME_MAX] = TTY_NAME_MAX,
-		[_SC_THREAD_DESTRUCTOR_ITERATIONS] = PTHREAD_DESTRUCTOR_ITERATIONS,
-		[_SC_THREAD_KEYS_MAX] = PTHREAD_KEYS_MAX,
-		[_SC_THREAD_STACK_MIN] = PTHREAD_STACK_MIN,
-		[_SC_THREAD_THREADS_MAX] = -1,
-		[_SC_THREAD_ATTR_STACKADDR] = VER,
-		[_SC_THREAD_ATTR_STACKSIZE] = VER,
-		[_SC_THREAD_PRIORITY_SCHEDULING] = VER,
-		[_SC_THREAD_PRIO_INHERIT] = -1,
-		[_SC_THREAD_PRIO_PROTECT] = -1,
-		[_SC_THREAD_PROCESS_SHARED] = VER,
-		[_SC_NPROCESSORS_CONF] = JT_NPROCESSORS_CONF,
-		[_SC_NPROCESSORS_ONLN] = JT_NPROCESSORS_ONLN,
-		[_SC_PHYS_PAGES] = JT_PHYS_PAGES,
-		[_SC_AVPHYS_PAGES] = JT_AVPHYS_PAGES,
-		[_SC_ATEXIT_MAX] = -1,
-		[_SC_PASS_MAX] = -1,
-		[_SC_XOPEN_VERSION] = _XOPEN_VERSION,
-		[_SC_XOPEN_XCU_VERSION] = _XOPEN_VERSION,
-		[_SC_XOPEN_UNIX] = 1,
-		[_SC_XOPEN_CRYPT] = -1,
-		[_SC_XOPEN_ENH_I18N] = 1,
-		[_SC_XOPEN_SHM] = 1,
-		[_SC_2_CHAR_TERM] = -1,
-		[_SC_2_UPE] = -1,
-		[_SC_XOPEN_XPG2] = -1,
-		[_SC_XOPEN_XPG3] = -1,
-		[_SC_XOPEN_XPG4] = -1,
-		[_SC_NZERO] = NZERO,
-		[_SC_XBS5_ILP32_OFF32] = -1,
-		[_SC_XBS5_ILP32_OFFBIG] = sizeof(long)==4 ? 1 : JT_ZERO,
-		[_SC_XBS5_LP64_OFF64] = sizeof(long)==8 ? 1 : JT_ZERO,
-		[_SC_XBS5_LPBIG_OFFBIG] = -1,
-		[_SC_XOPEN_LEGACY] = -1,
-		[_SC_XOPEN_REALTIME] = -1,
-		[_SC_XOPEN_REALTIME_THREADS] = -1,
-		[_SC_ADVISORY_INFO] = VER,
-		[_SC_BARRIERS] = VER,
-		[_SC_CLOCK_SELECTION] = VER,
-		[_SC_CPUTIME] = VER,
-		[_SC_THREAD_CPUTIME] = VER,
-		[_SC_MONOTONIC_CLOCK] = VER,
-		[_SC_READER_WRITER_LOCKS] = VER,
-		[_SC_SPIN_LOCKS] = VER,
-		[_SC_REGEXP] = 1,
-		[_SC_SHELL] = 1,
-		[_SC_SPAWN] = VER,
-		[_SC_SPORADIC_SERVER] = -1,
-		[_SC_THREAD_SPORADIC_SERVER] = -1,
-		[_SC_TIMEOUTS] = VER,
-		[_SC_TYPED_MEMORY_OBJECTS] = -1,
-		[_SC_2_PBS] = -1,
-		[_SC_2_PBS_ACCOUNTING] = -1,
-		[_SC_2_PBS_LOCATE] = -1,
-		[_SC_2_PBS_MESSAGE] = -1,
-		[_SC_2_PBS_TRACK] = -1,
-		[_SC_SYMLOOP_MAX] = SYMLOOP_MAX,
-		[_SC_STREAMS] = JT_ZERO,
-		[_SC_2_PBS_CHECKPOINT] = -1,
-		[_SC_V6_ILP32_OFF32] = -1,
-		[_SC_V6_ILP32_OFFBIG] = sizeof(long)==4 ? 1 : JT_ZERO,
-		[_SC_V6_LP64_OFF64] = sizeof(long)==8 ? 1 : JT_ZERO,
-		[_SC_V6_LPBIG_OFFBIG] = -1,
-		[_SC_HOST_NAME_MAX] = HOST_NAME_MAX,
-		[_SC_TRACE] = -1,
-		[_SC_TRACE_EVENT_FILTER] = -1,
-		[_SC_TRACE_INHERIT] = -1,
-		[_SC_TRACE_LOG] = -1,
+long sysconf(int name) {
+  static const short values[] = {
+          [_SC_ARG_MAX] = JT_ARG_MAX,
+          [_SC_CHILD_MAX] = RLIM(NPROC),
+          [_SC_CLK_TCK] = 100,
+          [_SC_NGROUPS_MAX] = 32,
+          [_SC_OPEN_MAX] = RLIM(NOFILE),
+          [_SC_STREAM_MAX] = -1,
+          [_SC_TZNAME_MAX] = TZNAME_MAX,
+          [_SC_JOB_CONTROL] = 1,
+          [_SC_SAVED_IDS] = 1,
+          [_SC_REALTIME_SIGNALS] = 1,
+          [_SC_PRIORITY_SCHEDULING] = -1,
+          [_SC_TIMERS] = VER,
+          [_SC_ASYNCHRONOUS_IO] = VER,
+          [_SC_PRIORITIZED_IO] = -1,
+          [_SC_SYNCHRONIZED_IO] = -1,
+          [_SC_FSYNC] = VER,
+          [_SC_MAPPED_FILES] = VER,
+          [_SC_MEMLOCK] = VER,
+          [_SC_MEMLOCK_RANGE] = VER,
+          [_SC_MEMORY_PROTECTION] = VER,
+          [_SC_MESSAGE_PASSING] = VER,
+          [_SC_SEMAPHORES] = VER,
+          [_SC_SHARED_MEMORY_OBJECTS] = VER,
+          [_SC_AIO_LISTIO_MAX] = -1,
+          [_SC_AIO_MAX] = -1,
+          [_SC_AIO_PRIO_DELTA_MAX] = JT_ZERO, /* ?? */
+          [_SC_DELAYTIMER_MAX] = _POSIX_DELAYTIMER_MAX,
+          [_SC_MQ_OPEN_MAX] = -1,
+          [_SC_MQ_PRIO_MAX] = JT_MQ_PRIO_MAX,
+          [_SC_VERSION] = VER,
+          [_SC_PAGE_SIZE] = JT_PAGE_SIZE,
+          [_SC_RTSIG_MAX] = _NSIG - 1 - 31 - 3,
+          [_SC_SEM_NSEMS_MAX] = SEM_NSEMS_MAX,
+          [_SC_SEM_VALUE_MAX] = JT_SEM_VALUE_MAX,
+          [_SC_SIGQUEUE_MAX] = -1,
+          [_SC_TIMER_MAX] = -1,
+          [_SC_BC_BASE_MAX] = _POSIX2_BC_BASE_MAX,
+          [_SC_BC_DIM_MAX] = _POSIX2_BC_DIM_MAX,
+          [_SC_BC_SCALE_MAX] = _POSIX2_BC_SCALE_MAX,
+          [_SC_BC_STRING_MAX] = _POSIX2_BC_STRING_MAX,
+          [_SC_COLL_WEIGHTS_MAX] = COLL_WEIGHTS_MAX,
+          [_SC_EXPR_NEST_MAX] = -1,
+          [_SC_LINE_MAX] = -1,
+          [_SC_RE_DUP_MAX] = RE_DUP_MAX,
+          [_SC_2_VERSION] = VER,
+          [_SC_2_C_BIND] = VER,
+          [_SC_2_C_DEV] = -1,
+          [_SC_2_FORT_DEV] = -1,
+          [_SC_2_FORT_RUN] = -1,
+          [_SC_2_SW_DEV] = -1,
+          [_SC_2_LOCALEDEF] = -1,
+          [_SC_IOV_MAX] = IOV_MAX,
+          [_SC_THREADS] = VER,
+          [_SC_THREAD_SAFE_FUNCTIONS] = VER,
+          [_SC_GETGR_R_SIZE_MAX] = -1,
+          [_SC_GETPW_R_SIZE_MAX] = -1,
+          [_SC_LOGIN_NAME_MAX] = 256,
+          [_SC_TTY_NAME_MAX] = TTY_NAME_MAX,
+          [_SC_THREAD_DESTRUCTOR_ITERATIONS] = PTHREAD_DESTRUCTOR_ITERATIONS,
+          [_SC_THREAD_KEYS_MAX] = PTHREAD_KEYS_MAX,
+          [_SC_THREAD_STACK_MIN] = PTHREAD_STACK_MIN,
+          [_SC_THREAD_THREADS_MAX] = -1,
+          [_SC_THREAD_ATTR_STACKADDR] = VER,
+          [_SC_THREAD_ATTR_STACKSIZE] = VER,
+          [_SC_THREAD_PRIORITY_SCHEDULING] = VER,
+          [_SC_THREAD_PRIO_INHERIT] = -1,
+          [_SC_THREAD_PRIO_PROTECT] = -1,
+          [_SC_THREAD_PROCESS_SHARED] = VER,
+          [_SC_NPROCESSORS_CONF] = JT_NPROCESSORS_CONF,
+          [_SC_NPROCESSORS_ONLN] = JT_NPROCESSORS_ONLN,
+          [_SC_PHYS_PAGES] = JT_PHYS_PAGES,
+          [_SC_AVPHYS_PAGES] = JT_AVPHYS_PAGES,
+          [_SC_ATEXIT_MAX] = -1,
+          [_SC_PASS_MAX] = -1,
+          [_SC_XOPEN_VERSION] = _XOPEN_VERSION,
+          [_SC_XOPEN_XCU_VERSION] = _XOPEN_VERSION,
+          [_SC_XOPEN_UNIX] = 1,
+          [_SC_XOPEN_CRYPT] = -1,
+          [_SC_XOPEN_ENH_I18N] = 1,
+          [_SC_XOPEN_SHM] = 1,
+          [_SC_2_CHAR_TERM] = -1,
+          [_SC_2_UPE] = -1,
+          [_SC_XOPEN_XPG2] = -1,
+          [_SC_XOPEN_XPG3] = -1,
+          [_SC_XOPEN_XPG4] = -1,
+          [_SC_NZERO] = NZERO,
+          [_SC_XBS5_ILP32_OFF32] = -1,
+          [_SC_XBS5_ILP32_OFFBIG] = sizeof(long) == 4 ? 1 : JT_ZERO,
+          [_SC_XBS5_LP64_OFF64] = sizeof(long) == 8 ? 1 : JT_ZERO,
+          [_SC_XBS5_LPBIG_OFFBIG] = -1,
+          [_SC_XOPEN_LEGACY] = -1,
+          [_SC_XOPEN_REALTIME] = -1,
+          [_SC_XOPEN_REALTIME_THREADS] = -1,
+          [_SC_ADVISORY_INFO] = VER,
+          [_SC_BARRIERS] = VER,
+          [_SC_CLOCK_SELECTION] = VER,
+          [_SC_CPUTIME] = VER,
+          [_SC_THREAD_CPUTIME] = VER,
+          [_SC_MONOTONIC_CLOCK] = VER,
+          [_SC_READER_WRITER_LOCKS] = VER,
+          [_SC_SPIN_LOCKS] = VER,
+          [_SC_REGEXP] = 1,
+          [_SC_SHELL] = 1,
+          [_SC_SPAWN] = VER,
+          [_SC_SPORADIC_SERVER] = -1,
+          [_SC_THREAD_SPORADIC_SERVER] = -1,
+          [_SC_TIMEOUTS] = VER,
+          [_SC_TYPED_MEMORY_OBJECTS] = -1,
+          [_SC_2_PBS] = -1,
+          [_SC_2_PBS_ACCOUNTING] = -1,
+          [_SC_2_PBS_LOCATE] = -1,
+          [_SC_2_PBS_MESSAGE] = -1,
+          [_SC_2_PBS_TRACK] = -1,
+          [_SC_SYMLOOP_MAX] = SYMLOOP_MAX,
+          [_SC_STREAMS] = JT_ZERO,
+          [_SC_2_PBS_CHECKPOINT] = -1,
+          [_SC_V6_ILP32_OFF32] = -1,
+          [_SC_V6_ILP32_OFFBIG] = sizeof(long) == 4 ? 1 : JT_ZERO,
+          [_SC_V6_LP64_OFF64] = sizeof(long) == 8 ? 1 : JT_ZERO,
+          [_SC_V6_LPBIG_OFFBIG] = -1,
+          [_SC_HOST_NAME_MAX] = HOST_NAME_MAX,
+          [_SC_TRACE] = -1,
+          [_SC_TRACE_EVENT_FILTER] = -1,
+          [_SC_TRACE_INHERIT] = -1,
+          [_SC_TRACE_LOG] = -1,
 
-		[_SC_IPV6] = VER,
-		[_SC_RAW_SOCKETS] = VER,
-		[_SC_V7_ILP32_OFF32] = -1,
-		[_SC_V7_ILP32_OFFBIG] = sizeof(long)==4 ? 1 : JT_ZERO,
-		[_SC_V7_LP64_OFF64] = sizeof(long)==8 ? 1 : JT_ZERO,
-		[_SC_V7_LPBIG_OFFBIG] = -1,
-		[_SC_SS_REPL_MAX] = -1,
-		[_SC_TRACE_EVENT_NAME_MAX] = -1,
-		[_SC_TRACE_NAME_MAX] = -1,
-		[_SC_TRACE_SYS_MAX] = -1,
-		[_SC_TRACE_USER_EVENT_MAX] = -1,
-		[_SC_XOPEN_STREAMS] = JT_ZERO,
-		[_SC_THREAD_ROBUST_PRIO_INHERIT] = -1,
-		[_SC_THREAD_ROBUST_PRIO_PROTECT] = -1,
-	};
+          [_SC_IPV6] = VER,
+          [_SC_RAW_SOCKETS] = VER,
+          [_SC_V7_ILP32_OFF32] = -1,
+          [_SC_V7_ILP32_OFFBIG] = sizeof(long) == 4 ? 1 : JT_ZERO,
+          [_SC_V7_LP64_OFF64] = sizeof(long) == 8 ? 1 : JT_ZERO,
+          [_SC_V7_LPBIG_OFFBIG] = -1,
+          [_SC_SS_REPL_MAX] = -1,
+          [_SC_TRACE_EVENT_NAME_MAX] = -1,
+          [_SC_TRACE_NAME_MAX] = -1,
+          [_SC_TRACE_SYS_MAX] = -1,
+          [_SC_TRACE_USER_EVENT_MAX] = -1,
+          [_SC_XOPEN_STREAMS] = JT_ZERO,
+          [_SC_THREAD_ROBUST_PRIO_INHERIT] = -1,
+          [_SC_THREAD_ROBUST_PRIO_PROTECT] = -1,
+  };
 
-	if (name >= sizeof(values)/sizeof(values[0]) || !values[name]) {
-		errno = EINVAL;
-		return -1;
-	} else if (values[name] >= -1) {
-		return values[name];
-	} else if (values[name] < -256) {
-		struct rlimit lim;
-		getrlimit(values[name]&16383, &lim);
-		return lim.rlim_cur > LONG_MAX ? LONG_MAX : lim.rlim_cur;
-	}
+  if (name >= sizeof(values) / sizeof(values[0]) || !values[name]) {
+    errno = EINVAL;
+    return -1;
+  } else if (values[name] >= -1) {
+    return values[name];
+  } else if (values[name] < -256) {
+    struct rlimit lim;
+    getrlimit(values[name] & 16383, &lim);
+    return lim.rlim_cur > LONG_MAX ? LONG_MAX : lim.rlim_cur;
+  }
 
-	switch ((unsigned char)values[name]) {
-	case VER & 255:
-		return _POSIX_VERSION;
-	case JT_ARG_MAX & 255:
-		return ARG_MAX;
-	case JT_MQ_PRIO_MAX & 255:
-		return MQ_PRIO_MAX;
-	case JT_PAGE_SIZE & 255:
-		return PAGE_SIZE;
-	case JT_SEM_VALUE_MAX & 255:
-		return SEM_VALUE_MAX;
-	case JT_NPROCESSORS_CONF & 255:
-	case JT_NPROCESSORS_ONLN & 255: ;
-		unsigned char set[128] = {1};
-		int i, cnt;
-		__syscall(SYS_sched_getaffinity, 0, sizeof set, set);
-		for (i=cnt=0; i<sizeof set; i++)
-			for (; set[i]; set[i]&=set[i]-1, cnt++);
-		return cnt;
-	case JT_PHYS_PAGES & 255:
-	case JT_AVPHYS_PAGES & 255: ;
-		unsigned long long mem;
-		int __lsysinfo(struct sysinfo *);
-		struct sysinfo si;
-		__lsysinfo(&si);
-		if (!si.mem_unit) si.mem_unit = 1;
-		if (name==_SC_PHYS_PAGES) mem = si.totalram;
-		else mem = si.freeram + si.bufferram;
-		mem *= si.mem_unit;
-		mem /= PAGE_SIZE;
-		return (mem > LONG_MAX) ? LONG_MAX : mem;
-	case JT_ZERO & 255:
-		return 0;
-	}
-	return values[name];
+  switch ((unsigned char)values[name]) {
+    case VER & 255:
+      return _POSIX_VERSION;
+    case JT_ARG_MAX & 255:
+      return ARG_MAX;
+    case JT_MQ_PRIO_MAX & 255:
+      return MQ_PRIO_MAX;
+    case JT_PAGE_SIZE & 255:
+      return PAGE_SIZE;
+    case JT_SEM_VALUE_MAX & 255:
+      return SEM_VALUE_MAX;
+    case JT_NPROCESSORS_CONF & 255:
+    case JT_NPROCESSORS_ONLN & 255:;
+      unsigned char set[128] = {1};
+      int i, cnt;
+      __syscall(SYS_sched_getaffinity, 0, sizeof set, set);
+      for (i = cnt = 0; i < sizeof set; i++)
+        for (; set[i]; set[i] &= set[i] - 1, cnt++)
+          ;
+      return cnt;
+    case JT_PHYS_PAGES & 255:
+    case JT_AVPHYS_PAGES & 255:;
+      unsigned long long mem;
+      int __lsysinfo(struct sysinfo*);
+      struct sysinfo si;
+      __lsysinfo(&si);
+      if (!si.mem_unit)
+        si.mem_unit = 1;
+      if (name == _SC_PHYS_PAGES)
+        mem = si.totalram;
+      else
+        mem = si.freeram + si.bufferram;
+      mem *= si.mem_unit;
+      mem /= PAGE_SIZE;
+      return (mem > LONG_MAX) ? LONG_MAX : mem;
+    case JT_ZERO & 255:
+      return 0;
+  }
+  return values[name];
 }
diff --git a/fusl/src/crypt/crypt.c b/fusl/src/crypt/crypt.c
index 4650073..62707bc 100644
--- a/fusl/src/crypt/crypt.c
+++ b/fusl/src/crypt/crypt.c
@@ -1,16 +1,15 @@
 #include <unistd.h>
 #include <crypt.h>
 
-char *__crypt_r(const char *, const char *, struct crypt_data *);
+char* __crypt_r(const char*, const char*, struct crypt_data*);
 
-char *crypt(const char *key, const char *salt)
-{
-	/* This buffer is sufficiently large for all
-	 * currently-supported hash types. It needs to be updated if
-	 * longer hashes are added. The cast to struct crypt_data * is
-	 * purely to meet the public API requirements of the crypt_r
-	 * function; the implementation of crypt_r uses the object
-	 * purely as a char buffer. */
-	static char buf[128];
-	return __crypt_r(key, salt, (struct crypt_data *)buf);
+char* crypt(const char* key, const char* salt) {
+  /* This buffer is sufficiently large for all
+   * currently-supported hash types. It needs to be updated if
+   * longer hashes are added. The cast to struct crypt_data * is
+   * purely to meet the public API requirements of the crypt_r
+   * function; the implementation of crypt_r uses the object
+   * purely as a char buffer. */
+  static char buf[128];
+  return __crypt_r(key, salt, (struct crypt_data*)buf);
 }
diff --git a/fusl/src/crypt/crypt_blowfish.c b/fusl/src/crypt/crypt_blowfish.c
index d3f7985..c9886c8 100644
--- a/fusl/src/crypt/crypt_blowfish.c
+++ b/fusl/src/crypt/crypt_blowfish.c
@@ -54,414 +54,322 @@
 typedef int32_t BF_word_signed;
 
 /* Number of Blowfish rounds, this is also hardcoded into a few places */
-#define BF_N				16
+#define BF_N 16
 
 typedef BF_word BF_key[BF_N + 2];
 
 typedef union {
-	struct {
-		BF_key P;
-		BF_word S[4][0x100];
-	} s;
-	BF_word PS[BF_N + 2 + 4 * 0x100];
+  struct {
+    BF_key P;
+    BF_word S[4][0x100];
+  } s;
+  BF_word PS[BF_N + 2 + 4 * 0x100];
 } BF_ctx;
 
 /*
  * Magic IV for 64 Blowfish encryptions that we do at the end.
  * The string is "OrpheanBeholderScryDoubt" on big-endian.
  */
-static const BF_word BF_magic_w[6] = {
-	0x4F727068, 0x65616E42, 0x65686F6C,
-	0x64657253, 0x63727944, 0x6F756274
-};
+static const BF_word BF_magic_w[6] = {0x4F727068, 0x65616E42, 0x65686F6C,
+                                      0x64657253, 0x63727944, 0x6F756274};
 
 /*
  * P-box and S-box tables initialized with digits of Pi.
  */
-static const BF_ctx BF_init_state = {{
-	{
-		0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,
-		0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89,
-		0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
-		0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,
-		0x9216d5d9, 0x8979fb1b
-	}, {
-		{
-			0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,
-			0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99,
-			0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,
-			0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,
-			0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee,
-			0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,
-			0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,
-			0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e,
-			0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,
-			0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,
-			0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce,
-			0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,
-			0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,
-			0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677,
-			0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
-			0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,
-			0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88,
-			0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,
-			0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,
-			0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0,
-			0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,
-			0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,
-			0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88,
-			0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,
-			0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,
-			0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d,
-			0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,
-			0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,
-			0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba,
-			0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
-			0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,
-			0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09,
-			0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,
-			0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,
-			0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279,
-			0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,
-			0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,
-			0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82,
-			0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,
-			0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,
-			0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0,
-			0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,
-			0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,
-			0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8,
-			0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
-			0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,
-			0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7,
-			0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,
-			0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,
-			0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1,
-			0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,
-			0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,
-			0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477,
-			0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,
-			0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,
-			0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af,
-			0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,
-			0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,
-			0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41,
-			0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
-			0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,
-			0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915,
-			0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,
-			0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a
-		}, {
-			0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623,
-			0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266,
-			0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,
-			0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e,
-			0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6,
-			0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
-			0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e,
-			0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1,
-			0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,
-			0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8,
-			0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff,
-			0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,
-			0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701,
-			0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7,
-			0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,
-			0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331,
-			0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf,
-			0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,
-			0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e,
-			0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87,
-			0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
-			0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2,
-			0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16,
-			0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,
-			0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b,
-			0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509,
-			0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,
-			0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3,
-			0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f,
-			0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,
-			0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4,
-			0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960,
-			0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,
-			0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28,
-			0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802,
-			0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
-			0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510,
-			0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf,
-			0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,
-			0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e,
-			0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50,
-			0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,
-			0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8,
-			0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281,
-			0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,
-			0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696,
-			0xcdb30aeb, 0x532e3054, 0x8fd948e4, 0x6dbc3128,
-			0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,
-			0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0,
-			0x45eee2b6, 0xa3aaabea, 0xdb6c4f15, 0xfacb4fd0,
-			0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
-			0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250,
-			0xcf62a1f2, 0x5b8d2646, 0xfc8883a0, 0xc1c7b6a3,
-			0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,
-			0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00,
-			0x58428d2a, 0x0c55f5ea, 0x1dadf43e, 0x233f7061,
-			0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,
-			0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e,
-			0xa6078084, 0x19f8509e, 0xe8efd855, 0x61d99735,
-			0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,
-			0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9,
-			0xdb73dbd3, 0x105588cd, 0x675fda79, 0xe3674340,
-			0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,
-			0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7
-		}, {
-			0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934,
-			0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,
-			0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,
-			0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840,
-			0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,
-			0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,
-			0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a,
-			0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,
-			0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,
-			0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6,
-			0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,
-			0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
-			0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2,
-			0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,
-			0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,
-			0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b,
-			0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,
-			0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,
-			0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3,
-			0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,
-			0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,
-			0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564,
-			0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,
-			0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,
-			0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922,
-			0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,
-			0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
-			0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e,
-			0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,
-			0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,
-			0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804,
-			0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,
-			0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,
-			0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb,
-			0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,
-			0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,
-			0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350,
-			0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,
-			0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,
-			0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe,
-			0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,
-			0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
-			0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f,
-			0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,
-			0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,
-			0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9,
-			0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,
-			0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,
-			0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e,
-			0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,
-			0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,
-			0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169,
-			0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,
-			0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,
-			0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5,
-			0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,
-			0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
-			0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76,
-			0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,
-			0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,
-			0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4,
-			0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,
-			0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,
-			0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0
-		}, {
-			0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,
-			0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe,
-			0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
-			0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,
-			0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8,
-			0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,
-			0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,
-			0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22,
-			0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,
-			0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,
-			0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9,
-			0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,
-			0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,
-			0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51,
-			0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,
-			0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,
-			0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b,
-			0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
-			0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,
-			0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd,
-			0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,
-			0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,
-			0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb,
-			0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,
-			0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,
-			0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32,
-			0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,
-			0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,
-			0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae,
-			0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,
-			0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,
-			0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47,
-			0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
-			0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,
-			0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84,
-			0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,
-			0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,
-			0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd,
-			0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,
-			0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,
-			0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38,
-			0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,
-			0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,
-			0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525,
-			0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,
-			0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,
-			0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964,
-			0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
-			0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,
-			0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d,
-			0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,
-			0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,
-			0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02,
-			0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,
-			0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,
-			0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a,
-			0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,
-			0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,
-			0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0,
-			0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,
-			0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,
-			0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9,
-			0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
-			0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6
-		}
-	}
-}};
+static const BF_ctx BF_init_state = {
+    {{0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0,
+      0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c,
+      0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, 0x9216d5d9, 0x8979fb1b},
+     {{0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96,
+       0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16,
+       0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, 0x0d95748f, 0x728eb658,
+       0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013,
+       0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e,
+       0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60,
+       0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, 0x55ca396a, 0x2aab10b6,
+       0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a,
+       0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c,
+       0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193,
+       0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, 0xef845d5d, 0xe98575b1,
+       0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239,
+       0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a,
+       0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3,
+       0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, 0xa1f1651d, 0x39af0176,
+       0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe,
+       0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706,
+       0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b,
+       0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, 0xe3fe501a, 0xb6794c3b,
+       0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463,
+       0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c,
+       0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3,
+       0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, 0x5579c0bd, 0x1a60320a,
+       0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8,
+       0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760,
+       0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db,
+       0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, 0x695b27b0, 0xbbca58c8,
+       0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b,
+       0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33,
+       0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4,
+       0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, 0xd08ed1d0, 0xafc725e0,
+       0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c,
+       0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777,
+       0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299,
+       0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, 0x165fa266, 0x80957705,
+       0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf,
+       0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e,
+       0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa,
+       0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, 0x83260376, 0x6295cfa9,
+       0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915,
+       0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f,
+       0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664,
+       0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a},
+      {0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d,
+       0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,
+       0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65,
+       0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,
+       0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9,
+       0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,
+       0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d,
+       0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,
+       0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc,
+       0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,
+       0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908,
+       0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,
+       0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124,
+       0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,
+       0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908,
+       0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,
+       0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b,
+       0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,
+       0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa,
+       0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,
+       0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d,
+       0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,
+       0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5,
+       0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,
+       0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96,
+       0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,
+       0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca,
+       0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,
+       0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77,
+       0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,
+       0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054,
+       0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,
+       0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea,
+       0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,
+       0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646,
+       0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,
+       0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea,
+       0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,
+       0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e,
+       0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,
+       0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd,
+       0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,
+       0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7},
+      {0xe93d5a68, 0x948140f7, 0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7,
+       0xbcf46b2e, 0xd4a20068, 0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af,
+       0x1e39f62e, 0x97244546, 0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af,
+       0x70f4ddd3, 0x66a02f45, 0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504,
+       0x96eb27b3, 0x55fd3941, 0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4,
+       0x0a2c86da, 0xe9b66dfb, 0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee,
+       0x4f3ffea2, 0xe887ad8c, 0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec,
+       0xce78a399, 0x406b2a42, 0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b,
+       0x1dc9faf7, 0x4b6d1856, 0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332,
+       0x6841e7f7, 0xca7820fb, 0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527,
+       0x55533a3a, 0x20838d87, 0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58,
+       0xcca92963, 0x99e1db33, 0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c,
+       0xfdf8e802, 0x04272f70, 0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22,
+       0x48c1133f, 0xc70f86dc, 0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17,
+       0x325f51eb, 0xd59bc0d1, 0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60,
+       0xdff8e8a3, 0x1f636c1b, 0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115,
+       0x6b2395e0, 0x333e92e1, 0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99,
+       0xde720c8c, 0x2da2f728, 0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0,
+       0x5449a36f, 0x877d48fa, 0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74,
+       0x3a6f6eab, 0xf4f8fd37, 0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d,
+       0xc67b5510, 0x6d672c37, 0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3,
+       0xb5390f92, 0x690fed0b, 0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3,
+       0xbb132f88, 0x515bad24, 0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979,
+       0x8026e297, 0xf42e312d, 0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c,
+       0x6a124237, 0xb79251e7, 0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa,
+       0x3d25bdd8, 0xe2e1c3c9, 0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a,
+       0x64af674e, 0xda86a85f, 0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086,
+       0x60787bf8, 0x6003604d, 0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc,
+       0x83426b33, 0xf01eab71, 0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24,
+       0x55464299, 0xbf582e61, 0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2,
+       0x5366f9c3, 0xc8b38e74, 0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84,
+       0x846a0e79, 0x915f95e2, 0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c,
+       0xb90bace1, 0xbb8205d0, 0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09,
+       0x662d09a1, 0xc4324633, 0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10,
+       0x1ab93d1d, 0x0ba5a4df, 0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe,
+       0xa1e2ce9b, 0x4fcd7f52, 0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027,
+       0x9af88c27, 0x773f8641, 0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0,
+       0x006058aa, 0x30dc7d62, 0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634,
+       0xbbcbee56, 0x90bcb6de, 0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188,
+       0x39720a3d, 0x7c927c24, 0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc,
+       0xed545578, 0x08fca5b5, 0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8,
+       0xa28514d9, 0x6c51133c, 0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837,
+       0xd79a3234, 0x92638212, 0x670efa8e, 0x406000e0},
+      {0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b, 0x5cb0679e, 0x4fa33742,
+       0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315, 0xd62d1c7e, 0xc700c47b,
+       0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4, 0x5748ab2f, 0xbc946e79,
+       0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d, 0xd5730a1d, 0x4cd04dc6,
+       0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304, 0xa1fad5f0, 0x6a2d519a,
+       0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6, 0xa51e03aa, 0x9cf2d0a4,
+       0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6, 0x2826a2f9, 0xa73a3ae1,
+       0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da, 0x3f046f69, 0x77fa0a59,
+       0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593, 0xe990fd5a, 0x9e34d797,
+       0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d, 0xd1cf3ed6, 0x7c7d2d28,
+       0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c, 0xe029ac71, 0xe019a5e6,
+       0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc, 0xf8d56629, 0x79132e28,
+       0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c, 0x15056dd4, 0x88f46dba,
+       0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2, 0x97271aec, 0xa93a072a,
+       0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319, 0x7533d928, 0xb155fdf5,
+       0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8, 0xabcc5167, 0xccad925f,
+       0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991, 0xea7a90c2, 0xfb3e7bce,
+       0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46, 0x48de5369, 0x6413e680,
+       0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166, 0xb39a460a, 0x6445c0dd,
+       0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40, 0xccd2017f, 0x6bb4e3bb,
+       0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5, 0x72eacea8, 0xfa6484bb,
+       0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e, 0xaec2771b, 0xf64e6370,
+       0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d, 0x4040cb08, 0x4eb4e2cc,
+       0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d, 0x06b89fb4, 0xce6ea048,
+       0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8, 0x611560b1, 0xe7933fdc,
+       0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b, 0x2f32c9b7, 0xa01fbac9,
+       0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7, 0x1a908749, 0xd44fbd9a,
+       0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667, 0x8df9317c, 0xe0b12b4f,
+       0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c, 0xbf97222c, 0x15e6fc2a,
+       0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb, 0xc2a86459, 0x12baa8d1,
+       0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442, 0xe0ec6e0e, 0x1698db3b,
+       0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df, 0xd3a0342b, 0x8971f21e,
+       0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8, 0xdf359f8d, 0x9b992f2e,
+       0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891, 0xce6279cf, 0xcd3e7e6f,
+       0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299, 0xf523f357, 0xa6327623,
+       0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5, 0x6e163697, 0x88d273cc,
+       0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614, 0xe6c6c7bd, 0x327a140a,
+       0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00, 0xbb25bfe2, 0x35bdd2f6,
+       0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b, 0x53113ec0, 0x1640e3d3,
+       0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76, 0x77afa1c5, 0x20756060,
+       0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e, 0x1948c25c, 0x02fb8a8c,
+       0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0, 0x3f09252d, 0xc208e69f,
+       0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6}}}};
 
 static const unsigned char BF_itoa64[64 + 1] =
-	"./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
+    "./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
 
 static const unsigned char BF_atoi64[0x60] = {
-	64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0, 1,
-	54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64,
-	64, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
-	17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 64, 64, 64, 64, 64,
-	64, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
-	43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 64, 64, 64, 64, 64
-};
+    64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 0,  1,
+    54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 64, 64, 64, 64,
+    64, 2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14, 15, 16,
+    17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 64, 64, 64, 64, 64,
+    64, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
+    43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 64, 64, 64, 64, 64};
 
-#define BF_safe_atoi64(dst, src) \
-{ \
-	tmp = (unsigned char)(src); \
-	if ((unsigned int)(tmp -= 0x20) >= 0x60) return -1; \
-	tmp = BF_atoi64[tmp]; \
-	if (tmp > 63) return -1; \
-	(dst) = tmp; \
+#define BF_safe_atoi64(dst, src)             \
+  {                                          \
+    tmp = (unsigned char)(src);              \
+    if ((unsigned int)(tmp -= 0x20) >= 0x60) \
+      return -1;                             \
+    tmp = BF_atoi64[tmp];                    \
+    if (tmp > 63)                            \
+      return -1;                             \
+    (dst) = tmp;                             \
+  }
+
+static int BF_decode(BF_word* dst, const char* src, int size) {
+  unsigned char* dptr = (unsigned char*)dst;
+  unsigned char* end = dptr + size;
+  const unsigned char* sptr = (const unsigned char*)src;
+  unsigned int tmp, c1, c2, c3, c4;
+
+  do {
+    BF_safe_atoi64(c1, *sptr++);
+    BF_safe_atoi64(c2, *sptr++);
+    *dptr++ = (c1 << 2) | ((c2 & 0x30) >> 4);
+    if (dptr >= end)
+      break;
+
+    BF_safe_atoi64(c3, *sptr++);
+    *dptr++ = ((c2 & 0x0F) << 4) | ((c3 & 0x3C) >> 2);
+    if (dptr >= end)
+      break;
+
+    BF_safe_atoi64(c4, *sptr++);
+    *dptr++ = ((c3 & 0x03) << 6) | c4;
+  } while (dptr < end);
+
+  return 0;
 }
 
-static int BF_decode(BF_word *dst, const char *src, int size)
-{
-	unsigned char *dptr = (unsigned char *)dst;
-	unsigned char *end = dptr + size;
-	const unsigned char *sptr = (const unsigned char *)src;
-	unsigned int tmp, c1, c2, c3, c4;
+static void BF_encode(char* dst, const BF_word* src, int size) {
+  const unsigned char* sptr = (const unsigned char*)src;
+  const unsigned char* end = sptr + size;
+  unsigned char* dptr = (unsigned char*)dst;
+  unsigned int c1, c2;
 
-	do {
-		BF_safe_atoi64(c1, *sptr++);
-		BF_safe_atoi64(c2, *sptr++);
-		*dptr++ = (c1 << 2) | ((c2 & 0x30) >> 4);
-		if (dptr >= end) break;
+  do {
+    c1 = *sptr++;
+    *dptr++ = BF_itoa64[c1 >> 2];
+    c1 = (c1 & 0x03) << 4;
+    if (sptr >= end) {
+      *dptr++ = BF_itoa64[c1];
+      break;
+    }
 
-		BF_safe_atoi64(c3, *sptr++);
-		*dptr++ = ((c2 & 0x0F) << 4) | ((c3 & 0x3C) >> 2);
-		if (dptr >= end) break;
+    c2 = *sptr++;
+    c1 |= c2 >> 4;
+    *dptr++ = BF_itoa64[c1];
+    c1 = (c2 & 0x0f) << 2;
+    if (sptr >= end) {
+      *dptr++ = BF_itoa64[c1];
+      break;
+    }
 
-		BF_safe_atoi64(c4, *sptr++);
-		*dptr++ = ((c3 & 0x03) << 6) | c4;
-	} while (dptr < end);
-
-	return 0;
+    c2 = *sptr++;
+    c1 |= c2 >> 6;
+    *dptr++ = BF_itoa64[c1];
+    *dptr++ = BF_itoa64[c2 & 0x3f];
+  } while (sptr < end);
 }
 
-static void BF_encode(char *dst, const BF_word *src, int size)
-{
-	const unsigned char *sptr = (const unsigned char *)src;
-	const unsigned char *end = sptr + size;
-	unsigned char *dptr = (unsigned char *)dst;
-	unsigned int c1, c2;
-
-	do {
-		c1 = *sptr++;
-		*dptr++ = BF_itoa64[c1 >> 2];
-		c1 = (c1 & 0x03) << 4;
-		if (sptr >= end) {
-			*dptr++ = BF_itoa64[c1];
-			break;
-		}
-
-		c2 = *sptr++;
-		c1 |= c2 >> 4;
-		*dptr++ = BF_itoa64[c1];
-		c1 = (c2 & 0x0f) << 2;
-		if (sptr >= end) {
-			*dptr++ = BF_itoa64[c1];
-			break;
-		}
-
-		c2 = *sptr++;
-		c1 |= c2 >> 6;
-		*dptr++ = BF_itoa64[c1];
-		*dptr++ = BF_itoa64[c2 & 0x3f];
-	} while (sptr < end);
+static void BF_swap(BF_word* x, int count) {
+  if ((union {
+        int i;
+        char c;
+      }){1}
+          .c)
+    do {
+      BF_word tmp = *x;
+      tmp = (tmp << 16) | (tmp >> 16);
+      *x++ = ((tmp & 0x00FF00FF) << 8) | ((tmp >> 8) & 0x00FF00FF);
+    } while (--count);
 }
 
-static void BF_swap(BF_word *x, int count)
-{
-	if ((union { int i; char c; }){1}.c)
-	do {
-		BF_word tmp = *x;
-		tmp = (tmp << 16) | (tmp >> 16);
-		*x++ = ((tmp & 0x00FF00FF) << 8) | ((tmp >> 8) & 0x00FF00FF);
-	} while (--count);
-}
+#define BF_ROUND(L, R, N)    \
+  tmp1 = L & 0xFF;           \
+  tmp2 = L >> 8;             \
+  tmp2 &= 0xFF;              \
+  tmp3 = L >> 16;            \
+  tmp3 &= 0xFF;              \
+  tmp4 = L >> 24;            \
+  tmp1 = ctx->s.S[3][tmp1];  \
+  tmp2 = ctx->s.S[2][tmp2];  \
+  tmp3 = ctx->s.S[1][tmp3];  \
+  tmp3 += ctx->s.S[0][tmp4]; \
+  tmp3 ^= tmp2;              \
+  R ^= ctx->s.P[N + 1];      \
+  tmp3 += tmp1;              \
+  R ^= tmp3;
 
-#define BF_ROUND(L, R, N) \
-	tmp1 = L & 0xFF; \
-	tmp2 = L >> 8; \
-	tmp2 &= 0xFF; \
-	tmp3 = L >> 16; \
-	tmp3 &= 0xFF; \
-	tmp4 = L >> 24; \
-	tmp1 = ctx->s.S[3][tmp1]; \
-	tmp2 = ctx->s.S[2][tmp2]; \
-	tmp3 = ctx->s.S[1][tmp3]; \
-	tmp3 += ctx->s.S[0][tmp4]; \
-	tmp3 ^= tmp2; \
-	R ^= ctx->s.P[N + 1]; \
-	tmp3 += tmp1; \
-	R ^= tmp3;
+static BF_word BF_encrypt(BF_ctx* ctx,
+                          BF_word L,
+                          BF_word R,
+                          BF_word* start,
+                          BF_word* end) {
+  BF_word tmp1, tmp2, tmp3, tmp4;
+  BF_word* ptr = start;
 
-static BF_word BF_encrypt(BF_ctx *ctx,
-    BF_word L, BF_word R,
-    BF_word *start, BF_word *end)
-{
-	BF_word tmp1, tmp2, tmp3, tmp4;
-	BF_word *ptr = start;
-
-	do {
-		L ^= ctx->s.P[0];
+  do {
+    L ^= ctx->s.P[0];
 #if 0
 		BF_ROUND(L, R, 0);
 		BF_ROUND(R, L, 1);
@@ -480,246 +388,244 @@
 		BF_ROUND(L, R, 14);
 		BF_ROUND(R, L, 15);
 #else
-		for (int i=0; i<16; i+=2) {
-			BF_ROUND(L, R, i);
-			BF_ROUND(R, L, i+1);
-		}
+    for (int i = 0; i < 16; i += 2) {
+      BF_ROUND(L, R, i);
+      BF_ROUND(R, L, i + 1);
+    }
 #endif
-		tmp4 = R;
-		R = L;
-		L = tmp4 ^ ctx->s.P[BF_N + 1];
-		*ptr++ = L;
-		*ptr++ = R;
-	} while (ptr < end);
+    tmp4 = R;
+    R = L;
+    L = tmp4 ^ ctx->s.P[BF_N + 1];
+    *ptr++ = L;
+    *ptr++ = R;
+  } while (ptr < end);
 
-	return L;
+  return L;
 }
 
-static void BF_set_key(const char *key, BF_key expanded, BF_key initial,
-    unsigned char flags)
-{
-	const char *ptr = key;
-	unsigned int bug, i, j;
-	BF_word safety, sign, diff, tmp[2];
+static void BF_set_key(const char* key,
+                       BF_key expanded,
+                       BF_key initial,
+                       unsigned char flags) {
+  const char* ptr = key;
+  unsigned int bug, i, j;
+  BF_word safety, sign, diff, tmp[2];
 
-/*
- * There was a sign extension bug in older revisions of this function.  While
- * we would have liked to simply fix the bug and move on, we have to provide
- * a backwards compatibility feature (essentially the bug) for some systems and
- * a safety measure for some others.  The latter is needed because for certain
- * multiple inputs to the buggy algorithm there exist easily found inputs to
- * the correct algorithm that produce the same hash.  Thus, we optionally
- * deviate from the correct algorithm just enough to avoid such collisions.
- * While the bug itself affected the majority of passwords containing
- * characters with the 8th bit set (although only a percentage of those in a
- * collision-producing way), the anti-collision safety measure affects
- * only a subset of passwords containing the '\xff' character (not even all of
- * those passwords, just some of them).  This character is not found in valid
- * UTF-8 sequences and is rarely used in popular 8-bit character encodings.
- * Thus, the safety measure is unlikely to cause much annoyance, and is a
- * reasonable tradeoff to use when authenticating against existing hashes that
- * are not reliably known to have been computed with the correct algorithm.
- *
- * We use an approach that tries to minimize side-channel leaks of password
- * information - that is, we mostly use fixed-cost bitwise operations instead
- * of branches or table lookups.  (One conditional branch based on password
- * length remains.  It is not part of the bug aftermath, though, and is
- * difficult and possibly unreasonable to avoid given the use of C strings by
- * the caller, which results in similar timing leaks anyway.)
- *
- * For actual implementation, we set an array index in the variable "bug"
- * (0 means no bug, 1 means sign extension bug emulation) and a flag in the
- * variable "safety" (bit 16 is set when the safety measure is requested).
- * Valid combinations of settings are:
- *
- * Prefix "$2a$": bug = 0, safety = 0x10000
- * Prefix "$2x$": bug = 1, safety = 0
- * Prefix "$2y$": bug = 0, safety = 0
- */
-	bug = flags & 1;
-	safety = ((BF_word)flags & 2) << 15;
+  /*
+   * There was a sign extension bug in older revisions of this function.  While
+   * we would have liked to simply fix the bug and move on, we have to provide
+   * a backwards compatibility feature (essentially the bug) for some systems
+   * and
+   * a safety measure for some others.  The latter is needed because for certain
+   * multiple inputs to the buggy algorithm there exist easily found inputs to
+   * the correct algorithm that produce the same hash.  Thus, we optionally
+   * deviate from the correct algorithm just enough to avoid such collisions.
+   * While the bug itself affected the majority of passwords containing
+   * characters with the 8th bit set (although only a percentage of those in a
+   * collision-producing way), the anti-collision safety measure affects
+   * only a subset of passwords containing the '\xff' character (not even all of
+   * those passwords, just some of them).  This character is not found in valid
+   * UTF-8 sequences and is rarely used in popular 8-bit character encodings.
+   * Thus, the safety measure is unlikely to cause much annoyance, and is a
+   * reasonable tradeoff to use when authenticating against existing hashes that
+   * are not reliably known to have been computed with the correct algorithm.
+   *
+   * We use an approach that tries to minimize side-channel leaks of password
+   * information - that is, we mostly use fixed-cost bitwise operations instead
+   * of branches or table lookups.  (One conditional branch based on password
+   * length remains.  It is not part of the bug aftermath, though, and is
+   * difficult and possibly unreasonable to avoid given the use of C strings by
+   * the caller, which results in similar timing leaks anyway.)
+   *
+   * For actual implementation, we set an array index in the variable "bug"
+   * (0 means no bug, 1 means sign extension bug emulation) and a flag in the
+   * variable "safety" (bit 16 is set when the safety measure is requested).
+   * Valid combinations of settings are:
+   *
+   * Prefix "$2a$": bug = 0, safety = 0x10000
+   * Prefix "$2x$": bug = 1, safety = 0
+   * Prefix "$2y$": bug = 0, safety = 0
+   */
+  bug = flags & 1;
+  safety = ((BF_word)flags & 2) << 15;
 
-	sign = diff = 0;
+  sign = diff = 0;
 
-	for (i = 0; i < BF_N + 2; i++) {
-		tmp[0] = tmp[1] = 0;
-		for (j = 0; j < 4; j++) {
-			tmp[0] <<= 8;
-			tmp[0] |= (unsigned char)*ptr; /* correct */
-			tmp[1] <<= 8;
-			tmp[1] |= (signed char)*ptr; /* bug */
-/*
- * Sign extension in the first char has no effect - nothing to overwrite yet,
- * and those extra 24 bits will be fully shifted out of the 32-bit word.  For
- * chars 2, 3, 4 in each four-char block, we set bit 7 of "sign" if sign
- * extension in tmp[1] occurs.  Once this flag is set, it remains set.
- */
-			if (j)
-				sign |= tmp[1] & 0x80;
-			if (!*ptr)
-				ptr = key;
-			else
-				ptr++;
-		}
-		diff |= tmp[0] ^ tmp[1]; /* Non-zero on any differences */
+  for (i = 0; i < BF_N + 2; i++) {
+    tmp[0] = tmp[1] = 0;
+    for (j = 0; j < 4; j++) {
+      tmp[0] <<= 8;
+      tmp[0] |= (unsigned char)*ptr; /* correct */
+      tmp[1] <<= 8;
+      tmp[1] |= (signed char)*ptr; /* bug */
+                                   /*
+                                    * Sign extension in the first char has no effect - nothing to overwrite
+                                    * yet,
+                                    * and those extra 24 bits will be fully shifted out of the 32-bit word.
+                                    * For
+                                    * chars 2, 3, 4 in each four-char block, we set bit 7 of "sign" if sign
+                                    * extension in tmp[1] occurs.  Once this flag is set, it remains set.
+                                    */
+      if (j)
+        sign |= tmp[1] & 0x80;
+      if (!*ptr)
+        ptr = key;
+      else
+        ptr++;
+    }
+    diff |= tmp[0] ^ tmp[1]; /* Non-zero on any differences */
 
-		expanded[i] = tmp[bug];
-		initial[i] = BF_init_state.s.P[i] ^ tmp[bug];
-	}
+    expanded[i] = tmp[bug];
+    initial[i] = BF_init_state.s.P[i] ^ tmp[bug];
+  }
 
-/*
- * At this point, "diff" is zero iff the correct and buggy algorithms produced
- * exactly the same result.  If so and if "sign" is non-zero, which indicates
- * that there was a non-benign sign extension, this means that we have a
- * collision between the correctly computed hash for this password and a set of
- * passwords that could be supplied to the buggy algorithm.  Our safety measure
- * is meant to protect from such many-buggy to one-correct collisions, by
- * deviating from the correct algorithm in such cases.  Let's check for this.
- */
-	diff |= diff >> 16; /* still zero iff exact match */
-	diff &= 0xffff; /* ditto */
-	diff += 0xffff; /* bit 16 set iff "diff" was non-zero (on non-match) */
-	sign <<= 9; /* move the non-benign sign extension flag to bit 16 */
-	sign &= ~diff & safety; /* action needed? */
+  /*
+   * At this point, "diff" is zero iff the correct and buggy algorithms produced
+   * exactly the same result.  If so and if "sign" is non-zero, which indicates
+   * that there was a non-benign sign extension, this means that we have a
+   * collision between the correctly computed hash for this password and a set
+   * of
+   * passwords that could be supplied to the buggy algorithm.  Our safety
+   * measure
+   * is meant to protect from such many-buggy to one-correct collisions, by
+   * deviating from the correct algorithm in such cases.  Let's check for this.
+   */
+  diff |= diff >> 16; /* still zero iff exact match */
+  diff &= 0xffff;     /* ditto */
+  diff += 0xffff;     /* bit 16 set iff "diff" was non-zero (on non-match) */
+  sign <<= 9;         /* move the non-benign sign extension flag to bit 16 */
+  sign &= ~diff & safety; /* action needed? */
 
-/*
- * If we have determined that we need to deviate from the correct algorithm,
- * flip bit 16 in initial expanded key.  (The choice of 16 is arbitrary, but
- * let's stick to it now.  It came out of the approach we used above, and it's
- * not any worse than any other choice we could make.)
- *
- * It is crucial that we don't do the same to the expanded key used in the main
- * Eksblowfish loop.  By doing it to only one of these two, we deviate from a
- * state that could be directly specified by a password to the buggy algorithm
- * (and to the fully correct one as well, but that's a side-effect).
- */
-	initial[0] ^= sign;
+  /*
+   * If we have determined that we need to deviate from the correct algorithm,
+   * flip bit 16 in initial expanded key.  (The choice of 16 is arbitrary, but
+   * let's stick to it now.  It came out of the approach we used above, and it's
+   * not any worse than any other choice we could make.)
+   *
+   * It is crucial that we don't do the same to the expanded key used in the
+   * main
+   * Eksblowfish loop.  By doing it to only one of these two, we deviate from a
+   * state that could be directly specified by a password to the buggy algorithm
+   * (and to the fully correct one as well, but that's a side-effect).
+   */
+  initial[0] ^= sign;
 }
 
-static char *BF_crypt(const char *key, const char *setting,
-	char *output, BF_word min)
-{
-	static const unsigned char flags_by_subtype[26] =
-		{2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-		0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 4, 0};
-	struct {
-		BF_ctx ctx;
-		BF_key expanded_key;
-		union {
-			BF_word salt[4];
-			BF_word output[6];
-		} binary;
-	} data;
-	BF_word count;
-	int i;
+static char* BF_crypt(const char* key,
+                      const char* setting,
+                      char* output,
+                      BF_word min) {
+  static const unsigned char flags_by_subtype[26] = {2, 0, 0, 0, 0, 0, 0, 0, 0,
+                                                     0, 0, 0, 0, 0, 0, 0, 0, 0,
+                                                     0, 0, 0, 0, 0, 1, 4, 0};
+  struct {
+    BF_ctx ctx;
+    BF_key expanded_key;
+    union {
+      BF_word salt[4];
+      BF_word output[6];
+    } binary;
+  } data;
+  BF_word count;
+  int i;
 
-	if (setting[0] != '$' ||
-	    setting[1] != '2' ||
-	    setting[2] - 'a' > 25U ||
-	    !flags_by_subtype[setting[2] - 'a'] ||
-	    setting[3] != '$' ||
-	    setting[4] - '0' > 1U ||
-	    setting[5] - '0' > 9U ||
-	    setting[6] != '$') {
-		return NULL;
-	}
+  if (setting[0] != '$' || setting[1] != '2' || setting[2] - 'a' > 25U ||
+      !flags_by_subtype[setting[2] - 'a'] || setting[3] != '$' ||
+      setting[4] - '0' > 1U || setting[5] - '0' > 9U || setting[6] != '$') {
+    return NULL;
+  }
 
-	count = (BF_word)1 << ((setting[4] - '0') * 10 + (setting[5] - '0'));
-	if (count < min || BF_decode(data.binary.salt, &setting[7], 16)) {
-		return NULL;
-	}
-	BF_swap(data.binary.salt, 4);
+  count = (BF_word)1 << ((setting[4] - '0') * 10 + (setting[5] - '0'));
+  if (count < min || BF_decode(data.binary.salt, &setting[7], 16)) {
+    return NULL;
+  }
+  BF_swap(data.binary.salt, 4);
 
-	BF_set_key(key, data.expanded_key, data.ctx.s.P,
-	    flags_by_subtype[setting[2] - 'a']);
+  BF_set_key(key, data.expanded_key, data.ctx.s.P,
+             flags_by_subtype[setting[2] - 'a']);
 
-	memcpy(data.ctx.s.S, BF_init_state.s.S, sizeof(data.ctx.s.S));
+  memcpy(data.ctx.s.S, BF_init_state.s.S, sizeof(data.ctx.s.S));
 
-	{
-		BF_word L = 0, R = 0;
-		BF_word *ptr = &data.ctx.PS[0];
-		do {
-			L = BF_encrypt(&data.ctx,
-			    L ^ data.binary.salt[0], R ^ data.binary.salt[1],
-			    ptr, ptr);
-			R = *(ptr + 1);
-			ptr += 2;
+  {
+    BF_word L = 0, R = 0;
+    BF_word* ptr = &data.ctx.PS[0];
+    do {
+      L = BF_encrypt(&data.ctx, L ^ data.binary.salt[0],
+                     R ^ data.binary.salt[1], ptr, ptr);
+      R = *(ptr + 1);
+      ptr += 2;
 
-			if (ptr >= &data.ctx.PS[BF_N + 2 + 4 * 0x100])
-				break;
+      if (ptr >= &data.ctx.PS[BF_N + 2 + 4 * 0x100])
+        break;
 
-			L = BF_encrypt(&data.ctx,
-			    L ^ data.binary.salt[2], R ^ data.binary.salt[3],
-			    ptr, ptr);
-			R = *(ptr + 1);
-			ptr += 2;
-		} while (1);
-	}
+      L = BF_encrypt(&data.ctx, L ^ data.binary.salt[2],
+                     R ^ data.binary.salt[3], ptr, ptr);
+      R = *(ptr + 1);
+      ptr += 2;
+    } while (1);
+  }
 
-	do {
-		int done;
+  do {
+    int done;
 
-		for (i = 0; i < BF_N + 2; i += 2) {
-			data.ctx.s.P[i] ^= data.expanded_key[i];
-			data.ctx.s.P[i + 1] ^= data.expanded_key[i + 1];
-		}
+    for (i = 0; i < BF_N + 2; i += 2) {
+      data.ctx.s.P[i] ^= data.expanded_key[i];
+      data.ctx.s.P[i + 1] ^= data.expanded_key[i + 1];
+    }
 
-		done = 0;
-		do {
-			BF_encrypt(&data.ctx, 0, 0,
-			    &data.ctx.PS[0],
-			    &data.ctx.PS[BF_N + 2 + 4 * 0x100]);
+    done = 0;
+    do {
+      BF_encrypt(&data.ctx, 0, 0, &data.ctx.PS[0],
+                 &data.ctx.PS[BF_N + 2 + 4 * 0x100]);
 
-			if (done)
-				break;
-			done = 1;
+      if (done)
+        break;
+      done = 1;
 
-			{
-				BF_word tmp1, tmp2, tmp3, tmp4;
+      {
+        BF_word tmp1, tmp2, tmp3, tmp4;
 
-				tmp1 = data.binary.salt[0];
-				tmp2 = data.binary.salt[1];
-				tmp3 = data.binary.salt[2];
-				tmp4 = data.binary.salt[3];
-				for (i = 0; i < BF_N; i += 4) {
-					data.ctx.s.P[i] ^= tmp1;
-					data.ctx.s.P[i + 1] ^= tmp2;
-					data.ctx.s.P[i + 2] ^= tmp3;
-					data.ctx.s.P[i + 3] ^= tmp4;
-				}
-				data.ctx.s.P[16] ^= tmp1;
-				data.ctx.s.P[17] ^= tmp2;
-			}
-		} while (1);
-	} while (--count);
+        tmp1 = data.binary.salt[0];
+        tmp2 = data.binary.salt[1];
+        tmp3 = data.binary.salt[2];
+        tmp4 = data.binary.salt[3];
+        for (i = 0; i < BF_N; i += 4) {
+          data.ctx.s.P[i] ^= tmp1;
+          data.ctx.s.P[i + 1] ^= tmp2;
+          data.ctx.s.P[i + 2] ^= tmp3;
+          data.ctx.s.P[i + 3] ^= tmp4;
+        }
+        data.ctx.s.P[16] ^= tmp1;
+        data.ctx.s.P[17] ^= tmp2;
+      }
+    } while (1);
+  } while (--count);
 
-	for (i = 0; i < 6; i += 2) {
-		BF_word L, LR[2];
+  for (i = 0; i < 6; i += 2) {
+    BF_word L, LR[2];
 
-		L = BF_magic_w[i];
-		LR[1] = BF_magic_w[i + 1];
+    L = BF_magic_w[i];
+    LR[1] = BF_magic_w[i + 1];
 
-		count = 64;
-		do {
-			L = BF_encrypt(&data.ctx, L, LR[1],
-			    &LR[0], &LR[0]);
-		} while (--count);
+    count = 64;
+    do {
+      L = BF_encrypt(&data.ctx, L, LR[1], &LR[0], &LR[0]);
+    } while (--count);
 
-		data.binary.output[i] = L;
-		data.binary.output[i + 1] = LR[1];
-	}
+    data.binary.output[i] = L;
+    data.binary.output[i + 1] = LR[1];
+  }
 
-	memcpy(output, setting, 7 + 22 - 1);
-	output[7 + 22 - 1] = BF_itoa64[
-		BF_atoi64[setting[7 + 22 - 1] - 0x20] & 0x30];
+  memcpy(output, setting, 7 + 22 - 1);
+  output[7 + 22 - 1] = BF_itoa64[BF_atoi64[setting[7 + 22 - 1] - 0x20] & 0x30];
 
-/* This has to be bug-compatible with the original implementation, so
- * only encode 23 of the 24 bytes. :-) */
-	BF_swap(data.binary.output, 6);
-	BF_encode(&output[7 + 22], data.binary.output, 23);
-	output[7 + 22 + 31] = '\0';
+  /* This has to be bug-compatible with the original implementation, so
+   * only encode 23 of the 24 bytes. :-) */
+  BF_swap(data.binary.output, 6);
+  BF_encode(&output[7 + 22], data.binary.output, 23);
+  output[7 + 22 + 31] = '\0';
 
-	return output;
+  return output;
 }
 
 /*
@@ -742,57 +648,58 @@
  * The performance cost of this quick self-test is around 0.6% at the "$2a$08"
  * setting.
  */
-char *__crypt_blowfish(const char *key, const char *setting, char *output)
-{
-	const char *test_key = "8b \xd0\xc1\xd2\xcf\xcc\xd8";
-	const char *test_setting = "$2a$00$abcdefghijklmnopqrstuu";
-	static const char test_hash[2][34] =
-		{"VUrPmXD6q/nVSSp7pNDhCR9071IfIRe\0\x55", /* $2x$ */
-		"i1D709vfamulimlGcq0qq3UvuUasvEa\0\x55"}; /* $2a$, $2y$ */
-	char *retval;
-	const char *p;
-	int ok;
-	struct {
-		char s[7 + 22 + 1];
-		char o[7 + 22 + 31 + 1 + 1 + 1];
-	} buf;
+char* __crypt_blowfish(const char* key, const char* setting, char* output) {
+  const char* test_key = "8b \xd0\xc1\xd2\xcf\xcc\xd8";
+  const char* test_setting = "$2a$00$abcdefghijklmnopqrstuu";
+  static const char test_hash[2][34] = {
+      "VUrPmXD6q/nVSSp7pNDhCR9071IfIRe\0\x55",  /* $2x$ */
+      "i1D709vfamulimlGcq0qq3UvuUasvEa\0\x55"}; /* $2a$, $2y$ */
+  char* retval;
+  const char* p;
+  int ok;
+  struct {
+    char s[7 + 22 + 1];
+    char o[7 + 22 + 31 + 1 + 1 + 1];
+  } buf;
 
-/* Hash the supplied password */
-	retval = BF_crypt(key, setting, output, 16);
+  /* Hash the supplied password */
+  retval = BF_crypt(key, setting, output, 16);
 
-/*
- * Do a quick self-test.  It is important that we make both calls to BF_crypt()
- * from the same scope such that they likely use the same stack locations,
- * which makes the second call overwrite the first call's sensitive data on the
- * stack and makes it more likely that any alignment related issues would be
- * detected by the self-test.
- */
-	memcpy(buf.s, test_setting, sizeof(buf.s));
-	if (retval)
-		buf.s[2] = setting[2];
-	memset(buf.o, 0x55, sizeof(buf.o));
-	buf.o[sizeof(buf.o) - 1] = 0;
-	p = BF_crypt(test_key, buf.s, buf.o, 1);
+  /*
+   * Do a quick self-test.  It is important that we make both calls to
+   * BF_crypt()
+   * from the same scope such that they likely use the same stack locations,
+   * which makes the second call overwrite the first call's sensitive data on
+   * the
+   * stack and makes it more likely that any alignment related issues would be
+   * detected by the self-test.
+   */
+  memcpy(buf.s, test_setting, sizeof(buf.s));
+  if (retval)
+    buf.s[2] = setting[2];
+  memset(buf.o, 0x55, sizeof(buf.o));
+  buf.o[sizeof(buf.o) - 1] = 0;
+  p = BF_crypt(test_key, buf.s, buf.o, 1);
 
-	ok = (p == buf.o &&
-	    !memcmp(p, buf.s, 7 + 22) &&
-	    !memcmp(p + (7 + 22),
-	    test_hash[buf.s[2] & 1],
-	    31 + 1 + 1 + 1));
+  ok = (p == buf.o && !memcmp(p, buf.s, 7 + 22) &&
+        !memcmp(p + (7 + 22), test_hash[buf.s[2] & 1], 31 + 1 + 1 + 1));
 
-	{
-		const char *k = "\xff\xa3" "34" "\xff\xff\xff\xa3" "345";
-		BF_key ae, ai, ye, yi;
-		BF_set_key(k, ae, ai, 2); /* $2a$ */
-		BF_set_key(k, ye, yi, 4); /* $2y$ */
-		ai[0] ^= 0x10000; /* undo the safety (for comparison) */
-		ok = ok && ai[0] == 0xdb9c59bc && ye[17] == 0x33343500 &&
-		    !memcmp(ae, ye, sizeof(ae)) &&
-		    !memcmp(ai, yi, sizeof(ai));
-	}
+  {
+    const char* k =
+        "\xff\xa3"
+        "34"
+        "\xff\xff\xff\xa3"
+        "345";
+    BF_key ae, ai, ye, yi;
+    BF_set_key(k, ae, ai, 2); /* $2a$ */
+    BF_set_key(k, ye, yi, 4); /* $2y$ */
+    ai[0] ^= 0x10000;         /* undo the safety (for comparison) */
+    ok = ok && ai[0] == 0xdb9c59bc && ye[17] == 0x33343500 &&
+         !memcmp(ae, ye, sizeof(ae)) && !memcmp(ai, yi, sizeof(ai));
+  }
 
-	if (ok && retval)
-		return retval;
+  if (ok && retval)
+    return retval;
 
-	return "*";
+  return "*";
 }
diff --git a/fusl/src/crypt/crypt_des.c b/fusl/src/crypt/crypt_des.c
index d5766a7..a22a83b 100644
--- a/fusl/src/crypt/crypt_des.c
+++ b/fusl/src/crypt/crypt_des.c
@@ -46,7 +46,8 @@
  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  * SUCH DAMAGE.
  *
- *	$Owl: Owl/packages/glibc/crypt_freesec.c,v 1.6 2010/02/20 14:45:06 solar Exp $
+ *	$Owl: Owl/packages/glibc/crypt_freesec.c,v 1.6 2010/02/20 14:45:06 solar
+ *Exp $
  *	$Id: crypt.c,v 1.15 1994/09/13 04:58:49 davidb Exp $
  *
  * This is an original implementation of the DES and the crypt(3) interfaces
@@ -57,587 +58,551 @@
 #include <string.h>
 
 struct expanded_key {
-	uint32_t l[16], r[16];
+  uint32_t l[16], r[16];
 };
 
 #define _PASSWORD_EFMT1 '_'
 
-static const unsigned char key_shifts[16] = {
-	1, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 1
-};
+static const unsigned char key_shifts[16] = {1, 1, 2, 2, 2, 2, 2, 2,
+                                             1, 2, 2, 2, 2, 2, 2, 1};
 
 static const uint32_t psbox[8][64] = {
-	{
-		0x00808200,0x00000000,0x00008000,0x00808202,
-		0x00808002,0x00008202,0x00000002,0x00008000,
-		0x00000200,0x00808200,0x00808202,0x00000200,
-		0x00800202,0x00808002,0x00800000,0x00000002,
-		0x00000202,0x00800200,0x00800200,0x00008200,
-		0x00008200,0x00808000,0x00808000,0x00800202,
-		0x00008002,0x00800002,0x00800002,0x00008002,
-		0x00000000,0x00000202,0x00008202,0x00800000,
-		0x00008000,0x00808202,0x00000002,0x00808000,
-		0x00808200,0x00800000,0x00800000,0x00000200,
-		0x00808002,0x00008000,0x00008200,0x00800002,
-		0x00000200,0x00000002,0x00800202,0x00008202,
-		0x00808202,0x00008002,0x00808000,0x00800202,
-		0x00800002,0x00000202,0x00008202,0x00808200,
-		0x00000202,0x00800200,0x00800200,0x00000000,
-		0x00008002,0x00008200,0x00000000,0x00808002,
-	},{
-		0x40084010,0x40004000,0x00004000,0x00084010,
-		0x00080000,0x00000010,0x40080010,0x40004010,
-		0x40000010,0x40084010,0x40084000,0x40000000,
-		0x40004000,0x00080000,0x00000010,0x40080010,
-		0x00084000,0x00080010,0x40004010,0x00000000,
-		0x40000000,0x00004000,0x00084010,0x40080000,
-		0x00080010,0x40000010,0x00000000,0x00084000,
-		0x00004010,0x40084000,0x40080000,0x00004010,
-		0x00000000,0x00084010,0x40080010,0x00080000,
-		0x40004010,0x40080000,0x40084000,0x00004000,
-		0x40080000,0x40004000,0x00000010,0x40084010,
-		0x00084010,0x00000010,0x00004000,0x40000000,
-		0x00004010,0x40084000,0x00080000,0x40000010,
-		0x00080010,0x40004010,0x40000010,0x00080010,
-		0x00084000,0x00000000,0x40004000,0x00004010,
-		0x40000000,0x40080010,0x40084010,0x00084000,
-	},{
-		0x00000104,0x04010100,0x00000000,0x04010004,
-		0x04000100,0x00000000,0x00010104,0x04000100,
-		0x00010004,0x04000004,0x04000004,0x00010000,
-		0x04010104,0x00010004,0x04010000,0x00000104,
-		0x04000000,0x00000004,0x04010100,0x00000100,
-		0x00010100,0x04010000,0x04010004,0x00010104,
-		0x04000104,0x00010100,0x00010000,0x04000104,
-		0x00000004,0x04010104,0x00000100,0x04000000,
-		0x04010100,0x04000000,0x00010004,0x00000104,
-		0x00010000,0x04010100,0x04000100,0x00000000,
-		0x00000100,0x00010004,0x04010104,0x04000100,
-		0x04000004,0x00000100,0x00000000,0x04010004,
-		0x04000104,0x00010000,0x04000000,0x04010104,
-		0x00000004,0x00010104,0x00010100,0x04000004,
-		0x04010000,0x04000104,0x00000104,0x04010000,
-		0x00010104,0x00000004,0x04010004,0x00010100,
-	},{
-		0x80401000,0x80001040,0x80001040,0x00000040,
-		0x00401040,0x80400040,0x80400000,0x80001000,
-		0x00000000,0x00401000,0x00401000,0x80401040,
-		0x80000040,0x00000000,0x00400040,0x80400000,
-		0x80000000,0x00001000,0x00400000,0x80401000,
-		0x00000040,0x00400000,0x80001000,0x00001040,
-		0x80400040,0x80000000,0x00001040,0x00400040,
-		0x00001000,0x00401040,0x80401040,0x80000040,
-		0x00400040,0x80400000,0x00401000,0x80401040,
-		0x80000040,0x00000000,0x00000000,0x00401000,
-		0x00001040,0x00400040,0x80400040,0x80000000,
-		0x80401000,0x80001040,0x80001040,0x00000040,
-		0x80401040,0x80000040,0x80000000,0x00001000,
-		0x80400000,0x80001000,0x00401040,0x80400040,
-		0x80001000,0x00001040,0x00400000,0x80401000,
-		0x00000040,0x00400000,0x00001000,0x00401040,
-	},{
-		0x00000080,0x01040080,0x01040000,0x21000080,
-		0x00040000,0x00000080,0x20000000,0x01040000,
-		0x20040080,0x00040000,0x01000080,0x20040080,
-		0x21000080,0x21040000,0x00040080,0x20000000,
-		0x01000000,0x20040000,0x20040000,0x00000000,
-		0x20000080,0x21040080,0x21040080,0x01000080,
-		0x21040000,0x20000080,0x00000000,0x21000000,
-		0x01040080,0x01000000,0x21000000,0x00040080,
-		0x00040000,0x21000080,0x00000080,0x01000000,
-		0x20000000,0x01040000,0x21000080,0x20040080,
-		0x01000080,0x20000000,0x21040000,0x01040080,
-		0x20040080,0x00000080,0x01000000,0x21040000,
-		0x21040080,0x00040080,0x21000000,0x21040080,
-		0x01040000,0x00000000,0x20040000,0x21000000,
-		0x00040080,0x01000080,0x20000080,0x00040000,
-		0x00000000,0x20040000,0x01040080,0x20000080,
-	},{
-		0x10000008,0x10200000,0x00002000,0x10202008,
-		0x10200000,0x00000008,0x10202008,0x00200000,
-		0x10002000,0x00202008,0x00200000,0x10000008,
-		0x00200008,0x10002000,0x10000000,0x00002008,
-		0x00000000,0x00200008,0x10002008,0x00002000,
-		0x00202000,0x10002008,0x00000008,0x10200008,
-		0x10200008,0x00000000,0x00202008,0x10202000,
-		0x00002008,0x00202000,0x10202000,0x10000000,
-		0x10002000,0x00000008,0x10200008,0x00202000,
-		0x10202008,0x00200000,0x00002008,0x10000008,
-		0x00200000,0x10002000,0x10000000,0x00002008,
-		0x10000008,0x10202008,0x00202000,0x10200000,
-		0x00202008,0x10202000,0x00000000,0x10200008,
-		0x00000008,0x00002000,0x10200000,0x00202008,
-		0x00002000,0x00200008,0x10002008,0x00000000,
-		0x10202000,0x10000000,0x00200008,0x10002008,
-	},{
-		0x00100000,0x02100001,0x02000401,0x00000000,
-		0x00000400,0x02000401,0x00100401,0x02100400,
-		0x02100401,0x00100000,0x00000000,0x02000001,
-		0x00000001,0x02000000,0x02100001,0x00000401,
-		0x02000400,0x00100401,0x00100001,0x02000400,
-		0x02000001,0x02100000,0x02100400,0x00100001,
-		0x02100000,0x00000400,0x00000401,0x02100401,
-		0x00100400,0x00000001,0x02000000,0x00100400,
-		0x02000000,0x00100400,0x00100000,0x02000401,
-		0x02000401,0x02100001,0x02100001,0x00000001,
-		0x00100001,0x02000000,0x02000400,0x00100000,
-		0x02100400,0x00000401,0x00100401,0x02100400,
-		0x00000401,0x02000001,0x02100401,0x02100000,
-		0x00100400,0x00000000,0x00000001,0x02100401,
-		0x00000000,0x00100401,0x02100000,0x00000400,
-		0x02000001,0x02000400,0x00000400,0x00100001,
-	},{
-		0x08000820,0x00000800,0x00020000,0x08020820,
-		0x08000000,0x08000820,0x00000020,0x08000000,
-		0x00020020,0x08020000,0x08020820,0x00020800,
-		0x08020800,0x00020820,0x00000800,0x00000020,
-		0x08020000,0x08000020,0x08000800,0x00000820,
-		0x00020800,0x00020020,0x08020020,0x08020800,
-		0x00000820,0x00000000,0x00000000,0x08020020,
-		0x08000020,0x08000800,0x00020820,0x00020000,
-		0x00020820,0x00020000,0x08020800,0x00000800,
-		0x00000020,0x08020020,0x00000800,0x00020820,
-		0x08000800,0x00000020,0x08000020,0x08020000,
-		0x08020020,0x08000000,0x00020000,0x08000820,
-		0x00000000,0x08020820,0x00020020,0x08000020,
-		0x08020000,0x08000800,0x08000820,0x00000000,
-		0x08020820,0x00020800,0x00020800,0x00000820,
-		0x00000820,0x00020020,0x08000000,0x08020800,
-	},
+    {
+        0x00808200, 0x00000000, 0x00008000, 0x00808202, 0x00808002, 0x00008202,
+        0x00000002, 0x00008000, 0x00000200, 0x00808200, 0x00808202, 0x00000200,
+        0x00800202, 0x00808002, 0x00800000, 0x00000002, 0x00000202, 0x00800200,
+        0x00800200, 0x00008200, 0x00008200, 0x00808000, 0x00808000, 0x00800202,
+        0x00008002, 0x00800002, 0x00800002, 0x00008002, 0x00000000, 0x00000202,
+        0x00008202, 0x00800000, 0x00008000, 0x00808202, 0x00000002, 0x00808000,
+        0x00808200, 0x00800000, 0x00800000, 0x00000200, 0x00808002, 0x00008000,
+        0x00008200, 0x00800002, 0x00000200, 0x00000002, 0x00800202, 0x00008202,
+        0x00808202, 0x00008002, 0x00808000, 0x00800202, 0x00800002, 0x00000202,
+        0x00008202, 0x00808200, 0x00000202, 0x00800200, 0x00800200, 0x00000000,
+        0x00008002, 0x00008200, 0x00000000, 0x00808002,
+    },
+    {
+        0x40084010, 0x40004000, 0x00004000, 0x00084010, 0x00080000, 0x00000010,
+        0x40080010, 0x40004010, 0x40000010, 0x40084010, 0x40084000, 0x40000000,
+        0x40004000, 0x00080000, 0x00000010, 0x40080010, 0x00084000, 0x00080010,
+        0x40004010, 0x00000000, 0x40000000, 0x00004000, 0x00084010, 0x40080000,
+        0x00080010, 0x40000010, 0x00000000, 0x00084000, 0x00004010, 0x40084000,
+        0x40080000, 0x00004010, 0x00000000, 0x00084010, 0x40080010, 0x00080000,
+        0x40004010, 0x40080000, 0x40084000, 0x00004000, 0x40080000, 0x40004000,
+        0x00000010, 0x40084010, 0x00084010, 0x00000010, 0x00004000, 0x40000000,
+        0x00004010, 0x40084000, 0x00080000, 0x40000010, 0x00080010, 0x40004010,
+        0x40000010, 0x00080010, 0x00084000, 0x00000000, 0x40004000, 0x00004010,
+        0x40000000, 0x40080010, 0x40084010, 0x00084000,
+    },
+    {
+        0x00000104, 0x04010100, 0x00000000, 0x04010004, 0x04000100, 0x00000000,
+        0x00010104, 0x04000100, 0x00010004, 0x04000004, 0x04000004, 0x00010000,
+        0x04010104, 0x00010004, 0x04010000, 0x00000104, 0x04000000, 0x00000004,
+        0x04010100, 0x00000100, 0x00010100, 0x04010000, 0x04010004, 0x00010104,
+        0x04000104, 0x00010100, 0x00010000, 0x04000104, 0x00000004, 0x04010104,
+        0x00000100, 0x04000000, 0x04010100, 0x04000000, 0x00010004, 0x00000104,
+        0x00010000, 0x04010100, 0x04000100, 0x00000000, 0x00000100, 0x00010004,
+        0x04010104, 0x04000100, 0x04000004, 0x00000100, 0x00000000, 0x04010004,
+        0x04000104, 0x00010000, 0x04000000, 0x04010104, 0x00000004, 0x00010104,
+        0x00010100, 0x04000004, 0x04010000, 0x04000104, 0x00000104, 0x04010000,
+        0x00010104, 0x00000004, 0x04010004, 0x00010100,
+    },
+    {
+        0x80401000, 0x80001040, 0x80001040, 0x00000040, 0x00401040, 0x80400040,
+        0x80400000, 0x80001000, 0x00000000, 0x00401000, 0x00401000, 0x80401040,
+        0x80000040, 0x00000000, 0x00400040, 0x80400000, 0x80000000, 0x00001000,
+        0x00400000, 0x80401000, 0x00000040, 0x00400000, 0x80001000, 0x00001040,
+        0x80400040, 0x80000000, 0x00001040, 0x00400040, 0x00001000, 0x00401040,
+        0x80401040, 0x80000040, 0x00400040, 0x80400000, 0x00401000, 0x80401040,
+        0x80000040, 0x00000000, 0x00000000, 0x00401000, 0x00001040, 0x00400040,
+        0x80400040, 0x80000000, 0x80401000, 0x80001040, 0x80001040, 0x00000040,
+        0x80401040, 0x80000040, 0x80000000, 0x00001000, 0x80400000, 0x80001000,
+        0x00401040, 0x80400040, 0x80001000, 0x00001040, 0x00400000, 0x80401000,
+        0x00000040, 0x00400000, 0x00001000, 0x00401040,
+    },
+    {
+        0x00000080, 0x01040080, 0x01040000, 0x21000080, 0x00040000, 0x00000080,
+        0x20000000, 0x01040000, 0x20040080, 0x00040000, 0x01000080, 0x20040080,
+        0x21000080, 0x21040000, 0x00040080, 0x20000000, 0x01000000, 0x20040000,
+        0x20040000, 0x00000000, 0x20000080, 0x21040080, 0x21040080, 0x01000080,
+        0x21040000, 0x20000080, 0x00000000, 0x21000000, 0x01040080, 0x01000000,
+        0x21000000, 0x00040080, 0x00040000, 0x21000080, 0x00000080, 0x01000000,
+        0x20000000, 0x01040000, 0x21000080, 0x20040080, 0x01000080, 0x20000000,
+        0x21040000, 0x01040080, 0x20040080, 0x00000080, 0x01000000, 0x21040000,
+        0x21040080, 0x00040080, 0x21000000, 0x21040080, 0x01040000, 0x00000000,
+        0x20040000, 0x21000000, 0x00040080, 0x01000080, 0x20000080, 0x00040000,
+        0x00000000, 0x20040000, 0x01040080, 0x20000080,
+    },
+    {
+        0x10000008, 0x10200000, 0x00002000, 0x10202008, 0x10200000, 0x00000008,
+        0x10202008, 0x00200000, 0x10002000, 0x00202008, 0x00200000, 0x10000008,
+        0x00200008, 0x10002000, 0x10000000, 0x00002008, 0x00000000, 0x00200008,
+        0x10002008, 0x00002000, 0x00202000, 0x10002008, 0x00000008, 0x10200008,
+        0x10200008, 0x00000000, 0x00202008, 0x10202000, 0x00002008, 0x00202000,
+        0x10202000, 0x10000000, 0x10002000, 0x00000008, 0x10200008, 0x00202000,
+        0x10202008, 0x00200000, 0x00002008, 0x10000008, 0x00200000, 0x10002000,
+        0x10000000, 0x00002008, 0x10000008, 0x10202008, 0x00202000, 0x10200000,
+        0x00202008, 0x10202000, 0x00000000, 0x10200008, 0x00000008, 0x00002000,
+        0x10200000, 0x00202008, 0x00002000, 0x00200008, 0x10002008, 0x00000000,
+        0x10202000, 0x10000000, 0x00200008, 0x10002008,
+    },
+    {
+        0x00100000, 0x02100001, 0x02000401, 0x00000000, 0x00000400, 0x02000401,
+        0x00100401, 0x02100400, 0x02100401, 0x00100000, 0x00000000, 0x02000001,
+        0x00000001, 0x02000000, 0x02100001, 0x00000401, 0x02000400, 0x00100401,
+        0x00100001, 0x02000400, 0x02000001, 0x02100000, 0x02100400, 0x00100001,
+        0x02100000, 0x00000400, 0x00000401, 0x02100401, 0x00100400, 0x00000001,
+        0x02000000, 0x00100400, 0x02000000, 0x00100400, 0x00100000, 0x02000401,
+        0x02000401, 0x02100001, 0x02100001, 0x00000001, 0x00100001, 0x02000000,
+        0x02000400, 0x00100000, 0x02100400, 0x00000401, 0x00100401, 0x02100400,
+        0x00000401, 0x02000001, 0x02100401, 0x02100000, 0x00100400, 0x00000000,
+        0x00000001, 0x02100401, 0x00000000, 0x00100401, 0x02100000, 0x00000400,
+        0x02000001, 0x02000400, 0x00000400, 0x00100001,
+    },
+    {
+        0x08000820, 0x00000800, 0x00020000, 0x08020820, 0x08000000, 0x08000820,
+        0x00000020, 0x08000000, 0x00020020, 0x08020000, 0x08020820, 0x00020800,
+        0x08020800, 0x00020820, 0x00000800, 0x00000020, 0x08020000, 0x08000020,
+        0x08000800, 0x00000820, 0x00020800, 0x00020020, 0x08020020, 0x08020800,
+        0x00000820, 0x00000000, 0x00000000, 0x08020020, 0x08000020, 0x08000800,
+        0x00020820, 0x00020000, 0x00020820, 0x00020000, 0x08020800, 0x00000800,
+        0x00000020, 0x08020020, 0x00000800, 0x00020820, 0x08000800, 0x00000020,
+        0x08000020, 0x08020000, 0x08020020, 0x08000000, 0x00020000, 0x08000820,
+        0x00000000, 0x08020820, 0x00020020, 0x08000020, 0x08020000, 0x08000800,
+        0x08000820, 0x00000000, 0x08020820, 0x00020800, 0x00020800, 0x00000820,
+        0x00000820, 0x00020020, 0x08000000, 0x08020800,
+    },
 };
 static const uint32_t ip_maskl[16][16] = {
-	{
-		0x00000000,0x00010000,0x00000000,0x00010000,
-		0x01000000,0x01010000,0x01000000,0x01010000,
-		0x00000000,0x00010000,0x00000000,0x00010000,
-		0x01000000,0x01010000,0x01000000,0x01010000,
-	},{
-		0x00000000,0x00000001,0x00000000,0x00000001,
-		0x00000100,0x00000101,0x00000100,0x00000101,
-		0x00000000,0x00000001,0x00000000,0x00000001,
-		0x00000100,0x00000101,0x00000100,0x00000101,
-	},{
-		0x00000000,0x00020000,0x00000000,0x00020000,
-		0x02000000,0x02020000,0x02000000,0x02020000,
-		0x00000000,0x00020000,0x00000000,0x00020000,
-		0x02000000,0x02020000,0x02000000,0x02020000,
-	},{
-		0x00000000,0x00000002,0x00000000,0x00000002,
-		0x00000200,0x00000202,0x00000200,0x00000202,
-		0x00000000,0x00000002,0x00000000,0x00000002,
-		0x00000200,0x00000202,0x00000200,0x00000202,
-	},{
-		0x00000000,0x00040000,0x00000000,0x00040000,
-		0x04000000,0x04040000,0x04000000,0x04040000,
-		0x00000000,0x00040000,0x00000000,0x00040000,
-		0x04000000,0x04040000,0x04000000,0x04040000,
-	},{
-		0x00000000,0x00000004,0x00000000,0x00000004,
-		0x00000400,0x00000404,0x00000400,0x00000404,
-		0x00000000,0x00000004,0x00000000,0x00000004,
-		0x00000400,0x00000404,0x00000400,0x00000404,
-	},{
-		0x00000000,0x00080000,0x00000000,0x00080000,
-		0x08000000,0x08080000,0x08000000,0x08080000,
-		0x00000000,0x00080000,0x00000000,0x00080000,
-		0x08000000,0x08080000,0x08000000,0x08080000,
-	},{
-		0x00000000,0x00000008,0x00000000,0x00000008,
-		0x00000800,0x00000808,0x00000800,0x00000808,
-		0x00000000,0x00000008,0x00000000,0x00000008,
-		0x00000800,0x00000808,0x00000800,0x00000808,
-	},{
-		0x00000000,0x00100000,0x00000000,0x00100000,
-		0x10000000,0x10100000,0x10000000,0x10100000,
-		0x00000000,0x00100000,0x00000000,0x00100000,
-		0x10000000,0x10100000,0x10000000,0x10100000,
-	},{
-		0x00000000,0x00000010,0x00000000,0x00000010,
-		0x00001000,0x00001010,0x00001000,0x00001010,
-		0x00000000,0x00000010,0x00000000,0x00000010,
-		0x00001000,0x00001010,0x00001000,0x00001010,
-	},{
-		0x00000000,0x00200000,0x00000000,0x00200000,
-		0x20000000,0x20200000,0x20000000,0x20200000,
-		0x00000000,0x00200000,0x00000000,0x00200000,
-		0x20000000,0x20200000,0x20000000,0x20200000,
-	},{
-		0x00000000,0x00000020,0x00000000,0x00000020,
-		0x00002000,0x00002020,0x00002000,0x00002020,
-		0x00000000,0x00000020,0x00000000,0x00000020,
-		0x00002000,0x00002020,0x00002000,0x00002020,
-	},{
-		0x00000000,0x00400000,0x00000000,0x00400000,
-		0x40000000,0x40400000,0x40000000,0x40400000,
-		0x00000000,0x00400000,0x00000000,0x00400000,
-		0x40000000,0x40400000,0x40000000,0x40400000,
-	},{
-		0x00000000,0x00000040,0x00000000,0x00000040,
-		0x00004000,0x00004040,0x00004000,0x00004040,
-		0x00000000,0x00000040,0x00000000,0x00000040,
-		0x00004000,0x00004040,0x00004000,0x00004040,
-	},{
-		0x00000000,0x00800000,0x00000000,0x00800000,
-		0x80000000,0x80800000,0x80000000,0x80800000,
-		0x00000000,0x00800000,0x00000000,0x00800000,
-		0x80000000,0x80800000,0x80000000,0x80800000,
-	},{
-		0x00000000,0x00000080,0x00000000,0x00000080,
-		0x00008000,0x00008080,0x00008000,0x00008080,
-		0x00000000,0x00000080,0x00000000,0x00000080,
-		0x00008000,0x00008080,0x00008000,0x00008080,
-	},
+    {
+        0x00000000, 0x00010000, 0x00000000, 0x00010000, 0x01000000, 0x01010000,
+        0x01000000, 0x01010000, 0x00000000, 0x00010000, 0x00000000, 0x00010000,
+        0x01000000, 0x01010000, 0x01000000, 0x01010000,
+    },
+    {
+        0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000100, 0x00000101,
+        0x00000100, 0x00000101, 0x00000000, 0x00000001, 0x00000000, 0x00000001,
+        0x00000100, 0x00000101, 0x00000100, 0x00000101,
+    },
+    {
+        0x00000000, 0x00020000, 0x00000000, 0x00020000, 0x02000000, 0x02020000,
+        0x02000000, 0x02020000, 0x00000000, 0x00020000, 0x00000000, 0x00020000,
+        0x02000000, 0x02020000, 0x02000000, 0x02020000,
+    },
+    {
+        0x00000000, 0x00000002, 0x00000000, 0x00000002, 0x00000200, 0x00000202,
+        0x00000200, 0x00000202, 0x00000000, 0x00000002, 0x00000000, 0x00000002,
+        0x00000200, 0x00000202, 0x00000200, 0x00000202,
+    },
+    {
+        0x00000000, 0x00040000, 0x00000000, 0x00040000, 0x04000000, 0x04040000,
+        0x04000000, 0x04040000, 0x00000000, 0x00040000, 0x00000000, 0x00040000,
+        0x04000000, 0x04040000, 0x04000000, 0x04040000,
+    },
+    {
+        0x00000000, 0x00000004, 0x00000000, 0x00000004, 0x00000400, 0x00000404,
+        0x00000400, 0x00000404, 0x00000000, 0x00000004, 0x00000000, 0x00000004,
+        0x00000400, 0x00000404, 0x00000400, 0x00000404,
+    },
+    {
+        0x00000000, 0x00080000, 0x00000000, 0x00080000, 0x08000000, 0x08080000,
+        0x08000000, 0x08080000, 0x00000000, 0x00080000, 0x00000000, 0x00080000,
+        0x08000000, 0x08080000, 0x08000000, 0x08080000,
+    },
+    {
+        0x00000000, 0x00000008, 0x00000000, 0x00000008, 0x00000800, 0x00000808,
+        0x00000800, 0x00000808, 0x00000000, 0x00000008, 0x00000000, 0x00000008,
+        0x00000800, 0x00000808, 0x00000800, 0x00000808,
+    },
+    {
+        0x00000000, 0x00100000, 0x00000000, 0x00100000, 0x10000000, 0x10100000,
+        0x10000000, 0x10100000, 0x00000000, 0x00100000, 0x00000000, 0x00100000,
+        0x10000000, 0x10100000, 0x10000000, 0x10100000,
+    },
+    {
+        0x00000000, 0x00000010, 0x00000000, 0x00000010, 0x00001000, 0x00001010,
+        0x00001000, 0x00001010, 0x00000000, 0x00000010, 0x00000000, 0x00000010,
+        0x00001000, 0x00001010, 0x00001000, 0x00001010,
+    },
+    {
+        0x00000000, 0x00200000, 0x00000000, 0x00200000, 0x20000000, 0x20200000,
+        0x20000000, 0x20200000, 0x00000000, 0x00200000, 0x00000000, 0x00200000,
+        0x20000000, 0x20200000, 0x20000000, 0x20200000,
+    },
+    {
+        0x00000000, 0x00000020, 0x00000000, 0x00000020, 0x00002000, 0x00002020,
+        0x00002000, 0x00002020, 0x00000000, 0x00000020, 0x00000000, 0x00000020,
+        0x00002000, 0x00002020, 0x00002000, 0x00002020,
+    },
+    {
+        0x00000000, 0x00400000, 0x00000000, 0x00400000, 0x40000000, 0x40400000,
+        0x40000000, 0x40400000, 0x00000000, 0x00400000, 0x00000000, 0x00400000,
+        0x40000000, 0x40400000, 0x40000000, 0x40400000,
+    },
+    {
+        0x00000000, 0x00000040, 0x00000000, 0x00000040, 0x00004000, 0x00004040,
+        0x00004000, 0x00004040, 0x00000000, 0x00000040, 0x00000000, 0x00000040,
+        0x00004000, 0x00004040, 0x00004000, 0x00004040,
+    },
+    {
+        0x00000000, 0x00800000, 0x00000000, 0x00800000, 0x80000000, 0x80800000,
+        0x80000000, 0x80800000, 0x00000000, 0x00800000, 0x00000000, 0x00800000,
+        0x80000000, 0x80800000, 0x80000000, 0x80800000,
+    },
+    {
+        0x00000000, 0x00000080, 0x00000000, 0x00000080, 0x00008000, 0x00008080,
+        0x00008000, 0x00008080, 0x00000000, 0x00000080, 0x00000000, 0x00000080,
+        0x00008000, 0x00008080, 0x00008000, 0x00008080,
+    },
 };
 static const uint32_t ip_maskr[16][16] = {
-	{
-		0x00000000,0x00000000,0x00010000,0x00010000,
-		0x00000000,0x00000000,0x00010000,0x00010000,
-		0x01000000,0x01000000,0x01010000,0x01010000,
-		0x01000000,0x01000000,0x01010000,0x01010000,
-	},{
-		0x00000000,0x00000000,0x00000001,0x00000001,
-		0x00000000,0x00000000,0x00000001,0x00000001,
-		0x00000100,0x00000100,0x00000101,0x00000101,
-		0x00000100,0x00000100,0x00000101,0x00000101,
-	},{
-		0x00000000,0x00000000,0x00020000,0x00020000,
-		0x00000000,0x00000000,0x00020000,0x00020000,
-		0x02000000,0x02000000,0x02020000,0x02020000,
-		0x02000000,0x02000000,0x02020000,0x02020000,
-	},{
-		0x00000000,0x00000000,0x00000002,0x00000002,
-		0x00000000,0x00000000,0x00000002,0x00000002,
-		0x00000200,0x00000200,0x00000202,0x00000202,
-		0x00000200,0x00000200,0x00000202,0x00000202,
-	},{
-		0x00000000,0x00000000,0x00040000,0x00040000,
-		0x00000000,0x00000000,0x00040000,0x00040000,
-		0x04000000,0x04000000,0x04040000,0x04040000,
-		0x04000000,0x04000000,0x04040000,0x04040000,
-	},{
-		0x00000000,0x00000000,0x00000004,0x00000004,
-		0x00000000,0x00000000,0x00000004,0x00000004,
-		0x00000400,0x00000400,0x00000404,0x00000404,
-		0x00000400,0x00000400,0x00000404,0x00000404,
-	},{
-		0x00000000,0x00000000,0x00080000,0x00080000,
-		0x00000000,0x00000000,0x00080000,0x00080000,
-		0x08000000,0x08000000,0x08080000,0x08080000,
-		0x08000000,0x08000000,0x08080000,0x08080000,
-	},{
-		0x00000000,0x00000000,0x00000008,0x00000008,
-		0x00000000,0x00000000,0x00000008,0x00000008,
-		0x00000800,0x00000800,0x00000808,0x00000808,
-		0x00000800,0x00000800,0x00000808,0x00000808,
-	},{
-		0x00000000,0x00000000,0x00100000,0x00100000,
-		0x00000000,0x00000000,0x00100000,0x00100000,
-		0x10000000,0x10000000,0x10100000,0x10100000,
-		0x10000000,0x10000000,0x10100000,0x10100000,
-	},{
-		0x00000000,0x00000000,0x00000010,0x00000010,
-		0x00000000,0x00000000,0x00000010,0x00000010,
-		0x00001000,0x00001000,0x00001010,0x00001010,
-		0x00001000,0x00001000,0x00001010,0x00001010,
-	},{
-		0x00000000,0x00000000,0x00200000,0x00200000,
-		0x00000000,0x00000000,0x00200000,0x00200000,
-		0x20000000,0x20000000,0x20200000,0x20200000,
-		0x20000000,0x20000000,0x20200000,0x20200000,
-	},{
-		0x00000000,0x00000000,0x00000020,0x00000020,
-		0x00000000,0x00000000,0x00000020,0x00000020,
-		0x00002000,0x00002000,0x00002020,0x00002020,
-		0x00002000,0x00002000,0x00002020,0x00002020,
-	},{
-		0x00000000,0x00000000,0x00400000,0x00400000,
-		0x00000000,0x00000000,0x00400000,0x00400000,
-		0x40000000,0x40000000,0x40400000,0x40400000,
-		0x40000000,0x40000000,0x40400000,0x40400000,
-	},{
-		0x00000000,0x00000000,0x00000040,0x00000040,
-		0x00000000,0x00000000,0x00000040,0x00000040,
-		0x00004000,0x00004000,0x00004040,0x00004040,
-		0x00004000,0x00004000,0x00004040,0x00004040,
-	},{
-		0x00000000,0x00000000,0x00800000,0x00800000,
-		0x00000000,0x00000000,0x00800000,0x00800000,
-		0x80000000,0x80000000,0x80800000,0x80800000,
-		0x80000000,0x80000000,0x80800000,0x80800000,
-	},{
-		0x00000000,0x00000000,0x00000080,0x00000080,
-		0x00000000,0x00000000,0x00000080,0x00000080,
-		0x00008000,0x00008000,0x00008080,0x00008080,
-		0x00008000,0x00008000,0x00008080,0x00008080,
-	},
+    {
+        0x00000000, 0x00000000, 0x00010000, 0x00010000, 0x00000000, 0x00000000,
+        0x00010000, 0x00010000, 0x01000000, 0x01000000, 0x01010000, 0x01010000,
+        0x01000000, 0x01000000, 0x01010000, 0x01010000,
+    },
+    {
+        0x00000000, 0x00000000, 0x00000001, 0x00000001, 0x00000000, 0x00000000,
+        0x00000001, 0x00000001, 0x00000100, 0x00000100, 0x00000101, 0x00000101,
+        0x00000100, 0x00000100, 0x00000101, 0x00000101,
+    },
+    {
+        0x00000000, 0x00000000, 0x00020000, 0x00020000, 0x00000000, 0x00000000,
+        0x00020000, 0x00020000, 0x02000000, 0x02000000, 0x02020000, 0x02020000,
+        0x02000000, 0x02000000, 0x02020000, 0x02020000,
+    },
+    {
+        0x00000000, 0x00000000, 0x00000002, 0x00000002, 0x00000000, 0x00000000,
+        0x00000002, 0x00000002, 0x00000200, 0x00000200, 0x00000202, 0x00000202,
+        0x00000200, 0x00000200, 0x00000202, 0x00000202,
+    },
+    {
+        0x00000000, 0x00000000, 0x00040000, 0x00040000, 0x00000000, 0x00000000,
+        0x00040000, 0x00040000, 0x04000000, 0x04000000, 0x04040000, 0x04040000,
+        0x04000000, 0x04000000, 0x04040000, 0x04040000,
+    },
+    {
+        0x00000000, 0x00000000, 0x00000004, 0x00000004, 0x00000000, 0x00000000,
+        0x00000004, 0x00000004, 0x00000400, 0x00000400, 0x00000404, 0x00000404,
+        0x00000400, 0x00000400, 0x00000404, 0x00000404,
+    },
+    {
+        0x00000000, 0x00000000, 0x00080000, 0x00080000, 0x00000000, 0x00000000,
+        0x00080000, 0x00080000, 0x08000000, 0x08000000, 0x08080000, 0x08080000,
+        0x08000000, 0x08000000, 0x08080000, 0x08080000,
+    },
+    {
+        0x00000000, 0x00000000, 0x00000008, 0x00000008, 0x00000000, 0x00000000,
+        0x00000008, 0x00000008, 0x00000800, 0x00000800, 0x00000808, 0x00000808,
+        0x00000800, 0x00000800, 0x00000808, 0x00000808,
+    },
+    {
+        0x00000000, 0x00000000, 0x00100000, 0x00100000, 0x00000000, 0x00000000,
+        0x00100000, 0x00100000, 0x10000000, 0x10000000, 0x10100000, 0x10100000,
+        0x10000000, 0x10000000, 0x10100000, 0x10100000,
+    },
+    {
+        0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00000000, 0x00000000,
+        0x00000010, 0x00000010, 0x00001000, 0x00001000, 0x00001010, 0x00001010,
+        0x00001000, 0x00001000, 0x00001010, 0x00001010,
+    },
+    {
+        0x00000000, 0x00000000, 0x00200000, 0x00200000, 0x00000000, 0x00000000,
+        0x00200000, 0x00200000, 0x20000000, 0x20000000, 0x20200000, 0x20200000,
+        0x20000000, 0x20000000, 0x20200000, 0x20200000,
+    },
+    {
+        0x00000000, 0x00000000, 0x00000020, 0x00000020, 0x00000000, 0x00000000,
+        0x00000020, 0x00000020, 0x00002000, 0x00002000, 0x00002020, 0x00002020,
+        0x00002000, 0x00002000, 0x00002020, 0x00002020,
+    },
+    {
+        0x00000000, 0x00000000, 0x00400000, 0x00400000, 0x00000000, 0x00000000,
+        0x00400000, 0x00400000, 0x40000000, 0x40000000, 0x40400000, 0x40400000,
+        0x40000000, 0x40000000, 0x40400000, 0x40400000,
+    },
+    {
+        0x00000000, 0x00000000, 0x00000040, 0x00000040, 0x00000000, 0x00000000,
+        0x00000040, 0x00000040, 0x00004000, 0x00004000, 0x00004040, 0x00004040,
+        0x00004000, 0x00004000, 0x00004040, 0x00004040,
+    },
+    {
+        0x00000000, 0x00000000, 0x00800000, 0x00800000, 0x00000000, 0x00000000,
+        0x00800000, 0x00800000, 0x80000000, 0x80000000, 0x80800000, 0x80800000,
+        0x80000000, 0x80000000, 0x80800000, 0x80800000,
+    },
+    {
+        0x00000000, 0x00000000, 0x00000080, 0x00000080, 0x00000000, 0x00000000,
+        0x00000080, 0x00000080, 0x00008000, 0x00008000, 0x00008080, 0x00008080,
+        0x00008000, 0x00008000, 0x00008080, 0x00008080,
+    },
 };
 static const uint32_t fp_maskl[8][16] = {
-	{
-		0x00000000,0x40000000,0x00400000,0x40400000,
-		0x00004000,0x40004000,0x00404000,0x40404000,
-		0x00000040,0x40000040,0x00400040,0x40400040,
-		0x00004040,0x40004040,0x00404040,0x40404040,
-	},{
-		0x00000000,0x10000000,0x00100000,0x10100000,
-		0x00001000,0x10001000,0x00101000,0x10101000,
-		0x00000010,0x10000010,0x00100010,0x10100010,
-		0x00001010,0x10001010,0x00101010,0x10101010,
-	},{
-		0x00000000,0x04000000,0x00040000,0x04040000,
-		0x00000400,0x04000400,0x00040400,0x04040400,
-		0x00000004,0x04000004,0x00040004,0x04040004,
-		0x00000404,0x04000404,0x00040404,0x04040404,
-	},{
-		0x00000000,0x01000000,0x00010000,0x01010000,
-		0x00000100,0x01000100,0x00010100,0x01010100,
-		0x00000001,0x01000001,0x00010001,0x01010001,
-		0x00000101,0x01000101,0x00010101,0x01010101,
-	},{
-		0x00000000,0x80000000,0x00800000,0x80800000,
-		0x00008000,0x80008000,0x00808000,0x80808000,
-		0x00000080,0x80000080,0x00800080,0x80800080,
-		0x00008080,0x80008080,0x00808080,0x80808080,
-	},{
-		0x00000000,0x20000000,0x00200000,0x20200000,
-		0x00002000,0x20002000,0x00202000,0x20202000,
-		0x00000020,0x20000020,0x00200020,0x20200020,
-		0x00002020,0x20002020,0x00202020,0x20202020,
-	},{
-		0x00000000,0x08000000,0x00080000,0x08080000,
-		0x00000800,0x08000800,0x00080800,0x08080800,
-		0x00000008,0x08000008,0x00080008,0x08080008,
-		0x00000808,0x08000808,0x00080808,0x08080808,
-	},{
-		0x00000000,0x02000000,0x00020000,0x02020000,
-		0x00000200,0x02000200,0x00020200,0x02020200,
-		0x00000002,0x02000002,0x00020002,0x02020002,
-		0x00000202,0x02000202,0x00020202,0x02020202,
-	},
+    {
+        0x00000000, 0x40000000, 0x00400000, 0x40400000, 0x00004000, 0x40004000,
+        0x00404000, 0x40404000, 0x00000040, 0x40000040, 0x00400040, 0x40400040,
+        0x00004040, 0x40004040, 0x00404040, 0x40404040,
+    },
+    {
+        0x00000000, 0x10000000, 0x00100000, 0x10100000, 0x00001000, 0x10001000,
+        0x00101000, 0x10101000, 0x00000010, 0x10000010, 0x00100010, 0x10100010,
+        0x00001010, 0x10001010, 0x00101010, 0x10101010,
+    },
+    {
+        0x00000000, 0x04000000, 0x00040000, 0x04040000, 0x00000400, 0x04000400,
+        0x00040400, 0x04040400, 0x00000004, 0x04000004, 0x00040004, 0x04040004,
+        0x00000404, 0x04000404, 0x00040404, 0x04040404,
+    },
+    {
+        0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100,
+        0x00010100, 0x01010100, 0x00000001, 0x01000001, 0x00010001, 0x01010001,
+        0x00000101, 0x01000101, 0x00010101, 0x01010101,
+    },
+    {
+        0x00000000, 0x80000000, 0x00800000, 0x80800000, 0x00008000, 0x80008000,
+        0x00808000, 0x80808000, 0x00000080, 0x80000080, 0x00800080, 0x80800080,
+        0x00008080, 0x80008080, 0x00808080, 0x80808080,
+    },
+    {
+        0x00000000, 0x20000000, 0x00200000, 0x20200000, 0x00002000, 0x20002000,
+        0x00202000, 0x20202000, 0x00000020, 0x20000020, 0x00200020, 0x20200020,
+        0x00002020, 0x20002020, 0x00202020, 0x20202020,
+    },
+    {
+        0x00000000, 0x08000000, 0x00080000, 0x08080000, 0x00000800, 0x08000800,
+        0x00080800, 0x08080800, 0x00000008, 0x08000008, 0x00080008, 0x08080008,
+        0x00000808, 0x08000808, 0x00080808, 0x08080808,
+    },
+    {
+        0x00000000, 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200,
+        0x00020200, 0x02020200, 0x00000002, 0x02000002, 0x00020002, 0x02020002,
+        0x00000202, 0x02000202, 0x00020202, 0x02020202,
+    },
 };
 static const uint32_t fp_maskr[8][16] = {
-	{
-		0x00000000,0x40000000,0x00400000,0x40400000,
-		0x00004000,0x40004000,0x00404000,0x40404000,
-		0x00000040,0x40000040,0x00400040,0x40400040,
-		0x00004040,0x40004040,0x00404040,0x40404040,
-	},{
-		0x00000000,0x10000000,0x00100000,0x10100000,
-		0x00001000,0x10001000,0x00101000,0x10101000,
-		0x00000010,0x10000010,0x00100010,0x10100010,
-		0x00001010,0x10001010,0x00101010,0x10101010,
-	},{
-		0x00000000,0x04000000,0x00040000,0x04040000,
-		0x00000400,0x04000400,0x00040400,0x04040400,
-		0x00000004,0x04000004,0x00040004,0x04040004,
-		0x00000404,0x04000404,0x00040404,0x04040404,
-	},{
-		0x00000000,0x01000000,0x00010000,0x01010000,
-		0x00000100,0x01000100,0x00010100,0x01010100,
-		0x00000001,0x01000001,0x00010001,0x01010001,
-		0x00000101,0x01000101,0x00010101,0x01010101,
-	},{
-		0x00000000,0x80000000,0x00800000,0x80800000,
-		0x00008000,0x80008000,0x00808000,0x80808000,
-		0x00000080,0x80000080,0x00800080,0x80800080,
-		0x00008080,0x80008080,0x00808080,0x80808080,
-	},{
-		0x00000000,0x20000000,0x00200000,0x20200000,
-		0x00002000,0x20002000,0x00202000,0x20202000,
-		0x00000020,0x20000020,0x00200020,0x20200020,
-		0x00002020,0x20002020,0x00202020,0x20202020,
-	},{
-		0x00000000,0x08000000,0x00080000,0x08080000,
-		0x00000800,0x08000800,0x00080800,0x08080800,
-		0x00000008,0x08000008,0x00080008,0x08080008,
-		0x00000808,0x08000808,0x00080808,0x08080808,
-	},{
-		0x00000000,0x02000000,0x00020000,0x02020000,
-		0x00000200,0x02000200,0x00020200,0x02020200,
-		0x00000002,0x02000002,0x00020002,0x02020002,
-		0x00000202,0x02000202,0x00020202,0x02020202,
-	},
+    {
+        0x00000000, 0x40000000, 0x00400000, 0x40400000, 0x00004000, 0x40004000,
+        0x00404000, 0x40404000, 0x00000040, 0x40000040, 0x00400040, 0x40400040,
+        0x00004040, 0x40004040, 0x00404040, 0x40404040,
+    },
+    {
+        0x00000000, 0x10000000, 0x00100000, 0x10100000, 0x00001000, 0x10001000,
+        0x00101000, 0x10101000, 0x00000010, 0x10000010, 0x00100010, 0x10100010,
+        0x00001010, 0x10001010, 0x00101010, 0x10101010,
+    },
+    {
+        0x00000000, 0x04000000, 0x00040000, 0x04040000, 0x00000400, 0x04000400,
+        0x00040400, 0x04040400, 0x00000004, 0x04000004, 0x00040004, 0x04040004,
+        0x00000404, 0x04000404, 0x00040404, 0x04040404,
+    },
+    {
+        0x00000000, 0x01000000, 0x00010000, 0x01010000, 0x00000100, 0x01000100,
+        0x00010100, 0x01010100, 0x00000001, 0x01000001, 0x00010001, 0x01010001,
+        0x00000101, 0x01000101, 0x00010101, 0x01010101,
+    },
+    {
+        0x00000000, 0x80000000, 0x00800000, 0x80800000, 0x00008000, 0x80008000,
+        0x00808000, 0x80808000, 0x00000080, 0x80000080, 0x00800080, 0x80800080,
+        0x00008080, 0x80008080, 0x00808080, 0x80808080,
+    },
+    {
+        0x00000000, 0x20000000, 0x00200000, 0x20200000, 0x00002000, 0x20002000,
+        0x00202000, 0x20202000, 0x00000020, 0x20000020, 0x00200020, 0x20200020,
+        0x00002020, 0x20002020, 0x00202020, 0x20202020,
+    },
+    {
+        0x00000000, 0x08000000, 0x00080000, 0x08080000, 0x00000800, 0x08000800,
+        0x00080800, 0x08080800, 0x00000008, 0x08000008, 0x00080008, 0x08080008,
+        0x00000808, 0x08000808, 0x00080808, 0x08080808,
+    },
+    {
+        0x00000000, 0x02000000, 0x00020000, 0x02020000, 0x00000200, 0x02000200,
+        0x00020200, 0x02020200, 0x00000002, 0x02000002, 0x00020002, 0x02020002,
+        0x00000202, 0x02000202, 0x00020202, 0x02020202,
+    },
 };
 static const uint32_t key_perm_maskl[8][16] = {
-	{
-		0x00000000,0x00000000,0x00000010,0x00000010,
-		0x00001000,0x00001000,0x00001010,0x00001010,
-		0x00100000,0x00100000,0x00100010,0x00100010,
-		0x00101000,0x00101000,0x00101010,0x00101010,
-	},{
-		0x00000000,0x00000000,0x00000020,0x00000020,
-		0x00002000,0x00002000,0x00002020,0x00002020,
-		0x00200000,0x00200000,0x00200020,0x00200020,
-		0x00202000,0x00202000,0x00202020,0x00202020,
-	},{
-		0x00000000,0x00000000,0x00000040,0x00000040,
-		0x00004000,0x00004000,0x00004040,0x00004040,
-		0x00400000,0x00400000,0x00400040,0x00400040,
-		0x00404000,0x00404000,0x00404040,0x00404040,
-	},{
-		0x00000000,0x00000000,0x00000080,0x00000080,
-		0x00008000,0x00008000,0x00008080,0x00008080,
-		0x00800000,0x00800000,0x00800080,0x00800080,
-		0x00808000,0x00808000,0x00808080,0x00808080,
-	},{
-		0x00000000,0x00000001,0x00000100,0x00000101,
-		0x00010000,0x00010001,0x00010100,0x00010101,
-		0x01000000,0x01000001,0x01000100,0x01000101,
-		0x01010000,0x01010001,0x01010100,0x01010101,
-	},{
-		0x00000000,0x00000002,0x00000200,0x00000202,
-		0x00020000,0x00020002,0x00020200,0x00020202,
-		0x02000000,0x02000002,0x02000200,0x02000202,
-		0x02020000,0x02020002,0x02020200,0x02020202,
-	},{
-		0x00000000,0x00000004,0x00000400,0x00000404,
-		0x00040000,0x00040004,0x00040400,0x00040404,
-		0x04000000,0x04000004,0x04000400,0x04000404,
-		0x04040000,0x04040004,0x04040400,0x04040404,
-	},{
-		0x00000000,0x00000008,0x00000800,0x00000808,
-		0x00080000,0x00080008,0x00080800,0x00080808,
-		0x08000000,0x08000008,0x08000800,0x08000808,
-		0x08080000,0x08080008,0x08080800,0x08080808,
-	},
+    {
+        0x00000000, 0x00000000, 0x00000010, 0x00000010, 0x00001000, 0x00001000,
+        0x00001010, 0x00001010, 0x00100000, 0x00100000, 0x00100010, 0x00100010,
+        0x00101000, 0x00101000, 0x00101010, 0x00101010,
+    },
+    {
+        0x00000000, 0x00000000, 0x00000020, 0x00000020, 0x00002000, 0x00002000,
+        0x00002020, 0x00002020, 0x00200000, 0x00200000, 0x00200020, 0x00200020,
+        0x00202000, 0x00202000, 0x00202020, 0x00202020,
+    },
+    {
+        0x00000000, 0x00000000, 0x00000040, 0x00000040, 0x00004000, 0x00004000,
+        0x00004040, 0x00004040, 0x00400000, 0x00400000, 0x00400040, 0x00400040,
+        0x00404000, 0x00404000, 0x00404040, 0x00404040,
+    },
+    {
+        0x00000000, 0x00000000, 0x00000080, 0x00000080, 0x00008000, 0x00008000,
+        0x00008080, 0x00008080, 0x00800000, 0x00800000, 0x00800080, 0x00800080,
+        0x00808000, 0x00808000, 0x00808080, 0x00808080,
+    },
+    {
+        0x00000000, 0x00000001, 0x00000100, 0x00000101, 0x00010000, 0x00010001,
+        0x00010100, 0x00010101, 0x01000000, 0x01000001, 0x01000100, 0x01000101,
+        0x01010000, 0x01010001, 0x01010100, 0x01010101,
+    },
+    {
+        0x00000000, 0x00000002, 0x00000200, 0x00000202, 0x00020000, 0x00020002,
+        0x00020200, 0x00020202, 0x02000000, 0x02000002, 0x02000200, 0x02000202,
+        0x02020000, 0x02020002, 0x02020200, 0x02020202,
+    },
+    {
+        0x00000000, 0x00000004, 0x00000400, 0x00000404, 0x00040000, 0x00040004,
+        0x00040400, 0x00040404, 0x04000000, 0x04000004, 0x04000400, 0x04000404,
+        0x04040000, 0x04040004, 0x04040400, 0x04040404,
+    },
+    {
+        0x00000000, 0x00000008, 0x00000800, 0x00000808, 0x00080000, 0x00080008,
+        0x00080800, 0x00080808, 0x08000000, 0x08000008, 0x08000800, 0x08000808,
+        0x08080000, 0x08080008, 0x08080800, 0x08080808,
+    },
 };
 static const uint32_t key_perm_maskr[12][16] = {
-	{
-		0x00000000,0x00000001,0x00000000,0x00000001,
-		0x00000000,0x00000001,0x00000000,0x00000001,
-		0x00000000,0x00000001,0x00000000,0x00000001,
-		0x00000000,0x00000001,0x00000000,0x00000001,
-	},{
-		0x00000000,0x00000000,0x00100000,0x00100000,
-		0x00001000,0x00001000,0x00101000,0x00101000,
-		0x00000010,0x00000010,0x00100010,0x00100010,
-		0x00001010,0x00001010,0x00101010,0x00101010,
-	},{
-		0x00000000,0x00000002,0x00000000,0x00000002,
-		0x00000000,0x00000002,0x00000000,0x00000002,
-		0x00000000,0x00000002,0x00000000,0x00000002,
-		0x00000000,0x00000002,0x00000000,0x00000002,
-	},{
-		0x00000000,0x00000000,0x00200000,0x00200000,
-		0x00002000,0x00002000,0x00202000,0x00202000,
-		0x00000020,0x00000020,0x00200020,0x00200020,
-		0x00002020,0x00002020,0x00202020,0x00202020,
-	},{
-		0x00000000,0x00000004,0x00000000,0x00000004,
-		0x00000000,0x00000004,0x00000000,0x00000004,
-		0x00000000,0x00000004,0x00000000,0x00000004,
-		0x00000000,0x00000004,0x00000000,0x00000004,
-	},{
-		0x00000000,0x00000000,0x00400000,0x00400000,
-		0x00004000,0x00004000,0x00404000,0x00404000,
-		0x00000040,0x00000040,0x00400040,0x00400040,
-		0x00004040,0x00004040,0x00404040,0x00404040,
-	},{
-		0x00000000,0x00000008,0x00000000,0x00000008,
-		0x00000000,0x00000008,0x00000000,0x00000008,
-		0x00000000,0x00000008,0x00000000,0x00000008,
-		0x00000000,0x00000008,0x00000000,0x00000008,
-	},{
-		0x00000000,0x00000000,0x00800000,0x00800000,
-		0x00008000,0x00008000,0x00808000,0x00808000,
-		0x00000080,0x00000080,0x00800080,0x00800080,
-		0x00008080,0x00008080,0x00808080,0x00808080,
-	},{
-		0x00000000,0x00000000,0x01000000,0x01000000,
-		0x00010000,0x00010000,0x01010000,0x01010000,
-		0x00000100,0x00000100,0x01000100,0x01000100,
-		0x00010100,0x00010100,0x01010100,0x01010100,
-	},{
-		0x00000000,0x00000000,0x02000000,0x02000000,
-		0x00020000,0x00020000,0x02020000,0x02020000,
-		0x00000200,0x00000200,0x02000200,0x02000200,
-		0x00020200,0x00020200,0x02020200,0x02020200,
-	},{
-		0x00000000,0x00000000,0x04000000,0x04000000,
-		0x00040000,0x00040000,0x04040000,0x04040000,
-		0x00000400,0x00000400,0x04000400,0x04000400,
-		0x00040400,0x00040400,0x04040400,0x04040400,
-	},{
-		0x00000000,0x00000000,0x08000000,0x08000000,
-		0x00080000,0x00080000,0x08080000,0x08080000,
-		0x00000800,0x00000800,0x08000800,0x08000800,
-		0x00080800,0x00080800,0x08080800,0x08080800,
-	},
+    {
+        0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000000, 0x00000001,
+        0x00000000, 0x00000001, 0x00000000, 0x00000001, 0x00000000, 0x00000001,
+        0x00000000, 0x00000001, 0x00000000, 0x00000001,
+    },
+    {
+        0x00000000, 0x00000000, 0x00100000, 0x00100000, 0x00001000, 0x00001000,
+        0x00101000, 0x00101000, 0x00000010, 0x00000010, 0x00100010, 0x00100010,
+        0x00001010, 0x00001010, 0x00101010, 0x00101010,
+    },
+    {
+        0x00000000, 0x00000002, 0x00000000, 0x00000002, 0x00000000, 0x00000002,
+        0x00000000, 0x00000002, 0x00000000, 0x00000002, 0x00000000, 0x00000002,
+        0x00000000, 0x00000002, 0x00000000, 0x00000002,
+    },
+    {
+        0x00000000, 0x00000000, 0x00200000, 0x00200000, 0x00002000, 0x00002000,
+        0x00202000, 0x00202000, 0x00000020, 0x00000020, 0x00200020, 0x00200020,
+        0x00002020, 0x00002020, 0x00202020, 0x00202020,
+    },
+    {
+        0x00000000, 0x00000004, 0x00000000, 0x00000004, 0x00000000, 0x00000004,
+        0x00000000, 0x00000004, 0x00000000, 0x00000004, 0x00000000, 0x00000004,
+        0x00000000, 0x00000004, 0x00000000, 0x00000004,
+    },
+    {
+        0x00000000, 0x00000000, 0x00400000, 0x00400000, 0x00004000, 0x00004000,
+        0x00404000, 0x00404000, 0x00000040, 0x00000040, 0x00400040, 0x00400040,
+        0x00004040, 0x00004040, 0x00404040, 0x00404040,
+    },
+    {
+        0x00000000, 0x00000008, 0x00000000, 0x00000008, 0x00000000, 0x00000008,
+        0x00000000, 0x00000008, 0x00000000, 0x00000008, 0x00000000, 0x00000008,
+        0x00000000, 0x00000008, 0x00000000, 0x00000008,
+    },
+    {
+        0x00000000, 0x00000000, 0x00800000, 0x00800000, 0x00008000, 0x00008000,
+        0x00808000, 0x00808000, 0x00000080, 0x00000080, 0x00800080, 0x00800080,
+        0x00008080, 0x00008080, 0x00808080, 0x00808080,
+    },
+    {
+        0x00000000, 0x00000000, 0x01000000, 0x01000000, 0x00010000, 0x00010000,
+        0x01010000, 0x01010000, 0x00000100, 0x00000100, 0x01000100, 0x01000100,
+        0x00010100, 0x00010100, 0x01010100, 0x01010100,
+    },
+    {
+        0x00000000, 0x00000000, 0x02000000, 0x02000000, 0x00020000, 0x00020000,
+        0x02020000, 0x02020000, 0x00000200, 0x00000200, 0x02000200, 0x02000200,
+        0x00020200, 0x00020200, 0x02020200, 0x02020200,
+    },
+    {
+        0x00000000, 0x00000000, 0x04000000, 0x04000000, 0x00040000, 0x00040000,
+        0x04040000, 0x04040000, 0x00000400, 0x00000400, 0x04000400, 0x04000400,
+        0x00040400, 0x00040400, 0x04040400, 0x04040400,
+    },
+    {
+        0x00000000, 0x00000000, 0x08000000, 0x08000000, 0x00080000, 0x00080000,
+        0x08080000, 0x08080000, 0x00000800, 0x00000800, 0x08000800, 0x08000800,
+        0x00080800, 0x00080800, 0x08080800, 0x08080800,
+    },
 };
 static const uint32_t comp_maskl0[4][8] = {
-	{
-		0x00000000,0x00020000,0x00000001,0x00020001,
-		0x00080000,0x000a0000,0x00080001,0x000a0001,
-	},{
-		0x00000000,0x00001000,0x00000000,0x00001000,
-		0x00000040,0x00001040,0x00000040,0x00001040,
-	},{
-		0x00000000,0x00400000,0x00000020,0x00400020,
-		0x00008000,0x00408000,0x00008020,0x00408020,
-	},{
-		0x00000000,0x00100000,0x00000800,0x00100800,
-		0x00000000,0x00100000,0x00000800,0x00100800,
-	},
+    {
+        0x00000000, 0x00020000, 0x00000001, 0x00020001, 0x00080000, 0x000a0000,
+        0x00080001, 0x000a0001,
+    },
+    {
+        0x00000000, 0x00001000, 0x00000000, 0x00001000, 0x00000040, 0x00001040,
+        0x00000040, 0x00001040,
+    },
+    {
+        0x00000000, 0x00400000, 0x00000020, 0x00400020, 0x00008000, 0x00408000,
+        0x00008020, 0x00408020,
+    },
+    {
+        0x00000000, 0x00100000, 0x00000800, 0x00100800, 0x00000000, 0x00100000,
+        0x00000800, 0x00100800,
+    },
 };
 static const uint32_t comp_maskr0[4][8] = {
-	{
-		0x00000000,0x00200000,0x00020000,0x00220000,
-		0x00000002,0x00200002,0x00020002,0x00220002,
-	},{
-		0x00000000,0x00000000,0x00100000,0x00100000,
-		0x00000004,0x00000004,0x00100004,0x00100004,
-	},{
-		0x00000000,0x00004000,0x00000800,0x00004800,
-		0x00000000,0x00004000,0x00000800,0x00004800,
-	},{
-		0x00000000,0x00400000,0x00008000,0x00408000,
-		0x00000008,0x00400008,0x00008008,0x00408008,
-	},
+    {
+        0x00000000, 0x00200000, 0x00020000, 0x00220000, 0x00000002, 0x00200002,
+        0x00020002, 0x00220002,
+    },
+    {
+        0x00000000, 0x00000000, 0x00100000, 0x00100000, 0x00000004, 0x00000004,
+        0x00100004, 0x00100004,
+    },
+    {
+        0x00000000, 0x00004000, 0x00000800, 0x00004800, 0x00000000, 0x00004000,
+        0x00000800, 0x00004800,
+    },
+    {
+        0x00000000, 0x00400000, 0x00008000, 0x00408000, 0x00000008, 0x00400008,
+        0x00008008, 0x00408008,
+    },
 };
 static const uint32_t comp_maskl1[4][16] = {
-	{
-		0x00000000,0x00000010,0x00004000,0x00004010,
-		0x00040000,0x00040010,0x00044000,0x00044010,
-		0x00000100,0x00000110,0x00004100,0x00004110,
-		0x00040100,0x00040110,0x00044100,0x00044110,
-	},{
-		0x00000000,0x00800000,0x00000002,0x00800002,
-		0x00000200,0x00800200,0x00000202,0x00800202,
-		0x00200000,0x00a00000,0x00200002,0x00a00002,
-		0x00200200,0x00a00200,0x00200202,0x00a00202,
-	},{
-		0x00000000,0x00002000,0x00000004,0x00002004,
-		0x00000400,0x00002400,0x00000404,0x00002404,
-		0x00000000,0x00002000,0x00000004,0x00002004,
-		0x00000400,0x00002400,0x00000404,0x00002404,
-	},{
-		0x00000000,0x00010000,0x00000008,0x00010008,
-		0x00000080,0x00010080,0x00000088,0x00010088,
-		0x00000000,0x00010000,0x00000008,0x00010008,
-		0x00000080,0x00010080,0x00000088,0x00010088,
-	},
+    {
+        0x00000000, 0x00000010, 0x00004000, 0x00004010, 0x00040000, 0x00040010,
+        0x00044000, 0x00044010, 0x00000100, 0x00000110, 0x00004100, 0x00004110,
+        0x00040100, 0x00040110, 0x00044100, 0x00044110,
+    },
+    {
+        0x00000000, 0x00800000, 0x00000002, 0x00800002, 0x00000200, 0x00800200,
+        0x00000202, 0x00800202, 0x00200000, 0x00a00000, 0x00200002, 0x00a00002,
+        0x00200200, 0x00a00200, 0x00200202, 0x00a00202,
+    },
+    {
+        0x00000000, 0x00002000, 0x00000004, 0x00002004, 0x00000400, 0x00002400,
+        0x00000404, 0x00002404, 0x00000000, 0x00002000, 0x00000004, 0x00002004,
+        0x00000400, 0x00002400, 0x00000404, 0x00002404,
+    },
+    {
+        0x00000000, 0x00010000, 0x00000008, 0x00010008, 0x00000080, 0x00010080,
+        0x00000088, 0x00010088, 0x00000000, 0x00010000, 0x00000008, 0x00010008,
+        0x00000080, 0x00010080, 0x00000088, 0x00010088,
+    },
 };
 static const uint32_t comp_maskr1[4][16] = {
-	{
-		0x00000000,0x00000000,0x00000080,0x00000080,
-		0x00002000,0x00002000,0x00002080,0x00002080,
-		0x00000001,0x00000001,0x00000081,0x00000081,
-		0x00002001,0x00002001,0x00002081,0x00002081,
-	},{
-		0x00000000,0x00000010,0x00800000,0x00800010,
-		0x00010000,0x00010010,0x00810000,0x00810010,
-		0x00000200,0x00000210,0x00800200,0x00800210,
-		0x00010200,0x00010210,0x00810200,0x00810210,
-	},{
-		0x00000000,0x00000400,0x00001000,0x00001400,
-		0x00080000,0x00080400,0x00081000,0x00081400,
-		0x00000020,0x00000420,0x00001020,0x00001420,
-		0x00080020,0x00080420,0x00081020,0x00081420,
-	},{
-		0x00000000,0x00000100,0x00040000,0x00040100,
-		0x00000000,0x00000100,0x00040000,0x00040100,
-		0x00000040,0x00000140,0x00040040,0x00040140,
-		0x00000040,0x00000140,0x00040040,0x00040140,
-	},
+    {
+        0x00000000, 0x00000000, 0x00000080, 0x00000080, 0x00002000, 0x00002000,
+        0x00002080, 0x00002080, 0x00000001, 0x00000001, 0x00000081, 0x00000081,
+        0x00002001, 0x00002001, 0x00002081, 0x00002081,
+    },
+    {
+        0x00000000, 0x00000010, 0x00800000, 0x00800010, 0x00010000, 0x00010010,
+        0x00810000, 0x00810010, 0x00000200, 0x00000210, 0x00800200, 0x00800210,
+        0x00010200, 0x00010210, 0x00810200, 0x00810210,
+    },
+    {
+        0x00000000, 0x00000400, 0x00001000, 0x00001400, 0x00080000, 0x00080400,
+        0x00081000, 0x00081400, 0x00000020, 0x00000420, 0x00001020, 0x00001420,
+        0x00080020, 0x00080420, 0x00081020, 0x00081420,
+    },
+    {
+        0x00000000, 0x00000100, 0x00040000, 0x00040100, 0x00000000, 0x00000100,
+        0x00040000, 0x00040100, 0x00000040, 0x00000140, 0x00040040, 0x00040140,
+        0x00000040, 0x00000140, 0x00040040, 0x00040140,
+    },
 };
 
 static const unsigned char ascii64[] =
@@ -649,370 +614,349 @@
  * We match the behavior of UFC-crypt on systems where "char" is signed by
  * default (the majority), regardless of char's signedness on our system.
  */
-static uint32_t ascii_to_bin(int ch)
-{
-	int sch = (ch < 0x80) ? ch : -(0x100 - ch);
-	int retval;
+static uint32_t ascii_to_bin(int ch) {
+  int sch = (ch < 0x80) ? ch : -(0x100 - ch);
+  int retval;
 
-	retval = sch - '.';
-	if (sch >= 'A') {
-		retval = sch - ('A' - 12);
-		if (sch >= 'a')
-			retval = sch - ('a' - 38);
-	}
-	retval &= 0x3f;
+  retval = sch - '.';
+  if (sch >= 'A') {
+    retval = sch - ('A' - 12);
+    if (sch >= 'a')
+      retval = sch - ('a' - 38);
+  }
+  retval &= 0x3f;
 
-	return retval;
+  return retval;
 }
 
 /*
  * When we choose to "support" invalid salts, nevertheless disallow those
  * containing characters that would violate the passwd file format.
  */
-static inline int ascii_is_unsafe(unsigned char ch)
-{
-	return !ch || ch == '\n' || ch == ':';
+static inline int ascii_is_unsafe(unsigned char ch) {
+  return !ch || ch == '\n' || ch == ':';
 }
 
-static uint32_t setup_salt(uint32_t salt)
-{
-	uint32_t obit, saltbit, saltbits;
-	unsigned int i;
+static uint32_t setup_salt(uint32_t salt) {
+  uint32_t obit, saltbit, saltbits;
+  unsigned int i;
 
-	saltbits = 0;
-	saltbit = 1;
-	obit = 0x800000;
-	for (i = 0; i < 24; i++) {
-		if (salt & saltbit)
-			saltbits |= obit;
-		saltbit <<= 1;
-		obit >>= 1;
-	}
+  saltbits = 0;
+  saltbit = 1;
+  obit = 0x800000;
+  for (i = 0; i < 24; i++) {
+    if (salt & saltbit)
+      saltbits |= obit;
+    saltbit <<= 1;
+    obit >>= 1;
+  }
 
-	return saltbits;
+  return saltbits;
 }
 
-void __des_setkey(const unsigned char *key, struct expanded_key *ekey)
-{
-	uint32_t k0, k1, rawkey0, rawkey1;
-	unsigned int shifts, round, i, ibit;
+void __des_setkey(const unsigned char* key, struct expanded_key* ekey) {
+  uint32_t k0, k1, rawkey0, rawkey1;
+  unsigned int shifts, round, i, ibit;
 
-	rawkey0 =
-	    (uint32_t)key[3] |
-	    ((uint32_t)key[2] << 8) |
-	    ((uint32_t)key[1] << 16) |
-	    ((uint32_t)key[0] << 24);
-	rawkey1 =
-	    (uint32_t)key[7] |
-	    ((uint32_t)key[6] << 8) |
-	    ((uint32_t)key[5] << 16) |
-	    ((uint32_t)key[4] << 24);
+  rawkey0 = (uint32_t)key[3] | ((uint32_t)key[2] << 8) |
+            ((uint32_t)key[1] << 16) | ((uint32_t)key[0] << 24);
+  rawkey1 = (uint32_t)key[7] | ((uint32_t)key[6] << 8) |
+            ((uint32_t)key[5] << 16) | ((uint32_t)key[4] << 24);
 
-	/*
-	 * Do key permutation and split into two 28-bit subkeys.
-	 */
-	k0 = k1 = 0;
-	for (i = 0, ibit = 28; i < 4; i++, ibit -= 4) {
-		unsigned int j = i << 1;
-		k0 |= key_perm_maskl[i][(rawkey0 >> ibit) & 0xf] |
-		      key_perm_maskl[i + 4][(rawkey1 >> ibit) & 0xf];
-		k1 |= key_perm_maskr[j][(rawkey0 >> ibit) & 0xf];
-		ibit -= 4;
-		k1 |= key_perm_maskr[j + 1][(rawkey0 >> ibit) & 0xf] |
-		      key_perm_maskr[i + 8][(rawkey1 >> ibit) & 0xf];
-	}
+  /*
+   * Do key permutation and split into two 28-bit subkeys.
+   */
+  k0 = k1 = 0;
+  for (i = 0, ibit = 28; i < 4; i++, ibit -= 4) {
+    unsigned int j = i << 1;
+    k0 |= key_perm_maskl[i][(rawkey0 >> ibit) & 0xf] |
+          key_perm_maskl[i + 4][(rawkey1 >> ibit) & 0xf];
+    k1 |= key_perm_maskr[j][(rawkey0 >> ibit) & 0xf];
+    ibit -= 4;
+    k1 |= key_perm_maskr[j + 1][(rawkey0 >> ibit) & 0xf] |
+          key_perm_maskr[i + 8][(rawkey1 >> ibit) & 0xf];
+  }
 
-	/*
-	 * Rotate subkeys and do compression permutation.
-	 */
-	shifts = 0;
-	for (round = 0; round < 16; round++) {
-		uint32_t t0, t1;
-		uint32_t kl, kr;
+  /*
+   * Rotate subkeys and do compression permutation.
+   */
+  shifts = 0;
+  for (round = 0; round < 16; round++) {
+    uint32_t t0, t1;
+    uint32_t kl, kr;
 
-		shifts += key_shifts[round];
+    shifts += key_shifts[round];
 
-		t0 = (k0 << shifts) | (k0 >> (28 - shifts));
-		t1 = (k1 << shifts) | (k1 >> (28 - shifts));
+    t0 = (k0 << shifts) | (k0 >> (28 - shifts));
+    t1 = (k1 << shifts) | (k1 >> (28 - shifts));
 
-		kl = kr = 0;
-		ibit = 25;
-		for (i = 0; i < 4; i++) {
-			kl |= comp_maskl0[i][(t0 >> ibit) & 7];
-			kr |= comp_maskr0[i][(t1 >> ibit) & 7];
-			ibit -= 4;
-			kl |= comp_maskl1[i][(t0 >> ibit) & 0xf];
-			kr |= comp_maskr1[i][(t1 >> ibit) & 0xf];
-			ibit -= 3;
-		}
-		ekey->l[round] = kl;
-		ekey->r[round] = kr;
-	}
+    kl = kr = 0;
+    ibit = 25;
+    for (i = 0; i < 4; i++) {
+      kl |= comp_maskl0[i][(t0 >> ibit) & 7];
+      kr |= comp_maskr0[i][(t1 >> ibit) & 7];
+      ibit -= 4;
+      kl |= comp_maskl1[i][(t0 >> ibit) & 0xf];
+      kr |= comp_maskr1[i][(t1 >> ibit) & 0xf];
+      ibit -= 3;
+    }
+    ekey->l[round] = kl;
+    ekey->r[round] = kr;
+  }
 }
 
 /*
  * l_in, r_in, l_out, and r_out are in pseudo-"big-endian" format.
  */
-void __do_des(uint32_t l_in, uint32_t r_in,
-    uint32_t *l_out, uint32_t *r_out,
-    uint32_t count, uint32_t saltbits, const struct expanded_key *ekey)
-{
-	uint32_t l, r;
+void __do_des(uint32_t l_in,
+              uint32_t r_in,
+              uint32_t* l_out,
+              uint32_t* r_out,
+              uint32_t count,
+              uint32_t saltbits,
+              const struct expanded_key* ekey) {
+  uint32_t l, r;
 
-	/*
-	 * Do initial permutation (IP).
-	 */
-	l = r = 0;
-	if (l_in | r_in) {
-		unsigned int i, ibit;
-		for (i = 0, ibit = 28; i < 8; i++, ibit -= 4) {
-			l |= ip_maskl[i][(l_in >> ibit) & 0xf] |
-			     ip_maskl[i + 8][(r_in >> ibit) & 0xf];
-			r |= ip_maskr[i][(l_in >> ibit) & 0xf] |
-			     ip_maskr[i + 8][(r_in >> ibit) & 0xf];
-		}
-	}
+  /*
+   * Do initial permutation (IP).
+   */
+  l = r = 0;
+  if (l_in | r_in) {
+    unsigned int i, ibit;
+    for (i = 0, ibit = 28; i < 8; i++, ibit -= 4) {
+      l |= ip_maskl[i][(l_in >> ibit) & 0xf] |
+           ip_maskl[i + 8][(r_in >> ibit) & 0xf];
+      r |= ip_maskr[i][(l_in >> ibit) & 0xf] |
+           ip_maskr[i + 8][(r_in >> ibit) & 0xf];
+    }
+  }
 
-	while (count--) {
-		/*
-		 * Do each round.
-		 */
-		unsigned int round = 16;
-		const uint32_t *kl = ekey->l;
-		const uint32_t *kr = ekey->r;
-		uint32_t f;
-		while (round--) {
-			uint32_t r48l, r48r;
-			/*
-			 * Expand R to 48 bits (simulate the E-box).
-			 */
-			r48l	= ((r & 0x00000001) << 23)
-				| ((r & 0xf8000000) >> 9)
-				| ((r & 0x1f800000) >> 11)
-				| ((r & 0x01f80000) >> 13)
-				| ((r & 0x001f8000) >> 15);
+  while (count--) {
+    /*
+     * Do each round.
+     */
+    unsigned int round = 16;
+    const uint32_t* kl = ekey->l;
+    const uint32_t* kr = ekey->r;
+    uint32_t f;
+    while (round--) {
+      uint32_t r48l, r48r;
+      /*
+       * Expand R to 48 bits (simulate the E-box).
+       */
+      r48l = ((r & 0x00000001) << 23) | ((r & 0xf8000000) >> 9) |
+             ((r & 0x1f800000) >> 11) | ((r & 0x01f80000) >> 13) |
+             ((r & 0x001f8000) >> 15);
 
-			r48r	= ((r & 0x0001f800) << 7)
-				| ((r & 0x00001f80) << 5)
-				| ((r & 0x000001f8) << 3)
-				| ((r & 0x0000001f) << 1)
-				| ((r & 0x80000000) >> 31);
-			/*
-			 * Do salting for crypt() and friends, and
-			 * XOR with the permuted key.
-			 */
-			f = (r48l ^ r48r) & saltbits;
-			r48l ^= f ^ *kl++;
-			r48r ^= f ^ *kr++;
-			/*
-			 * Do S-box lookups (which shrink it back to 32 bits)
-			 * and do the P-box permutation at the same time.
-			 */
-			f = psbox[0][r48l >> 18]
-			  | psbox[1][(r48l >> 12) & 0x3f]
-			  | psbox[2][(r48l >> 6) & 0x3f]
-			  | psbox[3][r48l & 0x3f]
-			  | psbox[4][r48r >> 18]
-			  | psbox[5][(r48r >> 12) & 0x3f]
-			  | psbox[6][(r48r >> 6) & 0x3f]
-			  | psbox[7][r48r & 0x3f];
-			/*
-			 * Now that we've permuted things, complete f().
-			 */
-			f ^= l;
-			l = r;
-			r = f;
-		}
-		r = l;
-		l = f;
-	}
+      r48r = ((r & 0x0001f800) << 7) | ((r & 0x00001f80) << 5) |
+             ((r & 0x000001f8) << 3) | ((r & 0x0000001f) << 1) |
+             ((r & 0x80000000) >> 31);
+      /*
+       * Do salting for crypt() and friends, and
+       * XOR with the permuted key.
+       */
+      f = (r48l ^ r48r) & saltbits;
+      r48l ^= f ^ *kl++;
+      r48r ^= f ^ *kr++;
+      /*
+       * Do S-box lookups (which shrink it back to 32 bits)
+       * and do the P-box permutation at the same time.
+       */
+      f = psbox[0][r48l >> 18] | psbox[1][(r48l >> 12) & 0x3f] |
+          psbox[2][(r48l >> 6) & 0x3f] | psbox[3][r48l & 0x3f] |
+          psbox[4][r48r >> 18] | psbox[5][(r48r >> 12) & 0x3f] |
+          psbox[6][(r48r >> 6) & 0x3f] | psbox[7][r48r & 0x3f];
+      /*
+       * Now that we've permuted things, complete f().
+       */
+      f ^= l;
+      l = r;
+      r = f;
+    }
+    r = l;
+    l = f;
+  }
 
-	/*
-	 * Do final permutation (inverse of IP).
-	 */
-	{
-		unsigned int i, ibit;
-		uint32_t lo, ro;
-		lo = ro = 0;
-		for (i = 0, ibit = 28; i < 4; i++, ibit -= 4) {
-			ro |= fp_maskr[i][(l >> ibit) & 0xf] |
-			      fp_maskr[i + 4][(r >> ibit) & 0xf];
-			ibit -= 4;
-			lo |= fp_maskl[i][(l >> ibit) & 0xf] |
-			      fp_maskl[i + 4][(r >> ibit) & 0xf];
-		}
-		*l_out = lo;
-		*r_out = ro;
-	}
+  /*
+   * Do final permutation (inverse of IP).
+   */
+  {
+    unsigned int i, ibit;
+    uint32_t lo, ro;
+    lo = ro = 0;
+    for (i = 0, ibit = 28; i < 4; i++, ibit -= 4) {
+      ro |= fp_maskr[i][(l >> ibit) & 0xf] | fp_maskr[i + 4][(r >> ibit) & 0xf];
+      ibit -= 4;
+      lo |= fp_maskl[i][(l >> ibit) & 0xf] | fp_maskl[i + 4][(r >> ibit) & 0xf];
+    }
+    *l_out = lo;
+    *r_out = ro;
+  }
 }
 
-static void des_cipher(const unsigned char *in, unsigned char *out,
-    uint32_t count, uint32_t saltbits, const struct expanded_key *ekey)
-{
-	uint32_t l_out, r_out, rawl, rawr;
+static void des_cipher(const unsigned char* in,
+                       unsigned char* out,
+                       uint32_t count,
+                       uint32_t saltbits,
+                       const struct expanded_key* ekey) {
+  uint32_t l_out, r_out, rawl, rawr;
 
-	rawl =
-	    (uint32_t)in[3] |
-	    ((uint32_t)in[2] << 8) |
-	    ((uint32_t)in[1] << 16) |
-	    ((uint32_t)in[0] << 24);
-	rawr =
-	    (uint32_t)in[7] |
-	    ((uint32_t)in[6] << 8) |
-	    ((uint32_t)in[5] << 16) |
-	    ((uint32_t)in[4] << 24);
+  rawl = (uint32_t)in[3] | ((uint32_t)in[2] << 8) | ((uint32_t)in[1] << 16) |
+         ((uint32_t)in[0] << 24);
+  rawr = (uint32_t)in[7] | ((uint32_t)in[6] << 8) | ((uint32_t)in[5] << 16) |
+         ((uint32_t)in[4] << 24);
 
-	__do_des(rawl, rawr, &l_out, &r_out, count, saltbits, ekey);
+  __do_des(rawl, rawr, &l_out, &r_out, count, saltbits, ekey);
 
-	out[0] = l_out >> 24;
-	out[1] = l_out >> 16;
-	out[2] = l_out >> 8;
-	out[3] = l_out;
-	out[4] = r_out >> 24;
-	out[5] = r_out >> 16;
-	out[6] = r_out >> 8;
-	out[7] = r_out;
+  out[0] = l_out >> 24;
+  out[1] = l_out >> 16;
+  out[2] = l_out >> 8;
+  out[3] = l_out;
+  out[4] = r_out >> 24;
+  out[5] = r_out >> 16;
+  out[6] = r_out >> 8;
+  out[7] = r_out;
 }
 
-static char *_crypt_extended_r_uut(const char *_key, const char *_setting, char *output)
-{
-	const unsigned char *key = (const unsigned char *)_key;
-	const unsigned char *setting = (const unsigned char *)_setting;
-	struct expanded_key ekey;
-	unsigned char keybuf[8];
-	unsigned char *p, *q;
-	uint32_t count, salt, l, r0, r1;
-	unsigned int i;
+static char* _crypt_extended_r_uut(const char* _key,
+                                   const char* _setting,
+                                   char* output) {
+  const unsigned char* key = (const unsigned char*)_key;
+  const unsigned char* setting = (const unsigned char*)_setting;
+  struct expanded_key ekey;
+  unsigned char keybuf[8];
+  unsigned char *p, *q;
+  uint32_t count, salt, l, r0, r1;
+  unsigned int i;
 
-	/*
-	 * Copy the key, shifting each character left by one bit and padding
-	 * with zeroes.
-	 */
-	q = keybuf;
-	while (q <= &keybuf[sizeof(keybuf) - 1]) {
-		*q++ = *key << 1;
-		if (*key)
-			key++;
-	}
-	__des_setkey(keybuf, &ekey);
+  /*
+   * Copy the key, shifting each character left by one bit and padding
+   * with zeroes.
+   */
+  q = keybuf;
+  while (q <= &keybuf[sizeof(keybuf) - 1]) {
+    *q++ = *key << 1;
+    if (*key)
+      key++;
+  }
+  __des_setkey(keybuf, &ekey);
 
-	if (*setting == _PASSWORD_EFMT1) {
-		/*
-		 * "new"-style:
-		 *	setting - underscore, 4 chars of count, 4 chars of salt
-		 *	key - unlimited characters
-		 */
-		for (i = 1, count = 0; i < 5; i++) {
-			uint32_t value = ascii_to_bin(setting[i]);
-			if (ascii64[value] != setting[i])
-				return NULL;
-			count |= value << (i - 1) * 6;
-		}
-		if (!count)
-			return NULL;
+  if (*setting == _PASSWORD_EFMT1) {
+    /*
+     * "new"-style:
+     *	setting - underscore, 4 chars of count, 4 chars of salt
+     *	key - unlimited characters
+     */
+    for (i = 1, count = 0; i < 5; i++) {
+      uint32_t value = ascii_to_bin(setting[i]);
+      if (ascii64[value] != setting[i])
+        return NULL;
+      count |= value << (i - 1) * 6;
+    }
+    if (!count)
+      return NULL;
 
-		for (i = 5, salt = 0; i < 9; i++) {
-			uint32_t value = ascii_to_bin(setting[i]);
-			if (ascii64[value] != setting[i])
-				return NULL;
-			salt |= value << (i - 5) * 6;
-		}
+    for (i = 5, salt = 0; i < 9; i++) {
+      uint32_t value = ascii_to_bin(setting[i]);
+      if (ascii64[value] != setting[i])
+        return NULL;
+      salt |= value << (i - 5) * 6;
+    }
 
-		while (*key) {
-			/*
-			 * Encrypt the key with itself.
-			 */
-			des_cipher(keybuf, keybuf, 1, 0, &ekey);
-			/*
-			 * And XOR with the next 8 characters of the key.
-			 */
-			q = keybuf;
-			while (q <= &keybuf[sizeof(keybuf) - 1] && *key)
-				*q++ ^= *key++ << 1;
-			__des_setkey(keybuf, &ekey);
-		}
+    while (*key) {
+      /*
+       * Encrypt the key with itself.
+       */
+      des_cipher(keybuf, keybuf, 1, 0, &ekey);
+      /*
+       * And XOR with the next 8 characters of the key.
+       */
+      q = keybuf;
+      while (q <= &keybuf[sizeof(keybuf) - 1] && *key)
+        *q++ ^= *key++ << 1;
+      __des_setkey(keybuf, &ekey);
+    }
 
-		memcpy(output, setting, 9);
-		output[9] = '\0';
-		p = (unsigned char *)output + 9;
-	} else {
-		/*
-		 * "old"-style:
-		 *	setting - 2 chars of salt
-		 *	key - up to 8 characters
-		 */
-		count = 25;
+    memcpy(output, setting, 9);
+    output[9] = '\0';
+    p = (unsigned char*)output + 9;
+  } else {
+    /*
+     * "old"-style:
+     *	setting - 2 chars of salt
+     *	key - up to 8 characters
+     */
+    count = 25;
 
-		if (ascii_is_unsafe(setting[0]) || ascii_is_unsafe(setting[1]))
-			return NULL;
+    if (ascii_is_unsafe(setting[0]) || ascii_is_unsafe(setting[1]))
+      return NULL;
 
-		salt = (ascii_to_bin(setting[1]) << 6)
-		     |  ascii_to_bin(setting[0]);
+    salt = (ascii_to_bin(setting[1]) << 6) | ascii_to_bin(setting[0]);
 
-		output[0] = setting[0];
-		output[1] = setting[1];
-		p = (unsigned char *)output + 2;
-	}
+    output[0] = setting[0];
+    output[1] = setting[1];
+    p = (unsigned char*)output + 2;
+  }
 
-	/*
-	 * Do it.
-	 */
-	__do_des(0, 0, &r0, &r1, count, setup_salt(salt), &ekey);
+  /*
+   * Do it.
+   */
+  __do_des(0, 0, &r0, &r1, count, setup_salt(salt), &ekey);
 
-	/*
-	 * Now encode the result...
-	 */
-	l = (r0 >> 8);
-	*p++ = ascii64[(l >> 18) & 0x3f];
-	*p++ = ascii64[(l >> 12) & 0x3f];
-	*p++ = ascii64[(l >> 6) & 0x3f];
-	*p++ = ascii64[l & 0x3f];
+  /*
+   * Now encode the result...
+   */
+  l = (r0 >> 8);
+  *p++ = ascii64[(l >> 18) & 0x3f];
+  *p++ = ascii64[(l >> 12) & 0x3f];
+  *p++ = ascii64[(l >> 6) & 0x3f];
+  *p++ = ascii64[l & 0x3f];
 
-	l = (r0 << 16) | ((r1 >> 16) & 0xffff);
-	*p++ = ascii64[(l >> 18) & 0x3f];
-	*p++ = ascii64[(l >> 12) & 0x3f];
-	*p++ = ascii64[(l >> 6) & 0x3f];
-	*p++ = ascii64[l & 0x3f];
+  l = (r0 << 16) | ((r1 >> 16) & 0xffff);
+  *p++ = ascii64[(l >> 18) & 0x3f];
+  *p++ = ascii64[(l >> 12) & 0x3f];
+  *p++ = ascii64[(l >> 6) & 0x3f];
+  *p++ = ascii64[l & 0x3f];
 
-	l = r1 << 2;
-	*p++ = ascii64[(l >> 12) & 0x3f];
-	*p++ = ascii64[(l >> 6) & 0x3f];
-	*p++ = ascii64[l & 0x3f];
-	*p = 0;
+  l = r1 << 2;
+  *p++ = ascii64[(l >> 12) & 0x3f];
+  *p++ = ascii64[(l >> 6) & 0x3f];
+  *p++ = ascii64[l & 0x3f];
+  *p = 0;
 
-	return output;
+  return output;
 }
 
-char *__crypt_des(const char *key, const char *setting, char *output)
-{
-	const char *test_key = "\x80\xff\x80\x01 "
-	    "\x7f\x81\x80\x80\x0d\x0a\xff\x7f \x81 test";
-	const char *test_setting = "_0.../9Zz";
-	const char *test_hash = "_0.../9ZzX7iSJNd21sU";
-	char test_buf[21];
-	char *retval;
-	const char *p;
+char* __crypt_des(const char* key, const char* setting, char* output) {
+  const char* test_key =
+      "\x80\xff\x80\x01 "
+      "\x7f\x81\x80\x80\x0d\x0a\xff\x7f \x81 test";
+  const char* test_setting = "_0.../9Zz";
+  const char* test_hash = "_0.../9ZzX7iSJNd21sU";
+  char test_buf[21];
+  char* retval;
+  const char* p;
 
-	if (*setting != _PASSWORD_EFMT1) {
-		test_setting = "\x80x";
-		test_hash = "\x80x22/wK52ZKGA";
-	}
+  if (*setting != _PASSWORD_EFMT1) {
+    test_setting = "\x80x";
+    test_hash = "\x80x22/wK52ZKGA";
+  }
 
-	/*
-	 * Hash the supplied password.
-	 */
-	retval = _crypt_extended_r_uut(key, setting, output);
+  /*
+   * Hash the supplied password.
+   */
+  retval = _crypt_extended_r_uut(key, setting, output);
 
-	/*
-	 * Perform a quick self-test.  It is important that we make both calls
-	 * to _crypt_extended_r_uut() from the same scope such that they likely
-	 * use the same stack locations, which makes the second call overwrite
-	 * the first call's sensitive data on the stack and makes it more
-	 * likely that any alignment related issues would be detected.
-	 */
-	p = _crypt_extended_r_uut(test_key, test_setting, test_buf);
-	if (p && !strcmp(p, test_hash) && retval)
-		return retval;
+  /*
+   * Perform a quick self-test.  It is important that we make both calls
+   * to _crypt_extended_r_uut() from the same scope such that they likely
+   * use the same stack locations, which makes the second call overwrite
+   * the first call's sensitive data on the stack and makes it more
+   * likely that any alignment related issues would be detected.
+   */
+  p = _crypt_extended_r_uut(test_key, test_setting, test_buf);
+  if (p && !strcmp(p, test_hash) && retval)
+    return retval;
 
-	return (setting[0]=='*') ? "x" : "*";
+  return (setting[0] == '*') ? "x" : "*";
 }
diff --git a/fusl/src/crypt/crypt_md5.c b/fusl/src/crypt/crypt_md5.c
index 6e75b36..58bf09d 100644
--- a/fusl/src/crypt/crypt_md5.c
+++ b/fusl/src/crypt/crypt_md5.c
@@ -12,144 +12,167 @@
 /* public domain md5 implementation based on rfc1321 and libtomcrypt */
 
 struct md5 {
-	uint64_t len;    /* processed message length */
-	uint32_t h[4];   /* hash state */
-	uint8_t buf[64]; /* message block buffer */
+  uint64_t len;    /* processed message length */
+  uint32_t h[4];   /* hash state */
+  uint8_t buf[64]; /* message block buffer */
 };
 
-static uint32_t rol(uint32_t n, int k) { return (n << k) | (n >> (32-k)); }
-#define F(x,y,z) (z ^ (x & (y ^ z)))
-#define G(x,y,z) (y ^ (z & (y ^ x)))
-#define H(x,y,z) (x ^ y ^ z)
-#define I(x,y,z) (y ^ (x | ~z))
-#define FF(a,b,c,d,w,s,t) a += F(b,c,d) + w + t; a = rol(a,s) + b
-#define GG(a,b,c,d,w,s,t) a += G(b,c,d) + w + t; a = rol(a,s) + b
-#define HH(a,b,c,d,w,s,t) a += H(b,c,d) + w + t; a = rol(a,s) + b
-#define II(a,b,c,d,w,s,t) a += I(b,c,d) + w + t; a = rol(a,s) + b
+static uint32_t rol(uint32_t n, int k) {
+  return (n << k) | (n >> (32 - k));
+}
+#define F(x, y, z) (z ^ (x & (y ^ z)))
+#define G(x, y, z) (y ^ (z & (y ^ x)))
+#define H(x, y, z) (x ^ y ^ z)
+#define I(x, y, z) (y ^ (x | ~z))
+#define FF(a, b, c, d, w, s, t) \
+  a += F(b, c, d) + w + t;      \
+  a = rol(a, s) + b
+#define GG(a, b, c, d, w, s, t) \
+  a += G(b, c, d) + w + t;      \
+  a = rol(a, s) + b
+#define HH(a, b, c, d, w, s, t) \
+  a += H(b, c, d) + w + t;      \
+  a = rol(a, s) + b
+#define II(a, b, c, d, w, s, t) \
+  a += I(b, c, d) + w + t;      \
+  a = rol(a, s) + b
 
 static const uint32_t tab[64] = {
-0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501,
-0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be, 0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821,
-0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,
-0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a,
-0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c, 0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70,
-0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
-0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1,
-0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1, 0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391
-};
+    0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee, 0xf57c0faf, 0x4787c62a,
+    0xa8304613, 0xfd469501, 0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be,
+    0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821, 0xf61e2562, 0xc040b340,
+    0x265e5a51, 0xe9b6c7aa, 0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8,
+    0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed, 0xa9e3e905, 0xfcefa3f8,
+    0x676f02d9, 0x8d2a4c8a, 0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c,
+    0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70, 0x289b7ec6, 0xeaa127fa,
+    0xd4ef3085, 0x04881d05, 0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665,
+    0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039, 0x655b59c3, 0x8f0ccc92,
+    0xffeff47d, 0x85845dd1, 0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1,
+    0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391};
 
-static void processblock(struct md5 *s, const uint8_t *buf)
-{
-	uint32_t i, W[16], a, b, c, d;
+static void processblock(struct md5* s, const uint8_t* buf) {
+  uint32_t i, W[16], a, b, c, d;
 
-	for (i = 0; i < 16; i++) {
-		W[i] = buf[4*i];
-		W[i] |= (uint32_t)buf[4*i+1]<<8;
-		W[i] |= (uint32_t)buf[4*i+2]<<16;
-		W[i] |= (uint32_t)buf[4*i+3]<<24;
-	}
+  for (i = 0; i < 16; i++) {
+    W[i] = buf[4 * i];
+    W[i] |= (uint32_t)buf[4 * i + 1] << 8;
+    W[i] |= (uint32_t)buf[4 * i + 2] << 16;
+    W[i] |= (uint32_t)buf[4 * i + 3] << 24;
+  }
 
-	a = s->h[0];
-	b = s->h[1];
-	c = s->h[2];
-	d = s->h[3];
+  a = s->h[0];
+  b = s->h[1];
+  c = s->h[2];
+  d = s->h[3];
 
-	i = 0;
-	while (i < 16) {
-		FF(a,b,c,d, W[i],  7, tab[i]); i++;
-		FF(d,a,b,c, W[i], 12, tab[i]); i++;
-		FF(c,d,a,b, W[i], 17, tab[i]); i++;
-		FF(b,c,d,a, W[i], 22, tab[i]); i++;
-	}
-	while (i < 32) {
-		GG(a,b,c,d, W[(5*i+1)%16],  5, tab[i]); i++;
-		GG(d,a,b,c, W[(5*i+1)%16],  9, tab[i]); i++;
-		GG(c,d,a,b, W[(5*i+1)%16], 14, tab[i]); i++;
-		GG(b,c,d,a, W[(5*i+1)%16], 20, tab[i]); i++;
-	}
-	while (i < 48) {
-		HH(a,b,c,d, W[(3*i+5)%16],  4, tab[i]); i++;
-		HH(d,a,b,c, W[(3*i+5)%16], 11, tab[i]); i++;
-		HH(c,d,a,b, W[(3*i+5)%16], 16, tab[i]); i++;
-		HH(b,c,d,a, W[(3*i+5)%16], 23, tab[i]); i++;
-	}
-	while (i < 64) {
-		II(a,b,c,d, W[7*i%16],  6, tab[i]); i++;
-		II(d,a,b,c, W[7*i%16], 10, tab[i]); i++;
-		II(c,d,a,b, W[7*i%16], 15, tab[i]); i++;
-		II(b,c,d,a, W[7*i%16], 21, tab[i]); i++;
-	}
+  i = 0;
+  while (i < 16) {
+    FF(a, b, c, d, W[i], 7, tab[i]);
+    i++;
+    FF(d, a, b, c, W[i], 12, tab[i]);
+    i++;
+    FF(c, d, a, b, W[i], 17, tab[i]);
+    i++;
+    FF(b, c, d, a, W[i], 22, tab[i]);
+    i++;
+  }
+  while (i < 32) {
+    GG(a, b, c, d, W[(5 * i + 1) % 16], 5, tab[i]);
+    i++;
+    GG(d, a, b, c, W[(5 * i + 1) % 16], 9, tab[i]);
+    i++;
+    GG(c, d, a, b, W[(5 * i + 1) % 16], 14, tab[i]);
+    i++;
+    GG(b, c, d, a, W[(5 * i + 1) % 16], 20, tab[i]);
+    i++;
+  }
+  while (i < 48) {
+    HH(a, b, c, d, W[(3 * i + 5) % 16], 4, tab[i]);
+    i++;
+    HH(d, a, b, c, W[(3 * i + 5) % 16], 11, tab[i]);
+    i++;
+    HH(c, d, a, b, W[(3 * i + 5) % 16], 16, tab[i]);
+    i++;
+    HH(b, c, d, a, W[(3 * i + 5) % 16], 23, tab[i]);
+    i++;
+  }
+  while (i < 64) {
+    II(a, b, c, d, W[7 * i % 16], 6, tab[i]);
+    i++;
+    II(d, a, b, c, W[7 * i % 16], 10, tab[i]);
+    i++;
+    II(c, d, a, b, W[7 * i % 16], 15, tab[i]);
+    i++;
+    II(b, c, d, a, W[7 * i % 16], 21, tab[i]);
+    i++;
+  }
 
-	s->h[0] += a;
-	s->h[1] += b;
-	s->h[2] += c;
-	s->h[3] += d;
+  s->h[0] += a;
+  s->h[1] += b;
+  s->h[2] += c;
+  s->h[3] += d;
 }
 
-static void pad(struct md5 *s)
-{
-	unsigned r = s->len % 64;
+static void pad(struct md5* s) {
+  unsigned r = s->len % 64;
 
-	s->buf[r++] = 0x80;
-	if (r > 56) {
-		memset(s->buf + r, 0, 64 - r);
-		r = 0;
-		processblock(s, s->buf);
-	}
-	memset(s->buf + r, 0, 56 - r);
-	s->len *= 8;
-	s->buf[56] = s->len;
-	s->buf[57] = s->len >> 8;
-	s->buf[58] = s->len >> 16;
-	s->buf[59] = s->len >> 24;
-	s->buf[60] = s->len >> 32;
-	s->buf[61] = s->len >> 40;
-	s->buf[62] = s->len >> 48;
-	s->buf[63] = s->len >> 56;
-	processblock(s, s->buf);
+  s->buf[r++] = 0x80;
+  if (r > 56) {
+    memset(s->buf + r, 0, 64 - r);
+    r = 0;
+    processblock(s, s->buf);
+  }
+  memset(s->buf + r, 0, 56 - r);
+  s->len *= 8;
+  s->buf[56] = s->len;
+  s->buf[57] = s->len >> 8;
+  s->buf[58] = s->len >> 16;
+  s->buf[59] = s->len >> 24;
+  s->buf[60] = s->len >> 32;
+  s->buf[61] = s->len >> 40;
+  s->buf[62] = s->len >> 48;
+  s->buf[63] = s->len >> 56;
+  processblock(s, s->buf);
 }
 
-static void md5_init(struct md5 *s)
-{
-	s->len = 0;
-	s->h[0] = 0x67452301;
-	s->h[1] = 0xefcdab89;
-	s->h[2] = 0x98badcfe;
-	s->h[3] = 0x10325476;
+static void md5_init(struct md5* s) {
+  s->len = 0;
+  s->h[0] = 0x67452301;
+  s->h[1] = 0xefcdab89;
+  s->h[2] = 0x98badcfe;
+  s->h[3] = 0x10325476;
 }
 
-static void md5_sum(struct md5 *s, uint8_t *md)
-{
-	int i;
+static void md5_sum(struct md5* s, uint8_t* md) {
+  int i;
 
-	pad(s);
-	for (i = 0; i < 4; i++) {
-		md[4*i] = s->h[i];
-		md[4*i+1] = s->h[i] >> 8;
-		md[4*i+2] = s->h[i] >> 16;
-		md[4*i+3] = s->h[i] >> 24;
-	}
+  pad(s);
+  for (i = 0; i < 4; i++) {
+    md[4 * i] = s->h[i];
+    md[4 * i + 1] = s->h[i] >> 8;
+    md[4 * i + 2] = s->h[i] >> 16;
+    md[4 * i + 3] = s->h[i] >> 24;
+  }
 }
 
-static void md5_update(struct md5 *s, const void *m, unsigned long len)
-{
-	const uint8_t *p = m;
-	unsigned r = s->len % 64;
+static void md5_update(struct md5* s, const void* m, unsigned long len) {
+  const uint8_t* p = m;
+  unsigned r = s->len % 64;
 
-	s->len += len;
-	if (r) {
-		if (len < 64 - r) {
-			memcpy(s->buf + r, p, len);
-			return;
-		}
-		memcpy(s->buf + r, p, 64 - r);
-		len -= 64 - r;
-		p += 64 - r;
-		processblock(s, s->buf);
-	}
-	for (; len >= 64; len -= 64, p += 64)
-		processblock(s, p);
-	memcpy(s->buf, p, len);
+  s->len += len;
+  if (r) {
+    if (len < 64 - r) {
+      memcpy(s->buf + r, p, len);
+      return;
+    }
+    memcpy(s->buf + r, p, 64 - r);
+    len -= 64 - r;
+    p += 64 - r;
+    processblock(s, s->buf);
+  }
+  for (; len >= 64; len -= 64, p += 64)
+    processblock(s, p);
+  memcpy(s->buf, p, len);
 }
 
 /*-
@@ -183,103 +206,102 @@
 #define SALT_MAX 8
 
 static const unsigned char b64[] =
-"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+    "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 
-static char *to64(char *s, unsigned int u, int n)
-{
-	while (--n >= 0) {
-		*s++ = b64[u % 64];
-		u /= 64;
-	}
-	return s;
+static char* to64(char* s, unsigned int u, int n) {
+  while (--n >= 0) {
+    *s++ = b64[u % 64];
+    u /= 64;
+  }
+  return s;
 }
 
-static char *md5crypt(const char *key, const char *setting, char *output)
-{
-	struct md5 ctx;
-	unsigned char md[16];
-	unsigned int i, klen, slen;
-	const char *salt;
-	char *p;
+static char* md5crypt(const char* key, const char* setting, char* output) {
+  struct md5 ctx;
+  unsigned char md[16];
+  unsigned int i, klen, slen;
+  const char* salt;
+  char* p;
 
-	/* reject large keys */
-	klen = strnlen(key, KEY_MAX+1);
-	if (klen > KEY_MAX)
-		return 0;
+  /* reject large keys */
+  klen = strnlen(key, KEY_MAX + 1);
+  if (klen > KEY_MAX)
+    return 0;
 
-	/* setting: $1$salt$ (closing $ is optional) */
-	if (strncmp(setting, "$1$", 3) != 0)
-		return 0;
-	salt = setting + 3;
-	for (i = 0; i < SALT_MAX && salt[i] && salt[i] != '$'; i++);
-	slen = i;
+  /* setting: $1$salt$ (closing $ is optional) */
+  if (strncmp(setting, "$1$", 3) != 0)
+    return 0;
+  salt = setting + 3;
+  for (i = 0; i < SALT_MAX && salt[i] && salt[i] != '$'; i++)
+    ;
+  slen = i;
 
-	/* md5(key salt key) */
-	md5_init(&ctx);
-	md5_update(&ctx, key, klen);
-	md5_update(&ctx, salt, slen);
-	md5_update(&ctx, key, klen);
-	md5_sum(&ctx, md);
+  /* md5(key salt key) */
+  md5_init(&ctx);
+  md5_update(&ctx, key, klen);
+  md5_update(&ctx, salt, slen);
+  md5_update(&ctx, key, klen);
+  md5_sum(&ctx, md);
 
-	/* md5(key $1$ salt repeated-md weird-key[0]-0) */
-	md5_init(&ctx);
-	md5_update(&ctx, key, klen);
-	md5_update(&ctx, setting, 3 + slen);
-	for (i = klen; i > sizeof md; i -= sizeof md)
-		md5_update(&ctx, md, sizeof md);
-	md5_update(&ctx, md, i);
-	md[0] = 0;
-	for (i = klen; i; i >>= 1)
-		if (i & 1)
-			md5_update(&ctx, md, 1);
-		else
-			md5_update(&ctx, key, 1);
-	md5_sum(&ctx, md);
+  /* md5(key $1$ salt repeated-md weird-key[0]-0) */
+  md5_init(&ctx);
+  md5_update(&ctx, key, klen);
+  md5_update(&ctx, setting, 3 + slen);
+  for (i = klen; i > sizeof md; i -= sizeof md)
+    md5_update(&ctx, md, sizeof md);
+  md5_update(&ctx, md, i);
+  md[0] = 0;
+  for (i = klen; i; i >>= 1)
+    if (i & 1)
+      md5_update(&ctx, md, 1);
+    else
+      md5_update(&ctx, key, 1);
+  md5_sum(&ctx, md);
 
-	/* md = f(md, key, salt) iteration */
-	for (i = 0; i < 1000; i++) {
-		md5_init(&ctx);
-		if (i % 2)
-			md5_update(&ctx, key, klen);
-		else
-			md5_update(&ctx, md, sizeof md);
-		if (i % 3)
-			md5_update(&ctx, salt, slen);
-		if (i % 7)
-			md5_update(&ctx, key, klen);
-		if (i % 2)
-			md5_update(&ctx, md, sizeof md);
-		else
-			md5_update(&ctx, key, klen);
-		md5_sum(&ctx, md);
-	}
+  /* md = f(md, key, salt) iteration */
+  for (i = 0; i < 1000; i++) {
+    md5_init(&ctx);
+    if (i % 2)
+      md5_update(&ctx, key, klen);
+    else
+      md5_update(&ctx, md, sizeof md);
+    if (i % 3)
+      md5_update(&ctx, salt, slen);
+    if (i % 7)
+      md5_update(&ctx, key, klen);
+    if (i % 2)
+      md5_update(&ctx, md, sizeof md);
+    else
+      md5_update(&ctx, key, klen);
+    md5_sum(&ctx, md);
+  }
 
-	/* output is $1$salt$hash */
-	memcpy(output, setting, 3 + slen);
-	p = output + 3 + slen;
-	*p++ = '$';
-	static const unsigned char perm[][3] = {
-		0,6,12,1,7,13,2,8,14,3,9,15,4,10,5 };
-	for (i=0; i<5; i++) p = to64(p,
-		(md[perm[i][0]]<<16)|(md[perm[i][1]]<<8)|md[perm[i][2]], 4);
-	p = to64(p, md[11], 2);
-	*p = 0;
+  /* output is $1$salt$hash */
+  memcpy(output, setting, 3 + slen);
+  p = output + 3 + slen;
+  *p++ = '$';
+  static const unsigned char perm[][3] = {0,  6, 12, 1,  7, 13, 2, 8,
+                                          14, 3, 9,  15, 4, 10, 5};
+  for (i = 0; i < 5; i++)
+    p = to64(p, (md[perm[i][0]] << 16) | (md[perm[i][1]] << 8) | md[perm[i][2]],
+             4);
+  p = to64(p, md[11], 2);
+  *p = 0;
 
-	return output;
+  return output;
 }
 
-char *__crypt_md5(const char *key, const char *setting, char *output)
-{
-	static const char testkey[] = "Xy01@#\x01\x02\x80\x7f\xff\r\n\x81\t !";
-	static const char testsetting[] = "$1$abcd0123$";
-	static const char testhash[] = "$1$abcd0123$9Qcg8DyviekV3tDGMZynJ1";
-	char testbuf[64];
-	char *p, *q;
+char* __crypt_md5(const char* key, const char* setting, char* output) {
+  static const char testkey[] = "Xy01@#\x01\x02\x80\x7f\xff\r\n\x81\t !";
+  static const char testsetting[] = "$1$abcd0123$";
+  static const char testhash[] = "$1$abcd0123$9Qcg8DyviekV3tDGMZynJ1";
+  char testbuf[64];
+  char *p, *q;
 
-	p = md5crypt(key, setting, output);
-	/* self test and stack cleanup */
-	q = md5crypt(testkey, testsetting, testbuf);
-	if (!p || q != testbuf || memcmp(testbuf, testhash, sizeof testhash))
-		return "*";
-	return p;
+  p = md5crypt(key, setting, output);
+  /* self test and stack cleanup */
+  q = md5crypt(testkey, testsetting, testbuf);
+  if (!p || q != testbuf || memcmp(testbuf, testhash, sizeof testhash))
+    return "*";
+  return p;
 }
diff --git a/fusl/src/crypt/crypt_r.c b/fusl/src/crypt/crypt_r.c
index 5982c4c..d7663e3 100644
--- a/fusl/src/crypt/crypt_r.c
+++ b/fusl/src/crypt/crypt_r.c
@@ -3,30 +3,29 @@
 
 struct crypt_data;
 
-char *__crypt_des(const char *, const char *, char *);
-char *__crypt_md5(const char *, const char *, char *);
-char *__crypt_blowfish(const char *, const char *, char *);
-char *__crypt_sha256(const char *, const char *, char *);
-char *__crypt_sha512(const char *, const char *, char *);
+char* __crypt_des(const char*, const char*, char*);
+char* __crypt_md5(const char*, const char*, char*);
+char* __crypt_blowfish(const char*, const char*, char*);
+char* __crypt_sha256(const char*, const char*, char*);
+char* __crypt_sha512(const char*, const char*, char*);
 
-char *__crypt_r(const char *key, const char *salt, struct crypt_data *data)
-{
-	/* Per the crypt_r API, the caller has provided a pointer to
-	 * struct crypt_data; however, this implementation does not
-	 * use the structure to store any internal state, and treats
-	 * it purely as a char buffer for storing the result. */
-	char *output = (char *)data;
-	if (salt[0] == '$' && salt[1] && salt[2]) {
-		if (salt[1] == '1' && salt[2] == '$')
-			return __crypt_md5(key, salt, output);
-		if (salt[1] == '2' && salt[3] == '$')
-			return __crypt_blowfish(key, salt, output);
-		if (salt[1] == '5' && salt[2] == '$')
-			return __crypt_sha256(key, salt, output);
-		if (salt[1] == '6' && salt[2] == '$')
-			return __crypt_sha512(key, salt, output);
-	}
-	return __crypt_des(key, salt, output);
+char* __crypt_r(const char* key, const char* salt, struct crypt_data* data) {
+  /* Per the crypt_r API, the caller has provided a pointer to
+   * struct crypt_data; however, this implementation does not
+   * use the structure to store any internal state, and treats
+   * it purely as a char buffer for storing the result. */
+  char* output = (char*)data;
+  if (salt[0] == '$' && salt[1] && salt[2]) {
+    if (salt[1] == '1' && salt[2] == '$')
+      return __crypt_md5(key, salt, output);
+    if (salt[1] == '2' && salt[3] == '$')
+      return __crypt_blowfish(key, salt, output);
+    if (salt[1] == '5' && salt[2] == '$')
+      return __crypt_sha256(key, salt, output);
+    if (salt[1] == '6' && salt[2] == '$')
+      return __crypt_sha512(key, salt, output);
+  }
+  return __crypt_des(key, salt, output);
 }
 
 weak_alias(__crypt_r, crypt_r);
diff --git a/fusl/src/crypt/crypt_sha256.c b/fusl/src/crypt/crypt_sha256.c
index d5f0b78..b71c3cb 100644
--- a/fusl/src/crypt/crypt_sha256.c
+++ b/fusl/src/crypt/crypt_sha256.c
@@ -16,153 +16,151 @@
 /* public domain sha256 implementation based on fips180-3 */
 
 struct sha256 {
-	uint64_t len;    /* processed message length */
-	uint32_t h[8];   /* hash state */
-	uint8_t buf[64]; /* message block buffer */
+  uint64_t len;    /* processed message length */
+  uint32_t h[8];   /* hash state */
+  uint8_t buf[64]; /* message block buffer */
 };
 
-static uint32_t ror(uint32_t n, int k) { return (n >> k) | (n << (32-k)); }
-#define Ch(x,y,z)  (z ^ (x & (y ^ z)))
-#define Maj(x,y,z) ((x & y) | (z & (x | y)))
-#define S0(x)      (ror(x,2) ^ ror(x,13) ^ ror(x,22))
-#define S1(x)      (ror(x,6) ^ ror(x,11) ^ ror(x,25))
-#define R0(x)      (ror(x,7) ^ ror(x,18) ^ (x>>3))
-#define R1(x)      (ror(x,17) ^ ror(x,19) ^ (x>>10))
+static uint32_t ror(uint32_t n, int k) {
+  return (n >> k) | (n << (32 - k));
+}
+#define Ch(x, y, z) (z ^ (x & (y ^ z)))
+#define Maj(x, y, z) ((x & y) | (z & (x | y)))
+#define S0(x) (ror(x, 2) ^ ror(x, 13) ^ ror(x, 22))
+#define S1(x) (ror(x, 6) ^ ror(x, 11) ^ ror(x, 25))
+#define R0(x) (ror(x, 7) ^ ror(x, 18) ^ (x >> 3))
+#define R1(x) (ror(x, 17) ^ ror(x, 19) ^ (x >> 10))
 
 static const uint32_t K[64] = {
-0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,
-0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,
-0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
-0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,
-0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,
-0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
-0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,
-0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2
-};
+    0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1,
+    0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,
+    0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786,
+    0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,
+    0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,
+    0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,
+    0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b,
+    0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,
+    0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a,
+    0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,
+    0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2};
 
-static void processblock(struct sha256 *s, const uint8_t *buf)
-{
-	uint32_t W[64], t1, t2, a, b, c, d, e, f, g, h;
-	int i;
+static void processblock(struct sha256* s, const uint8_t* buf) {
+  uint32_t W[64], t1, t2, a, b, c, d, e, f, g, h;
+  int i;
 
-	for (i = 0; i < 16; i++) {
-		W[i] = (uint32_t)buf[4*i]<<24;
-		W[i] |= (uint32_t)buf[4*i+1]<<16;
-		W[i] |= (uint32_t)buf[4*i+2]<<8;
-		W[i] |= buf[4*i+3];
-	}
-	for (; i < 64; i++)
-		W[i] = R1(W[i-2]) + W[i-7] + R0(W[i-15]) + W[i-16];
-	a = s->h[0];
-	b = s->h[1];
-	c = s->h[2];
-	d = s->h[3];
-	e = s->h[4];
-	f = s->h[5];
-	g = s->h[6];
-	h = s->h[7];
-	for (i = 0; i < 64; i++) {
-		t1 = h + S1(e) + Ch(e,f,g) + K[i] + W[i];
-		t2 = S0(a) + Maj(a,b,c);
-		h = g;
-		g = f;
-		f = e;
-		e = d + t1;
-		d = c;
-		c = b;
-		b = a;
-		a = t1 + t2;
-	}
-	s->h[0] += a;
-	s->h[1] += b;
-	s->h[2] += c;
-	s->h[3] += d;
-	s->h[4] += e;
-	s->h[5] += f;
-	s->h[6] += g;
-	s->h[7] += h;
+  for (i = 0; i < 16; i++) {
+    W[i] = (uint32_t)buf[4 * i] << 24;
+    W[i] |= (uint32_t)buf[4 * i + 1] << 16;
+    W[i] |= (uint32_t)buf[4 * i + 2] << 8;
+    W[i] |= buf[4 * i + 3];
+  }
+  for (; i < 64; i++)
+    W[i] = R1(W[i - 2]) + W[i - 7] + R0(W[i - 15]) + W[i - 16];
+  a = s->h[0];
+  b = s->h[1];
+  c = s->h[2];
+  d = s->h[3];
+  e = s->h[4];
+  f = s->h[5];
+  g = s->h[6];
+  h = s->h[7];
+  for (i = 0; i < 64; i++) {
+    t1 = h + S1(e) + Ch(e, f, g) + K[i] + W[i];
+    t2 = S0(a) + Maj(a, b, c);
+    h = g;
+    g = f;
+    f = e;
+    e = d + t1;
+    d = c;
+    c = b;
+    b = a;
+    a = t1 + t2;
+  }
+  s->h[0] += a;
+  s->h[1] += b;
+  s->h[2] += c;
+  s->h[3] += d;
+  s->h[4] += e;
+  s->h[5] += f;
+  s->h[6] += g;
+  s->h[7] += h;
 }
 
-static void pad(struct sha256 *s)
-{
-	unsigned r = s->len % 64;
+static void pad(struct sha256* s) {
+  unsigned r = s->len % 64;
 
-	s->buf[r++] = 0x80;
-	if (r > 56) {
-		memset(s->buf + r, 0, 64 - r);
-		r = 0;
-		processblock(s, s->buf);
-	}
-	memset(s->buf + r, 0, 56 - r);
-	s->len *= 8;
-	s->buf[56] = s->len >> 56;
-	s->buf[57] = s->len >> 48;
-	s->buf[58] = s->len >> 40;
-	s->buf[59] = s->len >> 32;
-	s->buf[60] = s->len >> 24;
-	s->buf[61] = s->len >> 16;
-	s->buf[62] = s->len >> 8;
-	s->buf[63] = s->len;
-	processblock(s, s->buf);
+  s->buf[r++] = 0x80;
+  if (r > 56) {
+    memset(s->buf + r, 0, 64 - r);
+    r = 0;
+    processblock(s, s->buf);
+  }
+  memset(s->buf + r, 0, 56 - r);
+  s->len *= 8;
+  s->buf[56] = s->len >> 56;
+  s->buf[57] = s->len >> 48;
+  s->buf[58] = s->len >> 40;
+  s->buf[59] = s->len >> 32;
+  s->buf[60] = s->len >> 24;
+  s->buf[61] = s->len >> 16;
+  s->buf[62] = s->len >> 8;
+  s->buf[63] = s->len;
+  processblock(s, s->buf);
 }
 
-static void sha256_init(struct sha256 *s)
-{
-	s->len = 0;
-	s->h[0] = 0x6a09e667;
-	s->h[1] = 0xbb67ae85;
-	s->h[2] = 0x3c6ef372;
-	s->h[3] = 0xa54ff53a;
-	s->h[4] = 0x510e527f;
-	s->h[5] = 0x9b05688c;
-	s->h[6] = 0x1f83d9ab;
-	s->h[7] = 0x5be0cd19;
+static void sha256_init(struct sha256* s) {
+  s->len = 0;
+  s->h[0] = 0x6a09e667;
+  s->h[1] = 0xbb67ae85;
+  s->h[2] = 0x3c6ef372;
+  s->h[3] = 0xa54ff53a;
+  s->h[4] = 0x510e527f;
+  s->h[5] = 0x9b05688c;
+  s->h[6] = 0x1f83d9ab;
+  s->h[7] = 0x5be0cd19;
 }
 
-static void sha256_sum(struct sha256 *s, uint8_t *md)
-{
-	int i;
+static void sha256_sum(struct sha256* s, uint8_t* md) {
+  int i;
 
-	pad(s);
-	for (i = 0; i < 8; i++) {
-		md[4*i] = s->h[i] >> 24;
-		md[4*i+1] = s->h[i] >> 16;
-		md[4*i+2] = s->h[i] >> 8;
-		md[4*i+3] = s->h[i];
-	}
+  pad(s);
+  for (i = 0; i < 8; i++) {
+    md[4 * i] = s->h[i] >> 24;
+    md[4 * i + 1] = s->h[i] >> 16;
+    md[4 * i + 2] = s->h[i] >> 8;
+    md[4 * i + 3] = s->h[i];
+  }
 }
 
-static void sha256_update(struct sha256 *s, const void *m, unsigned long len)
-{
-	const uint8_t *p = m;
-	unsigned r = s->len % 64;
+static void sha256_update(struct sha256* s, const void* m, unsigned long len) {
+  const uint8_t* p = m;
+  unsigned r = s->len % 64;
 
-	s->len += len;
-	if (r) {
-		if (len < 64 - r) {
-			memcpy(s->buf + r, p, len);
-			return;
-		}
-		memcpy(s->buf + r, p, 64 - r);
-		len -= 64 - r;
-		p += 64 - r;
-		processblock(s, s->buf);
-	}
-	for (; len >= 64; len -= 64, p += 64)
-		processblock(s, p);
-	memcpy(s->buf, p, len);
+  s->len += len;
+  if (r) {
+    if (len < 64 - r) {
+      memcpy(s->buf + r, p, len);
+      return;
+    }
+    memcpy(s->buf + r, p, 64 - r);
+    len -= 64 - r;
+    p += 64 - r;
+    processblock(s, s->buf);
+  }
+  for (; len >= 64; len -= 64, p += 64)
+    processblock(s, p);
+  memcpy(s->buf, p, len);
 }
 
 static const unsigned char b64[] =
-"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+    "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 
-static char *to64(char *s, unsigned int u, int n)
-{
-	while (--n >= 0) {
-		*s++ = b64[u % 64];
-		u /= 64;
-	}
-	return s;
+static char* to64(char* s, unsigned int u, int n) {
+  while (--n >= 0) {
+    *s++ = b64[u % 64];
+    u /= 64;
+  }
+  return s;
 }
 
 /* key limit is not part of the original design, added for DoS protection.
@@ -175,148 +173,148 @@
 #define ROUNDS_MAX 9999999
 
 /* hash n bytes of the repeated md message digest */
-static void hashmd(struct sha256 *s, unsigned int n, const void *md)
-{
-	unsigned int i;
+static void hashmd(struct sha256* s, unsigned int n, const void* md) {
+  unsigned int i;
 
-	for (i = n; i > 32; i -= 32)
-		sha256_update(s, md, 32);
-	sha256_update(s, md, i);
+  for (i = n; i > 32; i -= 32)
+    sha256_update(s, md, 32);
+  sha256_update(s, md, i);
 }
 
-static char *sha256crypt(const char *key, const char *setting, char *output)
-{
-	struct sha256 ctx;
-	unsigned char md[32], kmd[32], smd[32];
-	unsigned int i, r, klen, slen;
-	char rounds[20] = "";
-	const char *salt;
-	char *p;
+static char* sha256crypt(const char* key, const char* setting, char* output) {
+  struct sha256 ctx;
+  unsigned char md[32], kmd[32], smd[32];
+  unsigned int i, r, klen, slen;
+  char rounds[20] = "";
+  const char* salt;
+  char* p;
 
-	/* reject large keys */
-	klen = strnlen(key, KEY_MAX+1);
-	if (klen > KEY_MAX)
-		return 0;
+  /* reject large keys */
+  klen = strnlen(key, KEY_MAX + 1);
+  if (klen > KEY_MAX)
+    return 0;
 
-	/* setting: $5$rounds=n$salt$ (rounds=n$ and closing $ are optional) */
-	if (strncmp(setting, "$5$", 3) != 0)
-		return 0;
-	salt = setting + 3;
+  /* setting: $5$rounds=n$salt$ (rounds=n$ and closing $ are optional) */
+  if (strncmp(setting, "$5$", 3) != 0)
+    return 0;
+  salt = setting + 3;
 
-	r = ROUNDS_DEFAULT;
-	if (strncmp(salt, "rounds=", sizeof "rounds=" - 1) == 0) {
-		unsigned long u;
-		char *end;
+  r = ROUNDS_DEFAULT;
+  if (strncmp(salt, "rounds=", sizeof "rounds=" - 1) == 0) {
+    unsigned long u;
+    char* end;
 
-		/*
-		 * this is a deviation from the reference:
-		 * bad rounds setting is rejected if it is
-		 * - empty
-		 * - unterminated (missing '$')
-		 * - begins with anything but a decimal digit
-		 * the reference implementation treats these bad
-		 * rounds as part of the salt or parse them with
-		 * strtoul semantics which may cause problems
-		 * including non-portable hashes that depend on
-		 * the host's value of ULONG_MAX.
-		 */
-		salt += sizeof "rounds=" - 1;
-		if (!isdigit(*salt))
-			return 0;
-		u = strtoul(salt, &end, 10);
-		if (*end != '$')
-			return 0;
-		salt = end+1;
-		if (u < ROUNDS_MIN)
-			r = ROUNDS_MIN;
-		else if (u > ROUNDS_MAX)
-			r = ROUNDS_MAX;
-		else
-			r = u;
-		/* needed when rounds is zero prefixed or out of bounds */
-		sprintf(rounds, "rounds=%u$", r);
-	}
+    /*
+     * this is a deviation from the reference:
+     * bad rounds setting is rejected if it is
+     * - empty
+     * - unterminated (missing '$')
+     * - begins with anything but a decimal digit
+     * the reference implementation treats these bad
+     * rounds as part of the salt or parse them with
+     * strtoul semantics which may cause problems
+     * including non-portable hashes that depend on
+     * the host's value of ULONG_MAX.
+     */
+    salt += sizeof "rounds=" - 1;
+    if (!isdigit(*salt))
+      return 0;
+    u = strtoul(salt, &end, 10);
+    if (*end != '$')
+      return 0;
+    salt = end + 1;
+    if (u < ROUNDS_MIN)
+      r = ROUNDS_MIN;
+    else if (u > ROUNDS_MAX)
+      r = ROUNDS_MAX;
+    else
+      r = u;
+    /* needed when rounds is zero prefixed or out of bounds */
+    sprintf(rounds, "rounds=%u$", r);
+  }
 
-	for (i = 0; i < SALT_MAX && salt[i] && salt[i] != '$'; i++)
-		/* reject characters that interfere with /etc/shadow parsing */
-		if (salt[i] == '\n' || salt[i] == ':')
-			return 0;
-	slen = i;
+  for (i = 0; i < SALT_MAX && salt[i] && salt[i] != '$'; i++)
+    /* reject characters that interfere with /etc/shadow parsing */
+    if (salt[i] == '\n' || salt[i] == ':')
+      return 0;
+  slen = i;
 
-	/* B = sha(key salt key) */
-	sha256_init(&ctx);
-	sha256_update(&ctx, key, klen);
-	sha256_update(&ctx, salt, slen);
-	sha256_update(&ctx, key, klen);
-	sha256_sum(&ctx, md);
+  /* B = sha(key salt key) */
+  sha256_init(&ctx);
+  sha256_update(&ctx, key, klen);
+  sha256_update(&ctx, salt, slen);
+  sha256_update(&ctx, key, klen);
+  sha256_sum(&ctx, md);
 
-	/* A = sha(key salt repeat-B alternate-B-key) */
-	sha256_init(&ctx);
-	sha256_update(&ctx, key, klen);
-	sha256_update(&ctx, salt, slen);
-	hashmd(&ctx, klen, md);
-	for (i = klen; i > 0; i >>= 1)
-		if (i & 1)
-			sha256_update(&ctx, md, sizeof md);
-		else
-			sha256_update(&ctx, key, klen);
-	sha256_sum(&ctx, md);
+  /* A = sha(key salt repeat-B alternate-B-key) */
+  sha256_init(&ctx);
+  sha256_update(&ctx, key, klen);
+  sha256_update(&ctx, salt, slen);
+  hashmd(&ctx, klen, md);
+  for (i = klen; i > 0; i >>= 1)
+    if (i & 1)
+      sha256_update(&ctx, md, sizeof md);
+    else
+      sha256_update(&ctx, key, klen);
+  sha256_sum(&ctx, md);
 
-	/* DP = sha(repeat-key), this step takes O(klen^2) time */
-	sha256_init(&ctx);
-	for (i = 0; i < klen; i++)
-		sha256_update(&ctx, key, klen);
-	sha256_sum(&ctx, kmd);
+  /* DP = sha(repeat-key), this step takes O(klen^2) time */
+  sha256_init(&ctx);
+  for (i = 0; i < klen; i++)
+    sha256_update(&ctx, key, klen);
+  sha256_sum(&ctx, kmd);
 
-	/* DS = sha(repeat-salt) */
-	sha256_init(&ctx);
-	for (i = 0; i < 16 + md[0]; i++)
-		sha256_update(&ctx, salt, slen);
-	sha256_sum(&ctx, smd);
+  /* DS = sha(repeat-salt) */
+  sha256_init(&ctx);
+  for (i = 0; i < 16 + md[0]; i++)
+    sha256_update(&ctx, salt, slen);
+  sha256_sum(&ctx, smd);
 
-	/* iterate A = f(A,DP,DS), this step takes O(rounds*klen) time */
-	for (i = 0; i < r; i++) {
-		sha256_init(&ctx);
-		if (i % 2)
-			hashmd(&ctx, klen, kmd);
-		else
-			sha256_update(&ctx, md, sizeof md);
-		if (i % 3)
-			sha256_update(&ctx, smd, slen);
-		if (i % 7)
-			hashmd(&ctx, klen, kmd);
-		if (i % 2)
-			sha256_update(&ctx, md, sizeof md);
-		else
-			hashmd(&ctx, klen, kmd);
-		sha256_sum(&ctx, md);
-	}
+  /* iterate A = f(A,DP,DS), this step takes O(rounds*klen) time */
+  for (i = 0; i < r; i++) {
+    sha256_init(&ctx);
+    if (i % 2)
+      hashmd(&ctx, klen, kmd);
+    else
+      sha256_update(&ctx, md, sizeof md);
+    if (i % 3)
+      sha256_update(&ctx, smd, slen);
+    if (i % 7)
+      hashmd(&ctx, klen, kmd);
+    if (i % 2)
+      sha256_update(&ctx, md, sizeof md);
+    else
+      hashmd(&ctx, klen, kmd);
+    sha256_sum(&ctx, md);
+  }
 
-	/* output is $5$rounds=n$salt$hash */
-	p = output;
-	p += sprintf(p, "$5$%s%.*s$", rounds, slen, salt);
-	static const unsigned char perm[][3] = {
-		0,10,20,21,1,11,12,22,2,3,13,23,24,4,14,
-		15,25,5,6,16,26,27,7,17,18,28,8,9,19,29 };
-	for (i=0; i<10; i++) p = to64(p,
-		(md[perm[i][0]]<<16)|(md[perm[i][1]]<<8)|md[perm[i][2]], 4);
-	p = to64(p, (md[31]<<8)|md[30], 3);
-	*p = 0;
-	return output;
+  /* output is $5$rounds=n$salt$hash */
+  p = output;
+  p += sprintf(p, "$5$%s%.*s$", rounds, slen, salt);
+  static const unsigned char perm[][3] = {
+      0,  10, 20, 21, 1,  11, 12, 22, 2,  3,  13, 23, 24, 4,  14,
+      15, 25, 5,  6,  16, 26, 27, 7,  17, 18, 28, 8,  9,  19, 29};
+  for (i = 0; i < 10; i++)
+    p = to64(p, (md[perm[i][0]] << 16) | (md[perm[i][1]] << 8) | md[perm[i][2]],
+             4);
+  p = to64(p, (md[31] << 8) | md[30], 3);
+  *p = 0;
+  return output;
 }
 
-char *__crypt_sha256(const char *key, const char *setting, char *output)
-{
-	static const char testkey[] = "Xy01@#\x01\x02\x80\x7f\xff\r\n\x81\t !";
-	static const char testsetting[] = "$5$rounds=1234$abc0123456789$";
-	static const char testhash[] = "$5$rounds=1234$abc0123456789$3VfDjPt05VHFn47C/ojFZ6KRPYrOjj1lLbH.dkF3bZ6";
-	char testbuf[128];
-	char *p, *q;
+char* __crypt_sha256(const char* key, const char* setting, char* output) {
+  static const char testkey[] = "Xy01@#\x01\x02\x80\x7f\xff\r\n\x81\t !";
+  static const char testsetting[] = "$5$rounds=1234$abc0123456789$";
+  static const char testhash[] =
+      "$5$rounds=1234$abc0123456789$3VfDjPt05VHFn47C/"
+      "ojFZ6KRPYrOjj1lLbH.dkF3bZ6";
+  char testbuf[128];
+  char *p, *q;
 
-	p = sha256crypt(key, setting, output);
-	/* self test and stack cleanup */
-	q = sha256crypt(testkey, testsetting, testbuf);
-	if (!p || q != testbuf || memcmp(testbuf, testhash, sizeof testhash))
-		return "*";
-	return p;
+  p = sha256crypt(key, setting, output);
+  /* self test and stack cleanup */
+  q = sha256crypt(testkey, testsetting, testbuf);
+  if (!p || q != testbuf || memcmp(testbuf, testhash, sizeof testhash))
+    return "*";
+  return p;
 }
diff --git a/fusl/src/crypt/crypt_sha512.c b/fusl/src/crypt/crypt_sha512.c
index 1294e98..9517e83 100644
--- a/fusl/src/crypt/crypt_sha512.c
+++ b/fusl/src/crypt/crypt_sha512.c
@@ -17,173 +17,175 @@
 /* >=2^64 bits messages are not supported (about 2000 peta bytes) */
 
 struct sha512 {
-	uint64_t len;     /* processed message length */
-	uint64_t h[8];    /* hash state */
-	uint8_t buf[128]; /* message block buffer */
+  uint64_t len;     /* processed message length */
+  uint64_t h[8];    /* hash state */
+  uint8_t buf[128]; /* message block buffer */
 };
 
-static uint64_t ror(uint64_t n, int k) { return (n >> k) | (n << (64-k)); }
-#define Ch(x,y,z)  (z ^ (x & (y ^ z)))
-#define Maj(x,y,z) ((x & y) | (z & (x | y)))
-#define S0(x)      (ror(x,28) ^ ror(x,34) ^ ror(x,39))
-#define S1(x)      (ror(x,14) ^ ror(x,18) ^ ror(x,41))
-#define R0(x)      (ror(x,1) ^ ror(x,8) ^ (x>>7))
-#define R1(x)      (ror(x,19) ^ ror(x,61) ^ (x>>6))
+static uint64_t ror(uint64_t n, int k) {
+  return (n >> k) | (n << (64 - k));
+}
+#define Ch(x, y, z) (z ^ (x & (y ^ z)))
+#define Maj(x, y, z) ((x & y) | (z & (x | y)))
+#define S0(x) (ror(x, 28) ^ ror(x, 34) ^ ror(x, 39))
+#define S1(x) (ror(x, 14) ^ ror(x, 18) ^ ror(x, 41))
+#define R0(x) (ror(x, 1) ^ ror(x, 8) ^ (x >> 7))
+#define R1(x) (ror(x, 19) ^ ror(x, 61) ^ (x >> 6))
 
 static const uint64_t K[80] = {
-0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL, 0xe9b5dba58189dbbcULL,
-0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL, 0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL,
-0xd807aa98a3030242ULL, 0x12835b0145706fbeULL, 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL,
-0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, 0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL,
-0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, 0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL,
-0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL, 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL,
-0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, 0xb00327c898fb213fULL, 0xbf597fc7beef0ee4ULL,
-0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL, 0x06ca6351e003826fULL, 0x142929670a0e6e70ULL,
-0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL, 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL,
-0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, 0x81c2c92e47edaee6ULL, 0x92722c851482353bULL,
-0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, 0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL,
-0xd192e819d6ef5218ULL, 0xd69906245565a910ULL, 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL,
-0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, 0x2748774cdf8eeb99ULL, 0x34b0bcb5e19b48a8ULL,
-0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL, 0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL,
-0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL, 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL,
-0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, 0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL,
-0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, 0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL,
-0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL, 0x113f9804bef90daeULL, 0x1b710b35131c471bULL,
-0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, 0x3c9ebe0a15c9bebcULL, 0x431d67c49c100d4cULL,
-0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL, 0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL
-};
+    0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL,
+    0xe9b5dba58189dbbcULL, 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL,
+    0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL, 0xd807aa98a3030242ULL,
+    0x12835b0145706fbeULL, 0x243185be4ee4b28cULL, 0x550c7dc3d5ffb4e2ULL,
+    0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL, 0x9bdc06a725c71235ULL,
+    0xc19bf174cf692694ULL, 0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL,
+    0x0fc19dc68b8cd5b5ULL, 0x240ca1cc77ac9c65ULL, 0x2de92c6f592b0275ULL,
+    0x4a7484aa6ea6e483ULL, 0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL,
+    0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, 0xb00327c898fb213fULL,
+    0xbf597fc7beef0ee4ULL, 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL,
+    0x06ca6351e003826fULL, 0x142929670a0e6e70ULL, 0x27b70a8546d22ffcULL,
+    0x2e1b21385c26c926ULL, 0x4d2c6dfc5ac42aedULL, 0x53380d139d95b3dfULL,
+    0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL, 0x81c2c92e47edaee6ULL,
+    0x92722c851482353bULL, 0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL,
+    0xc24b8b70d0f89791ULL, 0xc76c51a30654be30ULL, 0xd192e819d6ef5218ULL,
+    0xd69906245565a910ULL, 0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL,
+    0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, 0x2748774cdf8eeb99ULL,
+    0x34b0bcb5e19b48a8ULL, 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL,
+    0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL, 0x748f82ee5defb2fcULL,
+    0x78a5636f43172f60ULL, 0x84c87814a1f0ab72ULL, 0x8cc702081a6439ecULL,
+    0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL, 0xbef9a3f7b2c67915ULL,
+    0xc67178f2e372532bULL, 0xca273eceea26619cULL, 0xd186b8c721c0c207ULL,
+    0xeada7dd6cde0eb1eULL, 0xf57d4f7fee6ed178ULL, 0x06f067aa72176fbaULL,
+    0x0a637dc5a2c898a6ULL, 0x113f9804bef90daeULL, 0x1b710b35131c471bULL,
+    0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, 0x3c9ebe0a15c9bebcULL,
+    0x431d67c49c100d4cULL, 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL,
+    0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL};
 
-static void processblock(struct sha512 *s, const uint8_t *buf)
-{
-	uint64_t W[80], t1, t2, a, b, c, d, e, f, g, h;
-	int i;
+static void processblock(struct sha512* s, const uint8_t* buf) {
+  uint64_t W[80], t1, t2, a, b, c, d, e, f, g, h;
+  int i;
 
-	for (i = 0; i < 16; i++) {
-		W[i] = (uint64_t)buf[8*i]<<56;
-		W[i] |= (uint64_t)buf[8*i+1]<<48;
-		W[i] |= (uint64_t)buf[8*i+2]<<40;
-		W[i] |= (uint64_t)buf[8*i+3]<<32;
-		W[i] |= (uint64_t)buf[8*i+4]<<24;
-		W[i] |= (uint64_t)buf[8*i+5]<<16;
-		W[i] |= (uint64_t)buf[8*i+6]<<8;
-		W[i] |= buf[8*i+7];
-	}
-	for (; i < 80; i++)
-		W[i] = R1(W[i-2]) + W[i-7] + R0(W[i-15]) + W[i-16];
-	a = s->h[0];
-	b = s->h[1];
-	c = s->h[2];
-	d = s->h[3];
-	e = s->h[4];
-	f = s->h[5];
-	g = s->h[6];
-	h = s->h[7];
-	for (i = 0; i < 80; i++) {
-		t1 = h + S1(e) + Ch(e,f,g) + K[i] + W[i];
-		t2 = S0(a) + Maj(a,b,c);
-		h = g;
-		g = f;
-		f = e;
-		e = d + t1;
-		d = c;
-		c = b;
-		b = a;
-		a = t1 + t2;
-	}
-	s->h[0] += a;
-	s->h[1] += b;
-	s->h[2] += c;
-	s->h[3] += d;
-	s->h[4] += e;
-	s->h[5] += f;
-	s->h[6] += g;
-	s->h[7] += h;
+  for (i = 0; i < 16; i++) {
+    W[i] = (uint64_t)buf[8 * i] << 56;
+    W[i] |= (uint64_t)buf[8 * i + 1] << 48;
+    W[i] |= (uint64_t)buf[8 * i + 2] << 40;
+    W[i] |= (uint64_t)buf[8 * i + 3] << 32;
+    W[i] |= (uint64_t)buf[8 * i + 4] << 24;
+    W[i] |= (uint64_t)buf[8 * i + 5] << 16;
+    W[i] |= (uint64_t)buf[8 * i + 6] << 8;
+    W[i] |= buf[8 * i + 7];
+  }
+  for (; i < 80; i++)
+    W[i] = R1(W[i - 2]) + W[i - 7] + R0(W[i - 15]) + W[i - 16];
+  a = s->h[0];
+  b = s->h[1];
+  c = s->h[2];
+  d = s->h[3];
+  e = s->h[4];
+  f = s->h[5];
+  g = s->h[6];
+  h = s->h[7];
+  for (i = 0; i < 80; i++) {
+    t1 = h + S1(e) + Ch(e, f, g) + K[i] + W[i];
+    t2 = S0(a) + Maj(a, b, c);
+    h = g;
+    g = f;
+    f = e;
+    e = d + t1;
+    d = c;
+    c = b;
+    b = a;
+    a = t1 + t2;
+  }
+  s->h[0] += a;
+  s->h[1] += b;
+  s->h[2] += c;
+  s->h[3] += d;
+  s->h[4] += e;
+  s->h[5] += f;
+  s->h[6] += g;
+  s->h[7] += h;
 }
 
-static void pad(struct sha512 *s)
-{
-	unsigned r = s->len % 128;
+static void pad(struct sha512* s) {
+  unsigned r = s->len % 128;
 
-	s->buf[r++] = 0x80;
-	if (r > 112) {
-		memset(s->buf + r, 0, 128 - r);
-		r = 0;
-		processblock(s, s->buf);
-	}
-	memset(s->buf + r, 0, 120 - r);
-	s->len *= 8;
-	s->buf[120] = s->len >> 56;
-	s->buf[121] = s->len >> 48;
-	s->buf[122] = s->len >> 40;
-	s->buf[123] = s->len >> 32;
-	s->buf[124] = s->len >> 24;
-	s->buf[125] = s->len >> 16;
-	s->buf[126] = s->len >> 8;
-	s->buf[127] = s->len;
-	processblock(s, s->buf);
+  s->buf[r++] = 0x80;
+  if (r > 112) {
+    memset(s->buf + r, 0, 128 - r);
+    r = 0;
+    processblock(s, s->buf);
+  }
+  memset(s->buf + r, 0, 120 - r);
+  s->len *= 8;
+  s->buf[120] = s->len >> 56;
+  s->buf[121] = s->len >> 48;
+  s->buf[122] = s->len >> 40;
+  s->buf[123] = s->len >> 32;
+  s->buf[124] = s->len >> 24;
+  s->buf[125] = s->len >> 16;
+  s->buf[126] = s->len >> 8;
+  s->buf[127] = s->len;
+  processblock(s, s->buf);
 }
 
-static void sha512_init(struct sha512 *s)
-{
-	s->len = 0;
-	s->h[0] = 0x6a09e667f3bcc908ULL;
-	s->h[1] = 0xbb67ae8584caa73bULL;
-	s->h[2] = 0x3c6ef372fe94f82bULL;
-	s->h[3] = 0xa54ff53a5f1d36f1ULL;
-	s->h[4] = 0x510e527fade682d1ULL;
-	s->h[5] = 0x9b05688c2b3e6c1fULL;
-	s->h[6] = 0x1f83d9abfb41bd6bULL;
-	s->h[7] = 0x5be0cd19137e2179ULL;
+static void sha512_init(struct sha512* s) {
+  s->len = 0;
+  s->h[0] = 0x6a09e667f3bcc908ULL;
+  s->h[1] = 0xbb67ae8584caa73bULL;
+  s->h[2] = 0x3c6ef372fe94f82bULL;
+  s->h[3] = 0xa54ff53a5f1d36f1ULL;
+  s->h[4] = 0x510e527fade682d1ULL;
+  s->h[5] = 0x9b05688c2b3e6c1fULL;
+  s->h[6] = 0x1f83d9abfb41bd6bULL;
+  s->h[7] = 0x5be0cd19137e2179ULL;
 }
 
-static void sha512_sum(struct sha512 *s, uint8_t *md)
-{
-	int i;
+static void sha512_sum(struct sha512* s, uint8_t* md) {
+  int i;
 
-	pad(s);
-	for (i = 0; i < 8; i++) {
-		md[8*i] = s->h[i] >> 56;
-		md[8*i+1] = s->h[i] >> 48;
-		md[8*i+2] = s->h[i] >> 40;
-		md[8*i+3] = s->h[i] >> 32;
-		md[8*i+4] = s->h[i] >> 24;
-		md[8*i+5] = s->h[i] >> 16;
-		md[8*i+6] = s->h[i] >> 8;
-		md[8*i+7] = s->h[i];
-	}
+  pad(s);
+  for (i = 0; i < 8; i++) {
+    md[8 * i] = s->h[i] >> 56;
+    md[8 * i + 1] = s->h[i] >> 48;
+    md[8 * i + 2] = s->h[i] >> 40;
+    md[8 * i + 3] = s->h[i] >> 32;
+    md[8 * i + 4] = s->h[i] >> 24;
+    md[8 * i + 5] = s->h[i] >> 16;
+    md[8 * i + 6] = s->h[i] >> 8;
+    md[8 * i + 7] = s->h[i];
+  }
 }
 
-static void sha512_update(struct sha512 *s, const void *m, unsigned long len)
-{
-	const uint8_t *p = m;
-	unsigned r = s->len % 128;
+static void sha512_update(struct sha512* s, const void* m, unsigned long len) {
+  const uint8_t* p = m;
+  unsigned r = s->len % 128;
 
-	s->len += len;
-	if (r) {
-		if (len < 128 - r) {
-			memcpy(s->buf + r, p, len);
-			return;
-		}
-		memcpy(s->buf + r, p, 128 - r);
-		len -= 128 - r;
-		p += 128 - r;
-		processblock(s, s->buf);
-	}
-	for (; len >= 128; len -= 128, p += 128)
-		processblock(s, p);
-	memcpy(s->buf, p, len);
+  s->len += len;
+  if (r) {
+    if (len < 128 - r) {
+      memcpy(s->buf + r, p, len);
+      return;
+    }
+    memcpy(s->buf + r, p, 128 - r);
+    len -= 128 - r;
+    p += 128 - r;
+    processblock(s, s->buf);
+  }
+  for (; len >= 128; len -= 128, p += 128)
+    processblock(s, p);
+  memcpy(s->buf, p, len);
 }
 
 static const unsigned char b64[] =
-"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+    "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 
-static char *to64(char *s, unsigned int u, int n)
-{
-	while (--n >= 0) {
-		*s++ = b64[u % 64];
-		u /= 64;
-	}
-	return s;
+static char* to64(char* s, unsigned int u, int n) {
+  while (--n >= 0) {
+    *s++ = b64[u % 64];
+    u /= 64;
+  }
+  return s;
 }
 
 /* key limit is not part of the original design, added for DoS protection.
@@ -196,176 +198,177 @@
 #define ROUNDS_MAX 9999999
 
 /* hash n bytes of the repeated md message digest */
-static void hashmd(struct sha512 *s, unsigned int n, const void *md)
-{
-	unsigned int i;
+static void hashmd(struct sha512* s, unsigned int n, const void* md) {
+  unsigned int i;
 
-	for (i = n; i > 64; i -= 64)
-		sha512_update(s, md, 64);
-	sha512_update(s, md, i);
+  for (i = n; i > 64; i -= 64)
+    sha512_update(s, md, 64);
+  sha512_update(s, md, i);
 }
 
-static char *sha512crypt(const char *key, const char *setting, char *output)
-{
-	struct sha512 ctx;
-	unsigned char md[64], kmd[64], smd[64];
-	unsigned int i, r, klen, slen;
-	char rounds[20] = "";
-	const char *salt;
-	char *p;
+static char* sha512crypt(const char* key, const char* setting, char* output) {
+  struct sha512 ctx;
+  unsigned char md[64], kmd[64], smd[64];
+  unsigned int i, r, klen, slen;
+  char rounds[20] = "";
+  const char* salt;
+  char* p;
 
-	/* reject large keys */
-	for (i = 0; i <= KEY_MAX && key[i]; i++);
-	if (i > KEY_MAX)
-		return 0;
-	klen = i;
+  /* reject large keys */
+  for (i = 0; i <= KEY_MAX && key[i]; i++)
+    ;
+  if (i > KEY_MAX)
+    return 0;
+  klen = i;
 
-	/* setting: $6$rounds=n$salt$ (rounds=n$ and closing $ are optional) */
-	if (strncmp(setting, "$6$", 3) != 0)
-		return 0;
-	salt = setting + 3;
+  /* setting: $6$rounds=n$salt$ (rounds=n$ and closing $ are optional) */
+  if (strncmp(setting, "$6$", 3) != 0)
+    return 0;
+  salt = setting + 3;
 
-	r = ROUNDS_DEFAULT;
-	if (strncmp(salt, "rounds=", sizeof "rounds=" - 1) == 0) {
-		unsigned long u;
-		char *end;
+  r = ROUNDS_DEFAULT;
+  if (strncmp(salt, "rounds=", sizeof "rounds=" - 1) == 0) {
+    unsigned long u;
+    char* end;
 
-		/*
-		 * this is a deviation from the reference:
-		 * bad rounds setting is rejected if it is
-		 * - empty
-		 * - unterminated (missing '$')
-		 * - begins with anything but a decimal digit
-		 * the reference implementation treats these bad
-		 * rounds as part of the salt or parse them with
-		 * strtoul semantics which may cause problems
-		 * including non-portable hashes that depend on
-		 * the host's value of ULONG_MAX.
-		 */
-		salt += sizeof "rounds=" - 1;
-		if (!isdigit(*salt))
-			return 0;
-		u = strtoul(salt, &end, 10);
-		if (*end != '$')
-			return 0;
-		salt = end+1;
-		if (u < ROUNDS_MIN)
-			r = ROUNDS_MIN;
-		else if (u > ROUNDS_MAX)
-			r = ROUNDS_MAX;
-		else
-			r = u;
-		/* needed when rounds is zero prefixed or out of bounds */
-		sprintf(rounds, "rounds=%u$", r);
-	}
+    /*
+     * this is a deviation from the reference:
+     * bad rounds setting is rejected if it is
+     * - empty
+     * - unterminated (missing '$')
+     * - begins with anything but a decimal digit
+     * the reference implementation treats these bad
+     * rounds as part of the salt or parse them with
+     * strtoul semantics which may cause problems
+     * including non-portable hashes that depend on
+     * the host's value of ULONG_MAX.
+     */
+    salt += sizeof "rounds=" - 1;
+    if (!isdigit(*salt))
+      return 0;
+    u = strtoul(salt, &end, 10);
+    if (*end != '$')
+      return 0;
+    salt = end + 1;
+    if (u < ROUNDS_MIN)
+      r = ROUNDS_MIN;
+    else if (u > ROUNDS_MAX)
+      r = ROUNDS_MAX;
+    else
+      r = u;
+    /* needed when rounds is zero prefixed or out of bounds */
+    sprintf(rounds, "rounds=%u$", r);
+  }
 
-	for (i = 0; i < SALT_MAX && salt[i] && salt[i] != '$'; i++)
-		/* reject characters that interfere with /etc/shadow parsing */
-		if (salt[i] == '\n' || salt[i] == ':')
-			return 0;
-	slen = i;
+  for (i = 0; i < SALT_MAX && salt[i] && salt[i] != '$'; i++)
+    /* reject characters that interfere with /etc/shadow parsing */
+    if (salt[i] == '\n' || salt[i] == ':')
+      return 0;
+  slen = i;
 
-	/* B = sha(key salt key) */
-	sha512_init(&ctx);
-	sha512_update(&ctx, key, klen);
-	sha512_update(&ctx, salt, slen);
-	sha512_update(&ctx, key, klen);
-	sha512_sum(&ctx, md);
+  /* B = sha(key salt key) */
+  sha512_init(&ctx);
+  sha512_update(&ctx, key, klen);
+  sha512_update(&ctx, salt, slen);
+  sha512_update(&ctx, key, klen);
+  sha512_sum(&ctx, md);
 
-	/* A = sha(key salt repeat-B alternate-B-key) */
-	sha512_init(&ctx);
-	sha512_update(&ctx, key, klen);
-	sha512_update(&ctx, salt, slen);
-	hashmd(&ctx, klen, md);
-	for (i = klen; i > 0; i >>= 1)
-		if (i & 1)
-			sha512_update(&ctx, md, sizeof md);
-		else
-			sha512_update(&ctx, key, klen);
-	sha512_sum(&ctx, md);
+  /* A = sha(key salt repeat-B alternate-B-key) */
+  sha512_init(&ctx);
+  sha512_update(&ctx, key, klen);
+  sha512_update(&ctx, salt, slen);
+  hashmd(&ctx, klen, md);
+  for (i = klen; i > 0; i >>= 1)
+    if (i & 1)
+      sha512_update(&ctx, md, sizeof md);
+    else
+      sha512_update(&ctx, key, klen);
+  sha512_sum(&ctx, md);
 
-	/* DP = sha(repeat-key), this step takes O(klen^2) time */
-	sha512_init(&ctx);
-	for (i = 0; i < klen; i++)
-		sha512_update(&ctx, key, klen);
-	sha512_sum(&ctx, kmd);
+  /* DP = sha(repeat-key), this step takes O(klen^2) time */
+  sha512_init(&ctx);
+  for (i = 0; i < klen; i++)
+    sha512_update(&ctx, key, klen);
+  sha512_sum(&ctx, kmd);
 
-	/* DS = sha(repeat-salt) */
-	sha512_init(&ctx);
-	for (i = 0; i < 16 + md[0]; i++)
-		sha512_update(&ctx, salt, slen);
-	sha512_sum(&ctx, smd);
+  /* DS = sha(repeat-salt) */
+  sha512_init(&ctx);
+  for (i = 0; i < 16 + md[0]; i++)
+    sha512_update(&ctx, salt, slen);
+  sha512_sum(&ctx, smd);
 
-	/* iterate A = f(A,DP,DS), this step takes O(rounds*klen) time */
-	for (i = 0; i < r; i++) {
-		sha512_init(&ctx);
-		if (i % 2)
-			hashmd(&ctx, klen, kmd);
-		else
-			sha512_update(&ctx, md, sizeof md);
-		if (i % 3)
-			sha512_update(&ctx, smd, slen);
-		if (i % 7)
-			hashmd(&ctx, klen, kmd);
-		if (i % 2)
-			sha512_update(&ctx, md, sizeof md);
-		else
-			hashmd(&ctx, klen, kmd);
-		sha512_sum(&ctx, md);
-	}
+  /* iterate A = f(A,DP,DS), this step takes O(rounds*klen) time */
+  for (i = 0; i < r; i++) {
+    sha512_init(&ctx);
+    if (i % 2)
+      hashmd(&ctx, klen, kmd);
+    else
+      sha512_update(&ctx, md, sizeof md);
+    if (i % 3)
+      sha512_update(&ctx, smd, slen);
+    if (i % 7)
+      hashmd(&ctx, klen, kmd);
+    if (i % 2)
+      sha512_update(&ctx, md, sizeof md);
+    else
+      hashmd(&ctx, klen, kmd);
+    sha512_sum(&ctx, md);
+  }
 
-	/* output is $6$rounds=n$salt$hash */
-	p = output;
-	p += sprintf(p, "$6$%s%.*s$", rounds, slen, salt);
+  /* output is $6$rounds=n$salt$hash */
+  p = output;
+  p += sprintf(p, "$6$%s%.*s$", rounds, slen, salt);
 #if 1
-	static const unsigned char perm[][3] = {
-		0,21,42,22,43,1,44,2,23,3,24,45,25,46,4,
-		47,5,26,6,27,48,28,49,7,50,8,29,9,30,51,
-		31,52,10,53,11,32,12,33,54,34,55,13,56,14,35,
-		15,36,57,37,58,16,59,17,38,18,39,60,40,61,19,
-		62,20,41 };
-	for (i=0; i<21; i++) p = to64(p,
-		(md[perm[i][0]]<<16)|(md[perm[i][1]]<<8)|md[perm[i][2]], 4);
+  static const unsigned char perm[][3] = {
+      0,  21, 42, 22, 43, 1,  44, 2,  23, 3,  24, 45, 25, 46, 4,  47,
+      5,  26, 6,  27, 48, 28, 49, 7,  50, 8,  29, 9,  30, 51, 31, 52,
+      10, 53, 11, 32, 12, 33, 54, 34, 55, 13, 56, 14, 35, 15, 36, 57,
+      37, 58, 16, 59, 17, 38, 18, 39, 60, 40, 61, 19, 62, 20, 41};
+  for (i = 0; i < 21; i++)
+    p = to64(p, (md[perm[i][0]] << 16) | (md[perm[i][1]] << 8) | md[perm[i][2]],
+             4);
 #else
-	p = to64(p, (md[0]<<16)|(md[21]<<8)|md[42], 4);
-	p = to64(p, (md[22]<<16)|(md[43]<<8)|md[1], 4);
-	p = to64(p, (md[44]<<16)|(md[2]<<8)|md[23], 4);
-	p = to64(p, (md[3]<<16)|(md[24]<<8)|md[45], 4);
-	p = to64(p, (md[25]<<16)|(md[46]<<8)|md[4], 4);
-	p = to64(p, (md[47]<<16)|(md[5]<<8)|md[26], 4);
-	p = to64(p, (md[6]<<16)|(md[27]<<8)|md[48], 4);
-	p = to64(p, (md[28]<<16)|(md[49]<<8)|md[7], 4);
-	p = to64(p, (md[50]<<16)|(md[8]<<8)|md[29], 4);
-	p = to64(p, (md[9]<<16)|(md[30]<<8)|md[51], 4);
-	p = to64(p, (md[31]<<16)|(md[52]<<8)|md[10], 4);
-	p = to64(p, (md[53]<<16)|(md[11]<<8)|md[32], 4);
-	p = to64(p, (md[12]<<16)|(md[33]<<8)|md[54], 4);
-	p = to64(p, (md[34]<<16)|(md[55]<<8)|md[13], 4);
-	p = to64(p, (md[56]<<16)|(md[14]<<8)|md[35], 4);
-	p = to64(p, (md[15]<<16)|(md[36]<<8)|md[57], 4);
-	p = to64(p, (md[37]<<16)|(md[58]<<8)|md[16], 4);
-	p = to64(p, (md[59]<<16)|(md[17]<<8)|md[38], 4);
-	p = to64(p, (md[18]<<16)|(md[39]<<8)|md[60], 4);
-	p = to64(p, (md[40]<<16)|(md[61]<<8)|md[19], 4);
-	p = to64(p, (md[62]<<16)|(md[20]<<8)|md[41], 4);
+  p = to64(p, (md[0] << 16) | (md[21] << 8) | md[42], 4);
+  p = to64(p, (md[22] << 16) | (md[43] << 8) | md[1], 4);
+  p = to64(p, (md[44] << 16) | (md[2] << 8) | md[23], 4);
+  p = to64(p, (md[3] << 16) | (md[24] << 8) | md[45], 4);
+  p = to64(p, (md[25] << 16) | (md[46] << 8) | md[4], 4);
+  p = to64(p, (md[47] << 16) | (md[5] << 8) | md[26], 4);
+  p = to64(p, (md[6] << 16) | (md[27] << 8) | md[48], 4);
+  p = to64(p, (md[28] << 16) | (md[49] << 8) | md[7], 4);
+  p = to64(p, (md[50] << 16) | (md[8] << 8) | md[29], 4);
+  p = to64(p, (md[9] << 16) | (md[30] << 8) | md[51], 4);
+  p = to64(p, (md[31] << 16) | (md[52] << 8) | md[10], 4);
+  p = to64(p, (md[53] << 16) | (md[11] << 8) | md[32], 4);
+  p = to64(p, (md[12] << 16) | (md[33] << 8) | md[54], 4);
+  p = to64(p, (md[34] << 16) | (md[55] << 8) | md[13], 4);
+  p = to64(p, (md[56] << 16) | (md[14] << 8) | md[35], 4);
+  p = to64(p, (md[15] << 16) | (md[36] << 8) | md[57], 4);
+  p = to64(p, (md[37] << 16) | (md[58] << 8) | md[16], 4);
+  p = to64(p, (md[59] << 16) | (md[17] << 8) | md[38], 4);
+  p = to64(p, (md[18] << 16) | (md[39] << 8) | md[60], 4);
+  p = to64(p, (md[40] << 16) | (md[61] << 8) | md[19], 4);
+  p = to64(p, (md[62] << 16) | (md[20] << 8) | md[41], 4);
 #endif
-	p = to64(p, md[63], 2);
-	*p = 0;
-	return output;
+  p = to64(p, md[63], 2);
+  *p = 0;
+  return output;
 }
 
-char *__crypt_sha512(const char *key, const char *setting, char *output)
-{
-	static const char testkey[] = "Xy01@#\x01\x02\x80\x7f\xff\r\n\x81\t !";
-	static const char testsetting[] = "$6$rounds=1234$abc0123456789$";
-	static const char testhash[] = "$6$rounds=1234$abc0123456789$BCpt8zLrc/RcyuXmCDOE1ALqMXB2MH6n1g891HhFj8.w7LxGv.FTkqq6Vxc/km3Y0jE0j24jY5PIv/oOu6reg1";
-	char testbuf[128];
-	char *p, *q;
+char* __crypt_sha512(const char* key, const char* setting, char* output) {
+  static const char testkey[] = "Xy01@#\x01\x02\x80\x7f\xff\r\n\x81\t !";
+  static const char testsetting[] = "$6$rounds=1234$abc0123456789$";
+  static const char testhash[] =
+      "$6$rounds=1234$abc0123456789$BCpt8zLrc/"
+      "RcyuXmCDOE1ALqMXB2MH6n1g891HhFj8.w7LxGv.FTkqq6Vxc/km3Y0jE0j24jY5PIv/"
+      "oOu6reg1";
+  char testbuf[128];
+  char *p, *q;
 
-	p = sha512crypt(key, setting, output);
-	/* self test and stack cleanup */
-	q = sha512crypt(testkey, testsetting, testbuf);
-	if (!p || q != testbuf || memcmp(testbuf, testhash, sizeof testhash))
-		return "*";
-	return p;
+  p = sha512crypt(key, setting, output);
+  /* self test and stack cleanup */
+  q = sha512crypt(testkey, testsetting, testbuf);
+  if (!p || q != testbuf || memcmp(testbuf, testhash, sizeof testhash))
+    return "*";
+  return p;
 }
diff --git a/fusl/src/crypt/encrypt.c b/fusl/src/crypt/encrypt.c
index 9332a6d..58bb854 100644
--- a/fusl/src/crypt/encrypt.c
+++ b/fusl/src/crypt/encrypt.c
@@ -3,58 +3,59 @@
 #include <unistd.h>
 
 struct expanded_key {
-        uint32_t l[16], r[16];
+  uint32_t l[16], r[16];
 };
 
-void __des_setkey(const unsigned char *key, struct expanded_key *ekey);
-void __do_des(uint32_t l_in, uint32_t r_in,
-    uint32_t *l_out, uint32_t *r_out,
-    uint32_t count, uint32_t saltbits, const struct expanded_key *ekey);
-
+void __des_setkey(const unsigned char* key, struct expanded_key* ekey);
+void __do_des(uint32_t l_in,
+              uint32_t r_in,
+              uint32_t* l_out,
+              uint32_t* r_out,
+              uint32_t count,
+              uint32_t saltbits,
+              const struct expanded_key* ekey);
 
 static struct expanded_key __encrypt_key;
 
-void setkey(const char *key)
-{
-	unsigned char bkey[8];
-	int i, j;
+void setkey(const char* key) {
+  unsigned char bkey[8];
+  int i, j;
 
-	for (i = 0; i < 8; i++) {
-		bkey[i] = 0;
-		for (j = 7; j >= 0; j--, key++)
-			bkey[i] |= (uint32_t)(*key & 1) << j;
-	}
+  for (i = 0; i < 8; i++) {
+    bkey[i] = 0;
+    for (j = 7; j >= 0; j--, key++)
+      bkey[i] |= (uint32_t)(*key & 1) << j;
+  }
 
-	__des_setkey(bkey, &__encrypt_key);
+  __des_setkey(bkey, &__encrypt_key);
 }
 
-void encrypt(char *block, int edflag)
-{
-	struct expanded_key decrypt_key, *key;
-	uint32_t b[2];
-	int i, j;
-	char *p;
+void encrypt(char* block, int edflag) {
+  struct expanded_key decrypt_key, *key;
+  uint32_t b[2];
+  int i, j;
+  char* p;
 
-	p = block;
-	for (i = 0; i < 2; i++) {
-		b[i] = 0;
-		for (j = 31; j >= 0; j--, p++)
-			b[i] |= (uint32_t)(*p & 1) << j;
-	}
+  p = block;
+  for (i = 0; i < 2; i++) {
+    b[i] = 0;
+    for (j = 31; j >= 0; j--, p++)
+      b[i] |= (uint32_t)(*p & 1) << j;
+  }
 
-	key = &__encrypt_key;
-	if (edflag) {
-		key = &decrypt_key;
-		for (i = 0; i < 16; i++) {
-			decrypt_key.l[i] = __encrypt_key.l[15-i];
-			decrypt_key.r[i] = __encrypt_key.r[15-i];
-		}
-	}
+  key = &__encrypt_key;
+  if (edflag) {
+    key = &decrypt_key;
+    for (i = 0; i < 16; i++) {
+      decrypt_key.l[i] = __encrypt_key.l[15 - i];
+      decrypt_key.r[i] = __encrypt_key.r[15 - i];
+    }
+  }
 
-	__do_des(b[0], b[1], b, b + 1, 1, 0, key);
+  __do_des(b[0], b[1], b, b + 1, 1, 0, key);
 
-	p = block;
-	for (i = 0; i < 2; i++)
-		for (j = 31; j >= 0; j--)
-			*p++ = b[i]>>j & 1;
+  p = block;
+  for (i = 0; i < 2; i++)
+    for (j = 31; j >= 0; j--)
+      *p++ = b[i] >> j & 1;
 }
diff --git a/fusl/src/ctype/__ctype_b_loc.c b/fusl/src/ctype/__ctype_b_loc.c
index f43795e..4031449 100644
--- a/fusl/src/ctype/__ctype_b_loc.c
+++ b/fusl/src/ctype/__ctype_b_loc.c
@@ -3,39 +3,69 @@
 #if __BYTE_ORDER == __BIG_ENDIAN
 #define X(x) x
 #else
-#define X(x) (((x)/256 | (x)*256) % 65536)
+#define X(x) (((x) / 256 | (x)*256) % 65536)
 #endif
 
 static const unsigned short table[] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),
-X(0x200),X(0x320),X(0x220),X(0x220),X(0x220),X(0x220),X(0x200),X(0x200),
-X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),
-X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),X(0x200),
-X(0x160),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),
-X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),
-X(0x8d8),X(0x8d8),X(0x8d8),X(0x8d8),X(0x8d8),X(0x8d8),X(0x8d8),X(0x8d8),
-X(0x8d8),X(0x8d8),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),
-X(0x4c0),X(0x8d5),X(0x8d5),X(0x8d5),X(0x8d5),X(0x8d5),X(0x8d5),X(0x8c5),
-X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),
-X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),X(0x8c5),
-X(0x8c5),X(0x8c5),X(0x8c5),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),
-X(0x4c0),X(0x8d6),X(0x8d6),X(0x8d6),X(0x8d6),X(0x8d6),X(0x8d6),X(0x8c6),
-X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),
-X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),X(0x8c6),
-X(0x8c6),X(0x8c6),X(0x8c6),X(0x4c0),X(0x4c0),X(0x4c0),X(0x4c0),X(0x200),
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        X(0x200), X(0x200), X(0x200), X(0x200), X(0x200),
+    X(0x200), X(0x200), X(0x200), X(0x200), X(0x320), X(0x220), X(0x220),
+    X(0x220), X(0x220), X(0x200), X(0x200), X(0x200), X(0x200), X(0x200),
+    X(0x200), X(0x200), X(0x200), X(0x200), X(0x200), X(0x200), X(0x200),
+    X(0x200), X(0x200), X(0x200), X(0x200), X(0x200), X(0x200), X(0x160),
+    X(0x4c0), X(0x4c0), X(0x4c0), X(0x4c0), X(0x4c0), X(0x4c0), X(0x4c0),
+    X(0x4c0), X(0x4c0), X(0x4c0), X(0x4c0), X(0x4c0), X(0x4c0), X(0x4c0),
+    X(0x4c0), X(0x8d8), X(0x8d8), X(0x8d8), X(0x8d8), X(0x8d8), X(0x8d8),
+    X(0x8d8), X(0x8d8), X(0x8d8), X(0x8d8), X(0x4c0), X(0x4c0), X(0x4c0),
+    X(0x4c0), X(0x4c0), X(0x4c0), X(0x4c0), X(0x8d5), X(0x8d5), X(0x8d5),
+    X(0x8d5), X(0x8d5), X(0x8d5), X(0x8c5), X(0x8c5), X(0x8c5), X(0x8c5),
+    X(0x8c5), X(0x8c5), X(0x8c5), X(0x8c5), X(0x8c5), X(0x8c5), X(0x8c5),
+    X(0x8c5), X(0x8c5), X(0x8c5), X(0x8c5), X(0x8c5), X(0x8c5), X(0x8c5),
+    X(0x8c5), X(0x8c5), X(0x4c0), X(0x4c0), X(0x4c0), X(0x4c0), X(0x4c0),
+    X(0x4c0), X(0x8d6), X(0x8d6), X(0x8d6), X(0x8d6), X(0x8d6), X(0x8d6),
+    X(0x8c6), X(0x8c6), X(0x8c6), X(0x8c6), X(0x8c6), X(0x8c6), X(0x8c6),
+    X(0x8c6), X(0x8c6), X(0x8c6), X(0x8c6), X(0x8c6), X(0x8c6), X(0x8c6),
+    X(0x8c6), X(0x8c6), X(0x8c6), X(0x8c6), X(0x8c6), X(0x8c6), X(0x4c0),
+    X(0x4c0), X(0x4c0), X(0x4c0), X(0x200), 0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,        0,
+    0,        0,        0,        0,        0,        0,
 };
 
-static const unsigned short *const ptable = table+128;
+static const unsigned short* const ptable = table + 128;
 
-const unsigned short **__ctype_b_loc(void)
-{
-	return (void *)&ptable;
+const unsigned short** __ctype_b_loc(void) {
+  return (void*)&ptable;
 }
diff --git a/fusl/src/ctype/__ctype_get_mb_cur_max.c b/fusl/src/ctype/__ctype_get_mb_cur_max.c
index 8e946fc..463d52e 100644
--- a/fusl/src/ctype/__ctype_get_mb_cur_max.c
+++ b/fusl/src/ctype/__ctype_get_mb_cur_max.c
@@ -1,7 +1,6 @@
 #include <stdlib.h>
 #include "locale_impl.h"
 
-size_t __ctype_get_mb_cur_max()
-{
-	return MB_CUR_MAX;
+size_t __ctype_get_mb_cur_max() {
+  return MB_CUR_MAX;
 }
diff --git a/fusl/src/ctype/__ctype_tolower_loc.c b/fusl/src/ctype/__ctype_tolower_loc.c
index efb9910..2ec5ea4 100644
--- a/fusl/src/ctype/__ctype_tolower_loc.c
+++ b/fusl/src/ctype/__ctype_tolower_loc.c
@@ -1,30 +1,36 @@
 #include <stdint.h>
 
 static const int32_t table[] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
-16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
-32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,
-48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,
-64,
-'a','b','c','d','e','f','g','h','i','j','k','l','m',
-'n','o','p','q','r','s','t','u','v','w','x','y','z',
-91,92,93,94,95,96,
-'a','b','c','d','e','f','g','h','i','j','k','l','m',
-'n','o','p','q','r','s','t','u','v','w','x','y','z',
-123,124,125,126,127,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   2,   3,   4,   5,   6,
+    7,   8,   9,   10,  11,  12,  13,  14,  15,  16,  17,  18,  19,  20,  21,
+    22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,
+    37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
+    52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  'a', 'b',
+    'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q',
+    'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 91,  92,  93,  94,  95,  96,
+    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
+    'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 123, 124, 125, 126,
+    127, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,
 };
 
-static const int32_t *const ptable = table+128;
+static const int32_t* const ptable = table + 128;
 
-const int32_t **__ctype_tolower_loc(void)
-{
-	return (void *)&ptable;
+const int32_t** __ctype_tolower_loc(void) {
+  return (void*)&ptable;
 }
diff --git a/fusl/src/ctype/__ctype_toupper_loc.c b/fusl/src/ctype/__ctype_toupper_loc.c
index ffaef0e..46fdd66 100644
--- a/fusl/src/ctype/__ctype_toupper_loc.c
+++ b/fusl/src/ctype/__ctype_toupper_loc.c
@@ -1,30 +1,36 @@
 #include <stdint.h>
 
 static const int32_t table[] = {
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,
-16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,
-32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,
-48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,
-64,
-'A','B','C','D','E','F','G','H','I','J','K','L','M',
-'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
-91,92,93,94,95,96,
-'A','B','C','D','E','F','G','H','I','J','K','L','M',
-'N','O','P','Q','R','S','T','U','V','W','X','Y','Z',
-123,124,125,126,127,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   1,   2,   3,   4,   5,   6,
+    7,   8,   9,   10,  11,  12,  13,  14,  15,  16,  17,  18,  19,  20,  21,
+    22,  23,  24,  25,  26,  27,  28,  29,  30,  31,  32,  33,  34,  35,  36,
+    37,  38,  39,  40,  41,  42,  43,  44,  45,  46,  47,  48,  49,  50,  51,
+    52,  53,  54,  55,  56,  57,  58,  59,  60,  61,  62,  63,  64,  'A', 'B',
+    'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q',
+    'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 91,  92,  93,  94,  95,  96,
+    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
+    'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 123, 124, 125, 126,
+    127, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
+    0,   0,   0,   0,   0,   0,   0,   0,   0,
 };
 
-static const int32_t *const ptable = table+128;
+static const int32_t* const ptable = table + 128;
 
-const int32_t **__ctype_toupper_loc(void)
-{
-	return (void *)&ptable;
+const int32_t** __ctype_toupper_loc(void) {
+  return (void*)&ptable;
 }
diff --git a/fusl/src/ctype/alpha.h b/fusl/src/ctype/alpha.h
index b318c82..bd87587 100644
--- a/fusl/src/ctype/alpha.h
+++ b/fusl/src/ctype/alpha.h
@@ -1,125 +1,167 @@
-18,17,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,17,34,35,36,17,37,38,39,40,
-41,42,43,44,17,45,46,47,16,16,48,16,16,16,16,16,16,16,49,50,51,16,52,53,16,16,
-17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,54,
-17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
-17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
-17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
-17,17,17,55,17,17,17,17,56,17,57,58,59,60,61,62,17,17,17,17,17,17,17,17,17,17,
-17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
-17,17,17,17,17,17,17,63,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,64,65,17,66,67,68,69,70,71,72,
-73,16,16,16,74,75,76,77,78,16,16,16,79,80,16,16,16,16,81,16,16,16,16,16,16,16,
-16,16,17,17,17,82,83,16,16,16,16,16,16,16,16,16,16,16,17,17,17,17,84,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,85,16,
-16,16,16,86,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,87,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-88,89,90,91,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-92,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,0,0,0,0,0,0,0,0,254,255,255,7,254,255,255,7,0,0,0,0,0,4,32,4,
-255,255,127,255,255,255,127,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,195,255,3,0,31,80,0,0,0,0,
-0,0,0,0,0,0,32,0,0,0,0,0,223,60,64,215,255,255,251,255,255,255,255,255,255,
-255,255,255,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,3,252,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,0,254,255,255,255,127,2,254,255,255,255,255,0,0,0,0,0,255,191,182,
-0,255,255,255,7,7,0,0,0,255,7,255,255,255,255,255,255,255,254,255,195,255,255,
-255,255,255,255,255,255,255,255,255,255,239,31,254,225,255,159,0,0,255,255,
-255,255,255,255,0,224,255,255,255,255,255,255,255,255,255,255,255,255,3,0,255,
-255,255,255,255,7,48,4,255,255,255,252,255,31,0,0,255,255,255,1,0,0,0,0,0,0,0,
-0,253,31,0,0,0,0,0,0,240,3,255,127,255,255,255,255,255,255,255,239,255,223,
-225,255,207,255,254,254,238,159,249,255,255,253,197,227,159,89,128,176,207,
-255,3,0,238,135,249,255,255,253,109,195,135,25,2,94,192,255,63,0,238,191,251,
-255,255,253,237,227,191,27,1,0,207,255,0,0,238,159,249,255,255,253,237,227,
-159,25,192,176,207,255,2,0,236,199,61,214,24,199,255,195,199,29,129,0,192,255,
-0,0,238,223,253,255,255,253,239,227,223,29,96,3,207,255,0,0,236,223,253,255,
-255,253,239,227,223,29,96,64,207,255,6,0,236,223,253,255,255,255,255,231,223,
-93,128,0,207,255,0,252,236,255,127,252,255,255,251,47,127,128,95,255,0,0,12,0,
-254,255,255,255,255,127,255,7,63,32,255,3,0,0,0,0,150,37,240,254,174,236,255,
-59,95,32,255,243,0,0,0,0,1,0,0,0,255,3,0,0,255,254,255,255,255,31,254,255,3,
-255,255,254,255,255,255,31,0,0,0,0,0,0,0,0,255,255,255,255,255,255,127,249,
-255,3,255,255,231,193,255,255,127,64,255,51,255,255,255,255,191,32,255,255,
-255,255,255,247,255,255,255,255,255,255,255,255,255,61,127,61,255,255,255,255,
-255,61,255,255,255,255,61,127,61,255,127,255,255,255,255,255,255,255,61,255,
-255,255,255,255,255,255,255,135,0,0,0,0,255,255,0,0,255,255,255,255,255,255,
-255,255,255,255,31,0,254,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,159,255,255,254,255,255,7,255,
-255,255,255,255,255,255,255,255,199,1,0,255,223,15,0,255,255,15,0,255,255,15,
-0,255,223,13,0,255,255,255,255,255,255,207,255,255,1,128,16,255,3,0,0,0,0,255,
-3,255,255,255,255,255,255,255,255,255,255,255,0,255,255,255,255,255,7,255,255,
-255,255,255,255,255,255,63,0,255,255,255,31,255,15,255,1,192,255,255,255,255,
-63,31,0,255,255,255,255,255,15,255,255,255,3,255,3,0,0,0,0,255,255,255,15,255,
-255,255,255,255,255,255,127,254,255,31,0,255,3,255,3,128,0,0,0,0,0,0,0,0,0,0,
-0,255,255,255,255,255,255,239,255,239,15,255,3,0,0,0,0,255,255,255,255,255,
-243,255,255,255,255,255,255,191,255,3,0,255,255,255,255,255,255,63,0,255,227,
-255,255,255,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,222,111,0,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,0,0,0,0,0,0,0,0,255,255,63,63,255,255,255,255,63,63,255,170,255,255,255,
-63,255,255,255,255,255,255,223,95,220,31,207,15,255,31,220,31,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,2,128,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,132,252,47,62,80,189,255,
-243,224,67,0,0,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,255,255,255,255,255,3,0,0,255,255,255,
-255,255,127,255,255,255,255,255,127,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,31,120,12,0,255,255,255,255,191,32,255,255,255,255,
-255,255,255,128,0,0,255,255,127,0,127,127,127,127,127,127,127,127,255,255,255,
-255,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,
-0,254,3,62,31,254,255,255,255,255,255,255,255,255,255,127,224,254,255,255,255,
-255,255,255,255,255,255,255,247,224,255,255,255,255,63,254,255,255,255,255,
-255,255,255,255,255,255,127,0,0,255,255,255,7,0,0,0,0,0,0,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-63,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,31,0,0,0,0,0,0,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,0,0,0,0,0,0,0,255,
-255,255,255,255,63,255,31,255,255,255,15,0,0,255,255,255,255,255,127,240,143,
-255,255,255,128,255,255,255,255,255,255,255,255,255,255,0,0,0,0,128,255,252,
-255,255,255,255,255,255,255,255,255,255,255,255,121,15,0,255,7,0,0,0,0,0,0,0,
-0,0,255,187,247,255,255,255,0,0,0,255,255,255,255,255,255,15,0,255,255,255,
-255,255,255,255,255,15,0,255,3,0,0,252,8,255,255,255,255,255,7,255,255,255,
-255,7,0,255,255,255,31,255,255,255,255,255,255,247,255,0,128,255,3,0,0,0,0,
-255,255,255,255,255,255,127,0,255,63,255,3,255,255,127,4,255,255,255,255,255,
-255,255,127,5,0,0,56,255,255,60,0,126,126,126,0,127,127,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,255,255,255,255,255,7,255,3,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,15,0,255,255,127,248,255,255,255,
-255,255,15,255,255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,
-255,255,255,255,255,255,255,255,255,255,3,0,0,0,0,127,0,248,224,255,253,127,
-95,219,255,255,255,255,255,255,255,255,255,255,255,255,255,3,0,0,0,248,255,
-255,255,255,255,255,255,255,255,255,255,255,63,0,0,255,255,255,255,255,255,
-255,255,252,255,255,255,255,255,255,0,0,0,0,0,255,15,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,223,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,0,
-0,255,3,254,255,255,7,254,255,255,7,192,255,255,255,255,255,255,255,255,255,
-255,127,252,252,252,28,0,0,0,0,255,239,255,255,127,255,255,183,255,63,255,63,
-0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,7,0,0,0,0,
-0,0,0,0,255,255,255,255,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,31,255,255,255,255,255,255,1,0,0,0,0,0,
-255,255,255,127,0,0,255,255,255,7,0,0,0,0,0,0,255,255,255,63,255,255,255,255,
-15,255,62,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,63,255,3,0,0,0,0,0,0,0,0,0,0,63,253,255,255,255,255,191,
-145,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,63,0,255,255,
-255,3,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,192,0,0,0,0,0,0,0,0,111,240,
-239,254,255,255,15,0,0,0,0,0,255,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-255,255,255,255,255,255,63,0,255,255,63,0,255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,255,255,255,255,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,255,255,255,255,255,255,255,255,63,0,0,0,192,255,0,0,252,255,255,
-255,255,255,255,1,0,0,255,255,255,1,255,3,255,255,255,255,255,255,199,255,0,0,
-0,0,0,0,0,0,255,255,255,255,255,255,255,255,30,0,255,3,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,63,0,255,3,0,0,0,0,0,0,255,255,255,
-255,255,255,255,255,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,255,255,255,255,255,255,255,255,255,255,255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,255,255,255,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,255,255,255,255,255,255,255,255,31,0,255,255,255,255,255,127,0,0,
-248,255,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,223,255,255,255,255,
-255,255,255,255,223,100,222,255,235,239,255,255,255,255,255,255,255,191,231,
-223,223,255,255,255,123,95,252,253,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,63,255,255,255,253,255,255,
-247,255,255,255,247,255,255,223,255,255,255,223,255,255,127,255,255,255,127,
-255,255,255,253,255,255,255,253,255,255,247,207,255,255,255,255,255,255,239,
-255,255,255,150,254,247,10,132,234,150,170,150,247,247,94,255,251,255,15,238,
-251,255,15,0,0,0,0,0,0,0,0,
+18, 17, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 17, 34, 35,
+    36, 17, 37, 38, 39, 40, 41, 42, 43, 44, 17, 45, 46, 47, 16, 16, 48, 16, 16,
+    16, 16, 16, 16, 16, 49, 50, 51, 16, 52, 53, 16, 16, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    54, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 55, 17, 17, 17, 17, 56, 17, 57, 58, 59, 60, 61, 62,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 63, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 17, 64, 65, 17, 66, 67, 68, 69, 70, 71, 72, 73, 16, 16, 16, 74, 75, 76,
+    77, 78, 16, 16, 16, 79, 80, 16, 16, 16, 16, 81, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 17, 17, 17, 82, 83, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17,
+    17, 17, 17, 84, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17,
+    85, 16, 16, 16, 16, 86, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 87, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 88, 89, 90, 91, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 92,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 254, 255, 255, 7, 254, 255, 255,
+    7, 0, 0, 0, 0, 0, 4, 32, 4, 255, 255, 127, 255, 255, 255, 127, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 195, 255, 3, 0, 31, 80, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 223, 60, 64, 215, 255, 255, 251, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 191, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 3, 252, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 0, 254, 255, 255, 255, 127, 2, 254, 255, 255, 255, 255, 0, 0, 0,
+    0, 0, 255, 191, 182, 0, 255, 255, 255, 7, 7, 0, 0, 0, 255, 7, 255, 255, 255,
+    255, 255, 255, 255, 254, 255, 195, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 239, 31, 254, 225, 255, 159, 0, 0, 255, 255, 255, 255,
+    255, 255, 0, 224, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 3, 0, 255, 255, 255, 255, 255, 7, 48, 4, 255, 255, 255, 252, 255, 31,
+    0, 0, 255, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0, 0, 253, 31, 0, 0, 0, 0, 0, 0,
+    240, 3, 255, 127, 255, 255, 255, 255, 255, 255, 255, 239, 255, 223, 225,
+    255, 207, 255, 254, 254, 238, 159, 249, 255, 255, 253, 197, 227, 159, 89,
+    128, 176, 207, 255, 3, 0, 238, 135, 249, 255, 255, 253, 109, 195, 135, 25,
+    2, 94, 192, 255, 63, 0, 238, 191, 251, 255, 255, 253, 237, 227, 191, 27, 1,
+    0, 207, 255, 0, 0, 238, 159, 249, 255, 255, 253, 237, 227, 159, 25, 192,
+    176, 207, 255, 2, 0, 236, 199, 61, 214, 24, 199, 255, 195, 199, 29, 129, 0,
+    192, 255, 0, 0, 238, 223, 253, 255, 255, 253, 239, 227, 223, 29, 96, 3, 207,
+    255, 0, 0, 236, 223, 253, 255, 255, 253, 239, 227, 223, 29, 96, 64, 207,
+    255, 6, 0, 236, 223, 253, 255, 255, 255, 255, 231, 223, 93, 128, 0, 207,
+    255, 0, 252, 236, 255, 127, 252, 255, 255, 251, 47, 127, 128, 95, 255, 0, 0,
+    12, 0, 254, 255, 255, 255, 255, 127, 255, 7, 63, 32, 255, 3, 0, 0, 0, 0,
+    150, 37, 240, 254, 174, 236, 255, 59, 95, 32, 255, 243, 0, 0, 0, 0, 1, 0, 0,
+    0, 255, 3, 0, 0, 255, 254, 255, 255, 255, 31, 254, 255, 3, 255, 255, 254,
+    255, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255,
+    127, 249, 255, 3, 255, 255, 231, 193, 255, 255, 127, 64, 255, 51, 255, 255,
+    255, 255, 191, 32, 255, 255, 255, 255, 255, 247, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 61, 127, 61, 255, 255, 255, 255, 255, 61, 255, 255, 255,
+    255, 61, 127, 61, 255, 127, 255, 255, 255, 255, 255, 255, 255, 61, 255, 255,
+    255, 255, 255, 255, 255, 255, 135, 0, 0, 0, 0, 255, 255, 0, 0, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 31, 0, 254, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 159, 255, 255, 254, 255, 255,
+    7, 255, 255, 255, 255, 255, 255, 255, 255, 255, 199, 1, 0, 255, 223, 15, 0,
+    255, 255, 15, 0, 255, 255, 15, 0, 255, 223, 13, 0, 255, 255, 255, 255, 255,
+    255, 207, 255, 255, 1, 128, 16, 255, 3, 0, 0, 0, 0, 255, 3, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255, 255, 7, 255,
+    255, 255, 255, 255, 255, 255, 255, 63, 0, 255, 255, 255, 31, 255, 15, 255,
+    1, 192, 255, 255, 255, 255, 63, 31, 0, 255, 255, 255, 255, 255, 15, 255,
+    255, 255, 3, 255, 3, 0, 0, 0, 0, 255, 255, 255, 15, 255, 255, 255, 255, 255,
+    255, 255, 127, 254, 255, 31, 0, 255, 3, 255, 3, 128, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 255, 255, 255, 255, 255, 255, 239, 255, 239, 15, 255, 3, 0, 0, 0,
+    0, 255, 255, 255, 255, 255, 243, 255, 255, 255, 255, 255, 255, 191, 255, 3,
+    0, 255, 255, 255, 255, 255, 255, 63, 0, 255, 227, 255, 255, 255, 255, 255,
+    63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 111, 0, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 63, 63, 255, 255,
+    255, 255, 63, 63, 255, 170, 255, 255, 255, 63, 255, 255, 255, 255, 255, 255,
+    223, 95, 220, 31, 207, 15, 255, 31, 220, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 2, 128, 0, 0, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132,
+    252, 47, 62, 80, 189, 255, 243, 224, 67, 0, 0, 255, 255, 255, 255, 255, 1,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 255, 255, 255, 255, 255, 255, 3, 0, 0,
+    255, 255, 255, 255, 255, 127, 255, 255, 255, 255, 255, 127, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 120,
+    12, 0, 255, 255, 255, 255, 191, 32, 255, 255, 255, 255, 255, 255, 255, 128,
+    0, 0, 255, 255, 127, 0, 127, 127, 127, 127, 127, 127, 127, 127, 255, 255,
+    255, 255, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0, 254, 3, 62, 31, 254, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 127, 224, 254, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 247, 224, 255, 255, 255, 255, 63, 254, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 127, 0, 0, 255, 255, 255, 7, 0,
+    0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 0, 0,
+    0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 63,
+    255, 31, 255, 255, 255, 15, 0, 0, 255, 255, 255, 255, 255, 127, 240, 143,
+    255, 255, 255, 128, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0,
+    0, 0, 128, 255, 252, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 121, 15, 0, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 187, 247, 255, 255,
+    255, 0, 0, 0, 255, 255, 255, 255, 255, 255, 15, 0, 255, 255, 255, 255, 255,
+    255, 255, 255, 15, 0, 255, 3, 0, 0, 252, 8, 255, 255, 255, 255, 255, 7, 255,
+    255, 255, 255, 7, 0, 255, 255, 255, 31, 255, 255, 255, 255, 255, 255, 247,
+    255, 0, 128, 255, 3, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 127, 0, 255,
+    63, 255, 3, 255, 255, 127, 4, 255, 255, 255, 255, 255, 255, 255, 127, 5, 0,
+    0, 56, 255, 255, 60, 0, 126, 126, 126, 0, 127, 127, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 7, 255, 3, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 15, 0, 255, 255, 127, 248, 255, 255, 255, 255, 255, 15, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 3, 0, 0, 0, 0, 127,
+    0, 248, 224, 255, 253, 127, 95, 219, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 3, 0, 0, 0, 248, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 63, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255,
+    252, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0, 255, 15, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 223, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 31, 0, 0, 255, 3, 254, 255, 255, 7, 254,
+    255, 255, 7, 192, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 127,
+    252, 252, 252, 28, 0, 0, 0, 0, 255, 239, 255, 255, 127, 255, 255, 183, 255,
+    63, 255, 63, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255,
+    255, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 31, 255, 255, 255, 255, 255,
+    255, 1, 0, 0, 0, 0, 0, 255, 255, 255, 127, 0, 0, 255, 255, 255, 7, 0, 0, 0,
+    0, 0, 0, 255, 255, 255, 63, 255, 255, 255, 255, 15, 255, 62, 0, 0, 0, 0, 0,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 63, 255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 253, 255,
+    255, 255, 255, 191, 145, 255, 255, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 63, 0, 255, 255, 255, 3, 0, 0, 0, 0, 0,
+    0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 192, 0, 0, 0, 0, 0, 0, 0, 0,
+    111, 240, 239, 254, 255, 255, 15, 0, 0, 0, 0, 0, 255, 255, 255, 31, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 63, 0,
+    255, 255, 63, 0, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255,
+    255, 255, 63, 0, 0, 0, 192, 255, 0, 0, 252, 255, 255, 255, 255, 255, 255, 1,
+    0, 0, 255, 255, 255, 1, 255, 3, 255, 255, 255, 255, 255, 255, 199, 255, 0,
+    0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 30, 0, 255, 3,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+    255, 255, 255, 63, 0, 255, 3, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255,
+    255, 255, 255, 255, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 1, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+    255, 255, 255, 255, 255, 31, 0, 255, 255, 255, 255, 255, 127, 0, 0, 248,
+    255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 223, 255, 255, 255, 255, 255, 255, 255,
+    255, 223, 100, 222, 255, 235, 239, 255, 255, 255, 255, 255, 255, 255, 191,
+    231, 223, 223, 255, 255, 255, 123, 95, 252, 253, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 63, 255, 255, 255, 253, 255, 255, 247, 255,
+    255, 255, 247, 255, 255, 223, 255, 255, 255, 223, 255, 255, 127, 255, 255,
+    255, 127, 255, 255, 255, 253, 255, 255, 255, 253, 255, 255, 247, 207, 255,
+    255, 255, 255, 255, 255, 239, 255, 255, 255, 150, 254, 247, 10, 132, 234,
+    150, 170, 150, 247, 247, 94, 255, 251, 255, 15, 238, 251, 255, 15, 0, 0, 0,
+    0, 0, 0, 0, 0,
diff --git a/fusl/src/ctype/isalnum.c b/fusl/src/ctype/isalnum.c
index 2214936..a39f1c2 100644
--- a/fusl/src/ctype/isalnum.c
+++ b/fusl/src/ctype/isalnum.c
@@ -1,14 +1,12 @@
 #include <ctype.h>
 #include "libc.h"
 
-int isalnum(int c)
-{
-	return isalpha(c) || isdigit(c);
+int isalnum(int c) {
+  return isalpha(c) || isdigit(c);
 }
 
-int __isalnum_l(int c, locale_t l)
-{
-	return isalnum(c);
+int __isalnum_l(int c, locale_t l) {
+  return isalnum(c);
 }
 
 weak_alias(__isalnum_l, isalnum_l);
diff --git a/fusl/src/ctype/isalpha.c b/fusl/src/ctype/isalpha.c
index f155d3a..b69aa82 100644
--- a/fusl/src/ctype/isalpha.c
+++ b/fusl/src/ctype/isalpha.c
@@ -2,14 +2,12 @@
 #include "libc.h"
 #undef isalpha
 
-int isalpha(int c)
-{
-	return ((unsigned)c|32)-'a' < 26;
+int isalpha(int c) {
+  return ((unsigned)c | 32) - 'a' < 26;
 }
 
-int __isalpha_l(int c, locale_t l)
-{
-	return isalpha(c);
+int __isalpha_l(int c, locale_t l) {
+  return isalpha(c);
 }
 
 weak_alias(__isalpha_l, isalpha_l);
diff --git a/fusl/src/ctype/isascii.c b/fusl/src/ctype/isascii.c
index 54ad3bf..9fb877c 100644
--- a/fusl/src/ctype/isascii.c
+++ b/fusl/src/ctype/isascii.c
@@ -1,7 +1,6 @@
 #include <ctype.h>
 #undef isascii
 
-int isascii(int c)
-{
-	return !(c&~0x7f);
+int isascii(int c) {
+  return !(c & ~0x7f);
 }
diff --git a/fusl/src/ctype/isblank.c b/fusl/src/ctype/isblank.c
index 299120e..87ad727 100644
--- a/fusl/src/ctype/isblank.c
+++ b/fusl/src/ctype/isblank.c
@@ -1,14 +1,12 @@
 #include <ctype.h>
 #include "libc.h"
 
-int isblank(int c)
-{
-	return (c == ' ' || c == '\t');
+int isblank(int c) {
+  return (c == ' ' || c == '\t');
 }
 
-int __isblank_l(int c, locale_t l)
-{
-	return isblank(c);
+int __isblank_l(int c, locale_t l) {
+  return isblank(c);
 }
 
 weak_alias(__isblank_l, isblank_l);
diff --git a/fusl/src/ctype/iscntrl.c b/fusl/src/ctype/iscntrl.c
index cb4114a..a3fd875 100644
--- a/fusl/src/ctype/iscntrl.c
+++ b/fusl/src/ctype/iscntrl.c
@@ -1,14 +1,12 @@
 #include <ctype.h>
 #include "libc.h"
 
-int iscntrl(int c)
-{
-	return (unsigned)c < 0x20 || c == 0x7f;
+int iscntrl(int c) {
+  return (unsigned)c < 0x20 || c == 0x7f;
 }
 
-int __iscntrl_l(int c, locale_t l)
-{
-	return iscntrl(c);
+int __iscntrl_l(int c, locale_t l) {
+  return iscntrl(c);
 }
 
 weak_alias(__iscntrl_l, iscntrl_l);
diff --git a/fusl/src/ctype/isdigit.c b/fusl/src/ctype/isdigit.c
index 4d8a103..88cea10 100644
--- a/fusl/src/ctype/isdigit.c
+++ b/fusl/src/ctype/isdigit.c
@@ -2,14 +2,12 @@
 #include "libc.h"
 #undef isdigit
 
-int isdigit(int c)
-{
-	return (unsigned)c-'0' < 10;
+int isdigit(int c) {
+  return (unsigned)c - '0' < 10;
 }
 
-int __isdigit_l(int c, locale_t l)
-{
-	return isdigit(c);
+int __isdigit_l(int c, locale_t l) {
+  return isdigit(c);
 }
 
 weak_alias(__isdigit_l, isdigit_l);
diff --git a/fusl/src/ctype/isgraph.c b/fusl/src/ctype/isgraph.c
index a0aae08..9a6bacc 100644
--- a/fusl/src/ctype/isgraph.c
+++ b/fusl/src/ctype/isgraph.c
@@ -2,14 +2,12 @@
 #include "libc.h"
 #undef isgraph
 
-int isgraph(int c)
-{
-	return (unsigned)c-0x21 < 0x5e;
+int isgraph(int c) {
+  return (unsigned)c - 0x21 < 0x5e;
 }
 
-int __isgraph_l(int c, locale_t l)
-{
-	return isgraph(c);
+int __isgraph_l(int c, locale_t l) {
+  return isgraph(c);
 }
 
 weak_alias(__isgraph_l, isgraph_l);
diff --git a/fusl/src/ctype/islower.c b/fusl/src/ctype/islower.c
index 0264021..c7e0b46 100644
--- a/fusl/src/ctype/islower.c
+++ b/fusl/src/ctype/islower.c
@@ -2,14 +2,12 @@
 #include "libc.h"
 #undef islower
 
-int islower(int c)
-{
-	return (unsigned)c-'a' < 26;
+int islower(int c) {
+  return (unsigned)c - 'a' < 26;
 }
 
-int __islower_l(int c, locale_t l)
-{
-	return islower(c);
+int __islower_l(int c, locale_t l) {
+  return islower(c);
 }
 
 weak_alias(__islower_l, islower_l);
diff --git a/fusl/src/ctype/isprint.c b/fusl/src/ctype/isprint.c
index 067275f..e5b3e17 100644
--- a/fusl/src/ctype/isprint.c
+++ b/fusl/src/ctype/isprint.c
@@ -2,14 +2,12 @@
 #include "libc.h"
 #undef isprint
 
-int isprint(int c)
-{
-	return (unsigned)c-0x20 < 0x5f;
+int isprint(int c) {
+  return (unsigned)c - 0x20 < 0x5f;
 }
 
-int __isprint_l(int c, locale_t l)
-{
-	return isprint(c);
+int __isprint_l(int c, locale_t l) {
+  return isprint(c);
 }
 
 weak_alias(__isprint_l, isprint_l);
diff --git a/fusl/src/ctype/ispunct.c b/fusl/src/ctype/ispunct.c
index e772d76..4aa1dd4 100644
--- a/fusl/src/ctype/ispunct.c
+++ b/fusl/src/ctype/ispunct.c
@@ -1,14 +1,12 @@
 #include <ctype.h>
 #include "libc.h"
 
-int ispunct(int c)
-{
-	return isgraph(c) && !isalnum(c);
+int ispunct(int c) {
+  return isgraph(c) && !isalnum(c);
 }
 
-int __ispunct_l(int c, locale_t l)
-{
-	return ispunct(c);
+int __ispunct_l(int c, locale_t l) {
+  return ispunct(c);
 }
 
 weak_alias(__ispunct_l, ispunct_l);
diff --git a/fusl/src/ctype/isspace.c b/fusl/src/ctype/isspace.c
index 231e907..ba01406 100644
--- a/fusl/src/ctype/isspace.c
+++ b/fusl/src/ctype/isspace.c
@@ -2,14 +2,12 @@
 #include "libc.h"
 #undef isspace
 
-int isspace(int c)
-{
-	return c == ' ' || (unsigned)c-'\t' < 5;
+int isspace(int c) {
+  return c == ' ' || (unsigned)c - '\t' < 5;
 }
 
-int __isspace_l(int c, locale_t l)
-{
-	return isspace(c);
+int __isspace_l(int c, locale_t l) {
+  return isspace(c);
 }
 
 weak_alias(__isspace_l, isspace_l);
diff --git a/fusl/src/ctype/isupper.c b/fusl/src/ctype/isupper.c
index 68c36f4..3ee62ff 100644
--- a/fusl/src/ctype/isupper.c
+++ b/fusl/src/ctype/isupper.c
@@ -2,14 +2,12 @@
 #include "libc.h"
 #undef isupper
 
-int isupper(int c)
-{
-	return (unsigned)c-'A' < 26;
+int isupper(int c) {
+  return (unsigned)c - 'A' < 26;
 }
 
-int __isupper_l(int c, locale_t l)
-{
-	return isupper(c);
+int __isupper_l(int c, locale_t l) {
+  return isupper(c);
 }
 
 weak_alias(__isupper_l, isupper_l);
diff --git a/fusl/src/ctype/iswalnum.c b/fusl/src/ctype/iswalnum.c
index a6082da..2db4579 100644
--- a/fusl/src/ctype/iswalnum.c
+++ b/fusl/src/ctype/iswalnum.c
@@ -1,14 +1,12 @@
 #include <wctype.h>
 #include "libc.h"
 
-int iswalnum(wint_t wc)
-{
-	return iswdigit(wc) || iswalpha(wc);
+int iswalnum(wint_t wc) {
+  return iswdigit(wc) || iswalpha(wc);
 }
 
-int __iswalnum_l(wint_t c, locale_t l)
-{
-	return iswalnum(c);
+int __iswalnum_l(wint_t c, locale_t l) {
+  return iswalnum(c);
 }
 
 weak_alias(__iswalnum_l, iswalnum_l);
diff --git a/fusl/src/ctype/iswalpha.c b/fusl/src/ctype/iswalpha.c
index 00f9d81..b062a6f 100644
--- a/fusl/src/ctype/iswalpha.c
+++ b/fusl/src/ctype/iswalpha.c
@@ -5,18 +5,16 @@
 #include "alpha.h"
 };
 
-int iswalpha(wint_t wc)
-{
-	if (wc<0x20000U)
-		return (table[table[wc>>8]*32+((wc&255)>>3)]>>(wc&7))&1;
-	if (wc<0x2fffeU)
-		return 1;
-	return 0;
+int iswalpha(wint_t wc) {
+  if (wc < 0x20000U)
+    return (table[table[wc >> 8] * 32 + ((wc & 255) >> 3)] >> (wc & 7)) & 1;
+  if (wc < 0x2fffeU)
+    return 1;
+  return 0;
 }
 
-int __iswalpha_l(wint_t c, locale_t l)
-{
-	return iswalpha(c);
+int __iswalpha_l(wint_t c, locale_t l) {
+  return iswalpha(c);
 }
 
 weak_alias(__iswalpha_l, iswalpha_l);
diff --git a/fusl/src/ctype/iswblank.c b/fusl/src/ctype/iswblank.c
index d9b33ef..bbbf222 100644
--- a/fusl/src/ctype/iswblank.c
+++ b/fusl/src/ctype/iswblank.c
@@ -2,14 +2,12 @@
 #include <ctype.h>
 #include "libc.h"
 
-int iswblank(wint_t wc)
-{
-	return isblank(wc);
+int iswblank(wint_t wc) {
+  return isblank(wc);
 }
 
-int __iswblank_l(wint_t c, locale_t l)
-{
-	return iswblank(c);
+int __iswblank_l(wint_t c, locale_t l) {
+  return iswblank(c);
 }
 
 weak_alias(__iswblank_l, iswblank_l);
diff --git a/fusl/src/ctype/iswcntrl.c b/fusl/src/ctype/iswcntrl.c
index daace82..9832397 100644
--- a/fusl/src/ctype/iswcntrl.c
+++ b/fusl/src/ctype/iswcntrl.c
@@ -1,17 +1,13 @@
 #include <wctype.h>
 #include "libc.h"
 
-int iswcntrl(wint_t wc)
-{
-	return (unsigned)wc < 32
-	    || (unsigned)(wc-0x7f) < 33
-	    || (unsigned)(wc-0x2028) < 2
-	    || (unsigned)(wc-0xfff9) < 3;
+int iswcntrl(wint_t wc) {
+  return (unsigned)wc < 32 || (unsigned)(wc - 0x7f) < 33 ||
+         (unsigned)(wc - 0x2028) < 2 || (unsigned)(wc - 0xfff9) < 3;
 }
 
-int __iswcntrl_l(wint_t c, locale_t l)
-{
-	return iswcntrl(c);
+int __iswcntrl_l(wint_t c, locale_t l) {
+  return iswcntrl(c);
 }
 
 weak_alias(__iswcntrl_l, iswcntrl_l);
diff --git a/fusl/src/ctype/iswctype.c b/fusl/src/ctype/iswctype.c
index 3d9c2cc..c43cac7 100644
--- a/fusl/src/ctype/iswctype.c
+++ b/fusl/src/ctype/iswctype.c
@@ -2,74 +2,78 @@
 #include <string.h>
 #include "libc.h"
 
-#define WCTYPE_ALNUM  1
-#define WCTYPE_ALPHA  2
-#define WCTYPE_BLANK  3
-#define WCTYPE_CNTRL  4
-#define WCTYPE_DIGIT  5
-#define WCTYPE_GRAPH  6
-#define WCTYPE_LOWER  7
-#define WCTYPE_PRINT  8
-#define WCTYPE_PUNCT  9
-#define WCTYPE_SPACE  10
-#define WCTYPE_UPPER  11
+#define WCTYPE_ALNUM 1
+#define WCTYPE_ALPHA 2
+#define WCTYPE_BLANK 3
+#define WCTYPE_CNTRL 4
+#define WCTYPE_DIGIT 5
+#define WCTYPE_GRAPH 6
+#define WCTYPE_LOWER 7
+#define WCTYPE_PRINT 8
+#define WCTYPE_PUNCT 9
+#define WCTYPE_SPACE 10
+#define WCTYPE_UPPER 11
 #define WCTYPE_XDIGIT 12
 
-int iswctype(wint_t wc, wctype_t type)
-{
-	switch (type) {
-	case WCTYPE_ALNUM:
-		return iswalnum(wc);
-	case WCTYPE_ALPHA:
-		return iswalpha(wc);
-	case WCTYPE_BLANK:
-		return iswblank(wc);
-	case WCTYPE_CNTRL:
-		return iswcntrl(wc);
-	case WCTYPE_DIGIT:
-		return iswdigit(wc);
-	case WCTYPE_GRAPH:
-		return iswgraph(wc);
-	case WCTYPE_LOWER:
-		return iswlower(wc);
-	case WCTYPE_PRINT:
-		return iswprint(wc);
-	case WCTYPE_PUNCT:
-		return iswpunct(wc);
-	case WCTYPE_SPACE:
-		return iswspace(wc);
-	case WCTYPE_UPPER:
-		return iswupper(wc);
-	case WCTYPE_XDIGIT:
-		return iswxdigit(wc);
-	}
-	return 0;
+int iswctype(wint_t wc, wctype_t type) {
+  switch (type) {
+    case WCTYPE_ALNUM:
+      return iswalnum(wc);
+    case WCTYPE_ALPHA:
+      return iswalpha(wc);
+    case WCTYPE_BLANK:
+      return iswblank(wc);
+    case WCTYPE_CNTRL:
+      return iswcntrl(wc);
+    case WCTYPE_DIGIT:
+      return iswdigit(wc);
+    case WCTYPE_GRAPH:
+      return iswgraph(wc);
+    case WCTYPE_LOWER:
+      return iswlower(wc);
+    case WCTYPE_PRINT:
+      return iswprint(wc);
+    case WCTYPE_PUNCT:
+      return iswpunct(wc);
+    case WCTYPE_SPACE:
+      return iswspace(wc);
+    case WCTYPE_UPPER:
+      return iswupper(wc);
+    case WCTYPE_XDIGIT:
+      return iswxdigit(wc);
+  }
+  return 0;
 }
 
-wctype_t wctype(const char *s)
-{
-	int i;
-	const char *p;
-	/* order must match! */
-	static const char names[] =
-		"alnum\0" "alpha\0" "blank\0"
-		"cntrl\0" "digit\0" "graph\0"
-		"lower\0" "print\0" "punct\0"
-		"space\0" "upper\0" "xdigit";
-	for (i=1, p=names; *p; i++, p+=6)
-		if (*s == *p && !strcmp(s, p))
-			return i;
-	return 0;
+wctype_t wctype(const char* s) {
+  int i;
+  const char* p;
+  /* order must match! */
+  static const char names[] =
+      "alnum\0"
+      "alpha\0"
+      "blank\0"
+      "cntrl\0"
+      "digit\0"
+      "graph\0"
+      "lower\0"
+      "print\0"
+      "punct\0"
+      "space\0"
+      "upper\0"
+      "xdigit";
+  for (i = 1, p = names; *p; i++, p += 6)
+    if (*s == *p && !strcmp(s, p))
+      return i;
+  return 0;
 }
 
-int __iswctype_l(wint_t c, wctype_t t, locale_t l)
-{
-	return iswctype(c, t);
+int __iswctype_l(wint_t c, wctype_t t, locale_t l) {
+  return iswctype(c, t);
 }
 
-wctype_t __wctype_l(const char *s, locale_t l)
-{
-	return wctype(s);
+wctype_t __wctype_l(const char* s, locale_t l) {
+  return wctype(s);
 }
 
 weak_alias(__iswctype_l, iswctype_l);
diff --git a/fusl/src/ctype/iswdigit.c b/fusl/src/ctype/iswdigit.c
index ed9a88e..d67144d 100644
--- a/fusl/src/ctype/iswdigit.c
+++ b/fusl/src/ctype/iswdigit.c
@@ -3,14 +3,12 @@
 
 #undef iswdigit
 
-int iswdigit(wint_t wc)
-{
-	return (unsigned)wc-'0' < 10;
+int iswdigit(wint_t wc) {
+  return (unsigned)wc - '0' < 10;
 }
 
-int __iswdigit_l(wint_t c, locale_t l)
-{
-	return iswdigit(c);
+int __iswdigit_l(wint_t c, locale_t l) {
+  return iswdigit(c);
 }
 
 weak_alias(__iswdigit_l, iswdigit_l);
diff --git a/fusl/src/ctype/iswgraph.c b/fusl/src/ctype/iswgraph.c
index 0ea5ca3..77f3576 100644
--- a/fusl/src/ctype/iswgraph.c
+++ b/fusl/src/ctype/iswgraph.c
@@ -1,15 +1,13 @@
 #include <wctype.h>
 #include "libc.h"
 
-int iswgraph(wint_t wc)
-{
-	/* ISO C defines this function as: */
-	return !iswspace(wc) && iswprint(wc);
+int iswgraph(wint_t wc) {
+  /* ISO C defines this function as: */
+  return !iswspace(wc) && iswprint(wc);
 }
 
-int __iswgraph_l(wint_t c, locale_t l)
-{
-	return iswgraph(c);
+int __iswgraph_l(wint_t c, locale_t l) {
+  return iswgraph(c);
 }
 
 weak_alias(__iswgraph_l, iswgraph_l);
diff --git a/fusl/src/ctype/iswlower.c b/fusl/src/ctype/iswlower.c
index 79df44a..0dbf838 100644
--- a/fusl/src/ctype/iswlower.c
+++ b/fusl/src/ctype/iswlower.c
@@ -1,14 +1,12 @@
 #include <wctype.h>
 #include "libc.h"
 
-int iswlower(wint_t wc)
-{
-	return towupper(wc) != wc;
+int iswlower(wint_t wc) {
+  return towupper(wc) != wc;
 }
 
-int __iswlower_l(wint_t c, locale_t l)
-{
-	return iswlower(c);
+int __iswlower_l(wint_t c, locale_t l) {
+  return iswlower(c);
 }
 
 weak_alias(__iswlower_l, iswlower_l);
diff --git a/fusl/src/ctype/iswprint.c b/fusl/src/ctype/iswprint.c
index 69856e0..f0fba90 100644
--- a/fusl/src/ctype/iswprint.c
+++ b/fusl/src/ctype/iswprint.c
@@ -8,20 +8,19 @@
  * The following code is optimized heavily to make hot paths for the
  * expected printable characters. */
 
-int iswprint(wint_t wc)
-{
-	if (wc < 0xffU)
-		return (wc+1 & 0x7f) >= 0x21;
-	if (wc < 0x2028U || wc-0x202aU < 0xd800-0x202a || wc-0xe000U < 0xfff9-0xe000)
-		return 1;
-	if (wc-0xfffcU > 0x10ffff-0xfffc || (wc&0xfffe)==0xfffe)
-		return 0;
-	return 1;
+int iswprint(wint_t wc) {
+  if (wc < 0xffU)
+    return (wc + 1 & 0x7f) >= 0x21;
+  if (wc < 0x2028U || wc - 0x202aU < 0xd800 - 0x202a ||
+      wc - 0xe000U < 0xfff9 - 0xe000)
+    return 1;
+  if (wc - 0xfffcU > 0x10ffff - 0xfffc || (wc & 0xfffe) == 0xfffe)
+    return 0;
+  return 1;
 }
 
-int __iswprint_l(wint_t c, locale_t l)
-{
-	return iswprint(c);
+int __iswprint_l(wint_t c, locale_t l) {
+  return iswprint(c);
 }
 
 weak_alias(__iswprint_l, iswprint_l);
diff --git a/fusl/src/ctype/iswpunct.c b/fusl/src/ctype/iswpunct.c
index d880104..1527a47 100644
--- a/fusl/src/ctype/iswpunct.c
+++ b/fusl/src/ctype/iswpunct.c
@@ -5,16 +5,14 @@
 #include "punct.h"
 };
 
-int iswpunct(wint_t wc)
-{
-	if (wc<0x20000U)
-		return (table[table[wc>>8]*32+((wc&255)>>3)]>>(wc&7))&1;
-	return 0;
+int iswpunct(wint_t wc) {
+  if (wc < 0x20000U)
+    return (table[table[wc >> 8] * 32 + ((wc & 255) >> 3)] >> (wc & 7)) & 1;
+  return 0;
 }
 
-int __iswpunct_l(wint_t c, locale_t l)
-{
-	return iswpunct(c);
+int __iswpunct_l(wint_t c, locale_t l) {
+  return iswpunct(c);
 }
 
 weak_alias(__iswpunct_l, iswpunct_l);
diff --git a/fusl/src/ctype/iswspace.c b/fusl/src/ctype/iswspace.c
index 75ae7e8..70057c2 100644
--- a/fusl/src/ctype/iswspace.c
+++ b/fusl/src/ctype/iswspace.c
@@ -6,20 +6,16 @@
  * minus non-breaking spaces (U+00A0, U+2007, and U+202F) and script-
  * specific characters with non-blank glyphs (U+1680 and U+180E). */
 
-int iswspace(wint_t wc)
-{
-	static const wchar_t spaces[] = {
-		' ', '\t', '\n', '\r', 11, 12,  0x0085,
-		0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005,
-		0x2006, 0x2008, 0x2009, 0x200a,
-		0x2028, 0x2029, 0x205f, 0x3000, 0
-	};
-	return wc && wcschr(spaces, wc);
+int iswspace(wint_t wc) {
+  static const wchar_t spaces[] = {
+      ' ',    '\t',   '\n',   '\r',   11,     12,     0x0085, 0x2000,
+      0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2008, 0x2009,
+      0x200a, 0x2028, 0x2029, 0x205f, 0x3000, 0};
+  return wc && wcschr(spaces, wc);
 }
 
-int __iswspace_l(wint_t c, locale_t l)
-{
-	return iswspace(c);
+int __iswspace_l(wint_t c, locale_t l) {
+  return iswspace(c);
 }
 
 weak_alias(__iswspace_l, iswspace_l);
diff --git a/fusl/src/ctype/iswupper.c b/fusl/src/ctype/iswupper.c
index 6e1e029..850a6e0 100644
--- a/fusl/src/ctype/iswupper.c
+++ b/fusl/src/ctype/iswupper.c
@@ -1,14 +1,12 @@
 #include <wctype.h>
 #include "libc.h"
 
-int iswupper(wint_t wc)
-{
-	return towlower(wc) != wc;
+int iswupper(wint_t wc) {
+  return towlower(wc) != wc;
 }
 
-int __iswupper_l(wint_t c, locale_t l)
-{
-	return iswupper(c);
+int __iswupper_l(wint_t c, locale_t l) {
+  return iswupper(c);
 }
 
 weak_alias(__iswupper_l, iswupper_l);
diff --git a/fusl/src/ctype/iswxdigit.c b/fusl/src/ctype/iswxdigit.c
index 1e27f1f..92cf963 100644
--- a/fusl/src/ctype/iswxdigit.c
+++ b/fusl/src/ctype/iswxdigit.c
@@ -1,14 +1,12 @@
 #include <wctype.h>
 #include "libc.h"
 
-int iswxdigit(wint_t wc)
-{
-	return (unsigned)(wc-'0') < 10 || (unsigned)((wc|32)-'a') < 6;
+int iswxdigit(wint_t wc) {
+  return (unsigned)(wc - '0') < 10 || (unsigned)((wc | 32) - 'a') < 6;
 }
 
-int __iswxdigit_l(wint_t c, locale_t l)
-{
-	return iswxdigit(c);
+int __iswxdigit_l(wint_t c, locale_t l) {
+  return iswxdigit(c);
 }
 
 weak_alias(__iswxdigit_l, iswxdigit_l);
diff --git a/fusl/src/ctype/isxdigit.c b/fusl/src/ctype/isxdigit.c
index 0e9152a..29ba9a3 100644
--- a/fusl/src/ctype/isxdigit.c
+++ b/fusl/src/ctype/isxdigit.c
@@ -1,14 +1,12 @@
 #include <ctype.h>
 #include "libc.h"
 
-int isxdigit(int c)
-{
-	return isdigit(c) || ((unsigned)c|32)-'a' < 6;
+int isxdigit(int c) {
+  return isdigit(c) || ((unsigned)c | 32) - 'a' < 6;
 }
 
-int __isxdigit_l(int c, locale_t l)
-{
-	return isxdigit(c);
+int __isxdigit_l(int c, locale_t l) {
+  return isxdigit(c);
 }
 
 weak_alias(__isxdigit_l, isxdigit_l);
diff --git a/fusl/src/ctype/nonspacing.h b/fusl/src/ctype/nonspacing.h
index 4c25ef5..f1cfc90 100644
--- a/fusl/src/ctype/nonspacing.h
+++ b/fusl/src/ctype/nonspacing.h
@@ -1,62 +1,89 @@
-16,16,16,18,19,20,21,22,23,24,25,26,27,28,29,30,31,16,16,32,16,16,16,33,34,35,
-36,37,38,39,16,16,40,16,16,16,16,16,16,16,16,16,16,16,41,42,16,16,43,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,44,16,45,46,47,48,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,49,16,16,50,51,16,52,16,16,
-16,16,16,16,16,16,53,16,16,16,16,16,54,55,16,16,16,16,56,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,57,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,58,59,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,3,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,255,255,255,191,
-182,0,0,0,0,0,0,0,31,0,255,7,0,0,0,0,0,248,255,255,0,0,1,0,0,0,0,0,0,0,0,0,0,
-0,192,191,159,61,0,0,0,128,2,0,0,0,255,255,255,7,0,0,0,0,0,0,0,0,0,0,192,255,
-1,0,0,0,0,0,0,248,15,0,0,0,192,251,239,62,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,240,255,255,127,7,0,0,0,0,0,0,20,254,33,254,0,12,0,0,0,2,0,0,0,0,0,
-0,16,30,32,0,0,12,0,0,0,6,0,0,0,0,0,0,16,134,57,2,0,0,0,35,0,6,0,0,0,0,0,0,16,
-190,33,0,0,12,0,0,0,2,0,0,0,0,0,0,144,30,32,64,0,12,0,0,0,4,0,0,0,0,0,0,0,1,
-32,0,0,0,0,0,0,0,0,0,0,0,0,0,192,193,61,96,0,12,0,0,0,0,0,0,0,0,0,0,144,64,48,
-0,0,12,0,0,0,0,0,0,0,0,0,0,0,30,32,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,4,92,0,0,0,
-0,0,0,0,0,0,0,0,242,7,128,127,0,0,0,0,0,0,0,0,0,0,0,0,242,27,0,63,0,0,0,0,0,0,
-0,0,0,3,0,0,160,2,0,0,0,0,0,0,254,127,223,224,255,254,255,255,255,31,64,0,0,0,
-0,0,0,0,0,0,0,0,0,224,253,102,0,0,0,195,1,0,30,0,100,32,0,32,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-28,0,0,0,28,0,0,0,12,0,0,0,12,0,0,0,0,0,0,0,176,63,64,254,15,32,0,0,0,0,0,56,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,1,4,
-14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,1,0,0,0,0,0,0,64,
-127,229,31,248,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,208,23,4,0,0,
-0,0,248,15,0,3,0,0,0,60,11,0,0,0,0,0,0,64,163,3,0,0,0,0,0,0,240,207,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,255,253,33,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,255,255,255,255,127,0,0,240,0,248,0,0,0,124,0,0,0,0,0,0,31,
-252,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,
-0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,247,63,0,0,0,128,0,0,0,0,0,
-0,0,0,0,0,3,0,68,8,0,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,255,
-255,3,0,0,0,0,0,192,63,0,0,128,255,3,0,0,0,0,0,7,0,0,0,0,0,200,19,0,0,0,0,0,0,
-0,0,0,0,0,0,0,126,102,0,8,16,0,0,0,0,0,0,0,0,0,0,0,0,157,193,2,0,0,0,0,48,64,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,33,0,0,0,0,0,64,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,127,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,32,110,240,0,0,0,0,0,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,255,127,0,0,0,0,0,0,0,3,0,0,0,0,0,120,38,0,0,
-0,0,0,0,0,0,7,0,0,0,128,239,31,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,192,127,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,40,191,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,128,3,248,255,231,15,0,0,0,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-28,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+16, 16, 16, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 16, 16, 32,
+    16, 16, 16, 33, 34, 35, 36, 37, 38, 39, 16, 16, 40, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 41, 42, 16, 16, 43, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 44, 16, 45, 46, 47, 48,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 49, 16, 16, 50, 51, 16, 52, 16, 16, 16, 16, 16, 16, 16, 16, 53,
+    16, 16, 16, 16, 16, 54, 55, 16, 16, 16, 16, 56, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 57, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 58, 59, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 248, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 254,
+    255, 255, 255, 255, 191, 182, 0, 0, 0, 0, 0, 0, 0, 31, 0, 255, 7, 0, 0, 0,
+    0, 0, 248, 255, 255, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 191,
+    159, 61, 0, 0, 0, 128, 2, 0, 0, 0, 255, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 192, 255, 1, 0, 0, 0, 0, 0, 0, 248, 15, 0, 0, 0, 192, 251, 239, 62, 0,
+    0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 255,
+    255, 127, 7, 0, 0, 0, 0, 0, 0, 20, 254, 33, 254, 0, 12, 0, 0, 0, 2, 0, 0, 0,
+    0, 0, 0, 16, 30, 32, 0, 0, 12, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 16, 134, 57, 2,
+    0, 0, 0, 35, 0, 6, 0, 0, 0, 0, 0, 0, 16, 190, 33, 0, 0, 12, 0, 0, 0, 2, 0,
+    0, 0, 0, 0, 0, 144, 30, 32, 64, 0, 12, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 1,
+    32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 193, 61, 96, 0, 12, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 144, 64, 48, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    30, 32, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 92, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 242, 7, 128, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 242,
+    27, 0, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 160, 2, 0, 0, 0, 0, 0, 0,
+    254, 127, 223, 224, 255, 254, 255, 255, 255, 31, 64, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 224, 253, 102, 0, 0, 0, 195, 1, 0, 30, 0, 100, 32, 0, 32, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 0, 28, 0,
+    0, 0, 12, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 0, 176, 63, 64, 254, 15, 32, 0, 0,
+    0, 0, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135, 1, 4, 14, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 1, 0, 0, 0, 0,
+    0, 0, 64, 127, 229, 31, 248, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 15, 0, 0, 0, 0, 0, 208, 23, 4, 0, 0, 0, 0, 248, 15, 0, 3, 0, 0, 0, 60,
+    11, 0, 0, 0, 0, 0, 0, 64, 163, 3, 0, 0, 0, 0, 0, 0, 240, 207, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 255, 253, 33, 16, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255,
+    255, 255, 127, 0, 0, 240, 0, 248, 0, 0, 0, 124, 0, 0, 0, 0, 0, 0, 31, 252,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 1, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,
+    3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 128, 247, 63, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 3, 0, 68, 8, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 16, 0, 0, 0, 255, 255, 3, 0, 0, 0, 0, 0, 192, 63, 0, 0, 128, 255, 3,
+    0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 200, 19, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 126, 102, 0, 8, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 157, 193, 2,
+    0, 0, 0, 0, 48, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 33, 0, 0, 0, 0, 0, 64, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255,
+    0, 0, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 110, 240, 0, 0, 0,
+    0, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 2, 0, 0, 0, 0, 0, 0, 255, 127, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
+    120, 38, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 128, 239, 31, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 3, 0, 0, 0, 0, 0, 192, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 191, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 7, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 3,
+    248, 255, 231, 15, 0, 0, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0,
diff --git a/fusl/src/ctype/punct.h b/fusl/src/ctype/punct.h
index 466e6b3..98d1e74 100644
--- a/fusl/src/ctype/punct.h
+++ b/fusl/src/ctype/punct.h
@@ -1,109 +1,153 @@
-18,16,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,16,16,34,35,16,36,37,38,39,
-40,41,42,43,16,44,45,46,17,47,48,17,17,49,17,17,17,50,51,52,53,54,55,56,57,17,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,58,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,59,16,60,61,62,63,64,65,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,66,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,67,16,16,68,16,69,70,71,16,72,16,73,
-16,16,16,16,74,75,76,77,16,16,78,16,79,80,16,16,16,16,81,16,16,16,16,16,16,16,
-16,16,16,16,16,16,82,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,83,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,84,85,86,87,
-16,16,88,89,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-90,16,91,92,93,94,95,96,97,98,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,0,0,0,0,254,255,0,252,1,0,0,248,1,0,0,120,0,0,0,0,255,251,223,
-251,0,0,128,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,0,
-252,255,224,175,255,255,255,255,255,255,255,255,255,255,223,255,255,255,255,
-255,32,64,176,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-252,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,0,0,0,0,0,134,254,
-255,255,255,0,64,73,0,0,0,0,0,24,0,223,255,0,200,0,0,0,0,0,0,0,1,0,60,0,0,0,0,
-0,0,0,0,0,0,0,0,16,224,1,30,0,96,255,191,0,0,0,0,0,0,255,7,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,248,207,3,0,0,0,3,0,32,255,127,0,0,0,78,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,252,0,0,0,0,0,0,0,0,0,16,0,32,30,0,48,0,1,0,0,0,0,0,0,0,0,16,
-0,32,0,0,0,0,252,15,0,0,0,0,0,0,0,16,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,32,0,
-0,0,0,3,0,0,0,0,0,0,0,0,16,0,32,0,0,0,0,253,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,
-255,7,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,255,0,0,0,0,0,0,0,16,0,32,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,32,0,0,0,0,63,2,0,0,0,0,0,0,0,0,0,4,0,0,0,0,16,0,0,0,0,0,0,
-128,0,128,192,223,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,254,255,255,
-255,0,252,255,255,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0,192,255,223,255,7,0,0,0,0,0,
-0,0,0,0,0,128,6,0,252,0,0,24,62,0,0,128,191,0,204,0,0,0,0,0,0,0,0,0,0,0,8,0,0,
-0,0,0,0,0,0,0,0,0,96,255,255,255,31,0,0,255,3,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,96,0,0,1,0,0,24,0,0,0,0,0,0,0,0,0,56,0,0,0,0,16,0,0,0,112,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,48,0,0,254,127,47,0,0,255,3,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,49,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,196,255,255,255,255,0,0,0,192,0,0,0,0,0,0,0,0,1,0,224,159,0,0,0,0,
-127,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,0,0,252,255,255,255,31,0,0,0,0,
-0,12,0,0,0,0,0,0,64,0,12,240,0,0,0,0,0,0,192,248,0,0,0,0,0,0,0,192,0,0,0,0,0,
-0,0,0,255,0,255,255,255,33,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,255,255,255,255,127,0,0,240,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-160,3,224,0,224,0,224,0,96,128,248,255,255,255,252,255,255,255,255,255,127,31,
-252,241,127,255,127,0,0,255,255,255,3,0,0,255,255,255,255,1,0,123,3,208,193,
-175,66,0,12,31,188,255,255,0,0,0,0,0,2,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,0,255,255,
-255,255,127,0,0,0,255,7,0,0,255,255,255,255,255,255,255,255,255,255,63,0,0,0,
-0,0,0,252,255,255,254,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,31,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,135,3,254,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,
-127,255,15,0,0,0,0,0,0,0,0,255,255,255,251,255,255,255,255,255,255,255,255,
-255,255,15,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,63,0,0,0,255,15,30,255,255,255,1,252,
-193,224,0,0,0,0,0,0,0,0,0,0,0,30,1,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,255,255,0,0,0,0,255,255,255,255,15,0,0,0,255,255,255,127,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,
-255,255,255,255,127,0,0,0,0,0,0,192,0,224,0,0,0,0,0,0,0,0,0,0,0,128,15,112,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,255,255,127,0,3,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,68,8,0,0,0,15,255,3,0,0,0,0,0,0,240,0,0,0,0,0,0,0,0,0,
-16,192,0,0,255,255,3,7,0,0,0,0,0,248,0,0,0,0,8,128,0,0,0,0,0,0,0,0,0,0,8,0,
-255,63,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,0,0,128,11,0,0,0,0,0,0,0,128,2,
-0,0,192,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,
-0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,2,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,252,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,255,255,255,3,127,0,255,255,255,255,247,
-255,127,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,254,255,0,252,1,0,0,248,1,0,
-0,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,127,0,48,135,255,255,255,255,255,
-143,255,0,0,0,0,0,0,224,255,255,7,255,15,0,0,0,0,0,0,255,255,255,255,255,63,0,
-0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,128,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,143,0,0,0,128,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,255,0,255,1,
-0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,0,0,0,255,0,0,0,
-255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,127,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,63,252,255,63,0,0,0,3,0,0,0,
-0,0,0,254,3,0,0,0,0,0,0,0,0,0,0,0,0,0,24,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-225,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,7,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,63,0,255,255,255,255,127,254,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,0,0,0,0,
-255,255,255,255,255,255,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,255,255,255,255,255,255,255,255,255,255,127,0,255,255,3,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,8,0,0,0,
-8,0,0,32,0,0,0,32,0,0,128,0,0,0,128,0,0,0,2,0,0,0,2,0,0,8,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,255,255,255,255,255,
-15,255,255,255,255,255,255,255,255,255,255,255,255,15,0,255,127,254,127,254,
-255,254,255,0,0,0,0,255,7,255,255,255,127,255,255,255,255,255,255,255,15,255,
-255,255,255,255,7,0,0,0,0,0,0,0,0,192,255,255,255,7,0,255,255,255,255,255,7,
-255,1,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,1,0,191,255,
-255,255,255,255,255,255,255,31,255,255,15,0,255,255,255,255,223,7,0,0,255,255,
-1,0,255,255,255,255,255,255,255,127,253,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,30,255,255,255,255,255,
-255,255,63,15,0,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,255,
-255,255,255,255,255,255,225,255,0,0,0,0,0,0,255,255,255,255,255,255,255,255,
-63,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+18, 16, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 16, 16, 34,
+    35, 16, 36, 37, 38, 39, 40, 41, 42, 43, 16, 44, 45, 46, 17, 47, 48, 17, 17,
+    49, 17, 17, 17, 50, 51, 52, 53, 54, 55, 56, 57, 17, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    58, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 59, 16, 60, 61, 62, 63, 64, 65,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 66, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    67, 16, 16, 68, 16, 69, 70, 71, 16, 72, 16, 73, 16, 16, 16, 16, 74, 75, 76,
+    77, 16, 16, 78, 16, 79, 80, 16, 16, 16, 16, 81, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 82, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 83, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 84, 85, 86, 87, 16, 16, 88, 89, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 90,
+    16, 91, 92, 93, 94, 95, 96, 97, 98, 16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 0, 0, 0, 0, 254, 255, 0, 252, 1, 0, 0, 248, 1, 0, 0,
+    120, 0, 0, 0, 0, 255, 251, 223, 251, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 60, 0, 252, 255,
+    224, 175, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 223, 255, 255,
+    255, 255, 255, 32, 64, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 3, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 0, 0, 0, 0, 0, 134,
+    254, 255, 255, 255, 0, 64, 73, 0, 0, 0, 0, 0, 24, 0, 223, 255, 0, 200, 0, 0,
+    0, 0, 0, 0, 0, 1, 0, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 224, 1, 30,
+    0, 96, 255, 191, 0, 0, 0, 0, 0, 0, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 248, 207, 3, 0, 0, 0, 3, 0, 32, 255, 127, 0, 0, 0,
+    78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 16, 0, 32, 30, 0, 48, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32,
+    0, 0, 0, 0, 252, 15, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 16, 0, 32, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32,
+    0, 0, 0, 0, 253, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 255, 7, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 16, 0, 32,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 63, 2, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 128, 0, 128, 192,
+    223, 0, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0,
+    254, 255, 255, 255, 0, 252, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 252, 0, 0, 0,
+    0, 0, 0, 192, 255, 223, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 6, 0,
+    252, 0, 0, 24, 62, 0, 0, 128, 191, 0, 204, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 255, 255, 255, 31, 0, 0, 255, 3, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 96, 0, 0, 1, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0,
+    0, 0, 0, 16, 0, 0, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48,
+    0, 0, 254, 127, 47, 0, 0, 255, 3, 255, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 14, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 255,
+    255, 255, 255, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 224, 159, 0, 0,
+    0, 0, 127, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 16, 0,
+    0, 252, 255, 255, 255, 31, 0, 0, 0, 0, 0, 12, 0, 0, 0, 0, 0, 0, 64, 0, 12,
+    240, 0, 0, 0, 0, 0, 0, 192, 248, 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0,
+    0, 0, 255, 0, 255, 255, 255, 33, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 127, 0, 0, 240, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 160, 3,
+    224, 0, 224, 0, 224, 0, 96, 128, 248, 255, 255, 255, 252, 255, 255, 255,
+    255, 255, 127, 31, 252, 241, 127, 255, 127, 0, 0, 255, 255, 255, 3, 0, 0,
+    255, 255, 255, 255, 1, 0, 123, 3, 208, 193, 175, 66, 0, 12, 31, 188, 255,
+    255, 0, 0, 0, 0, 0, 2, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 15, 0, 255, 255, 255, 255, 127, 0, 0, 0, 255, 7, 0, 0,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 0, 0, 0, 0, 0, 0, 252,
+    255, 255, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 255, 3,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 224,
+    135, 3, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 127, 255, 15,
+    0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 251, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 15, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 63, 0, 0, 0, 255, 15, 30, 255, 255, 255, 1, 252, 193, 224, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 30, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 255, 255, 255,
+    255, 15, 0, 0, 0, 255, 255, 255, 127, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255,
+    127, 0, 0, 0, 0, 0, 0, 192, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128,
+    15, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 255, 255, 127, 0,
+    3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 68, 8, 0, 0, 0, 15, 255, 3, 0, 0, 0, 0, 0, 0, 240, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 16, 192, 0, 0, 255, 255, 3, 7, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0,
+    8, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 255, 63, 0, 192, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 0, 0, 128, 11, 0, 0, 0, 0, 0, 0, 0, 128,
+    2, 0, 0, 192, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 56, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 252, 255, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 255, 255,
+    255, 3, 127, 0, 255, 255, 255, 255, 247, 255, 127, 15, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 254, 255, 0, 252, 1, 0, 0, 248, 1, 0, 0,
+    248, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 127, 0, 48, 135,
+    255, 255, 255, 255, 255, 143, 255, 0, 0, 0, 0, 0, 0, 224, 255, 255, 7, 255,
+    15, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 63, 0, 0, 0, 0, 15, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 143, 0, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 135,
+    255, 0, 255, 1, 0, 0, 0, 224, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 254, 0, 0, 0, 255, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255,
+    255, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 192, 63, 252, 255, 63, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 254, 3, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 225, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 7, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 63, 0, 255, 255, 255, 255, 127, 254, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 63, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 63, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 127, 0, 255, 255, 3, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 8, 0, 0, 0, 8, 0, 0, 32, 0, 0, 0,
+    32, 0, 0, 128, 0, 0, 0, 128, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 8, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 3, 0, 255, 255, 255, 255, 255, 15, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 255, 127, 254, 127, 254, 255,
+    254, 255, 0, 0, 0, 0, 255, 7, 255, 255, 255, 127, 255, 255, 255, 255, 255,
+    255, 255, 15, 255, 255, 255, 255, 255, 7, 0, 0, 0, 0, 0, 0, 0, 0, 192, 255,
+    255, 255, 7, 0, 255, 255, 255, 255, 255, 7, 255, 1, 3, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 1, 0, 191,
+    255, 255, 255, 255, 255, 255, 255, 255, 31, 255, 255, 15, 0, 255, 255, 255,
+    255, 223, 7, 0, 0, 255, 255, 1, 0, 255, 255, 255, 255, 255, 255, 255, 127,
+    253, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 30, 255, 255, 255, 255, 255, 255,
+    255, 63, 15, 0, 255, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 248, 255, 255, 255, 255, 255, 255, 255, 255, 225, 255, 0, 0, 0, 0,
+    0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 63, 0, 0, 0, 0, 0, 0, 0, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
diff --git a/fusl/src/ctype/toascii.c b/fusl/src/ctype/toascii.c
index f0e48e8..4d33c90 100644
--- a/fusl/src/ctype/toascii.c
+++ b/fusl/src/ctype/toascii.c
@@ -1,7 +1,6 @@
 #include <ctype.h>
 
 /* nonsense function that should NEVER be used! */
-int toascii(int c)
-{
-	return c & 0x7f;
+int toascii(int c) {
+  return c & 0x7f;
 }
diff --git a/fusl/src/ctype/tolower.c b/fusl/src/ctype/tolower.c
index 362d6b2..fc55b6c 100644
--- a/fusl/src/ctype/tolower.c
+++ b/fusl/src/ctype/tolower.c
@@ -1,15 +1,14 @@
 #include <ctype.h>
 #include "libc.h"
 
-int tolower(int c)
-{
-	if (isupper(c)) return c | 32;
-	return c;
+int tolower(int c) {
+  if (isupper(c))
+    return c | 32;
+  return c;
 }
 
-int __tolower_l(int c, locale_t l)
-{
-	return tolower(c);
+int __tolower_l(int c, locale_t l) {
+  return tolower(c);
 }
 
 weak_alias(__tolower_l, tolower_l);
diff --git a/fusl/src/ctype/toupper.c b/fusl/src/ctype/toupper.c
index bbf4e06..eaa9c3c 100644
--- a/fusl/src/ctype/toupper.c
+++ b/fusl/src/ctype/toupper.c
@@ -1,15 +1,14 @@
 #include <ctype.h>
 #include "libc.h"
 
-int toupper(int c)
-{
-	if (islower(c)) return c & 0x5f;
-	return c;
+int toupper(int c) {
+  if (islower(c))
+    return c & 0x5f;
+  return c;
 }
 
-int __toupper_l(int c, locale_t l)
-{
-	return toupper(c);
+int __toupper_l(int c, locale_t l) {
+  return toupper(c);
 }
 
 weak_alias(__toupper_l, toupper_l);
diff --git a/fusl/src/ctype/towctrans.c b/fusl/src/ctype/towctrans.c
index 8f9b1d6..35d6b57 100644
--- a/fusl/src/ctype/towctrans.c
+++ b/fusl/src/ctype/towctrans.c
@@ -1,280 +1,247 @@
 #include <wctype.h>
 #include "libc.h"
 
-#define CASEMAP(u1,u2,l) { (u1), (l)-(u1), (u2)-(u1)+1 }
-#define CASELACE(u1,u2) CASEMAP((u1),(u2),(u1)+1)
+#define CASEMAP(u1, u2, l) \
+  { (u1), (l) - (u1), (u2) - (u1) + 1 }
+#define CASELACE(u1, u2) CASEMAP((u1), (u2), (u1) + 1)
 
 static const struct {
-	unsigned short upper;
-	signed char lower;
-	unsigned char len;
+  unsigned short upper;
+  signed char lower;
+  unsigned char len;
 } casemaps[] = {
-	CASEMAP('A','Z','a'),
-	CASEMAP(0xc0,0xde,0xe0),
+    CASEMAP('A', 'Z', 'a'),          CASEMAP(0xc0, 0xde, 0xe0),
 
-	CASELACE(0x0100,0x012e),
-	CASELACE(0x0132,0x0136),
-	CASELACE(0x0139,0x0147),
-	CASELACE(0x014a,0x0176),
-	CASELACE(0x0179,0x017d),
+    CASELACE(0x0100, 0x012e),        CASELACE(0x0132, 0x0136),
+    CASELACE(0x0139, 0x0147),        CASELACE(0x014a, 0x0176),
+    CASELACE(0x0179, 0x017d),
 
-	CASELACE(0x370,0x372),
-	CASEMAP(0x391,0x3a1,0x3b1),
-	CASEMAP(0x3a3,0x3ab,0x3c3),
-	CASEMAP(0x400,0x40f,0x450),
-	CASEMAP(0x410,0x42f,0x430),
+    CASELACE(0x370, 0x372),          CASEMAP(0x391, 0x3a1, 0x3b1),
+    CASEMAP(0x3a3, 0x3ab, 0x3c3),    CASEMAP(0x400, 0x40f, 0x450),
+    CASEMAP(0x410, 0x42f, 0x430),
 
-	CASELACE(0x460,0x480),
-	CASELACE(0x48a,0x4be),
-	CASELACE(0x4c1,0x4cd),
-	CASELACE(0x4d0,0x50e),
+    CASELACE(0x460, 0x480),          CASELACE(0x48a, 0x4be),
+    CASELACE(0x4c1, 0x4cd),          CASELACE(0x4d0, 0x50e),
 
-	CASELACE(0x514,0x526),
-	CASEMAP(0x531,0x556,0x561),
+    CASELACE(0x514, 0x526),          CASEMAP(0x531, 0x556, 0x561),
 
-	CASELACE(0x01a0,0x01a4),
-	CASELACE(0x01b3,0x01b5),
-	CASELACE(0x01cd,0x01db),
-	CASELACE(0x01de,0x01ee),
-	CASELACE(0x01f8,0x021e),
-	CASELACE(0x0222,0x0232),
-	CASELACE(0x03d8,0x03ee),
+    CASELACE(0x01a0, 0x01a4),        CASELACE(0x01b3, 0x01b5),
+    CASELACE(0x01cd, 0x01db),        CASELACE(0x01de, 0x01ee),
+    CASELACE(0x01f8, 0x021e),        CASELACE(0x0222, 0x0232),
+    CASELACE(0x03d8, 0x03ee),
 
-	CASELACE(0x1e00,0x1e94),
-	CASELACE(0x1ea0,0x1efe),
+    CASELACE(0x1e00, 0x1e94),        CASELACE(0x1ea0, 0x1efe),
 
-	CASEMAP(0x1f08,0x1f0f,0x1f00),
-	CASEMAP(0x1f18,0x1f1d,0x1f10),
-	CASEMAP(0x1f28,0x1f2f,0x1f20),
-	CASEMAP(0x1f38,0x1f3f,0x1f30),
-	CASEMAP(0x1f48,0x1f4d,0x1f40),
+    CASEMAP(0x1f08, 0x1f0f, 0x1f00), CASEMAP(0x1f18, 0x1f1d, 0x1f10),
+    CASEMAP(0x1f28, 0x1f2f, 0x1f20), CASEMAP(0x1f38, 0x1f3f, 0x1f30),
+    CASEMAP(0x1f48, 0x1f4d, 0x1f40),
 
-	CASEMAP(0x1f68,0x1f6f,0x1f60),
-	CASEMAP(0x1f88,0x1f8f,0x1f80),
-	CASEMAP(0x1f98,0x1f9f,0x1f90),
-	CASEMAP(0x1fa8,0x1faf,0x1fa0),
-	CASEMAP(0x1fb8,0x1fb9,0x1fb0),
-	CASEMAP(0x1fba,0x1fbb,0x1f70),
-	CASEMAP(0x1fc8,0x1fcb,0x1f72),
-	CASEMAP(0x1fd8,0x1fd9,0x1fd0),
-	CASEMAP(0x1fda,0x1fdb,0x1f76),
-	CASEMAP(0x1fe8,0x1fe9,0x1fe0),
-	CASEMAP(0x1fea,0x1feb,0x1f7a),
-	CASEMAP(0x1ff8,0x1ff9,0x1f78),
-	CASEMAP(0x1ffa,0x1ffb,0x1f7c),
+    CASEMAP(0x1f68, 0x1f6f, 0x1f60), CASEMAP(0x1f88, 0x1f8f, 0x1f80),
+    CASEMAP(0x1f98, 0x1f9f, 0x1f90), CASEMAP(0x1fa8, 0x1faf, 0x1fa0),
+    CASEMAP(0x1fb8, 0x1fb9, 0x1fb0), CASEMAP(0x1fba, 0x1fbb, 0x1f70),
+    CASEMAP(0x1fc8, 0x1fcb, 0x1f72), CASEMAP(0x1fd8, 0x1fd9, 0x1fd0),
+    CASEMAP(0x1fda, 0x1fdb, 0x1f76), CASEMAP(0x1fe8, 0x1fe9, 0x1fe0),
+    CASEMAP(0x1fea, 0x1feb, 0x1f7a), CASEMAP(0x1ff8, 0x1ff9, 0x1f78),
+    CASEMAP(0x1ffa, 0x1ffb, 0x1f7c),
 
-	CASELACE(0x246,0x24e),
-	CASELACE(0x510,0x512),
-	CASEMAP(0x2160,0x216f,0x2170),
-	CASEMAP(0x2c00,0x2c2e,0x2c30),
-	CASELACE(0x2c67,0x2c6b),
-	CASELACE(0x2c80,0x2ce2),
-	CASELACE(0x2ceb,0x2ced),
+    CASELACE(0x246, 0x24e),          CASELACE(0x510, 0x512),
+    CASEMAP(0x2160, 0x216f, 0x2170), CASEMAP(0x2c00, 0x2c2e, 0x2c30),
+    CASELACE(0x2c67, 0x2c6b),        CASELACE(0x2c80, 0x2ce2),
+    CASELACE(0x2ceb, 0x2ced),
 
-	CASELACE(0xa640,0xa66c),
-	CASELACE(0xa680,0xa696),
+    CASELACE(0xa640, 0xa66c),        CASELACE(0xa680, 0xa696),
 
-	CASELACE(0xa722,0xa72e),
-	CASELACE(0xa732,0xa76e),
-	CASELACE(0xa779,0xa77b),
-	CASELACE(0xa77e,0xa786),
+    CASELACE(0xa722, 0xa72e),        CASELACE(0xa732, 0xa76e),
+    CASELACE(0xa779, 0xa77b),        CASELACE(0xa77e, 0xa786),
 
-	CASELACE(0xa790,0xa792),
-	CASELACE(0xa7a0,0xa7a8),
+    CASELACE(0xa790, 0xa792),        CASELACE(0xa7a0, 0xa7a8),
 
-	CASEMAP(0xff21,0xff3a,0xff41),
-	{ 0,0,0 }
-};
+    CASEMAP(0xff21, 0xff3a, 0xff41), {0, 0, 0}};
 
-static const unsigned short pairs[][2] = {
-	{ 'I',    0x0131 },
-	{ 'S',    0x017f },
-	{ 0x0130, 'i'    },
-	{ 0x0178, 0x00ff },
-	{ 0x0181, 0x0253 },
-	{ 0x0182, 0x0183 },
-	{ 0x0184, 0x0185 },
-	{ 0x0186, 0x0254 },
-	{ 0x0187, 0x0188 },
-	{ 0x0189, 0x0256 },
-	{ 0x018a, 0x0257 },
-	{ 0x018b, 0x018c },
-	{ 0x018e, 0x01dd },
-	{ 0x018f, 0x0259 },
-	{ 0x0190, 0x025b },
-	{ 0x0191, 0x0192 },
-	{ 0x0193, 0x0260 },
-	{ 0x0194, 0x0263 },
-	{ 0x0196, 0x0269 },
-	{ 0x0197, 0x0268 },
-	{ 0x0198, 0x0199 },
-	{ 0x019c, 0x026f },
-	{ 0x019d, 0x0272 },
-	{ 0x019f, 0x0275 },
-	{ 0x01a6, 0x0280 },
-	{ 0x01a7, 0x01a8 },
-	{ 0x01a9, 0x0283 },
-	{ 0x01ac, 0x01ad },
-	{ 0x01ae, 0x0288 },
-	{ 0x01af, 0x01b0 },
-	{ 0x01b1, 0x028a },
-	{ 0x01b2, 0x028b },
-	{ 0x01b7, 0x0292 },
-	{ 0x01b8, 0x01b9 },
-	{ 0x01bc, 0x01bd },
-	{ 0x01c4, 0x01c6 },
-	{ 0x01c4, 0x01c5 },
-	{ 0x01c5, 0x01c6 },
-	{ 0x01c7, 0x01c9 },
-	{ 0x01c7, 0x01c8 },
-	{ 0x01c8, 0x01c9 },
-	{ 0x01ca, 0x01cc },
-	{ 0x01ca, 0x01cb },
-	{ 0x01cb, 0x01cc },
-	{ 0x01f1, 0x01f3 },
-	{ 0x01f1, 0x01f2 },
-	{ 0x01f2, 0x01f3 },
-	{ 0x01f4, 0x01f5 },
-	{ 0x01f6, 0x0195 },
-	{ 0x01f7, 0x01bf },
-	{ 0x0220, 0x019e },
-	{ 0x0386, 0x03ac },
-	{ 0x0388, 0x03ad },
-	{ 0x0389, 0x03ae },
-	{ 0x038a, 0x03af },
-	{ 0x038c, 0x03cc },
-	{ 0x038e, 0x03cd },
-	{ 0x038f, 0x03ce },
-	{ 0x0399, 0x0345 },
-	{ 0x0399, 0x1fbe },
-	{ 0x03a3, 0x03c2 },
-	{ 0x03f7, 0x03f8 },
-	{ 0x03fa, 0x03fb },
-	{ 0x1e60, 0x1e9b },
-	{ 0x1e9e, 0xdf },
+static const unsigned short pairs[][2] = {{'I', 0x0131},
+                                          {'S', 0x017f},
+                                          {0x0130, 'i'},
+                                          {0x0178, 0x00ff},
+                                          {0x0181, 0x0253},
+                                          {0x0182, 0x0183},
+                                          {0x0184, 0x0185},
+                                          {0x0186, 0x0254},
+                                          {0x0187, 0x0188},
+                                          {0x0189, 0x0256},
+                                          {0x018a, 0x0257},
+                                          {0x018b, 0x018c},
+                                          {0x018e, 0x01dd},
+                                          {0x018f, 0x0259},
+                                          {0x0190, 0x025b},
+                                          {0x0191, 0x0192},
+                                          {0x0193, 0x0260},
+                                          {0x0194, 0x0263},
+                                          {0x0196, 0x0269},
+                                          {0x0197, 0x0268},
+                                          {0x0198, 0x0199},
+                                          {0x019c, 0x026f},
+                                          {0x019d, 0x0272},
+                                          {0x019f, 0x0275},
+                                          {0x01a6, 0x0280},
+                                          {0x01a7, 0x01a8},
+                                          {0x01a9, 0x0283},
+                                          {0x01ac, 0x01ad},
+                                          {0x01ae, 0x0288},
+                                          {0x01af, 0x01b0},
+                                          {0x01b1, 0x028a},
+                                          {0x01b2, 0x028b},
+                                          {0x01b7, 0x0292},
+                                          {0x01b8, 0x01b9},
+                                          {0x01bc, 0x01bd},
+                                          {0x01c4, 0x01c6},
+                                          {0x01c4, 0x01c5},
+                                          {0x01c5, 0x01c6},
+                                          {0x01c7, 0x01c9},
+                                          {0x01c7, 0x01c8},
+                                          {0x01c8, 0x01c9},
+                                          {0x01ca, 0x01cc},
+                                          {0x01ca, 0x01cb},
+                                          {0x01cb, 0x01cc},
+                                          {0x01f1, 0x01f3},
+                                          {0x01f1, 0x01f2},
+                                          {0x01f2, 0x01f3},
+                                          {0x01f4, 0x01f5},
+                                          {0x01f6, 0x0195},
+                                          {0x01f7, 0x01bf},
+                                          {0x0220, 0x019e},
+                                          {0x0386, 0x03ac},
+                                          {0x0388, 0x03ad},
+                                          {0x0389, 0x03ae},
+                                          {0x038a, 0x03af},
+                                          {0x038c, 0x03cc},
+                                          {0x038e, 0x03cd},
+                                          {0x038f, 0x03ce},
+                                          {0x0399, 0x0345},
+                                          {0x0399, 0x1fbe},
+                                          {0x03a3, 0x03c2},
+                                          {0x03f7, 0x03f8},
+                                          {0x03fa, 0x03fb},
+                                          {0x1e60, 0x1e9b},
+                                          {0x1e9e, 0xdf},
 
-	{ 0x1f59, 0x1f51 },
-	{ 0x1f5b, 0x1f53 },
-	{ 0x1f5d, 0x1f55 },
-	{ 0x1f5f, 0x1f57 },
-	{ 0x1fbc, 0x1fb3 },
-	{ 0x1fcc, 0x1fc3 },
-	{ 0x1fec, 0x1fe5 },
-	{ 0x1ffc, 0x1ff3 },
+                                          {0x1f59, 0x1f51},
+                                          {0x1f5b, 0x1f53},
+                                          {0x1f5d, 0x1f55},
+                                          {0x1f5f, 0x1f57},
+                                          {0x1fbc, 0x1fb3},
+                                          {0x1fcc, 0x1fc3},
+                                          {0x1fec, 0x1fe5},
+                                          {0x1ffc, 0x1ff3},
 
-	{ 0x23a, 0x2c65 },
-	{ 0x23b, 0x23c },
-	{ 0x23d, 0x19a },
-	{ 0x23e, 0x2c66 },
-	{ 0x241, 0x242 },
-	{ 0x243, 0x180 },
-	{ 0x244, 0x289 },
-	{ 0x245, 0x28c },
-	{ 0x3f4, 0x3b8 },
-	{ 0x3f9, 0x3f2 },
-	{ 0x3fd, 0x37b },
-	{ 0x3fe, 0x37c },
-	{ 0x3ff, 0x37d },
-	{ 0x4c0, 0x4cf },
+                                          {0x23a, 0x2c65},
+                                          {0x23b, 0x23c},
+                                          {0x23d, 0x19a},
+                                          {0x23e, 0x2c66},
+                                          {0x241, 0x242},
+                                          {0x243, 0x180},
+                                          {0x244, 0x289},
+                                          {0x245, 0x28c},
+                                          {0x3f4, 0x3b8},
+                                          {0x3f9, 0x3f2},
+                                          {0x3fd, 0x37b},
+                                          {0x3fe, 0x37c},
+                                          {0x3ff, 0x37d},
+                                          {0x4c0, 0x4cf},
 
-	{ 0x2126, 0x3c9 },
-	{ 0x212a, 'k' },
-	{ 0x212b, 0xe5 },
-	{ 0x2132, 0x214e },
-	{ 0x2183, 0x2184 },
-	{ 0x2c60, 0x2c61 },
-	{ 0x2c62, 0x26b },
-	{ 0x2c63, 0x1d7d },
-	{ 0x2c64, 0x27d },
-	{ 0x2c6d, 0x251 },
-	{ 0x2c6e, 0x271 },
-	{ 0x2c6f, 0x250 },
-	{ 0x2c70, 0x252 },
-	{ 0x2c72, 0x2c73 },
-	{ 0x2c75, 0x2c76 },
-	{ 0x2c7e, 0x23f },
-	{ 0x2c7f, 0x240 },
-	{ 0x2cf2, 0x2cf3 },
+                                          {0x2126, 0x3c9},
+                                          {0x212a, 'k'},
+                                          {0x212b, 0xe5},
+                                          {0x2132, 0x214e},
+                                          {0x2183, 0x2184},
+                                          {0x2c60, 0x2c61},
+                                          {0x2c62, 0x26b},
+                                          {0x2c63, 0x1d7d},
+                                          {0x2c64, 0x27d},
+                                          {0x2c6d, 0x251},
+                                          {0x2c6e, 0x271},
+                                          {0x2c6f, 0x250},
+                                          {0x2c70, 0x252},
+                                          {0x2c72, 0x2c73},
+                                          {0x2c75, 0x2c76},
+                                          {0x2c7e, 0x23f},
+                                          {0x2c7f, 0x240},
+                                          {0x2cf2, 0x2cf3},
 
-	{ 0xa77d, 0x1d79 },
-	{ 0xa78b, 0xa78c },
-	{ 0xa78d, 0x265 },
-	{ 0xa7aa, 0x266 },
+                                          {0xa77d, 0x1d79},
+                                          {0xa78b, 0xa78c},
+                                          {0xa78d, 0x265},
+                                          {0xa7aa, 0x266},
 
-	{ 0x10c7, 0x2d27 },
-	{ 0x10cd, 0x2d2d },
+                                          {0x10c7, 0x2d27},
+                                          {0x10cd, 0x2d2d},
 
-	/* bogus greek 'symbol' letters */
-	{ 0x376, 0x377 },
-	{ 0x39c, 0xb5 },
-	{ 0x392, 0x3d0 },
-	{ 0x398, 0x3d1 },
-	{ 0x3a6, 0x3d5 },
-	{ 0x3a0, 0x3d6 },
-	{ 0x39a, 0x3f0 },
-	{ 0x3a1, 0x3f1 },
-	{ 0x395, 0x3f5 },
-	{ 0x3cf, 0x3d7 },
+                                          /* bogus greek 'symbol' letters */
+                                          {0x376, 0x377},
+                                          {0x39c, 0xb5},
+                                          {0x392, 0x3d0},
+                                          {0x398, 0x3d1},
+                                          {0x3a6, 0x3d5},
+                                          {0x3a0, 0x3d6},
+                                          {0x39a, 0x3f0},
+                                          {0x3a1, 0x3f1},
+                                          {0x395, 0x3f5},
+                                          {0x3cf, 0x3d7},
 
-	{ 0,0 }
-};
+                                          {0, 0}};
 
-
-static wchar_t __towcase(wchar_t wc, int lower)
-{
-	int i;
-	int lmul = 2*lower-1;
-	int lmask = lower-1;
-	/* no letters with case in these large ranges */
-	if (!iswalpha(wc)
-	 || (unsigned)wc - 0x0600 <= 0x0fff-0x0600
-	 || (unsigned)wc - 0x2e00 <= 0xa63f-0x2e00
-	 || (unsigned)wc - 0xa800 <= 0xfeff-0xa800)
-		return wc;
-	/* special case because the diff between upper/lower is too big */
-	if (lower && (unsigned)wc - 0x10a0 < 0x2e) {
-		if (wc>0x10c5 && wc != 0x10c7 && wc != 0x10cd) return wc;
-		else return wc + 0x2d00 - 0x10a0;
-	}
-	if (!lower && (unsigned)wc - 0x2d00 < 0x26) {
-		if (wc>0x2d25 && wc != 0x2d27 && wc != 0x2d2d) return wc;
-		else return wc + 0x10a0 - 0x2d00;
-	}
-	for (i=0; casemaps[i].len; i++) {
-		int base = casemaps[i].upper + (lmask & casemaps[i].lower);
-		if ((unsigned)wc-base < casemaps[i].len) {
-			if (casemaps[i].lower == 1)
-				return wc + lower - ((wc-casemaps[i].upper)&1);
-			return wc + lmul*casemaps[i].lower;
-		}
-	}
-	for (i=0; pairs[i][1-lower]; i++) {
-		if (pairs[i][1-lower] == wc)
-			return pairs[i][lower];
-	}
-	if ((unsigned)wc - (0x10428 - 0x28*lower) < 0x28)
-		return wc - 0x28 + 0x50*lower;
-	return wc;
+static wchar_t __towcase(wchar_t wc, int lower) {
+  int i;
+  int lmul = 2 * lower - 1;
+  int lmask = lower - 1;
+  /* no letters with case in these large ranges */
+  if (!iswalpha(wc) || (unsigned)wc - 0x0600 <= 0x0fff - 0x0600 ||
+      (unsigned)wc - 0x2e00 <= 0xa63f - 0x2e00 ||
+      (unsigned)wc - 0xa800 <= 0xfeff - 0xa800)
+    return wc;
+  /* special case because the diff between upper/lower is too big */
+  if (lower && (unsigned)wc - 0x10a0 < 0x2e) {
+    if (wc > 0x10c5 && wc != 0x10c7 && wc != 0x10cd)
+      return wc;
+    else
+      return wc + 0x2d00 - 0x10a0;
+  }
+  if (!lower && (unsigned)wc - 0x2d00 < 0x26) {
+    if (wc > 0x2d25 && wc != 0x2d27 && wc != 0x2d2d)
+      return wc;
+    else
+      return wc + 0x10a0 - 0x2d00;
+  }
+  for (i = 0; casemaps[i].len; i++) {
+    int base = casemaps[i].upper + (lmask & casemaps[i].lower);
+    if ((unsigned)wc - base < casemaps[i].len) {
+      if (casemaps[i].lower == 1)
+        return wc + lower - ((wc - casemaps[i].upper) & 1);
+      return wc + lmul * casemaps[i].lower;
+    }
+  }
+  for (i = 0; pairs[i][1 - lower]; i++) {
+    if (pairs[i][1 - lower] == wc)
+      return pairs[i][lower];
+  }
+  if ((unsigned)wc - (0x10428 - 0x28 * lower) < 0x28)
+    return wc - 0x28 + 0x50 * lower;
+  return wc;
 }
 
-wint_t towupper(wint_t wc)
-{
-	return __towcase(wc, 0);
+wint_t towupper(wint_t wc) {
+  return __towcase(wc, 0);
 }
 
-wint_t towlower(wint_t wc)
-{
-	return __towcase(wc, 1);
+wint_t towlower(wint_t wc) {
+  return __towcase(wc, 1);
 }
 
-wint_t __towupper_l(wint_t c, locale_t l)
-{
-	return towupper(c);
+wint_t __towupper_l(wint_t c, locale_t l) {
+  return towupper(c);
 }
 
-wint_t __towlower_l(wint_t c, locale_t l)
-{
-	return towlower(c);
+wint_t __towlower_l(wint_t c, locale_t l) {
+  return towlower(c);
 }
 
 weak_alias(__towupper_l, towupper_l);
diff --git a/fusl/src/ctype/wcswidth.c b/fusl/src/ctype/wcswidth.c
index 5c8a5a4..6950452 100644
--- a/fusl/src/ctype/wcswidth.c
+++ b/fusl/src/ctype/wcswidth.c
@@ -1,8 +1,8 @@
 #include <wchar.h>
 
-int wcswidth(const wchar_t *wcs, size_t n)
-{
-	int l=0, k=0;
-	for (; n-- && *wcs && (k = wcwidth(*wcs)) >= 0; l+=k, wcs++);
-	return (k < 0) ? k : l;
+int wcswidth(const wchar_t* wcs, size_t n) {
+  int l = 0, k = 0;
+  for (; n-- && *wcs && (k = wcwidth(*wcs)) >= 0; l += k, wcs++)
+    ;
+  return (k < 0) ? k : l;
 }
diff --git a/fusl/src/ctype/wctrans.c b/fusl/src/ctype/wctrans.c
index b1b1265..c2c532d 100644
--- a/fusl/src/ctype/wctrans.c
+++ b/fusl/src/ctype/wctrans.c
@@ -2,28 +2,28 @@
 #include <string.h>
 #include "libc.h"
 
-wctrans_t wctrans(const char *class)
-{
-	if (!strcmp(class, "toupper")) return (wctrans_t)1;
-	if (!strcmp(class, "tolower")) return (wctrans_t)2;
-	return 0;
+wctrans_t wctrans(const char* class) {
+  if (!strcmp(class, "toupper"))
+    return (wctrans_t)1;
+  if (!strcmp(class, "tolower"))
+    return (wctrans_t)2;
+  return 0;
 }
 
-wint_t towctrans(wint_t wc, wctrans_t trans)
-{
-	if (trans == (wctrans_t)1) return towupper(wc);
-	if (trans == (wctrans_t)2) return towlower(wc);
-	return wc;
+wint_t towctrans(wint_t wc, wctrans_t trans) {
+  if (trans == (wctrans_t)1)
+    return towupper(wc);
+  if (trans == (wctrans_t)2)
+    return towlower(wc);
+  return wc;
 }
 
-wctrans_t __wctrans_l(const char *s, locale_t l)
-{
-	return wctrans(s);
+wctrans_t __wctrans_l(const char* s, locale_t l) {
+  return wctrans(s);
 }
 
-wint_t __towctrans_l(wint_t c, wctrans_t t, locale_t l)
-{
-	return towctrans(c, t);
+wint_t __towctrans_l(wint_t c, wctrans_t t, locale_t l) {
+  return towctrans(c, t);
 }
 
 weak_alias(__wctrans_l, wctrans_l);
diff --git a/fusl/src/ctype/wcwidth.c b/fusl/src/ctype/wcwidth.c
index 49c40ee..58846c1 100644
--- a/fusl/src/ctype/wcwidth.c
+++ b/fusl/src/ctype/wcwidth.c
@@ -8,22 +8,21 @@
 #include "wide.h"
 };
 
-int wcwidth(wchar_t wc)
-{
-	if (wc < 0xffU)
-		return (wc+1 & 0x7f) >= 0x21 ? 1 : wc ? -1 : 0;
-	if ((wc & 0xfffeffffU) < 0xfffe) {
-		if ((table[table[wc>>8]*32+((wc&255)>>3)]>>(wc&7))&1)
-			return 0;
-		if ((wtable[wtable[wc>>8]*32+((wc&255)>>3)]>>(wc&7))&1)
-			return 2;
-		return 1;
-	}
-	if ((wc & 0xfffe) == 0xfffe)
-		return -1;
-	if (wc-0x20000U < 0x20000)
-		return 2;
-	if (wc == 0xe0001 || wc-0xe0020U < 0x5f || wc-0xe0100 < 0xef)
-		return 0;
-	return 1;
+int wcwidth(wchar_t wc) {
+  if (wc < 0xffU)
+    return (wc + 1 & 0x7f) >= 0x21 ? 1 : wc ? -1 : 0;
+  if ((wc & 0xfffeffffU) < 0xfffe) {
+    if ((table[table[wc >> 8] * 32 + ((wc & 255) >> 3)] >> (wc & 7)) & 1)
+      return 0;
+    if ((wtable[wtable[wc >> 8] * 32 + ((wc & 255) >> 3)] >> (wc & 7)) & 1)
+      return 2;
+    return 1;
+  }
+  if ((wc & 0xfffe) == 0xfffe)
+    return -1;
+  if (wc - 0x20000U < 0x20000)
+    return 2;
+  if (wc == 0xe0001 || wc - 0xe0020U < 0x5f || wc - 0xe0100 < 0xef)
+    return 0;
+  return 1;
 }
diff --git a/fusl/src/ctype/wide.h b/fusl/src/ctype/wide.h
index 125d0ce..701ba1d 100644
--- a/fusl/src/ctype/wide.h
+++ b/fusl/src/ctype/wide.h
@@ -1,42 +1,57 @@
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,18,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,19,16,16,16,16,16,16,16,16,16,16,20,21,22,23,24,17,
-17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,25,
-17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
-17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
-17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
-17,17,17,17,17,17,17,17,26,16,16,16,16,27,16,16,17,17,17,17,17,17,17,17,17,17,
-17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,
-17,17,17,17,17,17,17,28,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,17,17,16,16,16,29,30,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,31,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,
-16,16,16,16,32,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,
-0,248,0,0,0,0,0,0,0,0,0,0,252,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,251,255,255,255,
-255,255,255,255,255,255,255,15,0,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,0,0,0,255,15,
-255,255,255,255,255,255,255,127,254,255,255,255,255,255,255,255,255,255,127,
-254,255,255,255,255,255,255,255,255,255,255,255,255,224,255,255,255,255,63,
-254,255,255,255,255,255,255,255,255,255,255,127,255,255,255,255,255,7,255,255,
-255,255,15,0,255,255,255,255,255,127,255,255,255,255,255,0,255,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,127,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,
-255,255,255,255,255,255,31,255,255,255,255,255,255,127,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,255,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,
-255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,0,255,
-255,127,248,255,255,255,255,255,15,0,0,255,3,0,0,255,255,255,255,247,255,127,
-15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,255,255,255,255,255,255,255,
-255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,255,255,255,255,255,7,255,1,3,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 18, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 19, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 20, 21, 22, 23, 24, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    25, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 26, 16, 16, 16, 16, 27, 16, 16,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
+    17, 17, 17, 17, 17, 28, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 17, 17, 16, 16, 16, 29, 30, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 31, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
+    16, 16, 16, 32, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 0, 0, 0, 0, 0, 0, 0, 0, 248, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 252, 0, 0,
+    0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255,
+    255, 251, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 63, 0, 0, 0, 255, 15, 255, 255,
+    255, 255, 255, 255, 255, 127, 254, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 127, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    224, 255, 255, 255, 255, 63, 254, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 127, 255, 255, 255, 255, 255, 7, 255, 255, 255, 255, 15, 0, 255,
+    255, 255, 255, 255, 127, 255, 255, 255, 255, 255, 0, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 127, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 0, 0, 0, 0, 0,
+    0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 31, 255, 255, 255, 255, 255, 255, 127, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 31, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 255, 255, 255, 255,
+    255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 15, 0, 255, 255, 127,
+    248, 255, 255, 255, 255, 255, 15, 0, 0, 255, 3, 0, 0, 255, 255, 255, 255,
+    247, 255, 127, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 1, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 127, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 255,
+    255, 255, 255, 255, 7, 255, 1, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0,
diff --git a/fusl/src/dirent/__dirent.h b/fusl/src/dirent/__dirent.h
index 32871ba..2fed3e1 100644
--- a/fusl/src/dirent/__dirent.h
+++ b/fusl/src/dirent/__dirent.h
@@ -1,9 +1,8 @@
-struct __dirstream
-{
-	int fd;
-	off_t tell;
-	int buf_pos;
-	int buf_end;
-	volatile int lock[2];
-	char buf[2048];
+struct __dirstream {
+  int fd;
+  off_t tell;
+  int buf_pos;
+  int buf_end;
+  volatile int lock[2];
+  char buf[2048];
 };
diff --git a/fusl/src/dirent/__getdents.c b/fusl/src/dirent/__getdents.c
index 69076d2..0fbf344 100644
--- a/fusl/src/dirent/__getdents.c
+++ b/fusl/src/dirent/__getdents.c
@@ -2,9 +2,8 @@
 #include "syscall.h"
 #include "libc.h"
 
-int __getdents(int fd, struct dirent *buf, size_t len)
-{
-	return syscall(SYS_getdents, fd, buf, len);
+int __getdents(int fd, struct dirent* buf, size_t len) {
+  return syscall(SYS_getdents, fd, buf, len);
 }
 
 weak_alias(__getdents, getdents);
diff --git a/fusl/src/dirent/alphasort.c b/fusl/src/dirent/alphasort.c
index 42050fb..5d9d2a0 100644
--- a/fusl/src/dirent/alphasort.c
+++ b/fusl/src/dirent/alphasort.c
@@ -2,9 +2,8 @@
 #include <dirent.h>
 #include "libc.h"
 
-int alphasort(const struct dirent **a, const struct dirent **b)
-{
-	return strcoll((*a)->d_name, (*b)->d_name);
+int alphasort(const struct dirent** a, const struct dirent** b) {
+  return strcoll((*a)->d_name, (*b)->d_name);
 }
 
 LFS64(alphasort);
diff --git a/fusl/src/dirent/closedir.c b/fusl/src/dirent/closedir.c
index 81e9591..8672ca6 100644
--- a/fusl/src/dirent/closedir.c
+++ b/fusl/src/dirent/closedir.c
@@ -3,9 +3,8 @@
 #include "__dirent.h"
 #include "libc.h"
 
-int closedir(DIR *dir)
-{
-	int ret = close(dir->fd);
-	free(dir);
-	return ret;
+int closedir(DIR* dir) {
+  int ret = close(dir->fd);
+  free(dir);
+  return ret;
 }
diff --git a/fusl/src/dirent/dirfd.c b/fusl/src/dirent/dirfd.c
index 6c86007..5e6ac4d 100644
--- a/fusl/src/dirent/dirfd.c
+++ b/fusl/src/dirent/dirfd.c
@@ -1,7 +1,6 @@
 #include <dirent.h>
 #include "__dirent.h"
 
-int dirfd(DIR *d)
-{
-	return d->fd;
+int dirfd(DIR* d) {
+  return d->fd;
 }
diff --git a/fusl/src/dirent/fdopendir.c b/fusl/src/dirent/fdopendir.c
index c377271..8cdbc7a 100644
--- a/fusl/src/dirent/fdopendir.c
+++ b/fusl/src/dirent/fdopendir.c
@@ -5,23 +5,22 @@
 #include <stdlib.h>
 #include "__dirent.h"
 
-DIR *fdopendir(int fd)
-{
-	DIR *dir;
-	struct stat st;
+DIR* fdopendir(int fd) {
+  DIR* dir;
+  struct stat st;
 
-	if (fstat(fd, &st) < 0) {
-		return 0;
-	}
-	if (!S_ISDIR(st.st_mode)) {
-		errno = ENOTDIR;
-		return 0;
-	}
-	if (!(dir = calloc(1, sizeof *dir))) {
-		return 0;
-	}
+  if (fstat(fd, &st) < 0) {
+    return 0;
+  }
+  if (!S_ISDIR(st.st_mode)) {
+    errno = ENOTDIR;
+    return 0;
+  }
+  if (!(dir = calloc(1, sizeof *dir))) {
+    return 0;
+  }
 
-	fcntl(fd, F_SETFD, FD_CLOEXEC);
-	dir->fd = fd;
-	return dir;
+  fcntl(fd, F_SETFD, FD_CLOEXEC);
+  dir->fd = fd;
+  return dir;
 }
diff --git a/fusl/src/dirent/opendir.c b/fusl/src/dirent/opendir.c
index 5cb84e3..c9b64e3 100644
--- a/fusl/src/dirent/opendir.c
+++ b/fusl/src/dirent/opendir.c
@@ -5,17 +5,16 @@
 #include "__dirent.h"
 #include "syscall.h"
 
-DIR *opendir(const char *name)
-{
-	int fd;
-	DIR *dir;
+DIR* opendir(const char* name) {
+  int fd;
+  DIR* dir;
 
-	if ((fd = open(name, O_RDONLY|O_DIRECTORY|O_CLOEXEC)) < 0)
-		return 0;
-	if (!(dir = calloc(1, sizeof *dir))) {
-		__syscall(SYS_close, fd);
-		return 0;
-	}
-	dir->fd = fd;
-	return dir;
+  if ((fd = open(name, O_RDONLY | O_DIRECTORY | O_CLOEXEC)) < 0)
+    return 0;
+  if (!(dir = calloc(1, sizeof *dir))) {
+    __syscall(SYS_close, fd);
+    return 0;
+  }
+  dir->fd = fd;
+  return dir;
 }
diff --git a/fusl/src/dirent/readdir.c b/fusl/src/dirent/readdir.c
index 2cf0632..a1c99a4 100644
--- a/fusl/src/dirent/readdir.c
+++ b/fusl/src/dirent/readdir.c
@@ -4,25 +4,25 @@
 #include "syscall.h"
 #include "libc.h"
 
-int __getdents(int, struct dirent *, size_t);
+int __getdents(int, struct dirent*, size_t);
 
-struct dirent *readdir(DIR *dir)
-{
-	struct dirent *de;
-	
-	if (dir->buf_pos >= dir->buf_end) {
-		int len = __syscall(SYS_getdents, dir->fd, dir->buf, sizeof dir->buf);
-		if (len <= 0) {
-			if (len < 0 && len != -ENOENT) errno = -len;
-			return 0;
-		}
-		dir->buf_end = len;
-		dir->buf_pos = 0;
-	}
-	de = (void *)(dir->buf + dir->buf_pos);
-	dir->buf_pos += de->d_reclen;
-	dir->tell = de->d_off;
-	return de;
+struct dirent* readdir(DIR* dir) {
+  struct dirent* de;
+
+  if (dir->buf_pos >= dir->buf_end) {
+    int len = __syscall(SYS_getdents, dir->fd, dir->buf, sizeof dir->buf);
+    if (len <= 0) {
+      if (len < 0 && len != -ENOENT)
+        errno = -len;
+      return 0;
+    }
+    dir->buf_end = len;
+    dir->buf_pos = 0;
+  }
+  de = (void*)(dir->buf + dir->buf_pos);
+  dir->buf_pos += de->d_reclen;
+  dir->tell = de->d_off;
+  return de;
 }
 
 LFS64(readdir);
diff --git a/fusl/src/dirent/readdir_r.c b/fusl/src/dirent/readdir_r.c
index daa6c6e..30beb25 100644
--- a/fusl/src/dirent/readdir_r.c
+++ b/fusl/src/dirent/readdir_r.c
@@ -4,26 +4,29 @@
 #include "__dirent.h"
 #include "libc.h"
 
-int readdir_r(DIR *restrict dir, struct dirent *restrict buf, struct dirent **restrict result)
-{
-	struct dirent *de;
-	int errno_save = errno;
-	int ret;
-	
-	LOCK(dir->lock);
-	errno = 0;
-	de = readdir(dir);
-	if ((ret = errno)) {
-		UNLOCK(dir->lock);
-		return ret;
-	}
-	errno = errno_save;
-	if (de) memcpy(buf, de, de->d_reclen);
-	else buf = NULL;
+int readdir_r(DIR* restrict dir,
+              struct dirent* restrict buf,
+              struct dirent** restrict result) {
+  struct dirent* de;
+  int errno_save = errno;
+  int ret;
 
-	UNLOCK(dir->lock);
-	*result = buf;
-	return 0;
+  LOCK(dir->lock);
+  errno = 0;
+  de = readdir(dir);
+  if ((ret = errno)) {
+    UNLOCK(dir->lock);
+    return ret;
+  }
+  errno = errno_save;
+  if (de)
+    memcpy(buf, de, de->d_reclen);
+  else
+    buf = NULL;
+
+  UNLOCK(dir->lock);
+  *result = buf;
+  return 0;
 }
 
 LFS64_2(readdir_r, readdir64_r);
diff --git a/fusl/src/dirent/rewinddir.c b/fusl/src/dirent/rewinddir.c
index f205300..f5e068d 100644
--- a/fusl/src/dirent/rewinddir.c
+++ b/fusl/src/dirent/rewinddir.c
@@ -3,11 +3,10 @@
 #include "__dirent.h"
 #include "libc.h"
 
-void rewinddir(DIR *dir)
-{
-	LOCK(dir->lock);
-	lseek(dir->fd, 0, SEEK_SET);
-	dir->buf_pos = dir->buf_end = 0;
-	dir->tell = 0;
-	UNLOCK(dir->lock);
+void rewinddir(DIR* dir) {
+  LOCK(dir->lock);
+  lseek(dir->fd, 0, SEEK_SET);
+  dir->buf_pos = dir->buf_end = 0;
+  dir->tell = 0;
+  UNLOCK(dir->lock);
 }
diff --git a/fusl/src/dirent/scandir.c b/fusl/src/dirent/scandir.c
index 3af2b50..4093f22 100644
--- a/fusl/src/dirent/scandir.c
+++ b/fusl/src/dirent/scandir.c
@@ -6,43 +6,51 @@
 #include <stddef.h>
 #include "libc.h"
 
-int scandir(const char *path, struct dirent ***res,
-	int (*sel)(const struct dirent *),
-	int (*cmp)(const struct dirent **, const struct dirent **))
-{
-	DIR *d = opendir(path);
-	struct dirent *de, **names=0, **tmp;
-	size_t cnt=0, len=0;
-	int old_errno = errno;
+int scandir(const char* path,
+            struct dirent*** res,
+            int (*sel)(const struct dirent*),
+            int (*cmp)(const struct dirent**, const struct dirent**)) {
+  DIR* d = opendir(path);
+  struct dirent *de, **names = 0, **tmp;
+  size_t cnt = 0, len = 0;
+  int old_errno = errno;
 
-	if (!d) return -1;
+  if (!d)
+    return -1;
 
-	while ((errno=0), (de = readdir(d))) {
-		if (sel && !sel(de)) continue;
-		if (cnt >= len) {
-			len = 2*len+1;
-			if (len > SIZE_MAX/sizeof *names) break;
-			tmp = realloc(names, len * sizeof *names);
-			if (!tmp) break;
-			names = tmp;
-		}
-		names[cnt] = malloc(de->d_reclen);
-		if (!names[cnt]) break;
-		memcpy(names[cnt++], de, de->d_reclen);
-	}
+  while ((errno = 0), (de = readdir(d))) {
+    if (sel && !sel(de))
+      continue;
+    if (cnt >= len) {
+      len = 2 * len + 1;
+      if (len > SIZE_MAX / sizeof *names)
+        break;
+      tmp = realloc(names, len * sizeof *names);
+      if (!tmp)
+        break;
+      names = tmp;
+    }
+    names[cnt] = malloc(de->d_reclen);
+    if (!names[cnt])
+      break;
+    memcpy(names[cnt++], de, de->d_reclen);
+  }
 
-	closedir(d);
+  closedir(d);
 
-	if (errno) {
-		if (names) while (cnt-->0) free(names[cnt]);
-		free(names);
-		return -1;
-	}
-	errno = old_errno;
+  if (errno) {
+    if (names)
+      while (cnt-- > 0)
+        free(names[cnt]);
+    free(names);
+    return -1;
+  }
+  errno = old_errno;
 
-	if (cmp) qsort(names, cnt, sizeof *names, (int (*)(const void *, const void *))cmp);
-	*res = names;
-	return cnt;
+  if (cmp)
+    qsort(names, cnt, sizeof *names, (int (*)(const void*, const void*))cmp);
+  *res = names;
+  return cnt;
 }
 
 LFS64(scandir);
diff --git a/fusl/src/dirent/seekdir.c b/fusl/src/dirent/seekdir.c
index 5be47d4..ebe8080 100644
--- a/fusl/src/dirent/seekdir.c
+++ b/fusl/src/dirent/seekdir.c
@@ -3,10 +3,9 @@
 #include "__dirent.h"
 #include "libc.h"
 
-void seekdir(DIR *dir, long off)
-{
-	LOCK(dir->lock);
-	dir->tell = lseek(dir->fd, off, SEEK_SET);
-	dir->buf_pos = dir->buf_end = 0;
-	UNLOCK(dir->lock);
+void seekdir(DIR* dir, long off) {
+  LOCK(dir->lock);
+  dir->tell = lseek(dir->fd, off, SEEK_SET);
+  dir->buf_pos = dir->buf_end = 0;
+  UNLOCK(dir->lock);
 }
diff --git a/fusl/src/dirent/telldir.c b/fusl/src/dirent/telldir.c
index cf25acf..bce8e68 100644
--- a/fusl/src/dirent/telldir.c
+++ b/fusl/src/dirent/telldir.c
@@ -1,7 +1,6 @@
 #include <dirent.h>
 #include "__dirent.h"
 
-long telldir(DIR *dir)
-{
-	return dir->tell;
+long telldir(DIR* dir) {
+  return dir->tell;
 }
diff --git a/fusl/src/dirent/versionsort.c b/fusl/src/dirent/versionsort.c
index 410cb70..0abc2cc 100644
--- a/fusl/src/dirent/versionsort.c
+++ b/fusl/src/dirent/versionsort.c
@@ -3,9 +3,8 @@
 #include <dirent.h>
 #include "libc.h"
 
-int versionsort(const struct dirent **a, const struct dirent **b)
-{
-	return strverscmp((*a)->d_name, (*b)->d_name);
+int versionsort(const struct dirent** a, const struct dirent** b) {
+  return strverscmp((*a)->d_name, (*b)->d_name);
 }
 
 #undef versionsort64
diff --git a/fusl/src/env/__environ.c b/fusl/src/env/__environ.c
index e6c6faa..58fc440 100644
--- a/fusl/src/env/__environ.c
+++ b/fusl/src/env/__environ.c
@@ -1,6 +1,6 @@
 #include "libc.h"
 
-char **__environ = 0;
+char** __environ = 0;
 weak_alias(__environ, ___environ);
 weak_alias(__environ, _environ);
 weak_alias(__environ, environ);
diff --git a/fusl/src/env/__init_tls.c b/fusl/src/env/__init_tls.c
index 0107a54..35358b3 100644
--- a/fusl/src/env/__init_tls.c
+++ b/fusl/src/env/__init_tls.c
@@ -8,61 +8,61 @@
 #include "atomic.h"
 #include "syscall.h"
 
-int __init_tp(void *p)
-{
-	pthread_t td = p;
-	td->self = td;
-	int r = __set_thread_area(TP_ADJ(p));
-	if (r < 0) return -1;
-	if (!r) libc.can_do_threads = 1;
-	td->tid = __syscall(SYS_set_tid_address, &td->tid);
-	td->locale = &libc.global_locale;
-	td->robust_list.head = &td->robust_list.head;
-	return 0;
+int __init_tp(void* p) {
+  pthread_t td = p;
+  td->self = td;
+  int r = __set_thread_area(TP_ADJ(p));
+  if (r < 0)
+    return -1;
+  if (!r)
+    libc.can_do_threads = 1;
+  td->tid = __syscall(SYS_set_tid_address, &td->tid);
+  td->locale = &libc.global_locale;
+  td->robust_list.head = &td->robust_list.head;
+  return 0;
 }
 
 static struct builtin_tls {
-	char c;
-	struct pthread pt;
-	void *space[16];
+  char c;
+  struct pthread pt;
+  void* space[16];
 } builtin_tls[1];
 #define MIN_TLS_ALIGN offsetof(struct builtin_tls, pt)
 
 static struct tls_module main_tls;
 
-void *__copy_tls(unsigned char *mem)
-{
-	pthread_t td;
-	struct tls_module *p;
-	size_t i;
-	void **dtv;
+void* __copy_tls(unsigned char* mem) {
+  pthread_t td;
+  struct tls_module* p;
+  size_t i;
+  void** dtv;
 
 #ifdef TLS_ABOVE_TP
-	dtv = (void **)(mem + libc.tls_size) - (libc.tls_cnt + 1);
+  dtv = (void**)(mem + libc.tls_size) - (libc.tls_cnt + 1);
 
-	mem += -((uintptr_t)mem + sizeof(struct pthread)) & (libc.tls_align-1);
-	td = (pthread_t)mem;
-	mem += sizeof(struct pthread);
+  mem += -((uintptr_t)mem + sizeof(struct pthread)) & (libc.tls_align - 1);
+  td = (pthread_t)mem;
+  mem += sizeof(struct pthread);
 
-	for (i=1, p=libc.tls_head; p; i++, p=p->next) {
-		dtv[i] = mem + p->offset;
-		memcpy(dtv[i], p->image, p->len);
-	}
+  for (i = 1, p = libc.tls_head; p; i++, p = p->next) {
+    dtv[i] = mem + p->offset;
+    memcpy(dtv[i], p->image, p->len);
+  }
 #else
-	dtv = (void **)mem;
+  dtv = (void**)mem;
 
-	mem += libc.tls_size - sizeof(struct pthread);
-	mem -= (uintptr_t)mem & (libc.tls_align-1);
-	td = (pthread_t)mem;
+  mem += libc.tls_size - sizeof(struct pthread);
+  mem -= (uintptr_t)mem & (libc.tls_align - 1);
+  td = (pthread_t)mem;
 
-	for (i=1, p=libc.tls_head; p; i++, p=p->next) {
-		dtv[i] = mem - p->offset;
-		memcpy(dtv[i], p->image, p->len);
-	}
+  for (i = 1, p = libc.tls_head; p; i++, p = p->next) {
+    dtv[i] = mem - p->offset;
+    memcpy(dtv[i], p->image, p->len);
+  }
 #endif
-	dtv[0] = (void *)libc.tls_cnt;
-	td->dtv = td->dtv_copy = dtv;
-	return td;
+  dtv[0] = (void*)libc.tls_cnt;
+  td->dtv = td->dtv_copy = dtv;
+  return td;
 }
 
 #if ULONG_MAX == 0xffffffff
@@ -71,61 +71,59 @@
 typedef Elf64_Phdr Phdr;
 #endif
 
-static void static_init_tls(size_t *aux)
-{
-	unsigned char *p;
-	size_t n;
-	Phdr *phdr, *tls_phdr=0;
-	size_t base = 0;
-	void *mem;
+static void static_init_tls(size_t* aux) {
+  unsigned char* p;
+  size_t n;
+  Phdr *phdr, *tls_phdr = 0;
+  size_t base = 0;
+  void* mem;
 
-	for (p=(void *)aux[AT_PHDR],n=aux[AT_PHNUM]; n; n--,p+=aux[AT_PHENT]) {
-		phdr = (void *)p;
-		if (phdr->p_type == PT_PHDR)
-			base = aux[AT_PHDR] - phdr->p_vaddr;
-		if (phdr->p_type == PT_TLS)
-			tls_phdr = phdr;
-	}
+  for (p = (void*)aux[AT_PHDR], n = aux[AT_PHNUM]; n; n--, p += aux[AT_PHENT]) {
+    phdr = (void*)p;
+    if (phdr->p_type == PT_PHDR)
+      base = aux[AT_PHDR] - phdr->p_vaddr;
+    if (phdr->p_type == PT_TLS)
+      tls_phdr = phdr;
+  }
 
-	if (tls_phdr) {
-		main_tls.image = (void *)(base + tls_phdr->p_vaddr);
-		main_tls.len = tls_phdr->p_filesz;
-		main_tls.size = tls_phdr->p_memsz;
-		main_tls.align = tls_phdr->p_align;
-		libc.tls_cnt = 1;
-		libc.tls_head = &main_tls;
-	}
+  if (tls_phdr) {
+    main_tls.image = (void*)(base + tls_phdr->p_vaddr);
+    main_tls.len = tls_phdr->p_filesz;
+    main_tls.size = tls_phdr->p_memsz;
+    main_tls.align = tls_phdr->p_align;
+    libc.tls_cnt = 1;
+    libc.tls_head = &main_tls;
+  }
 
-	main_tls.size += (-main_tls.size - (uintptr_t)main_tls.image)
-		& (main_tls.align-1);
-	if (main_tls.align < MIN_TLS_ALIGN) main_tls.align = MIN_TLS_ALIGN;
+  main_tls.size +=
+      (-main_tls.size - (uintptr_t)main_tls.image) & (main_tls.align - 1);
+  if (main_tls.align < MIN_TLS_ALIGN)
+    main_tls.align = MIN_TLS_ALIGN;
 #ifndef TLS_ABOVE_TP
-	main_tls.offset = main_tls.size;
+  main_tls.offset = main_tls.size;
 #endif
 
-	libc.tls_align = main_tls.align;
-	libc.tls_size = 2*sizeof(void *) + sizeof(struct pthread)
-		+ main_tls.size + main_tls.align
-		+ MIN_TLS_ALIGN-1 & -MIN_TLS_ALIGN;
+  libc.tls_align = main_tls.align;
+  libc.tls_size = 2 * sizeof(void*) + sizeof(struct pthread) + main_tls.size +
+                      main_tls.align + MIN_TLS_ALIGN - 1 &
+                  -MIN_TLS_ALIGN;
 
-	if (libc.tls_size > sizeof builtin_tls) {
+  if (libc.tls_size > sizeof builtin_tls) {
 #ifndef SYS_mmap2
 #define SYS_mmap2 SYS_mmap
 #endif
-		mem = (void *)__syscall(
-			SYS_mmap2,
-			0, libc.tls_size, PROT_READ|PROT_WRITE,
-			MAP_ANONYMOUS|MAP_PRIVATE, -1, 0);
-		/* -4095...-1 cast to void * will crash on dereference anyway,
-		 * so don't bloat the init code checking for error codes and
-		 * explicitly calling a_crash(). */
-	} else {
-		mem = builtin_tls;
-	}
+    mem = (void*)__syscall(SYS_mmap2, 0, libc.tls_size, PROT_READ | PROT_WRITE,
+                           MAP_ANONYMOUS | MAP_PRIVATE, -1, 0);
+    /* -4095...-1 cast to void * will crash on dereference anyway,
+     * so don't bloat the init code checking for error codes and
+     * explicitly calling a_crash(). */
+  } else {
+    mem = builtin_tls;
+  }
 
-	/* Failure to initialize thread pointer is always fatal. */
-	if (__init_tp(__copy_tls(mem)) < 0)
-		a_crash();
+  /* Failure to initialize thread pointer is always fatal. */
+  if (__init_tp(__copy_tls(mem)) < 0)
+    a_crash();
 }
 
 weak_alias(static_init_tls, __init_tls);
diff --git a/fusl/src/env/__libc_start_main.c b/fusl/src/env/__libc_start_main.c
index 5c79be2..813ba5e 100644
--- a/fusl/src/env/__libc_start_main.c
+++ b/fusl/src/env/__libc_start_main.c
@@ -6,71 +6,76 @@
 #include "atomic.h"
 #include "libc.h"
 
-void __init_tls(size_t *);
+void __init_tls(size_t*);
 
 static void dummy(void) {}
 weak_alias(dummy, _init);
 
-__attribute__((__weak__, __visibility__("hidden")))
-extern void (*const __init_array_start)(void), (*const __init_array_end)(void);
+__attribute__((__weak__, __visibility__("hidden"))) extern void (
+    *const __init_array_start)(void),
+    (*const __init_array_end)(void);
 
-static void dummy1(void *p) {}
+static void dummy1(void* p) {}
 weak_alias(dummy1, __init_ssp);
 
 #define AUX_CNT 38
 
-void __init_libc(char **envp, char *pn)
-{
-	size_t i, *auxv, aux[AUX_CNT] = { 0 };
-	__environ = envp;
-	for (i=0; envp[i]; i++);
-	libc.auxv = auxv = (void *)(envp+i+1);
-	for (i=0; auxv[i]; i+=2) if (auxv[i]<AUX_CNT) aux[auxv[i]] = auxv[i+1];
-	__hwcap = aux[AT_HWCAP];
-	__sysinfo = aux[AT_SYSINFO];
-	libc.page_size = aux[AT_PAGESZ];
+void __init_libc(char** envp, char* pn) {
+  size_t i, *auxv, aux[AUX_CNT] = {0};
+  __environ = envp;
+  for (i = 0; envp[i]; i++)
+    ;
+  libc.auxv = auxv = (void*)(envp + i + 1);
+  for (i = 0; auxv[i]; i += 2)
+    if (auxv[i] < AUX_CNT)
+      aux[auxv[i]] = auxv[i + 1];
+  __hwcap = aux[AT_HWCAP];
+  __sysinfo = aux[AT_SYSINFO];
+  libc.page_size = aux[AT_PAGESZ];
 
-	if (pn) {
-		__progname = __progname_full = pn;
-		for (i=0; pn[i]; i++) if (pn[i]=='/') __progname = pn+i+1;
-	}
+  if (pn) {
+    __progname = __progname_full = pn;
+    for (i = 0; pn[i]; i++)
+      if (pn[i] == '/')
+        __progname = pn + i + 1;
+  }
 
-	__init_tls(aux);
-	__init_ssp((void *)aux[AT_RANDOM]);
+  __init_tls(aux);
+  __init_ssp((void*)aux[AT_RANDOM]);
 
-	if (aux[AT_UID]==aux[AT_EUID] && aux[AT_GID]==aux[AT_EGID]
-		&& !aux[AT_SECURE]) return;
+  if (aux[AT_UID] == aux[AT_EUID] && aux[AT_GID] == aux[AT_EGID] &&
+      !aux[AT_SECURE])
+    return;
 
-	struct pollfd pfd[3] = { {.fd=0}, {.fd=1}, {.fd=2} };
+  struct pollfd pfd[3] = {{.fd = 0}, {.fd = 1}, {.fd = 2}};
 #ifdef SYS_poll
-	__syscall(SYS_poll, pfd, 3, 0);
+  __syscall(SYS_poll, pfd, 3, 0);
 #else
-	__syscall(SYS_ppoll, pfd, 3, &(struct timespec){0}, 0, _NSIG/8);
+  __syscall(SYS_ppoll, pfd, 3, &(struct timespec){0}, 0, _NSIG / 8);
 #endif
-	for (i=0; i<3; i++) if (pfd[i].revents&POLLNVAL)
-		if (__sys_open("/dev/null", O_RDWR)<0)
-			a_crash();
-	libc.secure = 1;
+  for (i = 0; i < 3; i++)
+    if (pfd[i].revents & POLLNVAL)
+      if (__sys_open("/dev/null", O_RDWR) < 0)
+        a_crash();
+  libc.secure = 1;
 }
 
-static void libc_start_init(void)
-{
-	_init();
-	uintptr_t a = (uintptr_t)&__init_array_start;
-	for (; a<(uintptr_t)&__init_array_end; a+=sizeof(void(*)()))
-		(*(void (**)())a)();
+static void libc_start_init(void) {
+  _init();
+  uintptr_t a = (uintptr_t)&__init_array_start;
+  for (; a < (uintptr_t)&__init_array_end; a += sizeof(void (*)()))
+    (*(void (**)())a)();
 }
 
 weak_alias(libc_start_init, __libc_start_init);
 
-int __libc_start_main(int (*main)(int,char **,char **), int argc, char **argv)
-{
-	char **envp = argv+argc+1;
+int __libc_start_main(int (*main)(int, char**, char**), int argc, char** argv) {
+  char** envp = argv + argc + 1;
 
-	__init_libc(envp, argv[0]);
-	__libc_start_init();
+  __init_libc(envp, argv[0]);
+  __libc_start_init();
 
-	/* Pass control to the application */
-	exit(main(argc, argv, envp));
-	return 0;
+  /* Pass control to the application */
+  exit(main(argc, argv, envp));
+  return 0;
 }
diff --git a/fusl/src/env/__reset_tls.c b/fusl/src/env/__reset_tls.c
index 677e57f..65ede6c 100644
--- a/fusl/src/env/__reset_tls.c
+++ b/fusl/src/env/__reset_tls.c
@@ -2,15 +2,15 @@
 #include "pthread_impl.h"
 #include "libc.h"
 
-void __reset_tls()
-{
-	pthread_t self = __pthread_self();
-	struct tls_module *p;
-	size_t i, n = (size_t)self->dtv[0];
-	if (n) for (p=libc.tls_head, i=1; i<=n; i++, p=p->next) {
-		if (!self->dtv[i]) continue;
-		memcpy(self->dtv[i], p->image, p->len);
-		memset((char *)self->dtv[i]+p->len, 0,
-			p->size - p->len);
-	}
+void __reset_tls() {
+  pthread_t self = __pthread_self();
+  struct tls_module* p;
+  size_t i, n = (size_t)self->dtv[0];
+  if (n)
+    for (p = libc.tls_head, i = 1; i <= n; i++, p = p->next) {
+      if (!self->dtv[i])
+        continue;
+      memcpy(self->dtv[i], p->image, p->len);
+      memset((char*)self->dtv[i] + p->len, 0, p->size - p->len);
+    }
 }
diff --git a/fusl/src/env/__stack_chk_fail.c b/fusl/src/env/__stack_chk_fail.c
index 4de82fd..27c3036 100644
--- a/fusl/src/env/__stack_chk_fail.c
+++ b/fusl/src/env/__stack_chk_fail.c
@@ -4,20 +4,19 @@
 
 uintptr_t __stack_chk_guard;
 
-void __init_ssp(void *entropy)
-{
-	if (entropy) memcpy(&__stack_chk_guard, entropy, sizeof(uintptr_t));
-	else __stack_chk_guard = (uintptr_t)&__stack_chk_guard * 1103515245;
+void __init_ssp(void* entropy) {
+  if (entropy)
+    memcpy(&__stack_chk_guard, entropy, sizeof(uintptr_t));
+  else
+    __stack_chk_guard = (uintptr_t)&__stack_chk_guard * 1103515245;
 
-	__pthread_self()->CANARY = __stack_chk_guard;
+  __pthread_self()->CANARY = __stack_chk_guard;
 }
 
-void __stack_chk_fail(void)
-{
-	a_crash();
+void __stack_chk_fail(void) {
+  a_crash();
 }
 
-__attribute__((__visibility__("hidden")))
-void __stack_chk_fail_local(void);
+__attribute__((__visibility__("hidden"))) void __stack_chk_fail_local(void);
 
 weak_alias(__stack_chk_fail, __stack_chk_fail_local);
diff --git a/fusl/src/env/clearenv.c b/fusl/src/env/clearenv.c
index 62d5095..0828f87 100644
--- a/fusl/src/env/clearenv.c
+++ b/fusl/src/env/clearenv.c
@@ -1,10 +1,9 @@
 #define _GNU_SOURCE
 #include <stdlib.h>
 
-extern char **__environ;
+extern char** __environ;
 
-int clearenv()
-{
-	__environ[0] = 0;
-	return 0;
+int clearenv() {
+  __environ[0] = 0;
+  return 0;
 }
diff --git a/fusl/src/env/getenv.c b/fusl/src/env/getenv.c
index 00c1bce..c1c4967 100644
--- a/fusl/src/env/getenv.c
+++ b/fusl/src/env/getenv.c
@@ -2,13 +2,16 @@
 #include <string.h>
 #include "libc.h"
 
-char *getenv(const char *name)
-{
-	int i;
-	size_t l = strlen(name);
-	if (!__environ || !*name || strchr(name, '=')) return NULL;
-	for (i=0; __environ[i] && (strncmp(name, __environ[i], l)
-		|| __environ[i][l] != '='); i++);
-	if (__environ[i]) return __environ[i] + l+1;
-	return NULL;
+char* getenv(const char* name) {
+  int i;
+  size_t l = strlen(name);
+  if (!__environ || !*name || strchr(name, '='))
+    return NULL;
+  for (i = 0; __environ[i] &&
+              (strncmp(name, __environ[i], l) || __environ[i][l] != '=');
+       i++)
+    ;
+  if (__environ[i])
+    return __environ[i] + l + 1;
+  return NULL;
 }
diff --git a/fusl/src/env/putenv.c b/fusl/src/env/putenv.c
index 4042869..7f6caa4 100644
--- a/fusl/src/env/putenv.c
+++ b/fusl/src/env/putenv.c
@@ -1,57 +1,61 @@
 #include <stdlib.h>
 #include <string.h>
 
-extern char **__environ;
-char **__env_map;
+extern char** __environ;
+char** __env_map;
 
-int __putenv(char *s, int a)
-{
-	int i=0, j=0;
-	char *z = strchr(s, '=');
-	char **newenv = 0;
-	char **newmap = 0;
-	static char **oldenv;
+int __putenv(char* s, int a) {
+  int i = 0, j = 0;
+  char* z = strchr(s, '=');
+  char** newenv = 0;
+  char** newmap = 0;
+  static char** oldenv;
 
-	if (!z) return unsetenv(s);
-	if (z==s) return -1;
-	for (; __environ[i] && memcmp(s, __environ[i], z-s+1); i++);
-	if (a) {
-		if (!__env_map) {
-			__env_map = calloc(2, sizeof(char *));
-			if (__env_map) __env_map[0] = s;
-		} else {
-			for (; __env_map[j] && __env_map[j] != __environ[i]; j++);
-			if (!__env_map[j]) {
-				newmap = realloc(__env_map, sizeof(char *)*(j+2));
-				if (newmap) {
-					__env_map = newmap;
-					__env_map[j] = s;
-					__env_map[j+1] = NULL;
-				}
-			} else {
-				free(__env_map[j]);
-			}
-		}
-	}
-	if (!__environ[i]) {
-		newenv = malloc(sizeof(char *)*(i+2));
-		if (!newenv) {
-			if (a && __env_map) __env_map[j] = 0;
-			return -1;
-		}
-		memcpy(newenv, __environ, sizeof(char *)*i);
-		newenv[i] = s;
-		newenv[i+1] = 0;
-		__environ = newenv;
-		free(oldenv);
-		oldenv = __environ;
-	}
+  if (!z)
+    return unsetenv(s);
+  if (z == s)
+    return -1;
+  for (; __environ[i] && memcmp(s, __environ[i], z - s + 1); i++)
+    ;
+  if (a) {
+    if (!__env_map) {
+      __env_map = calloc(2, sizeof(char*));
+      if (__env_map)
+        __env_map[0] = s;
+    } else {
+      for (; __env_map[j] && __env_map[j] != __environ[i]; j++)
+        ;
+      if (!__env_map[j]) {
+        newmap = realloc(__env_map, sizeof(char*) * (j + 2));
+        if (newmap) {
+          __env_map = newmap;
+          __env_map[j] = s;
+          __env_map[j + 1] = NULL;
+        }
+      } else {
+        free(__env_map[j]);
+      }
+    }
+  }
+  if (!__environ[i]) {
+    newenv = malloc(sizeof(char*) * (i + 2));
+    if (!newenv) {
+      if (a && __env_map)
+        __env_map[j] = 0;
+      return -1;
+    }
+    memcpy(newenv, __environ, sizeof(char*) * i);
+    newenv[i] = s;
+    newenv[i + 1] = 0;
+    __environ = newenv;
+    free(oldenv);
+    oldenv = __environ;
+  }
 
-	__environ[i] = s;
-	return 0;
+  __environ[i] = s;
+  return 0;
 }
 
-int putenv(char *s)
-{
-	return __putenv(s, 0);
+int putenv(char* s) {
+  return __putenv(s, 0);
 }
diff --git a/fusl/src/env/setenv.c b/fusl/src/env/setenv.c
index 76e8ee1..61a1e3a 100644
--- a/fusl/src/env/setenv.c
+++ b/fusl/src/env/setenv.c
@@ -2,29 +2,30 @@
 #include <string.h>
 #include <errno.h>
 
-int __putenv(char *s, int a);
+int __putenv(char* s, int a);
 
-int setenv(const char *var, const char *value, int overwrite)
-{
-	char *s;
-	int l1, l2;
+int setenv(const char* var, const char* value, int overwrite) {
+  char* s;
+  int l1, l2;
 
-	if (!var || !*var || strchr(var, '=')) {
-		errno = EINVAL;
-		return -1;
-	}
-	if (!overwrite && getenv(var)) return 0;
+  if (!var || !*var || strchr(var, '=')) {
+    errno = EINVAL;
+    return -1;
+  }
+  if (!overwrite && getenv(var))
+    return 0;
 
-	l1 = strlen(var);
-	l2 = strlen(value);
-	s = malloc(l1+l2+2);
-	if (s) {
-		memcpy(s, var, l1);
-		s[l1] = '=';
-		memcpy(s+l1+1, value, l2);
-		s[l1+l2+1] = 0;
-		if (!__putenv(s, 1)) return 0;
-	}
-	free(s);
-	return -1;
+  l1 = strlen(var);
+  l2 = strlen(value);
+  s = malloc(l1 + l2 + 2);
+  if (s) {
+    memcpy(s, var, l1);
+    s[l1] = '=';
+    memcpy(s + l1 + 1, value, l2);
+    s[l1 + l2 + 1] = 0;
+    if (!__putenv(s, 1))
+      return 0;
+  }
+  free(s);
+  return -1;
 }
diff --git a/fusl/src/env/unsetenv.c b/fusl/src/env/unsetenv.c
index 3569335..02e5339 100644
--- a/fusl/src/env/unsetenv.c
+++ b/fusl/src/env/unsetenv.c
@@ -2,30 +2,33 @@
 #include <string.h>
 #include <errno.h>
 
-extern char **__environ;
-extern char **__env_map;
+extern char** __environ;
+extern char** __env_map;
 
-int unsetenv(const char *name)
-{
-	int i, j;
-	size_t l = strlen(name);
+int unsetenv(const char* name) {
+  int i, j;
+  size_t l = strlen(name);
 
-	if (!*name || strchr(name, '=')) {
-		errno = EINVAL;
-		return -1;
-	}
+  if (!*name || strchr(name, '=')) {
+    errno = EINVAL;
+    return -1;
+  }
 again:
-	for (i=0; __environ[i] && (memcmp(name, __environ[i], l) || __environ[i][l] != '='); i++);
-	if (__environ[i]) {
-		if (__env_map) {
-			for (j=0; __env_map[j] && __env_map[j] != __environ[i]; j++);
-			free (__env_map[j]);
-			for (; __env_map[j]; j++)
-				__env_map[j] = __env_map[j+1];
-		}
-		for (; __environ[i]; i++)
-			__environ[i] = __environ[i+1];
-		goto again;
-	}
-	return 0;
+  for (i = 0; __environ[i] &&
+              (memcmp(name, __environ[i], l) || __environ[i][l] != '=');
+       i++)
+    ;
+  if (__environ[i]) {
+    if (__env_map) {
+      for (j = 0; __env_map[j] && __env_map[j] != __environ[i]; j++)
+        ;
+      free(__env_map[j]);
+      for (; __env_map[j]; j++)
+        __env_map[j] = __env_map[j + 1];
+    }
+    for (; __environ[i]; i++)
+      __environ[i] = __environ[i + 1];
+    goto again;
+  }
+  return 0;
 }
diff --git a/fusl/src/errno/__errno_location.c b/fusl/src/errno/__errno_location.c
index 7172a1b..d65313d 100644
--- a/fusl/src/errno/__errno_location.c
+++ b/fusl/src/errno/__errno_location.c
@@ -1,6 +1,5 @@
 #include "pthread_impl.h"
 
-int *__errno_location(void)
-{
-	return &__pthread_self()->errno_val;
+int* __errno_location(void) {
+  return &__pthread_self()->errno_val;
 }
diff --git a/fusl/src/errno/__strerror.h b/fusl/src/errno/__strerror.h
index 915044b..94771fc 100644
--- a/fusl/src/errno/__strerror.h
+++ b/fusl/src/errno/__strerror.h
@@ -4,101 +4,101 @@
  * macro E() along with double-inclusion is used to ensure that ordering
  * of the strings remains synchronized. */
 
-E(EILSEQ,       "Illegal byte sequence")
-E(EDOM,         "Domain error")
-E(ERANGE,       "Result not representable")
+E(EILSEQ, "Illegal byte sequence")
+E(EDOM, "Domain error")
+E(ERANGE, "Result not representable")
 
-E(ENOTTY,       "Not a tty")
-E(EACCES,       "Permission denied")
-E(EPERM,        "Operation not permitted")
-E(ENOENT,       "No such file or directory")
-E(ESRCH,        "No such process")
-E(EEXIST,       "File exists")
+E(ENOTTY, "Not a tty")
+E(EACCES, "Permission denied")
+E(EPERM, "Operation not permitted")
+E(ENOENT, "No such file or directory")
+E(ESRCH, "No such process")
+E(EEXIST, "File exists")
 
-E(EOVERFLOW,    "Value too large for data type")
-E(ENOSPC,       "No space left on device")
-E(ENOMEM,       "Out of memory")
+E(EOVERFLOW, "Value too large for data type")
+E(ENOSPC, "No space left on device")
+E(ENOMEM, "Out of memory")
 
-E(EBUSY,        "Resource busy")
-E(EINTR,        "Interrupted system call")
-E(EAGAIN,       "Resource temporarily unavailable")
-E(ESPIPE,       "Invalid seek")
+E(EBUSY, "Resource busy")
+E(EINTR, "Interrupted system call")
+E(EAGAIN, "Resource temporarily unavailable")
+E(ESPIPE, "Invalid seek")
 
-E(EXDEV,        "Cross-device link")
-E(EROFS,        "Read-only file system")
-E(ENOTEMPTY,    "Directory not empty")
+E(EXDEV, "Cross-device link")
+E(EROFS, "Read-only file system")
+E(ENOTEMPTY, "Directory not empty")
 
-E(ECONNRESET,   "Connection reset by peer")
-E(ETIMEDOUT,    "Operation timed out")
+E(ECONNRESET, "Connection reset by peer")
+E(ETIMEDOUT, "Operation timed out")
 E(ECONNREFUSED, "Connection refused")
-E(EHOSTDOWN,    "Host is down")
+E(EHOSTDOWN, "Host is down")
 E(EHOSTUNREACH, "Host is unreachable")
-E(EADDRINUSE,   "Address in use")
+E(EADDRINUSE, "Address in use")
 
-E(EPIPE,        "Broken pipe")
-E(EIO,          "I/O error")
-E(ENXIO,        "No such device or address")
-E(ENOTBLK,      "Block device required")
-E(ENODEV,       "No such device")
-E(ENOTDIR,      "Not a directory")
-E(EISDIR,       "Is a directory")
-E(ETXTBSY,      "Text file busy")
-E(ENOEXEC,      "Exec format error")
+E(EPIPE, "Broken pipe")
+E(EIO, "I/O error")
+E(ENXIO, "No such device or address")
+E(ENOTBLK, "Block device required")
+E(ENODEV, "No such device")
+E(ENOTDIR, "Not a directory")
+E(EISDIR, "Is a directory")
+E(ETXTBSY, "Text file busy")
+E(ENOEXEC, "Exec format error")
 
-E(EINVAL,       "Invalid argument")
+E(EINVAL, "Invalid argument")
 
-E(E2BIG,        "Argument list too long")
-E(ELOOP,        "Symbolic link loop")
+E(E2BIG, "Argument list too long")
+E(ELOOP, "Symbolic link loop")
 E(ENAMETOOLONG, "Filename too long")
-E(ENFILE,       "Too many open files in system")
-E(EMFILE,       "No file descriptors available")
-E(EBADF,        "Bad file descriptor")
-E(ECHILD,       "No child process")
-E(EFAULT,       "Bad address")
-E(EFBIG,        "File too large")
-E(EMLINK,       "Too many links")
-E(ENOLCK,       "No locks available")
+E(ENFILE, "Too many open files in system")
+E(EMFILE, "No file descriptors available")
+E(EBADF, "Bad file descriptor")
+E(ECHILD, "No child process")
+E(EFAULT, "Bad address")
+E(EFBIG, "File too large")
+E(EMLINK, "Too many links")
+E(ENOLCK, "No locks available")
 
-E(EDEADLK,      "Resource deadlock would occur")
+E(EDEADLK, "Resource deadlock would occur")
 E(ENOTRECOVERABLE, "State not recoverable")
-E(EOWNERDEAD,   "Previous owner died")
-E(ECANCELED,    "Operation canceled")
-E(ENOSYS,       "Function not implemented")
-E(ENOMSG,       "No message of desired type")
-E(EIDRM,        "Identifier removed")
-E(ENOSTR,       "Device not a stream")
-E(ENODATA,      "No data available")
-E(ETIME,        "Device timeout")
-E(ENOSR,        "Out of streams resources")
-E(ENOLINK,      "Link has been severed")
-E(EPROTO,       "Protocol error")
-E(EBADMSG,      "Bad message")
-E(EBADFD,       "File descriptor in bad state")
-E(ENOTSOCK,     "Not a socket")
+E(EOWNERDEAD, "Previous owner died")
+E(ECANCELED, "Operation canceled")
+E(ENOSYS, "Function not implemented")
+E(ENOMSG, "No message of desired type")
+E(EIDRM, "Identifier removed")
+E(ENOSTR, "Device not a stream")
+E(ENODATA, "No data available")
+E(ETIME, "Device timeout")
+E(ENOSR, "Out of streams resources")
+E(ENOLINK, "Link has been severed")
+E(EPROTO, "Protocol error")
+E(EBADMSG, "Bad message")
+E(EBADFD, "File descriptor in bad state")
+E(ENOTSOCK, "Not a socket")
 E(EDESTADDRREQ, "Destination address required")
-E(EMSGSIZE,     "Message too large")
-E(EPROTOTYPE,   "Protocol wrong type for socket")
-E(ENOPROTOOPT,  "Protocol not available")
-E(EPROTONOSUPPORT,"Protocol not supported")
-E(ESOCKTNOSUPPORT,"Socket type not supported")
-E(ENOTSUP,      "Not supported")
+E(EMSGSIZE, "Message too large")
+E(EPROTOTYPE, "Protocol wrong type for socket")
+E(ENOPROTOOPT, "Protocol not available")
+E(EPROTONOSUPPORT, "Protocol not supported")
+E(ESOCKTNOSUPPORT, "Socket type not supported")
+E(ENOTSUP, "Not supported")
 E(EPFNOSUPPORT, "Protocol family not supported")
 E(EAFNOSUPPORT, "Address family not supported by protocol")
-E(EADDRNOTAVAIL,"Address not available")
-E(ENETDOWN,     "Network is down")
-E(ENETUNREACH,  "Network unreachable")
-E(ENETRESET,    "Connection reset by network")
+E(EADDRNOTAVAIL, "Address not available")
+E(ENETDOWN, "Network is down")
+E(ENETUNREACH, "Network unreachable")
+E(ENETRESET, "Connection reset by network")
 E(ECONNABORTED, "Connection aborted")
-E(ENOBUFS,      "No buffer space available")
-E(EISCONN,      "Socket is connected")
-E(ENOTCONN,     "Socket not connected")
-E(ESHUTDOWN,    "Cannot send after socket shutdown")
-E(EALREADY,     "Operation already in progress")
-E(EINPROGRESS,  "Operation in progress")
-E(ESTALE,       "Stale file handle")
-E(EREMOTEIO,    "Remote I/O error")
-E(EDQUOT,       "Quota exceeded")
-E(ENOMEDIUM,    "No medium found")
-E(EMEDIUMTYPE,  "Wrong medium type")
+E(ENOBUFS, "No buffer space available")
+E(EISCONN, "Socket is connected")
+E(ENOTCONN, "Socket not connected")
+E(ESHUTDOWN, "Cannot send after socket shutdown")
+E(EALREADY, "Operation already in progress")
+E(EINPROGRESS, "Operation in progress")
+E(ESTALE, "Stale file handle")
+E(EREMOTEIO, "Remote I/O error")
+E(EDQUOT, "Quota exceeded")
+E(ENOMEDIUM, "No medium found")
+E(EMEDIUMTYPE, "Wrong medium type")
 
-E(0,            "No error information")
+E(0, "No error information")
diff --git a/fusl/src/errno/strerror.c b/fusl/src/errno/strerror.c
index 24c94d3..62e225b 100644
--- a/fusl/src/errno/strerror.c
+++ b/fusl/src/errno/strerror.c
@@ -3,35 +3,38 @@
 #include "locale_impl.h"
 #include "libc.h"
 
-#define E(a,b) ((unsigned char)a),
+#define E(a, b) ((unsigned char)a),
 static const unsigned char errid[] = {
 #include "__strerror.h"
 };
 
 #undef E
-#define E(a,b) b "\0"
+#define E(a, b) b "\0"
 static const char errmsg[] =
 #include "__strerror.h"
-;
+    ;
 
-char *__strerror_l(int e, locale_t loc)
-{
-	const char *s;
-	int i;
-	/* mips has one error code outside of the 8-bit range due to a
-	 * historical typo, so we just remap it. */
-	if (EDQUOT==1133) {
-		if (e==109) e=-1;
-		else if (e==EDQUOT) e=109;
-	}
-	for (i=0; errid[i] && errid[i] != e; i++);
-	for (s=errmsg; i; s++, i--) for (; *s; s++);
-	return (char *)LCTRANS(s, LC_MESSAGES, loc);
+char* __strerror_l(int e, locale_t loc) {
+  const char* s;
+  int i;
+  /* mips has one error code outside of the 8-bit range due to a
+   * historical typo, so we just remap it. */
+  if (EDQUOT == 1133) {
+    if (e == 109)
+      e = -1;
+    else if (e == EDQUOT)
+      e = 109;
+  }
+  for (i = 0; errid[i] && errid[i] != e; i++)
+    ;
+  for (s = errmsg; i; s++, i--)
+    for (; *s; s++)
+      ;
+  return (char*)LCTRANS(s, LC_MESSAGES, loc);
 }
 
-char *strerror(int e)
-{
-	return __strerror_l(e, CURRENT_LOCALE);
+char* strerror(int e) {
+  return __strerror_l(e, CURRENT_LOCALE);
 }
 
 weak_alias(__strerror_l, strerror_l);
diff --git a/fusl/src/exit/_Exit.c b/fusl/src/exit/_Exit.c
index 7a6115c..e3ca5a0 100644
--- a/fusl/src/exit/_Exit.c
+++ b/fusl/src/exit/_Exit.c
@@ -1,8 +1,8 @@
 #include <stdlib.h>
 #include "syscall.h"
 
-_Noreturn void _Exit(int ec)
-{
-	__syscall(SYS_exit_group, ec);
-	for (;;) __syscall(SYS_exit, ec);
+_Noreturn void _Exit(int ec) {
+  __syscall(SYS_exit_group, ec);
+  for (;;)
+    __syscall(SYS_exit, ec);
 }
diff --git a/fusl/src/exit/abort.c b/fusl/src/exit/abort.c
index 203dd35..9bbf6f3 100644
--- a/fusl/src/exit/abort.c
+++ b/fusl/src/exit/abort.c
@@ -2,9 +2,9 @@
 #include <signal.h>
 #include "syscall.h"
 
-_Noreturn void abort(void)
-{
-	raise(SIGABRT);
-	raise(SIGKILL);
-	for (;;);
+_Noreturn void abort(void) {
+  raise(SIGABRT);
+  raise(SIGKILL);
+  for (;;)
+    ;
 }
diff --git a/fusl/src/exit/arm/__aeabi_atexit.c b/fusl/src/exit/arm/__aeabi_atexit.c
index ce16101..4dc51c4 100644
--- a/fusl/src/exit/arm/__aeabi_atexit.c
+++ b/fusl/src/exit/arm/__aeabi_atexit.c
@@ -1,6 +1,5 @@
-int __cxa_atexit(void (*func)(void *), void *arg, void *dso);
+int __cxa_atexit(void (*func)(void*), void* arg, void* dso);
 
-int __aeabi_atexit (void *obj, void (*func) (void *), void *d)
-{
-	return __cxa_atexit (func, obj, d);
+int __aeabi_atexit(void* obj, void (*func)(void*), void* d) {
+  return __cxa_atexit(func, obj, d);
 }
diff --git a/fusl/src/exit/assert.c b/fusl/src/exit/assert.c
index e87442a..44274bc 100644
--- a/fusl/src/exit/assert.c
+++ b/fusl/src/exit/assert.c
@@ -1,9 +1,12 @@
 #include <stdio.h>
 #include <stdlib.h>
 
-void __assert_fail(const char *expr, const char *file, int line, const char *func)
-{
-	fprintf(stderr, "Assertion failed: %s (%s: %s: %d)\n", expr, file, func, line);
-	fflush(NULL);
-	abort();
+void __assert_fail(const char* expr,
+                   const char* file,
+                   int line,
+                   const char* func) {
+  fprintf(stderr, "Assertion failed: %s (%s: %s: %d)\n", expr, file, func,
+          line);
+  fflush(NULL);
+  abort();
 }
diff --git a/fusl/src/exit/at_quick_exit.c b/fusl/src/exit/at_quick_exit.c
index 34541ba..c5590dd 100644
--- a/fusl/src/exit/at_quick_exit.c
+++ b/fusl/src/exit/at_quick_exit.c
@@ -7,23 +7,22 @@
 static int count;
 static volatile int lock[2];
 
-void __funcs_on_quick_exit()
-{
-	void (*func)(void);
-	LOCK(lock);
-	while (count > 0) {
-		func = funcs[--count];
-		UNLOCK(lock);
-		func();
-		LOCK(lock);
-	}
+void __funcs_on_quick_exit() {
+  void (*func)(void);
+  LOCK(lock);
+  while (count > 0) {
+    func = funcs[--count];
+    UNLOCK(lock);
+    func();
+    LOCK(lock);
+  }
 }
 
-int at_quick_exit(void (*func)(void))
-{
-	if (count == 32) return -1;
-	LOCK(lock);
-	funcs[count++] = func;
-	UNLOCK(lock);
-	return 0;
+int at_quick_exit(void (*func)(void)) {
+  if (count == 32)
+    return -1;
+  LOCK(lock);
+  funcs[count++] = func;
+  UNLOCK(lock);
+  return 0;
 }
diff --git a/fusl/src/exit/atexit.c b/fusl/src/exit/atexit.c
index 2b58b8b..92b2306 100644
--- a/fusl/src/exit/atexit.c
+++ b/fusl/src/exit/atexit.c
@@ -5,67 +5,62 @@
 /* Ensure that at least 32 atexit handlers can be registered without malloc */
 #define COUNT 32
 
-static struct fl
-{
-	struct fl *next;
-	void (*f[COUNT])(void *);
-	void *a[COUNT];
+static struct fl {
+  struct fl* next;
+  void (*f[COUNT])(void*);
+  void* a[COUNT];
 } builtin, *head;
 
 static int slot;
 static volatile int lock[2];
 
-void __funcs_on_exit()
-{
-	void (*func)(void *), *arg;
-	LOCK(lock);
-	for (; head; head=head->next, slot=COUNT) while(slot-->0) {
-		func = head->f[slot];
-		arg = head->a[slot];
-		UNLOCK(lock);
-		func(arg);
-		LOCK(lock);
-	}
+void __funcs_on_exit() {
+  void (*func)(void*), *arg;
+  LOCK(lock);
+  for (; head; head = head->next, slot = COUNT)
+    while (slot-- > 0) {
+      func = head->f[slot];
+      arg = head->a[slot];
+      UNLOCK(lock);
+      func(arg);
+      LOCK(lock);
+    }
 }
 
-void __cxa_finalize(void *dso)
-{
+void __cxa_finalize(void* dso) {}
+
+int __cxa_atexit(void (*func)(void*), void* arg, void* dso) {
+  LOCK(lock);
+
+  /* Defer initialization of head so it can be in BSS */
+  if (!head)
+    head = &builtin;
+
+  /* If the current function list is full, add a new one */
+  if (slot == COUNT) {
+    struct fl* new_fl = calloc(sizeof(struct fl), 1);
+    if (!new_fl) {
+      UNLOCK(lock);
+      return -1;
+    }
+    new_fl->next = head;
+    head = new_fl;
+    slot = 0;
+  }
+
+  /* Append function to the list. */
+  head->f[slot] = func;
+  head->a[slot] = arg;
+  slot++;
+
+  UNLOCK(lock);
+  return 0;
 }
 
-int __cxa_atexit(void (*func)(void *), void *arg, void *dso)
-{
-	LOCK(lock);
-
-	/* Defer initialization of head so it can be in BSS */
-	if (!head) head = &builtin;
-
-	/* If the current function list is full, add a new one */
-	if (slot==COUNT) {
-		struct fl *new_fl = calloc(sizeof(struct fl), 1);
-		if (!new_fl) {
-			UNLOCK(lock);
-			return -1;
-		}
-		new_fl->next = head;
-		head = new_fl;
-		slot = 0;
-	}
-
-	/* Append function to the list. */
-	head->f[slot] = func;
-	head->a[slot] = arg;
-	slot++;
-
-	UNLOCK(lock);
-	return 0;
+static void call(void* p) {
+  ((void (*)(void))(uintptr_t)p)();
 }
 
-static void call(void *p)
-{
-	((void (*)(void))(uintptr_t)p)();
-}
-
-int atexit(void (*func)(void))
-{
-	return __cxa_atexit(call, (void *)(uintptr_t)func, 0);
+int atexit(void (*func)(void)) {
+  return __cxa_atexit(call, (void*)(uintptr_t)func, 0);
 }
diff --git a/fusl/src/exit/exit.c b/fusl/src/exit/exit.c
index bf7835a..df95af5 100644
--- a/fusl/src/exit/exit.c
+++ b/fusl/src/exit/exit.c
@@ -2,9 +2,7 @@
 #include <stdint.h>
 #include "libc.h"
 
-static void dummy()
-{
-}
+static void dummy() {}
 
 /* atexit.c and __stdio_exit.c override these. the latter is linked
  * as a consequence of linking either __toread.c or __towrite.c. */
@@ -12,23 +10,22 @@
 weak_alias(dummy, __stdio_exit);
 weak_alias(dummy, _fini);
 
-__attribute__((__weak__, __visibility__("hidden")))
-extern void (*const __fini_array_start)(void), (*const __fini_array_end)(void);
+__attribute__((__weak__, __visibility__("hidden"))) extern void (
+    *const __fini_array_start)(void),
+    (*const __fini_array_end)(void);
 
-static void libc_exit_fini(void)
-{
-	uintptr_t a = (uintptr_t)&__fini_array_end;
-	for (; a>(uintptr_t)&__fini_array_start; a-=sizeof(void(*)()))
-		(*(void (**)())(a-sizeof(void(*)())))();
-	_fini();
+static void libc_exit_fini(void) {
+  uintptr_t a = (uintptr_t)&__fini_array_end;
+  for (; a > (uintptr_t)&__fini_array_start; a -= sizeof(void (*)()))
+    (*(void (**)())(a - sizeof(void (*)())))();
+  _fini();
 }
 
 weak_alias(libc_exit_fini, __libc_exit_fini);
 
-_Noreturn void exit(int code)
-{
-	__funcs_on_exit();
-	__libc_exit_fini();
-	__stdio_exit();
-	_Exit(code);
+_Noreturn void exit(int code) {
+  __funcs_on_exit();
+  __libc_exit_fini();
+  __stdio_exit();
+  _Exit(code);
 }
diff --git a/fusl/src/exit/quick_exit.c b/fusl/src/exit/quick_exit.c
index ada9134..18907af 100644
--- a/fusl/src/exit/quick_exit.c
+++ b/fusl/src/exit/quick_exit.c
@@ -1,11 +1,10 @@
 #include <stdlib.h>
 #include "libc.h"
 
-static void dummy() { }
+static void dummy() {}
 weak_alias(dummy, __funcs_on_quick_exit);
 
-_Noreturn void quick_exit(int code)
-{
-	__funcs_on_quick_exit();
-	_Exit(code);
+_Noreturn void quick_exit(int code) {
+  __funcs_on_quick_exit();
+  _Exit(code);
 }
diff --git a/fusl/src/fcntl/creat.c b/fusl/src/fcntl/creat.c
index be05faa..7e1b944 100644
--- a/fusl/src/fcntl/creat.c
+++ b/fusl/src/fcntl/creat.c
@@ -1,9 +1,8 @@
 #include <fcntl.h>
 #include "libc.h"
 
-int creat(const char *filename, mode_t mode)
-{
-	return open(filename, O_CREAT|O_WRONLY|O_TRUNC, mode);
+int creat(const char* filename, mode_t mode) {
+  return open(filename, O_CREAT | O_WRONLY | O_TRUNC, mode);
 }
 
 LFS64(creat);
diff --git a/fusl/src/fcntl/fcntl.c b/fusl/src/fcntl/fcntl.c
index ce615d0..c5daf7a 100644
--- a/fusl/src/fcntl/fcntl.c
+++ b/fusl/src/fcntl/fcntl.c
@@ -5,45 +5,50 @@
 #include "syscall.h"
 #include "libc.h"
 
-int fcntl(int fd, int cmd, ...)
-{
-	unsigned long arg;
-	va_list ap;
-	va_start(ap, cmd);
-	arg = va_arg(ap, unsigned long);
-	va_end(ap);
-	if (cmd == F_SETFL) arg |= O_LARGEFILE;
-	if (cmd == F_SETLKW) return syscall_cp(SYS_fcntl, fd, cmd, (void *)arg);
-	if (cmd == F_GETOWN) {
-		struct f_owner_ex ex;
-		int ret = __syscall(SYS_fcntl, fd, F_GETOWN_EX, &ex);
-		if (ret == -EINVAL) return __syscall(SYS_fcntl, fd, cmd, (void *)arg);
-		if (ret) return __syscall_ret(ret);
-		return ex.type == F_OWNER_PGRP ? -ex.pid : ex.pid;
-	}
-	if (cmd == F_DUPFD_CLOEXEC) {
-		int ret = __syscall(SYS_fcntl, fd, F_DUPFD_CLOEXEC, arg);
-		if (ret != -EINVAL) {
-			if (ret >= 0)
-				__syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC);
-			return __syscall_ret(ret);
-		}
-		ret = __syscall(SYS_fcntl, fd, F_DUPFD_CLOEXEC, 0);
-		if (ret != -EINVAL) {
-			if (ret >= 0) __syscall(SYS_close, ret);
-			return __syscall_ret(-EINVAL);
-		}
-		ret = __syscall(SYS_fcntl, fd, F_DUPFD, arg);
-		if (ret >= 0) __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC);
-		return __syscall_ret(ret);
-	}
-	switch (cmd) {
-	case F_SETLK:
-	case F_GETLK:
-	case F_GETOWN_EX:
-	case F_SETOWN_EX:
-		return syscall(SYS_fcntl, fd, cmd, (void *)arg);
-	default:
-		return syscall(SYS_fcntl, fd, cmd, arg);
-	}
+int fcntl(int fd, int cmd, ...) {
+  unsigned long arg;
+  va_list ap;
+  va_start(ap, cmd);
+  arg = va_arg(ap, unsigned long);
+  va_end(ap);
+  if (cmd == F_SETFL)
+    arg |= O_LARGEFILE;
+  if (cmd == F_SETLKW)
+    return syscall_cp(SYS_fcntl, fd, cmd, (void*)arg);
+  if (cmd == F_GETOWN) {
+    struct f_owner_ex ex;
+    int ret = __syscall(SYS_fcntl, fd, F_GETOWN_EX, &ex);
+    if (ret == -EINVAL)
+      return __syscall(SYS_fcntl, fd, cmd, (void*)arg);
+    if (ret)
+      return __syscall_ret(ret);
+    return ex.type == F_OWNER_PGRP ? -ex.pid : ex.pid;
+  }
+  if (cmd == F_DUPFD_CLOEXEC) {
+    int ret = __syscall(SYS_fcntl, fd, F_DUPFD_CLOEXEC, arg);
+    if (ret != -EINVAL) {
+      if (ret >= 0)
+        __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC);
+      return __syscall_ret(ret);
+    }
+    ret = __syscall(SYS_fcntl, fd, F_DUPFD_CLOEXEC, 0);
+    if (ret != -EINVAL) {
+      if (ret >= 0)
+        __syscall(SYS_close, ret);
+      return __syscall_ret(-EINVAL);
+    }
+    ret = __syscall(SYS_fcntl, fd, F_DUPFD, arg);
+    if (ret >= 0)
+      __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC);
+    return __syscall_ret(ret);
+  }
+  switch (cmd) {
+    case F_SETLK:
+    case F_GETLK:
+    case F_GETOWN_EX:
+    case F_SETOWN_EX:
+      return syscall(SYS_fcntl, fd, cmd, (void*)arg);
+    default:
+      return syscall(SYS_fcntl, fd, cmd, arg);
+  }
 }
diff --git a/fusl/src/fcntl/open.c b/fusl/src/fcntl/open.c
index 3928a6e..bf6d21f 100644
--- a/fusl/src/fcntl/open.c
+++ b/fusl/src/fcntl/open.c
@@ -3,22 +3,21 @@
 #include "syscall.h"
 #include "libc.h"
 
-int open(const char *filename, int flags, ...)
-{
-	mode_t mode = 0;
+int open(const char* filename, int flags, ...) {
+  mode_t mode = 0;
 
-	if ((flags & O_CREAT) || (flags & O_TMPFILE) == O_TMPFILE) {
-		va_list ap;
-		va_start(ap, flags);
-		mode = va_arg(ap, mode_t);
-		va_end(ap);
-	}
+  if ((flags & O_CREAT) || (flags & O_TMPFILE) == O_TMPFILE) {
+    va_list ap;
+    va_start(ap, flags);
+    mode = va_arg(ap, mode_t);
+    va_end(ap);
+  }
 
-	int fd = __sys_open_cp(filename, flags, mode);
-	if (fd>=0 && (flags & O_CLOEXEC))
-		__syscall(SYS_fcntl, fd, F_SETFD, FD_CLOEXEC);
+  int fd = __sys_open_cp(filename, flags, mode);
+  if (fd >= 0 && (flags & O_CLOEXEC))
+    __syscall(SYS_fcntl, fd, F_SETFD, FD_CLOEXEC);
 
-	return __syscall_ret(fd);
+  return __syscall_ret(fd);
 }
 
 LFS64(open);
diff --git a/fusl/src/fcntl/openat.c b/fusl/src/fcntl/openat.c
index e741336..d4fb96c 100644
--- a/fusl/src/fcntl/openat.c
+++ b/fusl/src/fcntl/openat.c
@@ -3,18 +3,17 @@
 #include "syscall.h"
 #include "libc.h"
 
-int openat(int fd, const char *filename, int flags, ...)
-{
-	mode_t mode = 0;
+int openat(int fd, const char* filename, int flags, ...) {
+  mode_t mode = 0;
 
-	if ((flags & O_CREAT) || (flags & O_TMPFILE) == O_TMPFILE) {
-		va_list ap;
-		va_start(ap, flags);
-		mode = va_arg(ap, mode_t);
-		va_end(ap);
-	}
+  if ((flags & O_CREAT) || (flags & O_TMPFILE) == O_TMPFILE) {
+    va_list ap;
+    va_start(ap, flags);
+    mode = va_arg(ap, mode_t);
+    va_end(ap);
+  }
 
-	return syscall_cp(SYS_openat, fd, filename, flags|O_LARGEFILE, mode);
+  return syscall_cp(SYS_openat, fd, filename, flags | O_LARGEFILE, mode);
 }
 
 LFS64(openat);
diff --git a/fusl/src/fcntl/posix_fadvise.c b/fusl/src/fcntl/posix_fadvise.c
index d5360e0..8413f4a 100644
--- a/fusl/src/fcntl/posix_fadvise.c
+++ b/fusl/src/fcntl/posix_fadvise.c
@@ -2,10 +2,9 @@
 #include "syscall.h"
 #include "libc.h"
 
-int posix_fadvise(int fd, off_t base, off_t len, int advice)
-{
-	return -(__syscall)(SYS_fadvise, fd, __SYSCALL_LL_O(base),
-		__SYSCALL_LL_E(len), advice);
+int posix_fadvise(int fd, off_t base, off_t len, int advice) {
+  return -(__syscall)(SYS_fadvise, fd, __SYSCALL_LL_O(base),
+                      __SYSCALL_LL_E(len), advice);
 }
 
 LFS64(posix_fadvise);
diff --git a/fusl/src/fcntl/posix_fallocate.c b/fusl/src/fcntl/posix_fallocate.c
index 91d8063..470e8b9 100644
--- a/fusl/src/fcntl/posix_fallocate.c
+++ b/fusl/src/fcntl/posix_fallocate.c
@@ -2,10 +2,9 @@
 #include "syscall.h"
 #include "libc.h"
 
-int posix_fallocate(int fd, off_t base, off_t len)
-{
-	return -__syscall(SYS_fallocate, fd, 0, __SYSCALL_LL_E(base),
-		__SYSCALL_LL_E(len));
+int posix_fallocate(int fd, off_t base, off_t len) {
+  return -__syscall(SYS_fallocate, fd, 0, __SYSCALL_LL_E(base),
+                    __SYSCALL_LL_E(len));
 }
 
 LFS64(posix_fallocate);
diff --git a/fusl/src/fenv/__flt_rounds.c b/fusl/src/fenv/__flt_rounds.c
index ec0b368..4b998e8 100644
--- a/fusl/src/fenv/__flt_rounds.c
+++ b/fusl/src/fenv/__flt_rounds.c
@@ -1,19 +1,22 @@
 #include <float.h>
 #include <fenv.h>
 
-int __flt_rounds()
-{
-	switch (fegetround()) {
+int __flt_rounds() {
+  switch (fegetround()) {
 #ifdef FE_TOWARDZERO
-	case FE_TOWARDZERO: return 0;
+    case FE_TOWARDZERO:
+      return 0;
 #endif
-	case FE_TONEAREST: return 1;
+    case FE_TONEAREST:
+      return 1;
 #ifdef FE_UPWARD
-	case FE_UPWARD: return 2;
+    case FE_UPWARD:
+      return 2;
 #endif
 #ifdef FE_DOWNWARD
-	case FE_DOWNWARD: return 3;
+    case FE_DOWNWARD:
+      return 3;
 #endif
-	}
-	return -1;
+  }
+  return -1;
 }
diff --git a/fusl/src/fenv/fegetexceptflag.c b/fusl/src/fenv/fegetexceptflag.c
index bab0b44..0bfde46 100644
--- a/fusl/src/fenv/fegetexceptflag.c
+++ b/fusl/src/fenv/fegetexceptflag.c
@@ -1,7 +1,6 @@
 #include <fenv.h>
 
-int fegetexceptflag(fexcept_t *fp, int mask)
-{
-	*fp = fetestexcept(mask);
-	return 0;
+int fegetexceptflag(fexcept_t* fp, int mask) {
+  *fp = fetestexcept(mask);
+  return 0;
 }
diff --git a/fusl/src/fenv/feholdexcept.c b/fusl/src/fenv/feholdexcept.c
index 73ff1fa..01f74a9 100644
--- a/fusl/src/fenv/feholdexcept.c
+++ b/fusl/src/fenv/feholdexcept.c
@@ -1,8 +1,7 @@
 #include <fenv.h>
 
-int feholdexcept(fenv_t *envp)
-{
-	fegetenv(envp);
-	feclearexcept(FE_ALL_EXCEPT);
-	return 0;
+int feholdexcept(fenv_t* envp) {
+  fegetenv(envp);
+  feclearexcept(FE_ALL_EXCEPT);
+  return 0;
 }
diff --git a/fusl/src/fenv/fenv.c b/fusl/src/fenv/fenv.c
index 5588dad..cecfd33 100644
--- a/fusl/src/fenv/fenv.c
+++ b/fusl/src/fenv/fenv.c
@@ -2,37 +2,30 @@
 
 /* Dummy functions for archs lacking fenv implementation */
 
-int feclearexcept(int mask)
-{
-	return 0;
+int feclearexcept(int mask) {
+  return 0;
 }
 
-int feraiseexcept(int mask)
-{
-	return 0;
+int feraiseexcept(int mask) {
+  return 0;
 }
 
-int fetestexcept(int mask)
-{
-	return 0;
+int fetestexcept(int mask) {
+  return 0;
 }
 
-int fegetround(void)
-{
-	return FE_TONEAREST;
+int fegetround(void) {
+  return FE_TONEAREST;
 }
 
-int __fesetround(int r)
-{
-	return 0;
+int __fesetround(int r) {
+  return 0;
 }
 
-int fegetenv(fenv_t *envp)
-{
-	return 0;
+int fegetenv(fenv_t* envp) {
+  return 0;
 }
 
-int fesetenv(const fenv_t *envp)
-{
-	return 0;
+int fesetenv(const fenv_t* envp) {
+  return 0;
 }
diff --git a/fusl/src/fenv/fesetexceptflag.c b/fusl/src/fenv/fesetexceptflag.c
index af5f102..82699d3 100644
--- a/fusl/src/fenv/fesetexceptflag.c
+++ b/fusl/src/fenv/fesetexceptflag.c
@@ -1,8 +1,7 @@
 #include <fenv.h>
 
-int fesetexceptflag(const fexcept_t *fp, int mask)
-{
-	feclearexcept(~*fp & mask);
-	feraiseexcept(*fp & mask);
-	return 0;
+int fesetexceptflag(const fexcept_t* fp, int mask) {
+  feclearexcept(~*fp & mask);
+  feraiseexcept(*fp & mask);
+  return 0;
 }
diff --git a/fusl/src/fenv/fesetround.c b/fusl/src/fenv/fesetround.c
index 9bbd4ad..7ef7ed8 100644
--- a/fusl/src/fenv/fesetround.c
+++ b/fusl/src/fenv/fesetround.c
@@ -4,20 +4,19 @@
 
 int __fesetround(int);
 
-int fesetround(int r)
-{
-	if (r & ~(
-		FE_TONEAREST
+int fesetround(int r) {
+  if (r &
+      ~(FE_TONEAREST
 #ifdef FE_DOWNWARD
-		|FE_DOWNWARD
+        | FE_DOWNWARD
 #endif
 #ifdef FE_UPWARD
-		|FE_UPWARD
+        | FE_UPWARD
 #endif
 #ifdef FE_TOWARDZERO
-		|FE_TOWARDZERO
+        | FE_TOWARDZERO
 #endif
-		))
-		return -1;
-	return __fesetround(r);
+        ))
+    return -1;
+  return __fesetround(r);
 }
diff --git a/fusl/src/fenv/feupdateenv.c b/fusl/src/fenv/feupdateenv.c
index 50cef8e..1244490 100644
--- a/fusl/src/fenv/feupdateenv.c
+++ b/fusl/src/fenv/feupdateenv.c
@@ -1,9 +1,8 @@
 #include <fenv.h>
 
-int feupdateenv(const fenv_t *envp)
-{
-	int ex = fetestexcept(FE_ALL_EXCEPT);
-	fesetenv(envp);
-	feraiseexcept(ex);
-	return 0;
+int feupdateenv(const fenv_t* envp) {
+  int ex = fetestexcept(FE_ALL_EXCEPT);
+  fesetenv(envp);
+  feraiseexcept(ex);
+  return 0;
 }
diff --git a/fusl/src/internal/atomic.h b/fusl/src/internal/atomic.h
index 2097247..28c7268 100644
--- a/fusl/src/internal/atomic.h
+++ b/fusl/src/internal/atomic.h
@@ -17,66 +17,66 @@
 
 #ifndef a_cas
 #define a_cas a_cas
-static inline int a_cas(volatile int *p, int t, int s)
-{
-	int old;
-	a_pre_llsc();
-	do old = a_ll(p);
-	while (old==t && !a_sc(p, s));
-	a_post_llsc();
-	return old;
+static inline int a_cas(volatile int* p, int t, int s) {
+  int old;
+  a_pre_llsc();
+  do
+    old = a_ll(p);
+  while (old == t && !a_sc(p, s));
+  a_post_llsc();
+  return old;
 }
 #endif
 
 #ifndef a_swap
 #define a_swap a_swap
-static inline int a_swap(volatile int *p, int v)
-{
-	int old;
-	a_pre_llsc();
-	do old = a_ll(p);
-	while (!a_sc(p, v));
-	a_post_llsc();
-	return old;
+static inline int a_swap(volatile int* p, int v) {
+  int old;
+  a_pre_llsc();
+  do
+    old = a_ll(p);
+  while (!a_sc(p, v));
+  a_post_llsc();
+  return old;
 }
 #endif
 
 #ifndef a_fetch_add
 #define a_fetch_add a_fetch_add
-static inline int a_fetch_add(volatile int *p, int v)
-{
-	int old;
-	a_pre_llsc();
-	do old = a_ll(p);
-	while (!a_sc(p, (unsigned)old + v));
-	a_post_llsc();
-	return old;
+static inline int a_fetch_add(volatile int* p, int v) {
+  int old;
+  a_pre_llsc();
+  do
+    old = a_ll(p);
+  while (!a_sc(p, (unsigned)old + v));
+  a_post_llsc();
+  return old;
 }
 #endif
 
 #ifndef a_fetch_and
 #define a_fetch_and a_fetch_and
-static inline int a_fetch_and(volatile int *p, int v)
-{
-	int old;
-	a_pre_llsc();
-	do old = a_ll(p);
-	while (!a_sc(p, old & v));
-	a_post_llsc();
-	return old;
+static inline int a_fetch_and(volatile int* p, int v) {
+  int old;
+  a_pre_llsc();
+  do
+    old = a_ll(p);
+  while (!a_sc(p, old & v));
+  a_post_llsc();
+  return old;
 }
 #endif
 
 #ifndef a_fetch_or
 #define a_fetch_or a_fetch_or
-static inline int a_fetch_or(volatile int *p, int v)
-{
-	int old;
-	a_pre_llsc();
-	do old = a_ll(p);
-	while (!a_sc(p, old | v));
-	a_post_llsc();
-	return old;
+static inline int a_fetch_or(volatile int* p, int v) {
+  int old;
+  a_pre_llsc();
+  do
+    old = a_ll(p);
+  while (!a_sc(p, old | v));
+  a_post_llsc();
+  return old;
 }
 #endif
 
@@ -88,99 +88,93 @@
 
 #ifndef a_swap
 #define a_swap a_swap
-static inline int a_swap(volatile int *p, int v)
-{
-	int old;
-	do old = *p;
-	while (a_cas(p, old, v) != old);
-	return old;
+static inline int a_swap(volatile int* p, int v) {
+  int old;
+  do
+    old = *p;
+  while (a_cas(p, old, v) != old);
+  return old;
 }
 #endif
 
 #ifndef a_fetch_add
 #define a_fetch_add a_fetch_add
-static inline int a_fetch_add(volatile int *p, int v)
-{
-	int old;
-	do old = *p;
-	while (a_cas(p, old, (unsigned)old+v) != old);
-	return old;
+static inline int a_fetch_add(volatile int* p, int v) {
+  int old;
+  do
+    old = *p;
+  while (a_cas(p, old, (unsigned)old + v) != old);
+  return old;
 }
 #endif
 
 #ifndef a_fetch_and
 #define a_fetch_and a_fetch_and
-static inline int a_fetch_and(volatile int *p, int v)
-{
-	int old;
-	do old = *p;
-	while (a_cas(p, old, old&v) != old);
-	return old;
+static inline int a_fetch_and(volatile int* p, int v) {
+  int old;
+  do
+    old = *p;
+  while (a_cas(p, old, old & v) != old);
+  return old;
 }
 #endif
 #ifndef a_fetch_or
 #define a_fetch_or a_fetch_or
-static inline int a_fetch_or(volatile int *p, int v)
-{
-	int old;
-	do old = *p;
-	while (a_cas(p, old, old|v) != old);
-	return old;
+static inline int a_fetch_or(volatile int* p, int v) {
+  int old;
+  do
+    old = *p;
+  while (a_cas(p, old, old | v) != old);
+  return old;
 }
 #endif
 
 #ifndef a_and
 #define a_and a_and
-static inline void a_and(volatile int *p, int v)
-{
-	a_fetch_and(p, v);
+static inline void a_and(volatile int* p, int v) {
+  a_fetch_and(p, v);
 }
 #endif
 
 #ifndef a_or
 #define a_or a_or
-static inline void a_or(volatile int *p, int v)
-{
-	a_fetch_or(p, v);
+static inline void a_or(volatile int* p, int v) {
+  a_fetch_or(p, v);
 }
 #endif
 
 #ifndef a_inc
 #define a_inc a_inc
-static inline void a_inc(volatile int *p)
-{
-	a_fetch_add(p, 1);
+static inline void a_inc(volatile int* p) {
+  a_fetch_add(p, 1);
 }
 #endif
 
 #ifndef a_dec
 #define a_dec a_dec
-static inline void a_dec(volatile int *p)
-{
-	a_fetch_add(p, -1);
+static inline void a_dec(volatile int* p) {
+  a_fetch_add(p, -1);
 }
 #endif
 
 #ifndef a_store
 #define a_store a_store
-static inline void a_store(volatile int *p, int v)
-{
+static inline void a_store(volatile int* p, int v) {
 #ifdef a_barrier
-	a_barrier();
-	*p = v;
-	a_barrier();
+  a_barrier();
+  *p = v;
+  a_barrier();
 #else
-	a_swap(p, v);
+  a_swap(p, v);
 #endif
 }
 #endif
 
 #ifndef a_barrier
 #define a_barrier a_barrier
-static void a_barrier()
-{
-	volatile int tmp = 0;
-	a_cas(&tmp, 0, 0);
+static void a_barrier() {
+  volatile int tmp = 0;
+  a_cas(&tmp, 0, 0);
 }
 #endif
 
@@ -190,85 +184,88 @@
 
 #ifndef a_and_64
 #define a_and_64 a_and_64
-static inline void a_and_64(volatile uint64_t *p, uint64_t v)
-{
-	union { uint64_t v; uint32_t r[2]; } u = { v };
-	if (u.r[0]+1) a_and((int *)p, u.r[0]);
-	if (u.r[1]+1) a_and((int *)p+1, u.r[1]);
+static inline void a_and_64(volatile uint64_t* p, uint64_t v) {
+  union {
+    uint64_t v;
+    uint32_t r[2];
+  } u = {v};
+  if (u.r[0] + 1)
+    a_and((int*)p, u.r[0]);
+  if (u.r[1] + 1)
+    a_and((int*)p + 1, u.r[1]);
 }
 #endif
 
 #ifndef a_or_64
 #define a_or_64 a_or_64
-static inline void a_or_64(volatile uint64_t *p, uint64_t v)
-{
-	union { uint64_t v; uint32_t r[2]; } u = { v };
-	if (u.r[0]) a_or((int *)p, u.r[0]);
-	if (u.r[1]) a_or((int *)p+1, u.r[1]);
+static inline void a_or_64(volatile uint64_t* p, uint64_t v) {
+  union {
+    uint64_t v;
+    uint32_t r[2];
+  } u = {v};
+  if (u.r[0])
+    a_or((int*)p, u.r[0]);
+  if (u.r[1])
+    a_or((int*)p + 1, u.r[1]);
 }
 #endif
 
 #ifndef a_cas_p
 #define a_cas_p a_cas_p
-static inline void *a_cas_p(volatile void *p, void *t, void *s)
-{
-	return (void *)a_cas((volatile int *)p, (int)t, (int)s);
+static inline void* a_cas_p(volatile void* p, void* t, void* s) {
+  return (void*)a_cas((volatile int*)p, (int)t, (int)s);
 }
 #endif
 
 #ifndef a_or_l
 #define a_or_l a_or_l
-static inline void a_or_l(volatile void *p, long v)
-{
-	if (sizeof(long) == sizeof(int)) a_or(p, v);
-	else a_or_64(p, v);
+static inline void a_or_l(volatile void* p, long v) {
+  if (sizeof(long) == sizeof(int))
+    a_or(p, v);
+  else
+    a_or_64(p, v);
 }
 #endif
 
 #ifndef a_crash
 #define a_crash a_crash
-static inline void a_crash()
-{
-	*(volatile char *)0=0;
+static inline void a_crash() {
+  *(volatile char*)0 = 0;
 }
 #endif
 
 #ifndef a_ctz_64
 #define a_ctz_64 a_ctz_64
-static inline int a_ctz_64(uint64_t x)
-{
-	static const char debruijn64[64] = {
-		0, 1, 2, 53, 3, 7, 54, 27, 4, 38, 41, 8, 34, 55, 48, 28,
-		62, 5, 39, 46, 44, 42, 22, 9, 24, 35, 59, 56, 49, 18, 29, 11,
-		63, 52, 6, 26, 37, 40, 33, 47, 61, 45, 43, 21, 23, 58, 17, 10,
-		51, 25, 36, 32, 60, 20, 57, 16, 50, 31, 19, 15, 30, 14, 13, 12
-	};
-	static const char debruijn32[32] = {
-		0, 1, 23, 2, 29, 24, 19, 3, 30, 27, 25, 11, 20, 8, 4, 13,
-		31, 22, 28, 18, 26, 10, 7, 12, 21, 17, 9, 6, 16, 5, 15, 14
-	};
-	if (sizeof(long) < 8) {
-		uint32_t y = x;
-		if (!y) {
-			y = x>>32;
-			return 32 + debruijn32[(y&-y)*0x076be629 >> 27];
-		}
-		return debruijn32[(y&-y)*0x076be629 >> 27];
-	}
-	return debruijn64[(x&-x)*0x022fdd63cc95386dull >> 58];
+static inline int a_ctz_64(uint64_t x) {
+  static const char debruijn64[64] = {
+      0,  1,  2,  53, 3,  7,  54, 27, 4,  38, 41, 8,  34, 55, 48, 28,
+      62, 5,  39, 46, 44, 42, 22, 9,  24, 35, 59, 56, 49, 18, 29, 11,
+      63, 52, 6,  26, 37, 40, 33, 47, 61, 45, 43, 21, 23, 58, 17, 10,
+      51, 25, 36, 32, 60, 20, 57, 16, 50, 31, 19, 15, 30, 14, 13, 12};
+  static const char debruijn32[32] = {
+      0,  1,  23, 2,  29, 24, 19, 3,  30, 27, 25, 11, 20, 8, 4,  13,
+      31, 22, 28, 18, 26, 10, 7,  12, 21, 17, 9,  6,  16, 5, 15, 14};
+  if (sizeof(long) < 8) {
+    uint32_t y = x;
+    if (!y) {
+      y = x >> 32;
+      return 32 + debruijn32[(y & -y) * 0x076be629 >> 27];
+    }
+    return debruijn32[(y & -y) * 0x076be629 >> 27];
+  }
+  return debruijn64[(x & -x) * 0x022fdd63cc95386dull >> 58];
 }
 #endif
 
 #ifndef a_ctz_l
 #define a_ctz_l a_ctz_l
-static inline int a_ctz_l(unsigned long x)
-{
-	static const char debruijn32[32] = {
-		0, 1, 23, 2, 29, 24, 19, 3, 30, 27, 25, 11, 20, 8, 4, 13,
-		31, 22, 28, 18, 26, 10, 7, 12, 21, 17, 9, 6, 16, 5, 15, 14
-	};
-	if (sizeof(long) == 8) return a_ctz_64(x);
-	return debruijn32[(x&-x)*0x076be629 >> 27];
+static inline int a_ctz_l(unsigned long x) {
+  static const char debruijn32[32] = {
+      0,  1,  23, 2,  29, 24, 19, 3,  30, 27, 25, 11, 20, 8, 4,  13,
+      31, 22, 28, 18, 26, 10, 7,  12, 21, 17, 9,  6,  16, 5, 15, 14};
+  if (sizeof(long) == 8)
+    return a_ctz_64(x);
+  return debruijn32[(x & -x) * 0x076be629 >> 27];
 }
 #endif
 
diff --git a/fusl/src/internal/dynlink.h b/fusl/src/internal/dynlink.h
index 48890b2..aa1ac26 100644
--- a/fusl/src/internal/dynlink.h
+++ b/fusl/src/internal/dynlink.h
@@ -10,48 +10,48 @@
 typedef Elf32_Phdr Phdr;
 typedef Elf32_Sym Sym;
 #define R_TYPE(x) ((x)&255)
-#define R_SYM(x) ((x)>>8)
+#define R_SYM(x) ((x) >> 8)
 #else
 typedef Elf64_Ehdr Ehdr;
 typedef Elf64_Phdr Phdr;
 typedef Elf64_Sym Sym;
 #define R_TYPE(x) ((x)&0x7fffffff)
-#define R_SYM(x) ((x)>>32)
+#define R_SYM(x) ((x) >> 32)
 #endif
 
 /* These enum constants provide unmatchable default values for
  * any relocation type the arch does not use. */
 enum {
-	REL_NONE = 0,
-	REL_SYMBOLIC = -100,
-	REL_GOT,
-	REL_PLT,
-	REL_RELATIVE,
-	REL_OFFSET,
-	REL_OFFSET32,
-	REL_COPY,
-	REL_SYM_OR_REL,
-	REL_DTPMOD,
-	REL_DTPOFF,
-	REL_TPOFF,
-	REL_TPOFF_NEG,
-	REL_TLSDESC,
-	REL_FUNCDESC,
-	REL_FUNCDESC_VAL,
+  REL_NONE = 0,
+  REL_SYMBOLIC = -100,
+  REL_GOT,
+  REL_PLT,
+  REL_RELATIVE,
+  REL_OFFSET,
+  REL_OFFSET32,
+  REL_COPY,
+  REL_SYM_OR_REL,
+  REL_DTPMOD,
+  REL_DTPOFF,
+  REL_TPOFF,
+  REL_TPOFF_NEG,
+  REL_TLSDESC,
+  REL_FUNCDESC,
+  REL_FUNCDESC_VAL,
 };
 
 struct fdpic_loadseg {
-	uintptr_t addr, p_vaddr, p_memsz;
+  uintptr_t addr, p_vaddr, p_memsz;
 };
 
 struct fdpic_loadmap {
-	unsigned short version, nsegs;
-	struct fdpic_loadseg segs[];
+  unsigned short version, nsegs;
+  struct fdpic_loadseg segs[];
 };
 
 struct fdpic_dummy_loadmap {
-	unsigned short version, nsegs;
-	struct fdpic_loadseg segs[1];
+  unsigned short version, nsegs;
+  struct fdpic_loadseg segs[1];
 };
 
 #include "reloc.h"
@@ -69,14 +69,12 @@
 #endif
 
 #if !DL_FDPIC
-#define IS_RELATIVE(x,s) ( \
-	(R_TYPE(x) == REL_RELATIVE) || \
-	(R_TYPE(x) == REL_SYM_OR_REL && !R_SYM(x)) )
+#define IS_RELATIVE(x, s) \
+  ((R_TYPE(x) == REL_RELATIVE) || (R_TYPE(x) == REL_SYM_OR_REL && !R_SYM(x)))
 #else
-#define IS_RELATIVE(x,s) ( ( \
-	(R_TYPE(x) == REL_FUNCDESC_VAL) || \
-	(R_TYPE(x) == REL_SYMBOLIC) ) \
-	&& (((s)[R_SYM(x)].st_info & 0xf) == STT_SECTION) )
+#define IS_RELATIVE(x, s)                                              \
+  (((R_TYPE(x) == REL_FUNCDESC_VAL) || (R_TYPE(x) == REL_SYMBOLIC)) && \
+   (((s)[R_SYM(x)].st_info & 0xf) == STT_SECTION))
 #endif
 
 #ifndef NEED_MIPS_GOT_RELOCS
@@ -90,7 +88,7 @@
 #define AUX_CNT 32
 #define DYN_CNT 32
 
-typedef void (*stage2_func)(unsigned char *, size_t *);
-typedef _Noreturn void (*stage3_func)(size_t *);
+typedef void (*stage2_func)(unsigned char*, size_t*);
+typedef _Noreturn void (*stage3_func)(size_t*);
 
 #endif
diff --git a/fusl/src/internal/fdpic_crt.h b/fusl/src/internal/fdpic_crt.h
index 7eb50c6..0573740 100644
--- a/fusl/src/internal/fdpic_crt.h
+++ b/fusl/src/internal/fdpic_crt.h
@@ -1,28 +1,32 @@
 #include <stdint.h>
 
-__attribute__((__visibility__("hidden")))
-void *__fdpic_fixup(void *map, uintptr_t *a, uintptr_t *z)
-{
-	/* If map is a null pointer, the program was loaded by a
-	 * non-FDPIC-aware ELF loader, and fixups are not needed,
-	 * but the value for the GOT pointer is. */
-	if (!map) return (void *)z[-1];
+__attribute__((__visibility__("hidden"))) void* __fdpic_fixup(void* map,
+                                                              uintptr_t* a,
+                                                              uintptr_t* z) {
+  /* If map is a null pointer, the program was loaded by a
+   * non-FDPIC-aware ELF loader, and fixups are not needed,
+   * but the value for the GOT pointer is. */
+  if (!map)
+    return (void*)z[-1];
 
-	struct {
-		unsigned short version, nsegs;
-		struct fdpic_loadseg {
-			uintptr_t addr, p_vaddr, p_memsz;
-		} segs[];
-	} *lm = map;
-	int nsegs = lm->nsegs, rseg = 0, vseg = 0;
-	for (;;) {
-		while (*a-lm->segs[rseg].p_vaddr >= lm->segs[rseg].p_memsz)
-			if (++rseg == nsegs) rseg = 0;
-		uintptr_t *r = (uintptr_t *)
-			(*a + lm->segs[rseg].addr - lm->segs[rseg].p_vaddr);
-		if (++a == z) return r;
-		while (*r-lm->segs[vseg].p_vaddr >= lm->segs[vseg].p_memsz)
-			if (++vseg == nsegs) vseg = 0;
-		*r += lm->segs[vseg].addr - lm->segs[vseg].p_vaddr;
-	}
+  struct {
+    unsigned short version, nsegs;
+    struct fdpic_loadseg {
+      uintptr_t addr, p_vaddr, p_memsz;
+    } segs[];
+  }* lm = map;
+  int nsegs = lm->nsegs, rseg = 0, vseg = 0;
+  for (;;) {
+    while (*a - lm->segs[rseg].p_vaddr >= lm->segs[rseg].p_memsz)
+      if (++rseg == nsegs)
+        rseg = 0;
+    uintptr_t* r =
+        (uintptr_t*)(*a + lm->segs[rseg].addr - lm->segs[rseg].p_vaddr);
+    if (++a == z)
+      return r;
+    while (*r - lm->segs[vseg].p_vaddr >= lm->segs[vseg].p_memsz)
+      if (++vseg == nsegs)
+        vseg = 0;
+    *r += lm->segs[vseg].addr - lm->segs[vseg].p_vaddr;
+  }
 }
diff --git a/fusl/src/internal/floatscan.c b/fusl/src/internal/floatscan.c
index eef70df..4137c24 100644
--- a/fusl/src/internal/floatscan.c
+++ b/fusl/src/internal/floatscan.c
@@ -31,474 +31,517 @@
 #error Unsupported long double representation
 #endif
 
-#define MASK (KMAX-1)
+#define MASK (KMAX - 1)
 
-#define CONCAT2(x,y) x ## y
-#define CONCAT(x,y) CONCAT2(x,y)
+#define CONCAT2(x, y) x##y
+#define CONCAT(x, y) CONCAT2(x, y)
 
-static long long scanexp(FILE *f, int pok)
-{
-	int c;
-	int x;
-	long long y;
-	int neg = 0;
-	
-	c = shgetc(f);
-	if (c=='+' || c=='-') {
-		neg = (c=='-');
-		c = shgetc(f);
-		if (c-'0'>=10U && pok) shunget(f);
-	}
-	if (c-'0'>=10U) {
-		shunget(f);
-		return LLONG_MIN;
-	}
-	for (x=0; c-'0'<10U && x<INT_MAX/10; c = shgetc(f))
-		x = 10*x + c-'0';
-	for (y=x; c-'0'<10U && y<LLONG_MAX/100; c = shgetc(f))
-		y = 10*y + c-'0';
-	for (; c-'0'<10U; c = shgetc(f));
-	shunget(f);
-	return neg ? -y : y;
+static long long scanexp(FILE* f, int pok) {
+  int c;
+  int x;
+  long long y;
+  int neg = 0;
+
+  c = shgetc(f);
+  if (c == '+' || c == '-') {
+    neg = (c == '-');
+    c = shgetc(f);
+    if (c - '0' >= 10U && pok)
+      shunget(f);
+  }
+  if (c - '0' >= 10U) {
+    shunget(f);
+    return LLONG_MIN;
+  }
+  for (x = 0; c - '0' < 10U && x < INT_MAX / 10; c = shgetc(f))
+    x = 10 * x + c - '0';
+  for (y = x; c - '0' < 10U && y < LLONG_MAX / 100; c = shgetc(f))
+    y = 10 * y + c - '0';
+  for (; c - '0' < 10U; c = shgetc(f))
+    ;
+  shunget(f);
+  return neg ? -y : y;
 }
 
+static long double decfloat(FILE* f,
+                            int c,
+                            int bits,
+                            int emin,
+                            int sign,
+                            int pok) {
+  uint32_t x[KMAX];
+  static const uint32_t th[] = {LD_B1B_MAX};
+  int i, j, k, a, z;
+  long long lrp = 0, dc = 0;
+  long long e10 = 0;
+  int lnz = 0;
+  int gotdig = 0, gotrad = 0;
+  int rp;
+  int e2;
+  int emax = -emin - bits + 3;
+  int denormal = 0;
+  long double y;
+  long double frac = 0;
+  long double bias = 0;
+  static const int p10s[] = {10,     100,     1000,     10000,
+                             100000, 1000000, 10000000, 100000000};
 
-static long double decfloat(FILE *f, int c, int bits, int emin, int sign, int pok)
-{
-	uint32_t x[KMAX];
-	static const uint32_t th[] = { LD_B1B_MAX };
-	int i, j, k, a, z;
-	long long lrp=0, dc=0;
-	long long e10=0;
-	int lnz = 0;
-	int gotdig = 0, gotrad = 0;
-	int rp;
-	int e2;
-	int emax = -emin-bits+3;
-	int denormal = 0;
-	long double y;
-	long double frac=0;
-	long double bias=0;
-	static const int p10s[] = { 10, 100, 1000, 10000,
-		100000, 1000000, 10000000, 100000000 };
+  j = 0;
+  k = 0;
 
-	j=0;
-	k=0;
+  /* Don't let leading zeros consume buffer space */
+  for (; c == '0'; c = shgetc(f))
+    gotdig = 1;
+  if (c == '.') {
+    gotrad = 1;
+    for (c = shgetc(f); c == '0'; c = shgetc(f))
+      gotdig = 1, lrp--;
+  }
 
-	/* Don't let leading zeros consume buffer space */
-	for (; c=='0'; c = shgetc(f)) gotdig=1;
-	if (c=='.') {
-		gotrad = 1;
-		for (c = shgetc(f); c=='0'; c = shgetc(f)) gotdig=1, lrp--;
-	}
+  x[0] = 0;
+  for (; c - '0' < 10U || c == '.'; c = shgetc(f)) {
+    if (c == '.') {
+      if (gotrad)
+        break;
+      gotrad = 1;
+      lrp = dc;
+    } else if (k < KMAX - 3) {
+      dc++;
+      if (c != '0')
+        lnz = dc;
+      if (j)
+        x[k] = x[k] * 10 + c - '0';
+      else
+        x[k] = c - '0';
+      if (++j == 9) {
+        k++;
+        j = 0;
+      }
+      gotdig = 1;
+    } else {
+      dc++;
+      if (c != '0')
+        x[KMAX - 4] |= 1;
+    }
+  }
+  if (!gotrad)
+    lrp = dc;
 
-	x[0] = 0;
-	for (; c-'0'<10U || c=='.'; c = shgetc(f)) {
-		if (c == '.') {
-			if (gotrad) break;
-			gotrad = 1;
-			lrp = dc;
-		} else if (k < KMAX-3) {
-			dc++;
-			if (c!='0') lnz = dc;
-			if (j) x[k] = x[k]*10 + c-'0';
-			else x[k] = c-'0';
-			if (++j==9) {
-				k++;
-				j=0;
-			}
-			gotdig=1;
-		} else {
-			dc++;
-			if (c!='0') x[KMAX-4] |= 1;
-		}
-	}
-	if (!gotrad) lrp=dc;
+  if (gotdig && (c | 32) == 'e') {
+    e10 = scanexp(f, pok);
+    if (e10 == LLONG_MIN) {
+      if (pok) {
+        shunget(f);
+      } else {
+        shlim(f, 0);
+        return 0;
+      }
+      e10 = 0;
+    }
+    lrp += e10;
+  } else if (c >= 0) {
+    shunget(f);
+  }
+  if (!gotdig) {
+    errno = EINVAL;
+    shlim(f, 0);
+    return 0;
+  }
 
-	if (gotdig && (c|32)=='e') {
-		e10 = scanexp(f, pok);
-		if (e10 == LLONG_MIN) {
-			if (pok) {
-				shunget(f);
-			} else {
-				shlim(f, 0);
-				return 0;
-			}
-			e10 = 0;
-		}
-		lrp += e10;
-	} else if (c>=0) {
-		shunget(f);
-	}
-	if (!gotdig) {
-		errno = EINVAL;
-		shlim(f, 0);
-		return 0;
-	}
+  /* Handle zero specially to avoid nasty special cases later */
+  if (!x[0])
+    return sign * 0.0;
 
-	/* Handle zero specially to avoid nasty special cases later */
-	if (!x[0]) return sign * 0.0;
+  /* Optimize small integers (w/no exponent) and over/under-flow */
+  if (lrp == dc && dc < 10 && (bits > 30 || x[0] >> bits == 0))
+    return sign * (long double)x[0];
+  if (lrp > -emin / 2) {
+    errno = ERANGE;
+    return sign * LDBL_MAX * LDBL_MAX;
+  }
+  if (lrp < emin - 2 * LDBL_MANT_DIG) {
+    errno = ERANGE;
+    return sign * LDBL_MIN * LDBL_MIN;
+  }
 
-	/* Optimize small integers (w/no exponent) and over/under-flow */
-	if (lrp==dc && dc<10 && (bits>30 || x[0]>>bits==0))
-		return sign * (long double)x[0];
-	if (lrp > -emin/2) {
-		errno = ERANGE;
-		return sign * LDBL_MAX * LDBL_MAX;
-	}
-	if (lrp < emin-2*LDBL_MANT_DIG) {
-		errno = ERANGE;
-		return sign * LDBL_MIN * LDBL_MIN;
-	}
+  /* Align incomplete final B1B digit */
+  if (j) {
+    for (; j < 9; j++)
+      x[k] *= 10;
+    k++;
+    j = 0;
+  }
 
-	/* Align incomplete final B1B digit */
-	if (j) {
-		for (; j<9; j++) x[k]*=10;
-		k++;
-		j=0;
-	}
+  a = 0;
+  z = k;
+  e2 = 0;
+  rp = lrp;
 
-	a = 0;
-	z = k;
-	e2 = 0;
-	rp = lrp;
+  /* Optimize small to mid-size integers (even in exp. notation) */
+  if (lnz < 9 && lnz <= rp && rp < 18) {
+    if (rp == 9)
+      return sign * (long double)x[0];
+    if (rp < 9)
+      return sign * (long double)x[0] / p10s[8 - rp];
+    int bitlim = bits - 3 * (int)(rp - 9);
+    if (bitlim > 30 || x[0] >> bitlim == 0)
+      return sign * (long double)x[0] * p10s[rp - 10];
+  }
 
-	/* Optimize small to mid-size integers (even in exp. notation) */
-	if (lnz<9 && lnz<=rp && rp < 18) {
-		if (rp == 9) return sign * (long double)x[0];
-		if (rp < 9) return sign * (long double)x[0] / p10s[8-rp];
-		int bitlim = bits-3*(int)(rp-9);
-		if (bitlim>30 || x[0]>>bitlim==0)
-			return sign * (long double)x[0] * p10s[rp-10];
-	}
+  /* Align radix point to B1B digit boundary */
+  if (rp % 9) {
+    int rpm9 = rp >= 0 ? rp % 9 : rp % 9 + 9;
+    int p10 = p10s[8 - rpm9];
+    uint32_t carry = 0;
+    for (k = a; k != z; k++) {
+      uint32_t tmp = x[k] % p10;
+      x[k] = x[k] / p10 + carry;
+      carry = 1000000000 / p10 * tmp;
+      if (k == a && !x[k]) {
+        a = (a + 1 & MASK);
+        rp -= 9;
+      }
+    }
+    if (carry)
+      x[z++] = carry;
+    rp += 9 - rpm9;
+  }
 
-	/* Align radix point to B1B digit boundary */
-	if (rp % 9) {
-		int rpm9 = rp>=0 ? rp%9 : rp%9+9;
-		int p10 = p10s[8-rpm9];
-		uint32_t carry = 0;
-		for (k=a; k!=z; k++) {
-			uint32_t tmp = x[k] % p10;
-			x[k] = x[k]/p10 + carry;
-			carry = 1000000000/p10 * tmp;
-			if (k==a && !x[k]) {
-				a = (a+1 & MASK);
-				rp -= 9;
-			}
-		}
-		if (carry) x[z++] = carry;
-		rp += 9-rpm9;
-	}
+  /* Upscale until desired number of bits are left of radix point */
+  while (rp < 9 * LD_B1B_DIG || (rp == 9 * LD_B1B_DIG && x[a] < th[0])) {
+    uint32_t carry = 0;
+    e2 -= 29;
+    for (k = (z - 1 & MASK);; k = (k - 1 & MASK)) {
+      uint64_t tmp = ((uint64_t)x[k] << 29) + carry;
+      if (tmp > 1000000000) {
+        carry = tmp / 1000000000;
+        x[k] = tmp % 1000000000;
+      } else {
+        carry = 0;
+        x[k] = tmp;
+      }
+      if (k == (z - 1 & MASK) && k != a && !x[k])
+        z = k;
+      if (k == a)
+        break;
+    }
+    if (carry) {
+      rp += 9;
+      a = (a - 1 & MASK);
+      if (a == z) {
+        z = (z - 1 & MASK);
+        x[z - 1 & MASK] |= x[z];
+      }
+      x[a] = carry;
+    }
+  }
 
-	/* Upscale until desired number of bits are left of radix point */
-	while (rp < 9*LD_B1B_DIG || (rp == 9*LD_B1B_DIG && x[a]<th[0])) {
-		uint32_t carry = 0;
-		e2 -= 29;
-		for (k=(z-1 & MASK); ; k=(k-1 & MASK)) {
-			uint64_t tmp = ((uint64_t)x[k] << 29) + carry;
-			if (tmp > 1000000000) {
-				carry = tmp / 1000000000;
-				x[k] = tmp % 1000000000;
-			} else {
-				carry = 0;
-				x[k] = tmp;
-			}
-			if (k==(z-1 & MASK) && k!=a && !x[k]) z = k;
-			if (k==a) break;
-		}
-		if (carry) {
-			rp += 9;
-			a = (a-1 & MASK);
-			if (a == z) {
-				z = (z-1 & MASK);
-				x[z-1 & MASK] |= x[z];
-			}
-			x[a] = carry;
-		}
-	}
+  /* Downscale until exactly number of bits are left of radix point */
+  for (;;) {
+    uint32_t carry = 0;
+    int sh = 1;
+    for (i = 0; i < LD_B1B_DIG; i++) {
+      k = (a + i & MASK);
+      if (k == z || x[k] < th[i]) {
+        i = LD_B1B_DIG;
+        break;
+      }
+      if (x[a + i & MASK] > th[i])
+        break;
+    }
+    if (i == LD_B1B_DIG && rp == 9 * LD_B1B_DIG)
+      break;
+    /* FIXME: find a way to compute optimal sh */
+    if (rp > 9 + 9 * LD_B1B_DIG)
+      sh = 9;
+    e2 += sh;
+    for (k = a; k != z; k = (k + 1 & MASK)) {
+      uint32_t tmp = x[k] & (1 << sh) - 1;
+      x[k] = (x[k] >> sh) + carry;
+      carry = (1000000000 >> sh) * tmp;
+      if (k == a && !x[k]) {
+        a = (a + 1 & MASK);
+        i--;
+        rp -= 9;
+      }
+    }
+    if (carry) {
+      if ((z + 1 & MASK) != a) {
+        x[z] = carry;
+        z = (z + 1 & MASK);
+      } else
+        x[z - 1 & MASK] |= 1;
+    }
+  }
 
-	/* Downscale until exactly number of bits are left of radix point */
-	for (;;) {
-		uint32_t carry = 0;
-		int sh = 1;
-		for (i=0; i<LD_B1B_DIG; i++) {
-			k = (a+i & MASK);
-			if (k == z || x[k] < th[i]) {
-				i=LD_B1B_DIG;
-				break;
-			}
-			if (x[a+i & MASK] > th[i]) break;
-		}
-		if (i==LD_B1B_DIG && rp==9*LD_B1B_DIG) break;
-		/* FIXME: find a way to compute optimal sh */
-		if (rp > 9+9*LD_B1B_DIG) sh = 9;
-		e2 += sh;
-		for (k=a; k!=z; k=(k+1 & MASK)) {
-			uint32_t tmp = x[k] & (1<<sh)-1;
-			x[k] = (x[k]>>sh) + carry;
-			carry = (1000000000>>sh) * tmp;
-			if (k==a && !x[k]) {
-				a = (a+1 & MASK);
-				i--;
-				rp -= 9;
-			}
-		}
-		if (carry) {
-			if ((z+1 & MASK) != a) {
-				x[z] = carry;
-				z = (z+1 & MASK);
-			} else x[z-1 & MASK] |= 1;
-		}
-	}
+  /* Assemble desired bits into floating point variable */
+  for (y = i = 0; i < LD_B1B_DIG; i++) {
+    if ((a + i & MASK) == z)
+      x[(z = (z + 1 & MASK)) - 1] = 0;
+    y = 1000000000.0L * y + x[a + i & MASK];
+  }
 
-	/* Assemble desired bits into floating point variable */
-	for (y=i=0; i<LD_B1B_DIG; i++) {
-		if ((a+i & MASK)==z) x[(z=(z+1 & MASK))-1] = 0;
-		y = 1000000000.0L * y + x[a+i & MASK];
-	}
+  y *= sign;
 
-	y *= sign;
+  /* Limit precision for denormal results */
+  if (bits > LDBL_MANT_DIG + e2 - emin) {
+    bits = LDBL_MANT_DIG + e2 - emin;
+    if (bits < 0)
+      bits = 0;
+    denormal = 1;
+  }
 
-	/* Limit precision for denormal results */
-	if (bits > LDBL_MANT_DIG+e2-emin) {
-		bits = LDBL_MANT_DIG+e2-emin;
-		if (bits<0) bits=0;
-		denormal = 1;
-	}
+  /* Calculate bias term to force rounding, move out lower bits */
+  if (bits < LDBL_MANT_DIG) {
+    bias = copysignl(scalbn(1, 2 * LDBL_MANT_DIG - bits - 1), y);
+    frac = fmodl(y, scalbn(1, LDBL_MANT_DIG - bits));
+    y -= frac;
+    y += bias;
+  }
 
-	/* Calculate bias term to force rounding, move out lower bits */
-	if (bits < LDBL_MANT_DIG) {
-		bias = copysignl(scalbn(1, 2*LDBL_MANT_DIG-bits-1), y);
-		frac = fmodl(y, scalbn(1, LDBL_MANT_DIG-bits));
-		y -= frac;
-		y += bias;
-	}
+  /* Process tail of decimal input so it can affect rounding */
+  if ((a + i & MASK) != z) {
+    uint32_t t = x[a + i & MASK];
+    if (t < 500000000 && (t || (a + i + 1 & MASK) != z))
+      frac += 0.25 * sign;
+    else if (t > 500000000)
+      frac += 0.75 * sign;
+    else if (t == 500000000) {
+      if ((a + i + 1 & MASK) == z)
+        frac += 0.5 * sign;
+      else
+        frac += 0.75 * sign;
+    }
+    if (LDBL_MANT_DIG - bits >= 2 && !fmodl(frac, 1))
+      frac++;
+  }
 
-	/* Process tail of decimal input so it can affect rounding */
-	if ((a+i & MASK) != z) {
-		uint32_t t = x[a+i & MASK];
-		if (t < 500000000 && (t || (a+i+1 & MASK) != z))
-			frac += 0.25*sign;
-		else if (t > 500000000)
-			frac += 0.75*sign;
-		else if (t == 500000000) {
-			if ((a+i+1 & MASK) == z)
-				frac += 0.5*sign;
-			else
-				frac += 0.75*sign;
-		}
-		if (LDBL_MANT_DIG-bits >= 2 && !fmodl(frac, 1))
-			frac++;
-	}
+  y += frac;
+  y -= bias;
 
-	y += frac;
-	y -= bias;
+  if ((e2 + LDBL_MANT_DIG & INT_MAX) > emax - 5) {
+    if (fabs(y) >= CONCAT(0x1p, LDBL_MANT_DIG)) {
+      if (denormal && bits == LDBL_MANT_DIG + e2 - emin)
+        denormal = 0;
+      y *= 0.5;
+      e2++;
+    }
+    if (e2 + LDBL_MANT_DIG > emax || (denormal && frac))
+      errno = ERANGE;
+  }
 
-	if ((e2+LDBL_MANT_DIG & INT_MAX) > emax-5) {
-		if (fabs(y) >= CONCAT(0x1p, LDBL_MANT_DIG)) {
-			if (denormal && bits==LDBL_MANT_DIG+e2-emin)
-				denormal = 0;
-			y *= 0.5;
-			e2++;
-		}
-		if (e2+LDBL_MANT_DIG>emax || (denormal && frac))
-			errno = ERANGE;
-	}
-
-	return scalbnl(y, e2);
+  return scalbnl(y, e2);
 }
 
-static long double hexfloat(FILE *f, int bits, int emin, int sign, int pok)
-{
-	uint32_t x = 0;
-	long double y = 0;
-	long double scale = 1;
-	long double bias = 0;
-	int gottail = 0, gotrad = 0, gotdig = 0;
-	long long rp = 0;
-	long long dc = 0;
-	long long e2 = 0;
-	int d;
-	int c;
+static long double hexfloat(FILE* f, int bits, int emin, int sign, int pok) {
+  uint32_t x = 0;
+  long double y = 0;
+  long double scale = 1;
+  long double bias = 0;
+  int gottail = 0, gotrad = 0, gotdig = 0;
+  long long rp = 0;
+  long long dc = 0;
+  long long e2 = 0;
+  int d;
+  int c;
 
-	c = shgetc(f);
+  c = shgetc(f);
 
-	/* Skip leading zeros */
-	for (; c=='0'; c = shgetc(f)) gotdig = 1;
+  /* Skip leading zeros */
+  for (; c == '0'; c = shgetc(f))
+    gotdig = 1;
 
-	if (c=='.') {
-		gotrad = 1;
-		c = shgetc(f);
-		/* Count zeros after the radix point before significand */
-		for (rp=0; c=='0'; c = shgetc(f), rp--) gotdig = 1;
-	}
+  if (c == '.') {
+    gotrad = 1;
+    c = shgetc(f);
+    /* Count zeros after the radix point before significand */
+    for (rp = 0; c == '0'; c = shgetc(f), rp--)
+      gotdig = 1;
+  }
 
-	for (; c-'0'<10U || (c|32)-'a'<6U || c=='.'; c = shgetc(f)) {
-		if (c=='.') {
-			if (gotrad) break;
-			rp = dc;
-			gotrad = 1;
-		} else {
-			gotdig = 1;
-			if (c > '9') d = (c|32)+10-'a';
-			else d = c-'0';
-			if (dc<8) {
-				x = x*16 + d;
-			} else if (dc < LDBL_MANT_DIG/4+1) {
-				y += d*(scale/=16);
-			} else if (d && !gottail) {
-				y += 0.5*scale;
-				gottail = 1;
-			}
-			dc++;
-		}
-	}
-	if (!gotdig) {
-		shunget(f);
-		if (pok) {
-			shunget(f);
-			if (gotrad) shunget(f);
-		} else {
-			shlim(f, 0);
-		}
-		return sign * 0.0;
-	}
-	if (!gotrad) rp = dc;
-	while (dc<8) x *= 16, dc++;
-	if ((c|32)=='p') {
-		e2 = scanexp(f, pok);
-		if (e2 == LLONG_MIN) {
-			if (pok) {
-				shunget(f);
-			} else {
-				shlim(f, 0);
-				return 0;
-			}
-			e2 = 0;
-		}
-	} else {
-		shunget(f);
-	}
-	e2 += 4*rp - 32;
+  for (; c - '0' < 10U || (c | 32) - 'a' < 6U || c == '.'; c = shgetc(f)) {
+    if (c == '.') {
+      if (gotrad)
+        break;
+      rp = dc;
+      gotrad = 1;
+    } else {
+      gotdig = 1;
+      if (c > '9')
+        d = (c | 32) + 10 - 'a';
+      else
+        d = c - '0';
+      if (dc < 8) {
+        x = x * 16 + d;
+      } else if (dc < LDBL_MANT_DIG / 4 + 1) {
+        y += d * (scale /= 16);
+      } else if (d && !gottail) {
+        y += 0.5 * scale;
+        gottail = 1;
+      }
+      dc++;
+    }
+  }
+  if (!gotdig) {
+    shunget(f);
+    if (pok) {
+      shunget(f);
+      if (gotrad)
+        shunget(f);
+    } else {
+      shlim(f, 0);
+    }
+    return sign * 0.0;
+  }
+  if (!gotrad)
+    rp = dc;
+  while (dc < 8)
+    x *= 16, dc++;
+  if ((c | 32) == 'p') {
+    e2 = scanexp(f, pok);
+    if (e2 == LLONG_MIN) {
+      if (pok) {
+        shunget(f);
+      } else {
+        shlim(f, 0);
+        return 0;
+      }
+      e2 = 0;
+    }
+  } else {
+    shunget(f);
+  }
+  e2 += 4 * rp - 32;
 
-	if (!x) return sign * 0.0;
-	if (e2 > -emin) {
-		errno = ERANGE;
-		return sign * LDBL_MAX * LDBL_MAX;
-	}
-	if (e2 < emin-2*LDBL_MANT_DIG) {
-		errno = ERANGE;
-		return sign * LDBL_MIN * LDBL_MIN;
-	}
+  if (!x)
+    return sign * 0.0;
+  if (e2 > -emin) {
+    errno = ERANGE;
+    return sign * LDBL_MAX * LDBL_MAX;
+  }
+  if (e2 < emin - 2 * LDBL_MANT_DIG) {
+    errno = ERANGE;
+    return sign * LDBL_MIN * LDBL_MIN;
+  }
 
-	while (x < 0x80000000) {
-		if (y>=0.5) {
-			x += x + 1;
-			y += y - 1;
-		} else {
-			x += x;
-			y += y;
-		}
-		e2--;
-	}
+  while (x < 0x80000000) {
+    if (y >= 0.5) {
+      x += x + 1;
+      y += y - 1;
+    } else {
+      x += x;
+      y += y;
+    }
+    e2--;
+  }
 
-	if (bits > 32+e2-emin) {
-		bits = 32+e2-emin;
-		if (bits<0) bits=0;
-	}
+  if (bits > 32 + e2 - emin) {
+    bits = 32 + e2 - emin;
+    if (bits < 0)
+      bits = 0;
+  }
 
-	if (bits < LDBL_MANT_DIG)
-		bias = copysignl(scalbn(1, 32+LDBL_MANT_DIG-bits-1), sign);
+  if (bits < LDBL_MANT_DIG)
+    bias = copysignl(scalbn(1, 32 + LDBL_MANT_DIG - bits - 1), sign);
 
-	if (bits<32 && y && !(x&1)) x++, y=0;
+  if (bits < 32 && y && !(x & 1))
+    x++, y = 0;
 
-	y = bias + sign*(long double)x + sign*y;
-	y -= bias;
+  y = bias + sign * (long double)x + sign * y;
+  y -= bias;
 
-	if (!y) errno = ERANGE;
+  if (!y)
+    errno = ERANGE;
 
-	return scalbnl(y, e2);
+  return scalbnl(y, e2);
 }
 
-long double __floatscan(FILE *f, int prec, int pok)
-{
-	int sign = 1;
-	size_t i;
-	int bits;
-	int emin;
-	int c;
+long double __floatscan(FILE* f, int prec, int pok) {
+  int sign = 1;
+  size_t i;
+  int bits;
+  int emin;
+  int c;
 
-	switch (prec) {
-	case 0:
-		bits = FLT_MANT_DIG;
-		emin = FLT_MIN_EXP-bits;
-		break;
-	case 1:
-		bits = DBL_MANT_DIG;
-		emin = DBL_MIN_EXP-bits;
-		break;
-	case 2:
-		bits = LDBL_MANT_DIG;
-		emin = LDBL_MIN_EXP-bits;
-		break;
-	default:
-		return 0;
-	}
+  switch (prec) {
+    case 0:
+      bits = FLT_MANT_DIG;
+      emin = FLT_MIN_EXP - bits;
+      break;
+    case 1:
+      bits = DBL_MANT_DIG;
+      emin = DBL_MIN_EXP - bits;
+      break;
+    case 2:
+      bits = LDBL_MANT_DIG;
+      emin = LDBL_MIN_EXP - bits;
+      break;
+    default:
+      return 0;
+  }
 
-	while (isspace((c=shgetc(f))));
+  while (isspace((c = shgetc(f))))
+    ;
 
-	if (c=='+' || c=='-') {
-		sign -= 2*(c=='-');
-		c = shgetc(f);
-	}
+  if (c == '+' || c == '-') {
+    sign -= 2 * (c == '-');
+    c = shgetc(f);
+  }
 
-	for (i=0; i<8 && (c|32)=="infinity"[i]; i++)
-		if (i<7) c = shgetc(f);
-	if (i==3 || i==8 || (i>3 && pok)) {
-		if (i!=8) {
-			shunget(f);
-			if (pok) for (; i>3; i--) shunget(f);
-		}
-		return sign * INFINITY;
-	}
-	if (!i) for (i=0; i<3 && (c|32)=="nan"[i]; i++)
-		if (i<2) c = shgetc(f);
-	if (i==3) {
-		if (shgetc(f) != '(') {
-			shunget(f);
-			return NAN;
-		}
-		for (i=1; ; i++) {
-			c = shgetc(f);
-			if (c-'0'<10U || c-'A'<26U || c-'a'<26U || c=='_')
-				continue;
-			if (c==')') return NAN;
-			shunget(f);
-			if (!pok) {
-				errno = EINVAL;
-				shlim(f, 0);
-				return 0;
-			}
-			while (i--) shunget(f);
-			return NAN;
-		}
-		return NAN;
-	}
+  for (i = 0; i < 8 && (c | 32) == "infinity"[i]; i++)
+    if (i < 7)
+      c = shgetc(f);
+  if (i == 3 || i == 8 || (i > 3 && pok)) {
+    if (i != 8) {
+      shunget(f);
+      if (pok)
+        for (; i > 3; i--)
+          shunget(f);
+    }
+    return sign * INFINITY;
+  }
+  if (!i)
+    for (i = 0; i < 3 && (c | 32) == "nan"[i]; i++)
+      if (i < 2)
+        c = shgetc(f);
+  if (i == 3) {
+    if (shgetc(f) != '(') {
+      shunget(f);
+      return NAN;
+    }
+    for (i = 1;; i++) {
+      c = shgetc(f);
+      if (c - '0' < 10U || c - 'A' < 26U || c - 'a' < 26U || c == '_')
+        continue;
+      if (c == ')')
+        return NAN;
+      shunget(f);
+      if (!pok) {
+        errno = EINVAL;
+        shlim(f, 0);
+        return 0;
+      }
+      while (i--)
+        shunget(f);
+      return NAN;
+    }
+    return NAN;
+  }
 
-	if (i) {
-		shunget(f);
-		errno = EINVAL;
-		shlim(f, 0);
-		return 0;
-	}
+  if (i) {
+    shunget(f);
+    errno = EINVAL;
+    shlim(f, 0);
+    return 0;
+  }
 
-	if (c=='0') {
-		c = shgetc(f);
-		if ((c|32) == 'x')
-			return hexfloat(f, bits, emin, sign, pok);
-		shunget(f);
-		c = '0';
-	}
+  if (c == '0') {
+    c = shgetc(f);
+    if ((c | 32) == 'x')
+      return hexfloat(f, bits, emin, sign, pok);
+    shunget(f);
+    c = '0';
+  }
 
-	return decfloat(f, c, bits, emin, sign, pok);
+  return decfloat(f, c, bits, emin, sign, pok);
 }
diff --git a/fusl/src/internal/floatscan.h b/fusl/src/internal/floatscan.h
index e027fa0..55c6590 100644
--- a/fusl/src/internal/floatscan.h
+++ b/fusl/src/internal/floatscan.h
@@ -3,6 +3,6 @@
 
 #include <stdio.h>
 
-long double __floatscan(FILE *, int, int);
+long double __floatscan(FILE*, int, int);
 
 #endif
diff --git a/fusl/src/internal/futex.h b/fusl/src/internal/futex.h
index cf4c795..54a5373 100644
--- a/fusl/src/internal/futex.h
+++ b/fusl/src/internal/futex.h
@@ -1,21 +1,21 @@
 #ifndef _INTERNAL_FUTEX_H
 #define _INTERNAL_FUTEX_H
 
-#define FUTEX_WAIT		0
-#define FUTEX_WAKE		1
-#define FUTEX_FD		2
-#define FUTEX_REQUEUE		3
-#define FUTEX_CMP_REQUEUE	4
-#define FUTEX_WAKE_OP		5
-#define FUTEX_LOCK_PI		6
-#define FUTEX_UNLOCK_PI		7
-#define FUTEX_TRYLOCK_PI	8
-#define FUTEX_WAIT_BITSET	9
+#define FUTEX_WAIT 0
+#define FUTEX_WAKE 1
+#define FUTEX_FD 2
+#define FUTEX_REQUEUE 3
+#define FUTEX_CMP_REQUEUE 4
+#define FUTEX_WAKE_OP 5
+#define FUTEX_LOCK_PI 6
+#define FUTEX_UNLOCK_PI 7
+#define FUTEX_TRYLOCK_PI 8
+#define FUTEX_WAIT_BITSET 9
 
 #define FUTEX_PRIVATE 128
 
 #define FUTEX_CLOCK_REALTIME 256
 
-int __futex(volatile int *, int, int, void *);
+int __futex(volatile int*, int, int, void*);
 
 #endif
diff --git a/fusl/src/internal/intscan.c b/fusl/src/internal/intscan.c
index 65d497e..6055337 100644
--- a/fusl/src/internal/intscan.c
+++ b/fusl/src/internal/intscan.c
@@ -4,97 +4,108 @@
 #include "shgetc.h"
 
 /* Lookup table for digit values. -1==255>=36 -> invalid */
-static const unsigned char table[] = { -1,
--1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
--1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
--1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
- 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,-1,-1,-1,-1,-1,-1,
--1,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,
-25,26,27,28,29,30,31,32,33,34,35,-1,-1,-1,-1,-1,
--1,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,
-25,26,27,28,29,30,31,32,33,34,35,-1,-1,-1,-1,-1,
--1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
--1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
--1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
--1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
--1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
--1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
--1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
--1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
+static const unsigned char table[] = {
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,  1,  2,  3,  4,  5,  6,  7,
+    8,  9,  -1, -1, -1, -1, -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
+    20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1,
+    -1, -1, -1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
+    26, 27, 28, 29, 30, 31, 32, 33, 34, 35, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
+    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
 };
 
-unsigned long long __intscan(FILE *f, unsigned base, int pok, unsigned long long lim)
-{
-	const unsigned char *val = table+1;
-	int c, neg=0;
-	unsigned x;
-	unsigned long long y;
-	if (base > 36) {
-		errno = EINVAL;
-		return 0;
-	}
-	while (isspace((c=shgetc(f))));
-	if (c=='+' || c=='-') {
-		neg = -(c=='-');
-		c = shgetc(f);
-	}
-	if ((base == 0 || base == 16) && c=='0') {
-		c = shgetc(f);
-		if ((c|32)=='x') {
-			c = shgetc(f);
-			if (val[c]>=16) {
-				shunget(f);
-				if (pok) shunget(f);
-				else shlim(f, 0);
-				return 0;
-			}
-			base = 16;
-		} else if (base == 0) {
-			base = 8;
-		}
-	} else {
-		if (base == 0) base = 10;
-		if (val[c] >= base) {
-			shunget(f);
-			shlim(f, 0);
-			errno = EINVAL;
-			return 0;
-		}
-	}
-	if (base == 10) {
-		for (x=0; c-'0'<10U && x<=UINT_MAX/10-1; c=shgetc(f))
-			x = x*10 + (c-'0');
-		for (y=x; c-'0'<10U && y<=ULLONG_MAX/10 && 10*y<=ULLONG_MAX-(c-'0'); c=shgetc(f))
-			y = y*10 + (c-'0');
-		if (c-'0'>=10U) goto done;
-	} else if (!(base & base-1)) {
-		int bs = "\0\1\2\4\7\3\6\5"[(0x17*base)>>5&7];
-		for (x=0; val[c]<base && x<=UINT_MAX/32; c=shgetc(f))
-			x = x<<bs | val[c];
-		for (y=x; val[c]<base && y<=ULLONG_MAX>>bs; c=shgetc(f))
-			y = y<<bs | val[c];
-	} else {
-		for (x=0; val[c]<base && x<=UINT_MAX/36-1; c=shgetc(f))
-			x = x*base + val[c];
-		for (y=x; val[c]<base && y<=ULLONG_MAX/base && base*y<=ULLONG_MAX-val[c]; c=shgetc(f))
-			y = y*base + val[c];
-	}
-	if (val[c]<base) {
-		for (; val[c]<base; c=shgetc(f));
-		errno = ERANGE;
-		y = lim;
-		if (lim&1) neg = 0;
-	}
+unsigned long long __intscan(FILE* f,
+                             unsigned base,
+                             int pok,
+                             unsigned long long lim) {
+  const unsigned char* val = table + 1;
+  int c, neg = 0;
+  unsigned x;
+  unsigned long long y;
+  if (base > 36) {
+    errno = EINVAL;
+    return 0;
+  }
+  while (isspace((c = shgetc(f))))
+    ;
+  if (c == '+' || c == '-') {
+    neg = -(c == '-');
+    c = shgetc(f);
+  }
+  if ((base == 0 || base == 16) && c == '0') {
+    c = shgetc(f);
+    if ((c | 32) == 'x') {
+      c = shgetc(f);
+      if (val[c] >= 16) {
+        shunget(f);
+        if (pok)
+          shunget(f);
+        else
+          shlim(f, 0);
+        return 0;
+      }
+      base = 16;
+    } else if (base == 0) {
+      base = 8;
+    }
+  } else {
+    if (base == 0)
+      base = 10;
+    if (val[c] >= base) {
+      shunget(f);
+      shlim(f, 0);
+      errno = EINVAL;
+      return 0;
+    }
+  }
+  if (base == 10) {
+    for (x = 0; c - '0' < 10U && x <= UINT_MAX / 10 - 1; c = shgetc(f))
+      x = x * 10 + (c - '0');
+    for (y = x; c - '0' < 10U && y <= ULLONG_MAX / 10 &&
+                10 * y <= ULLONG_MAX - (c - '0');
+         c = shgetc(f))
+      y = y * 10 + (c - '0');
+    if (c - '0' >= 10U)
+      goto done;
+  } else if (!(base & base - 1)) {
+    int bs = "\0\1\2\4\7\3\6\5"[(0x17 * base) >> 5 & 7];
+    for (x = 0; val[c] < base && x <= UINT_MAX / 32; c = shgetc(f))
+      x = x << bs | val[c];
+    for (y = x; val[c] < base && y <= ULLONG_MAX >> bs; c = shgetc(f))
+      y = y << bs | val[c];
+  } else {
+    for (x = 0; val[c] < base && x <= UINT_MAX / 36 - 1; c = shgetc(f))
+      x = x * base + val[c];
+    for (y = x; val[c] < base && y <= ULLONG_MAX / base &&
+                base * y <= ULLONG_MAX - val[c];
+         c = shgetc(f))
+      y = y * base + val[c];
+  }
+  if (val[c] < base) {
+    for (; val[c] < base; c = shgetc(f))
+      ;
+    errno = ERANGE;
+    y = lim;
+    if (lim & 1)
+      neg = 0;
+  }
 done:
-	shunget(f);
-	if (y>=lim) {
-		if (!(lim&1) && !neg) {
-			errno = ERANGE;
-			return lim-1;
-		} else if (y>lim) {
-			errno = ERANGE;
-			return lim;
-		}
-	}
-	return (y^neg)-neg;
+  shunget(f);
+  if (y >= lim) {
+    if (!(lim & 1) && !neg) {
+      errno = ERANGE;
+      return lim - 1;
+    } else if (y > lim) {
+      errno = ERANGE;
+      return lim;
+    }
+  }
+  return (y ^ neg) - neg;
 }
diff --git a/fusl/src/internal/intscan.h b/fusl/src/internal/intscan.h
index 994c5e7..3326a1b 100644
--- a/fusl/src/internal/intscan.h
+++ b/fusl/src/internal/intscan.h
@@ -3,6 +3,6 @@
 
 #include <stdio.h>
 
-unsigned long long __intscan(FILE *, unsigned, int, unsigned long long);
+unsigned long long __intscan(FILE*, unsigned, int, unsigned long long);
 
 #endif
diff --git a/fusl/src/internal/ksigaction.h b/fusl/src/internal/ksigaction.h
index 1d8d964..211c6ee 100644
--- a/fusl/src/internal/ksigaction.h
+++ b/fusl/src/internal/ksigaction.h
@@ -2,10 +2,10 @@
  * but it can be overridden by a file with the same name in the top-level
  * arch dir for a given arch, if necessary. */
 struct k_sigaction {
-	void (*handler)(int);
-	unsigned long flags;
-	void (*restorer)(void);
-	unsigned mask[2];
+  void (*handler)(int);
+  unsigned long flags;
+  void (*restorer)(void);
+  unsigned mask[2];
 };
 
 void __restore(), __restore_rt();
diff --git a/fusl/src/internal/libc.c b/fusl/src/internal/libc.c
index 2e10942..befd270 100644
--- a/fusl/src/internal/libc.c
+++ b/fusl/src/internal/libc.c
@@ -4,7 +4,7 @@
 
 size_t __hwcap;
 size_t __sysinfo;
-char *__progname=0, *__progname_full=0;
+char *__progname = 0, *__progname_full = 0;
 
 weak_alias(__progname, program_invocation_short_name);
 weak_alias(__progname_full, program_invocation_name);
diff --git a/fusl/src/internal/libc.h b/fusl/src/internal/libc.h
index 5e14518..a8a9e1c 100644
--- a/fusl/src/internal/libc.h
+++ b/fusl/src/internal/libc.h
@@ -8,25 +8,25 @@
 struct __locale_map;
 
 struct __locale_struct {
-	const struct __locale_map *volatile cat[6];
+  const struct __locale_map* volatile cat[6];
 };
 
 struct tls_module {
-	struct tls_module *next;
-	void *image;
-	size_t len, size, align, offset;
+  struct tls_module* next;
+  void* image;
+  size_t len, size, align, offset;
 };
 
 struct __libc {
-	int can_do_threads;
-	int threaded;
-	int secure;
-	volatile int threads_minus_1;
-	size_t *auxv;
-	struct tls_module *tls_head;
-	size_t tls_size, tls_align, tls_cnt;
-	size_t page_size;
-	struct __locale_struct global_locale;
+  int can_do_threads;
+  int threaded;
+  int secure;
+  volatile int threads_minus_1;
+  size_t* auxv;
+  struct tls_module* tls_head;
+  size_t tls_size, tls_align, tls_cnt;
+  size_t page_size;
+  struct __locale_struct global_locale;
 };
 
 #ifndef PAGE_SIZE
@@ -47,21 +47,21 @@
 extern char *__progname, *__progname_full;
 
 /* Designed to avoid any overhead in non-threaded processes */
-void __lock(volatile int *) ATTR_LIBC_VISIBILITY;
-void __unlock(volatile int *) ATTR_LIBC_VISIBILITY;
-int __lockfile(FILE *) ATTR_LIBC_VISIBILITY;
-void __unlockfile(FILE *) ATTR_LIBC_VISIBILITY;
+void __lock(volatile int*) ATTR_LIBC_VISIBILITY;
+void __unlock(volatile int*) ATTR_LIBC_VISIBILITY;
+int __lockfile(FILE*) ATTR_LIBC_VISIBILITY;
+void __unlockfile(FILE*) ATTR_LIBC_VISIBILITY;
 #define LOCK(x) __lock(x)
 #define UNLOCK(x) __unlock(x)
 
-void __synccall(void (*)(void *), void *);
+void __synccall(void (*)(void*), void*);
 int __setxid(int, int, int, int);
 
-extern char **__environ;
+extern char** __environ;
 
 #undef weak_alias
 #define weak_alias(old, new) \
-	extern __typeof(old) new __attribute__((weak, alias(#old)))
+  extern __typeof(old) new __attribute__((weak, alias(#old)))
 
 #undef LFS64_2
 #define LFS64_2(x, y) weak_alias(x, y)
diff --git a/fusl/src/internal/libm.h b/fusl/src/internal/libm.h
index 6c43f3e..e15f3ed 100644
--- a/fusl/src/internal/libm.h
+++ b/fusl/src/internal/libm.h
@@ -30,135 +30,167 @@
 #endif
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER == __LITTLE_ENDIAN
+#elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384 && \
+    __BYTE_ORDER == __LITTLE_ENDIAN
 union ldshape {
-	long double f;
-	struct {
-		uint64_t m;
-		uint16_t se;
-	} i;
+  long double f;
+  struct {
+    uint64_t m;
+    uint16_t se;
+  } i;
 };
-#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER == __LITTLE_ENDIAN
+#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && \
+    __BYTE_ORDER == __LITTLE_ENDIAN
 union ldshape {
-	long double f;
-	struct {
-		uint64_t lo;
-		uint32_t mid;
-		uint16_t top;
-		uint16_t se;
-	} i;
-	struct {
-		uint64_t lo;
-		uint64_t hi;
-	} i2;
+  long double f;
+  struct {
+    uint64_t lo;
+    uint32_t mid;
+    uint16_t top;
+    uint16_t se;
+  } i;
+  struct {
+    uint64_t lo;
+    uint64_t hi;
+  } i2;
 };
-#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && __BYTE_ORDER == __BIG_ENDIAN
+#elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384 && \
+    __BYTE_ORDER == __BIG_ENDIAN
 union ldshape {
-	long double f;
-	struct {
-		uint16_t se;
-		uint16_t top;
-		uint32_t mid;
-		uint64_t lo;
-	} i;
-	struct {
-		uint64_t hi;
-		uint64_t lo;
-	} i2;
+  long double f;
+  struct {
+    uint16_t se;
+    uint16_t top;
+    uint32_t mid;
+    uint64_t lo;
+  } i;
+  struct {
+    uint64_t hi;
+    uint64_t lo;
+  } i2;
 };
 #else
 #error Unsupported long double representation
 #endif
 
-#define FORCE_EVAL(x) do {                        \
-	if (sizeof(x) == sizeof(float)) {         \
-		volatile float __x;               \
-		__x = (x);                        \
-	} else if (sizeof(x) == sizeof(double)) { \
-		volatile double __x;              \
-		__x = (x);                        \
-	} else {                                  \
-		volatile long double __x;         \
-		__x = (x);                        \
-	}                                         \
-} while(0)
+#define FORCE_EVAL(x)                         \
+  do {                                        \
+    if (sizeof(x) == sizeof(float)) {         \
+      volatile float __x;                     \
+      __x = (x);                              \
+    } else if (sizeof(x) == sizeof(double)) { \
+      volatile double __x;                    \
+      __x = (x);                              \
+    } else {                                  \
+      volatile long double __x;               \
+      __x = (x);                              \
+    }                                         \
+  } while (0)
 
 /* Get two 32 bit ints from a double.  */
-#define EXTRACT_WORDS(hi,lo,d)                    \
-do {                                              \
-  union {double f; uint64_t i;} __u;              \
-  __u.f = (d);                                    \
-  (hi) = __u.i >> 32;                             \
-  (lo) = (uint32_t)__u.i;                         \
-} while (0)
+#define EXTRACT_WORDS(hi, lo, d) \
+  do {                           \
+    union {                      \
+      double f;                  \
+      uint64_t i;                \
+    } __u;                       \
+    __u.f = (d);                 \
+    (hi) = __u.i >> 32;          \
+    (lo) = (uint32_t)__u.i;      \
+  } while (0)
 
 /* Get the more significant 32 bit int from a double.  */
-#define GET_HIGH_WORD(hi,d)                       \
-do {                                              \
-  union {double f; uint64_t i;} __u;              \
-  __u.f = (d);                                    \
-  (hi) = __u.i >> 32;                             \
-} while (0)
+#define GET_HIGH_WORD(hi, d) \
+  do {                       \
+    union {                  \
+      double f;              \
+      uint64_t i;            \
+    } __u;                   \
+    __u.f = (d);             \
+    (hi) = __u.i >> 32;      \
+  } while (0)
 
 /* Get the less significant 32 bit int from a double.  */
-#define GET_LOW_WORD(lo,d)                        \
-do {                                              \
-  union {double f; uint64_t i;} __u;              \
-  __u.f = (d);                                    \
-  (lo) = (uint32_t)__u.i;                         \
-} while (0)
+#define GET_LOW_WORD(lo, d) \
+  do {                      \
+    union {                 \
+      double f;             \
+      uint64_t i;           \
+    } __u;                  \
+    __u.f = (d);            \
+    (lo) = (uint32_t)__u.i; \
+  } while (0)
 
 /* Set a double from two 32 bit ints.  */
-#define INSERT_WORDS(d,hi,lo)                     \
-do {                                              \
-  union {double f; uint64_t i;} __u;              \
-  __u.i = ((uint64_t)(hi)<<32) | (uint32_t)(lo);  \
-  (d) = __u.f;                                    \
-} while (0)
+#define INSERT_WORDS(d, hi, lo)                      \
+  do {                                               \
+    union {                                          \
+      double f;                                      \
+      uint64_t i;                                    \
+    } __u;                                           \
+    __u.i = ((uint64_t)(hi) << 32) | (uint32_t)(lo); \
+    (d) = __u.f;                                     \
+  } while (0)
 
 /* Set the more significant 32 bits of a double from an int.  */
-#define SET_HIGH_WORD(d,hi)                       \
-do {                                              \
-  union {double f; uint64_t i;} __u;              \
-  __u.f = (d);                                    \
-  __u.i &= 0xffffffff;                            \
-  __u.i |= (uint64_t)(hi) << 32;                  \
-  (d) = __u.f;                                    \
-} while (0)
+#define SET_HIGH_WORD(d, hi)       \
+  do {                             \
+    union {                        \
+      double f;                    \
+      uint64_t i;                  \
+    } __u;                         \
+    __u.f = (d);                   \
+    __u.i &= 0xffffffff;           \
+    __u.i |= (uint64_t)(hi) << 32; \
+    (d) = __u.f;                   \
+  } while (0)
 
 /* Set the less significant 32 bits of a double from an int.  */
-#define SET_LOW_WORD(d,lo)                        \
-do {                                              \
-  union {double f; uint64_t i;} __u;              \
-  __u.f = (d);                                    \
-  __u.i &= 0xffffffff00000000ull;                 \
-  __u.i |= (uint32_t)(lo);                        \
-  (d) = __u.f;                                    \
-} while (0)
+#define SET_LOW_WORD(d, lo)         \
+  do {                              \
+    union {                         \
+      double f;                     \
+      uint64_t i;                   \
+    } __u;                          \
+    __u.f = (d);                    \
+    __u.i &= 0xffffffff00000000ull; \
+    __u.i |= (uint32_t)(lo);        \
+    (d) = __u.f;                    \
+  } while (0)
 
 /* Get a 32 bit int from a float.  */
-#define GET_FLOAT_WORD(w,d)                       \
-do {                                              \
-  union {float f; uint32_t i;} __u;               \
-  __u.f = (d);                                    \
-  (w) = __u.i;                                    \
-} while (0)
+#define GET_FLOAT_WORD(w, d) \
+  do {                       \
+    union {                  \
+      float f;               \
+      uint32_t i;            \
+    } __u;                   \
+    __u.f = (d);             \
+    (w) = __u.i;             \
+  } while (0)
 
 /* Set a float from a 32 bit int.  */
-#define SET_FLOAT_WORD(d,w)                       \
-do {                                              \
-  union {float f; uint32_t i;} __u;               \
-  __u.i = (w);                                    \
-  (d) = __u.f;                                    \
-} while (0)
+#define SET_FLOAT_WORD(d, w) \
+  do {                       \
+    union {                  \
+      float f;               \
+      uint32_t i;            \
+    } __u;                   \
+    __u.i = (w);             \
+    (d) = __u.f;             \
+  } while (0)
 
 #undef __CMPLX
 #undef CMPLX
 #undef CMPLXF
 #undef CMPLXL
 
-#define __CMPLX(x, y, t) \
-	((union { _Complex t __z; t __xy[2]; }){.__xy = {(x),(y)}}.__z)
+#define __CMPLX(x, y, t)  \
+  ((union {               \
+     _Complex t __z;      \
+     t __xy[2];           \
+   }){.__xy = {(x), (y)}} \
+       .__z)
 
 #define CMPLX(x, y) __CMPLX(x, y, double)
 #define CMPLXF(x, y) __CMPLX(x, y, float)
@@ -166,29 +198,29 @@
 
 /* fdlibm kernel functions */
 
-int    __rem_pio2_large(double*,double*,int,int,int);
+int __rem_pio2_large(double*, double*, int, int, int);
 
-int    __rem_pio2(double,double*);
-double __sin(double,double,int);
-double __cos(double,double);
-double __tan(double,double,int);
+int __rem_pio2(double, double*);
+double __sin(double, double, int);
+double __cos(double, double);
+double __tan(double, double, int);
 double __expo2(double);
-double complex __ldexp_cexp(double complex,int);
+double complex __ldexp_cexp(double complex, int);
 
-int    __rem_pio2f(float,double*);
-float  __sindf(double);
-float  __cosdf(double);
-float  __tandf(double,int);
-float  __expo2f(float);
-float complex __ldexp_cexpf(float complex,int);
+int __rem_pio2f(float, double*);
+float __sindf(double);
+float __cosdf(double);
+float __tandf(double, int);
+float __expo2f(float);
+float complex __ldexp_cexpf(float complex, int);
 
-int __rem_pio2l(long double, long double *);
+int __rem_pio2l(long double, long double*);
 long double __sinl(long double, long double, int);
 long double __cosl(long double, long double);
 long double __tanl(long double, long double, int);
 
 /* polynomial evaluation */
-long double __polevll(long double, const long double *, int);
-long double __p1evll(long double, const long double *, int);
+long double __polevll(long double, const long double*, int);
+long double __p1evll(long double, const long double*, int);
 
 #endif
diff --git a/fusl/src/internal/locale_impl.h b/fusl/src/internal/locale_impl.h
index f5e4d9b..d59c813 100644
--- a/fusl/src/internal/locale_impl.h
+++ b/fusl/src/internal/locale_impl.h
@@ -9,20 +9,20 @@
 #define LOCALE_NAME_MAX 15
 
 struct __locale_map {
-	const void *map;
-	size_t map_size;
-	char name[LOCALE_NAME_MAX+1];
-	const struct __locale_map *next;
+  const void* map;
+  size_t map_size;
+  char name[LOCALE_NAME_MAX + 1];
+  const struct __locale_map* next;
 };
 
 extern const struct __locale_map __c_dot_utf8;
 extern const struct __locale_struct __c_locale;
 extern const struct __locale_struct __c_dot_utf8_locale;
 
-const struct __locale_map *__get_locale(int, const char *);
-const char *__mo_lookup(const void *, size_t, const char *);
-const char *__lctrans(const char *, const struct __locale_map *);
-const char *__lctrans_cur(const char *);
+const struct __locale_map* __get_locale(int, const char*);
+const char* __mo_lookup(const void*, size_t, const char*);
+const char* __lctrans(const char*, const struct __locale_map*);
+const char* __lctrans_cur(const char*);
 
 #define LCTRANS(msg, lc, loc) __lctrans(msg, (loc)->cat[(lc)])
 #define LCTRANS_CUR(msg) __lctrans_cur(msg)
diff --git a/fusl/src/internal/procfdname.c b/fusl/src/internal/procfdname.c
index 697e0bd..41fa314 100644
--- a/fusl/src/internal/procfdname.c
+++ b/fusl/src/internal/procfdname.c
@@ -1,13 +1,15 @@
-void __procfdname(char *buf, unsigned fd)
-{
-	unsigned i, j;
-	for (i=0; (buf[i] = "/proc/self/fd/"[i]); i++);
-	if (!fd) {
-		buf[i] = '0';
-		buf[i+1] = 0;
-		return;
-	}
-	for (j=fd; j; j/=10, i++);
-	buf[i] = 0;
-	for (; fd; fd/=10) buf[--i] = '0' + fd%10;
+void __procfdname(char* buf, unsigned fd) {
+  unsigned i, j;
+  for (i = 0; (buf[i] = "/proc/self/fd/"[i]); i++)
+    ;
+  if (!fd) {
+    buf[i] = '0';
+    buf[i + 1] = 0;
+    return;
+  }
+  for (j = fd; j; j /= 10, i++)
+    ;
+  buf[i] = 0;
+  for (; fd; fd /= 10)
+    buf[--i] = '0' + fd % 10;
 }
diff --git a/fusl/src/internal/pthread_impl.h b/fusl/src/internal/pthread_impl.h
index 3890bb5..1f82789 100644
--- a/fusl/src/internal/pthread_impl.h
+++ b/fusl/src/internal/pthread_impl.h
@@ -13,58 +13,58 @@
 #define pthread __pthread
 
 struct pthread {
-	struct pthread *self;
-	void **dtv, *unused1, *unused2;
-	uintptr_t sysinfo;
-	uintptr_t canary, canary2;
-	pid_t tid, pid;
-	int tsd_used, errno_val;
-	volatile int cancel, canceldisable, cancelasync;
-	int detached;
-	unsigned char *map_base;
-	size_t map_size;
-	void *stack;
-	size_t stack_size;
-	void *start_arg;
-	void *(*start)(void *);
-	void *result;
-	struct __ptcb *cancelbuf;
-	void **tsd;
-	pthread_attr_t attr;
-	volatile int dead;
-	struct {
-		volatile void *volatile head;
-		long off;
-		volatile void *volatile pending;
-	} robust_list;
-	int unblock_cancel;
-	volatile int timer_id;
-	locale_t locale;
-	volatile int killlock[2];
-	volatile int exitlock[2];
-	volatile int startlock[2];
-	unsigned long sigmask[_NSIG/8/sizeof(long)];
-	char *dlerror_buf;
-	int dlerror_flag;
-	void *stdio_locks;
-	uintptr_t canary_at_end;
-	void **dtv_copy;
+  struct pthread* self;
+  void **dtv, *unused1, *unused2;
+  uintptr_t sysinfo;
+  uintptr_t canary, canary2;
+  pid_t tid, pid;
+  int tsd_used, errno_val;
+  volatile int cancel, canceldisable, cancelasync;
+  int detached;
+  unsigned char* map_base;
+  size_t map_size;
+  void* stack;
+  size_t stack_size;
+  void* start_arg;
+  void* (*start)(void*);
+  void* result;
+  struct __ptcb* cancelbuf;
+  void** tsd;
+  pthread_attr_t attr;
+  volatile int dead;
+  struct {
+    volatile void* volatile head;
+    long off;
+    volatile void* volatile pending;
+  } robust_list;
+  int unblock_cancel;
+  volatile int timer_id;
+  locale_t locale;
+  volatile int killlock[2];
+  volatile int exitlock[2];
+  volatile int startlock[2];
+  unsigned long sigmask[_NSIG / 8 / sizeof(long)];
+  char* dlerror_buf;
+  int dlerror_flag;
+  void* stdio_locks;
+  uintptr_t canary_at_end;
+  void** dtv_copy;
 };
 
 struct __timer {
-	int timerid;
-	pthread_t thread;
+  int timerid;
+  pthread_t thread;
 };
 
-#define __SU (sizeof(size_t)/sizeof(int))
+#define __SU (sizeof(size_t) / sizeof(int))
 
 #define _a_stacksize __u.__s[0]
 #define _a_guardsize __u.__s[1]
 #define _a_stackaddr __u.__s[2]
-#define _a_detach __u.__i[3*__SU+0]
-#define _a_sched __u.__i[3*__SU+1]
-#define _a_policy __u.__i[3*__SU+2]
-#define _a_prio __u.__i[3*__SU+3]
+#define _a_detach __u.__i[3 * __SU + 0]
+#define _a_sched __u.__i[3 * __SU + 1]
+#define _a_policy __u.__i[3 * __SU + 2]
+#define _a_prio __u.__i[3 * __SU + 3]
 #define _m_type __u.__i[0]
 #define _m_lock __u.__vi[1]
 #define _m_waiters __u.__vi[2]
@@ -102,45 +102,48 @@
 #define SIGCANCEL 33
 #define SIGSYNCCALL 34
 
-#define SIGALL_SET ((sigset_t *)(const unsigned long long [2]){ -1,-1 })
-#define SIGPT_SET \
-	((sigset_t *)(const unsigned long [_NSIG/8/sizeof(long)]){ \
-	[sizeof(long)==4] = 3UL<<(32*(sizeof(long)>4)) })
+#define SIGALL_SET ((sigset_t*)(const unsigned long long[2]){-1, -1})
+#define SIGPT_SET                                                              \
+  ((sigset_t*)(const unsigned long[_NSIG / 8 /                                 \
+                                   sizeof(long)]){[sizeof(long) == 4] =        \
+                                                      3UL                      \
+                                                      << (32 * (sizeof(long) > \
+                                                                4))})
 #define SIGTIMER_SET \
-	((sigset_t *)(const unsigned long [_NSIG/8/sizeof(long)]){ \
-	 0x80000000 })
+  ((sigset_t*)(const unsigned long[_NSIG / 8 / sizeof(long)]){0x80000000})
 
 pthread_t __pthread_self_init(void);
 
-int __clone(int (*)(void *), void *, int, void *, ...);
-int __set_thread_area(void *);
-int __libc_sigaction(int, const struct sigaction *, struct sigaction *);
-int __libc_sigprocmask(int, const sigset_t *, sigset_t *);
-void __lock(volatile int *);
-void __unmapself(void *, size_t);
+int __clone(int (*)(void*), void*, int, void*, ...);
+int __set_thread_area(void*);
+int __libc_sigaction(int, const struct sigaction*, struct sigaction*);
+int __libc_sigprocmask(int, const sigset_t*, sigset_t*);
+void __lock(volatile int*);
+void __unmapself(void*, size_t);
 
 void __vm_wait(void);
 void __vm_lock(void);
 void __vm_unlock(void);
 
-int __timedwait(volatile int *, int, clockid_t, const struct timespec *, int);
-int __timedwait_cp(volatile int *, int, clockid_t, const struct timespec *, int);
-void __wait(volatile int *, volatile int *, int, int);
-static inline void __wake(volatile void *addr, int cnt, int priv)
-{
-	if (priv) priv = 128;
-	if (cnt<0) cnt = INT_MAX;
-	__syscall(SYS_futex, addr, FUTEX_WAKE|priv, cnt) != -ENOSYS ||
-	__syscall(SYS_futex, addr, FUTEX_WAKE, cnt);
+int __timedwait(volatile int*, int, clockid_t, const struct timespec*, int);
+int __timedwait_cp(volatile int*, int, clockid_t, const struct timespec*, int);
+void __wait(volatile int*, volatile int*, int, int);
+static inline void __wake(volatile void* addr, int cnt, int priv) {
+  if (priv)
+    priv = 128;
+  if (cnt < 0)
+    cnt = INT_MAX;
+  __syscall(SYS_futex, addr, FUTEX_WAKE | priv, cnt) != -ENOSYS ||
+      __syscall(SYS_futex, addr, FUTEX_WAKE, cnt);
 }
 
 void __acquire_ptc(void);
 void __release_ptc(void);
 void __inhibit_ptc(void);
 
-void __block_all_sigs(void *);
-void __block_app_sigs(void *);
-void __restore_sigs(void *);
+void __block_all_sigs(void*);
+void __block_app_sigs(void*);
+void __restore_sigs(void*);
 
 #define DEFAULT_STACK_SIZE 81920
 #define DEFAULT_GUARD_SIZE PAGE_SIZE
diff --git a/fusl/src/internal/shgetc.c b/fusl/src/internal/shgetc.c
index 87e96ea..734755b 100644
--- a/fusl/src/internal/shgetc.c
+++ b/fusl/src/internal/shgetc.c
@@ -1,27 +1,27 @@
 #include "shgetc.h"
 
-void __shlim(FILE *f, off_t lim)
-{
-	f->shlim = lim;
-	f->shcnt = f->rend - f->rpos;
-	if (lim && f->shcnt > lim)
-		f->shend = f->rpos + lim;
-	else
-		f->shend = f->rend;
+void __shlim(FILE* f, off_t lim) {
+  f->shlim = lim;
+  f->shcnt = f->rend - f->rpos;
+  if (lim && f->shcnt > lim)
+    f->shend = f->rpos + lim;
+  else
+    f->shend = f->rend;
 }
 
-int __shgetc(FILE *f)
-{
-	int c;
-	if ((f->shlim && f->shcnt >= f->shlim) || (c=__uflow(f)) < 0) {
-		f->shend = 0;
-		return EOF;
-	}
-	if (f->shlim && f->rend - f->rpos > f->shlim - f->shcnt - 1)
-		f->shend = f->rpos + (f->shlim - f->shcnt - 1);
-	else
-		f->shend = f->rend;
-	if (f->rend) f->shcnt += f->rend - f->rpos + 1;
-	if (f->rpos[-1] != c) f->rpos[-1] = c;
-	return c;
+int __shgetc(FILE* f) {
+  int c;
+  if ((f->shlim && f->shcnt >= f->shlim) || (c = __uflow(f)) < 0) {
+    f->shend = 0;
+    return EOF;
+  }
+  if (f->shlim && f->rend - f->rpos > f->shlim - f->shcnt - 1)
+    f->shend = f->rpos + (f->shlim - f->shcnt - 1);
+  else
+    f->shend = f->rend;
+  if (f->rend)
+    f->shcnt += f->rend - f->rpos + 1;
+  if (f->rpos[-1] != c)
+    f->rpos[-1] = c;
+  return c;
 }
diff --git a/fusl/src/internal/shgetc.h b/fusl/src/internal/shgetc.h
index 7beb8ce..96c2780 100644
--- a/fusl/src/internal/shgetc.h
+++ b/fusl/src/internal/shgetc.h
@@ -1,7 +1,7 @@
 #include "stdio_impl.h"
 
-void __shlim(FILE *, off_t);
-int __shgetc(FILE *);
+void __shlim(FILE*, off_t);
+int __shgetc(FILE*);
 
 #define shcnt(f) ((f)->shcnt + ((f)->rpos - (f)->rend))
 #define shlim(f, lim) __shlim((f), (lim))
diff --git a/fusl/src/internal/stdio_impl.h b/fusl/src/internal/stdio_impl.h
index 7cdf729..ffbe095 100644
--- a/fusl/src/internal/stdio_impl.h
+++ b/fusl/src/internal/stdio_impl.h
@@ -7,9 +7,12 @@
 
 #define UNGET 8
 
-#define FFINALLOCK(f) ((f)->lock>=0 ? __lockfile((f)) : 0)
-#define FLOCK(f) int __need_unlock = ((f)->lock>=0 ? __lockfile((f)) : 0)
-#define FUNLOCK(f) if (__need_unlock) __unlockfile((f)); else
+#define FFINALLOCK(f) ((f)->lock >= 0 ? __lockfile((f)) : 0)
+#define FLOCK(f) int __need_unlock = ((f)->lock >= 0 ? __lockfile((f)) : 0)
+#define FUNLOCK(f)     \
+  if (__need_unlock)   \
+    __unlockfile((f)); \
+  else
 
 #define F_PERM 1
 #define F_NORD 4
@@ -20,78 +23,78 @@
 #define F_APP 128
 
 struct _IO_FILE {
-	unsigned flags;
-	unsigned char *rpos, *rend;
-	int (*close)(FILE *);
-	unsigned char *wend, *wpos;
-	unsigned char *mustbezero_1;
-	unsigned char *wbase;
-	size_t (*read)(FILE *, unsigned char *, size_t);
-	size_t (*write)(FILE *, const unsigned char *, size_t);
-	off_t (*seek)(FILE *, off_t, int);
-	unsigned char *buf;
-	size_t buf_size;
-	FILE *prev, *next;
-	int fd;
-	int pipe_pid;
-	long lockcount;
-	short dummy3;
-	signed char mode;
-	signed char lbf;
-	volatile int lock;
-	volatile int waiters;
-	void *cookie;
-	off_t off;
-	char *getln_buf;
-	void *mustbezero_2;
-	unsigned char *shend;
-	off_t shlim, shcnt;
-	FILE *prev_locked, *next_locked;
-	struct __locale_struct *locale;
+  unsigned flags;
+  unsigned char *rpos, *rend;
+  int (*close)(FILE*);
+  unsigned char *wend, *wpos;
+  unsigned char* mustbezero_1;
+  unsigned char* wbase;
+  size_t (*read)(FILE*, unsigned char*, size_t);
+  size_t (*write)(FILE*, const unsigned char*, size_t);
+  off_t (*seek)(FILE*, off_t, int);
+  unsigned char* buf;
+  size_t buf_size;
+  FILE *prev, *next;
+  int fd;
+  int pipe_pid;
+  long lockcount;
+  short dummy3;
+  signed char mode;
+  signed char lbf;
+  volatile int lock;
+  volatile int waiters;
+  void* cookie;
+  off_t off;
+  char* getln_buf;
+  void* mustbezero_2;
+  unsigned char* shend;
+  off_t shlim, shcnt;
+  FILE *prev_locked, *next_locked;
+  struct __locale_struct* locale;
 };
 
-size_t __stdio_read(FILE *, unsigned char *, size_t);
-size_t __stdio_write(FILE *, const unsigned char *, size_t);
-size_t __stdout_write(FILE *, const unsigned char *, size_t);
-off_t __stdio_seek(FILE *, off_t, int);
-int __stdio_close(FILE *);
+size_t __stdio_read(FILE*, unsigned char*, size_t);
+size_t __stdio_write(FILE*, const unsigned char*, size_t);
+size_t __stdout_write(FILE*, const unsigned char*, size_t);
+off_t __stdio_seek(FILE*, off_t, int);
+int __stdio_close(FILE*);
 
-size_t __string_read(FILE *, unsigned char *, size_t);
+size_t __string_read(FILE*, unsigned char*, size_t);
 
-int __toread(FILE *);
-int __towrite(FILE *);
+int __toread(FILE*);
+int __towrite(FILE*);
 
-#if defined(__PIC__) && (100*__GNUC__+__GNUC_MINOR__ >= 303)
+#if defined(__PIC__) && (100 * __GNUC__ + __GNUC_MINOR__ >= 303)
 __attribute__((visibility("protected")))
 #endif
 int __overflow(FILE *, int), __uflow(FILE *);
 
-int __fseeko(FILE *, off_t, int);
-int __fseeko_unlocked(FILE *, off_t, int);
-off_t __ftello(FILE *);
-off_t __ftello_unlocked(FILE *);
-size_t __fwritex(const unsigned char *, size_t, FILE *);
-int __putc_unlocked(int, FILE *);
+int __fseeko(FILE*, off_t, int);
+int __fseeko_unlocked(FILE*, off_t, int);
+off_t __ftello(FILE*);
+off_t __ftello_unlocked(FILE*);
+size_t __fwritex(const unsigned char*, size_t, FILE*);
+int __putc_unlocked(int, FILE*);
 
-FILE *__fdopen(int, const char *);
-int __fmodeflags(const char *);
+FILE* __fdopen(int, const char*);
+int __fmodeflags(const char*);
 
-FILE *__ofl_add(FILE *f);
-FILE **__ofl_lock(void);
+FILE* __ofl_add(FILE* f);
+FILE** __ofl_lock(void);
 void __ofl_unlock(void);
 
 #define feof(f) ((f)->flags & F_EOF)
 #define ferror(f) ((f)->flags & F_ERR)
 
-#define getc_unlocked(f) \
-	( ((f)->rpos < (f)->rend) ? *(f)->rpos++ : __uflow((f)) )
+#define getc_unlocked(f) (((f)->rpos < (f)->rend) ? *(f)->rpos++ : __uflow((f)))
 
-#define putc_unlocked(c, f) \
-	( ((unsigned char)(c)!=(f)->lbf && (f)->wpos<(f)->wend) \
-	? *(f)->wpos++ = (c) : __overflow((f),(c)) )
+#define putc_unlocked(c, f)                                  \
+  (((unsigned char)(c) != (f)->lbf && (f)->wpos < (f)->wend) \
+       ? *(f)->wpos++ = (c)                                  \
+       : __overflow((f), (c)))
 
 /* Caller-allocated FILE * operations */
-FILE *__fopen_rb_ca(const char *, FILE *, unsigned char *, size_t);
-int __fclose_ca(FILE *);
+FILE* __fopen_rb_ca(const char*, FILE*, unsigned char*, size_t);
+int __fclose_ca(FILE*);
 
 #endif
diff --git a/fusl/src/internal/syscall.h b/fusl/src/internal/syscall.h
index ff3cf53..56ed328 100644
--- a/fusl/src/internal/syscall.h
+++ b/fusl/src/internal/syscall.h
@@ -13,64 +13,86 @@
 #endif
 
 #ifndef __scc
-#define __scc(X) ((long) (X))
+#define __scc(X) ((long)(X))
 typedef long syscall_arg_t;
 #endif
 
-__attribute__((visibility("hidden")))
-long __syscall_ret(unsigned long), __syscall(syscall_arg_t, ...),
-	__syscall_cp(syscall_arg_t, syscall_arg_t, syscall_arg_t, syscall_arg_t,
-	             syscall_arg_t, syscall_arg_t, syscall_arg_t);
+__attribute__((visibility("hidden"))) long __syscall_ret(unsigned long),
+    __syscall(syscall_arg_t, ...), __syscall_cp(syscall_arg_t,
+                                                syscall_arg_t,
+                                                syscall_arg_t,
+                                                syscall_arg_t,
+                                                syscall_arg_t,
+                                                syscall_arg_t,
+                                                syscall_arg_t);
 
 #ifdef SYSCALL_NO_INLINE
 #define __syscall0(n) (__syscall)(n)
-#define __syscall1(n,a) (__syscall)(n,__scc(a))
-#define __syscall2(n,a,b) (__syscall)(n,__scc(a),__scc(b))
-#define __syscall3(n,a,b,c) (__syscall)(n,__scc(a),__scc(b),__scc(c))
-#define __syscall4(n,a,b,c,d) (__syscall)(n,__scc(a),__scc(b),__scc(c),__scc(d))
-#define __syscall5(n,a,b,c,d,e) (__syscall)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e))
-#define __syscall6(n,a,b,c,d,e,f) (__syscall)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f))
+#define __syscall1(n, a) (__syscall)(n, __scc(a))
+#define __syscall2(n, a, b) (__syscall)(n, __scc(a), __scc(b))
+#define __syscall3(n, a, b, c) (__syscall)(n, __scc(a), __scc(b), __scc(c))
+#define __syscall4(n, a, b, c, d) \
+  (__syscall)(n, __scc(a), __scc(b), __scc(c), __scc(d))
+#define __syscall5(n, a, b, c, d, e) \
+  (__syscall)(n, __scc(a), __scc(b), __scc(c), __scc(d), __scc(e))
+#define __syscall6(n, a, b, c, d, e, f) \
+  (__syscall)(n, __scc(a), __scc(b), __scc(c), __scc(d), __scc(e), __scc(f))
 #else
-#define __syscall1(n,a) __syscall1(n,__scc(a))
-#define __syscall2(n,a,b) __syscall2(n,__scc(a),__scc(b))
-#define __syscall3(n,a,b,c) __syscall3(n,__scc(a),__scc(b),__scc(c))
-#define __syscall4(n,a,b,c,d) __syscall4(n,__scc(a),__scc(b),__scc(c),__scc(d))
-#define __syscall5(n,a,b,c,d,e) __syscall5(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e))
-#define __syscall6(n,a,b,c,d,e,f) __syscall6(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f))
+#define __syscall1(n, a) __syscall1(n, __scc(a))
+#define __syscall2(n, a, b) __syscall2(n, __scc(a), __scc(b))
+#define __syscall3(n, a, b, c) __syscall3(n, __scc(a), __scc(b), __scc(c))
+#define __syscall4(n, a, b, c, d) \
+  __syscall4(n, __scc(a), __scc(b), __scc(c), __scc(d))
+#define __syscall5(n, a, b, c, d, e) \
+  __syscall5(n, __scc(a), __scc(b), __scc(c), __scc(d), __scc(e))
+#define __syscall6(n, a, b, c, d, e, f) \
+  __syscall6(n, __scc(a), __scc(b), __scc(c), __scc(d), __scc(e), __scc(f))
 #endif
-#define __syscall7(n,a,b,c,d,e,f,g) (__syscall)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f),__scc(g))
+#define __syscall7(n, a, b, c, d, e, f, g)                                   \
+  (__syscall)(n, __scc(a), __scc(b), __scc(c), __scc(d), __scc(e), __scc(f), \
+              __scc(g))
 
-#define __SYSCALL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n
-#define __SYSCALL_NARGS(...) __SYSCALL_NARGS_X(__VA_ARGS__,7,6,5,4,3,2,1,0,)
-#define __SYSCALL_CONCAT_X(a,b) a##b
-#define __SYSCALL_CONCAT(a,b) __SYSCALL_CONCAT_X(a,b)
-#define __SYSCALL_DISP(b,...) __SYSCALL_CONCAT(b,__SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__)
+#define __SYSCALL_NARGS_X(a, b, c, d, e, f, g, h, n, ...) n
+#define __SYSCALL_NARGS(...) \
+  __SYSCALL_NARGS_X(__VA_ARGS__, 7, 6, 5, 4, 3, 2, 1, 0, )
+#define __SYSCALL_CONCAT_X(a, b) a##b
+#define __SYSCALL_CONCAT(a, b) __SYSCALL_CONCAT_X(a, b)
+#define __SYSCALL_DISP(b, ...) \
+  __SYSCALL_CONCAT(b, __SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__)
 
-#define __syscall(...) __SYSCALL_DISP(__syscall,__VA_ARGS__)
+#define __syscall(...) __SYSCALL_DISP(__syscall, __VA_ARGS__)
 #define syscall(...) __syscall_ret(__syscall(__VA_ARGS__))
 
 #define socketcall __socketcall
 #define socketcall_cp __socketcall_cp
 
-#define __syscall_cp0(n) (__syscall_cp)(n,0,0,0,0,0,0)
-#define __syscall_cp1(n,a) (__syscall_cp)(n,__scc(a),0,0,0,0,0)
-#define __syscall_cp2(n,a,b) (__syscall_cp)(n,__scc(a),__scc(b),0,0,0,0)
-#define __syscall_cp3(n,a,b,c) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),0,0,0)
-#define __syscall_cp4(n,a,b,c,d) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),0,0)
-#define __syscall_cp5(n,a,b,c,d,e) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),0)
-#define __syscall_cp6(n,a,b,c,d,e,f) (__syscall_cp)(n,__scc(a),__scc(b),__scc(c),__scc(d),__scc(e),__scc(f))
+#define __syscall_cp0(n) (__syscall_cp)(n, 0, 0, 0, 0, 0, 0)
+#define __syscall_cp1(n, a) (__syscall_cp)(n, __scc(a), 0, 0, 0, 0, 0)
+#define __syscall_cp2(n, a, b) (__syscall_cp)(n, __scc(a), __scc(b), 0, 0, 0, 0)
+#define __syscall_cp3(n, a, b, c) \
+  (__syscall_cp)(n, __scc(a), __scc(b), __scc(c), 0, 0, 0)
+#define __syscall_cp4(n, a, b, c, d) \
+  (__syscall_cp)(n, __scc(a), __scc(b), __scc(c), __scc(d), 0, 0)
+#define __syscall_cp5(n, a, b, c, d, e) \
+  (__syscall_cp)(n, __scc(a), __scc(b), __scc(c), __scc(d), __scc(e), 0)
+#define __syscall_cp6(n, a, b, c, d, e, f) \
+  (__syscall_cp)(n, __scc(a), __scc(b), __scc(c), __scc(d), __scc(e), __scc(f))
 
-#define __syscall_cp(...) __SYSCALL_DISP(__syscall_cp,__VA_ARGS__)
+#define __syscall_cp(...) __SYSCALL_DISP(__syscall_cp, __VA_ARGS__)
 #define syscall_cp(...) __syscall_ret(__syscall_cp(__VA_ARGS__))
 
 #ifndef SYSCALL_USE_SOCKETCALL
-#define __socketcall(nm,a,b,c,d,e,f) syscall(SYS_##nm, a, b, c, d, e, f)
-#define __socketcall_cp(nm,a,b,c,d,e,f) syscall_cp(SYS_##nm, a, b, c, d, e, f)
+#define __socketcall(nm, a, b, c, d, e, f) syscall(SYS_##nm, a, b, c, d, e, f)
+#define __socketcall_cp(nm, a, b, c, d, e, f) \
+  syscall_cp(SYS_##nm, a, b, c, d, e, f)
 #else
-#define __socketcall(nm,a,b,c,d,e,f) syscall(SYS_socketcall, __SC_##nm, \
-    ((long [6]){ (long)a, (long)b, (long)c, (long)d, (long)e, (long)f }))
-#define __socketcall_cp(nm,a,b,c,d,e,f) syscall_cp(SYS_socketcall, __SC_##nm, \
-    ((long [6]){ (long)a, (long)b, (long)c, (long)d, (long)e, (long)f }))
+#define __socketcall(nm, a, b, c, d, e, f) \
+  syscall(SYS_socketcall, __SC_##nm,       \
+          ((long[6]){(long)a, (long)b, (long)c, (long)d, (long)e, (long)f}))
+#define __socketcall_cp(nm, a, b, c, d, e, f) \
+  syscall_cp(                                 \
+      SYS_socketcall, __SC_##nm,              \
+      ((long[6]){(long)a, (long)b, (long)c, (long)d, (long)e, (long)f}))
 #endif
 
 /* fixup legacy 16-bit junk */
@@ -116,7 +138,6 @@
 #define SYS_setfsgid SYS_setfsgid32
 #endif
 
-
 /* fixup legacy 32-bit-vs-lfs64 junk */
 
 #ifdef SYS_fcntl64
@@ -201,43 +222,50 @@
 
 /* socketcall calls */
 
-#define __SC_socket      1
-#define __SC_bind        2
-#define __SC_connect     3
-#define __SC_listen      4
-#define __SC_accept      5
+#define __SC_socket 1
+#define __SC_bind 2
+#define __SC_connect 3
+#define __SC_listen 4
+#define __SC_accept 5
 #define __SC_getsockname 6
 #define __SC_getpeername 7
-#define __SC_socketpair  8
-#define __SC_send        9
-#define __SC_recv        10
-#define __SC_sendto      11
-#define __SC_recvfrom    12
-#define __SC_shutdown    13
-#define __SC_setsockopt  14
-#define __SC_getsockopt  15
-#define __SC_sendmsg     16
-#define __SC_recvmsg     17
-#define __SC_accept4     18
-#define __SC_recvmmsg    19
-#define __SC_sendmmsg    20
+#define __SC_socketpair 8
+#define __SC_send 9
+#define __SC_recv 10
+#define __SC_sendto 11
+#define __SC_recvfrom 12
+#define __SC_shutdown 13
+#define __SC_setsockopt 14
+#define __SC_getsockopt 15
+#define __SC_sendmsg 16
+#define __SC_recvmsg 17
+#define __SC_accept4 18
+#define __SC_recvmmsg 19
+#define __SC_sendmmsg 20
 
 #ifdef SYS_open
-#define __sys_open2(x,pn,fl) __syscall2(SYS_open, pn, (fl)|O_LARGEFILE)
-#define __sys_open3(x,pn,fl,mo) __syscall3(SYS_open, pn, (fl)|O_LARGEFILE, mo)
-#define __sys_open_cp2(x,pn,fl) __syscall_cp2(SYS_open, pn, (fl)|O_LARGEFILE)
-#define __sys_open_cp3(x,pn,fl,mo) __syscall_cp3(SYS_open, pn, (fl)|O_LARGEFILE, mo)
+#define __sys_open2(x, pn, fl) __syscall2(SYS_open, pn, (fl) | O_LARGEFILE)
+#define __sys_open3(x, pn, fl, mo) \
+  __syscall3(SYS_open, pn, (fl) | O_LARGEFILE, mo)
+#define __sys_open_cp2(x, pn, fl) \
+  __syscall_cp2(SYS_open, pn, (fl) | O_LARGEFILE)
+#define __sys_open_cp3(x, pn, fl, mo) \
+  __syscall_cp3(SYS_open, pn, (fl) | O_LARGEFILE, mo)
 #else
-#define __sys_open2(x,pn,fl) __syscall3(SYS_openat, AT_FDCWD, pn, (fl)|O_LARGEFILE)
-#define __sys_open3(x,pn,fl,mo) __syscall4(SYS_openat, AT_FDCWD, pn, (fl)|O_LARGEFILE, mo)
-#define __sys_open_cp2(x,pn,fl) __syscall_cp3(SYS_openat, AT_FDCWD, pn, (fl)|O_LARGEFILE)
-#define __sys_open_cp3(x,pn,fl,mo) __syscall_cp4(SYS_openat, AT_FDCWD, pn, (fl)|O_LARGEFILE, mo)
+#define __sys_open2(x, pn, fl) \
+  __syscall3(SYS_openat, AT_FDCWD, pn, (fl) | O_LARGEFILE)
+#define __sys_open3(x, pn, fl, mo) \
+  __syscall4(SYS_openat, AT_FDCWD, pn, (fl) | O_LARGEFILE, mo)
+#define __sys_open_cp2(x, pn, fl) \
+  __syscall_cp3(SYS_openat, AT_FDCWD, pn, (fl) | O_LARGEFILE)
+#define __sys_open_cp3(x, pn, fl, mo) \
+  __syscall_cp4(SYS_openat, AT_FDCWD, pn, (fl) | O_LARGEFILE, mo)
 #endif
 
-#define __sys_open(...) __SYSCALL_DISP(__sys_open,,__VA_ARGS__)
+#define __sys_open(...) __SYSCALL_DISP(__sys_open, , __VA_ARGS__)
 #define sys_open(...) __syscall_ret(__sys_open(__VA_ARGS__))
 
-#define __sys_open_cp(...) __SYSCALL_DISP(__sys_open_cp,,__VA_ARGS__)
+#define __sys_open_cp(...) __SYSCALL_DISP(__sys_open_cp, , __VA_ARGS__)
 #define sys_open_cp(...) __syscall_ret(__sys_open_cp(__VA_ARGS__))
 
 #endif
diff --git a/fusl/src/internal/syscall_ret.c b/fusl/src/internal/syscall_ret.c
index a3f4713..8e2aff2 100644
--- a/fusl/src/internal/syscall_ret.c
+++ b/fusl/src/internal/syscall_ret.c
@@ -1,11 +1,10 @@
 #include <errno.h>
 #include "syscall.h"
 
-long __syscall_ret(unsigned long r)
-{
-	if (r > -4096UL) {
-		errno = -r;
-		return -1;
-	}
-	return r;
+long __syscall_ret(unsigned long r) {
+  if (r > -4096UL) {
+    errno = -r;
+    return -1;
+  }
+  return r;
 }
diff --git a/fusl/src/internal/vdso.c b/fusl/src/internal/vdso.c
index 6ae0212..30ebe59 100644
--- a/fusl/src/internal/vdso.c
+++ b/fusl/src/internal/vdso.c
@@ -21,71 +21,87 @@
 typedef Elf64_Verdaux Verdaux;
 #endif
 
-static int checkver(Verdef *def, int vsym, const char *vername, char *strings)
-{
-	vsym &= 0x7fff;
-	for (;;) {
-		if (!(def->vd_flags & VER_FLG_BASE)
-		  && (def->vd_ndx & 0x7fff) == vsym)
-			break;
-		if (def->vd_next == 0)
-			return 0;
-		def = (Verdef *)((char *)def + def->vd_next);
-	}
-	Verdaux *aux = (Verdaux *)((char *)def + def->vd_aux);
-	return !strcmp(vername, strings + aux->vda_name);
+static int checkver(Verdef* def, int vsym, const char* vername, char* strings) {
+  vsym &= 0x7fff;
+  for (;;) {
+    if (!(def->vd_flags & VER_FLG_BASE) && (def->vd_ndx & 0x7fff) == vsym)
+      break;
+    if (def->vd_next == 0)
+      return 0;
+    def = (Verdef*)((char*)def + def->vd_next);
+  }
+  Verdaux* aux = (Verdaux*)((char*)def + def->vd_aux);
+  return !strcmp(vername, strings + aux->vda_name);
 }
 
-#define OK_TYPES (1<<STT_NOTYPE | 1<<STT_OBJECT | 1<<STT_FUNC | 1<<STT_COMMON)
-#define OK_BINDS (1<<STB_GLOBAL | 1<<STB_WEAK | 1<<STB_GNU_UNIQUE)
+#define OK_TYPES \
+  (1 << STT_NOTYPE | 1 << STT_OBJECT | 1 << STT_FUNC | 1 << STT_COMMON)
+#define OK_BINDS (1 << STB_GLOBAL | 1 << STB_WEAK | 1 << STB_GNU_UNIQUE)
 
-void *__vdsosym(const char *vername, const char *name)
-{
-	size_t i;
-	for (i=0; libc.auxv[i] != AT_SYSINFO_EHDR; i+=2)
-		if (!libc.auxv[i]) return 0;
-	Ehdr *eh = (void *)libc.auxv[i+1];
-	Phdr *ph = (void *)((char *)eh + eh->e_phoff);
-	size_t *dynv=0, base=-1;
-	for (i=0; i<eh->e_phnum; i++, ph=(void *)((char *)ph+eh->e_phentsize)) {
-		if (ph->p_type == PT_LOAD)
-			base = (size_t)eh + ph->p_offset - ph->p_vaddr;
-		else if (ph->p_type == PT_DYNAMIC)
-			dynv = (void *)((char *)eh + ph->p_offset);
-	}
-	if (!dynv || base==(size_t)-1) return 0;
+void* __vdsosym(const char* vername, const char* name) {
+  size_t i;
+  for (i = 0; libc.auxv[i] != AT_SYSINFO_EHDR; i += 2)
+    if (!libc.auxv[i])
+      return 0;
+  Ehdr* eh = (void*)libc.auxv[i + 1];
+  Phdr* ph = (void*)((char*)eh + eh->e_phoff);
+  size_t *dynv = 0, base = -1;
+  for (i = 0; i < eh->e_phnum; i++, ph = (void*)((char*)ph + eh->e_phentsize)) {
+    if (ph->p_type == PT_LOAD)
+      base = (size_t)eh + ph->p_offset - ph->p_vaddr;
+    else if (ph->p_type == PT_DYNAMIC)
+      dynv = (void*)((char*)eh + ph->p_offset);
+  }
+  if (!dynv || base == (size_t)-1)
+    return 0;
 
-	char *strings = 0;
-	Sym *syms = 0;
-	uint32_t *hashtab = 0;
-	uint16_t *versym = 0;
-	Verdef *verdef = 0;
-	
-	for (i=0; dynv[i]; i+=2) {
-		void *p = (void *)(base + dynv[i+1]);
-		switch(dynv[i]) {
-		case DT_STRTAB: strings = p; break;
-		case DT_SYMTAB: syms = p; break;
-		case DT_HASH: hashtab = p; break;
-		case DT_VERSYM: versym = p; break;
-		case DT_VERDEF: verdef = p; break;
-		}
-	}	
+  char* strings = 0;
+  Sym* syms = 0;
+  uint32_t* hashtab = 0;
+  uint16_t* versym = 0;
+  Verdef* verdef = 0;
 
-	if (!strings || !syms || !hashtab) return 0;
-	if (!verdef) versym = 0;
+  for (i = 0; dynv[i]; i += 2) {
+    void* p = (void*)(base + dynv[i + 1]);
+    switch (dynv[i]) {
+      case DT_STRTAB:
+        strings = p;
+        break;
+      case DT_SYMTAB:
+        syms = p;
+        break;
+      case DT_HASH:
+        hashtab = p;
+        break;
+      case DT_VERSYM:
+        versym = p;
+        break;
+      case DT_VERDEF:
+        verdef = p;
+        break;
+    }
+  }
 
-	for (i=0; i<hashtab[1]; i++) {
-		if (!(1<<(syms[i].st_info&0xf) & OK_TYPES)) continue;
-		if (!(1<<(syms[i].st_info>>4) & OK_BINDS)) continue;
-		if (!syms[i].st_shndx) continue;
-		if (strcmp(name, strings+syms[i].st_name)) continue;
-		if (versym && !checkver(verdef, versym[i], vername, strings))
-			continue;
-		return (void *)(base + syms[i].st_value);
-	}
+  if (!strings || !syms || !hashtab)
+    return 0;
+  if (!verdef)
+    versym = 0;
 
-	return 0;
+  for (i = 0; i < hashtab[1]; i++) {
+    if (!(1 << (syms[i].st_info & 0xf) & OK_TYPES))
+      continue;
+    if (!(1 << (syms[i].st_info >> 4) & OK_BINDS))
+      continue;
+    if (!syms[i].st_shndx)
+      continue;
+    if (strcmp(name, strings + syms[i].st_name))
+      continue;
+    if (versym && !checkver(verdef, versym[i], vername, strings))
+      continue;
+    return (void*)(base + syms[i].st_value);
+  }
+
+  return 0;
 }
 
 #endif
diff --git a/fusl/src/internal/version.c b/fusl/src/internal/version.c
index dc044ec..811d35a 100644
--- a/fusl/src/internal/version.c
+++ b/fusl/src/internal/version.c
@@ -2,8 +2,6 @@
 
 static const char version[] = VERSION;
 
-__attribute__((__visibility__("hidden")))
-const char *__libc_get_version()
-{
-	return version;
+__attribute__((__visibility__("hidden"))) const char* __libc_get_version() {
+  return version;
 }
diff --git a/fusl/src/internal/vis.h b/fusl/src/internal/vis.h
index 35855fc..ef33bec 100644
--- a/fusl/src/internal/vis.h
+++ b/fusl/src/internal/vis.h
@@ -10,17 +10,17 @@
  * fail to support copy relocations for protected data, so exclude all
  * exported data symbols. */
 
-__attribute__((__visibility__("default")))
-extern struct _IO_FILE *const stdin, *const stdout, *const stderr;
+__attribute__((__visibility__("default"))) extern struct _IO_FILE *const stdin,
+    *const stdout, *const stderr;
 
-__attribute__((__visibility__("default")))
-extern int optind, opterr, optopt, optreset, __optreset, getdate_err, h_errno, daylight, __daylight, signgam, __signgam;
+__attribute__((__visibility__("default"))) extern int optind, opterr, optopt,
+    optreset, __optreset, getdate_err, h_errno, daylight, __daylight, signgam,
+    __signgam;
 
-__attribute__((__visibility__("default")))
-extern long timezone, __timezone;
+__attribute__((__visibility__("default"))) extern long timezone, __timezone;
 
-__attribute__((__visibility__("default")))
-extern char *optarg, **environ, **__environ, *tzname[2], *__tzname[2], *__progname, *__progname_full;
+__attribute__((__visibility__("default"))) extern char *optarg, **environ,
+    **__environ, *tzname[2], *__tzname[2], *__progname, *__progname_full;
 
 #pragma GCC visibility push(protected)
 
diff --git a/fusl/src/ipc/ftok.c b/fusl/src/ipc/ftok.c
index cd6002e..d905adc 100644
--- a/fusl/src/ipc/ftok.c
+++ b/fusl/src/ipc/ftok.c
@@ -1,10 +1,11 @@
 #include <sys/ipc.h>
 #include <sys/stat.h>
 
-key_t ftok(const char *path, int id)
-{
-	struct stat st;
-	if (stat(path, &st) < 0) return -1;
+key_t ftok(const char* path, int id) {
+  struct stat st;
+  if (stat(path, &st) < 0)
+    return -1;
 
-	return ((st.st_ino & 0xffff) | ((st.st_dev & 0xff) << 16) | ((id & 0xff) << 24));
+  return ((st.st_ino & 0xffff) | ((st.st_dev & 0xff) << 16) |
+          ((id & 0xff) << 24));
 }
diff --git a/fusl/src/ipc/ipc.h b/fusl/src/ipc/ipc.h
index 30ab939..874e58a 100644
--- a/fusl/src/ipc/ipc.h
+++ b/fusl/src/ipc/ipc.h
@@ -1,12 +1,12 @@
-#define IPCOP_semop      1
-#define IPCOP_semget     2
-#define IPCOP_semctl     3
+#define IPCOP_semop 1
+#define IPCOP_semget 2
+#define IPCOP_semctl 3
 #define IPCOP_semtimedop 4
-#define IPCOP_msgsnd    11
-#define IPCOP_msgrcv    12
-#define IPCOP_msgget    13
-#define IPCOP_msgctl    14
-#define IPCOP_shmat     21
-#define IPCOP_shmdt     22
-#define IPCOP_shmget    23
-#define IPCOP_shmctl    24
+#define IPCOP_msgsnd 11
+#define IPCOP_msgrcv 12
+#define IPCOP_msgget 13
+#define IPCOP_msgctl 14
+#define IPCOP_shmat 21
+#define IPCOP_shmdt 22
+#define IPCOP_shmget 23
+#define IPCOP_shmctl 24
diff --git a/fusl/src/ipc/msgctl.c b/fusl/src/ipc/msgctl.c
index 4372c71..ca2b19c 100644
--- a/fusl/src/ipc/msgctl.c
+++ b/fusl/src/ipc/msgctl.c
@@ -2,11 +2,10 @@
 #include "syscall.h"
 #include "ipc.h"
 
-int msgctl(int q, int cmd, struct msqid_ds *buf)
-{
+int msgctl(int q, int cmd, struct msqid_ds* buf) {
 #ifdef SYS_msgctl
-	return syscall(SYS_msgctl, q, cmd | IPC_64, buf);
+  return syscall(SYS_msgctl, q, cmd | IPC_64, buf);
 #else
-	return syscall(SYS_ipc, IPCOP_msgctl, q, cmd | IPC_64, 0, buf, 0);
+  return syscall(SYS_ipc, IPCOP_msgctl, q, cmd | IPC_64, 0, buf, 0);
 #endif
 }
diff --git a/fusl/src/ipc/msgget.c b/fusl/src/ipc/msgget.c
index 9dfbc4e..b5cad98 100644
--- a/fusl/src/ipc/msgget.c
+++ b/fusl/src/ipc/msgget.c
@@ -2,11 +2,10 @@
 #include "syscall.h"
 #include "ipc.h"
 
-int msgget(key_t k, int flag)
-{
+int msgget(key_t k, int flag) {
 #ifdef SYS_msgget
-	return syscall(SYS_msgget, k, flag);
+  return syscall(SYS_msgget, k, flag);
 #else
-	return syscall(SYS_ipc, IPCOP_msgget, k, flag);
+  return syscall(SYS_ipc, IPCOP_msgget, k, flag);
 #endif
 }
diff --git a/fusl/src/ipc/msgrcv.c b/fusl/src/ipc/msgrcv.c
index ed4a448..103ccfd 100644
--- a/fusl/src/ipc/msgrcv.c
+++ b/fusl/src/ipc/msgrcv.c
@@ -3,11 +3,11 @@
 #include "ipc.h"
 #include "libc.h"
 
-ssize_t msgrcv(int q, void *m, size_t len, long type, int flag)
-{
+ssize_t msgrcv(int q, void* m, size_t len, long type, int flag) {
 #ifdef SYS_msgrcv
-	return syscall_cp(SYS_msgrcv, q, m, len, type, flag);
+  return syscall_cp(SYS_msgrcv, q, m, len, type, flag);
 #else
-	return syscall_cp(SYS_ipc, IPCOP_msgrcv, q, len, flag, ((long[]){ (long)m, type }));
+  return syscall_cp(SYS_ipc, IPCOP_msgrcv, q, len, flag,
+                    ((long[]){(long)m, type}));
 #endif
 }
diff --git a/fusl/src/ipc/msgsnd.c b/fusl/src/ipc/msgsnd.c
index 23f4a4c..9d2e53b 100644
--- a/fusl/src/ipc/msgsnd.c
+++ b/fusl/src/ipc/msgsnd.c
@@ -3,11 +3,10 @@
 #include "ipc.h"
 #include "libc.h"
 
-int msgsnd(int q, const void *m, size_t len, int flag)
-{
+int msgsnd(int q, const void* m, size_t len, int flag) {
 #ifdef SYS_msgsnd
-	return syscall_cp(SYS_msgsnd, q, m, len, flag);
+  return syscall_cp(SYS_msgsnd, q, m, len, flag);
 #else
-	return syscall_cp(SYS_ipc, IPCOP_msgsnd, q, len, flag, m);
+  return syscall_cp(SYS_ipc, IPCOP_msgsnd, q, len, flag, m);
 #endif
 }
diff --git a/fusl/src/ipc/semctl.c b/fusl/src/ipc/semctl.c
index 673a9a8..132a267 100644
--- a/fusl/src/ipc/semctl.c
+++ b/fusl/src/ipc/semctl.c
@@ -4,25 +4,30 @@
 #include "ipc.h"
 
 union semun {
-	int val;
-	struct semid_ds *buf;
-	unsigned short *array;
+  int val;
+  struct semid_ds* buf;
+  unsigned short* array;
 };
 
-int semctl(int id, int num, int cmd, ...)
-{
-	union semun arg = {0};
-	va_list ap;
-	switch (cmd) {
-	case SETVAL: case GETALL: case SETALL: case IPC_STAT: case IPC_SET:
-	case IPC_INFO: case SEM_INFO: case SEM_STAT:
-		va_start(ap, cmd);
-		arg = va_arg(ap, union semun);
-		va_end(ap);
-	}
+int semctl(int id, int num, int cmd, ...) {
+  union semun arg = {0};
+  va_list ap;
+  switch (cmd) {
+    case SETVAL:
+    case GETALL:
+    case SETALL:
+    case IPC_STAT:
+    case IPC_SET:
+    case IPC_INFO:
+    case SEM_INFO:
+    case SEM_STAT:
+      va_start(ap, cmd);
+      arg = va_arg(ap, union semun);
+      va_end(ap);
+  }
 #ifdef SYS_semctl
-	return syscall(SYS_semctl, id, num, cmd | IPC_64, arg.buf);
+  return syscall(SYS_semctl, id, num, cmd | IPC_64, arg.buf);
 #else
-	return syscall(SYS_ipc, IPCOP_semctl, id, num, cmd | IPC_64, &arg.buf);
+  return syscall(SYS_ipc, IPCOP_semctl, id, num, cmd | IPC_64, &arg.buf);
 #endif
 }
diff --git a/fusl/src/ipc/semget.c b/fusl/src/ipc/semget.c
index c4a559d..119662f 100644
--- a/fusl/src/ipc/semget.c
+++ b/fusl/src/ipc/semget.c
@@ -4,16 +4,16 @@
 #include "syscall.h"
 #include "ipc.h"
 
-int semget(key_t key, int n, int fl)
-{
-	/* The kernel uses the wrong type for the sem_nsems member
-	 * of struct semid_ds, and thus might not check that the
-	 * n fits in the correct (per POSIX) userspace type, so
-	 * we have to check here. */
-	if (n > USHRT_MAX) return __syscall_ret(-EINVAL);
+int semget(key_t key, int n, int fl) {
+  /* The kernel uses the wrong type for the sem_nsems member
+   * of struct semid_ds, and thus might not check that the
+   * n fits in the correct (per POSIX) userspace type, so
+   * we have to check here. */
+  if (n > USHRT_MAX)
+    return __syscall_ret(-EINVAL);
 #ifdef SYS_semget
-	return syscall(SYS_semget, key, n, fl);
+  return syscall(SYS_semget, key, n, fl);
 #else
-	return syscall(SYS_ipc, IPCOP_semget, key, n, fl);
+  return syscall(SYS_ipc, IPCOP_semget, key, n, fl);
 #endif
 }
diff --git a/fusl/src/ipc/semop.c b/fusl/src/ipc/semop.c
index 8046e43..eb458a2 100644
--- a/fusl/src/ipc/semop.c
+++ b/fusl/src/ipc/semop.c
@@ -2,11 +2,10 @@
 #include "syscall.h"
 #include "ipc.h"
 
-int semop(int id, struct sembuf *buf, size_t n)
-{
+int semop(int id, struct sembuf* buf, size_t n) {
 #ifdef SYS_semop
-	return syscall(SYS_semop, id, buf, n);
+  return syscall(SYS_semop, id, buf, n);
 #else
-	return syscall(SYS_ipc, IPCOP_semop, id, n, 0, buf);
+  return syscall(SYS_ipc, IPCOP_semop, id, n, 0, buf);
 #endif
 }
diff --git a/fusl/src/ipc/semtimedop.c b/fusl/src/ipc/semtimedop.c
index b0c4cf9..65a2c7f 100644
--- a/fusl/src/ipc/semtimedop.c
+++ b/fusl/src/ipc/semtimedop.c
@@ -3,11 +3,13 @@
 #include "syscall.h"
 #include "ipc.h"
 
-int semtimedop(int id, struct sembuf *buf, size_t n, const struct timespec *ts)
-{
+int semtimedop(int id,
+               struct sembuf* buf,
+               size_t n,
+               const struct timespec* ts) {
 #ifdef SYS_semtimedop
-	return syscall(SYS_semtimedop, id, buf, n, ts);
+  return syscall(SYS_semtimedop, id, buf, n, ts);
 #else
-	return syscall(SYS_ipc, IPCOP_semtimedop, id, n, 0, buf, ts);
+  return syscall(SYS_ipc, IPCOP_semtimedop, id, n, 0, buf, ts);
 #endif
 }
diff --git a/fusl/src/ipc/shmat.c b/fusl/src/ipc/shmat.c
index 38db92f..06e050d 100644
--- a/fusl/src/ipc/shmat.c
+++ b/fusl/src/ipc/shmat.c
@@ -3,15 +3,13 @@
 #include "ipc.h"
 
 #ifdef SYS_shmat
-void *shmat(int id, const void *addr, int flag)
-{
-	return (void *)syscall(SYS_shmat, id, addr, flag);
+void* shmat(int id, const void* addr, int flag) {
+  return (void*)syscall(SYS_shmat, id, addr, flag);
 }
 #else
-void *shmat(int id, const void *addr, int flag)
-{
-	unsigned long ret;
-	ret = syscall(SYS_ipc, IPCOP_shmat, id, flag, &addr, addr);
-	return (ret > -(unsigned long)SHMLBA) ? (void *)ret : (void *)addr;
+void* shmat(int id, const void* addr, int flag) {
+  unsigned long ret;
+  ret = syscall(SYS_ipc, IPCOP_shmat, id, flag, &addr, addr);
+  return (ret > -(unsigned long)SHMLBA) ? (void*)ret : (void*)addr;
 }
 #endif
diff --git a/fusl/src/ipc/shmctl.c b/fusl/src/ipc/shmctl.c
index e2879f2..8eecf6f 100644
--- a/fusl/src/ipc/shmctl.c
+++ b/fusl/src/ipc/shmctl.c
@@ -2,11 +2,10 @@
 #include "syscall.h"
 #include "ipc.h"
 
-int shmctl(int id, int cmd, struct shmid_ds *buf)
-{
+int shmctl(int id, int cmd, struct shmid_ds* buf) {
 #ifdef SYS_shmctl
-	return syscall(SYS_shmctl, id, cmd | IPC_64, buf);
+  return syscall(SYS_shmctl, id, cmd | IPC_64, buf);
 #else
-	return syscall(SYS_ipc, IPCOP_shmctl, id, cmd | IPC_64, 0, buf, 0);
+  return syscall(SYS_ipc, IPCOP_shmctl, id, cmd | IPC_64, 0, buf, 0);
 #endif
 }
diff --git a/fusl/src/ipc/shmdt.c b/fusl/src/ipc/shmdt.c
index d4fac8f..266422e 100644
--- a/fusl/src/ipc/shmdt.c
+++ b/fusl/src/ipc/shmdt.c
@@ -2,11 +2,10 @@
 #include "syscall.h"
 #include "ipc.h"
 
-int shmdt(const void *addr)
-{
+int shmdt(const void* addr) {
 #ifdef SYS_shmdt
-	return syscall(SYS_shmdt, addr);
+  return syscall(SYS_shmdt, addr);
 #else
-	return syscall(SYS_ipc, IPCOP_shmdt, 0, 0, 0, addr);
+  return syscall(SYS_ipc, IPCOP_shmdt, 0, 0, 0, addr);
 #endif
 }
diff --git a/fusl/src/ipc/shmget.c b/fusl/src/ipc/shmget.c
index b44f9d6..bf5e0c1 100644
--- a/fusl/src/ipc/shmget.c
+++ b/fusl/src/ipc/shmget.c
@@ -3,12 +3,12 @@
 #include "syscall.h"
 #include "ipc.h"
 
-int shmget(key_t key, size_t size, int flag)
-{
-	if (size > PTRDIFF_MAX) size = SIZE_MAX;
+int shmget(key_t key, size_t size, int flag) {
+  if (size > PTRDIFF_MAX)
+    size = SIZE_MAX;
 #ifdef SYS_shmget
-	return syscall(SYS_shmget, key, size, flag);
+  return syscall(SYS_shmget, key, size, flag);
 #else
-	return syscall(SYS_ipc, IPCOP_shmget, key, size, flag);
+  return syscall(SYS_ipc, IPCOP_shmget, key, size, flag);
 #endif
 }
diff --git a/fusl/src/ldso/__dlsym.c b/fusl/src/ldso/__dlsym.c
index 99aafdf..da319e9 100644
--- a/fusl/src/ldso/__dlsym.c
+++ b/fusl/src/ldso/__dlsym.c
@@ -1,13 +1,13 @@
 #include <dlfcn.h>
 #include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-void __dl_seterr(const char *, ...);
+__attribute__((__visibility__("hidden"))) void __dl_seterr(const char*, ...);
 
-static void *stub_dlsym(void *restrict p, const char *restrict s, void *restrict ra)
-{
-	__dl_seterr("Symbol not found: %s", s);
-	return 0;
+static void* stub_dlsym(void* restrict p,
+                        const char* restrict s,
+                        void* restrict ra) {
+  __dl_seterr("Symbol not found: %s", s);
+  return 0;
 }
 
 weak_alias(stub_dlsym, __dlsym);
diff --git a/fusl/src/ldso/arm/find_exidx.c b/fusl/src/ldso/arm/find_exidx.c
index 77c4472..93323f7 100644
--- a/fusl/src/ldso/arm/find_exidx.c
+++ b/fusl/src/ldso/arm/find_exidx.c
@@ -3,40 +3,38 @@
 #include <stdint.h>
 
 struct find_exidx_data {
-	uintptr_t pc, exidx_start;
-	int exidx_len;
+  uintptr_t pc, exidx_start;
+  int exidx_len;
 };
 
-static int find_exidx(struct dl_phdr_info *info, size_t size, void *ptr)
-{
-	struct find_exidx_data *data = ptr;
-	const ElfW(Phdr) *phdr = info->dlpi_phdr;
-	uintptr_t addr, exidx_start = 0;
-	int i, match = 0, exidx_len = 0;
+static int find_exidx(struct dl_phdr_info* info, size_t size, void* ptr) {
+  struct find_exidx_data* data = ptr;
+  const ElfW(Phdr)* phdr = info->dlpi_phdr;
+  uintptr_t addr, exidx_start = 0;
+  int i, match = 0, exidx_len = 0;
 
-	for (i = info->dlpi_phnum; i > 0; i--, phdr++) {
-		addr = info->dlpi_addr + phdr->p_vaddr;
-		switch (phdr->p_type) {
-		case PT_LOAD:
-			match |= data->pc >= addr && data->pc < addr + phdr->p_memsz;
-			break;
-		case PT_ARM_EXIDX:
-			exidx_start = addr;
-			exidx_len = phdr->p_memsz;
-			break;
-		}
-	}
-	data->exidx_start = exidx_start;
-	data->exidx_len = exidx_len;
-	return match;
+  for (i = info->dlpi_phnum; i > 0; i--, phdr++) {
+    addr = info->dlpi_addr + phdr->p_vaddr;
+    switch (phdr->p_type) {
+      case PT_LOAD:
+        match |= data->pc >= addr && data->pc < addr + phdr->p_memsz;
+        break;
+      case PT_ARM_EXIDX:
+        exidx_start = addr;
+        exidx_len = phdr->p_memsz;
+        break;
+    }
+  }
+  data->exidx_start = exidx_start;
+  data->exidx_len = exidx_len;
+  return match;
 }
 
-uintptr_t __gnu_Unwind_Find_exidx(uintptr_t pc, int *pcount)
-{
-	struct find_exidx_data data;
-	data.pc = pc;
-	if (dl_iterate_phdr(find_exidx, &data) <= 0)
-		return 0;
-	*pcount = data.exidx_len / 8;
-	return data.exidx_start;
+uintptr_t __gnu_Unwind_Find_exidx(uintptr_t pc, int* pcount) {
+  struct find_exidx_data data;
+  data.pc = pc;
+  if (dl_iterate_phdr(find_exidx, &data) <= 0)
+    return 0;
+  *pcount = data.exidx_len / 8;
+  return data.exidx_start;
 }
diff --git a/fusl/src/ldso/dl_iterate_phdr.c b/fusl/src/ldso/dl_iterate_phdr.c
index c141fd9..b08fbac 100644
--- a/fusl/src/ldso/dl_iterate_phdr.c
+++ b/fusl/src/ldso/dl_iterate_phdr.c
@@ -4,39 +4,42 @@
 
 #define AUX_CNT 38
 
-static int static_dl_iterate_phdr(int(*callback)(struct dl_phdr_info *info, size_t size, void *data), void *data)
-{
-	unsigned char *p;
-	ElfW(Phdr) *phdr, *tls_phdr=0;
-	size_t base = 0;
-	size_t n;
-	struct dl_phdr_info info;
-	size_t i, aux[AUX_CNT];
+static int static_dl_iterate_phdr(int (*callback)(struct dl_phdr_info* info,
+                                                  size_t size,
+                                                  void* data),
+                                  void* data) {
+  unsigned char* p;
+  ElfW(Phdr) * phdr, *tls_phdr = 0;
+  size_t base = 0;
+  size_t n;
+  struct dl_phdr_info info;
+  size_t i, aux[AUX_CNT];
 
-	for (i=0; libc.auxv[i]; i+=2)
-		if (libc.auxv[i]<AUX_CNT) aux[libc.auxv[i]] = libc.auxv[i+1];
+  for (i = 0; libc.auxv[i]; i += 2)
+    if (libc.auxv[i] < AUX_CNT)
+      aux[libc.auxv[i]] = libc.auxv[i + 1];
 
-	for (p=(void *)aux[AT_PHDR],n=aux[AT_PHNUM]; n; n--,p+=aux[AT_PHENT]) {
-		phdr = (void *)p;
-		if (phdr->p_type == PT_PHDR)
-			base = aux[AT_PHDR] - phdr->p_vaddr;
-		if (phdr->p_type == PT_TLS)
-			tls_phdr = phdr;
-	}
-	info.dlpi_addr  = base;
-	info.dlpi_name  = "/proc/self/exe";
-	info.dlpi_phdr  = (void *)aux[AT_PHDR];
-	info.dlpi_phnum = aux[AT_PHNUM];
-	info.dlpi_adds  = 0;
-	info.dlpi_subs  = 0;
-	if (tls_phdr) {
-		info.dlpi_tls_modid = 1;
-		info.dlpi_tls_data = (void *)(base + tls_phdr->p_vaddr);
-	} else {
-		info.dlpi_tls_modid = 0;
-		info.dlpi_tls_data = 0;
-	}
-	return (callback)(&info, sizeof (info), data);
+  for (p = (void*)aux[AT_PHDR], n = aux[AT_PHNUM]; n; n--, p += aux[AT_PHENT]) {
+    phdr = (void*)p;
+    if (phdr->p_type == PT_PHDR)
+      base = aux[AT_PHDR] - phdr->p_vaddr;
+    if (phdr->p_type == PT_TLS)
+      tls_phdr = phdr;
+  }
+  info.dlpi_addr = base;
+  info.dlpi_name = "/proc/self/exe";
+  info.dlpi_phdr = (void*)aux[AT_PHDR];
+  info.dlpi_phnum = aux[AT_PHNUM];
+  info.dlpi_adds = 0;
+  info.dlpi_subs = 0;
+  if (tls_phdr) {
+    info.dlpi_tls_modid = 1;
+    info.dlpi_tls_data = (void*)(base + tls_phdr->p_vaddr);
+  } else {
+    info.dlpi_tls_modid = 0;
+    info.dlpi_tls_data = 0;
+  }
+  return (callback)(&info, sizeof(info), data);
 }
 
 weak_alias(static_dl_iterate_phdr, dl_iterate_phdr);
diff --git a/fusl/src/ldso/dladdr.c b/fusl/src/ldso/dladdr.c
index 659ab91..bffbc7c 100644
--- a/fusl/src/ldso/dladdr.c
+++ b/fusl/src/ldso/dladdr.c
@@ -2,9 +2,8 @@
 #include <dlfcn.h>
 #include "libc.h"
 
-static int stub_dladdr(const void *addr, Dl_info *info)
-{
-	return 0;
+static int stub_dladdr(const void* addr, Dl_info* info) {
+  return 0;
 }
 
 weak_alias(stub_dladdr, dladdr);
diff --git a/fusl/src/ldso/dlclose.c b/fusl/src/ldso/dlclose.c
index 0ef2231..e147502 100644
--- a/fusl/src/ldso/dlclose.c
+++ b/fusl/src/ldso/dlclose.c
@@ -1,9 +1,7 @@
 #include <dlfcn.h>
 
-__attribute__((__visibility__("hidden")))
-int __dl_invalid_handle(void *);
+__attribute__((__visibility__("hidden"))) int __dl_invalid_handle(void*);
 
-int dlclose(void *p)
-{
-	return __dl_invalid_handle(p);
+int dlclose(void* p) {
+  return __dl_invalid_handle(p);
 }
diff --git a/fusl/src/ldso/dlerror.c b/fusl/src/ldso/dlerror.c
index 378f035..ee819e3 100644
--- a/fusl/src/ldso/dlerror.c
+++ b/fusl/src/ldso/dlerror.c
@@ -4,61 +4,56 @@
 #include "pthread_impl.h"
 #include "libc.h"
 
-char *dlerror()
-{
-	pthread_t self = __pthread_self();
-	if (!self->dlerror_flag) return 0;
-	self->dlerror_flag = 0;
-	char *s = self->dlerror_buf;
-	if (s == (void *)-1)
-		return "Dynamic linker failed to allocate memory for error message";
-	else
-		return s;
+char* dlerror() {
+  pthread_t self = __pthread_self();
+  if (!self->dlerror_flag)
+    return 0;
+  self->dlerror_flag = 0;
+  char* s = self->dlerror_buf;
+  if (s == (void*)-1)
+    return "Dynamic linker failed to allocate memory for error message";
+  else
+    return s;
 }
 
-void __dl_thread_cleanup(void)
-{
-	pthread_t self = __pthread_self();
-	if (self->dlerror_buf != (void *)-1)
-		free(self->dlerror_buf);
+void __dl_thread_cleanup(void) {
+  pthread_t self = __pthread_self();
+  if (self->dlerror_buf != (void*)-1)
+    free(self->dlerror_buf);
 }
 
-__attribute__((__visibility__("hidden")))
-void __dl_vseterr(const char *fmt, va_list ap)
-{
-	va_list ap2;
-	va_copy(ap2, ap);
-	pthread_t self = __pthread_self();
-	if (self->dlerror_buf != (void *)-1)
-		free(self->dlerror_buf);
-	size_t len = vsnprintf(0, 0, fmt, ap2);
-	va_end(ap2);
-	char *buf = malloc(len+1);
-	if (buf) {
-		vsnprintf(buf, len+1, fmt, ap);
-	} else {
-		buf = (void *)-1;	
-	}
-	self->dlerror_buf = buf;
-	self->dlerror_flag = 1;
+__attribute__((__visibility__("hidden"))) void __dl_vseterr(const char* fmt,
+                                                            va_list ap) {
+  va_list ap2;
+  va_copy(ap2, ap);
+  pthread_t self = __pthread_self();
+  if (self->dlerror_buf != (void*)-1)
+    free(self->dlerror_buf);
+  size_t len = vsnprintf(0, 0, fmt, ap2);
+  va_end(ap2);
+  char* buf = malloc(len + 1);
+  if (buf) {
+    vsnprintf(buf, len + 1, fmt, ap);
+  } else {
+    buf = (void*)-1;
+  }
+  self->dlerror_buf = buf;
+  self->dlerror_flag = 1;
 }
 
-__attribute__((__visibility__("hidden")))
-void __dl_seterr(const char *fmt, ...)
-{
-	va_list ap;
-	va_start(ap, fmt);
-	__dl_vseterr(fmt, ap);
-	va_end(ap);
+__attribute__((__visibility__("hidden"))) void __dl_seterr(const char* fmt,
+                                                           ...) {
+  va_list ap;
+  va_start(ap, fmt);
+  __dl_vseterr(fmt, ap);
+  va_end(ap);
 }
 
-__attribute__((__visibility__("hidden")))
-int __dl_invalid_handle(void *);
+__attribute__((__visibility__("hidden"))) int __dl_invalid_handle(void*);
 
-static int stub_invalid_handle(void *h)
-{
-	__dl_seterr("Invalid library handle %p", (void *)h);
-	return 1;
+static int stub_invalid_handle(void* h) {
+  __dl_seterr("Invalid library handle %p", (void*)h);
+  return 1;
 }
 
 weak_alias(stub_invalid_handle, __dl_invalid_handle);
diff --git a/fusl/src/ldso/dlinfo.c b/fusl/src/ldso/dlinfo.c
index a173d1a..33278e0 100644
--- a/fusl/src/ldso/dlinfo.c
+++ b/fusl/src/ldso/dlinfo.c
@@ -1,19 +1,17 @@
 #define _GNU_SOURCE
 #include <dlfcn.h>
 
-__attribute__((__visibility__("hidden")))
-int __dl_invalid_handle(void *);
+__attribute__((__visibility__("hidden"))) int __dl_invalid_handle(void*);
 
-__attribute__((__visibility__("hidden")))
-void __dl_seterr(const char *, ...);
+__attribute__((__visibility__("hidden"))) void __dl_seterr(const char*, ...);
 
-int dlinfo(void *dso, int req, void *res)
-{
-	if (__dl_invalid_handle(dso)) return -1;
-	if (req != RTLD_DI_LINKMAP) {
-		__dl_seterr("Unsupported request %d", req);
-		return -1;
-	}
-	*(struct link_map **)res = dso;
-	return 0;
+int dlinfo(void* dso, int req, void* res) {
+  if (__dl_invalid_handle(dso))
+    return -1;
+  if (req != RTLD_DI_LINKMAP) {
+    __dl_seterr("Unsupported request %d", req);
+    return -1;
+  }
+  *(struct link_map**)res = dso;
+  return 0;
 }
diff --git a/fusl/src/ldso/dlopen.c b/fusl/src/ldso/dlopen.c
index dcdb439..f9b0048 100644
--- a/fusl/src/ldso/dlopen.c
+++ b/fusl/src/ldso/dlopen.c
@@ -1,13 +1,11 @@
 #include <dlfcn.h>
 #include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-void __dl_seterr(const char *, ...);
+__attribute__((__visibility__("hidden"))) void __dl_seterr(const char*, ...);
 
-static void *stub_dlopen(const char *file, int mode)
-{
-	__dl_seterr("Dynamic loading not supported");
-	return 0;
+static void* stub_dlopen(const char* file, int mode) {
+  __dl_seterr("Dynamic loading not supported");
+  return 0;
 }
 
 weak_alias(stub_dlopen, dlopen);
diff --git a/fusl/src/ldso/dlsym.c b/fusl/src/ldso/dlsym.c
index c0f50e9..62c1cdd 100644
--- a/fusl/src/ldso/dlsym.c
+++ b/fusl/src/ldso/dlsym.c
@@ -1,8 +1,7 @@
 #include <dlfcn.h>
 
-void *__dlsym(void *restrict, const char *restrict, void *restrict);
+void* __dlsym(void* restrict, const char* restrict, void* restrict);
 
-void *dlsym(void *restrict p, const char *restrict s)
-{
-	return __dlsym(p, s, 0);
+void* dlsym(void* restrict p, const char* restrict s) {
+  return __dlsym(p, s, 0);
 }
diff --git a/fusl/src/ldso/tlsdesc.c b/fusl/src/ldso/tlsdesc.c
index a2985cb..32076e7 100644
--- a/fusl/src/ldso/tlsdesc.c
+++ b/fusl/src/ldso/tlsdesc.c
@@ -1,12 +1,11 @@
 #include <stddef.h>
 #include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-ptrdiff_t __tlsdesc_static(), __tlsdesc_dynamic();
+__attribute__((__visibility__("hidden"))) ptrdiff_t __tlsdesc_static(),
+    __tlsdesc_dynamic();
 
-ptrdiff_t __tlsdesc_static()
-{
-	return 0;
+ptrdiff_t __tlsdesc_static() {
+  return 0;
 }
 
 weak_alias(__tlsdesc_static, __tlsdesc_dynamic);
diff --git a/fusl/src/legacy/cuserid.c b/fusl/src/legacy/cuserid.c
index 4e78798..771549c 100644
--- a/fusl/src/legacy/cuserid.c
+++ b/fusl/src/legacy/cuserid.c
@@ -3,12 +3,11 @@
 #include <stdio.h>
 #include <unistd.h>
 
-char *cuserid(char *buf)
-{
-	struct passwd pw, *ppw;
-	long pwb[256];
-	if (getpwuid_r(geteuid(), &pw, (void *)pwb, sizeof pwb, &ppw))
-		return 0;
-	snprintf(buf, L_cuserid, "%s", pw.pw_name);
-	return buf;
+char* cuserid(char* buf) {
+  struct passwd pw, *ppw;
+  long pwb[256];
+  if (getpwuid_r(geteuid(), &pw, (void*)pwb, sizeof pwb, &ppw))
+    return 0;
+  snprintf(buf, L_cuserid, "%s", pw.pw_name);
+  return buf;
 }
diff --git a/fusl/src/legacy/daemon.c b/fusl/src/legacy/daemon.c
index 1568b1d..42416a7 100644
--- a/fusl/src/legacy/daemon.c
+++ b/fusl/src/legacy/daemon.c
@@ -2,32 +2,41 @@
 #include <fcntl.h>
 #include <unistd.h>
 
-int daemon(int nochdir, int noclose)
-{
-	if (!nochdir && chdir("/"))
-		return -1;
-	if (!noclose) {
-		int fd, failed = 0;
-		if ((fd = open("/dev/null", O_RDWR)) < 0) return -1;
-		if (dup2(fd, 0) < 0 || dup2(fd, 1) < 0 || dup2(fd, 2) < 0)
-			failed++;
-		if (fd > 2) close(fd);
-		if (failed) return -1;
-	}
+int daemon(int nochdir, int noclose) {
+  if (!nochdir && chdir("/"))
+    return -1;
+  if (!noclose) {
+    int fd, failed = 0;
+    if ((fd = open("/dev/null", O_RDWR)) < 0)
+      return -1;
+    if (dup2(fd, 0) < 0 || dup2(fd, 1) < 0 || dup2(fd, 2) < 0)
+      failed++;
+    if (fd > 2)
+      close(fd);
+    if (failed)
+      return -1;
+  }
 
-	switch(fork()) {
-	case 0: break;
-	case -1: return -1;
-	default: _exit(0);
-	}
+  switch (fork()) {
+    case 0:
+      break;
+    case -1:
+      return -1;
+    default:
+      _exit(0);
+  }
 
-	if (setsid() < 0) return -1;
+  if (setsid() < 0)
+    return -1;
 
-	switch(fork()) {
-	case 0: break;
-	case -1: return -1;
-	default: _exit(0);
-	}
+  switch (fork()) {
+    case 0:
+      break;
+    case -1:
+      return -1;
+    default:
+      _exit(0);
+  }
 
-	return 0;
+  return 0;
 }
diff --git a/fusl/src/legacy/err.c b/fusl/src/legacy/err.c
index 0d6ab52..445b1de 100644
--- a/fusl/src/legacy/err.c
+++ b/fusl/src/legacy/err.c
@@ -3,65 +3,58 @@
 #include <stdarg.h>
 #include <stdlib.h>
 
-extern char *__progname;
+extern char* __progname;
 
-void vwarn(const char *fmt, va_list ap)
-{
-	fprintf (stderr, "%s: ", __progname);
-	if (fmt) {
-		vfprintf(stderr, fmt, ap);
-		fputs (": ", stderr);
-	}
-	perror(0);
+void vwarn(const char* fmt, va_list ap) {
+  fprintf(stderr, "%s: ", __progname);
+  if (fmt) {
+    vfprintf(stderr, fmt, ap);
+    fputs(": ", stderr);
+  }
+  perror(0);
 }
 
-void vwarnx(const char *fmt, va_list ap)
-{
-	fprintf (stderr, "%s: ", __progname);
-	if (fmt) vfprintf(stderr, fmt, ap);
-	putc('\n', stderr);
+void vwarnx(const char* fmt, va_list ap) {
+  fprintf(stderr, "%s: ", __progname);
+  if (fmt)
+    vfprintf(stderr, fmt, ap);
+  putc('\n', stderr);
 }
 
-_Noreturn void verr(int status, const char *fmt, va_list ap)
-{
-	vwarn(fmt, ap);
-	exit(status);
+_Noreturn void verr(int status, const char* fmt, va_list ap) {
+  vwarn(fmt, ap);
+  exit(status);
 }
 
-_Noreturn void verrx(int status, const char *fmt, va_list ap)
-{
-	vwarnx(fmt, ap);
-	exit(status);
+_Noreturn void verrx(int status, const char* fmt, va_list ap) {
+  vwarnx(fmt, ap);
+  exit(status);
 }
 
-void warn(const char *fmt, ...)
-{
-	va_list ap;
-	va_start(ap, fmt);
-	vwarn(fmt, ap);
-	va_end(ap);
+void warn(const char* fmt, ...) {
+  va_list ap;
+  va_start(ap, fmt);
+  vwarn(fmt, ap);
+  va_end(ap);
 }
 
-void warnx(const char *fmt, ...)
-{
-	va_list ap;
-	va_start(ap, fmt);
-	vwarnx(fmt, ap);
-	va_end(ap);
+void warnx(const char* fmt, ...) {
+  va_list ap;
+  va_start(ap, fmt);
+  vwarnx(fmt, ap);
+  va_end(ap);
 }
 
-_Noreturn void err(int status, const char *fmt, ...)
-{
-	va_list ap;
-	va_start(ap, fmt);
-	verr(status, fmt, ap);
-	va_end(ap);
+_Noreturn void err(int status, const char* fmt, ...) {
+  va_list ap;
+  va_start(ap, fmt);
+  verr(status, fmt, ap);
+  va_end(ap);
 }
 
-_Noreturn void errx(int status, const char *fmt, ...)
-{
-	va_list ap;
-	va_start(ap, fmt);
-	verrx(status, fmt, ap);
-	va_end(ap);
+_Noreturn void errx(int status, const char* fmt, ...) {
+  va_list ap;
+  va_start(ap, fmt);
+  verrx(status, fmt, ap);
+  va_end(ap);
 }
diff --git a/fusl/src/legacy/euidaccess.c b/fusl/src/legacy/euidaccess.c
index 7307251..1a17cdb 100644
--- a/fusl/src/legacy/euidaccess.c
+++ b/fusl/src/legacy/euidaccess.c
@@ -3,9 +3,8 @@
 #include <fcntl.h>
 #include "libc.h"
 
-int euidaccess(const char *filename, int amode)
-{
-	return faccessat(AT_FDCWD, filename, amode, AT_EACCESS);
+int euidaccess(const char* filename, int amode) {
+  return faccessat(AT_FDCWD, filename, amode, AT_EACCESS);
 }
 
 weak_alias(euidaccess, eaccess);
diff --git a/fusl/src/legacy/ftw.c b/fusl/src/legacy/ftw.c
index 0429aba..44422ba 100644
--- a/fusl/src/legacy/ftw.c
+++ b/fusl/src/legacy/ftw.c
@@ -1,12 +1,13 @@
 #include <ftw.h>
 #include "libc.h"
 
-int ftw(const char *path, int (*fn)(const char *, const struct stat *, int), int fd_limit)
-{
-	/* The following cast assumes that calling a function with one
-	 * argument more than it needs behaves as expected. This is
-	 * actually undefined, but works on all real-world machines. */
-	return nftw(path, (int (*)())fn, fd_limit, FTW_PHYS);
+int ftw(const char* path,
+        int (*fn)(const char*, const struct stat*, int),
+        int fd_limit) {
+  /* The following cast assumes that calling a function with one
+   * argument more than it needs behaves as expected. This is
+   * actually undefined, but works on all real-world machines. */
+  return nftw(path, (int (*)())fn, fd_limit, FTW_PHYS);
 }
 
 LFS64(ftw);
diff --git a/fusl/src/legacy/futimes.c b/fusl/src/legacy/futimes.c
index 1c19eb1..fc2af33 100644
--- a/fusl/src/legacy/futimes.c
+++ b/fusl/src/legacy/futimes.c
@@ -2,13 +2,13 @@
 #include <sys/stat.h>
 #include <sys/time.h>
 
-int futimes(int fd, const struct timeval tv[2])
-{
-	struct timespec times[2];
-	if (!tv) return futimens(fd, 0);
-	times[0].tv_sec  = tv[0].tv_sec;
-	times[0].tv_nsec = tv[0].tv_usec * 1000;
-	times[1].tv_sec  = tv[1].tv_sec;
-	times[1].tv_nsec = tv[1].tv_usec * 1000;
-	return futimens(fd, times);
+int futimes(int fd, const struct timeval tv[2]) {
+  struct timespec times[2];
+  if (!tv)
+    return futimens(fd, 0);
+  times[0].tv_sec = tv[0].tv_sec;
+  times[0].tv_nsec = tv[0].tv_usec * 1000;
+  times[1].tv_sec = tv[1].tv_sec;
+  times[1].tv_nsec = tv[1].tv_usec * 1000;
+  return futimens(fd, times);
 }
diff --git a/fusl/src/legacy/getdtablesize.c b/fusl/src/legacy/getdtablesize.c
index 682da6d..7d6d6f2 100644
--- a/fusl/src/legacy/getdtablesize.c
+++ b/fusl/src/legacy/getdtablesize.c
@@ -3,9 +3,8 @@
 #include <limits.h>
 #include <sys/resource.h>
 
-int getdtablesize(void)
-{
-	struct rlimit rl;
-	getrlimit(RLIMIT_NOFILE, &rl);
-	return rl.rlim_max < INT_MAX ? rl.rlim_max : INT_MAX;
+int getdtablesize(void) {
+  struct rlimit rl;
+  getrlimit(RLIMIT_NOFILE, &rl);
+  return rl.rlim_max < INT_MAX ? rl.rlim_max : INT_MAX;
 }
diff --git a/fusl/src/legacy/getloadavg.c b/fusl/src/legacy/getloadavg.c
index ff06de0..101b779 100644
--- a/fusl/src/legacy/getloadavg.c
+++ b/fusl/src/legacy/getloadavg.c
@@ -2,13 +2,14 @@
 #include <stdlib.h>
 #include <sys/sysinfo.h>
 
-int getloadavg(double *a, int n)
-{
-	struct sysinfo si;
-	if (n <= 0) return n ? -1 : 0;
-	sysinfo(&si);
-	if (n > 3) n = 3;
-	for (int i=0; i<n; i++)
-		a[i] = 1.0/(1<<SI_LOAD_SHIFT) * si.loads[i];
-	return n;
+int getloadavg(double* a, int n) {
+  struct sysinfo si;
+  if (n <= 0)
+    return n ? -1 : 0;
+  sysinfo(&si);
+  if (n > 3)
+    n = 3;
+  for (int i = 0; i < n; i++)
+    a[i] = 1.0 / (1 << SI_LOAD_SHIFT) * si.loads[i];
+  return n;
 }
diff --git a/fusl/src/legacy/getpagesize.c b/fusl/src/legacy/getpagesize.c
index 0fc29ff..2265c43 100644
--- a/fusl/src/legacy/getpagesize.c
+++ b/fusl/src/legacy/getpagesize.c
@@ -2,7 +2,6 @@
 #include <unistd.h>
 #include "libc.h"
 
-int getpagesize(void)
-{
-	return PAGE_SIZE;
+int getpagesize(void) {
+  return PAGE_SIZE;
 }
diff --git a/fusl/src/legacy/getpass.c b/fusl/src/legacy/getpass.c
index 15ab985..1c1c831 100644
--- a/fusl/src/legacy/getpass.c
+++ b/fusl/src/legacy/getpass.c
@@ -5,36 +5,37 @@
 #include <fcntl.h>
 #include <string.h>
 
-char *getpass(const char *prompt)
-{
-	int fd;
-	struct termios s, t;
-	ssize_t l;
-	static char password[128];
+char* getpass(const char* prompt) {
+  int fd;
+  struct termios s, t;
+  ssize_t l;
+  static char password[128];
 
-	if ((fd = open("/dev/tty", O_RDWR|O_NOCTTY|O_CLOEXEC)) < 0) return 0;
+  if ((fd = open("/dev/tty", O_RDWR | O_NOCTTY | O_CLOEXEC)) < 0)
+    return 0;
 
-	tcgetattr(fd, &t);
-	s = t;
-	t.c_lflag &= ~(ECHO|ISIG);
-	t.c_lflag |= ICANON;
-	t.c_iflag &= ~(INLCR|IGNCR);
-	t.c_iflag |= ICRNL;
-	tcsetattr(fd, TCSAFLUSH, &t);
-	tcdrain(fd);
+  tcgetattr(fd, &t);
+  s = t;
+  t.c_lflag &= ~(ECHO | ISIG);
+  t.c_lflag |= ICANON;
+  t.c_iflag &= ~(INLCR | IGNCR);
+  t.c_iflag |= ICRNL;
+  tcsetattr(fd, TCSAFLUSH, &t);
+  tcdrain(fd);
 
-	dprintf(fd, "%s", prompt);
+  dprintf(fd, "%s", prompt);
 
-	l = read(fd, password, sizeof password);
-	if (l >= 0) {
-		if (l > 0 && password[l-1] == '\n') l--;
-		password[l] = 0;
-	}
+  l = read(fd, password, sizeof password);
+  if (l >= 0) {
+    if (l > 0 && password[l - 1] == '\n')
+      l--;
+    password[l] = 0;
+  }
 
-	tcsetattr(fd, TCSAFLUSH, &s);
+  tcsetattr(fd, TCSAFLUSH, &s);
 
-	dprintf(fd, "\n");
-	close(fd);
+  dprintf(fd, "\n");
+  close(fd);
 
-	return l<0 ? 0 : password;
+  return l < 0 ? 0 : password;
 }
diff --git a/fusl/src/legacy/getusershell.c b/fusl/src/legacy/getusershell.c
index 5fecdec..3e3b538 100644
--- a/fusl/src/legacy/getusershell.c
+++ b/fusl/src/legacy/getusershell.c
@@ -4,29 +4,33 @@
 
 static const char defshells[] = "/bin/sh\n/bin/csh\n";
 
-static char *line;
+static char* line;
 static size_t linesize;
-static FILE *f;
+static FILE* f;
 
-void endusershell(void)
-{
-	if (f) fclose(f);
-	f = 0;
+void endusershell(void) {
+  if (f)
+    fclose(f);
+  f = 0;
 }
 
-void setusershell(void)
-{
-	if (!f) f = fopen("/etc/shells", "rbe");
-	if (!f) f = fmemopen((void *)defshells, sizeof defshells - 1, "rb");
+void setusershell(void) {
+  if (!f)
+    f = fopen("/etc/shells", "rbe");
+  if (!f)
+    f = fmemopen((void*)defshells, sizeof defshells - 1, "rb");
 }
 
-char *getusershell(void)
-{
-	ssize_t l;
-	if (!f) setusershell();
-	if (!f) return 0;
-	l = getline(&line, &linesize, f);
-	if (l <= 0) return 0;
-	if (line[l-1]=='\n') line[l-1]=0;
-	return line;
+char* getusershell(void) {
+  ssize_t l;
+  if (!f)
+    setusershell();
+  if (!f)
+    return 0;
+  l = getline(&line, &linesize, f);
+  if (l <= 0)
+    return 0;
+  if (line[l - 1] == '\n')
+    line[l - 1] = 0;
+  return line;
 }
diff --git a/fusl/src/legacy/isastream.c b/fusl/src/legacy/isastream.c
index 4dafdb0..5d1195b 100644
--- a/fusl/src/legacy/isastream.c
+++ b/fusl/src/legacy/isastream.c
@@ -1,7 +1,6 @@
 #include <stropts.h>
 #include <fcntl.h>
 
-int isastream(int fd)
-{
-	return fcntl(fd, F_GETFD) < 0 ? -1 : 0;
+int isastream(int fd) {
+  return fcntl(fd, F_GETFD) < 0 ? -1 : 0;
 }
diff --git a/fusl/src/legacy/lutimes.c b/fusl/src/legacy/lutimes.c
index 2e5502d..a68664c 100644
--- a/fusl/src/legacy/lutimes.c
+++ b/fusl/src/legacy/lutimes.c
@@ -3,12 +3,11 @@
 #include <sys/time.h>
 #include <fcntl.h>
 
-int lutimes(const char *filename, const struct timeval tv[2])
-{
-	struct timespec times[2];
-	times[0].tv_sec  = tv[0].tv_sec;
-	times[0].tv_nsec = tv[0].tv_usec * 1000;
-	times[1].tv_sec  = tv[1].tv_sec;
-	times[1].tv_nsec = tv[1].tv_usec * 1000;
-	return utimensat(AT_FDCWD, filename, times, AT_SYMLINK_NOFOLLOW);
+int lutimes(const char* filename, const struct timeval tv[2]) {
+  struct timespec times[2];
+  times[0].tv_sec = tv[0].tv_sec;
+  times[0].tv_nsec = tv[0].tv_usec * 1000;
+  times[1].tv_sec = tv[1].tv_sec;
+  times[1].tv_nsec = tv[1].tv_usec * 1000;
+  return utimensat(AT_FDCWD, filename, times, AT_SYMLINK_NOFOLLOW);
 }
diff --git a/fusl/src/legacy/ulimit.c b/fusl/src/legacy/ulimit.c
index 1f59e8e..dfd7797 100644
--- a/fusl/src/legacy/ulimit.c
+++ b/fusl/src/legacy/ulimit.c
@@ -2,18 +2,18 @@
 #include <ulimit.h>
 #include <stdarg.h>
 
-long ulimit(int cmd, ...)
-{
-	struct rlimit rl;
-	getrlimit(RLIMIT_FSIZE, &rl);
-	if (cmd == UL_SETFSIZE) {
-		long val;
-		va_list ap;
-		va_start(ap, cmd);
-		val = va_arg(ap, long);
-		va_end(ap);
-		rl.rlim_cur = 512ULL * val;
-		if (setrlimit(RLIMIT_FSIZE, &rl)) return -1;
-	}
-	return rl.rlim_cur / 512;
+long ulimit(int cmd, ...) {
+  struct rlimit rl;
+  getrlimit(RLIMIT_FSIZE, &rl);
+  if (cmd == UL_SETFSIZE) {
+    long val;
+    va_list ap;
+    va_start(ap, cmd);
+    val = va_arg(ap, long);
+    va_end(ap);
+    rl.rlim_cur = 512ULL * val;
+    if (setrlimit(RLIMIT_FSIZE, &rl))
+      return -1;
+  }
+  return rl.rlim_cur / 512;
 }
diff --git a/fusl/src/legacy/utmpx.c b/fusl/src/legacy/utmpx.c
index e2843c9..a3e6f81 100644
--- a/fusl/src/legacy/utmpx.c
+++ b/fusl/src/legacy/utmpx.c
@@ -3,42 +3,31 @@
 #include <errno.h>
 #include "libc.h"
 
-void endutxent(void)
-{
+void endutxent(void) {}
+
+void setutxent(void) {}
+
+struct utmpx* getutxent(void) {
+  return NULL;
 }
 
-void setutxent(void)
-{
+struct utmpx* getutxid(const struct utmpx* ut) {
+  return NULL;
 }
 
-struct utmpx *getutxent(void)
-{
-	return NULL;
+struct utmpx* getutxline(const struct utmpx* ut) {
+  return NULL;
 }
 
-struct utmpx *getutxid(const struct utmpx *ut)
-{
-	return NULL;
+struct utmpx* pututxline(const struct utmpx* ut) {
+  return NULL;
 }
 
-struct utmpx *getutxline(const struct utmpx *ut)
-{
-	return NULL;
-}
+void updwtmpx(const char* f, const struct utmpx* u) {}
 
-struct utmpx *pututxline(const struct utmpx *ut)
-{
-	return NULL;
-}
-
-void updwtmpx(const char *f, const struct utmpx *u)
-{
-}
-
-int __utmpxname(const char *f)
-{
-	errno = ENOTSUP;
-	return -1;
+int __utmpxname(const char* f) {
+  errno = ENOTSUP;
+  return -1;
 }
 
 weak_alias(endutxent, endutent);
diff --git a/fusl/src/legacy/valloc.c b/fusl/src/legacy/valloc.c
index 5af2256..e8e7cad 100644
--- a/fusl/src/legacy/valloc.c
+++ b/fusl/src/legacy/valloc.c
@@ -2,7 +2,6 @@
 #include <stdlib.h>
 #include "libc.h"
 
-void *valloc(size_t size)
-{
-	return memalign(PAGE_SIZE, size);
+void* valloc(size_t size) {
+  return memalign(PAGE_SIZE, size);
 }
diff --git a/fusl/src/linux/adjtime.c b/fusl/src/linux/adjtime.c
index fa8af9f..02a9abf 100644
--- a/fusl/src/linux/adjtime.c
+++ b/fusl/src/linux/adjtime.c
@@ -4,24 +4,24 @@
 #include <errno.h>
 #include "syscall.h"
 
-int adjtime(const struct timeval *in, struct timeval *out)
-{
-	struct timex tx = { 0 };
-	if (in) {
-		if (in->tv_sec > 1000 || in->tv_usec > 1000000000) {
-			errno = EINVAL;
-			return -1;
-		}
-		tx.offset = in->tv_sec*1000000 + in->tv_usec;
-		tx.modes = ADJ_OFFSET_SINGLESHOT;
-	}
-	if (syscall(SYS_adjtimex, &tx) < 0) return -1;
-	if (out) {
-		out->tv_sec = tx.offset / 1000000;
-		if ((out->tv_usec = tx.offset % 1000000) < 0) {
-			out->tv_sec--;
-			out->tv_usec += 1000000;
-		}
-	}
-	return 0;
+int adjtime(const struct timeval* in, struct timeval* out) {
+  struct timex tx = {0};
+  if (in) {
+    if (in->tv_sec > 1000 || in->tv_usec > 1000000000) {
+      errno = EINVAL;
+      return -1;
+    }
+    tx.offset = in->tv_sec * 1000000 + in->tv_usec;
+    tx.modes = ADJ_OFFSET_SINGLESHOT;
+  }
+  if (syscall(SYS_adjtimex, &tx) < 0)
+    return -1;
+  if (out) {
+    out->tv_sec = tx.offset / 1000000;
+    if ((out->tv_usec = tx.offset % 1000000) < 0) {
+      out->tv_sec--;
+      out->tv_usec += 1000000;
+    }
+  }
+  return 0;
 }
diff --git a/fusl/src/linux/adjtimex.c b/fusl/src/linux/adjtimex.c
index 91de682..c74a1e8 100644
--- a/fusl/src/linux/adjtimex.c
+++ b/fusl/src/linux/adjtimex.c
@@ -1,7 +1,6 @@
 #include <sys/timex.h>
 #include "syscall.h"
 
-int adjtimex(struct timex *tx)
-{
-	return syscall(SYS_adjtimex, tx);
+int adjtimex(struct timex* tx) {
+  return syscall(SYS_adjtimex, tx);
 }
diff --git a/fusl/src/linux/arch_prctl.c b/fusl/src/linux/arch_prctl.c
index 9460365..7609617 100644
--- a/fusl/src/linux/arch_prctl.c
+++ b/fusl/src/linux/arch_prctl.c
@@ -1,7 +1,6 @@
 #include "syscall.h"
 #ifdef SYS_arch_prctl
-int arch_prctl(int code, unsigned long addr)
-{
-	return syscall(SYS_arch_prctl, code, addr);
+int arch_prctl(int code, unsigned long addr) {
+  return syscall(SYS_arch_prctl, code, addr);
 }
 #endif
diff --git a/fusl/src/linux/brk.c b/fusl/src/linux/brk.c
index ffdbbd5..469f29d 100644
--- a/fusl/src/linux/brk.c
+++ b/fusl/src/linux/brk.c
@@ -1,7 +1,6 @@
 #include <errno.h>
 #include "syscall.h"
 
-int brk(void *end)
-{
-	return __syscall_ret(-ENOMEM);
+int brk(void* end) {
+  return __syscall_ret(-ENOMEM);
 }
diff --git a/fusl/src/linux/cache.c b/fusl/src/linux/cache.c
index 3f0abc7..5e7ba59 100644
--- a/fusl/src/linux/cache.c
+++ b/fusl/src/linux/cache.c
@@ -2,17 +2,15 @@
 #include "libc.h"
 
 #ifdef SYS_cacheflush
-int _flush_cache(void *addr, int len, int op)
-{
-	return syscall(SYS_cacheflush, addr, len, op);
+int _flush_cache(void* addr, int len, int op) {
+  return syscall(SYS_cacheflush, addr, len, op);
 }
 weak_alias(_flush_cache, cacheflush);
 #endif
 
 #ifdef SYS_cachectl
-int __cachectl(void *addr, int len, int op)
-{
-	return syscall(SYS_cachectl, addr, len, op);
+int __cachectl(void* addr, int len, int op) {
+  return syscall(SYS_cachectl, addr, len, op);
 }
 weak_alias(__cachectl, cachectl);
 #endif
diff --git a/fusl/src/linux/cap.c b/fusl/src/linux/cap.c
index 8d035e0..08244f5 100644
--- a/fusl/src/linux/cap.c
+++ b/fusl/src/linux/cap.c
@@ -1,11 +1,9 @@
 #include "syscall.h"
 
-int capset(void *a, void *b)
-{
-	return syscall(SYS_capset, a, b);
+int capset(void* a, void* b) {
+  return syscall(SYS_capset, a, b);
 }
 
-int capget(void *a, void *b)
-{
-	return syscall(SYS_capget, a, b);
+int capget(void* a, void* b) {
+  return syscall(SYS_capget, a, b);
 }
diff --git a/fusl/src/linux/chroot.c b/fusl/src/linux/chroot.c
index 0e69f14..1154043 100644
--- a/fusl/src/linux/chroot.c
+++ b/fusl/src/linux/chroot.c
@@ -2,7 +2,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int chroot(const char *path)
-{
-	return syscall(SYS_chroot, path);
+int chroot(const char* path) {
+  return syscall(SYS_chroot, path);
 }
diff --git a/fusl/src/linux/clock_adjtime.c b/fusl/src/linux/clock_adjtime.c
index 056ad6d..06c7401 100644
--- a/fusl/src/linux/clock_adjtime.c
+++ b/fusl/src/linux/clock_adjtime.c
@@ -1,7 +1,6 @@
 #include <sys/timex.h>
 #include "syscall.h"
 
-int clock_adjtime (clockid_t clock_id, struct timex *utx)
-{
-	return syscall(SYS_clock_adjtime, clock_id, utx);
+int clock_adjtime(clockid_t clock_id, struct timex* utx) {
+  return syscall(SYS_clock_adjtime, clock_id, utx);
 }
diff --git a/fusl/src/linux/clone.c b/fusl/src/linux/clone.c
index b9e5594..0e3f9cd 100644
--- a/fusl/src/linux/clone.c
+++ b/fusl/src/linux/clone.c
@@ -3,17 +3,16 @@
 #include "pthread_impl.h"
 #include "syscall.h"
 
-int clone(int (*func)(void *), void *stack, int flags, void *arg, ...)
-{
-	va_list ap;
-	pid_t *ptid, *ctid;
-	void  *tls;
+int clone(int (*func)(void*), void* stack, int flags, void* arg, ...) {
+  va_list ap;
+  pid_t *ptid, *ctid;
+  void* tls;
 
-	va_start(ap, arg);
-	ptid = va_arg(ap, pid_t *);
-	tls  = va_arg(ap, void *);
-	ctid = va_arg(ap, pid_t *);
-	va_end(ap);
+  va_start(ap, arg);
+  ptid = va_arg(ap, pid_t*);
+  tls = va_arg(ap, void*);
+  ctid = va_arg(ap, pid_t*);
+  va_end(ap);
 
-	return __syscall_ret(__clone(func, stack, flags, arg, ptid, tls, ctid));
+  return __syscall_ret(__clone(func, stack, flags, arg, ptid, tls, ctid));
 }
diff --git a/fusl/src/linux/epoll.c b/fusl/src/linux/epoll.c
index deff5b1..fb6f0ef 100644
--- a/fusl/src/linux/epoll.c
+++ b/fusl/src/linux/epoll.c
@@ -3,35 +3,36 @@
 #include <errno.h>
 #include "syscall.h"
 
-int epoll_create(int size)
-{
-	return epoll_create1(0);
+int epoll_create(int size) {
+  return epoll_create1(0);
 }
 
-int epoll_create1(int flags)
-{
-	int r = __syscall(SYS_epoll_create1, flags);
+int epoll_create1(int flags) {
+  int r = __syscall(SYS_epoll_create1, flags);
 #ifdef SYS_epoll_create
-	if (r==-ENOSYS && !flags) r = __syscall(SYS_epoll_create, 1);
+  if (r == -ENOSYS && !flags)
+    r = __syscall(SYS_epoll_create, 1);
 #endif
-	return __syscall_ret(r);
+  return __syscall_ret(r);
 }
 
-int epoll_ctl(int fd, int op, int fd2, struct epoll_event *ev)
-{
-	return syscall(SYS_epoll_ctl, fd, op, fd2, ev);
+int epoll_ctl(int fd, int op, int fd2, struct epoll_event* ev) {
+  return syscall(SYS_epoll_ctl, fd, op, fd2, ev);
 }
 
-int epoll_pwait(int fd, struct epoll_event *ev, int cnt, int to, const sigset_t *sigs)
-{
-	int r = __syscall(SYS_epoll_pwait, fd, ev, cnt, to, sigs, _NSIG/8);
+int epoll_pwait(int fd,
+                struct epoll_event* ev,
+                int cnt,
+                int to,
+                const sigset_t* sigs) {
+  int r = __syscall(SYS_epoll_pwait, fd, ev, cnt, to, sigs, _NSIG / 8);
 #ifdef SYS_epoll_wait
-	if (r==-ENOSYS && !sigs) r = __syscall(SYS_epoll_wait, fd, ev, cnt, to);
+  if (r == -ENOSYS && !sigs)
+    r = __syscall(SYS_epoll_wait, fd, ev, cnt, to);
 #endif
-	return __syscall_ret(r);
+  return __syscall_ret(r);
 }
 
-int epoll_wait(int fd, struct epoll_event *ev, int cnt, int to)
-{
-	return epoll_pwait(fd, ev, cnt, to, 0);
+int epoll_wait(int fd, struct epoll_event* ev, int cnt, int to) {
+  return epoll_pwait(fd, ev, cnt, to, 0);
 }
diff --git a/fusl/src/linux/eventfd.c b/fusl/src/linux/eventfd.c
index 68e489c..80488e3 100644
--- a/fusl/src/linux/eventfd.c
+++ b/fusl/src/linux/eventfd.c
@@ -3,21 +3,19 @@
 #include <errno.h>
 #include "syscall.h"
 
-int eventfd(unsigned int count, int flags)
-{
-	int r = __syscall(SYS_eventfd2, count, flags);
+int eventfd(unsigned int count, int flags) {
+  int r = __syscall(SYS_eventfd2, count, flags);
 #ifdef SYS_eventfd
-	if (r==-ENOSYS && !flags) r = __syscall(SYS_eventfd, count);
+  if (r == -ENOSYS && !flags)
+    r = __syscall(SYS_eventfd, count);
 #endif
-	return __syscall_ret(r);
+  return __syscall_ret(r);
 }
 
-int eventfd_read(int fd, eventfd_t *value)
-{
-	return (sizeof(*value) == read(fd, value, sizeof(*value))) ? 0 : -1;
+int eventfd_read(int fd, eventfd_t* value) {
+  return (sizeof(*value) == read(fd, value, sizeof(*value))) ? 0 : -1;
 }
 
-int eventfd_write(int fd, eventfd_t value)
-{
-	return (sizeof(value) == write(fd, &value, sizeof(value))) ? 0 : -1;
+int eventfd_write(int fd, eventfd_t value) {
+  return (sizeof(value) == write(fd, &value, sizeof(value))) ? 0 : -1;
 }
diff --git a/fusl/src/linux/fallocate.c b/fusl/src/linux/fallocate.c
index ae766d5..e71eda4 100644
--- a/fusl/src/linux/fallocate.c
+++ b/fusl/src/linux/fallocate.c
@@ -3,10 +3,9 @@
 #include "syscall.h"
 #include "libc.h"
 
-int fallocate(int fd, int mode, off_t base, off_t len)
-{
-	return syscall(SYS_fallocate, fd, mode, __SYSCALL_LL_E(base),
-		__SYSCALL_LL_E(len));
+int fallocate(int fd, int mode, off_t base, off_t len) {
+  return syscall(SYS_fallocate, fd, mode, __SYSCALL_LL_E(base),
+                 __SYSCALL_LL_E(len));
 }
 
 #undef fallocate64
diff --git a/fusl/src/linux/fanotify.c b/fusl/src/linux/fanotify.c
index c6211af..623951d 100644
--- a/fusl/src/linux/fanotify.c
+++ b/fusl/src/linux/fanotify.c
@@ -1,14 +1,15 @@
 #include "syscall.h"
 #include <sys/fanotify.h>
 
-int fanotify_init(unsigned flags, unsigned event_f_flags)
-{
-	return syscall(SYS_fanotify_init, flags, event_f_flags);
+int fanotify_init(unsigned flags, unsigned event_f_flags) {
+  return syscall(SYS_fanotify_init, flags, event_f_flags);
 }
 
-int fanotify_mark(int fanotify_fd, unsigned flags, unsigned long long mask,
-	          int dfd, const char *pathname)
-{
-	return syscall(SYS_fanotify_mark, fanotify_fd, flags, __SYSCALL_LL_E(mask), dfd, pathname);
+int fanotify_mark(int fanotify_fd,
+                  unsigned flags,
+                  unsigned long long mask,
+                  int dfd,
+                  const char* pathname) {
+  return syscall(SYS_fanotify_mark, fanotify_fd, flags, __SYSCALL_LL_E(mask),
+                 dfd, pathname);
 }
-
diff --git a/fusl/src/linux/flock.c b/fusl/src/linux/flock.c
index 87aa5cf..f488852 100644
--- a/fusl/src/linux/flock.c
+++ b/fusl/src/linux/flock.c
@@ -1,7 +1,6 @@
 #include <sys/file.h>
 #include "syscall.h"
 
-int flock(int fd, int op)
-{
-	return syscall(SYS_flock, fd, op);
+int flock(int fd, int op) {
+  return syscall(SYS_flock, fd, op);
 }
diff --git a/fusl/src/linux/inotify.c b/fusl/src/linux/inotify.c
index df5e48b..6ab4473 100644
--- a/fusl/src/linux/inotify.c
+++ b/fusl/src/linux/inotify.c
@@ -2,25 +2,22 @@
 #include <errno.h>
 #include "syscall.h"
 
-int inotify_init()
-{
-	return inotify_init1(0);
+int inotify_init() {
+  return inotify_init1(0);
 }
-int inotify_init1(int flags)
-{
-	int r = __syscall(SYS_inotify_init1, flags);
+int inotify_init1(int flags) {
+  int r = __syscall(SYS_inotify_init1, flags);
 #ifdef SYS_inotify_init
-	if (r==-ENOSYS && !flags) r = __syscall(SYS_inotify_init);
+  if (r == -ENOSYS && !flags)
+    r = __syscall(SYS_inotify_init);
 #endif
-	return __syscall_ret(r);
+  return __syscall_ret(r);
 }
 
-int inotify_add_watch(int fd, const char *pathname, uint32_t mask)
-{
-	return syscall(SYS_inotify_add_watch, fd, pathname, mask);
+int inotify_add_watch(int fd, const char* pathname, uint32_t mask) {
+  return syscall(SYS_inotify_add_watch, fd, pathname, mask);
 }
 
-int inotify_rm_watch(int fd, int wd)
-{
-	return syscall(SYS_inotify_rm_watch, fd, wd);
+int inotify_rm_watch(int fd, int wd) {
+  return syscall(SYS_inotify_rm_watch, fd, wd);
 }
diff --git a/fusl/src/linux/ioperm.c b/fusl/src/linux/ioperm.c
index 08c6d8b..32a6d43 100644
--- a/fusl/src/linux/ioperm.c
+++ b/fusl/src/linux/ioperm.c
@@ -3,8 +3,7 @@
 #ifdef SYS_ioperm
 #include <sys/io.h>
 
-int ioperm(unsigned long from, unsigned long num, int turn_on)
-{
-	return syscall(SYS_ioperm, from, num, turn_on);
+int ioperm(unsigned long from, unsigned long num, int turn_on) {
+  return syscall(SYS_ioperm, from, num, turn_on);
 }
 #endif
diff --git a/fusl/src/linux/iopl.c b/fusl/src/linux/iopl.c
index 835d3d4..fd794ea 100644
--- a/fusl/src/linux/iopl.c
+++ b/fusl/src/linux/iopl.c
@@ -3,8 +3,7 @@
 #ifdef SYS_iopl
 #include <sys/io.h>
 
-int iopl(int level)
-{
-	return syscall(SYS_iopl, level);
+int iopl(int level) {
+  return syscall(SYS_iopl, level);
 }
 #endif
diff --git a/fusl/src/linux/klogctl.c b/fusl/src/linux/klogctl.c
index 8102ee6..874a6a3 100644
--- a/fusl/src/linux/klogctl.c
+++ b/fusl/src/linux/klogctl.c
@@ -1,7 +1,6 @@
 #include <sys/klog.h>
 #include "syscall.h"
 
-int klogctl (int type, char *buf, int len)
-{
-	return syscall(SYS_syslog, type, buf, len);
+int klogctl(int type, char* buf, int len) {
+  return syscall(SYS_syslog, type, buf, len);
 }
diff --git a/fusl/src/linux/module.c b/fusl/src/linux/module.c
index 33f69a0..f738352 100644
--- a/fusl/src/linux/module.c
+++ b/fusl/src/linux/module.c
@@ -1,11 +1,9 @@
 #include "syscall.h"
 
-int init_module(void *a, unsigned long b, const char *c)
-{
-	return syscall(SYS_init_module, a, b, c);
+int init_module(void* a, unsigned long b, const char* c) {
+  return syscall(SYS_init_module, a, b, c);
 }
 
-int delete_module(const char *a, unsigned b)
-{
-	return syscall(SYS_delete_module, a, b);
+int delete_module(const char* a, unsigned b) {
+  return syscall(SYS_delete_module, a, b);
 }
diff --git a/fusl/src/linux/mount.c b/fusl/src/linux/mount.c
index 34e11af..734b410 100644
--- a/fusl/src/linux/mount.c
+++ b/fusl/src/linux/mount.c
@@ -1,17 +1,18 @@
 #include <sys/mount.h>
 #include "syscall.h"
 
-int mount(const char *special, const char *dir, const char *fstype, unsigned long flags, const void *data)
-{
-	return syscall(SYS_mount, special, dir, fstype, flags, data);
+int mount(const char* special,
+          const char* dir,
+          const char* fstype,
+          unsigned long flags,
+          const void* data) {
+  return syscall(SYS_mount, special, dir, fstype, flags, data);
 }
 
-int umount(const char *special)
-{
-	return syscall(SYS_umount2, special, 0);
+int umount(const char* special) {
+  return syscall(SYS_umount2, special, 0);
 }
 
-int umount2(const char *special, int flags)
-{
-	return syscall(SYS_umount2, special, flags);
+int umount2(const char* special, int flags) {
+  return syscall(SYS_umount2, special, flags);
 }
diff --git a/fusl/src/linux/personality.c b/fusl/src/linux/personality.c
index e00cf79..f3ed1a8 100644
--- a/fusl/src/linux/personality.c
+++ b/fusl/src/linux/personality.c
@@ -1,8 +1,7 @@
 #include <sys/personality.h>
 #include "syscall.h"
 #ifdef SYS_personality
-int personality(unsigned long persona)
-{
-	return syscall(SYS_personality, persona);
+int personality(unsigned long persona) {
+  return syscall(SYS_personality, persona);
 }
 #endif
diff --git a/fusl/src/linux/pivot_root.c b/fusl/src/linux/pivot_root.c
index 17e70c9..8f0d97e 100644
--- a/fusl/src/linux/pivot_root.c
+++ b/fusl/src/linux/pivot_root.c
@@ -1,6 +1,5 @@
 #include "syscall.h"
 
-int pivot_root(const char *new, const char *old)
-{
-	return syscall(SYS_pivot_root, new, old);
+int pivot_root(const char* new, const char* old) {
+  return syscall(SYS_pivot_root, new, old);
 }
diff --git a/fusl/src/linux/ppoll.c b/fusl/src/linux/ppoll.c
index 9e26247..8d3acd8 100644
--- a/fusl/src/linux/ppoll.c
+++ b/fusl/src/linux/ppoll.c
@@ -3,8 +3,10 @@
 #include <signal.h>
 #include "syscall.h"
 
-int ppoll(struct pollfd *fds, nfds_t n, const struct timespec *to, const sigset_t *mask)
-{
-	return syscall_cp(SYS_ppoll, fds, n,
-		to ? (struct timespec []){*to} : 0, mask, _NSIG/8);
+int ppoll(struct pollfd* fds,
+          nfds_t n,
+          const struct timespec* to,
+          const sigset_t* mask) {
+  return syscall_cp(SYS_ppoll, fds, n, to ? (struct timespec[]){*to} : 0, mask,
+                    _NSIG / 8);
 }
diff --git a/fusl/src/linux/prctl.c b/fusl/src/linux/prctl.c
index 19f4267..06a3de5 100644
--- a/fusl/src/linux/prctl.c
+++ b/fusl/src/linux/prctl.c
@@ -2,13 +2,13 @@
 #include <stdarg.h>
 #include "syscall.h"
 
-int prctl(int op, ...)
-{
-	unsigned long x[4];
-	int i;
-	va_list ap;
-	va_start(ap, op);
-	for (i=0; i<4; i++) x[i] = va_arg(ap, unsigned long);
-	va_end(ap);
-	return syscall(SYS_prctl, op, x[0], x[1], x[2], x[3]);
+int prctl(int op, ...) {
+  unsigned long x[4];
+  int i;
+  va_list ap;
+  va_start(ap, op);
+  for (i = 0; i < 4; i++)
+    x[i] = va_arg(ap, unsigned long);
+  va_end(ap);
+  return syscall(SYS_prctl, op, x[0], x[1], x[2], x[3]);
 }
diff --git a/fusl/src/linux/prlimit.c b/fusl/src/linux/prlimit.c
index 0fe28e1..5d2097a 100644
--- a/fusl/src/linux/prlimit.c
+++ b/fusl/src/linux/prlimit.c
@@ -3,24 +3,30 @@
 #include "syscall.h"
 #include "libc.h"
 
-#define FIX(x) do{ if ((x)>=SYSCALL_RLIM_INFINITY) (x)=RLIM_INFINITY; }while(0)
+#define FIX(x)                        \
+  do {                                \
+    if ((x) >= SYSCALL_RLIM_INFINITY) \
+      (x) = RLIM_INFINITY;            \
+  } while (0)
 
-int prlimit(pid_t pid, int resource, const struct rlimit *new_limit, struct rlimit *old_limit)
-{
-	struct rlimit tmp;
-	int r;
-	if (new_limit && SYSCALL_RLIM_INFINITY != RLIM_INFINITY) {
-		tmp = *new_limit;
-		FIX(tmp.rlim_cur);
-		FIX(tmp.rlim_max);
-		new_limit = &tmp;
-	}
-	r = syscall(SYS_prlimit64, pid, resource, new_limit, old_limit);
-	if (!r && old_limit && SYSCALL_RLIM_INFINITY != RLIM_INFINITY) {
-		FIX(old_limit->rlim_cur);
-		FIX(old_limit->rlim_max);
-	}
-	return r;
+int prlimit(pid_t pid,
+            int resource,
+            const struct rlimit* new_limit,
+            struct rlimit* old_limit) {
+  struct rlimit tmp;
+  int r;
+  if (new_limit && SYSCALL_RLIM_INFINITY != RLIM_INFINITY) {
+    tmp = *new_limit;
+    FIX(tmp.rlim_cur);
+    FIX(tmp.rlim_max);
+    new_limit = &tmp;
+  }
+  r = syscall(SYS_prlimit64, pid, resource, new_limit, old_limit);
+  if (!r && old_limit && SYSCALL_RLIM_INFINITY != RLIM_INFINITY) {
+    FIX(old_limit->rlim_cur);
+    FIX(old_limit->rlim_max);
+  }
+  return r;
 }
 
 #undef prlimit64
diff --git a/fusl/src/linux/process_vm.c b/fusl/src/linux/process_vm.c
index 7703bdf..0415d41 100644
--- a/fusl/src/linux/process_vm.c
+++ b/fusl/src/linux/process_vm.c
@@ -2,12 +2,22 @@
 #include <sys/uio.h>
 #include "syscall.h"
 
-ssize_t process_vm_writev(pid_t pid, const struct iovec *lvec, unsigned long liovcnt, const struct iovec *rvec, unsigned long riovcnt, unsigned long flags)
-{
-	return syscall(SYS_process_vm_writev, pid, lvec, liovcnt, rvec, riovcnt, flags);
+ssize_t process_vm_writev(pid_t pid,
+                          const struct iovec* lvec,
+                          unsigned long liovcnt,
+                          const struct iovec* rvec,
+                          unsigned long riovcnt,
+                          unsigned long flags) {
+  return syscall(SYS_process_vm_writev, pid, lvec, liovcnt, rvec, riovcnt,
+                 flags);
 }
 
-ssize_t process_vm_readv(pid_t pid, const struct iovec *lvec, unsigned long liovcnt, const struct iovec *rvec, unsigned long riovcnt, unsigned long flags)
-{
-	return syscall(SYS_process_vm_readv, pid, lvec, liovcnt, rvec, riovcnt, flags);
+ssize_t process_vm_readv(pid_t pid,
+                         const struct iovec* lvec,
+                         unsigned long liovcnt,
+                         const struct iovec* rvec,
+                         unsigned long riovcnt,
+                         unsigned long flags) {
+  return syscall(SYS_process_vm_readv, pid, lvec, liovcnt, rvec, riovcnt,
+                 flags);
 }
diff --git a/fusl/src/linux/ptrace.c b/fusl/src/linux/ptrace.c
index 83b8022..34fbb72 100644
--- a/fusl/src/linux/ptrace.c
+++ b/fusl/src/linux/ptrace.c
@@ -3,23 +3,24 @@
 #include <unistd.h>
 #include "syscall.h"
 
-long ptrace(int req, ...)
-{
-	va_list ap;
-	pid_t pid;
-	void *addr, *data, *addr2;
-	long ret, result;
+long ptrace(int req, ...) {
+  va_list ap;
+  pid_t pid;
+  void *addr, *data, *addr2;
+  long ret, result;
 
-	va_start(ap, req);
-	pid = va_arg(ap, pid_t);
-	addr = va_arg(ap, void *);
-	data = va_arg(ap, void *);
-	addr2 = va_arg(ap, void *);
-	va_end(ap);
+  va_start(ap, req);
+  pid = va_arg(ap, pid_t);
+  addr = va_arg(ap, void*);
+  data = va_arg(ap, void*);
+  addr2 = va_arg(ap, void*);
+  va_end(ap);
 
-	if (req-1U < 3) data = &result;
-	ret = syscall(SYS_ptrace, req, pid, addr, data, addr2);
+  if (req - 1U < 3)
+    data = &result;
+  ret = syscall(SYS_ptrace, req, pid, addr, data, addr2);
 
-	if (ret < 0 || req-1U >= 3) return ret;
-	return result;
+  if (ret < 0 || req - 1U >= 3)
+    return ret;
+  return result;
 }
diff --git a/fusl/src/linux/quotactl.c b/fusl/src/linux/quotactl.c
index 344eb0d..d566531 100644
--- a/fusl/src/linux/quotactl.c
+++ b/fusl/src/linux/quotactl.c
@@ -1,7 +1,6 @@
 #include <sys/quota.h>
 #include "syscall.h"
 
-int quotactl(int cmd, const char *special, int id, char *addr)
-{
-	return syscall(SYS_quotactl, cmd, special, id, addr);
+int quotactl(int cmd, const char* special, int id, char* addr) {
+  return syscall(SYS_quotactl, cmd, special, id, addr);
 }
diff --git a/fusl/src/linux/readahead.c b/fusl/src/linux/readahead.c
index 5c70bfd..993650c 100644
--- a/fusl/src/linux/readahead.c
+++ b/fusl/src/linux/readahead.c
@@ -2,7 +2,6 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-ssize_t readahead(int fd, off_t pos, size_t len)
-{
-	return syscall(SYS_readahead, fd, __SYSCALL_LL_O(pos), len);
+ssize_t readahead(int fd, off_t pos, size_t len) {
+  return syscall(SYS_readahead, fd, __SYSCALL_LL_O(pos), len);
 }
diff --git a/fusl/src/linux/reboot.c b/fusl/src/linux/reboot.c
index 7f12af7..197553a 100644
--- a/fusl/src/linux/reboot.c
+++ b/fusl/src/linux/reboot.c
@@ -1,7 +1,6 @@
 #include <sys/reboot.h>
 #include "syscall.h"
 
-int reboot(int type)
-{
-	return syscall(SYS_reboot, 0xfee1dead, 672274793, type);
+int reboot(int type) {
+  return syscall(SYS_reboot, 0xfee1dead, 672274793, type);
 }
diff --git a/fusl/src/linux/remap_file_pages.c b/fusl/src/linux/remap_file_pages.c
index a9699ce..dd244fc 100644
--- a/fusl/src/linux/remap_file_pages.c
+++ b/fusl/src/linux/remap_file_pages.c
@@ -2,7 +2,10 @@
 #include <sys/mman.h>
 #include "syscall.h"
 
-int remap_file_pages(void *addr, size_t size, int prot, size_t pgoff, int flags)
-{
-	return syscall(SYS_remap_file_pages, addr, size, prot, pgoff, flags);
+int remap_file_pages(void* addr,
+                     size_t size,
+                     int prot,
+                     size_t pgoff,
+                     int flags) {
+  return syscall(SYS_remap_file_pages, addr, size, prot, pgoff, flags);
 }
diff --git a/fusl/src/linux/sbrk.c b/fusl/src/linux/sbrk.c
index 1e82d64..cbd3eca 100644
--- a/fusl/src/linux/sbrk.c
+++ b/fusl/src/linux/sbrk.c
@@ -2,8 +2,8 @@
 #include <errno.h>
 #include "syscall.h"
 
-void *sbrk(intptr_t inc)
-{
-	if (inc) return (void *)__syscall_ret(-ENOMEM);
-	return (void *)__syscall(SYS_brk, 0);
+void* sbrk(intptr_t inc) {
+  if (inc)
+    return (void*)__syscall_ret(-ENOMEM);
+  return (void*)__syscall(SYS_brk, 0);
 }
diff --git a/fusl/src/linux/sendfile.c b/fusl/src/linux/sendfile.c
index d63f419..18a25ac 100644
--- a/fusl/src/linux/sendfile.c
+++ b/fusl/src/linux/sendfile.c
@@ -2,9 +2,8 @@
 #include "syscall.h"
 #include "libc.h"
 
-ssize_t sendfile(int out_fd, int in_fd, off_t *ofs, size_t count)
-{
-	return syscall(SYS_sendfile, out_fd, in_fd, ofs, count);
+ssize_t sendfile(int out_fd, int in_fd, off_t* ofs, size_t count) {
+  return syscall(SYS_sendfile, out_fd, in_fd, ofs, count);
 }
 
 LFS64(sendfile);
diff --git a/fusl/src/linux/setfsgid.c b/fusl/src/linux/setfsgid.c
index ad80422..3a7398e 100644
--- a/fusl/src/linux/setfsgid.c
+++ b/fusl/src/linux/setfsgid.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int setfsgid(gid_t gid)
-{
-	return syscall(SYS_setfsgid, gid);
+int setfsgid(gid_t gid) {
+  return syscall(SYS_setfsgid, gid);
 }
diff --git a/fusl/src/linux/setfsuid.c b/fusl/src/linux/setfsuid.c
index 8635873..91301b7 100644
--- a/fusl/src/linux/setfsuid.c
+++ b/fusl/src/linux/setfsuid.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int setfsuid(uid_t uid)
-{
-	return syscall(SYS_setfsuid, uid);
+int setfsuid(uid_t uid) {
+  return syscall(SYS_setfsuid, uid);
 }
diff --git a/fusl/src/linux/setgroups.c b/fusl/src/linux/setgroups.c
index 1248fdb..ef6347f 100644
--- a/fusl/src/linux/setgroups.c
+++ b/fusl/src/linux/setgroups.c
@@ -2,7 +2,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int setgroups(size_t count, const gid_t list[])
-{
-	return syscall(SYS_setgroups, count, list);
+int setgroups(size_t count, const gid_t list[]) {
+  return syscall(SYS_setgroups, count, list);
 }
diff --git a/fusl/src/linux/sethostname.c b/fusl/src/linux/sethostname.c
index 9313b32..3923399 100644
--- a/fusl/src/linux/sethostname.c
+++ b/fusl/src/linux/sethostname.c
@@ -2,7 +2,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int sethostname(const char *name, size_t len)
-{
-	return syscall(SYS_sethostname, name, len);
+int sethostname(const char* name, size_t len) {
+  return syscall(SYS_sethostname, name, len);
 }
diff --git a/fusl/src/linux/setns.c b/fusl/src/linux/setns.c
index 0afec81..fa47c68 100644
--- a/fusl/src/linux/setns.c
+++ b/fusl/src/linux/setns.c
@@ -2,7 +2,6 @@
 #include <sched.h>
 #include "syscall.h"
 
-int setns(int fd, int nstype)
-{
-	return syscall(SYS_setns, fd, nstype);
+int setns(int fd, int nstype) {
+  return syscall(SYS_setns, fd, nstype);
 }
diff --git a/fusl/src/linux/settimeofday.c b/fusl/src/linux/settimeofday.c
index 15c18c6..52c32e0 100644
--- a/fusl/src/linux/settimeofday.c
+++ b/fusl/src/linux/settimeofday.c
@@ -2,7 +2,6 @@
 #include <sys/time.h>
 #include "syscall.h"
 
-int settimeofday(const struct timeval *tv, const struct timezone *tz)
-{
-	return syscall(SYS_settimeofday, tv, 0);
+int settimeofday(const struct timeval* tv, const struct timezone* tz) {
+  return syscall(SYS_settimeofday, tv, 0);
 }
diff --git a/fusl/src/linux/signalfd.c b/fusl/src/linux/signalfd.c
index 4bf4332..9187630 100644
--- a/fusl/src/linux/signalfd.c
+++ b/fusl/src/linux/signalfd.c
@@ -4,18 +4,18 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int signalfd(int fd, const sigset_t *sigs, int flags)
-{
-	int ret = __syscall(SYS_signalfd4, fd, sigs, _NSIG/8, flags);
+int signalfd(int fd, const sigset_t* sigs, int flags) {
+  int ret = __syscall(SYS_signalfd4, fd, sigs, _NSIG / 8, flags);
 #ifdef SYS_signalfd
-	if (ret != -ENOSYS) return __syscall_ret(ret);
-	ret = __syscall(SYS_signalfd, fd, sigs, _NSIG/8);
-	if (ret >= 0) {
-		if (flags & SFD_CLOEXEC)
-			__syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC);
-		if (flags & SFD_NONBLOCK)
-			__syscall(SYS_fcntl, ret, F_SETFL, O_NONBLOCK);
-	}
+  if (ret != -ENOSYS)
+    return __syscall_ret(ret);
+  ret = __syscall(SYS_signalfd, fd, sigs, _NSIG / 8);
+  if (ret >= 0) {
+    if (flags & SFD_CLOEXEC)
+      __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC);
+    if (flags & SFD_NONBLOCK)
+      __syscall(SYS_fcntl, ret, F_SETFL, O_NONBLOCK);
+  }
 #endif
-	return __syscall_ret(ret);
+  return __syscall_ret(ret);
 }
diff --git a/fusl/src/linux/splice.c b/fusl/src/linux/splice.c
index 78b6220..1956b52 100644
--- a/fusl/src/linux/splice.c
+++ b/fusl/src/linux/splice.c
@@ -2,7 +2,11 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-ssize_t splice(int fd_in, off_t *off_in, int fd_out, off_t *off_out, size_t len, unsigned flags)
-{
-	return syscall(SYS_splice, fd_in, off_in, fd_out, off_out, len, flags);
+ssize_t splice(int fd_in,
+               off_t* off_in,
+               int fd_out,
+               off_t* off_out,
+               size_t len,
+               unsigned flags) {
+  return syscall(SYS_splice, fd_in, off_in, fd_out, off_out, len, flags);
 }
diff --git a/fusl/src/linux/stime.c b/fusl/src/linux/stime.c
index 7d0443b..2ae9663 100644
--- a/fusl/src/linux/stime.c
+++ b/fusl/src/linux/stime.c
@@ -2,8 +2,7 @@
 #include <time.h>
 #include <sys/time.h>
 
-int stime(const time_t *t)
-{
-	struct timeval tv = { .tv_sec = *t, .tv_usec = 0 };
-	return settimeofday(&tv, (void *)0);
+int stime(const time_t* t) {
+  struct timeval tv = {.tv_sec = *t, .tv_usec = 0};
+  return settimeofday(&tv, (void*)0);
 }
diff --git a/fusl/src/linux/swap.c b/fusl/src/linux/swap.c
index 8137d51..8dd2989 100644
--- a/fusl/src/linux/swap.c
+++ b/fusl/src/linux/swap.c
@@ -1,12 +1,10 @@
 #include <sys/swap.h>
 #include "syscall.h"
 
-int swapon(const char *path, int flags)
-{
-	return syscall(SYS_swapon, path, flags);
+int swapon(const char* path, int flags) {
+  return syscall(SYS_swapon, path, flags);
 }
 
-int swapoff(const char *path)
-{
-	return syscall(SYS_swapoff, path);
+int swapoff(const char* path) {
+  return syscall(SYS_swapoff, path);
 }
diff --git a/fusl/src/linux/sync_file_range.c b/fusl/src/linux/sync_file_range.c
index 6859abc..8dac7dd 100644
--- a/fusl/src/linux/sync_file_range.c
+++ b/fusl/src/linux/sync_file_range.c
@@ -3,15 +3,14 @@
 #include <errno.h>
 #include "syscall.h"
 
-int sync_file_range(int fd, off_t pos, off_t len, unsigned flags)
-{
+int sync_file_range(int fd, off_t pos, off_t len, unsigned flags) {
 #if defined(SYS_sync_file_range2)
-	return syscall(SYS_sync_file_range2, fd, flags,
-		__SYSCALL_LL_E(pos), __SYSCALL_LL_E(len));
+  return syscall(SYS_sync_file_range2, fd, flags, __SYSCALL_LL_E(pos),
+                 __SYSCALL_LL_E(len));
 #elif defined(SYS_sync_file_range)
-	return syscall(SYS_sync_file_range, fd,
-		__SYSCALL_LL_O(pos), __SYSCALL_LL_E(len), flags);
+  return syscall(SYS_sync_file_range, fd, __SYSCALL_LL_O(pos),
+                 __SYSCALL_LL_E(len), flags);
 #else
-	return __syscall_ret(-ENOSYS);
+  return __syscall_ret(-ENOSYS);
 #endif
 }
diff --git a/fusl/src/linux/syncfs.c b/fusl/src/linux/syncfs.c
index bc7d301..e1ea900 100644
--- a/fusl/src/linux/syncfs.c
+++ b/fusl/src/linux/syncfs.c
@@ -2,7 +2,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int syncfs(int fd)
-{
-	return syscall(SYS_syncfs, fd);
+int syncfs(int fd) {
+  return syscall(SYS_syncfs, fd);
 }
diff --git a/fusl/src/linux/sysinfo.c b/fusl/src/linux/sysinfo.c
index 4b5a798..a35f0f5 100644
--- a/fusl/src/linux/sysinfo.c
+++ b/fusl/src/linux/sysinfo.c
@@ -2,9 +2,8 @@
 #include "syscall.h"
 #include "libc.h"
 
-int __lsysinfo(struct sysinfo *info)
-{
-	return syscall(SYS_sysinfo, info);
+int __lsysinfo(struct sysinfo* info) {
+  return syscall(SYS_sysinfo, info);
 }
 
 weak_alias(__lsysinfo, sysinfo);
diff --git a/fusl/src/linux/tee.c b/fusl/src/linux/tee.c
index a24748c..43827ad 100644
--- a/fusl/src/linux/tee.c
+++ b/fusl/src/linux/tee.c
@@ -2,7 +2,6 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-ssize_t tee(int src, int dest, size_t len, unsigned flags)
-{
-	return syscall(SYS_tee, src, dest, len, flags);
+ssize_t tee(int src, int dest, size_t len, unsigned flags) {
+  return syscall(SYS_tee, src, dest, len, flags);
 }
diff --git a/fusl/src/linux/timerfd.c b/fusl/src/linux/timerfd.c
index 62cc277..b920600 100644
--- a/fusl/src/linux/timerfd.c
+++ b/fusl/src/linux/timerfd.c
@@ -1,17 +1,17 @@
 #include <sys/timerfd.h>
 #include "syscall.h"
 
-int timerfd_create(int clockid, int flags)
-{
-	return syscall(SYS_timerfd_create, clockid, flags);
+int timerfd_create(int clockid, int flags) {
+  return syscall(SYS_timerfd_create, clockid, flags);
 }
 
-int timerfd_settime(int fd, int flags, const struct itimerspec *new, struct itimerspec *old)
-{
-	return syscall(SYS_timerfd_settime, fd, flags, new, old);
+int timerfd_settime(int fd,
+                    int flags,
+                    const struct itimerspec* new,
+                    struct itimerspec* old) {
+  return syscall(SYS_timerfd_settime, fd, flags, new, old);
 }
 
-int timerfd_gettime(int fd, struct itimerspec *cur)
-{
-	return syscall(SYS_timerfd_gettime, fd, cur);
+int timerfd_gettime(int fd, struct itimerspec* cur) {
+  return syscall(SYS_timerfd_gettime, fd, cur);
 }
diff --git a/fusl/src/linux/unshare.c b/fusl/src/linux/unshare.c
index 3861db3..be37a15 100644
--- a/fusl/src/linux/unshare.c
+++ b/fusl/src/linux/unshare.c
@@ -2,7 +2,6 @@
 #include <sched.h>
 #include "syscall.h"
 
-int unshare(int flags)
-{
-	return syscall(SYS_unshare, flags);
+int unshare(int flags) {
+  return syscall(SYS_unshare, flags);
 }
diff --git a/fusl/src/linux/utimes.c b/fusl/src/linux/utimes.c
index b814c88..182e85e 100644
--- a/fusl/src/linux/utimes.c
+++ b/fusl/src/linux/utimes.c
@@ -2,9 +2,8 @@
 #include "fcntl.h"
 #include "syscall.h"
 
-int __futimesat(int, const char *, const struct timeval [2]);
+int __futimesat(int, const char*, const struct timeval[2]);
 
-int utimes(const char *path, const struct timeval times[2])
-{
-	return __futimesat(AT_FDCWD, path, times);
+int utimes(const char* path, const struct timeval times[2]) {
+  return __futimesat(AT_FDCWD, path, times);
 }
diff --git a/fusl/src/linux/vhangup.c b/fusl/src/linux/vhangup.c
index 0203071..2087723 100644
--- a/fusl/src/linux/vhangup.c
+++ b/fusl/src/linux/vhangup.c
@@ -2,7 +2,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int vhangup(void)
-{
-	return syscall(SYS_vhangup);
+int vhangup(void) {
+  return syscall(SYS_vhangup);
 }
diff --git a/fusl/src/linux/vmsplice.c b/fusl/src/linux/vmsplice.c
index ebf13ee..e635477 100644
--- a/fusl/src/linux/vmsplice.c
+++ b/fusl/src/linux/vmsplice.c
@@ -2,7 +2,6 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-ssize_t vmsplice(int fd, const struct iovec *iov, size_t cnt, unsigned flags)
-{
-	return syscall(SYS_vmsplice, fd, iov, cnt, flags);
+ssize_t vmsplice(int fd, const struct iovec* iov, size_t cnt, unsigned flags) {
+  return syscall(SYS_vmsplice, fd, iov, cnt, flags);
 }
diff --git a/fusl/src/linux/wait3.c b/fusl/src/linux/wait3.c
index 61c7359..29e9aaf 100644
--- a/fusl/src/linux/wait3.c
+++ b/fusl/src/linux/wait3.c
@@ -3,7 +3,6 @@
 #include <sys/resource.h>
 #include "syscall.h"
 
-pid_t wait3(int *status, int options, struct rusage *usage)
-{
-	return wait4(-1, status, options, usage);
+pid_t wait3(int* status, int options, struct rusage* usage) {
+  return wait4(-1, status, options, usage);
 }
diff --git a/fusl/src/linux/wait4.c b/fusl/src/linux/wait4.c
index 97f12cc..383d4af 100644
--- a/fusl/src/linux/wait4.c
+++ b/fusl/src/linux/wait4.c
@@ -3,7 +3,6 @@
 #include <sys/resource.h>
 #include "syscall.h"
 
-pid_t wait4(pid_t pid, int *status, int options, struct rusage *usage)
-{
-	return syscall(SYS_wait4, pid, status, options, usage);
+pid_t wait4(pid_t pid, int* status, int options, struct rusage* usage) {
+  return syscall(SYS_wait4, pid, status, options, usage);
 }
diff --git a/fusl/src/linux/x32/sysinfo.c b/fusl/src/linux/x32/sysinfo.c
index d1c1b14..2d4e75f 100644
--- a/fusl/src/linux/x32/sysinfo.c
+++ b/fusl/src/linux/x32/sysinfo.c
@@ -6,45 +6,45 @@
 #define kulong unsigned long long
 
 struct kernel_sysinfo {
-	klong uptime;
-	kulong loads[3];
-	kulong totalram;
-	kulong freeram;
-	kulong sharedram;
-	kulong bufferram;
-	kulong totalswap;
-	kulong freeswap;
-	short procs;
-	short pad;
-	kulong totalhigh;
-	kulong freehigh;
-	unsigned mem_unit;
+  klong uptime;
+  kulong loads[3];
+  kulong totalram;
+  kulong freeram;
+  kulong sharedram;
+  kulong bufferram;
+  kulong totalswap;
+  kulong freeswap;
+  short procs;
+  short pad;
+  kulong totalhigh;
+  kulong freehigh;
+  unsigned mem_unit;
 };
 
-int __lsysinfo(struct sysinfo *info)
-{
-	struct kernel_sysinfo tmp;
-	int ret = syscall(SYS_sysinfo, &tmp);
-	if(ret == -1) return ret;
-	info->uptime = tmp.uptime;
-	info->loads[0] = tmp.loads[0];
-	info->loads[1] = tmp.loads[1];
-	info->loads[2] = tmp.loads[2];
-	kulong shifts;
-	kulong max = tmp.totalram | tmp.totalswap;
-	__asm__("bsr %1,%0" : "=r"(shifts) : "r"(max));
-	shifts = shifts >= 32 ? shifts - 31 : 0;
-	info->totalram = tmp.totalram >> shifts;
-	info->freeram = tmp.freeram >> shifts;
-	info->sharedram = tmp.sharedram >> shifts;
-	info->bufferram = tmp.bufferram >> shifts;
-	info->totalswap = tmp.totalswap >> shifts;
-	info->freeswap = tmp.freeswap >> shifts;
-	info->procs = tmp.procs ;
-	info->totalhigh = tmp.totalhigh >> shifts;
-	info->freehigh = tmp.freehigh >> shifts;
-	info->mem_unit = (tmp.mem_unit ? tmp.mem_unit : 1) << shifts;
-	return ret;
+int __lsysinfo(struct sysinfo* info) {
+  struct kernel_sysinfo tmp;
+  int ret = syscall(SYS_sysinfo, &tmp);
+  if (ret == -1)
+    return ret;
+  info->uptime = tmp.uptime;
+  info->loads[0] = tmp.loads[0];
+  info->loads[1] = tmp.loads[1];
+  info->loads[2] = tmp.loads[2];
+  kulong shifts;
+  kulong max = tmp.totalram | tmp.totalswap;
+  __asm__("bsr %1,%0" : "=r"(shifts) : "r"(max));
+  shifts = shifts >= 32 ? shifts - 31 : 0;
+  info->totalram = tmp.totalram >> shifts;
+  info->freeram = tmp.freeram >> shifts;
+  info->sharedram = tmp.sharedram >> shifts;
+  info->bufferram = tmp.bufferram >> shifts;
+  info->totalswap = tmp.totalswap >> shifts;
+  info->freeswap = tmp.freeswap >> shifts;
+  info->procs = tmp.procs;
+  info->totalhigh = tmp.totalhigh >> shifts;
+  info->freehigh = tmp.freehigh >> shifts;
+  info->mem_unit = (tmp.mem_unit ? tmp.mem_unit : 1) << shifts;
+  return ret;
 }
 
 weak_alias(__lsysinfo, sysinfo);
diff --git a/fusl/src/linux/xattr.c b/fusl/src/linux/xattr.c
index fea0d20..2c007ae 100644
--- a/fusl/src/linux/xattr.c
+++ b/fusl/src/linux/xattr.c
@@ -1,62 +1,65 @@
 #include <sys/xattr.h>
 #include "syscall.h"
 
-ssize_t getxattr(const char *path, const char *name, void *value, size_t size)
-{
-	return syscall(SYS_getxattr, path, name, value, size);
+ssize_t getxattr(const char* path, const char* name, void* value, size_t size) {
+  return syscall(SYS_getxattr, path, name, value, size);
 }
 
-ssize_t lgetxattr(const char *path, const char *name, void *value, size_t size)
-{
-	return syscall(SYS_lgetxattr, path, name, value, size);
+ssize_t lgetxattr(const char* path,
+                  const char* name,
+                  void* value,
+                  size_t size) {
+  return syscall(SYS_lgetxattr, path, name, value, size);
 }
 
-ssize_t fgetxattr(int filedes, const char *name, void *value, size_t size)
-{
-	return syscall(SYS_fgetxattr, filedes, name, value, size);
+ssize_t fgetxattr(int filedes, const char* name, void* value, size_t size) {
+  return syscall(SYS_fgetxattr, filedes, name, value, size);
 }
 
-ssize_t listxattr(const char *path, char *list, size_t size)
-{
-	return syscall(SYS_listxattr, path, list, size);
+ssize_t listxattr(const char* path, char* list, size_t size) {
+  return syscall(SYS_listxattr, path, list, size);
 }
 
-ssize_t llistxattr(const char *path, char *list, size_t size)
-{
-	return syscall(SYS_llistxattr, path, list, size);
+ssize_t llistxattr(const char* path, char* list, size_t size) {
+  return syscall(SYS_llistxattr, path, list, size);
 }
 
-ssize_t flistxattr(int filedes, char *list, size_t size)
-{
-	return syscall(SYS_flistxattr, filedes, list, size);
+ssize_t flistxattr(int filedes, char* list, size_t size) {
+  return syscall(SYS_flistxattr, filedes, list, size);
 }
 
-int setxattr(const char *path, const char *name, const void *value, size_t size, int flags)
-{
-	return syscall(SYS_setxattr, path, name, value, size, flags);
+int setxattr(const char* path,
+             const char* name,
+             const void* value,
+             size_t size,
+             int flags) {
+  return syscall(SYS_setxattr, path, name, value, size, flags);
 }
 
-int lsetxattr(const char *path, const char *name, const void *value, size_t size, int flags)
-{
-	return syscall(SYS_lsetxattr, path, name, value, size, flags);
+int lsetxattr(const char* path,
+              const char* name,
+              const void* value,
+              size_t size,
+              int flags) {
+  return syscall(SYS_lsetxattr, path, name, value, size, flags);
 }
 
-int fsetxattr(int filedes, const char *name, const void *value, size_t size, int flags)
-{
-	return syscall(SYS_fsetxattr, filedes, name, value, size, flags);
+int fsetxattr(int filedes,
+              const char* name,
+              const void* value,
+              size_t size,
+              int flags) {
+  return syscall(SYS_fsetxattr, filedes, name, value, size, flags);
 }
 
-int removexattr(const char *path, const char *name)
-{
-	return syscall(SYS_removexattr, path, name);
+int removexattr(const char* path, const char* name) {
+  return syscall(SYS_removexattr, path, name);
 }
 
-int lremovexattr(const char *path, const char *name)
-{
-	return syscall(SYS_lremovexattr, path, name);
+int lremovexattr(const char* path, const char* name) {
+  return syscall(SYS_lremovexattr, path, name);
 }
 
-int fremovexattr(int fd, const char *name)
-{
-	return syscall(SYS_fremovexattr, fd, name);
+int fremovexattr(int fd, const char* name) {
+  return syscall(SYS_fremovexattr, fd, name);
 }
diff --git a/fusl/src/locale/__lctrans.c b/fusl/src/locale/__lctrans.c
index 107fe14..db80e15 100644
--- a/fusl/src/locale/__lctrans.c
+++ b/fusl/src/locale/__lctrans.c
@@ -2,19 +2,16 @@
 #include "locale_impl.h"
 #include "libc.h"
 
-static const char *dummy(const char *msg, const struct __locale_map *lm)
-{
-	return msg;
+static const char* dummy(const char* msg, const struct __locale_map* lm) {
+  return msg;
 }
 
 weak_alias(dummy, __lctrans_impl);
 
-const char *__lctrans(const char *msg, const struct __locale_map *lm)
-{
-	return __lctrans_impl(msg, lm);
+const char* __lctrans(const char* msg, const struct __locale_map* lm) {
+  return __lctrans_impl(msg, lm);
 }
 
-const char *__lctrans_cur(const char *msg)
-{
-	return __lctrans_impl(msg, CURRENT_LOCALE->cat[LC_MESSAGES]);
+const char* __lctrans_cur(const char* msg) {
+  return __lctrans_impl(msg, CURRENT_LOCALE->cat[LC_MESSAGES]);
 }
diff --git a/fusl/src/locale/__mo_lookup.c b/fusl/src/locale/__mo_lookup.c
index e821e12..21b4c73 100644
--- a/fusl/src/locale/__mo_lookup.c
+++ b/fusl/src/locale/__mo_lookup.c
@@ -1,42 +1,41 @@
 #include <stdint.h>
 #include <string.h>
 
-static inline uint32_t swapc(uint32_t x, int c)
-{
-	return c ? x>>24 | ((x>>8)&0xff00) | ((x<<8)&0xff0000) | x<<24 : x;
+static inline uint32_t swapc(uint32_t x, int c) {
+  return c ? x >> 24 | ((x >> 8) & 0xff00) | ((x << 8) & 0xff0000) | x << 24
+           : x;
 }
 
-const char *__mo_lookup(const void *p, size_t size, const char *s)
-{
-	const uint32_t *mo = p;
-	int sw = *mo - 0x950412de;
-	uint32_t b = 0, n = swapc(mo[2], sw);
-	uint32_t o = swapc(mo[3], sw);
-	uint32_t t = swapc(mo[4], sw);
-	if (n>=size/4 || o>=size-4*n || t>=size-4*n || ((o|t)%4))
-		return 0;
-	o/=4;
-	t/=4;
-	for (;;) {
-		uint32_t ol = swapc(mo[o+2*(b+n/2)], sw);
-		uint32_t os = swapc(mo[o+2*(b+n/2)+1], sw);
-		if (os >= size || ol >= size-os || ((char *)p)[os+ol])
-			return 0;
-		int sign = strcmp(s, (char *)p + os);
-		if (!sign) {
-			uint32_t tl = swapc(mo[t+2*(b+n/2)], sw);
-			uint32_t ts = swapc(mo[t+2*(b+n/2)+1], sw);
-			if (ts >= size || tl >= size-ts || ((char *)p)[ts+tl])
-				return 0;
-			return (char *)p + ts;
-		}
-		else if (n == 1) return 0;
-		else if (sign < 0)
-			n /= 2;
-		else {
-			b += n/2;
-			n -= n/2;
-		}
-	}
-	return 0;
+const char* __mo_lookup(const void* p, size_t size, const char* s) {
+  const uint32_t* mo = p;
+  int sw = *mo - 0x950412de;
+  uint32_t b = 0, n = swapc(mo[2], sw);
+  uint32_t o = swapc(mo[3], sw);
+  uint32_t t = swapc(mo[4], sw);
+  if (n >= size / 4 || o >= size - 4 * n || t >= size - 4 * n || ((o | t) % 4))
+    return 0;
+  o /= 4;
+  t /= 4;
+  for (;;) {
+    uint32_t ol = swapc(mo[o + 2 * (b + n / 2)], sw);
+    uint32_t os = swapc(mo[o + 2 * (b + n / 2) + 1], sw);
+    if (os >= size || ol >= size - os || ((char*)p)[os + ol])
+      return 0;
+    int sign = strcmp(s, (char*)p + os);
+    if (!sign) {
+      uint32_t tl = swapc(mo[t + 2 * (b + n / 2)], sw);
+      uint32_t ts = swapc(mo[t + 2 * (b + n / 2) + 1], sw);
+      if (ts >= size || tl >= size - ts || ((char*)p)[ts + tl])
+        return 0;
+      return (char*)p + ts;
+    } else if (n == 1)
+      return 0;
+    else if (sign < 0)
+      n /= 2;
+    else {
+      b += n / 2;
+      n -= n / 2;
+    }
+  }
+  return 0;
 }
diff --git a/fusl/src/locale/big5.h b/fusl/src/locale/big5.h
index 332ea3b..6783b7b 100644
--- a/fusl/src/locale/big5.h
+++ b/fusl/src/locale/big5.h
@@ -1,1085 +1,1263 @@
-12288,65292,12289,12290,65294,8231,65307,65306,65311,65281,65072,8230,8229,
-65104,65105,65106,183,65108,65109,65110,65111,65372,8211,65073,8212,65075,
-9588,65076,65103,65288,65289,65077,65078,65371,65373,65079,65080,12308,12309,
-65081,65082,12304,12305,65083,65084,12298,12299,65085,65086,12296,12297,65087,
-65088,12300,12301,65089,65090,12302,12303,65091,65092,65113,65114,65115,65116,
-65117,65118,8216,8217,8220,8221,12317,12318,8245,8242,65283,65286,65290,8251,
-167,12291,9675,9679,9651,9650,9678,9734,9733,9671,9670,9633,9632,9661,9660,
-12963,8453,175,65507,65343,717,65097,65098,65101,65102,65099,65100,65119,
-65120,65121,65291,65293,215,247,177,8730,65308,65310,65309,8806,8807,8800,
-8734,8786,8801,65122,65123,65124,65125,65126,65374,8745,8746,8869,8736,8735,
-8895,13266,13265,8747,8750,8757,8756,9792,9794,8853,8857,8593,8595,8592,8594,
-8598,8599,8601,8600,8741,8739,65295,65340,8725,65128,65284,65509,12306,65504,
-65505,65285,65312,8451,8457,65129,65130,65131,13269,13212,13213,13214,13262,
-13217,13198,13199,13252,176,20825,20827,20830,20829,20833,20835,21991,29929,
-31950,9601,9602,9603,9604,9605,9606,9607,9608,9615,9614,9613,9612,9611,9610,
-9609,9532,9524,9516,9508,9500,9620,9472,9474,9621,9484,9488,9492,9496,9581,
-9582,9584,9583,9552,9566,9578,9569,9698,9699,9701,9700,9585,9586,9587,65296,
-65297,65298,65299,65300,65301,65302,65303,65304,65305,8544,8545,8546,8547,
-8548,8549,8550,8551,8552,8553,12321,
-12322,12323,12324,12325,12326,12327,12328,12329,21313,21316,21317,65313,65314,
-65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,
-65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,65345,65346,
-65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,
-65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,913,914,915,
-916,917,918,919,920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,
-936,937,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,
-963,964,965,966,967,968,969,12549,12550,12551,12552,12553,12554,12555,12556,
-12557,12558,12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,
-12570,12571,12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,
-12583,12584,12585,729,713,714,711,715,9216,9217,9218,9219,9220,9221,9222,9223,
-9224,9225,9226,9227,9228,9229,9230,9231,9232,9233,9234,9235,9236,9237,9238,
-9239,9240,9241,9242,9243,9244,9245,9246,9247,9249,8364,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19968,20057,19969,19971,20035,20061,20102,
-20108,20154,20799,20837,20843,20960,20992,20993,21147,21269,21313,21340,21448,
-19977,19979,19976,19978,20011,20024,20961,20037,20040,20063,20062,20110,20129,
-20800,20995,21242,21315,21449,21475,22303,
-22763,22805,22823,22899,23376,23377,23379,23544,23567,23586,23608,23665,24029,
-24037,24049,24050,24051,24062,24178,24318,24331,24339,25165,19985,19984,19981,
-20013,20016,20025,20043,23609,20104,20113,20117,20114,20116,20130,20161,20160,
-20163,20166,20167,20173,20170,20171,20164,20803,20801,20839,20845,20846,20844,
-20887,20982,20998,20999,21000,21243,21246,21247,21270,21305,21320,21319,21317,
-21342,21380,21451,21450,21453,22764,22825,22827,22826,22829,23380,23569,23588,
-23610,23663,24052,24187,24319,24340,24341,24515,25096,25142,25163,25166,25903,
-25991,26007,26020,26041,26085,26352,26376,26408,27424,27490,27513,27595,27604,
-27611,27663,27700,28779,29226,29238,29243,29255,29273,29275,29356,29579,19993,
-19990,19989,19988,19992,20027,20045,20047,20046,20197,20184,20180,20181,20182,
-20183,20195,20196,20185,20190,20805,20804,20873,20874,20908,20985,20986,20984,
-21002,21152,21151,21253,21254,21271,21277,20191,21322,21321,21345,21344,21359,
-21358,21435,21487,21476,21491,21484,21486,21481,21480,21500,21496,21493,21483,
-21478,21482,21490,21489,21488,21477,21485,21499,22235,22234,22806,22830,22833,
-22900,22902,23381,23427,23612,24040,24039,24038,24066,24067,24179,24188,24321,
-24344,24343,24517,25098,25171,25172,25170,25169,26021,26086,26414,26412,26410,
-26411,26413,27491,27597,27665,27664,27704,27713,27712,27710,29359,29572,29577,
-29916,29926,29976,29983,29992,29993,30000,30001,30002,30003,30091,30333,30382,
-30399,30446,30683,30690,30707,31034,31166,31348,31435,19998,19999,20050,20051,
-20073,20121,20132,20134,20133,20223,20233,20249,20234,
-20245,20237,20240,20241,20239,20210,20214,20219,20208,20211,20221,20225,20235,
-20809,20807,20806,20808,20840,20849,20877,20912,21015,21009,21010,21006,21014,
-21155,21256,21281,21280,21360,21361,21513,21519,21516,21514,21520,21505,21515,
-21508,21521,21517,21512,21507,21518,21510,21522,22240,22238,22237,22323,22320,
-22312,22317,22316,22319,22313,22809,22810,22839,22840,22916,22904,22915,22909,
-22905,22914,22913,23383,23384,23431,23432,23429,23433,23546,23574,23673,24030,
-24070,24182,24180,24335,24347,24537,24534,25102,25100,25101,25104,25187,25179,
-25176,25910,26089,26088,26092,26093,26354,26355,26377,26429,26420,26417,26421,
-27425,27492,27515,27670,27741,27735,27737,27743,27744,27728,27733,27745,27739,
-27725,27726,28784,29279,29277,30334,31481,31859,31992,32566,32650,32701,32769,
-32771,32780,32786,32819,32895,32905,32907,32908,33251,33258,33267,33276,33292,
-33307,33311,33390,33394,33406,34411,34880,34892,34915,35199,38433,20018,20136,
-20301,20303,20295,20311,20318,20276,20315,20309,20272,20304,20305,20285,20282,
-20280,20291,20308,20284,20294,20323,20316,20320,20271,20302,20278,20313,20317,
-20296,20314,20812,20811,20813,20853,20918,20919,21029,21028,21033,21034,21032,
-21163,21161,21162,21164,21283,21363,21365,21533,21549,21534,21566,21542,21582,
-21543,21574,21571,21555,21576,21570,21531,21545,21578,21561,21563,21560,21550,
-21557,21558,21536,21564,21568,21553,21547,21535,21548,22250,22256,22244,22251,
-22346,22353,22336,22349,22343,22350,22334,22352,22351,22331,22767,22846,22941,
-22930,22952,22942,22947,22937,22934,22925,22948,22931,
-22922,22949,23389,23388,23386,23387,23436,23435,23439,23596,23616,23617,23615,
-23614,23696,23697,23700,23692,24043,24076,24207,24199,24202,24311,24324,24351,
-24420,24418,24439,24441,24536,24524,24535,24525,24561,24555,24568,24554,25106,
-25105,25220,25239,25238,25216,25206,25225,25197,25226,25212,25214,25209,25203,
-25234,25199,25240,25198,25237,25235,25233,25222,25913,25915,25912,26097,26356,
-26463,26446,26447,26448,26449,26460,26454,26462,26441,26438,26464,26451,26455,
-27493,27599,27714,27742,27801,27777,27784,27785,27781,27803,27754,27770,27792,
-27760,27788,27752,27798,27794,27773,27779,27762,27774,27764,27782,27766,27789,
-27796,27800,27778,28790,28796,28797,28792,29282,29281,29280,29380,29378,29590,
-29996,29995,30007,30008,30338,30447,30691,31169,31168,31167,31350,31995,32597,
-32918,32915,32925,32920,32923,32922,32946,33391,33426,33419,33421,35211,35282,
-35328,35895,35910,35925,35997,36196,36208,36275,36523,36554,36763,36784,36802,
-36806,36805,36804,24033,37009,37026,37034,37030,37027,37193,37318,37324,38450,
-38446,38449,38442,38444,20006,20054,20083,20107,20123,20126,20139,20140,20335,
-20381,20365,20339,20351,20332,20379,20363,20358,20355,20336,20341,20360,20329,
-20347,20374,20350,20367,20369,20346,20820,20818,20821,20841,20855,20854,20856,
-20925,20989,21051,21048,21047,21050,21040,21038,21046,21057,21182,21179,21330,
-21332,21331,21329,21350,21367,21368,21369,21462,21460,21463,21619,21621,21654,
-21624,21653,21632,21627,21623,21636,21650,21638,21628,21648,21617,21622,21644,
-21658,21602,21608,21643,21629,21646,22266,22403,22391,
-22378,22377,22369,22374,22372,22396,22812,22857,22855,22856,22852,22868,22974,
-22971,22996,22969,22958,22993,22982,22992,22989,22987,22995,22986,22959,22963,
-22994,22981,23391,23396,23395,23447,23450,23448,23452,23449,23451,23578,23624,
-23621,23622,23735,23713,23736,23721,23723,23729,23731,24088,24090,24086,24085,
-24091,24081,24184,24218,24215,24220,24213,24214,24310,24358,24359,24361,24448,
-24449,24447,24444,24541,24544,24573,24565,24575,24591,24596,24623,24629,24598,
-24618,24597,24609,24615,24617,24619,24603,25110,25109,25151,25150,25152,25215,
-25289,25292,25284,25279,25282,25273,25298,25307,25259,25299,25300,25291,25288,
-25256,25277,25276,25296,25305,25287,25293,25269,25306,25265,25304,25302,25303,
-25286,25260,25294,25918,26023,26044,26106,26132,26131,26124,26118,26114,26126,
-26112,26127,26133,26122,26119,26381,26379,26477,26507,26517,26481,26524,26483,
-26487,26503,26525,26519,26479,26480,26495,26505,26494,26512,26485,26522,26515,
-26492,26474,26482,27427,27494,27495,27519,27667,27675,27875,27880,27891,27825,
-27852,27877,27827,27837,27838,27836,27874,27819,27861,27859,27832,27844,27833,
-27841,27822,27863,27845,27889,27839,27835,27873,27867,27850,27820,27887,27868,
-27862,27872,28821,28814,28818,28810,28825,29228,29229,29240,29256,29287,29289,
-29376,29390,29401,29399,29392,29609,29608,29599,29611,29605,30013,30109,30105,
-30106,30340,30402,30450,30452,30693,30717,31038,31040,31041,31177,31176,31354,
-31353,31482,31998,32596,32652,32651,32773,32954,32933,32930,32945,32929,32939,
-32937,32948,32938,32943,33253,33278,33293,33459,33437,
-33433,33453,33469,33439,33465,33457,33452,33445,33455,33464,33443,33456,33470,
-33463,34382,34417,21021,34920,36555,36814,36820,36817,37045,37048,37041,37046,
-37319,37329,38263,38272,38428,38464,38463,38459,38468,38466,38585,38632,38738,
-38750,20127,20141,20142,20449,20405,20399,20415,20448,20433,20431,20445,20419,
-20406,20440,20447,20426,20439,20398,20432,20420,20418,20442,20430,20446,20407,
-20823,20882,20881,20896,21070,21059,21066,21069,21068,21067,21063,21191,21193,
-21187,21185,21261,21335,21371,21402,21467,21676,21696,21672,21710,21705,21688,
-21670,21683,21703,21698,21693,21674,21697,21700,21704,21679,21675,21681,21691,
-21673,21671,21695,22271,22402,22411,22432,22435,22434,22478,22446,22419,22869,
-22865,22863,22862,22864,23004,23000,23039,23011,23016,23043,23013,23018,23002,
-23014,23041,23035,23401,23459,23462,23460,23458,23461,23553,23630,23631,23629,
-23627,23769,23762,24055,24093,24101,24095,24189,24224,24230,24314,24328,24365,
-24421,24456,24453,24458,24459,24455,24460,24457,24594,24605,24608,24613,24590,
-24616,24653,24688,24680,24674,24646,24643,24684,24683,24682,24676,25153,25308,
-25366,25353,25340,25325,25345,25326,25341,25351,25329,25335,25327,25324,25342,
-25332,25361,25346,25919,25925,26027,26045,26082,26149,26157,26144,26151,26159,
-26143,26152,26161,26148,26359,26623,26579,26609,26580,26576,26604,26550,26543,
-26613,26601,26607,26564,26577,26548,26586,26597,26552,26575,26590,26611,26544,
-26585,26594,26589,26578,27498,27523,27526,27573,27602,27607,27679,27849,27915,
-27954,27946,27969,27941,27916,27953,27934,27927,27963,
-27965,27966,27958,27931,27893,27961,27943,27960,27945,27950,27957,27918,27947,
-28843,28858,28851,28844,28847,28845,28856,28846,28836,29232,29298,29295,29300,
-29417,29408,29409,29623,29642,29627,29618,29645,29632,29619,29978,29997,30031,
-30028,30030,30027,30123,30116,30117,30114,30115,30328,30342,30343,30344,30408,
-30406,30403,30405,30465,30457,30456,30473,30475,30462,30460,30471,30684,30722,
-30740,30732,30733,31046,31049,31048,31047,31161,31162,31185,31186,31179,31359,
-31361,31487,31485,31869,32002,32005,32000,32009,32007,32004,32006,32568,32654,
-32703,32772,32784,32781,32785,32822,32982,32997,32986,32963,32964,32972,32993,
-32987,32974,32990,32996,32989,33268,33314,33511,33539,33541,33507,33499,33510,
-33540,33509,33538,33545,33490,33495,33521,33537,33500,33492,33489,33502,33491,
-33503,33519,33542,34384,34425,34427,34426,34893,34923,35201,35284,35336,35330,
-35331,35998,36000,36212,36211,36276,36557,36556,36848,36838,36834,36842,36837,
-36845,36843,36836,36840,37066,37070,37057,37059,37195,37194,37325,38274,38480,
-38475,38476,38477,38754,38761,38859,38893,38899,38913,39080,39131,39135,39318,
-39321,20056,20147,20492,20493,20515,20463,20518,20517,20472,20521,20502,20486,
-20540,20511,20506,20498,20497,20474,20480,20500,20520,20465,20513,20491,20505,
-20504,20467,20462,20525,20522,20478,20523,20489,20860,20900,20901,20898,20941,
-20940,20934,20939,21078,21084,21076,21083,21085,21290,21375,21407,21405,21471,
-21736,21776,21761,21815,21756,21733,21746,21766,21754,21780,21737,21741,21729,
-21769,21742,21738,21734,21799,21767,21757,21775,22275,
-22276,22466,22484,22475,22467,22537,22799,22871,22872,22874,23057,23064,23068,
-23071,23067,23059,23020,23072,23075,23081,23077,23052,23049,23403,23640,23472,
-23475,23478,23476,23470,23477,23481,23480,23556,23633,23637,23632,23789,23805,
-23803,23786,23784,23792,23798,23809,23796,24046,24109,24107,24235,24237,24231,
-24369,24466,24465,24464,24665,24675,24677,24656,24661,24685,24681,24687,24708,
-24735,24730,24717,24724,24716,24709,24726,25159,25331,25352,25343,25422,25406,
-25391,25429,25410,25414,25423,25417,25402,25424,25405,25386,25387,25384,25421,
-25420,25928,25929,26009,26049,26053,26178,26185,26191,26179,26194,26188,26181,
-26177,26360,26388,26389,26391,26657,26680,26696,26694,26707,26681,26690,26708,
-26665,26803,26647,26700,26705,26685,26612,26704,26688,26684,26691,26666,26693,
-26643,26648,26689,27530,27529,27575,27683,27687,27688,27686,27684,27888,28010,
-28053,28040,28039,28006,28024,28023,27993,28051,28012,28041,28014,27994,28020,
-28009,28044,28042,28025,28037,28005,28052,28874,28888,28900,28889,28872,28879,
-29241,29305,29436,29433,29437,29432,29431,29574,29677,29705,29678,29664,29674,
-29662,30036,30045,30044,30042,30041,30142,30149,30151,30130,30131,30141,30140,
-30137,30146,30136,30347,30384,30410,30413,30414,30505,30495,30496,30504,30697,
-30768,30759,30776,30749,30772,30775,30757,30765,30752,30751,30770,31061,31056,
-31072,31071,31062,31070,31069,31063,31066,31204,31203,31207,31199,31206,31209,
-31192,31364,31368,31449,31494,31505,31881,32033,32023,32011,32010,32032,32034,
-32020,32016,32021,32026,32028,32013,32025,32027,32570,
-32607,32660,32709,32705,32774,32792,32789,32793,32791,32829,32831,33009,33026,
-33008,33029,33005,33012,33030,33016,33011,33032,33021,33034,33020,33007,33261,
-33260,33280,33296,33322,33323,33320,33324,33467,33579,33618,33620,33610,33592,
-33616,33609,33589,33588,33615,33586,33593,33590,33559,33600,33585,33576,33603,
-34388,34442,34474,34451,34468,34473,34444,34467,34460,34928,34935,34945,34946,
-34941,34937,35352,35344,35342,35340,35349,35338,35351,35347,35350,35343,35345,
-35912,35962,35961,36001,36002,36215,36524,36562,36564,36559,36785,36865,36870,
-36855,36864,36858,36852,36867,36861,36869,36856,37013,37089,37085,37090,37202,
-37197,37196,37336,37341,37335,37340,37337,38275,38498,38499,38497,38491,38493,
-38500,38488,38494,38587,39138,39340,39592,39640,39717,39730,39740,20094,20602,
-20605,20572,20551,20547,20556,20570,20553,20581,20598,20558,20565,20597,20596,
-20599,20559,20495,20591,20589,20828,20885,20976,21098,21103,21202,21209,21208,
-21205,21264,21263,21273,21311,21312,21310,21443,26364,21830,21866,21862,21828,
-21854,21857,21827,21834,21809,21846,21839,21845,21807,21860,21816,21806,21852,
-21804,21859,21811,21825,21847,22280,22283,22281,22495,22533,22538,22534,22496,
-22500,22522,22530,22581,22519,22521,22816,22882,23094,23105,23113,23142,23146,
-23104,23100,23138,23130,23110,23114,23408,23495,23493,23492,23490,23487,23494,
-23561,23560,23559,23648,23644,23645,23815,23814,23822,23835,23830,23842,23825,
-23849,23828,23833,23844,23847,23831,24034,24120,24118,24115,24119,24247,24248,
-24246,24245,24254,24373,24375,24407,24428,24425,24427,
-24471,24473,24478,24472,24481,24480,24476,24703,24739,24713,24736,24744,24779,
-24756,24806,24765,24773,24763,24757,24796,24764,24792,24789,24774,24799,24760,
-24794,24775,25114,25115,25160,25504,25511,25458,25494,25506,25509,25463,25447,
-25496,25514,25457,25513,25481,25475,25499,25451,25512,25476,25480,25497,25505,
-25516,25490,25487,25472,25467,25449,25448,25466,25949,25942,25937,25945,25943,
-21855,25935,25944,25941,25940,26012,26011,26028,26063,26059,26060,26062,26205,
-26202,26212,26216,26214,26206,26361,21207,26395,26753,26799,26786,26771,26805,
-26751,26742,26801,26791,26775,26800,26755,26820,26797,26758,26757,26772,26781,
-26792,26783,26785,26754,27442,27578,27627,27628,27691,28046,28092,28147,28121,
-28082,28129,28108,28132,28155,28154,28165,28103,28107,28079,28113,28078,28126,
-28153,28088,28151,28149,28101,28114,28186,28085,28122,28139,28120,28138,28145,
-28142,28136,28102,28100,28074,28140,28095,28134,28921,28937,28938,28925,28911,
-29245,29309,29313,29468,29467,29462,29459,29465,29575,29701,29706,29699,29702,
-29694,29709,29920,29942,29943,29980,29986,30053,30054,30050,30064,30095,30164,
-30165,30133,30154,30157,30350,30420,30418,30427,30519,30526,30524,30518,30520,
-30522,30827,30787,30798,31077,31080,31085,31227,31378,31381,31520,31528,31515,
-31532,31526,31513,31518,31534,31890,31895,31893,32070,32067,32113,32046,32057,
-32060,32064,32048,32051,32068,32047,32066,32050,32049,32573,32670,32666,32716,
-32718,32722,32796,32842,32838,33071,33046,33059,33067,33065,33072,33060,33282,
-33333,33335,33334,33337,33678,33694,33688,33656,33698,
-33686,33725,33707,33682,33674,33683,33673,33696,33655,33659,33660,33670,33703,
-34389,24426,34503,34496,34486,34500,34485,34502,34507,34481,34479,34505,34899,
-34974,34952,34987,34962,34966,34957,34955,35219,35215,35370,35357,35363,35365,
-35377,35373,35359,35355,35362,35913,35930,36009,36012,36011,36008,36010,36007,
-36199,36198,36286,36282,36571,36575,36889,36877,36890,36887,36899,36895,36893,
-36880,36885,36894,36896,36879,36898,36886,36891,36884,37096,37101,37117,37207,
-37326,37365,37350,37347,37351,37357,37353,38281,38506,38517,38515,38520,38512,
-38516,38518,38519,38508,38592,38634,38633,31456,31455,38914,38915,39770,40165,
-40565,40575,40613,40635,20642,20621,20613,20633,20625,20608,20630,20632,20634,
-26368,20977,21106,21108,21109,21097,21214,21213,21211,21338,21413,21883,21888,
-21927,21884,21898,21917,21912,21890,21916,21930,21908,21895,21899,21891,21939,
-21934,21919,21822,21938,21914,21947,21932,21937,21886,21897,21931,21913,22285,
-22575,22570,22580,22564,22576,22577,22561,22557,22560,22777,22778,22880,23159,
-23194,23167,23186,23195,23207,23411,23409,23506,23500,23507,23504,23562,23563,
-23601,23884,23888,23860,23879,24061,24133,24125,24128,24131,24190,24266,24257,
-24258,24260,24380,24429,24489,24490,24488,24785,24801,24754,24758,24800,24860,
-24867,24826,24853,24816,24827,24820,24936,24817,24846,24822,24841,24832,24850,
-25119,25161,25507,25484,25551,25536,25577,25545,25542,25549,25554,25571,25552,
-25569,25558,25581,25582,25462,25588,25578,25563,25682,25562,25593,25950,25958,
-25954,25955,26001,26000,26031,26222,26224,26228,26230,
-26223,26257,26234,26238,26231,26366,26367,26399,26397,26874,26837,26848,26840,
-26839,26885,26847,26869,26862,26855,26873,26834,26866,26851,26827,26829,26893,
-26898,26894,26825,26842,26990,26875,27454,27450,27453,27544,27542,27580,27631,
-27694,27695,27692,28207,28216,28244,28193,28210,28263,28234,28192,28197,28195,
-28187,28251,28248,28196,28246,28270,28205,28198,28271,28212,28237,28218,28204,
-28227,28189,28222,28363,28297,28185,28238,28259,28228,28274,28265,28255,28953,
-28954,28966,28976,28961,28982,29038,28956,29260,29316,29312,29494,29477,29492,
-29481,29754,29738,29747,29730,29733,29749,29750,29748,29743,29723,29734,29736,
-29989,29990,30059,30058,30178,30171,30179,30169,30168,30174,30176,30331,30332,
-30358,30355,30388,30428,30543,30701,30813,30828,30831,31245,31240,31243,31237,
-31232,31384,31383,31382,31461,31459,31561,31574,31558,31568,31570,31572,31565,
-31563,31567,31569,31903,31909,32094,32080,32104,32085,32043,32110,32114,32097,
-32102,32098,32112,32115,21892,32724,32725,32779,32850,32901,33109,33108,33099,
-33105,33102,33081,33094,33086,33100,33107,33140,33298,33308,33769,33795,33784,
-33805,33760,33733,33803,33729,33775,33777,33780,33879,33802,33776,33804,33740,
-33789,33778,33738,33848,33806,33796,33756,33799,33748,33759,34395,34527,34521,
-34541,34516,34523,34532,34512,34526,34903,35009,35010,34993,35203,35222,35387,
-35424,35413,35422,35388,35393,35412,35419,35408,35398,35380,35386,35382,35414,
-35937,35970,36015,36028,36019,36029,36033,36027,36032,36020,36023,36022,36031,
-36024,36234,36229,36225,36302,36317,36299,36314,36305,
-36300,36315,36294,36603,36600,36604,36764,36910,36917,36913,36920,36914,36918,
-37122,37109,37129,37118,37219,37221,37327,37396,37397,37411,37385,37406,37389,
-37392,37383,37393,38292,38287,38283,38289,38291,38290,38286,38538,38542,38539,
-38525,38533,38534,38541,38514,38532,38593,38597,38596,38598,38599,38639,38642,
-38860,38917,38918,38920,39143,39146,39151,39145,39154,39149,39342,39341,40643,
-40653,40657,20098,20653,20661,20658,20659,20677,20670,20652,20663,20667,20655,
-20679,21119,21111,21117,21215,21222,21220,21218,21219,21295,21983,21992,21971,
-21990,21966,21980,21959,21969,21987,21988,21999,21978,21985,21957,21958,21989,
-21961,22290,22291,22622,22609,22616,22615,22618,22612,22635,22604,22637,22602,
-22626,22610,22603,22887,23233,23241,23244,23230,23229,23228,23219,23234,23218,
-23913,23919,24140,24185,24265,24264,24338,24409,24492,24494,24858,24847,24904,
-24863,24819,24859,24825,24833,24840,24910,24908,24900,24909,24894,24884,24871,
-24845,24838,24887,25121,25122,25619,25662,25630,25642,25645,25661,25644,25615,
-25628,25620,25613,25654,25622,25623,25606,25964,26015,26032,26263,26249,26247,
-26248,26262,26244,26264,26253,26371,27028,26989,26970,26999,26976,26964,26997,
-26928,27010,26954,26984,26987,26974,26963,27001,27014,26973,26979,26971,27463,
-27506,27584,27583,27603,27645,28322,28335,28371,28342,28354,28304,28317,28359,
-28357,28325,28312,28348,28346,28331,28369,28310,28316,28356,28372,28330,28327,
-28340,29006,29017,29033,29028,29001,29031,29020,29036,29030,29004,29029,29022,
-28998,29032,29014,29242,29266,29495,29509,29503,29502,
-29807,29786,29781,29791,29790,29761,29759,29785,29787,29788,30070,30072,30208,
-30192,30209,30194,30193,30202,30207,30196,30195,30430,30431,30555,30571,30566,
-30558,30563,30585,30570,30572,30556,30565,30568,30562,30702,30862,30896,30871,
-30872,30860,30857,30844,30865,30867,30847,31098,31103,31105,33836,31165,31260,
-31258,31264,31252,31263,31262,31391,31392,31607,31680,31584,31598,31591,31921,
-31923,31925,32147,32121,32145,32129,32143,32091,32622,32617,32618,32626,32681,
-32680,32676,32854,32856,32902,32900,33137,33136,33144,33125,33134,33139,33131,
-33145,33146,33126,33285,33351,33922,33911,33853,33841,33909,33894,33899,33865,
-33900,33883,33852,33845,33889,33891,33897,33901,33862,34398,34396,34399,34553,
-34579,34568,34567,34560,34558,34555,34562,34563,34566,34570,34905,35039,35028,
-35033,35036,35032,35037,35041,35018,35029,35026,35228,35299,35435,35442,35443,
-35430,35433,35440,35463,35452,35427,35488,35441,35461,35437,35426,35438,35436,
-35449,35451,35390,35432,35938,35978,35977,36042,36039,36040,36036,36018,36035,
-36034,36037,36321,36319,36328,36335,36339,36346,36330,36324,36326,36530,36611,
-36617,36606,36618,36767,36786,36939,36938,36947,36930,36948,36924,36949,36944,
-36935,36943,36942,36941,36945,36926,36929,37138,37143,37228,37226,37225,37321,
-37431,37463,37432,37437,37440,37438,37467,37451,37476,37457,37428,37449,37453,
-37445,37433,37439,37466,38296,38552,38548,38549,38605,38603,38601,38602,38647,
-38651,38649,38646,38742,38772,38774,38928,38929,38931,38922,38930,38924,39164,
-39156,39165,39166,39347,39345,39348,39649,40169,40578,
-40718,40723,40736,20711,20718,20709,20694,20717,20698,20693,20687,20689,20721,
-20686,20713,20834,20979,21123,21122,21297,21421,22014,22016,22043,22039,22013,
-22036,22022,22025,22029,22030,22007,22038,22047,22024,22032,22006,22296,22294,
-22645,22654,22659,22675,22666,22649,22661,22653,22781,22821,22818,22820,22890,
-22889,23265,23270,23273,23255,23254,23256,23267,23413,23518,23527,23521,23525,
-23526,23528,23522,23524,23519,23565,23650,23940,23943,24155,24163,24149,24151,
-24148,24275,24278,24330,24390,24432,24505,24903,24895,24907,24951,24930,24931,
-24927,24922,24920,24949,25130,25735,25688,25684,25764,25720,25695,25722,25681,
-25703,25652,25709,25723,25970,26017,26071,26070,26274,26280,26269,27036,27048,
-27029,27073,27054,27091,27083,27035,27063,27067,27051,27060,27088,27085,27053,
-27084,27046,27075,27043,27465,27468,27699,28467,28436,28414,28435,28404,28457,
-28478,28448,28460,28431,28418,28450,28415,28399,28422,28465,28472,28466,28451,
-28437,28459,28463,28552,28458,28396,28417,28402,28364,28407,29076,29081,29053,
-29066,29060,29074,29246,29330,29334,29508,29520,29796,29795,29802,29808,29805,
-29956,30097,30247,30221,30219,30217,30227,30433,30435,30596,30589,30591,30561,
-30913,30879,30887,30899,30889,30883,31118,31119,31117,31278,31281,31402,31401,
-31469,31471,31649,31637,31627,31605,31639,31645,31636,31631,31672,31623,31620,
-31929,31933,31934,32187,32176,32156,32189,32190,32160,32202,32180,32178,32177,
-32186,32162,32191,32181,32184,32173,32210,32199,32172,32624,32736,32737,32735,
-32862,32858,32903,33104,33152,33167,33160,33162,33151,
-33154,33255,33274,33287,33300,33310,33355,33993,33983,33990,33988,33945,33950,
-33970,33948,33995,33976,33984,34003,33936,33980,34001,33994,34623,34588,34619,
-34594,34597,34612,34584,34645,34615,34601,35059,35074,35060,35065,35064,35069,
-35048,35098,35055,35494,35468,35486,35491,35469,35489,35475,35492,35498,35493,
-35496,35480,35473,35482,35495,35946,35981,35980,36051,36049,36050,36203,36249,
-36245,36348,36628,36626,36629,36627,36771,36960,36952,36956,36963,36953,36958,
-36962,36957,36955,37145,37144,37150,37237,37240,37239,37236,37496,37504,37509,
-37528,37526,37499,37523,37532,37544,37500,37521,38305,38312,38313,38307,38309,
-38308,38553,38556,38555,38604,38610,38656,38780,38789,38902,38935,38936,39087,
-39089,39171,39173,39180,39177,39361,39599,39600,39654,39745,39746,40180,40182,
-40179,40636,40763,40778,20740,20736,20731,20725,20729,20738,20744,20745,20741,
-20956,21127,21128,21129,21133,21130,21232,21426,22062,22075,22073,22066,22079,
-22068,22057,22099,22094,22103,22132,22070,22063,22064,22656,22687,22686,22707,
-22684,22702,22697,22694,22893,23305,23291,23307,23285,23308,23304,23534,23532,
-23529,23531,23652,23653,23965,23956,24162,24159,24161,24290,24282,24287,24285,
-24291,24288,24392,24433,24503,24501,24950,24935,24942,24925,24917,24962,24956,
-24944,24939,24958,24999,24976,25003,24974,25004,24986,24996,24980,25006,25134,
-25705,25711,25721,25758,25778,25736,25744,25776,25765,25747,25749,25769,25746,
-25774,25773,25771,25754,25772,25753,25762,25779,25973,25975,25976,26286,26283,
-26292,26289,27171,27167,27112,27137,27166,27161,27133,
-27169,27155,27146,27123,27138,27141,27117,27153,27472,27470,27556,27589,27590,
-28479,28540,28548,28497,28518,28500,28550,28525,28507,28536,28526,28558,28538,
-28528,28516,28567,28504,28373,28527,28512,28511,29087,29100,29105,29096,29270,
-29339,29518,29527,29801,29835,29827,29822,29824,30079,30240,30249,30239,30244,
-30246,30241,30242,30362,30394,30436,30606,30599,30604,30609,30603,30923,30917,
-30906,30922,30910,30933,30908,30928,31295,31292,31296,31293,31287,31291,31407,
-31406,31661,31665,31684,31668,31686,31687,31681,31648,31692,31946,32224,32244,
-32239,32251,32216,32236,32221,32232,32227,32218,32222,32233,32158,32217,32242,
-32249,32629,32631,32687,32745,32806,33179,33180,33181,33184,33178,33176,34071,
-34109,34074,34030,34092,34093,34067,34065,34083,34081,34068,34028,34085,34047,
-34054,34690,34676,34678,34656,34662,34680,34664,34649,34647,34636,34643,34907,
-34909,35088,35079,35090,35091,35093,35082,35516,35538,35527,35524,35477,35531,
-35576,35506,35529,35522,35519,35504,35542,35533,35510,35513,35547,35916,35918,
-35948,36064,36062,36070,36068,36076,36077,36066,36067,36060,36074,36065,36205,
-36255,36259,36395,36368,36381,36386,36367,36393,36383,36385,36382,36538,36637,
-36635,36639,36649,36646,36650,36636,36638,36645,36969,36974,36968,36973,36983,
-37168,37165,37159,37169,37255,37257,37259,37251,37573,37563,37559,37610,37548,
-37604,37569,37555,37564,37586,37575,37616,37554,38317,38321,38660,38662,38663,
-38665,38752,38797,38795,38799,38945,38955,38940,39091,39178,39187,39186,39192,
-39389,39376,39391,39387,39377,39381,39378,39385,39607,
-39662,39663,39719,39749,39748,39799,39791,40198,40201,40195,40617,40638,40654,
-22696,40786,20754,20760,20756,20752,20757,20864,20906,20957,21137,21139,21235,
-22105,22123,22137,22121,22116,22136,22122,22120,22117,22129,22127,22124,22114,
-22134,22721,22718,22727,22725,22894,23325,23348,23416,23536,23566,24394,25010,
-24977,25001,24970,25037,25014,25022,25034,25032,25136,25797,25793,25803,25787,
-25788,25818,25796,25799,25794,25805,25791,25810,25812,25790,25972,26310,26313,
-26297,26308,26311,26296,27197,27192,27194,27225,27243,27224,27193,27204,27234,
-27233,27211,27207,27189,27231,27208,27481,27511,27653,28610,28593,28577,28611,
-28580,28609,28583,28595,28608,28601,28598,28582,28576,28596,29118,29129,29136,
-29138,29128,29141,29113,29134,29145,29148,29123,29124,29544,29852,29859,29848,
-29855,29854,29922,29964,29965,30260,30264,30266,30439,30437,30624,30622,30623,
-30629,30952,30938,30956,30951,31142,31309,31310,31302,31308,31307,31418,31705,
-31761,31689,31716,31707,31713,31721,31718,31957,31958,32266,32273,32264,32283,
-32291,32286,32285,32265,32272,32633,32690,32752,32753,32750,32808,33203,33193,
-33192,33275,33288,33368,33369,34122,34137,34120,34152,34153,34115,34121,34157,
-34154,34142,34691,34719,34718,34722,34701,34913,35114,35122,35109,35115,35105,
-35242,35238,35558,35578,35563,35569,35584,35548,35559,35566,35582,35585,35586,
-35575,35565,35571,35574,35580,35947,35949,35987,36084,36420,36401,36404,36418,
-36409,36405,36667,36655,36664,36659,36776,36774,36981,36980,36984,36978,36988,
-36986,37172,37266,37664,37686,37624,37683,37679,37666,
-37628,37675,37636,37658,37648,37670,37665,37653,37678,37657,38331,38567,38568,
-38570,38613,38670,38673,38678,38669,38675,38671,38747,38748,38758,38808,38960,
-38968,38971,38967,38957,38969,38948,39184,39208,39198,39195,39201,39194,39405,
-39394,39409,39608,39612,39675,39661,39720,39825,40213,40227,40230,40232,40210,
-40219,40664,40660,40845,40860,20778,20767,20769,20786,21237,22158,22144,22160,
-22149,22151,22159,22741,22739,22737,22734,23344,23338,23332,23418,23607,23656,
-23996,23994,23997,23992,24171,24396,24509,25033,25026,25031,25062,25035,25138,
-25140,25806,25802,25816,25824,25840,25830,25836,25841,25826,25837,25986,25987,
-26329,26326,27264,27284,27268,27298,27292,27355,27299,27262,27287,27280,27296,
-27484,27566,27610,27656,28632,28657,28639,28640,28635,28644,28651,28655,28544,
-28652,28641,28649,28629,28654,28656,29159,29151,29166,29158,29157,29165,29164,
-29172,29152,29237,29254,29552,29554,29865,29872,29862,29864,30278,30274,30284,
-30442,30643,30634,30640,30636,30631,30637,30703,30967,30970,30964,30959,30977,
-31143,31146,31319,31423,31751,31757,31742,31735,31756,31712,31968,31964,31966,
-31970,31967,31961,31965,32302,32318,32326,32311,32306,32323,32299,32317,32305,
-32325,32321,32308,32313,32328,32309,32319,32303,32580,32755,32764,32881,32882,
-32880,32879,32883,33222,33219,33210,33218,33216,33215,33213,33225,33214,33256,
-33289,33393,34218,34180,34174,34204,34193,34196,34223,34203,34183,34216,34186,
-34407,34752,34769,34739,34770,34758,34731,34747,34746,34760,34763,35131,35126,
-35140,35128,35133,35244,35598,35607,35609,35611,35594,
-35616,35613,35588,35600,35905,35903,35955,36090,36093,36092,36088,36091,36264,
-36425,36427,36424,36426,36676,36670,36674,36677,36671,36991,36989,36996,36993,
-36994,36992,37177,37283,37278,37276,37709,37762,37672,37749,37706,37733,37707,
-37656,37758,37740,37723,37744,37722,37716,38346,38347,38348,38344,38342,38577,
-38584,38614,38684,38686,38816,38867,38982,39094,39221,39425,39423,39854,39851,
-39850,39853,40251,40255,40587,40655,40670,40668,40669,40667,40766,40779,21474,
-22165,22190,22745,22744,23352,24413,25059,25139,25844,25842,25854,25862,25850,
-25851,25847,26039,26332,26406,27315,27308,27331,27323,27320,27330,27310,27311,
-27487,27512,27567,28681,28683,28670,28678,28666,28689,28687,29179,29180,29182,
-29176,29559,29557,29863,29887,29973,30294,30296,30290,30653,30655,30651,30652,
-30990,31150,31329,31330,31328,31428,31429,31787,31783,31786,31774,31779,31777,
-31975,32340,32341,32350,32346,32353,32338,32345,32584,32761,32763,32887,32886,
-33229,33231,33290,34255,34217,34253,34256,34249,34224,34234,34233,34214,34799,
-34796,34802,34784,35206,35250,35316,35624,35641,35628,35627,35920,36101,36441,
-36451,36454,36452,36447,36437,36544,36681,36685,36999,36995,37000,37291,37292,
-37328,37780,37770,37782,37794,37811,37806,37804,37808,37784,37786,37783,38356,
-38358,38352,38357,38626,38620,38617,38619,38622,38692,38819,38822,38829,38905,
-38989,38991,38988,38990,38995,39098,39230,39231,39229,39214,39333,39438,39617,
-39683,39686,39759,39758,39757,39882,39881,39933,39880,39872,40273,40285,40288,
-40672,40725,40748,20787,22181,22750,22751,22754,23541,
-40848,24300,25074,25079,25078,25077,25856,25871,26336,26333,27365,27357,27354,
-27347,28699,28703,28712,28698,28701,28693,28696,29190,29197,29272,29346,29560,
-29562,29885,29898,29923,30087,30086,30303,30305,30663,31001,31153,31339,31337,
-31806,31807,31800,31805,31799,31808,32363,32365,32377,32361,32362,32645,32371,
-32694,32697,32696,33240,34281,34269,34282,34261,34276,34277,34295,34811,34821,
-34829,34809,34814,35168,35167,35158,35166,35649,35676,35672,35657,35674,35662,
-35663,35654,35673,36104,36106,36476,36466,36487,36470,36460,36474,36468,36692,
-36686,36781,37002,37003,37297,37294,37857,37841,37855,37827,37832,37852,37853,
-37846,37858,37837,37848,37860,37847,37864,38364,38580,38627,38698,38695,38753,
-38876,38907,39006,39000,39003,39100,39237,39241,39446,39449,39693,39912,39911,
-39894,39899,40329,40289,40306,40298,40300,40594,40599,40595,40628,21240,22184,
-22199,22198,22196,22204,22756,23360,23363,23421,23542,24009,25080,25082,25880,
-25876,25881,26342,26407,27372,28734,28720,28722,29200,29563,29903,30306,30309,
-31014,31018,31020,31019,31431,31478,31820,31811,31821,31983,31984,36782,32381,
-32380,32386,32588,32768,33242,33382,34299,34297,34321,34298,34310,34315,34311,
-34314,34836,34837,35172,35258,35320,35696,35692,35686,35695,35679,35691,36111,
-36109,36489,36481,36485,36482,37300,37323,37912,37891,37885,38369,38704,39108,
-39250,39249,39336,39467,39472,39479,39477,39955,39949,40569,40629,40680,40751,
-40799,40803,40801,20791,20792,22209,22208,22210,22804,23660,24013,25084,25086,
-25885,25884,26005,26345,27387,27396,27386,27570,28748,
-29211,29351,29910,29908,30313,30675,31824,32399,32396,32700,34327,34349,34330,
-34851,34850,34849,34847,35178,35180,35261,35700,35703,35709,36115,36490,36493,
-36491,36703,36783,37306,37934,37939,37941,37946,37944,37938,37931,38370,38712,
-38713,38706,38911,39015,39013,39255,39493,39491,39488,39486,39631,39764,39761,
-39981,39973,40367,40372,40386,40376,40605,40687,40729,40796,40806,40807,20796,
-20795,22216,22218,22217,23423,24020,24018,24398,25087,25892,27402,27489,28753,
-28760,29568,29924,30090,30318,30316,31155,31840,31839,32894,32893,33247,35186,
-35183,35324,35712,36118,36119,36497,36499,36705,37192,37956,37969,37970,38717,
-38718,38851,38849,39019,39253,39509,39501,39634,39706,40009,39985,39998,39995,
-40403,40407,40756,40812,40810,40852,22220,24022,25088,25891,25899,25898,26348,
-27408,29914,31434,31844,31843,31845,32403,32406,32404,33250,34360,34367,34865,
-35722,37008,37007,37987,37984,37988,38760,39023,39260,39514,39515,39511,39635,
-39636,39633,40020,40023,40022,40421,40607,40692,22225,22761,25900,28766,30321,
-30322,30679,32592,32648,34870,34873,34914,35731,35730,35734,33399,36123,37312,
-37994,38722,38728,38724,38854,39024,39519,39714,39768,40031,40441,40442,40572,
-40573,40711,40823,40818,24307,27414,28771,31852,31854,34875,35264,36513,37313,
-38002,38000,39025,39262,39638,39715,40652,28772,30682,35738,38007,38857,39522,
-39525,32412,35740,36522,37317,38013,38014,38012,40055,40056,40695,35924,38015,
-40474,29224,39530,39729,40475,40478,31858,9312,9313,9314,9315,9316,9317,9318,
-9319,9320,9321,9332,9333,9334,9335,9336,
-9337,9338,9339,9340,9341,8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,
-20022,20031,20101,20128,20866,20886,20907,21241,21304,21353,21430,22794,23424,
-24027,24186,24191,24308,24400,24417,25908,26080,30098,30326,36789,38582,168,
-710,12541,12542,12445,12446,0,0,12293,12294,12295,12540,65339,65341,10045,
-12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,12365,
-12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,12378,
-12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,12391,
-12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,12404,
-12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,12417,
-12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,12430,
-12431,12432,12433,12434,12435,12449,12450,12451,12452,12453,12454,12455,12456,
-12457,12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,
-12470,12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,
-12483,12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,
-12496,12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,
-12509,12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,
-12522,12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,
-1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,1053,
-1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,1068,
-1069,1070,
-1071,1072,1073,1074,1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,
-1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,
-1100,1101,1102,1103,8679,8632,8633,12751,204,20058,138,20994,17553,40880,
-20872,40881,30215,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,65506,65508,65287,65282,12849,8470,8481,12443,12444,11904,
-11908,11910,11911,11912,11914,11916,11917,11925,11932,11933,11941,11943,11946,
-11948,11950,11958,11964,11966,11974,11978,11980,11981,11983,11990,11991,11998,
-12003,0,0,0,643,592,603,596,629,339,248,331,650,618,20034,20060,20981,21274,
-21378,19975,19980,20039,20109,22231,64012,23662,24435,19983,20871,19982,20014,
-20115,20162,20169,20168,20888,21244,21356,21433,22304,22787,22828,23568,24063,
-26081,27571,27596,27668,29247,20017,20028,20200,20188,20201,20193,20189,20186,
-21004,21276,21324,22306,22307,22807,22831,23425,23428,23570,23611,23668,23667,
-24068,24192,24194,24521,25097,25168,27669,27702,27715,27711,27707,29358,29360,
-29578,31160,32906,38430,20238,20248,20268,20213,20244,20209,20224,20215,20232,
-20253,20226,20229,20258,20243,20228,20212,20242,20913,21011,21001,21008,21158,
-21282,21279,21325,21386,21511,22241,22239,22318,22314,22324,22844,22912,22908,
-22917,22907,22910,22903,22911,23382,23573,23589,23676,23674,23675,
-23678,24031,24181,24196,24322,24346,24436,24533,24532,24527,25180,25182,25188,
-25185,25190,25186,25177,25184,25178,25189,26095,26094,26430,26425,26424,26427,
-26426,26431,26428,26419,27672,27718,27730,27740,27727,27722,27732,27723,27724,
-28785,29278,29364,29365,29582,29994,30335,31349,32593,33400,33404,33408,33405,
-33407,34381,35198,37017,37015,37016,37019,37012,38434,38436,38432,38435,20310,
-20283,20322,20297,20307,20324,20286,20327,20306,20319,20289,20312,20269,20275,
-20287,20321,20879,20921,21020,21022,21025,21165,21166,21257,21347,21362,21390,
-21391,21552,21559,21546,21588,21573,21529,21532,21541,21528,21565,21583,21569,
-21544,21540,21575,22254,22247,22245,22337,22341,22348,22345,22347,22354,22790,
-22848,22950,22936,22944,22935,22926,22946,22928,22927,22951,22945,23438,23442,
-23592,23594,23693,23695,23688,23691,23689,23698,23690,23686,23699,23701,24032,
-24074,24078,24203,24201,24204,24200,24205,24325,24349,24440,24438,24530,24529,
-24528,24557,24552,24558,24563,24545,24548,24547,24570,24559,24567,24571,24576,
-24564,25146,25219,25228,25230,25231,25236,25223,25201,25211,25210,25200,25217,
-25224,25207,25213,25202,25204,25911,26096,26100,26099,26098,26101,26437,26439,
-26457,26453,26444,26440,26461,26445,26458,26443,27600,27673,27674,27768,27751,
-27755,27780,27787,27791,27761,27759,27753,27802,27757,27783,27797,27804,27750,
-27763,27749,27771,27790,28788,28794,29283,29375,29373,29379,29382,29377,29370,
-29381,29589,29591,29587,29588,29586,30010,30009,30100,30101,30337,31037,32820,
-32917,32921,32912,32914,32924,33424,33423,33413,33422,
-33425,33427,33418,33411,33412,35960,36809,36799,37023,37025,37029,37022,37031,
-37024,38448,38440,38447,38445,20019,20376,20348,20357,20349,20352,20359,20342,
-20340,20361,20356,20343,20300,20375,20330,20378,20345,20353,20344,20368,20380,
-20372,20382,20370,20354,20373,20331,20334,20894,20924,20926,21045,21042,21043,
-21062,21041,21180,21258,21259,21308,21394,21396,21639,21631,21633,21649,21634,
-21640,21611,21626,21630,21605,21612,21620,21606,21645,21615,21601,21600,21656,
-21603,21607,21604,22263,22265,22383,22386,22381,22379,22385,22384,22390,22400,
-22389,22395,22387,22388,22370,22376,22397,22796,22853,22965,22970,22991,22990,
-22962,22988,22977,22966,22972,22979,22998,22961,22973,22976,22984,22964,22983,
-23394,23397,23443,23445,23620,23623,23726,23716,23712,23733,23727,23720,23724,
-23711,23715,23725,23714,23722,23719,23709,23717,23734,23728,23718,24087,24084,
-24089,24360,24354,24355,24356,24404,24450,24446,24445,24542,24549,24621,24614,
-24601,24626,24587,24628,24586,24599,24627,24602,24606,24620,24610,24589,24592,
-24622,24595,24593,24588,24585,24604,25108,25149,25261,25268,25297,25278,25258,
-25270,25290,25262,25267,25263,25275,25257,25264,25272,25917,26024,26043,26121,
-26108,26116,26130,26120,26107,26115,26123,26125,26117,26109,26129,26128,26358,
-26378,26501,26476,26510,26514,26486,26491,26520,26502,26500,26484,26509,26508,
-26490,26527,26513,26521,26499,26493,26497,26488,26489,26516,27429,27520,27518,
-27614,27677,27795,27884,27883,27886,27865,27830,27860,27821,27879,27831,27856,
-27842,27834,27843,27846,27885,27890,27858,27869,27828,
-27786,27805,27776,27870,27840,27952,27853,27847,27824,27897,27855,27881,27857,
-28820,28824,28805,28819,28806,28804,28817,28822,28802,28826,28803,29290,29398,
-29387,29400,29385,29404,29394,29396,29402,29388,29393,29604,29601,29613,29606,
-29602,29600,29612,29597,29917,29928,30015,30016,30014,30092,30104,30383,30451,
-30449,30448,30453,30712,30716,30713,30715,30714,30711,31042,31039,31173,31352,
-31355,31483,31861,31997,32821,32911,32942,32931,32952,32949,32941,33312,33440,
-33472,33451,33434,33432,33435,33461,33447,33454,33468,33438,33466,33460,33448,
-33441,33449,33474,33444,33475,33462,33442,34416,34415,34413,34414,35926,36818,
-36811,36819,36813,36822,36821,36823,37042,37044,37039,37043,37040,38457,38461,
-38460,38458,38467,20429,20421,20435,20402,20425,20427,20417,20436,20444,20441,
-20411,20403,20443,20423,20438,20410,20416,20409,20460,21060,21065,21184,21186,
-21309,21372,21399,21398,21401,21400,21690,21665,21677,21669,21711,21699,33549,
-21687,21678,21718,21686,21701,21702,21664,21616,21692,21666,21694,21618,21726,
-21680,22453,22430,22431,22436,22412,22423,22429,22427,22420,22424,22415,22425,
-22437,22426,22421,22772,22797,22867,23009,23006,23022,23040,23025,23005,23034,
-23037,23036,23030,23012,23026,23031,23003,23017,23027,23029,23008,23038,23028,
-23021,23464,23628,23760,23768,23756,23767,23755,23771,23774,23770,23753,23751,
-23754,23766,23763,23764,23759,23752,23750,23758,23775,23800,24057,24097,24098,
-24099,24096,24100,24240,24228,24226,24219,24227,24229,24327,24366,24406,24454,
-24631,24633,24660,24690,24670,24645,24659,24647,24649,
-24667,24652,24640,24642,24671,24612,24644,24664,24678,24686,25154,25155,25295,
-25357,25355,25333,25358,25347,25323,25337,25359,25356,25336,25334,25344,25363,
-25364,25338,25365,25339,25328,25921,25923,26026,26047,26166,26145,26162,26165,
-26140,26150,26146,26163,26155,26170,26141,26164,26169,26158,26383,26384,26561,
-26610,26568,26554,26588,26555,26616,26584,26560,26551,26565,26603,26596,26591,
-26549,26573,26547,26615,26614,26606,26595,26562,26553,26574,26599,26608,26546,
-26620,26566,26605,26572,26542,26598,26587,26618,26569,26570,26563,26602,26571,
-27432,27522,27524,27574,27606,27608,27616,27680,27681,27944,27956,27949,27935,
-27964,27967,27922,27914,27866,27955,27908,27929,27962,27930,27921,27904,27933,
-27970,27905,27928,27959,27907,27919,27968,27911,27936,27948,27912,27938,27913,
-27920,28855,28831,28862,28849,28848,28833,28852,28853,28841,29249,29257,29258,
-29292,29296,29299,29294,29386,29412,29416,29419,29407,29418,29414,29411,29573,
-29644,29634,29640,29637,29625,29622,29621,29620,29675,29631,29639,29630,29635,
-29638,29624,29643,29932,29934,29998,30023,30024,30119,30122,30329,30404,30472,
-30467,30468,30469,30474,30455,30459,30458,30695,30696,30726,30737,30738,30725,
-30736,30735,30734,30729,30723,30739,31050,31052,31051,31045,31044,31189,31181,
-31183,31190,31182,31360,31358,31441,31488,31489,31866,31864,31865,31871,31872,
-31873,32003,32008,32001,32600,32657,32653,32702,32775,32782,32783,32788,32823,
-32984,32967,32992,32977,32968,32962,32976,32965,32995,32985,32988,32970,32981,
-32969,32975,32983,32998,32973,33279,33313,33428,33497,
-33534,33529,33543,33512,33536,33493,33594,33515,33494,33524,33516,33505,33522,
-33525,33548,33531,33526,33520,33514,33508,33504,33530,33523,33517,34423,34420,
-34428,34419,34881,34894,34919,34922,34921,35283,35332,35335,36210,36835,36833,
-36846,36832,37105,37053,37055,37077,37061,37054,37063,37067,37064,37332,37331,
-38484,38479,38481,38483,38474,38478,20510,20485,20487,20499,20514,20528,20507,
-20469,20468,20531,20535,20524,20470,20471,20503,20508,20512,20519,20533,20527,
-20529,20494,20826,20884,20883,20938,20932,20933,20936,20942,21089,21082,21074,
-21086,21087,21077,21090,21197,21262,21406,21798,21730,21783,21778,21735,21747,
-21732,21786,21759,21764,21768,21739,21777,21765,21745,21770,21755,21751,21752,
-21728,21774,21763,21771,22273,22274,22476,22578,22485,22482,22458,22470,22461,
-22460,22456,22454,22463,22471,22480,22457,22465,22798,22858,23065,23062,23085,
-23086,23061,23055,23063,23050,23070,23091,23404,23463,23469,23468,23555,23638,
-23636,23788,23807,23790,23793,23799,23808,23801,24105,24104,24232,24238,24234,
-24236,24371,24368,24423,24669,24666,24679,24641,24738,24712,24704,24722,24705,
-24733,24707,24725,24731,24727,24711,24732,24718,25113,25158,25330,25360,25430,
-25388,25412,25413,25398,25411,25572,25401,25419,25418,25404,25385,25409,25396,
-25432,25428,25433,25389,25415,25395,25434,25425,25400,25431,25408,25416,25930,
-25926,26054,26051,26052,26050,26186,26207,26183,26193,26386,26387,26655,26650,
-26697,26674,26675,26683,26699,26703,26646,26673,26652,26677,26667,26669,26671,
-26702,26692,26676,26653,26642,26644,26662,26664,26670,
-26701,26682,26661,26656,27436,27439,27437,27441,27444,27501,32898,27528,27622,
-27620,27624,27619,27618,27623,27685,28026,28003,28004,28022,27917,28001,28050,
-27992,28002,28013,28015,28049,28045,28143,28031,28038,27998,28007,28000,28055,
-28016,28028,27999,28034,28056,27951,28008,28043,28030,28032,28036,27926,28035,
-28027,28029,28021,28048,28892,28883,28881,28893,28875,32569,28898,28887,28882,
-28894,28896,28884,28877,28869,28870,28871,28890,28878,28897,29250,29304,29303,
-29302,29440,29434,29428,29438,29430,29427,29435,29441,29651,29657,29669,29654,
-29628,29671,29667,29673,29660,29650,29659,29652,29661,29658,29655,29656,29672,
-29918,29919,29940,29941,29985,30043,30047,30128,30145,30139,30148,30144,30143,
-30134,30138,30346,30409,30493,30491,30480,30483,30482,30499,30481,30485,30489,
-30490,30498,30503,30755,30764,30754,30773,30767,30760,30766,30763,30753,30761,
-30771,30762,30769,31060,31067,31055,31068,31059,31058,31057,31211,31212,31200,
-31214,31213,31210,31196,31198,31197,31366,31369,31365,31371,31372,31370,31367,
-31448,31504,31492,31507,31493,31503,31496,31498,31502,31497,31506,31876,31889,
-31882,31884,31880,31885,31877,32030,32029,32017,32014,32024,32022,32019,32031,
-32018,32015,32012,32604,32609,32606,32608,32605,32603,32662,32658,32707,32706,
-32704,32790,32830,32825,33018,33010,33017,33013,33025,33019,33024,33281,33327,
-33317,33587,33581,33604,33561,33617,33573,33622,33599,33601,33574,33564,33570,
-33602,33614,33563,33578,33544,33596,33613,33558,33572,33568,33591,33583,33577,
-33607,33605,33612,33619,33566,33580,33611,33575,33608,
-34387,34386,34466,34472,34454,34445,34449,34462,34439,34455,34438,34443,34458,
-34437,34469,34457,34465,34471,34453,34456,34446,34461,34448,34452,34883,34884,
-34925,34933,34934,34930,34944,34929,34943,34927,34947,34942,34932,34940,35346,
-35911,35927,35963,36004,36003,36214,36216,36277,36279,36278,36561,36563,36862,
-36853,36866,36863,36859,36868,36860,36854,37078,37088,37081,37082,37091,37087,
-37093,37080,37083,37079,37084,37092,37200,37198,37199,37333,37346,37338,38492,
-38495,38588,39139,39647,39727,20095,20592,20586,20577,20574,20576,20563,20555,
-20573,20594,20552,20557,20545,20571,20554,20578,20501,20549,20575,20585,20587,
-20579,20580,20550,20544,20590,20595,20567,20561,20944,21099,21101,21100,21102,
-21206,21203,21293,21404,21877,21878,21820,21837,21840,21812,21802,21841,21858,
-21814,21813,21808,21842,21829,21772,21810,21861,21838,21817,21832,21805,21819,
-21824,21835,22282,22279,22523,22548,22498,22518,22492,22516,22528,22509,22525,
-22536,22520,22539,22515,22479,22535,22510,22499,22514,22501,22508,22497,22542,
-22524,22544,22503,22529,22540,22513,22505,22512,22541,22532,22876,23136,23128,
-23125,23143,23134,23096,23093,23149,23120,23135,23141,23148,23123,23140,23127,
-23107,23133,23122,23108,23131,23112,23182,23102,23117,23097,23116,23152,23145,
-23111,23121,23126,23106,23132,23410,23406,23489,23488,23641,23838,23819,23837,
-23834,23840,23820,23848,23821,23846,23845,23823,23856,23826,23843,23839,23854,
-24126,24116,24241,24244,24249,24242,24243,24374,24376,24475,24470,24479,24714,
-24720,24710,24766,24752,24762,24787,24788,24783,24804,
-24793,24797,24776,24753,24795,24759,24778,24767,24771,24781,24768,25394,25445,
-25482,25474,25469,25533,25502,25517,25501,25495,25515,25486,25455,25479,25488,
-25454,25519,25461,25500,25453,25518,25468,25508,25403,25503,25464,25477,25473,
-25489,25485,25456,25939,26061,26213,26209,26203,26201,26204,26210,26392,26745,
-26759,26768,26780,26733,26734,26798,26795,26966,26735,26787,26796,26793,26741,
-26740,26802,26767,26743,26770,26748,26731,26738,26794,26752,26737,26750,26779,
-26774,26763,26784,26761,26788,26744,26747,26769,26764,26762,26749,27446,27443,
-27447,27448,27537,27535,27533,27534,27532,27690,28096,28075,28084,28083,28276,
-28076,28137,28130,28087,28150,28116,28160,28104,28128,28127,28118,28094,28133,
-28124,28125,28123,28148,28106,28093,28141,28144,28090,28117,28098,28111,28105,
-28112,28146,28115,28157,28119,28109,28131,28091,28922,28941,28919,28951,28916,
-28940,28912,28932,28915,28944,28924,28927,28934,28947,28928,28920,28918,28939,
-28930,28942,29310,29307,29308,29311,29469,29463,29447,29457,29464,29450,29448,
-29439,29455,29470,29576,29686,29688,29685,29700,29697,29693,29703,29696,29690,
-29692,29695,29708,29707,29684,29704,30052,30051,30158,30162,30159,30155,30156,
-30161,30160,30351,30345,30419,30521,30511,30509,30513,30514,30516,30515,30525,
-30501,30523,30517,30792,30802,30793,30797,30794,30796,30758,30789,30800,31076,
-31079,31081,31082,31075,31083,31073,31163,31226,31224,31222,31223,31375,31380,
-31376,31541,31559,31540,31525,31536,31522,31524,31539,31512,31530,31517,31537,
-31531,31533,31535,31538,31544,31514,31523,31892,31896,
-31894,31907,32053,32061,32056,32054,32058,32069,32044,32041,32065,32071,32062,
-32063,32074,32059,32040,32611,32661,32668,32669,32667,32714,32715,32717,32720,
-32721,32711,32719,32713,32799,32798,32795,32839,32835,32840,33048,33061,33049,
-33051,33069,33055,33068,33054,33057,33045,33063,33053,33058,33297,33336,33331,
-33338,33332,33330,33396,33680,33699,33704,33677,33658,33651,33700,33652,33679,
-33665,33685,33689,33653,33684,33705,33661,33667,33676,33693,33691,33706,33675,
-33662,33701,33711,33672,33687,33712,33663,33702,33671,33710,33654,33690,34393,
-34390,34495,34487,34498,34497,34501,34490,34480,34504,34489,34483,34488,34508,
-34484,34491,34492,34499,34493,34494,34898,34953,34965,34984,34978,34986,34970,
-34961,34977,34975,34968,34983,34969,34971,34967,34980,34988,34956,34963,34958,
-35202,35286,35289,35285,35376,35367,35372,35358,35897,35899,35932,35933,35965,
-36005,36221,36219,36217,36284,36290,36281,36287,36289,36568,36574,36573,36572,
-36567,36576,36577,36900,36875,36881,36892,36876,36897,37103,37098,37104,37108,
-37106,37107,37076,37099,37100,37097,37206,37208,37210,37203,37205,37356,37364,
-37361,37363,37368,37348,37369,37354,37355,37367,37352,37358,38266,38278,38280,
-38524,38509,38507,38513,38511,38591,38762,38916,39141,39319,20635,20629,20628,
-20638,20619,20643,20611,20620,20622,20637,20584,20636,20626,20610,20615,20831,
-20948,21266,21265,21412,21415,21905,21928,21925,21933,21879,22085,21922,21907,
-21896,21903,21941,21889,21923,21906,21924,21885,21900,21926,21887,21909,21921,
-21902,22284,22569,22583,22553,22558,22567,22563,22568,
-22517,22600,22565,22556,22555,22579,22591,22582,22574,22585,22584,22573,22572,
-22587,22881,23215,23188,23199,23162,23202,23198,23160,23206,23164,23205,23212,
-23189,23214,23095,23172,23178,23191,23171,23179,23209,23163,23165,23180,23196,
-23183,23187,23197,23530,23501,23499,23508,23505,23498,23502,23564,23600,23863,
-23875,23915,23873,23883,23871,23861,23889,23886,23893,23859,23866,23890,23869,
-23857,23897,23874,23865,23881,23864,23868,23858,23862,23872,23877,24132,24129,
-24408,24486,24485,24491,24777,24761,24780,24802,24782,24772,24852,24818,24842,
-24854,24837,24821,24851,24824,24828,24830,24769,24835,24856,24861,24848,24831,
-24836,24843,25162,25492,25521,25520,25550,25573,25576,25583,25539,25757,25587,
-25546,25568,25590,25557,25586,25589,25697,25567,25534,25565,25564,25540,25560,
-25555,25538,25543,25548,25547,25544,25584,25559,25561,25906,25959,25962,25956,
-25948,25960,25957,25996,26013,26014,26030,26064,26066,26236,26220,26235,26240,
-26225,26233,26218,26226,26369,26892,26835,26884,26844,26922,26860,26858,26865,
-26895,26838,26871,26859,26852,26870,26899,26896,26867,26849,26887,26828,26888,
-26992,26804,26897,26863,26822,26900,26872,26832,26877,26876,26856,26891,26890,
-26903,26830,26824,26845,26846,26854,26868,26833,26886,26836,26857,26901,26917,
-26823,27449,27451,27455,27452,27540,27543,27545,27541,27581,27632,27634,27635,
-27696,28156,28230,28231,28191,28233,28296,28220,28221,28229,28258,28203,28223,
-28225,28253,28275,28188,28211,28235,28224,28241,28219,28163,28206,28254,28264,
-28252,28257,28209,28200,28256,28273,28267,28217,28194,
-28208,28243,28261,28199,28280,28260,28279,28245,28281,28242,28262,28213,28214,
-28250,28960,28958,28975,28923,28974,28977,28963,28965,28962,28978,28959,28968,
-28986,28955,29259,29274,29320,29321,29318,29317,29323,29458,29451,29488,29474,
-29489,29491,29479,29490,29485,29478,29475,29493,29452,29742,29740,29744,29739,
-29718,29722,29729,29741,29745,29732,29731,29725,29737,29728,29746,29947,29999,
-30063,30060,30183,30170,30177,30182,30173,30175,30180,30167,30357,30354,30426,
-30534,30535,30532,30541,30533,30538,30542,30539,30540,30686,30700,30816,30820,
-30821,30812,30829,30833,30826,30830,30832,30825,30824,30814,30818,31092,31091,
-31090,31088,31234,31242,31235,31244,31236,31385,31462,31460,31562,31547,31556,
-31560,31564,31566,31552,31576,31557,31906,31902,31912,31905,32088,32111,32099,
-32083,32086,32103,32106,32079,32109,32092,32107,32082,32084,32105,32081,32095,
-32078,32574,32575,32613,32614,32674,32672,32673,32727,32849,32847,32848,33022,
-32980,33091,33098,33106,33103,33095,33085,33101,33082,33254,33262,33271,33272,
-33273,33284,33340,33341,33343,33397,33595,33743,33785,33827,33728,33768,33810,
-33767,33764,33788,33782,33808,33734,33736,33771,33763,33727,33793,33757,33765,
-33752,33791,33761,33739,33742,33750,33781,33737,33801,33807,33758,33809,33798,
-33730,33779,33749,33786,33735,33745,33770,33811,33731,33772,33774,33732,33787,
-33751,33762,33819,33755,33790,34520,34530,34534,34515,34531,34522,34538,34525,
-34539,34524,34540,34537,34519,34536,34513,34888,34902,34901,35002,35031,35001,
-35000,35008,35006,34998,35004,34999,35005,34994,35073,
-35017,35221,35224,35223,35293,35290,35291,35406,35405,35385,35417,35392,35415,
-35416,35396,35397,35410,35400,35409,35402,35404,35407,35935,35969,35968,36026,
-36030,36016,36025,36021,36228,36224,36233,36312,36307,36301,36295,36310,36316,
-36303,36309,36313,36296,36311,36293,36591,36599,36602,36601,36582,36590,36581,
-36597,36583,36584,36598,36587,36593,36588,36596,36585,36909,36916,36911,37126,
-37164,37124,37119,37116,37128,37113,37115,37121,37120,37127,37125,37123,37217,
-37220,37215,37218,37216,37377,37386,37413,37379,37402,37414,37391,37388,37376,
-37394,37375,37373,37382,37380,37415,37378,37404,37412,37401,37399,37381,37398,
-38267,38285,38284,38288,38535,38526,38536,38537,38531,38528,38594,38600,38595,
-38641,38640,38764,38768,38766,38919,39081,39147,40166,40697,20099,20100,20150,
-20669,20671,20678,20654,20676,20682,20660,20680,20674,20656,20673,20666,20657,
-20683,20681,20662,20664,20951,21114,21112,21115,21116,21955,21979,21964,21968,
-21963,21962,21981,21952,21972,21956,21993,21951,21970,21901,21967,21973,21986,
-21974,21960,22002,21965,21977,21954,22292,22611,22632,22628,22607,22605,22601,
-22639,22613,22606,22621,22617,22629,22619,22589,22627,22641,22780,23239,23236,
-23243,23226,23224,23217,23221,23216,23231,23240,23227,23238,23223,23232,23242,
-23220,23222,23245,23225,23184,23510,23512,23513,23583,23603,23921,23907,23882,
-23909,23922,23916,23902,23912,23911,23906,24048,24143,24142,24138,24141,24139,
-24261,24268,24262,24267,24263,24384,24495,24493,24823,24905,24906,24875,24901,
-24886,24882,24878,24902,24879,24911,24873,24896,25120,
-37224,25123,25125,25124,25541,25585,25579,25616,25618,25609,25632,25636,25651,
-25667,25631,25621,25624,25657,25655,25634,25635,25612,25638,25648,25640,25665,
-25653,25647,25610,25626,25664,25637,25639,25611,25575,25627,25646,25633,25614,
-25967,26002,26067,26246,26252,26261,26256,26251,26250,26265,26260,26232,26400,
-26982,26975,26936,26958,26978,26993,26943,26949,26986,26937,26946,26967,26969,
-27002,26952,26953,26933,26988,26931,26941,26981,26864,27000,26932,26985,26944,
-26991,26948,26998,26968,26945,26996,26956,26939,26955,26935,26972,26959,26961,
-26930,26962,26927,27003,26940,27462,27461,27459,27458,27464,27457,27547,64013,
-27643,27644,27641,27639,27640,28315,28374,28360,28303,28352,28319,28307,28308,
-28320,28337,28345,28358,28370,28349,28353,28318,28361,28343,28336,28365,28326,
-28367,28338,28350,28355,28380,28376,28313,28306,28302,28301,28324,28321,28351,
-28339,28368,28362,28311,28334,28323,28999,29012,29010,29027,29024,28993,29021,
-29026,29042,29048,29034,29025,28994,29016,28995,29003,29040,29023,29008,29011,
-28996,29005,29018,29263,29325,29324,29329,29328,29326,29500,29506,29499,29498,
-29504,29514,29513,29764,29770,29771,29778,29777,29783,29760,29775,29776,29774,
-29762,29766,29773,29780,29921,29951,29950,29949,29981,30073,30071,27011,30191,
-30223,30211,30199,30206,30204,30201,30200,30224,30203,30198,30189,30197,30205,
-30361,30389,30429,30549,30559,30560,30546,30550,30554,30569,30567,30548,30553,
-30573,30688,30855,30874,30868,30863,30852,30869,30853,30854,30881,30851,30841,
-30873,30848,30870,30843,31100,31106,31101,31097,31249,
-31256,31257,31250,31255,31253,31266,31251,31259,31248,31395,31394,31390,31467,
-31590,31588,31597,31604,31593,31602,31589,31603,31601,31600,31585,31608,31606,
-31587,31922,31924,31919,32136,32134,32128,32141,32127,32133,32122,32142,32123,
-32131,32124,32140,32148,32132,32125,32146,32621,32619,32615,32616,32620,32678,
-32677,32679,32731,32732,32801,33124,33120,33143,33116,33129,33115,33122,33138,
-26401,33118,33142,33127,33135,33092,33121,33309,33353,33348,33344,33346,33349,
-34033,33855,33878,33910,33913,33935,33933,33893,33873,33856,33926,33895,33840,
-33869,33917,33882,33881,33908,33907,33885,34055,33886,33847,33850,33844,33914,
-33859,33912,33842,33861,33833,33753,33867,33839,33858,33837,33887,33904,33849,
-33870,33868,33874,33903,33989,33934,33851,33863,33846,33843,33896,33918,33860,
-33835,33888,33876,33902,33872,34571,34564,34551,34572,34554,34518,34549,34637,
-34552,34574,34569,34561,34550,34573,34565,35030,35019,35021,35022,35038,35035,
-35034,35020,35024,35205,35227,35295,35301,35300,35297,35296,35298,35292,35302,
-35446,35462,35455,35425,35391,35447,35458,35460,35445,35459,35457,35444,35450,
-35900,35915,35914,35941,35940,35942,35974,35972,35973,36044,36200,36201,36241,
-36236,36238,36239,36237,36243,36244,36240,36242,36336,36320,36332,36337,36334,
-36304,36329,36323,36322,36327,36338,36331,36340,36614,36607,36609,36608,36613,
-36615,36616,36610,36619,36946,36927,36932,36937,36925,37136,37133,37135,37137,
-37142,37140,37131,37134,37230,37231,37448,37458,37424,37434,37478,37427,37477,
-37470,37507,37422,37450,37446,37485,37484,37455,37472,
-37479,37487,37430,37473,37488,37425,37460,37475,37456,37490,37454,37459,37452,
-37462,37426,38303,38300,38302,38299,38546,38547,38545,38551,38606,38650,38653,
-38648,38645,38771,38775,38776,38770,38927,38925,38926,39084,39158,39161,39343,
-39346,39344,39349,39597,39595,39771,40170,40173,40167,40576,40701,20710,20692,
-20695,20712,20723,20699,20714,20701,20708,20691,20716,20720,20719,20707,20704,
-20952,21120,21121,21225,21227,21296,21420,22055,22037,22028,22034,22012,22031,
-22044,22017,22035,22018,22010,22045,22020,22015,22009,22665,22652,22672,22680,
-22662,22657,22655,22644,22667,22650,22663,22673,22670,22646,22658,22664,22651,
-22676,22671,22782,22891,23260,23278,23269,23253,23274,23258,23277,23275,23283,
-23266,23264,23259,23276,23262,23261,23257,23272,23263,23415,23520,23523,23651,
-23938,23936,23933,23942,23930,23937,23927,23946,23945,23944,23934,23932,23949,
-23929,23935,24152,24153,24147,24280,24273,24279,24270,24284,24277,24281,24274,
-24276,24388,24387,24431,24502,24876,24872,24897,24926,24945,24947,24914,24915,
-24946,24940,24960,24948,24916,24954,24923,24933,24891,24938,24929,24918,25129,
-25127,25131,25643,25677,25691,25693,25716,25718,25714,25715,25725,25717,25702,
-25766,25678,25730,25694,25692,25675,25683,25696,25680,25727,25663,25708,25707,
-25689,25701,25719,25971,26016,26273,26272,26271,26373,26372,26402,27057,27062,
-27081,27040,27086,27030,27056,27052,27068,27025,27033,27022,27047,27021,27049,
-27070,27055,27071,27076,27069,27044,27092,27065,27082,27034,27087,27059,27027,
-27050,27041,27038,27097,27031,27024,27074,27061,27045,
-27078,27466,27469,27467,27550,27551,27552,27587,27588,27646,28366,28405,28401,
-28419,28453,28408,28471,28411,28462,28425,28494,28441,28442,28455,28440,28475,
-28434,28397,28426,28470,28531,28409,28398,28461,28480,28464,28476,28469,28395,
-28423,28430,28483,28421,28413,28406,28473,28444,28412,28474,28447,28429,28446,
-28424,28449,29063,29072,29065,29056,29061,29058,29071,29051,29062,29057,29079,
-29252,29267,29335,29333,29331,29507,29517,29521,29516,29794,29811,29809,29813,
-29810,29799,29806,29952,29954,29955,30077,30096,30230,30216,30220,30229,30225,
-30218,30228,30392,30593,30588,30597,30594,30574,30592,30575,30590,30595,30898,
-30890,30900,30893,30888,30846,30891,30878,30885,30880,30892,30882,30884,31128,
-31114,31115,31126,31125,31124,31123,31127,31112,31122,31120,31275,31306,31280,
-31279,31272,31270,31400,31403,31404,31470,31624,31644,31626,31633,31632,31638,
-31629,31628,31643,31630,31621,31640,21124,31641,31652,31618,31931,31935,31932,
-31930,32167,32183,32194,32163,32170,32193,32192,32197,32157,32206,32196,32198,
-32203,32204,32175,32185,32150,32188,32159,32166,32174,32169,32161,32201,32627,
-32738,32739,32741,32734,32804,32861,32860,33161,33158,33155,33159,33165,33164,
-33163,33301,33943,33956,33953,33951,33978,33998,33986,33964,33966,33963,33977,
-33972,33985,33997,33962,33946,33969,34000,33949,33959,33979,33954,33940,33991,
-33996,33947,33961,33967,33960,34006,33944,33974,33999,33952,34007,34004,34002,
-34011,33968,33937,34401,34611,34595,34600,34667,34624,34606,34590,34593,34585,
-34587,34627,34604,34625,34622,34630,34592,34610,34602,
-34605,34620,34578,34618,34609,34613,34626,34598,34599,34616,34596,34586,34608,
-34577,35063,35047,35057,35058,35066,35070,35054,35068,35062,35067,35056,35052,
-35051,35229,35233,35231,35230,35305,35307,35304,35499,35481,35467,35474,35471,
-35478,35901,35944,35945,36053,36047,36055,36246,36361,36354,36351,36365,36349,
-36362,36355,36359,36358,36357,36350,36352,36356,36624,36625,36622,36621,37155,
-37148,37152,37154,37151,37149,37146,37156,37153,37147,37242,37234,37241,37235,
-37541,37540,37494,37531,37498,37536,37524,37546,37517,37542,37530,37547,37497,
-37527,37503,37539,37614,37518,37506,37525,37538,37501,37512,37537,37514,37510,
-37516,37529,37543,37502,37511,37545,37533,37515,37421,38558,38561,38655,38744,
-38781,38778,38782,38787,38784,38786,38779,38788,38785,38783,38862,38861,38934,
-39085,39086,39170,39168,39175,39325,39324,39363,39353,39355,39354,39362,39357,
-39367,39601,39651,39655,39742,39743,39776,39777,39775,40177,40178,40181,40615,
-20735,20739,20784,20728,20742,20743,20726,20734,20747,20748,20733,20746,21131,
-21132,21233,21231,22088,22082,22092,22069,22081,22090,22089,22086,22104,22106,
-22080,22067,22077,22060,22078,22072,22058,22074,22298,22699,22685,22705,22688,
-22691,22703,22700,22693,22689,22783,23295,23284,23293,23287,23286,23299,23288,
-23298,23289,23297,23303,23301,23311,23655,23961,23959,23967,23954,23970,23955,
-23957,23968,23964,23969,23962,23966,24169,24157,24160,24156,32243,24283,24286,
-24289,24393,24498,24971,24963,24953,25009,25008,24994,24969,24987,24979,25007,
-25005,24991,24978,25002,24993,24973,24934,25011,25133,
-25710,25712,25750,25760,25733,25751,25756,25743,25739,25738,25740,25763,25759,
-25704,25777,25752,25974,25978,25977,25979,26034,26035,26293,26288,26281,26290,
-26295,26282,26287,27136,27142,27159,27109,27128,27157,27121,27108,27168,27135,
-27116,27106,27163,27165,27134,27175,27122,27118,27156,27127,27111,27200,27144,
-27110,27131,27149,27132,27115,27145,27140,27160,27173,27151,27126,27174,27143,
-27124,27158,27473,27557,27555,27554,27558,27649,27648,27647,27650,28481,28454,
-28542,28551,28614,28562,28557,28553,28556,28514,28495,28549,28506,28566,28534,
-28524,28546,28501,28530,28498,28496,28503,28564,28563,28509,28416,28513,28523,
-28541,28519,28560,28499,28555,28521,28543,28565,28515,28535,28522,28539,29106,
-29103,29083,29104,29088,29082,29097,29109,29085,29093,29086,29092,29089,29098,
-29084,29095,29107,29336,29338,29528,29522,29534,29535,29536,29533,29531,29537,
-29530,29529,29538,29831,29833,29834,29830,29825,29821,29829,29832,29820,29817,
-29960,29959,30078,30245,30238,30233,30237,30236,30243,30234,30248,30235,30364,
-30365,30366,30363,30605,30607,30601,30600,30925,30907,30927,30924,30929,30926,
-30932,30920,30915,30916,30921,31130,31137,31136,31132,31138,31131,27510,31289,
-31410,31412,31411,31671,31691,31678,31660,31694,31663,31673,31690,31669,31941,
-31944,31948,31947,32247,32219,32234,32231,32215,32225,32259,32250,32230,32246,
-32241,32240,32238,32223,32630,32684,32688,32685,32749,32747,32746,32748,32742,
-32744,32868,32871,33187,33183,33182,33173,33186,33177,33175,33302,33359,33363,
-33362,33360,33358,33361,34084,34107,34063,34048,34089,
-34062,34057,34061,34079,34058,34087,34076,34043,34091,34042,34056,34060,34036,
-34090,34034,34069,34039,34027,34035,34044,34066,34026,34025,34070,34046,34088,
-34077,34094,34050,34045,34078,34038,34097,34086,34023,34024,34032,34031,34041,
-34072,34080,34096,34059,34073,34095,34402,34646,34659,34660,34679,34785,34675,
-34648,34644,34651,34642,34657,34650,34641,34654,34669,34666,34640,34638,34655,
-34653,34671,34668,34682,34670,34652,34661,34639,34683,34677,34658,34663,34665,
-34906,35077,35084,35092,35083,35095,35096,35097,35078,35094,35089,35086,35081,
-35234,35236,35235,35309,35312,35308,35535,35526,35512,35539,35537,35540,35541,
-35515,35543,35518,35520,35525,35544,35523,35514,35517,35545,35902,35917,35983,
-36069,36063,36057,36072,36058,36061,36071,36256,36252,36257,36251,36384,36387,
-36389,36388,36398,36373,36379,36374,36369,36377,36390,36391,36372,36370,36376,
-36371,36380,36375,36378,36652,36644,36632,36634,36640,36643,36630,36631,36979,
-36976,36975,36967,36971,37167,37163,37161,37162,37170,37158,37166,37253,37254,
-37258,37249,37250,37252,37248,37584,37571,37572,37568,37593,37558,37583,37617,
-37599,37592,37609,37591,37597,37580,37615,37570,37608,37578,37576,37582,37606,
-37581,37589,37577,37600,37598,37607,37585,37587,37557,37601,37574,37556,38268,
-38316,38315,38318,38320,38564,38562,38611,38661,38664,38658,38746,38794,38798,
-38792,38864,38863,38942,38941,38950,38953,38952,38944,38939,38951,39090,39176,
-39162,39185,39188,39190,39191,39189,39388,39373,39375,39379,39380,39374,39369,
-39382,39384,39371,39383,39372,39603,39660,39659,39667,
-39666,39665,39750,39747,39783,39796,39793,39782,39798,39797,39792,39784,39780,
-39788,40188,40186,40189,40191,40183,40199,40192,40185,40187,40200,40197,40196,
-40579,40659,40719,40720,20764,20755,20759,20762,20753,20958,21300,21473,22128,
-22112,22126,22131,22118,22115,22125,22130,22110,22135,22300,22299,22728,22717,
-22729,22719,22714,22722,22716,22726,23319,23321,23323,23329,23316,23315,23312,
-23318,23336,23322,23328,23326,23535,23980,23985,23977,23975,23989,23984,23982,
-23978,23976,23986,23981,23983,23988,24167,24168,24166,24175,24297,24295,24294,
-24296,24293,24395,24508,24989,25000,24982,25029,25012,25030,25025,25036,25018,
-25023,25016,24972,25815,25814,25808,25807,25801,25789,25737,25795,25819,25843,
-25817,25907,25983,25980,26018,26312,26302,26304,26314,26315,26319,26301,26299,
-26298,26316,26403,27188,27238,27209,27239,27186,27240,27198,27229,27245,27254,
-27227,27217,27176,27226,27195,27199,27201,27242,27236,27216,27215,27220,27247,
-27241,27232,27196,27230,27222,27221,27213,27214,27206,27477,27476,27478,27559,
-27562,27563,27592,27591,27652,27651,27654,28589,28619,28579,28615,28604,28622,
-28616,28510,28612,28605,28574,28618,28584,28676,28581,28590,28602,28588,28586,
-28623,28607,28600,28578,28617,28587,28621,28591,28594,28592,29125,29122,29119,
-29112,29142,29120,29121,29131,29140,29130,29127,29135,29117,29144,29116,29126,
-29146,29147,29341,29342,29545,29542,29543,29548,29541,29547,29546,29823,29850,
-29856,29844,29842,29845,29857,29963,30080,30255,30253,30257,30269,30259,30268,
-30261,30258,30256,30395,30438,30618,30621,30625,30620,
-30619,30626,30627,30613,30617,30615,30941,30953,30949,30954,30942,30947,30939,
-30945,30946,30957,30943,30944,31140,31300,31304,31303,31414,31416,31413,31409,
-31415,31710,31715,31719,31709,31701,31717,31706,31720,31737,31700,31722,31714,
-31708,31723,31704,31711,31954,31956,31959,31952,31953,32274,32289,32279,32268,
-32287,32288,32275,32270,32284,32277,32282,32290,32267,32271,32278,32269,32276,
-32293,32292,32579,32635,32636,32634,32689,32751,32810,32809,32876,33201,33190,
-33198,33209,33205,33195,33200,33196,33204,33202,33207,33191,33266,33365,33366,
-33367,34134,34117,34155,34125,34131,34145,34136,34112,34118,34148,34113,34146,
-34116,34129,34119,34147,34110,34139,34161,34126,34158,34165,34133,34151,34144,
-34188,34150,34141,34132,34149,34156,34403,34405,34404,34715,34703,34711,34707,
-34706,34696,34689,34710,34712,34681,34695,34723,34693,34704,34705,34717,34692,
-34708,34716,34714,34697,35102,35110,35120,35117,35118,35111,35121,35106,35113,
-35107,35119,35116,35103,35313,35552,35554,35570,35572,35573,35549,35604,35556,
-35551,35568,35528,35550,35553,35560,35583,35567,35579,35985,35986,35984,36085,
-36078,36081,36080,36083,36204,36206,36261,36263,36403,36414,36408,36416,36421,
-36406,36412,36413,36417,36400,36415,36541,36662,36654,36661,36658,36665,36663,
-36660,36982,36985,36987,36998,37114,37171,37173,37174,37267,37264,37265,37261,
-37263,37671,37662,37640,37663,37638,37647,37754,37688,37692,37659,37667,37650,
-37633,37702,37677,37646,37645,37579,37661,37626,37669,37651,37625,37623,37684,
-37634,37668,37631,37673,37689,37685,37674,37652,37644,
-37643,37630,37641,37632,37627,37654,38332,38349,38334,38329,38330,38326,38335,
-38325,38333,38569,38612,38667,38674,38672,38809,38807,38804,38896,38904,38965,
-38959,38962,39204,39199,39207,39209,39326,39406,39404,39397,39396,39408,39395,
-39402,39401,39399,39609,39615,39604,39611,39670,39674,39673,39671,39731,39808,
-39813,39815,39804,39806,39803,39810,39827,39826,39824,39802,39829,39805,39816,
-40229,40215,40224,40222,40212,40233,40221,40216,40226,40208,40217,40223,40584,
-40582,40583,40622,40621,40661,40662,40698,40722,40765,20774,20773,20770,20772,
-20768,20777,21236,22163,22156,22157,22150,22148,22147,22142,22146,22143,22145,
-22742,22740,22735,22738,23341,23333,23346,23331,23340,23335,23334,23343,23342,
-23419,23537,23538,23991,24172,24170,24510,24507,25027,25013,25020,25063,25056,
-25061,25060,25064,25054,25839,25833,25827,25835,25828,25832,25985,25984,26038,
-26074,26322,27277,27286,27265,27301,27273,27295,27291,27297,27294,27271,27283,
-27278,27285,27267,27304,27300,27281,27263,27302,27290,27269,27276,27282,27483,
-27565,27657,28620,28585,28660,28628,28643,28636,28653,28647,28646,28638,28658,
-28637,28642,28648,29153,29169,29160,29170,29156,29168,29154,29555,29550,29551,
-29847,29874,29867,29840,29866,29869,29873,29861,29871,29968,29969,29970,29967,
-30084,30275,30280,30281,30279,30372,30441,30645,30635,30642,30647,30646,30644,
-30641,30632,30704,30963,30973,30978,30971,30972,30962,30981,30969,30974,30980,
-31147,31144,31324,31323,31318,31320,31316,31322,31422,31424,31425,31749,31759,
-31730,31744,31743,31739,31758,31732,31755,31731,31746,
-31753,31747,31745,31736,31741,31750,31728,31729,31760,31754,31976,32301,32316,
-32322,32307,38984,32312,32298,32329,32320,32327,32297,32332,32304,32315,32310,
-32324,32314,32581,32639,32638,32637,32756,32754,32812,33211,33220,33228,33226,
-33221,33223,33212,33257,33371,33370,33372,34179,34176,34191,34215,34197,34208,
-34187,34211,34171,34212,34202,34206,34167,34172,34185,34209,34170,34168,34135,
-34190,34198,34182,34189,34201,34205,34177,34210,34178,34184,34181,34169,34166,
-34200,34192,34207,34408,34750,34730,34733,34757,34736,34732,34745,34741,34748,
-34734,34761,34755,34754,34764,34743,34735,34756,34762,34740,34742,34751,34744,
-34749,34782,34738,35125,35123,35132,35134,35137,35154,35127,35138,35245,35247,
-35246,35314,35315,35614,35608,35606,35601,35589,35595,35618,35599,35602,35605,
-35591,35597,35592,35590,35612,35603,35610,35919,35952,35954,35953,35951,35989,
-35988,36089,36207,36430,36429,36435,36432,36428,36423,36675,36672,36997,36990,
-37176,37274,37282,37275,37273,37279,37281,37277,37280,37793,37763,37807,37732,
-37718,37703,37756,37720,37724,37750,37705,37712,37713,37728,37741,37775,37708,
-37738,37753,37719,37717,37714,37711,37745,37751,37755,37729,37726,37731,37735,
-37760,37710,37721,38343,38336,38345,38339,38341,38327,38574,38576,38572,38688,
-38687,38680,38685,38681,38810,38817,38812,38814,38813,38869,38868,38897,38977,
-38980,38986,38985,38981,38979,39205,39211,39212,39210,39219,39218,39215,39213,
-39217,39216,39320,39331,39329,39426,39418,39412,39415,39417,39416,39414,39419,
-39421,39422,39420,39427,39614,39678,39677,39681,39676,
-39752,39834,39848,39838,39835,39846,39841,39845,39844,39814,39842,39840,39855,
-40243,40257,40295,40246,40238,40239,40241,40248,40240,40261,40258,40259,40254,
-40247,40256,40253,32757,40237,40586,40585,40589,40624,40648,40666,40699,40703,
-40740,40739,40738,40788,40864,20785,20781,20782,22168,22172,22167,22170,22173,
-22169,22896,23356,23657,23658,24000,24173,24174,25048,25055,25069,25070,25073,
-25066,25072,25067,25046,25065,25855,25860,25853,25848,25857,25859,25852,26004,
-26075,26330,26331,26328,27333,27321,27325,27361,27334,27322,27318,27319,27335,
-27316,27309,27486,27593,27659,28679,28684,28685,28673,28677,28692,28686,28671,
-28672,28667,28710,28668,28663,28682,29185,29183,29177,29187,29181,29558,29880,
-29888,29877,29889,29886,29878,29883,29890,29972,29971,30300,30308,30297,30288,
-30291,30295,30298,30374,30397,30444,30658,30650,30975,30988,30995,30996,30985,
-30992,30994,30993,31149,31148,31327,31772,31785,31769,31776,31775,31789,31773,
-31782,31784,31778,31781,31792,32348,32336,32342,32355,32344,32354,32351,32337,
-32352,32343,32339,32693,32691,32759,32760,32885,33233,33234,33232,33375,33374,
-34228,34246,34240,34243,34242,34227,34229,34237,34247,34244,34239,34251,34254,
-34248,34245,34225,34230,34258,34340,34232,34231,34238,34409,34791,34790,34786,
-34779,34795,34794,34789,34783,34803,34788,34772,34780,34771,34797,34776,34787,
-34724,34775,34777,34817,34804,34792,34781,35155,35147,35151,35148,35142,35152,
-35153,35145,35626,35623,35619,35635,35632,35637,35655,35631,35644,35646,35633,
-35621,35639,35622,35638,35630,35620,35643,35645,35642,
-35906,35957,35993,35992,35991,36094,36100,36098,36096,36444,36450,36448,36439,
-36438,36446,36453,36455,36443,36442,36449,36445,36457,36436,36678,36679,36680,
-36683,37160,37178,37179,37182,37288,37285,37287,37295,37290,37813,37772,37778,
-37815,37787,37789,37769,37799,37774,37802,37790,37798,37781,37768,37785,37791,
-37773,37809,37777,37810,37796,37800,37812,37795,37797,38354,38355,38353,38579,
-38615,38618,24002,38623,38616,38621,38691,38690,38693,38828,38830,38824,38827,
-38820,38826,38818,38821,38871,38873,38870,38872,38906,38992,38993,38994,39096,
-39233,39228,39226,39439,39435,39433,39437,39428,39441,39434,39429,39431,39430,
-39616,39644,39688,39684,39685,39721,39733,39754,39756,39755,39879,39878,39875,
-39871,39873,39861,39864,39891,39862,39876,39865,39869,40284,40275,40271,40266,
-40283,40267,40281,40278,40268,40279,40274,40276,40287,40280,40282,40590,40588,
-40671,40705,40704,40726,40741,40747,40746,40745,40744,40780,40789,20788,20789,
-21142,21239,21428,22187,22189,22182,22183,22186,22188,22746,22749,22747,22802,
-23357,23358,23359,24003,24176,24511,25083,25863,25872,25869,25865,25868,25870,
-25988,26078,26077,26334,27367,27360,27340,27345,27353,27339,27359,27356,27344,
-27371,27343,27341,27358,27488,27568,27660,28697,28711,28704,28694,28715,28705,
-28706,28707,28713,28695,28708,28700,28714,29196,29194,29191,29186,29189,29349,
-29350,29348,29347,29345,29899,29893,29879,29891,29974,30304,30665,30666,30660,
-30705,31005,31003,31009,31004,30999,31006,31152,31335,31336,31795,31804,31801,
-31788,31803,31980,31978,32374,32373,32376,32368,32375,
-32367,32378,32370,32372,32360,32587,32586,32643,32646,32695,32765,32766,32888,
-33239,33237,33380,33377,33379,34283,34289,34285,34265,34273,34280,34266,34263,
-34284,34290,34296,34264,34271,34275,34268,34257,34288,34278,34287,34270,34274,
-34816,34810,34819,34806,34807,34825,34828,34827,34822,34812,34824,34815,34826,
-34818,35170,35162,35163,35159,35169,35164,35160,35165,35161,35208,35255,35254,
-35318,35664,35656,35658,35648,35667,35670,35668,35659,35669,35665,35650,35666,
-35671,35907,35959,35958,35994,36102,36103,36105,36268,36266,36269,36267,36461,
-36472,36467,36458,36463,36475,36546,36690,36689,36687,36688,36691,36788,37184,
-37183,37296,37293,37854,37831,37839,37826,37850,37840,37881,37868,37836,37849,
-37801,37862,37834,37844,37870,37859,37845,37828,37838,37824,37842,37863,38269,
-38362,38363,38625,38697,38699,38700,38696,38694,38835,38839,38838,38877,38878,
-38879,39004,39001,39005,38999,39103,39101,39099,39102,39240,39239,39235,39334,
-39335,39450,39445,39461,39453,39460,39451,39458,39456,39463,39459,39454,39452,
-39444,39618,39691,39690,39694,39692,39735,39914,39915,39904,39902,39908,39910,
-39906,39920,39892,39895,39916,39900,39897,39909,39893,39905,39898,40311,40321,
-40330,40324,40328,40305,40320,40312,40326,40331,40332,40317,40299,40308,40309,
-40304,40297,40325,40307,40315,40322,40303,40313,40319,40327,40296,40596,40593,
-40640,40700,40749,40768,40769,40781,40790,40791,40792,21303,22194,22197,22195,
-22755,23365,24006,24007,24302,24303,24512,24513,25081,25879,25878,25877,25875,
-26079,26344,26339,26340,27379,27376,27370,27368,27385,
-27377,27374,27375,28732,28725,28719,28727,28724,28721,28738,28728,28735,28730,
-28729,28736,28731,28723,28737,29203,29204,29352,29565,29564,29882,30379,30378,
-30398,30445,30668,30670,30671,30669,30706,31013,31011,31015,31016,31012,31017,
-31154,31342,31340,31341,31479,31817,31816,31818,31815,31813,31982,32379,32382,
-32385,32384,32698,32767,32889,33243,33241,33291,33384,33385,34338,34303,34305,
-34302,34331,34304,34294,34308,34313,34309,34316,34301,34841,34832,34833,34839,
-34835,34838,35171,35174,35257,35319,35680,35690,35677,35688,35683,35685,35687,
-35693,36270,36486,36488,36484,36697,36694,36695,36693,36696,36698,37005,37187,
-37185,37303,37301,37298,37299,37899,37907,37883,37920,37903,37908,37886,37909,
-37904,37928,37913,37901,37877,37888,37879,37895,37902,37910,37906,37882,37897,
-37880,37898,37887,37884,37900,37878,37905,37894,38366,38368,38367,38702,38703,
-38841,38843,38909,38910,39008,39010,39011,39007,39105,39106,39248,39246,39257,
-39244,39243,39251,39474,39476,39473,39468,39466,39478,39465,39470,39480,39469,
-39623,39626,39622,39696,39698,39697,39947,39944,39927,39941,39954,39928,40000,
-39943,39950,39942,39959,39956,39945,40351,40345,40356,40349,40338,40344,40336,
-40347,40352,40340,40348,40362,40343,40353,40346,40354,40360,40350,40355,40383,
-40361,40342,40358,40359,40601,40603,40602,40677,40676,40679,40678,40752,40750,
-40795,40800,40798,40797,40793,40849,20794,20793,21144,21143,22211,22205,22206,
-23368,23367,24011,24015,24305,25085,25883,27394,27388,27395,27384,27392,28739,
-28740,28746,28744,28745,28741,28742,29213,29210,29209,
-29566,29975,30314,30672,31021,31025,31023,31828,31827,31986,32394,32391,32392,
-32395,32390,32397,32589,32699,32816,33245,34328,34346,34342,34335,34339,34332,
-34329,34343,34350,34337,34336,34345,34334,34341,34857,34845,34843,34848,34852,
-34844,34859,34890,35181,35177,35182,35179,35322,35705,35704,35653,35706,35707,
-36112,36116,36271,36494,36492,36702,36699,36701,37190,37188,37189,37305,37951,
-37947,37942,37929,37949,37948,37936,37945,37930,37943,37932,37952,37937,38373,
-38372,38371,38709,38714,38847,38881,39012,39113,39110,39104,39256,39254,39481,
-39485,39494,39492,39490,39489,39482,39487,39629,39701,39703,39704,39702,39738,
-39762,39979,39965,39964,39980,39971,39976,39977,39972,39969,40375,40374,40380,
-40385,40391,40394,40399,40382,40389,40387,40379,40373,40398,40377,40378,40364,
-40392,40369,40365,40396,40371,40397,40370,40570,40604,40683,40686,40685,40731,
-40728,40730,40753,40782,40805,40804,40850,20153,22214,22213,22219,22897,23371,
-23372,24021,24017,24306,25889,25888,25894,25890,27403,27400,27401,27661,28757,
-28758,28759,28754,29214,29215,29353,29567,29912,29909,29913,29911,30317,30381,
-31029,31156,31344,31345,31831,31836,31833,31835,31834,31988,31985,32401,32591,
-32647,33246,33387,34356,34357,34355,34348,34354,34358,34860,34856,34854,34858,
-34853,35185,35263,35262,35323,35710,35716,35714,35718,35717,35711,36117,36501,
-36500,36506,36498,36496,36502,36503,36704,36706,37191,37964,37968,37962,37963,
-37967,37959,37957,37960,37961,37958,38719,38883,39018,39017,39115,39252,39259,
-39502,39507,39508,39500,39503,39496,39498,39497,39506,
-39504,39632,39705,39723,39739,39766,39765,40006,40008,39999,40004,39993,39987,
-40001,39996,39991,39988,39986,39997,39990,40411,40402,40414,40410,40395,40400,
-40412,40401,40415,40425,40409,40408,40406,40437,40405,40413,40630,40688,40757,
-40755,40754,40770,40811,40853,40866,20797,21145,22760,22759,22898,23373,24024,
-34863,24399,25089,25091,25092,25897,25893,26006,26347,27409,27410,27407,27594,
-28763,28762,29218,29570,29569,29571,30320,30676,31847,31846,32405,33388,34362,
-34368,34361,34364,34353,34363,34366,34864,34866,34862,34867,35190,35188,35187,
-35326,35724,35726,35723,35720,35909,36121,36504,36708,36707,37308,37986,37973,
-37981,37975,37982,38852,38853,38912,39510,39513,39710,39711,39712,40018,40024,
-40016,40010,40013,40011,40021,40025,40012,40014,40443,40439,40431,40419,40427,
-40440,40420,40438,40417,40430,40422,40434,40432,40418,40428,40436,40435,40424,
-40429,40642,40656,40690,40691,40710,40732,40760,40759,40758,40771,40783,40817,
-40816,40814,40815,22227,22221,23374,23661,25901,26349,26350,27411,28767,28769,
-28765,28768,29219,29915,29925,30677,31032,31159,31158,31850,32407,32649,33389,
-34371,34872,34871,34869,34891,35732,35733,36510,36511,36512,36509,37310,37309,
-37314,37995,37992,37993,38629,38726,38723,38727,38855,38885,39518,39637,39769,
-40035,40039,40038,40034,40030,40032,40450,40446,40455,40451,40454,40453,40448,
-40449,40457,40447,40445,40452,40608,40734,40774,40820,40821,40822,22228,25902,
-26040,27416,27417,27415,27418,28770,29222,29354,30680,30681,31033,31849,31851,
-31990,32410,32408,32411,32409,33248,33249,34374,34375,
-34376,35193,35194,35196,35195,35327,35736,35737,36517,36516,36515,37998,37997,
-37999,38001,38003,38729,39026,39263,40040,40046,40045,40459,40461,40464,40463,
-40466,40465,40609,40693,40713,40775,40824,40827,40826,40825,22302,28774,31855,
-34876,36274,36518,37315,38004,38008,38006,38005,39520,40052,40051,40049,40053,
-40468,40467,40694,40714,40868,28776,28773,31991,34410,34878,34877,34879,35742,
-35996,36521,36553,38731,39027,39028,39116,39265,39339,39524,39526,39527,39716,
-40469,40471,40776,25095,27422,29223,34380,36520,38018,38016,38017,39529,39528,
-39726,40473,29225,34379,35743,38019,40057,40631,30325,39531,40058,40477,28777,
-28778,40612,40830,40777,40856,30849,37561,35023,22715,24658,31911,23290,9556,
-9574,9559,9568,9580,9571,9562,9577,9565,9554,9572,9557,9566,9578,9569,9560,
-9575,9563,9555,9573,9558,9567,9579,9570,9561,9576,9564,9553,9552,9581,9582,
-9584,9583,9619,
+12288, 65292, 12289, 12290, 65294, 8231, 65307, 65306, 65311, 65281, 65072,
+    8230, 8229, 65104, 65105, 65106, 183, 65108, 65109, 65110, 65111, 65372,
+    8211, 65073, 8212, 65075, 9588, 65076, 65103, 65288, 65289, 65077, 65078,
+    65371, 65373, 65079, 65080, 12308, 12309, 65081, 65082, 12304, 12305, 65083,
+    65084, 12298, 12299, 65085, 65086, 12296, 12297, 65087, 65088, 12300, 12301,
+    65089, 65090, 12302, 12303, 65091, 65092, 65113, 65114, 65115, 65116, 65117,
+    65118, 8216, 8217, 8220, 8221, 12317, 12318, 8245, 8242, 65283, 65286,
+    65290, 8251, 167, 12291, 9675, 9679, 9651, 9650, 9678, 9734, 9733, 9671,
+    9670, 9633, 9632, 9661, 9660, 12963, 8453, 175, 65507, 65343, 717, 65097,
+    65098, 65101, 65102, 65099, 65100, 65119, 65120, 65121, 65291, 65293, 215,
+    247, 177, 8730, 65308, 65310, 65309, 8806, 8807, 8800, 8734, 8786, 8801,
+    65122, 65123, 65124, 65125, 65126, 65374, 8745, 8746, 8869, 8736, 8735,
+    8895, 13266, 13265, 8747, 8750, 8757, 8756, 9792, 9794, 8853, 8857, 8593,
+    8595, 8592, 8594, 8598, 8599, 8601, 8600, 8741, 8739, 65295, 65340, 8725,
+    65128, 65284, 65509, 12306, 65504, 65505, 65285, 65312, 8451, 8457, 65129,
+    65130, 65131, 13269, 13212, 13213, 13214, 13262, 13217, 13198, 13199, 13252,
+    176, 20825, 20827, 20830, 20829, 20833, 20835, 21991, 29929, 31950, 9601,
+    9602, 9603, 9604, 9605, 9606, 9607, 9608, 9615, 9614, 9613, 9612, 9611,
+    9610, 9609, 9532, 9524, 9516, 9508, 9500, 9620, 9472, 9474, 9621, 9484,
+    9488, 9492, 9496, 9581, 9582, 9584, 9583, 9552, 9566, 9578, 9569, 9698,
+    9699, 9701, 9700, 9585, 9586, 9587, 65296, 65297, 65298, 65299, 65300,
+    65301, 65302, 65303, 65304, 65305, 8544, 8545, 8546, 8547, 8548, 8549, 8550,
+    8551, 8552, 8553, 12321, 12322, 12323, 12324, 12325, 12326, 12327, 12328,
+    12329, 21313, 21316, 21317, 65313, 65314, 65315, 65316, 65317, 65318, 65319,
+    65320, 65321, 65322, 65323, 65324, 65325, 65326, 65327, 65328, 65329, 65330,
+    65331, 65332, 65333, 65334, 65335, 65336, 65337, 65338, 65345, 65346, 65347,
+    65348, 65349, 65350, 65351, 65352, 65353, 65354, 65355, 65356, 65357, 65358,
+    65359, 65360, 65361, 65362, 65363, 65364, 65365, 65366, 65367, 65368, 65369,
+    65370, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926,
+    927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 945, 946, 947, 948, 949,
+    950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 963, 964, 965,
+    966, 967, 968, 969, 12549, 12550, 12551, 12552, 12553, 12554, 12555, 12556,
+    12557, 12558, 12559, 12560, 12561, 12562, 12563, 12564, 12565, 12566, 12567,
+    12568, 12569, 12570, 12571, 12572, 12573, 12574, 12575, 12576, 12577, 12578,
+    12579, 12580, 12581, 12582, 12583, 12584, 12585, 729, 713, 714, 711, 715,
+    9216, 9217, 9218, 9219, 9220, 9221, 9222, 9223, 9224, 9225, 9226, 9227,
+    9228, 9229, 9230, 9231, 9232, 9233, 9234, 9235, 9236, 9237, 9238, 9239,
+    9240, 9241, 9242, 9243, 9244, 9245, 9246, 9247, 9249, 8364, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    19968, 20057, 19969, 19971, 20035, 20061, 20102, 20108, 20154, 20799, 20837,
+    20843, 20960, 20992, 20993, 21147, 21269, 21313, 21340, 21448, 19977, 19979,
+    19976, 19978, 20011, 20024, 20961, 20037, 20040, 20063, 20062, 20110, 20129,
+    20800, 20995, 21242, 21315, 21449, 21475, 22303, 22763, 22805, 22823, 22899,
+    23376, 23377, 23379, 23544, 23567, 23586, 23608, 23665, 24029, 24037, 24049,
+    24050, 24051, 24062, 24178, 24318, 24331, 24339, 25165, 19985, 19984, 19981,
+    20013, 20016, 20025, 20043, 23609, 20104, 20113, 20117, 20114, 20116, 20130,
+    20161, 20160, 20163, 20166, 20167, 20173, 20170, 20171, 20164, 20803, 20801,
+    20839, 20845, 20846, 20844, 20887, 20982, 20998, 20999, 21000, 21243, 21246,
+    21247, 21270, 21305, 21320, 21319, 21317, 21342, 21380, 21451, 21450, 21453,
+    22764, 22825, 22827, 22826, 22829, 23380, 23569, 23588, 23610, 23663, 24052,
+    24187, 24319, 24340, 24341, 24515, 25096, 25142, 25163, 25166, 25903, 25991,
+    26007, 26020, 26041, 26085, 26352, 26376, 26408, 27424, 27490, 27513, 27595,
+    27604, 27611, 27663, 27700, 28779, 29226, 29238, 29243, 29255, 29273, 29275,
+    29356, 29579, 19993, 19990, 19989, 19988, 19992, 20027, 20045, 20047, 20046,
+    20197, 20184, 20180, 20181, 20182, 20183, 20195, 20196, 20185, 20190, 20805,
+    20804, 20873, 20874, 20908, 20985, 20986, 20984, 21002, 21152, 21151, 21253,
+    21254, 21271, 21277, 20191, 21322, 21321, 21345, 21344, 21359, 21358, 21435,
+    21487, 21476, 21491, 21484, 21486, 21481, 21480, 21500, 21496, 21493, 21483,
+    21478, 21482, 21490, 21489, 21488, 21477, 21485, 21499, 22235, 22234, 22806,
+    22830, 22833, 22900, 22902, 23381, 23427, 23612, 24040, 24039, 24038, 24066,
+    24067, 24179, 24188, 24321, 24344, 24343, 24517, 25098, 25171, 25172, 25170,
+    25169, 26021, 26086, 26414, 26412, 26410, 26411, 26413, 27491, 27597, 27665,
+    27664, 27704, 27713, 27712, 27710, 29359, 29572, 29577, 29916, 29926, 29976,
+    29983, 29992, 29993, 30000, 30001, 30002, 30003, 30091, 30333, 30382, 30399,
+    30446, 30683, 30690, 30707, 31034, 31166, 31348, 31435, 19998, 19999, 20050,
+    20051, 20073, 20121, 20132, 20134, 20133, 20223, 20233, 20249, 20234, 20245,
+    20237, 20240, 20241, 20239, 20210, 20214, 20219, 20208, 20211, 20221, 20225,
+    20235, 20809, 20807, 20806, 20808, 20840, 20849, 20877, 20912, 21015, 21009,
+    21010, 21006, 21014, 21155, 21256, 21281, 21280, 21360, 21361, 21513, 21519,
+    21516, 21514, 21520, 21505, 21515, 21508, 21521, 21517, 21512, 21507, 21518,
+    21510, 21522, 22240, 22238, 22237, 22323, 22320, 22312, 22317, 22316, 22319,
+    22313, 22809, 22810, 22839, 22840, 22916, 22904, 22915, 22909, 22905, 22914,
+    22913, 23383, 23384, 23431, 23432, 23429, 23433, 23546, 23574, 23673, 24030,
+    24070, 24182, 24180, 24335, 24347, 24537, 24534, 25102, 25100, 25101, 25104,
+    25187, 25179, 25176, 25910, 26089, 26088, 26092, 26093, 26354, 26355, 26377,
+    26429, 26420, 26417, 26421, 27425, 27492, 27515, 27670, 27741, 27735, 27737,
+    27743, 27744, 27728, 27733, 27745, 27739, 27725, 27726, 28784, 29279, 29277,
+    30334, 31481, 31859, 31992, 32566, 32650, 32701, 32769, 32771, 32780, 32786,
+    32819, 32895, 32905, 32907, 32908, 33251, 33258, 33267, 33276, 33292, 33307,
+    33311, 33390, 33394, 33406, 34411, 34880, 34892, 34915, 35199, 38433, 20018,
+    20136, 20301, 20303, 20295, 20311, 20318, 20276, 20315, 20309, 20272, 20304,
+    20305, 20285, 20282, 20280, 20291, 20308, 20284, 20294, 20323, 20316, 20320,
+    20271, 20302, 20278, 20313, 20317, 20296, 20314, 20812, 20811, 20813, 20853,
+    20918, 20919, 21029, 21028, 21033, 21034, 21032, 21163, 21161, 21162, 21164,
+    21283, 21363, 21365, 21533, 21549, 21534, 21566, 21542, 21582, 21543, 21574,
+    21571, 21555, 21576, 21570, 21531, 21545, 21578, 21561, 21563, 21560, 21550,
+    21557, 21558, 21536, 21564, 21568, 21553, 21547, 21535, 21548, 22250, 22256,
+    22244, 22251, 22346, 22353, 22336, 22349, 22343, 22350, 22334, 22352, 22351,
+    22331, 22767, 22846, 22941, 22930, 22952, 22942, 22947, 22937, 22934, 22925,
+    22948, 22931, 22922, 22949, 23389, 23388, 23386, 23387, 23436, 23435, 23439,
+    23596, 23616, 23617, 23615, 23614, 23696, 23697, 23700, 23692, 24043, 24076,
+    24207, 24199, 24202, 24311, 24324, 24351, 24420, 24418, 24439, 24441, 24536,
+    24524, 24535, 24525, 24561, 24555, 24568, 24554, 25106, 25105, 25220, 25239,
+    25238, 25216, 25206, 25225, 25197, 25226, 25212, 25214, 25209, 25203, 25234,
+    25199, 25240, 25198, 25237, 25235, 25233, 25222, 25913, 25915, 25912, 26097,
+    26356, 26463, 26446, 26447, 26448, 26449, 26460, 26454, 26462, 26441, 26438,
+    26464, 26451, 26455, 27493, 27599, 27714, 27742, 27801, 27777, 27784, 27785,
+    27781, 27803, 27754, 27770, 27792, 27760, 27788, 27752, 27798, 27794, 27773,
+    27779, 27762, 27774, 27764, 27782, 27766, 27789, 27796, 27800, 27778, 28790,
+    28796, 28797, 28792, 29282, 29281, 29280, 29380, 29378, 29590, 29996, 29995,
+    30007, 30008, 30338, 30447, 30691, 31169, 31168, 31167, 31350, 31995, 32597,
+    32918, 32915, 32925, 32920, 32923, 32922, 32946, 33391, 33426, 33419, 33421,
+    35211, 35282, 35328, 35895, 35910, 35925, 35997, 36196, 36208, 36275, 36523,
+    36554, 36763, 36784, 36802, 36806, 36805, 36804, 24033, 37009, 37026, 37034,
+    37030, 37027, 37193, 37318, 37324, 38450, 38446, 38449, 38442, 38444, 20006,
+    20054, 20083, 20107, 20123, 20126, 20139, 20140, 20335, 20381, 20365, 20339,
+    20351, 20332, 20379, 20363, 20358, 20355, 20336, 20341, 20360, 20329, 20347,
+    20374, 20350, 20367, 20369, 20346, 20820, 20818, 20821, 20841, 20855, 20854,
+    20856, 20925, 20989, 21051, 21048, 21047, 21050, 21040, 21038, 21046, 21057,
+    21182, 21179, 21330, 21332, 21331, 21329, 21350, 21367, 21368, 21369, 21462,
+    21460, 21463, 21619, 21621, 21654, 21624, 21653, 21632, 21627, 21623, 21636,
+    21650, 21638, 21628, 21648, 21617, 21622, 21644, 21658, 21602, 21608, 21643,
+    21629, 21646, 22266, 22403, 22391, 22378, 22377, 22369, 22374, 22372, 22396,
+    22812, 22857, 22855, 22856, 22852, 22868, 22974, 22971, 22996, 22969, 22958,
+    22993, 22982, 22992, 22989, 22987, 22995, 22986, 22959, 22963, 22994, 22981,
+    23391, 23396, 23395, 23447, 23450, 23448, 23452, 23449, 23451, 23578, 23624,
+    23621, 23622, 23735, 23713, 23736, 23721, 23723, 23729, 23731, 24088, 24090,
+    24086, 24085, 24091, 24081, 24184, 24218, 24215, 24220, 24213, 24214, 24310,
+    24358, 24359, 24361, 24448, 24449, 24447, 24444, 24541, 24544, 24573, 24565,
+    24575, 24591, 24596, 24623, 24629, 24598, 24618, 24597, 24609, 24615, 24617,
+    24619, 24603, 25110, 25109, 25151, 25150, 25152, 25215, 25289, 25292, 25284,
+    25279, 25282, 25273, 25298, 25307, 25259, 25299, 25300, 25291, 25288, 25256,
+    25277, 25276, 25296, 25305, 25287, 25293, 25269, 25306, 25265, 25304, 25302,
+    25303, 25286, 25260, 25294, 25918, 26023, 26044, 26106, 26132, 26131, 26124,
+    26118, 26114, 26126, 26112, 26127, 26133, 26122, 26119, 26381, 26379, 26477,
+    26507, 26517, 26481, 26524, 26483, 26487, 26503, 26525, 26519, 26479, 26480,
+    26495, 26505, 26494, 26512, 26485, 26522, 26515, 26492, 26474, 26482, 27427,
+    27494, 27495, 27519, 27667, 27675, 27875, 27880, 27891, 27825, 27852, 27877,
+    27827, 27837, 27838, 27836, 27874, 27819, 27861, 27859, 27832, 27844, 27833,
+    27841, 27822, 27863, 27845, 27889, 27839, 27835, 27873, 27867, 27850, 27820,
+    27887, 27868, 27862, 27872, 28821, 28814, 28818, 28810, 28825, 29228, 29229,
+    29240, 29256, 29287, 29289, 29376, 29390, 29401, 29399, 29392, 29609, 29608,
+    29599, 29611, 29605, 30013, 30109, 30105, 30106, 30340, 30402, 30450, 30452,
+    30693, 30717, 31038, 31040, 31041, 31177, 31176, 31354, 31353, 31482, 31998,
+    32596, 32652, 32651, 32773, 32954, 32933, 32930, 32945, 32929, 32939, 32937,
+    32948, 32938, 32943, 33253, 33278, 33293, 33459, 33437, 33433, 33453, 33469,
+    33439, 33465, 33457, 33452, 33445, 33455, 33464, 33443, 33456, 33470, 33463,
+    34382, 34417, 21021, 34920, 36555, 36814, 36820, 36817, 37045, 37048, 37041,
+    37046, 37319, 37329, 38263, 38272, 38428, 38464, 38463, 38459, 38468, 38466,
+    38585, 38632, 38738, 38750, 20127, 20141, 20142, 20449, 20405, 20399, 20415,
+    20448, 20433, 20431, 20445, 20419, 20406, 20440, 20447, 20426, 20439, 20398,
+    20432, 20420, 20418, 20442, 20430, 20446, 20407, 20823, 20882, 20881, 20896,
+    21070, 21059, 21066, 21069, 21068, 21067, 21063, 21191, 21193, 21187, 21185,
+    21261, 21335, 21371, 21402, 21467, 21676, 21696, 21672, 21710, 21705, 21688,
+    21670, 21683, 21703, 21698, 21693, 21674, 21697, 21700, 21704, 21679, 21675,
+    21681, 21691, 21673, 21671, 21695, 22271, 22402, 22411, 22432, 22435, 22434,
+    22478, 22446, 22419, 22869, 22865, 22863, 22862, 22864, 23004, 23000, 23039,
+    23011, 23016, 23043, 23013, 23018, 23002, 23014, 23041, 23035, 23401, 23459,
+    23462, 23460, 23458, 23461, 23553, 23630, 23631, 23629, 23627, 23769, 23762,
+    24055, 24093, 24101, 24095, 24189, 24224, 24230, 24314, 24328, 24365, 24421,
+    24456, 24453, 24458, 24459, 24455, 24460, 24457, 24594, 24605, 24608, 24613,
+    24590, 24616, 24653, 24688, 24680, 24674, 24646, 24643, 24684, 24683, 24682,
+    24676, 25153, 25308, 25366, 25353, 25340, 25325, 25345, 25326, 25341, 25351,
+    25329, 25335, 25327, 25324, 25342, 25332, 25361, 25346, 25919, 25925, 26027,
+    26045, 26082, 26149, 26157, 26144, 26151, 26159, 26143, 26152, 26161, 26148,
+    26359, 26623, 26579, 26609, 26580, 26576, 26604, 26550, 26543, 26613, 26601,
+    26607, 26564, 26577, 26548, 26586, 26597, 26552, 26575, 26590, 26611, 26544,
+    26585, 26594, 26589, 26578, 27498, 27523, 27526, 27573, 27602, 27607, 27679,
+    27849, 27915, 27954, 27946, 27969, 27941, 27916, 27953, 27934, 27927, 27963,
+    27965, 27966, 27958, 27931, 27893, 27961, 27943, 27960, 27945, 27950, 27957,
+    27918, 27947, 28843, 28858, 28851, 28844, 28847, 28845, 28856, 28846, 28836,
+    29232, 29298, 29295, 29300, 29417, 29408, 29409, 29623, 29642, 29627, 29618,
+    29645, 29632, 29619, 29978, 29997, 30031, 30028, 30030, 30027, 30123, 30116,
+    30117, 30114, 30115, 30328, 30342, 30343, 30344, 30408, 30406, 30403, 30405,
+    30465, 30457, 30456, 30473, 30475, 30462, 30460, 30471, 30684, 30722, 30740,
+    30732, 30733, 31046, 31049, 31048, 31047, 31161, 31162, 31185, 31186, 31179,
+    31359, 31361, 31487, 31485, 31869, 32002, 32005, 32000, 32009, 32007, 32004,
+    32006, 32568, 32654, 32703, 32772, 32784, 32781, 32785, 32822, 32982, 32997,
+    32986, 32963, 32964, 32972, 32993, 32987, 32974, 32990, 32996, 32989, 33268,
+    33314, 33511, 33539, 33541, 33507, 33499, 33510, 33540, 33509, 33538, 33545,
+    33490, 33495, 33521, 33537, 33500, 33492, 33489, 33502, 33491, 33503, 33519,
+    33542, 34384, 34425, 34427, 34426, 34893, 34923, 35201, 35284, 35336, 35330,
+    35331, 35998, 36000, 36212, 36211, 36276, 36557, 36556, 36848, 36838, 36834,
+    36842, 36837, 36845, 36843, 36836, 36840, 37066, 37070, 37057, 37059, 37195,
+    37194, 37325, 38274, 38480, 38475, 38476, 38477, 38754, 38761, 38859, 38893,
+    38899, 38913, 39080, 39131, 39135, 39318, 39321, 20056, 20147, 20492, 20493,
+    20515, 20463, 20518, 20517, 20472, 20521, 20502, 20486, 20540, 20511, 20506,
+    20498, 20497, 20474, 20480, 20500, 20520, 20465, 20513, 20491, 20505, 20504,
+    20467, 20462, 20525, 20522, 20478, 20523, 20489, 20860, 20900, 20901, 20898,
+    20941, 20940, 20934, 20939, 21078, 21084, 21076, 21083, 21085, 21290, 21375,
+    21407, 21405, 21471, 21736, 21776, 21761, 21815, 21756, 21733, 21746, 21766,
+    21754, 21780, 21737, 21741, 21729, 21769, 21742, 21738, 21734, 21799, 21767,
+    21757, 21775, 22275, 22276, 22466, 22484, 22475, 22467, 22537, 22799, 22871,
+    22872, 22874, 23057, 23064, 23068, 23071, 23067, 23059, 23020, 23072, 23075,
+    23081, 23077, 23052, 23049, 23403, 23640, 23472, 23475, 23478, 23476, 23470,
+    23477, 23481, 23480, 23556, 23633, 23637, 23632, 23789, 23805, 23803, 23786,
+    23784, 23792, 23798, 23809, 23796, 24046, 24109, 24107, 24235, 24237, 24231,
+    24369, 24466, 24465, 24464, 24665, 24675, 24677, 24656, 24661, 24685, 24681,
+    24687, 24708, 24735, 24730, 24717, 24724, 24716, 24709, 24726, 25159, 25331,
+    25352, 25343, 25422, 25406, 25391, 25429, 25410, 25414, 25423, 25417, 25402,
+    25424, 25405, 25386, 25387, 25384, 25421, 25420, 25928, 25929, 26009, 26049,
+    26053, 26178, 26185, 26191, 26179, 26194, 26188, 26181, 26177, 26360, 26388,
+    26389, 26391, 26657, 26680, 26696, 26694, 26707, 26681, 26690, 26708, 26665,
+    26803, 26647, 26700, 26705, 26685, 26612, 26704, 26688, 26684, 26691, 26666,
+    26693, 26643, 26648, 26689, 27530, 27529, 27575, 27683, 27687, 27688, 27686,
+    27684, 27888, 28010, 28053, 28040, 28039, 28006, 28024, 28023, 27993, 28051,
+    28012, 28041, 28014, 27994, 28020, 28009, 28044, 28042, 28025, 28037, 28005,
+    28052, 28874, 28888, 28900, 28889, 28872, 28879, 29241, 29305, 29436, 29433,
+    29437, 29432, 29431, 29574, 29677, 29705, 29678, 29664, 29674, 29662, 30036,
+    30045, 30044, 30042, 30041, 30142, 30149, 30151, 30130, 30131, 30141, 30140,
+    30137, 30146, 30136, 30347, 30384, 30410, 30413, 30414, 30505, 30495, 30496,
+    30504, 30697, 30768, 30759, 30776, 30749, 30772, 30775, 30757, 30765, 30752,
+    30751, 30770, 31061, 31056, 31072, 31071, 31062, 31070, 31069, 31063, 31066,
+    31204, 31203, 31207, 31199, 31206, 31209, 31192, 31364, 31368, 31449, 31494,
+    31505, 31881, 32033, 32023, 32011, 32010, 32032, 32034, 32020, 32016, 32021,
+    32026, 32028, 32013, 32025, 32027, 32570, 32607, 32660, 32709, 32705, 32774,
+    32792, 32789, 32793, 32791, 32829, 32831, 33009, 33026, 33008, 33029, 33005,
+    33012, 33030, 33016, 33011, 33032, 33021, 33034, 33020, 33007, 33261, 33260,
+    33280, 33296, 33322, 33323, 33320, 33324, 33467, 33579, 33618, 33620, 33610,
+    33592, 33616, 33609, 33589, 33588, 33615, 33586, 33593, 33590, 33559, 33600,
+    33585, 33576, 33603, 34388, 34442, 34474, 34451, 34468, 34473, 34444, 34467,
+    34460, 34928, 34935, 34945, 34946, 34941, 34937, 35352, 35344, 35342, 35340,
+    35349, 35338, 35351, 35347, 35350, 35343, 35345, 35912, 35962, 35961, 36001,
+    36002, 36215, 36524, 36562, 36564, 36559, 36785, 36865, 36870, 36855, 36864,
+    36858, 36852, 36867, 36861, 36869, 36856, 37013, 37089, 37085, 37090, 37202,
+    37197, 37196, 37336, 37341, 37335, 37340, 37337, 38275, 38498, 38499, 38497,
+    38491, 38493, 38500, 38488, 38494, 38587, 39138, 39340, 39592, 39640, 39717,
+    39730, 39740, 20094, 20602, 20605, 20572, 20551, 20547, 20556, 20570, 20553,
+    20581, 20598, 20558, 20565, 20597, 20596, 20599, 20559, 20495, 20591, 20589,
+    20828, 20885, 20976, 21098, 21103, 21202, 21209, 21208, 21205, 21264, 21263,
+    21273, 21311, 21312, 21310, 21443, 26364, 21830, 21866, 21862, 21828, 21854,
+    21857, 21827, 21834, 21809, 21846, 21839, 21845, 21807, 21860, 21816, 21806,
+    21852, 21804, 21859, 21811, 21825, 21847, 22280, 22283, 22281, 22495, 22533,
+    22538, 22534, 22496, 22500, 22522, 22530, 22581, 22519, 22521, 22816, 22882,
+    23094, 23105, 23113, 23142, 23146, 23104, 23100, 23138, 23130, 23110, 23114,
+    23408, 23495, 23493, 23492, 23490, 23487, 23494, 23561, 23560, 23559, 23648,
+    23644, 23645, 23815, 23814, 23822, 23835, 23830, 23842, 23825, 23849, 23828,
+    23833, 23844, 23847, 23831, 24034, 24120, 24118, 24115, 24119, 24247, 24248,
+    24246, 24245, 24254, 24373, 24375, 24407, 24428, 24425, 24427, 24471, 24473,
+    24478, 24472, 24481, 24480, 24476, 24703, 24739, 24713, 24736, 24744, 24779,
+    24756, 24806, 24765, 24773, 24763, 24757, 24796, 24764, 24792, 24789, 24774,
+    24799, 24760, 24794, 24775, 25114, 25115, 25160, 25504, 25511, 25458, 25494,
+    25506, 25509, 25463, 25447, 25496, 25514, 25457, 25513, 25481, 25475, 25499,
+    25451, 25512, 25476, 25480, 25497, 25505, 25516, 25490, 25487, 25472, 25467,
+    25449, 25448, 25466, 25949, 25942, 25937, 25945, 25943, 21855, 25935, 25944,
+    25941, 25940, 26012, 26011, 26028, 26063, 26059, 26060, 26062, 26205, 26202,
+    26212, 26216, 26214, 26206, 26361, 21207, 26395, 26753, 26799, 26786, 26771,
+    26805, 26751, 26742, 26801, 26791, 26775, 26800, 26755, 26820, 26797, 26758,
+    26757, 26772, 26781, 26792, 26783, 26785, 26754, 27442, 27578, 27627, 27628,
+    27691, 28046, 28092, 28147, 28121, 28082, 28129, 28108, 28132, 28155, 28154,
+    28165, 28103, 28107, 28079, 28113, 28078, 28126, 28153, 28088, 28151, 28149,
+    28101, 28114, 28186, 28085, 28122, 28139, 28120, 28138, 28145, 28142, 28136,
+    28102, 28100, 28074, 28140, 28095, 28134, 28921, 28937, 28938, 28925, 28911,
+    29245, 29309, 29313, 29468, 29467, 29462, 29459, 29465, 29575, 29701, 29706,
+    29699, 29702, 29694, 29709, 29920, 29942, 29943, 29980, 29986, 30053, 30054,
+    30050, 30064, 30095, 30164, 30165, 30133, 30154, 30157, 30350, 30420, 30418,
+    30427, 30519, 30526, 30524, 30518, 30520, 30522, 30827, 30787, 30798, 31077,
+    31080, 31085, 31227, 31378, 31381, 31520, 31528, 31515, 31532, 31526, 31513,
+    31518, 31534, 31890, 31895, 31893, 32070, 32067, 32113, 32046, 32057, 32060,
+    32064, 32048, 32051, 32068, 32047, 32066, 32050, 32049, 32573, 32670, 32666,
+    32716, 32718, 32722, 32796, 32842, 32838, 33071, 33046, 33059, 33067, 33065,
+    33072, 33060, 33282, 33333, 33335, 33334, 33337, 33678, 33694, 33688, 33656,
+    33698, 33686, 33725, 33707, 33682, 33674, 33683, 33673, 33696, 33655, 33659,
+    33660, 33670, 33703, 34389, 24426, 34503, 34496, 34486, 34500, 34485, 34502,
+    34507, 34481, 34479, 34505, 34899, 34974, 34952, 34987, 34962, 34966, 34957,
+    34955, 35219, 35215, 35370, 35357, 35363, 35365, 35377, 35373, 35359, 35355,
+    35362, 35913, 35930, 36009, 36012, 36011, 36008, 36010, 36007, 36199, 36198,
+    36286, 36282, 36571, 36575, 36889, 36877, 36890, 36887, 36899, 36895, 36893,
+    36880, 36885, 36894, 36896, 36879, 36898, 36886, 36891, 36884, 37096, 37101,
+    37117, 37207, 37326, 37365, 37350, 37347, 37351, 37357, 37353, 38281, 38506,
+    38517, 38515, 38520, 38512, 38516, 38518, 38519, 38508, 38592, 38634, 38633,
+    31456, 31455, 38914, 38915, 39770, 40165, 40565, 40575, 40613, 40635, 20642,
+    20621, 20613, 20633, 20625, 20608, 20630, 20632, 20634, 26368, 20977, 21106,
+    21108, 21109, 21097, 21214, 21213, 21211, 21338, 21413, 21883, 21888, 21927,
+    21884, 21898, 21917, 21912, 21890, 21916, 21930, 21908, 21895, 21899, 21891,
+    21939, 21934, 21919, 21822, 21938, 21914, 21947, 21932, 21937, 21886, 21897,
+    21931, 21913, 22285, 22575, 22570, 22580, 22564, 22576, 22577, 22561, 22557,
+    22560, 22777, 22778, 22880, 23159, 23194, 23167, 23186, 23195, 23207, 23411,
+    23409, 23506, 23500, 23507, 23504, 23562, 23563, 23601, 23884, 23888, 23860,
+    23879, 24061, 24133, 24125, 24128, 24131, 24190, 24266, 24257, 24258, 24260,
+    24380, 24429, 24489, 24490, 24488, 24785, 24801, 24754, 24758, 24800, 24860,
+    24867, 24826, 24853, 24816, 24827, 24820, 24936, 24817, 24846, 24822, 24841,
+    24832, 24850, 25119, 25161, 25507, 25484, 25551, 25536, 25577, 25545, 25542,
+    25549, 25554, 25571, 25552, 25569, 25558, 25581, 25582, 25462, 25588, 25578,
+    25563, 25682, 25562, 25593, 25950, 25958, 25954, 25955, 26001, 26000, 26031,
+    26222, 26224, 26228, 26230, 26223, 26257, 26234, 26238, 26231, 26366, 26367,
+    26399, 26397, 26874, 26837, 26848, 26840, 26839, 26885, 26847, 26869, 26862,
+    26855, 26873, 26834, 26866, 26851, 26827, 26829, 26893, 26898, 26894, 26825,
+    26842, 26990, 26875, 27454, 27450, 27453, 27544, 27542, 27580, 27631, 27694,
+    27695, 27692, 28207, 28216, 28244, 28193, 28210, 28263, 28234, 28192, 28197,
+    28195, 28187, 28251, 28248, 28196, 28246, 28270, 28205, 28198, 28271, 28212,
+    28237, 28218, 28204, 28227, 28189, 28222, 28363, 28297, 28185, 28238, 28259,
+    28228, 28274, 28265, 28255, 28953, 28954, 28966, 28976, 28961, 28982, 29038,
+    28956, 29260, 29316, 29312, 29494, 29477, 29492, 29481, 29754, 29738, 29747,
+    29730, 29733, 29749, 29750, 29748, 29743, 29723, 29734, 29736, 29989, 29990,
+    30059, 30058, 30178, 30171, 30179, 30169, 30168, 30174, 30176, 30331, 30332,
+    30358, 30355, 30388, 30428, 30543, 30701, 30813, 30828, 30831, 31245, 31240,
+    31243, 31237, 31232, 31384, 31383, 31382, 31461, 31459, 31561, 31574, 31558,
+    31568, 31570, 31572, 31565, 31563, 31567, 31569, 31903, 31909, 32094, 32080,
+    32104, 32085, 32043, 32110, 32114, 32097, 32102, 32098, 32112, 32115, 21892,
+    32724, 32725, 32779, 32850, 32901, 33109, 33108, 33099, 33105, 33102, 33081,
+    33094, 33086, 33100, 33107, 33140, 33298, 33308, 33769, 33795, 33784, 33805,
+    33760, 33733, 33803, 33729, 33775, 33777, 33780, 33879, 33802, 33776, 33804,
+    33740, 33789, 33778, 33738, 33848, 33806, 33796, 33756, 33799, 33748, 33759,
+    34395, 34527, 34521, 34541, 34516, 34523, 34532, 34512, 34526, 34903, 35009,
+    35010, 34993, 35203, 35222, 35387, 35424, 35413, 35422, 35388, 35393, 35412,
+    35419, 35408, 35398, 35380, 35386, 35382, 35414, 35937, 35970, 36015, 36028,
+    36019, 36029, 36033, 36027, 36032, 36020, 36023, 36022, 36031, 36024, 36234,
+    36229, 36225, 36302, 36317, 36299, 36314, 36305, 36300, 36315, 36294, 36603,
+    36600, 36604, 36764, 36910, 36917, 36913, 36920, 36914, 36918, 37122, 37109,
+    37129, 37118, 37219, 37221, 37327, 37396, 37397, 37411, 37385, 37406, 37389,
+    37392, 37383, 37393, 38292, 38287, 38283, 38289, 38291, 38290, 38286, 38538,
+    38542, 38539, 38525, 38533, 38534, 38541, 38514, 38532, 38593, 38597, 38596,
+    38598, 38599, 38639, 38642, 38860, 38917, 38918, 38920, 39143, 39146, 39151,
+    39145, 39154, 39149, 39342, 39341, 40643, 40653, 40657, 20098, 20653, 20661,
+    20658, 20659, 20677, 20670, 20652, 20663, 20667, 20655, 20679, 21119, 21111,
+    21117, 21215, 21222, 21220, 21218, 21219, 21295, 21983, 21992, 21971, 21990,
+    21966, 21980, 21959, 21969, 21987, 21988, 21999, 21978, 21985, 21957, 21958,
+    21989, 21961, 22290, 22291, 22622, 22609, 22616, 22615, 22618, 22612, 22635,
+    22604, 22637, 22602, 22626, 22610, 22603, 22887, 23233, 23241, 23244, 23230,
+    23229, 23228, 23219, 23234, 23218, 23913, 23919, 24140, 24185, 24265, 24264,
+    24338, 24409, 24492, 24494, 24858, 24847, 24904, 24863, 24819, 24859, 24825,
+    24833, 24840, 24910, 24908, 24900, 24909, 24894, 24884, 24871, 24845, 24838,
+    24887, 25121, 25122, 25619, 25662, 25630, 25642, 25645, 25661, 25644, 25615,
+    25628, 25620, 25613, 25654, 25622, 25623, 25606, 25964, 26015, 26032, 26263,
+    26249, 26247, 26248, 26262, 26244, 26264, 26253, 26371, 27028, 26989, 26970,
+    26999, 26976, 26964, 26997, 26928, 27010, 26954, 26984, 26987, 26974, 26963,
+    27001, 27014, 26973, 26979, 26971, 27463, 27506, 27584, 27583, 27603, 27645,
+    28322, 28335, 28371, 28342, 28354, 28304, 28317, 28359, 28357, 28325, 28312,
+    28348, 28346, 28331, 28369, 28310, 28316, 28356, 28372, 28330, 28327, 28340,
+    29006, 29017, 29033, 29028, 29001, 29031, 29020, 29036, 29030, 29004, 29029,
+    29022, 28998, 29032, 29014, 29242, 29266, 29495, 29509, 29503, 29502, 29807,
+    29786, 29781, 29791, 29790, 29761, 29759, 29785, 29787, 29788, 30070, 30072,
+    30208, 30192, 30209, 30194, 30193, 30202, 30207, 30196, 30195, 30430, 30431,
+    30555, 30571, 30566, 30558, 30563, 30585, 30570, 30572, 30556, 30565, 30568,
+    30562, 30702, 30862, 30896, 30871, 30872, 30860, 30857, 30844, 30865, 30867,
+    30847, 31098, 31103, 31105, 33836, 31165, 31260, 31258, 31264, 31252, 31263,
+    31262, 31391, 31392, 31607, 31680, 31584, 31598, 31591, 31921, 31923, 31925,
+    32147, 32121, 32145, 32129, 32143, 32091, 32622, 32617, 32618, 32626, 32681,
+    32680, 32676, 32854, 32856, 32902, 32900, 33137, 33136, 33144, 33125, 33134,
+    33139, 33131, 33145, 33146, 33126, 33285, 33351, 33922, 33911, 33853, 33841,
+    33909, 33894, 33899, 33865, 33900, 33883, 33852, 33845, 33889, 33891, 33897,
+    33901, 33862, 34398, 34396, 34399, 34553, 34579, 34568, 34567, 34560, 34558,
+    34555, 34562, 34563, 34566, 34570, 34905, 35039, 35028, 35033, 35036, 35032,
+    35037, 35041, 35018, 35029, 35026, 35228, 35299, 35435, 35442, 35443, 35430,
+    35433, 35440, 35463, 35452, 35427, 35488, 35441, 35461, 35437, 35426, 35438,
+    35436, 35449, 35451, 35390, 35432, 35938, 35978, 35977, 36042, 36039, 36040,
+    36036, 36018, 36035, 36034, 36037, 36321, 36319, 36328, 36335, 36339, 36346,
+    36330, 36324, 36326, 36530, 36611, 36617, 36606, 36618, 36767, 36786, 36939,
+    36938, 36947, 36930, 36948, 36924, 36949, 36944, 36935, 36943, 36942, 36941,
+    36945, 36926, 36929, 37138, 37143, 37228, 37226, 37225, 37321, 37431, 37463,
+    37432, 37437, 37440, 37438, 37467, 37451, 37476, 37457, 37428, 37449, 37453,
+    37445, 37433, 37439, 37466, 38296, 38552, 38548, 38549, 38605, 38603, 38601,
+    38602, 38647, 38651, 38649, 38646, 38742, 38772, 38774, 38928, 38929, 38931,
+    38922, 38930, 38924, 39164, 39156, 39165, 39166, 39347, 39345, 39348, 39649,
+    40169, 40578, 40718, 40723, 40736, 20711, 20718, 20709, 20694, 20717, 20698,
+    20693, 20687, 20689, 20721, 20686, 20713, 20834, 20979, 21123, 21122, 21297,
+    21421, 22014, 22016, 22043, 22039, 22013, 22036, 22022, 22025, 22029, 22030,
+    22007, 22038, 22047, 22024, 22032, 22006, 22296, 22294, 22645, 22654, 22659,
+    22675, 22666, 22649, 22661, 22653, 22781, 22821, 22818, 22820, 22890, 22889,
+    23265, 23270, 23273, 23255, 23254, 23256, 23267, 23413, 23518, 23527, 23521,
+    23525, 23526, 23528, 23522, 23524, 23519, 23565, 23650, 23940, 23943, 24155,
+    24163, 24149, 24151, 24148, 24275, 24278, 24330, 24390, 24432, 24505, 24903,
+    24895, 24907, 24951, 24930, 24931, 24927, 24922, 24920, 24949, 25130, 25735,
+    25688, 25684, 25764, 25720, 25695, 25722, 25681, 25703, 25652, 25709, 25723,
+    25970, 26017, 26071, 26070, 26274, 26280, 26269, 27036, 27048, 27029, 27073,
+    27054, 27091, 27083, 27035, 27063, 27067, 27051, 27060, 27088, 27085, 27053,
+    27084, 27046, 27075, 27043, 27465, 27468, 27699, 28467, 28436, 28414, 28435,
+    28404, 28457, 28478, 28448, 28460, 28431, 28418, 28450, 28415, 28399, 28422,
+    28465, 28472, 28466, 28451, 28437, 28459, 28463, 28552, 28458, 28396, 28417,
+    28402, 28364, 28407, 29076, 29081, 29053, 29066, 29060, 29074, 29246, 29330,
+    29334, 29508, 29520, 29796, 29795, 29802, 29808, 29805, 29956, 30097, 30247,
+    30221, 30219, 30217, 30227, 30433, 30435, 30596, 30589, 30591, 30561, 30913,
+    30879, 30887, 30899, 30889, 30883, 31118, 31119, 31117, 31278, 31281, 31402,
+    31401, 31469, 31471, 31649, 31637, 31627, 31605, 31639, 31645, 31636, 31631,
+    31672, 31623, 31620, 31929, 31933, 31934, 32187, 32176, 32156, 32189, 32190,
+    32160, 32202, 32180, 32178, 32177, 32186, 32162, 32191, 32181, 32184, 32173,
+    32210, 32199, 32172, 32624, 32736, 32737, 32735, 32862, 32858, 32903, 33104,
+    33152, 33167, 33160, 33162, 33151, 33154, 33255, 33274, 33287, 33300, 33310,
+    33355, 33993, 33983, 33990, 33988, 33945, 33950, 33970, 33948, 33995, 33976,
+    33984, 34003, 33936, 33980, 34001, 33994, 34623, 34588, 34619, 34594, 34597,
+    34612, 34584, 34645, 34615, 34601, 35059, 35074, 35060, 35065, 35064, 35069,
+    35048, 35098, 35055, 35494, 35468, 35486, 35491, 35469, 35489, 35475, 35492,
+    35498, 35493, 35496, 35480, 35473, 35482, 35495, 35946, 35981, 35980, 36051,
+    36049, 36050, 36203, 36249, 36245, 36348, 36628, 36626, 36629, 36627, 36771,
+    36960, 36952, 36956, 36963, 36953, 36958, 36962, 36957, 36955, 37145, 37144,
+    37150, 37237, 37240, 37239, 37236, 37496, 37504, 37509, 37528, 37526, 37499,
+    37523, 37532, 37544, 37500, 37521, 38305, 38312, 38313, 38307, 38309, 38308,
+    38553, 38556, 38555, 38604, 38610, 38656, 38780, 38789, 38902, 38935, 38936,
+    39087, 39089, 39171, 39173, 39180, 39177, 39361, 39599, 39600, 39654, 39745,
+    39746, 40180, 40182, 40179, 40636, 40763, 40778, 20740, 20736, 20731, 20725,
+    20729, 20738, 20744, 20745, 20741, 20956, 21127, 21128, 21129, 21133, 21130,
+    21232, 21426, 22062, 22075, 22073, 22066, 22079, 22068, 22057, 22099, 22094,
+    22103, 22132, 22070, 22063, 22064, 22656, 22687, 22686, 22707, 22684, 22702,
+    22697, 22694, 22893, 23305, 23291, 23307, 23285, 23308, 23304, 23534, 23532,
+    23529, 23531, 23652, 23653, 23965, 23956, 24162, 24159, 24161, 24290, 24282,
+    24287, 24285, 24291, 24288, 24392, 24433, 24503, 24501, 24950, 24935, 24942,
+    24925, 24917, 24962, 24956, 24944, 24939, 24958, 24999, 24976, 25003, 24974,
+    25004, 24986, 24996, 24980, 25006, 25134, 25705, 25711, 25721, 25758, 25778,
+    25736, 25744, 25776, 25765, 25747, 25749, 25769, 25746, 25774, 25773, 25771,
+    25754, 25772, 25753, 25762, 25779, 25973, 25975, 25976, 26286, 26283, 26292,
+    26289, 27171, 27167, 27112, 27137, 27166, 27161, 27133, 27169, 27155, 27146,
+    27123, 27138, 27141, 27117, 27153, 27472, 27470, 27556, 27589, 27590, 28479,
+    28540, 28548, 28497, 28518, 28500, 28550, 28525, 28507, 28536, 28526, 28558,
+    28538, 28528, 28516, 28567, 28504, 28373, 28527, 28512, 28511, 29087, 29100,
+    29105, 29096, 29270, 29339, 29518, 29527, 29801, 29835, 29827, 29822, 29824,
+    30079, 30240, 30249, 30239, 30244, 30246, 30241, 30242, 30362, 30394, 30436,
+    30606, 30599, 30604, 30609, 30603, 30923, 30917, 30906, 30922, 30910, 30933,
+    30908, 30928, 31295, 31292, 31296, 31293, 31287, 31291, 31407, 31406, 31661,
+    31665, 31684, 31668, 31686, 31687, 31681, 31648, 31692, 31946, 32224, 32244,
+    32239, 32251, 32216, 32236, 32221, 32232, 32227, 32218, 32222, 32233, 32158,
+    32217, 32242, 32249, 32629, 32631, 32687, 32745, 32806, 33179, 33180, 33181,
+    33184, 33178, 33176, 34071, 34109, 34074, 34030, 34092, 34093, 34067, 34065,
+    34083, 34081, 34068, 34028, 34085, 34047, 34054, 34690, 34676, 34678, 34656,
+    34662, 34680, 34664, 34649, 34647, 34636, 34643, 34907, 34909, 35088, 35079,
+    35090, 35091, 35093, 35082, 35516, 35538, 35527, 35524, 35477, 35531, 35576,
+    35506, 35529, 35522, 35519, 35504, 35542, 35533, 35510, 35513, 35547, 35916,
+    35918, 35948, 36064, 36062, 36070, 36068, 36076, 36077, 36066, 36067, 36060,
+    36074, 36065, 36205, 36255, 36259, 36395, 36368, 36381, 36386, 36367, 36393,
+    36383, 36385, 36382, 36538, 36637, 36635, 36639, 36649, 36646, 36650, 36636,
+    36638, 36645, 36969, 36974, 36968, 36973, 36983, 37168, 37165, 37159, 37169,
+    37255, 37257, 37259, 37251, 37573, 37563, 37559, 37610, 37548, 37604, 37569,
+    37555, 37564, 37586, 37575, 37616, 37554, 38317, 38321, 38660, 38662, 38663,
+    38665, 38752, 38797, 38795, 38799, 38945, 38955, 38940, 39091, 39178, 39187,
+    39186, 39192, 39389, 39376, 39391, 39387, 39377, 39381, 39378, 39385, 39607,
+    39662, 39663, 39719, 39749, 39748, 39799, 39791, 40198, 40201, 40195, 40617,
+    40638, 40654, 22696, 40786, 20754, 20760, 20756, 20752, 20757, 20864, 20906,
+    20957, 21137, 21139, 21235, 22105, 22123, 22137, 22121, 22116, 22136, 22122,
+    22120, 22117, 22129, 22127, 22124, 22114, 22134, 22721, 22718, 22727, 22725,
+    22894, 23325, 23348, 23416, 23536, 23566, 24394, 25010, 24977, 25001, 24970,
+    25037, 25014, 25022, 25034, 25032, 25136, 25797, 25793, 25803, 25787, 25788,
+    25818, 25796, 25799, 25794, 25805, 25791, 25810, 25812, 25790, 25972, 26310,
+    26313, 26297, 26308, 26311, 26296, 27197, 27192, 27194, 27225, 27243, 27224,
+    27193, 27204, 27234, 27233, 27211, 27207, 27189, 27231, 27208, 27481, 27511,
+    27653, 28610, 28593, 28577, 28611, 28580, 28609, 28583, 28595, 28608, 28601,
+    28598, 28582, 28576, 28596, 29118, 29129, 29136, 29138, 29128, 29141, 29113,
+    29134, 29145, 29148, 29123, 29124, 29544, 29852, 29859, 29848, 29855, 29854,
+    29922, 29964, 29965, 30260, 30264, 30266, 30439, 30437, 30624, 30622, 30623,
+    30629, 30952, 30938, 30956, 30951, 31142, 31309, 31310, 31302, 31308, 31307,
+    31418, 31705, 31761, 31689, 31716, 31707, 31713, 31721, 31718, 31957, 31958,
+    32266, 32273, 32264, 32283, 32291, 32286, 32285, 32265, 32272, 32633, 32690,
+    32752, 32753, 32750, 32808, 33203, 33193, 33192, 33275, 33288, 33368, 33369,
+    34122, 34137, 34120, 34152, 34153, 34115, 34121, 34157, 34154, 34142, 34691,
+    34719, 34718, 34722, 34701, 34913, 35114, 35122, 35109, 35115, 35105, 35242,
+    35238, 35558, 35578, 35563, 35569, 35584, 35548, 35559, 35566, 35582, 35585,
+    35586, 35575, 35565, 35571, 35574, 35580, 35947, 35949, 35987, 36084, 36420,
+    36401, 36404, 36418, 36409, 36405, 36667, 36655, 36664, 36659, 36776, 36774,
+    36981, 36980, 36984, 36978, 36988, 36986, 37172, 37266, 37664, 37686, 37624,
+    37683, 37679, 37666, 37628, 37675, 37636, 37658, 37648, 37670, 37665, 37653,
+    37678, 37657, 38331, 38567, 38568, 38570, 38613, 38670, 38673, 38678, 38669,
+    38675, 38671, 38747, 38748, 38758, 38808, 38960, 38968, 38971, 38967, 38957,
+    38969, 38948, 39184, 39208, 39198, 39195, 39201, 39194, 39405, 39394, 39409,
+    39608, 39612, 39675, 39661, 39720, 39825, 40213, 40227, 40230, 40232, 40210,
+    40219, 40664, 40660, 40845, 40860, 20778, 20767, 20769, 20786, 21237, 22158,
+    22144, 22160, 22149, 22151, 22159, 22741, 22739, 22737, 22734, 23344, 23338,
+    23332, 23418, 23607, 23656, 23996, 23994, 23997, 23992, 24171, 24396, 24509,
+    25033, 25026, 25031, 25062, 25035, 25138, 25140, 25806, 25802, 25816, 25824,
+    25840, 25830, 25836, 25841, 25826, 25837, 25986, 25987, 26329, 26326, 27264,
+    27284, 27268, 27298, 27292, 27355, 27299, 27262, 27287, 27280, 27296, 27484,
+    27566, 27610, 27656, 28632, 28657, 28639, 28640, 28635, 28644, 28651, 28655,
+    28544, 28652, 28641, 28649, 28629, 28654, 28656, 29159, 29151, 29166, 29158,
+    29157, 29165, 29164, 29172, 29152, 29237, 29254, 29552, 29554, 29865, 29872,
+    29862, 29864, 30278, 30274, 30284, 30442, 30643, 30634, 30640, 30636, 30631,
+    30637, 30703, 30967, 30970, 30964, 30959, 30977, 31143, 31146, 31319, 31423,
+    31751, 31757, 31742, 31735, 31756, 31712, 31968, 31964, 31966, 31970, 31967,
+    31961, 31965, 32302, 32318, 32326, 32311, 32306, 32323, 32299, 32317, 32305,
+    32325, 32321, 32308, 32313, 32328, 32309, 32319, 32303, 32580, 32755, 32764,
+    32881, 32882, 32880, 32879, 32883, 33222, 33219, 33210, 33218, 33216, 33215,
+    33213, 33225, 33214, 33256, 33289, 33393, 34218, 34180, 34174, 34204, 34193,
+    34196, 34223, 34203, 34183, 34216, 34186, 34407, 34752, 34769, 34739, 34770,
+    34758, 34731, 34747, 34746, 34760, 34763, 35131, 35126, 35140, 35128, 35133,
+    35244, 35598, 35607, 35609, 35611, 35594, 35616, 35613, 35588, 35600, 35905,
+    35903, 35955, 36090, 36093, 36092, 36088, 36091, 36264, 36425, 36427, 36424,
+    36426, 36676, 36670, 36674, 36677, 36671, 36991, 36989, 36996, 36993, 36994,
+    36992, 37177, 37283, 37278, 37276, 37709, 37762, 37672, 37749, 37706, 37733,
+    37707, 37656, 37758, 37740, 37723, 37744, 37722, 37716, 38346, 38347, 38348,
+    38344, 38342, 38577, 38584, 38614, 38684, 38686, 38816, 38867, 38982, 39094,
+    39221, 39425, 39423, 39854, 39851, 39850, 39853, 40251, 40255, 40587, 40655,
+    40670, 40668, 40669, 40667, 40766, 40779, 21474, 22165, 22190, 22745, 22744,
+    23352, 24413, 25059, 25139, 25844, 25842, 25854, 25862, 25850, 25851, 25847,
+    26039, 26332, 26406, 27315, 27308, 27331, 27323, 27320, 27330, 27310, 27311,
+    27487, 27512, 27567, 28681, 28683, 28670, 28678, 28666, 28689, 28687, 29179,
+    29180, 29182, 29176, 29559, 29557, 29863, 29887, 29973, 30294, 30296, 30290,
+    30653, 30655, 30651, 30652, 30990, 31150, 31329, 31330, 31328, 31428, 31429,
+    31787, 31783, 31786, 31774, 31779, 31777, 31975, 32340, 32341, 32350, 32346,
+    32353, 32338, 32345, 32584, 32761, 32763, 32887, 32886, 33229, 33231, 33290,
+    34255, 34217, 34253, 34256, 34249, 34224, 34234, 34233, 34214, 34799, 34796,
+    34802, 34784, 35206, 35250, 35316, 35624, 35641, 35628, 35627, 35920, 36101,
+    36441, 36451, 36454, 36452, 36447, 36437, 36544, 36681, 36685, 36999, 36995,
+    37000, 37291, 37292, 37328, 37780, 37770, 37782, 37794, 37811, 37806, 37804,
+    37808, 37784, 37786, 37783, 38356, 38358, 38352, 38357, 38626, 38620, 38617,
+    38619, 38622, 38692, 38819, 38822, 38829, 38905, 38989, 38991, 38988, 38990,
+    38995, 39098, 39230, 39231, 39229, 39214, 39333, 39438, 39617, 39683, 39686,
+    39759, 39758, 39757, 39882, 39881, 39933, 39880, 39872, 40273, 40285, 40288,
+    40672, 40725, 40748, 20787, 22181, 22750, 22751, 22754, 23541, 40848, 24300,
+    25074, 25079, 25078, 25077, 25856, 25871, 26336, 26333, 27365, 27357, 27354,
+    27347, 28699, 28703, 28712, 28698, 28701, 28693, 28696, 29190, 29197, 29272,
+    29346, 29560, 29562, 29885, 29898, 29923, 30087, 30086, 30303, 30305, 30663,
+    31001, 31153, 31339, 31337, 31806, 31807, 31800, 31805, 31799, 31808, 32363,
+    32365, 32377, 32361, 32362, 32645, 32371, 32694, 32697, 32696, 33240, 34281,
+    34269, 34282, 34261, 34276, 34277, 34295, 34811, 34821, 34829, 34809, 34814,
+    35168, 35167, 35158, 35166, 35649, 35676, 35672, 35657, 35674, 35662, 35663,
+    35654, 35673, 36104, 36106, 36476, 36466, 36487, 36470, 36460, 36474, 36468,
+    36692, 36686, 36781, 37002, 37003, 37297, 37294, 37857, 37841, 37855, 37827,
+    37832, 37852, 37853, 37846, 37858, 37837, 37848, 37860, 37847, 37864, 38364,
+    38580, 38627, 38698, 38695, 38753, 38876, 38907, 39006, 39000, 39003, 39100,
+    39237, 39241, 39446, 39449, 39693, 39912, 39911, 39894, 39899, 40329, 40289,
+    40306, 40298, 40300, 40594, 40599, 40595, 40628, 21240, 22184, 22199, 22198,
+    22196, 22204, 22756, 23360, 23363, 23421, 23542, 24009, 25080, 25082, 25880,
+    25876, 25881, 26342, 26407, 27372, 28734, 28720, 28722, 29200, 29563, 29903,
+    30306, 30309, 31014, 31018, 31020, 31019, 31431, 31478, 31820, 31811, 31821,
+    31983, 31984, 36782, 32381, 32380, 32386, 32588, 32768, 33242, 33382, 34299,
+    34297, 34321, 34298, 34310, 34315, 34311, 34314, 34836, 34837, 35172, 35258,
+    35320, 35696, 35692, 35686, 35695, 35679, 35691, 36111, 36109, 36489, 36481,
+    36485, 36482, 37300, 37323, 37912, 37891, 37885, 38369, 38704, 39108, 39250,
+    39249, 39336, 39467, 39472, 39479, 39477, 39955, 39949, 40569, 40629, 40680,
+    40751, 40799, 40803, 40801, 20791, 20792, 22209, 22208, 22210, 22804, 23660,
+    24013, 25084, 25086, 25885, 25884, 26005, 26345, 27387, 27396, 27386, 27570,
+    28748, 29211, 29351, 29910, 29908, 30313, 30675, 31824, 32399, 32396, 32700,
+    34327, 34349, 34330, 34851, 34850, 34849, 34847, 35178, 35180, 35261, 35700,
+    35703, 35709, 36115, 36490, 36493, 36491, 36703, 36783, 37306, 37934, 37939,
+    37941, 37946, 37944, 37938, 37931, 38370, 38712, 38713, 38706, 38911, 39015,
+    39013, 39255, 39493, 39491, 39488, 39486, 39631, 39764, 39761, 39981, 39973,
+    40367, 40372, 40386, 40376, 40605, 40687, 40729, 40796, 40806, 40807, 20796,
+    20795, 22216, 22218, 22217, 23423, 24020, 24018, 24398, 25087, 25892, 27402,
+    27489, 28753, 28760, 29568, 29924, 30090, 30318, 30316, 31155, 31840, 31839,
+    32894, 32893, 33247, 35186, 35183, 35324, 35712, 36118, 36119, 36497, 36499,
+    36705, 37192, 37956, 37969, 37970, 38717, 38718, 38851, 38849, 39019, 39253,
+    39509, 39501, 39634, 39706, 40009, 39985, 39998, 39995, 40403, 40407, 40756,
+    40812, 40810, 40852, 22220, 24022, 25088, 25891, 25899, 25898, 26348, 27408,
+    29914, 31434, 31844, 31843, 31845, 32403, 32406, 32404, 33250, 34360, 34367,
+    34865, 35722, 37008, 37007, 37987, 37984, 37988, 38760, 39023, 39260, 39514,
+    39515, 39511, 39635, 39636, 39633, 40020, 40023, 40022, 40421, 40607, 40692,
+    22225, 22761, 25900, 28766, 30321, 30322, 30679, 32592, 32648, 34870, 34873,
+    34914, 35731, 35730, 35734, 33399, 36123, 37312, 37994, 38722, 38728, 38724,
+    38854, 39024, 39519, 39714, 39768, 40031, 40441, 40442, 40572, 40573, 40711,
+    40823, 40818, 24307, 27414, 28771, 31852, 31854, 34875, 35264, 36513, 37313,
+    38002, 38000, 39025, 39262, 39638, 39715, 40652, 28772, 30682, 35738, 38007,
+    38857, 39522, 39525, 32412, 35740, 36522, 37317, 38013, 38014, 38012, 40055,
+    40056, 40695, 35924, 38015, 40474, 29224, 39530, 39729, 40475, 40478, 31858,
+    9312, 9313, 9314, 9315, 9316, 9317, 9318, 9319, 9320, 9321, 9332, 9333,
+    9334, 9335, 9336, 9337, 9338, 9339, 9340, 9341, 8560, 8561, 8562, 8563,
+    8564, 8565, 8566, 8567, 8568, 8569, 20022, 20031, 20101, 20128, 20866,
+    20886, 20907, 21241, 21304, 21353, 21430, 22794, 23424, 24027, 24186, 24191,
+    24308, 24400, 24417, 25908, 26080, 30098, 30326, 36789, 38582, 168, 710,
+    12541, 12542, 12445, 12446, 0, 0, 12293, 12294, 12295, 12540, 65339, 65341,
+    10045, 12353, 12354, 12355, 12356, 12357, 12358, 12359, 12360, 12361, 12362,
+    12363, 12364, 12365, 12366, 12367, 12368, 12369, 12370, 12371, 12372, 12373,
+    12374, 12375, 12376, 12377, 12378, 12379, 12380, 12381, 12382, 12383, 12384,
+    12385, 12386, 12387, 12388, 12389, 12390, 12391, 12392, 12393, 12394, 12395,
+    12396, 12397, 12398, 12399, 12400, 12401, 12402, 12403, 12404, 12405, 12406,
+    12407, 12408, 12409, 12410, 12411, 12412, 12413, 12414, 12415, 12416, 12417,
+    12418, 12419, 12420, 12421, 12422, 12423, 12424, 12425, 12426, 12427, 12428,
+    12429, 12430, 12431, 12432, 12433, 12434, 12435, 12449, 12450, 12451, 12452,
+    12453, 12454, 12455, 12456, 12457, 12458, 12459, 12460, 12461, 12462, 12463,
+    12464, 12465, 12466, 12467, 12468, 12469, 12470, 12471, 12472, 12473, 12474,
+    12475, 12476, 12477, 12478, 12479, 12480, 12481, 12482, 12483, 12484, 12485,
+    12486, 12487, 12488, 12489, 12490, 12491, 12492, 12493, 12494, 12495, 12496,
+    12497, 12498, 12499, 12500, 12501, 12502, 12503, 12504, 12505, 12506, 12507,
+    12508, 12509, 12510, 12511, 12512, 12513, 12514, 12515, 12516, 12517, 12518,
+    12519, 12520, 12521, 12522, 12523, 12524, 12525, 12526, 12527, 12528, 12529,
+    12530, 12531, 12532, 12533, 12534, 1040, 1041, 1042, 1043, 1044, 1045, 1025,
+    1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057,
+    1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069,
+    1070, 1071, 1072, 1073, 1074, 1075, 1076, 1077, 1105, 1078, 1079, 1080,
+    1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092,
+    1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100, 1101, 1102, 1103, 8679,
+    8632, 8633, 12751, 204, 20058, 138, 20994, 17553, 40880, 20872, 40881,
+    30215, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65506, 65508, 65287,
+    65282, 12849, 8470, 8481, 12443, 12444, 11904, 11908, 11910, 11911, 11912,
+    11914, 11916, 11917, 11925, 11932, 11933, 11941, 11943, 11946, 11948, 11950,
+    11958, 11964, 11966, 11974, 11978, 11980, 11981, 11983, 11990, 11991, 11998,
+    12003, 0, 0, 0, 643, 592, 603, 596, 629, 339, 248, 331, 650, 618, 20034,
+    20060, 20981, 21274, 21378, 19975, 19980, 20039, 20109, 22231, 64012, 23662,
+    24435, 19983, 20871, 19982, 20014, 20115, 20162, 20169, 20168, 20888, 21244,
+    21356, 21433, 22304, 22787, 22828, 23568, 24063, 26081, 27571, 27596, 27668,
+    29247, 20017, 20028, 20200, 20188, 20201, 20193, 20189, 20186, 21004, 21276,
+    21324, 22306, 22307, 22807, 22831, 23425, 23428, 23570, 23611, 23668, 23667,
+    24068, 24192, 24194, 24521, 25097, 25168, 27669, 27702, 27715, 27711, 27707,
+    29358, 29360, 29578, 31160, 32906, 38430, 20238, 20248, 20268, 20213, 20244,
+    20209, 20224, 20215, 20232, 20253, 20226, 20229, 20258, 20243, 20228, 20212,
+    20242, 20913, 21011, 21001, 21008, 21158, 21282, 21279, 21325, 21386, 21511,
+    22241, 22239, 22318, 22314, 22324, 22844, 22912, 22908, 22917, 22907, 22910,
+    22903, 22911, 23382, 23573, 23589, 23676, 23674, 23675, 23678, 24031, 24181,
+    24196, 24322, 24346, 24436, 24533, 24532, 24527, 25180, 25182, 25188, 25185,
+    25190, 25186, 25177, 25184, 25178, 25189, 26095, 26094, 26430, 26425, 26424,
+    26427, 26426, 26431, 26428, 26419, 27672, 27718, 27730, 27740, 27727, 27722,
+    27732, 27723, 27724, 28785, 29278, 29364, 29365, 29582, 29994, 30335, 31349,
+    32593, 33400, 33404, 33408, 33405, 33407, 34381, 35198, 37017, 37015, 37016,
+    37019, 37012, 38434, 38436, 38432, 38435, 20310, 20283, 20322, 20297, 20307,
+    20324, 20286, 20327, 20306, 20319, 20289, 20312, 20269, 20275, 20287, 20321,
+    20879, 20921, 21020, 21022, 21025, 21165, 21166, 21257, 21347, 21362, 21390,
+    21391, 21552, 21559, 21546, 21588, 21573, 21529, 21532, 21541, 21528, 21565,
+    21583, 21569, 21544, 21540, 21575, 22254, 22247, 22245, 22337, 22341, 22348,
+    22345, 22347, 22354, 22790, 22848, 22950, 22936, 22944, 22935, 22926, 22946,
+    22928, 22927, 22951, 22945, 23438, 23442, 23592, 23594, 23693, 23695, 23688,
+    23691, 23689, 23698, 23690, 23686, 23699, 23701, 24032, 24074, 24078, 24203,
+    24201, 24204, 24200, 24205, 24325, 24349, 24440, 24438, 24530, 24529, 24528,
+    24557, 24552, 24558, 24563, 24545, 24548, 24547, 24570, 24559, 24567, 24571,
+    24576, 24564, 25146, 25219, 25228, 25230, 25231, 25236, 25223, 25201, 25211,
+    25210, 25200, 25217, 25224, 25207, 25213, 25202, 25204, 25911, 26096, 26100,
+    26099, 26098, 26101, 26437, 26439, 26457, 26453, 26444, 26440, 26461, 26445,
+    26458, 26443, 27600, 27673, 27674, 27768, 27751, 27755, 27780, 27787, 27791,
+    27761, 27759, 27753, 27802, 27757, 27783, 27797, 27804, 27750, 27763, 27749,
+    27771, 27790, 28788, 28794, 29283, 29375, 29373, 29379, 29382, 29377, 29370,
+    29381, 29589, 29591, 29587, 29588, 29586, 30010, 30009, 30100, 30101, 30337,
+    31037, 32820, 32917, 32921, 32912, 32914, 32924, 33424, 33423, 33413, 33422,
+    33425, 33427, 33418, 33411, 33412, 35960, 36809, 36799, 37023, 37025, 37029,
+    37022, 37031, 37024, 38448, 38440, 38447, 38445, 20019, 20376, 20348, 20357,
+    20349, 20352, 20359, 20342, 20340, 20361, 20356, 20343, 20300, 20375, 20330,
+    20378, 20345, 20353, 20344, 20368, 20380, 20372, 20382, 20370, 20354, 20373,
+    20331, 20334, 20894, 20924, 20926, 21045, 21042, 21043, 21062, 21041, 21180,
+    21258, 21259, 21308, 21394, 21396, 21639, 21631, 21633, 21649, 21634, 21640,
+    21611, 21626, 21630, 21605, 21612, 21620, 21606, 21645, 21615, 21601, 21600,
+    21656, 21603, 21607, 21604, 22263, 22265, 22383, 22386, 22381, 22379, 22385,
+    22384, 22390, 22400, 22389, 22395, 22387, 22388, 22370, 22376, 22397, 22796,
+    22853, 22965, 22970, 22991, 22990, 22962, 22988, 22977, 22966, 22972, 22979,
+    22998, 22961, 22973, 22976, 22984, 22964, 22983, 23394, 23397, 23443, 23445,
+    23620, 23623, 23726, 23716, 23712, 23733, 23727, 23720, 23724, 23711, 23715,
+    23725, 23714, 23722, 23719, 23709, 23717, 23734, 23728, 23718, 24087, 24084,
+    24089, 24360, 24354, 24355, 24356, 24404, 24450, 24446, 24445, 24542, 24549,
+    24621, 24614, 24601, 24626, 24587, 24628, 24586, 24599, 24627, 24602, 24606,
+    24620, 24610, 24589, 24592, 24622, 24595, 24593, 24588, 24585, 24604, 25108,
+    25149, 25261, 25268, 25297, 25278, 25258, 25270, 25290, 25262, 25267, 25263,
+    25275, 25257, 25264, 25272, 25917, 26024, 26043, 26121, 26108, 26116, 26130,
+    26120, 26107, 26115, 26123, 26125, 26117, 26109, 26129, 26128, 26358, 26378,
+    26501, 26476, 26510, 26514, 26486, 26491, 26520, 26502, 26500, 26484, 26509,
+    26508, 26490, 26527, 26513, 26521, 26499, 26493, 26497, 26488, 26489, 26516,
+    27429, 27520, 27518, 27614, 27677, 27795, 27884, 27883, 27886, 27865, 27830,
+    27860, 27821, 27879, 27831, 27856, 27842, 27834, 27843, 27846, 27885, 27890,
+    27858, 27869, 27828, 27786, 27805, 27776, 27870, 27840, 27952, 27853, 27847,
+    27824, 27897, 27855, 27881, 27857, 28820, 28824, 28805, 28819, 28806, 28804,
+    28817, 28822, 28802, 28826, 28803, 29290, 29398, 29387, 29400, 29385, 29404,
+    29394, 29396, 29402, 29388, 29393, 29604, 29601, 29613, 29606, 29602, 29600,
+    29612, 29597, 29917, 29928, 30015, 30016, 30014, 30092, 30104, 30383, 30451,
+    30449, 30448, 30453, 30712, 30716, 30713, 30715, 30714, 30711, 31042, 31039,
+    31173, 31352, 31355, 31483, 31861, 31997, 32821, 32911, 32942, 32931, 32952,
+    32949, 32941, 33312, 33440, 33472, 33451, 33434, 33432, 33435, 33461, 33447,
+    33454, 33468, 33438, 33466, 33460, 33448, 33441, 33449, 33474, 33444, 33475,
+    33462, 33442, 34416, 34415, 34413, 34414, 35926, 36818, 36811, 36819, 36813,
+    36822, 36821, 36823, 37042, 37044, 37039, 37043, 37040, 38457, 38461, 38460,
+    38458, 38467, 20429, 20421, 20435, 20402, 20425, 20427, 20417, 20436, 20444,
+    20441, 20411, 20403, 20443, 20423, 20438, 20410, 20416, 20409, 20460, 21060,
+    21065, 21184, 21186, 21309, 21372, 21399, 21398, 21401, 21400, 21690, 21665,
+    21677, 21669, 21711, 21699, 33549, 21687, 21678, 21718, 21686, 21701, 21702,
+    21664, 21616, 21692, 21666, 21694, 21618, 21726, 21680, 22453, 22430, 22431,
+    22436, 22412, 22423, 22429, 22427, 22420, 22424, 22415, 22425, 22437, 22426,
+    22421, 22772, 22797, 22867, 23009, 23006, 23022, 23040, 23025, 23005, 23034,
+    23037, 23036, 23030, 23012, 23026, 23031, 23003, 23017, 23027, 23029, 23008,
+    23038, 23028, 23021, 23464, 23628, 23760, 23768, 23756, 23767, 23755, 23771,
+    23774, 23770, 23753, 23751, 23754, 23766, 23763, 23764, 23759, 23752, 23750,
+    23758, 23775, 23800, 24057, 24097, 24098, 24099, 24096, 24100, 24240, 24228,
+    24226, 24219, 24227, 24229, 24327, 24366, 24406, 24454, 24631, 24633, 24660,
+    24690, 24670, 24645, 24659, 24647, 24649, 24667, 24652, 24640, 24642, 24671,
+    24612, 24644, 24664, 24678, 24686, 25154, 25155, 25295, 25357, 25355, 25333,
+    25358, 25347, 25323, 25337, 25359, 25356, 25336, 25334, 25344, 25363, 25364,
+    25338, 25365, 25339, 25328, 25921, 25923, 26026, 26047, 26166, 26145, 26162,
+    26165, 26140, 26150, 26146, 26163, 26155, 26170, 26141, 26164, 26169, 26158,
+    26383, 26384, 26561, 26610, 26568, 26554, 26588, 26555, 26616, 26584, 26560,
+    26551, 26565, 26603, 26596, 26591, 26549, 26573, 26547, 26615, 26614, 26606,
+    26595, 26562, 26553, 26574, 26599, 26608, 26546, 26620, 26566, 26605, 26572,
+    26542, 26598, 26587, 26618, 26569, 26570, 26563, 26602, 26571, 27432, 27522,
+    27524, 27574, 27606, 27608, 27616, 27680, 27681, 27944, 27956, 27949, 27935,
+    27964, 27967, 27922, 27914, 27866, 27955, 27908, 27929, 27962, 27930, 27921,
+    27904, 27933, 27970, 27905, 27928, 27959, 27907, 27919, 27968, 27911, 27936,
+    27948, 27912, 27938, 27913, 27920, 28855, 28831, 28862, 28849, 28848, 28833,
+    28852, 28853, 28841, 29249, 29257, 29258, 29292, 29296, 29299, 29294, 29386,
+    29412, 29416, 29419, 29407, 29418, 29414, 29411, 29573, 29644, 29634, 29640,
+    29637, 29625, 29622, 29621, 29620, 29675, 29631, 29639, 29630, 29635, 29638,
+    29624, 29643, 29932, 29934, 29998, 30023, 30024, 30119, 30122, 30329, 30404,
+    30472, 30467, 30468, 30469, 30474, 30455, 30459, 30458, 30695, 30696, 30726,
+    30737, 30738, 30725, 30736, 30735, 30734, 30729, 30723, 30739, 31050, 31052,
+    31051, 31045, 31044, 31189, 31181, 31183, 31190, 31182, 31360, 31358, 31441,
+    31488, 31489, 31866, 31864, 31865, 31871, 31872, 31873, 32003, 32008, 32001,
+    32600, 32657, 32653, 32702, 32775, 32782, 32783, 32788, 32823, 32984, 32967,
+    32992, 32977, 32968, 32962, 32976, 32965, 32995, 32985, 32988, 32970, 32981,
+    32969, 32975, 32983, 32998, 32973, 33279, 33313, 33428, 33497, 33534, 33529,
+    33543, 33512, 33536, 33493, 33594, 33515, 33494, 33524, 33516, 33505, 33522,
+    33525, 33548, 33531, 33526, 33520, 33514, 33508, 33504, 33530, 33523, 33517,
+    34423, 34420, 34428, 34419, 34881, 34894, 34919, 34922, 34921, 35283, 35332,
+    35335, 36210, 36835, 36833, 36846, 36832, 37105, 37053, 37055, 37077, 37061,
+    37054, 37063, 37067, 37064, 37332, 37331, 38484, 38479, 38481, 38483, 38474,
+    38478, 20510, 20485, 20487, 20499, 20514, 20528, 20507, 20469, 20468, 20531,
+    20535, 20524, 20470, 20471, 20503, 20508, 20512, 20519, 20533, 20527, 20529,
+    20494, 20826, 20884, 20883, 20938, 20932, 20933, 20936, 20942, 21089, 21082,
+    21074, 21086, 21087, 21077, 21090, 21197, 21262, 21406, 21798, 21730, 21783,
+    21778, 21735, 21747, 21732, 21786, 21759, 21764, 21768, 21739, 21777, 21765,
+    21745, 21770, 21755, 21751, 21752, 21728, 21774, 21763, 21771, 22273, 22274,
+    22476, 22578, 22485, 22482, 22458, 22470, 22461, 22460, 22456, 22454, 22463,
+    22471, 22480, 22457, 22465, 22798, 22858, 23065, 23062, 23085, 23086, 23061,
+    23055, 23063, 23050, 23070, 23091, 23404, 23463, 23469, 23468, 23555, 23638,
+    23636, 23788, 23807, 23790, 23793, 23799, 23808, 23801, 24105, 24104, 24232,
+    24238, 24234, 24236, 24371, 24368, 24423, 24669, 24666, 24679, 24641, 24738,
+    24712, 24704, 24722, 24705, 24733, 24707, 24725, 24731, 24727, 24711, 24732,
+    24718, 25113, 25158, 25330, 25360, 25430, 25388, 25412, 25413, 25398, 25411,
+    25572, 25401, 25419, 25418, 25404, 25385, 25409, 25396, 25432, 25428, 25433,
+    25389, 25415, 25395, 25434, 25425, 25400, 25431, 25408, 25416, 25930, 25926,
+    26054, 26051, 26052, 26050, 26186, 26207, 26183, 26193, 26386, 26387, 26655,
+    26650, 26697, 26674, 26675, 26683, 26699, 26703, 26646, 26673, 26652, 26677,
+    26667, 26669, 26671, 26702, 26692, 26676, 26653, 26642, 26644, 26662, 26664,
+    26670, 26701, 26682, 26661, 26656, 27436, 27439, 27437, 27441, 27444, 27501,
+    32898, 27528, 27622, 27620, 27624, 27619, 27618, 27623, 27685, 28026, 28003,
+    28004, 28022, 27917, 28001, 28050, 27992, 28002, 28013, 28015, 28049, 28045,
+    28143, 28031, 28038, 27998, 28007, 28000, 28055, 28016, 28028, 27999, 28034,
+    28056, 27951, 28008, 28043, 28030, 28032, 28036, 27926, 28035, 28027, 28029,
+    28021, 28048, 28892, 28883, 28881, 28893, 28875, 32569, 28898, 28887, 28882,
+    28894, 28896, 28884, 28877, 28869, 28870, 28871, 28890, 28878, 28897, 29250,
+    29304, 29303, 29302, 29440, 29434, 29428, 29438, 29430, 29427, 29435, 29441,
+    29651, 29657, 29669, 29654, 29628, 29671, 29667, 29673, 29660, 29650, 29659,
+    29652, 29661, 29658, 29655, 29656, 29672, 29918, 29919, 29940, 29941, 29985,
+    30043, 30047, 30128, 30145, 30139, 30148, 30144, 30143, 30134, 30138, 30346,
+    30409, 30493, 30491, 30480, 30483, 30482, 30499, 30481, 30485, 30489, 30490,
+    30498, 30503, 30755, 30764, 30754, 30773, 30767, 30760, 30766, 30763, 30753,
+    30761, 30771, 30762, 30769, 31060, 31067, 31055, 31068, 31059, 31058, 31057,
+    31211, 31212, 31200, 31214, 31213, 31210, 31196, 31198, 31197, 31366, 31369,
+    31365, 31371, 31372, 31370, 31367, 31448, 31504, 31492, 31507, 31493, 31503,
+    31496, 31498, 31502, 31497, 31506, 31876, 31889, 31882, 31884, 31880, 31885,
+    31877, 32030, 32029, 32017, 32014, 32024, 32022, 32019, 32031, 32018, 32015,
+    32012, 32604, 32609, 32606, 32608, 32605, 32603, 32662, 32658, 32707, 32706,
+    32704, 32790, 32830, 32825, 33018, 33010, 33017, 33013, 33025, 33019, 33024,
+    33281, 33327, 33317, 33587, 33581, 33604, 33561, 33617, 33573, 33622, 33599,
+    33601, 33574, 33564, 33570, 33602, 33614, 33563, 33578, 33544, 33596, 33613,
+    33558, 33572, 33568, 33591, 33583, 33577, 33607, 33605, 33612, 33619, 33566,
+    33580, 33611, 33575, 33608, 34387, 34386, 34466, 34472, 34454, 34445, 34449,
+    34462, 34439, 34455, 34438, 34443, 34458, 34437, 34469, 34457, 34465, 34471,
+    34453, 34456, 34446, 34461, 34448, 34452, 34883, 34884, 34925, 34933, 34934,
+    34930, 34944, 34929, 34943, 34927, 34947, 34942, 34932, 34940, 35346, 35911,
+    35927, 35963, 36004, 36003, 36214, 36216, 36277, 36279, 36278, 36561, 36563,
+    36862, 36853, 36866, 36863, 36859, 36868, 36860, 36854, 37078, 37088, 37081,
+    37082, 37091, 37087, 37093, 37080, 37083, 37079, 37084, 37092, 37200, 37198,
+    37199, 37333, 37346, 37338, 38492, 38495, 38588, 39139, 39647, 39727, 20095,
+    20592, 20586, 20577, 20574, 20576, 20563, 20555, 20573, 20594, 20552, 20557,
+    20545, 20571, 20554, 20578, 20501, 20549, 20575, 20585, 20587, 20579, 20580,
+    20550, 20544, 20590, 20595, 20567, 20561, 20944, 21099, 21101, 21100, 21102,
+    21206, 21203, 21293, 21404, 21877, 21878, 21820, 21837, 21840, 21812, 21802,
+    21841, 21858, 21814, 21813, 21808, 21842, 21829, 21772, 21810, 21861, 21838,
+    21817, 21832, 21805, 21819, 21824, 21835, 22282, 22279, 22523, 22548, 22498,
+    22518, 22492, 22516, 22528, 22509, 22525, 22536, 22520, 22539, 22515, 22479,
+    22535, 22510, 22499, 22514, 22501, 22508, 22497, 22542, 22524, 22544, 22503,
+    22529, 22540, 22513, 22505, 22512, 22541, 22532, 22876, 23136, 23128, 23125,
+    23143, 23134, 23096, 23093, 23149, 23120, 23135, 23141, 23148, 23123, 23140,
+    23127, 23107, 23133, 23122, 23108, 23131, 23112, 23182, 23102, 23117, 23097,
+    23116, 23152, 23145, 23111, 23121, 23126, 23106, 23132, 23410, 23406, 23489,
+    23488, 23641, 23838, 23819, 23837, 23834, 23840, 23820, 23848, 23821, 23846,
+    23845, 23823, 23856, 23826, 23843, 23839, 23854, 24126, 24116, 24241, 24244,
+    24249, 24242, 24243, 24374, 24376, 24475, 24470, 24479, 24714, 24720, 24710,
+    24766, 24752, 24762, 24787, 24788, 24783, 24804, 24793, 24797, 24776, 24753,
+    24795, 24759, 24778, 24767, 24771, 24781, 24768, 25394, 25445, 25482, 25474,
+    25469, 25533, 25502, 25517, 25501, 25495, 25515, 25486, 25455, 25479, 25488,
+    25454, 25519, 25461, 25500, 25453, 25518, 25468, 25508, 25403, 25503, 25464,
+    25477, 25473, 25489, 25485, 25456, 25939, 26061, 26213, 26209, 26203, 26201,
+    26204, 26210, 26392, 26745, 26759, 26768, 26780, 26733, 26734, 26798, 26795,
+    26966, 26735, 26787, 26796, 26793, 26741, 26740, 26802, 26767, 26743, 26770,
+    26748, 26731, 26738, 26794, 26752, 26737, 26750, 26779, 26774, 26763, 26784,
+    26761, 26788, 26744, 26747, 26769, 26764, 26762, 26749, 27446, 27443, 27447,
+    27448, 27537, 27535, 27533, 27534, 27532, 27690, 28096, 28075, 28084, 28083,
+    28276, 28076, 28137, 28130, 28087, 28150, 28116, 28160, 28104, 28128, 28127,
+    28118, 28094, 28133, 28124, 28125, 28123, 28148, 28106, 28093, 28141, 28144,
+    28090, 28117, 28098, 28111, 28105, 28112, 28146, 28115, 28157, 28119, 28109,
+    28131, 28091, 28922, 28941, 28919, 28951, 28916, 28940, 28912, 28932, 28915,
+    28944, 28924, 28927, 28934, 28947, 28928, 28920, 28918, 28939, 28930, 28942,
+    29310, 29307, 29308, 29311, 29469, 29463, 29447, 29457, 29464, 29450, 29448,
+    29439, 29455, 29470, 29576, 29686, 29688, 29685, 29700, 29697, 29693, 29703,
+    29696, 29690, 29692, 29695, 29708, 29707, 29684, 29704, 30052, 30051, 30158,
+    30162, 30159, 30155, 30156, 30161, 30160, 30351, 30345, 30419, 30521, 30511,
+    30509, 30513, 30514, 30516, 30515, 30525, 30501, 30523, 30517, 30792, 30802,
+    30793, 30797, 30794, 30796, 30758, 30789, 30800, 31076, 31079, 31081, 31082,
+    31075, 31083, 31073, 31163, 31226, 31224, 31222, 31223, 31375, 31380, 31376,
+    31541, 31559, 31540, 31525, 31536, 31522, 31524, 31539, 31512, 31530, 31517,
+    31537, 31531, 31533, 31535, 31538, 31544, 31514, 31523, 31892, 31896, 31894,
+    31907, 32053, 32061, 32056, 32054, 32058, 32069, 32044, 32041, 32065, 32071,
+    32062, 32063, 32074, 32059, 32040, 32611, 32661, 32668, 32669, 32667, 32714,
+    32715, 32717, 32720, 32721, 32711, 32719, 32713, 32799, 32798, 32795, 32839,
+    32835, 32840, 33048, 33061, 33049, 33051, 33069, 33055, 33068, 33054, 33057,
+    33045, 33063, 33053, 33058, 33297, 33336, 33331, 33338, 33332, 33330, 33396,
+    33680, 33699, 33704, 33677, 33658, 33651, 33700, 33652, 33679, 33665, 33685,
+    33689, 33653, 33684, 33705, 33661, 33667, 33676, 33693, 33691, 33706, 33675,
+    33662, 33701, 33711, 33672, 33687, 33712, 33663, 33702, 33671, 33710, 33654,
+    33690, 34393, 34390, 34495, 34487, 34498, 34497, 34501, 34490, 34480, 34504,
+    34489, 34483, 34488, 34508, 34484, 34491, 34492, 34499, 34493, 34494, 34898,
+    34953, 34965, 34984, 34978, 34986, 34970, 34961, 34977, 34975, 34968, 34983,
+    34969, 34971, 34967, 34980, 34988, 34956, 34963, 34958, 35202, 35286, 35289,
+    35285, 35376, 35367, 35372, 35358, 35897, 35899, 35932, 35933, 35965, 36005,
+    36221, 36219, 36217, 36284, 36290, 36281, 36287, 36289, 36568, 36574, 36573,
+    36572, 36567, 36576, 36577, 36900, 36875, 36881, 36892, 36876, 36897, 37103,
+    37098, 37104, 37108, 37106, 37107, 37076, 37099, 37100, 37097, 37206, 37208,
+    37210, 37203, 37205, 37356, 37364, 37361, 37363, 37368, 37348, 37369, 37354,
+    37355, 37367, 37352, 37358, 38266, 38278, 38280, 38524, 38509, 38507, 38513,
+    38511, 38591, 38762, 38916, 39141, 39319, 20635, 20629, 20628, 20638, 20619,
+    20643, 20611, 20620, 20622, 20637, 20584, 20636, 20626, 20610, 20615, 20831,
+    20948, 21266, 21265, 21412, 21415, 21905, 21928, 21925, 21933, 21879, 22085,
+    21922, 21907, 21896, 21903, 21941, 21889, 21923, 21906, 21924, 21885, 21900,
+    21926, 21887, 21909, 21921, 21902, 22284, 22569, 22583, 22553, 22558, 22567,
+    22563, 22568, 22517, 22600, 22565, 22556, 22555, 22579, 22591, 22582, 22574,
+    22585, 22584, 22573, 22572, 22587, 22881, 23215, 23188, 23199, 23162, 23202,
+    23198, 23160, 23206, 23164, 23205, 23212, 23189, 23214, 23095, 23172, 23178,
+    23191, 23171, 23179, 23209, 23163, 23165, 23180, 23196, 23183, 23187, 23197,
+    23530, 23501, 23499, 23508, 23505, 23498, 23502, 23564, 23600, 23863, 23875,
+    23915, 23873, 23883, 23871, 23861, 23889, 23886, 23893, 23859, 23866, 23890,
+    23869, 23857, 23897, 23874, 23865, 23881, 23864, 23868, 23858, 23862, 23872,
+    23877, 24132, 24129, 24408, 24486, 24485, 24491, 24777, 24761, 24780, 24802,
+    24782, 24772, 24852, 24818, 24842, 24854, 24837, 24821, 24851, 24824, 24828,
+    24830, 24769, 24835, 24856, 24861, 24848, 24831, 24836, 24843, 25162, 25492,
+    25521, 25520, 25550, 25573, 25576, 25583, 25539, 25757, 25587, 25546, 25568,
+    25590, 25557, 25586, 25589, 25697, 25567, 25534, 25565, 25564, 25540, 25560,
+    25555, 25538, 25543, 25548, 25547, 25544, 25584, 25559, 25561, 25906, 25959,
+    25962, 25956, 25948, 25960, 25957, 25996, 26013, 26014, 26030, 26064, 26066,
+    26236, 26220, 26235, 26240, 26225, 26233, 26218, 26226, 26369, 26892, 26835,
+    26884, 26844, 26922, 26860, 26858, 26865, 26895, 26838, 26871, 26859, 26852,
+    26870, 26899, 26896, 26867, 26849, 26887, 26828, 26888, 26992, 26804, 26897,
+    26863, 26822, 26900, 26872, 26832, 26877, 26876, 26856, 26891, 26890, 26903,
+    26830, 26824, 26845, 26846, 26854, 26868, 26833, 26886, 26836, 26857, 26901,
+    26917, 26823, 27449, 27451, 27455, 27452, 27540, 27543, 27545, 27541, 27581,
+    27632, 27634, 27635, 27696, 28156, 28230, 28231, 28191, 28233, 28296, 28220,
+    28221, 28229, 28258, 28203, 28223, 28225, 28253, 28275, 28188, 28211, 28235,
+    28224, 28241, 28219, 28163, 28206, 28254, 28264, 28252, 28257, 28209, 28200,
+    28256, 28273, 28267, 28217, 28194, 28208, 28243, 28261, 28199, 28280, 28260,
+    28279, 28245, 28281, 28242, 28262, 28213, 28214, 28250, 28960, 28958, 28975,
+    28923, 28974, 28977, 28963, 28965, 28962, 28978, 28959, 28968, 28986, 28955,
+    29259, 29274, 29320, 29321, 29318, 29317, 29323, 29458, 29451, 29488, 29474,
+    29489, 29491, 29479, 29490, 29485, 29478, 29475, 29493, 29452, 29742, 29740,
+    29744, 29739, 29718, 29722, 29729, 29741, 29745, 29732, 29731, 29725, 29737,
+    29728, 29746, 29947, 29999, 30063, 30060, 30183, 30170, 30177, 30182, 30173,
+    30175, 30180, 30167, 30357, 30354, 30426, 30534, 30535, 30532, 30541, 30533,
+    30538, 30542, 30539, 30540, 30686, 30700, 30816, 30820, 30821, 30812, 30829,
+    30833, 30826, 30830, 30832, 30825, 30824, 30814, 30818, 31092, 31091, 31090,
+    31088, 31234, 31242, 31235, 31244, 31236, 31385, 31462, 31460, 31562, 31547,
+    31556, 31560, 31564, 31566, 31552, 31576, 31557, 31906, 31902, 31912, 31905,
+    32088, 32111, 32099, 32083, 32086, 32103, 32106, 32079, 32109, 32092, 32107,
+    32082, 32084, 32105, 32081, 32095, 32078, 32574, 32575, 32613, 32614, 32674,
+    32672, 32673, 32727, 32849, 32847, 32848, 33022, 32980, 33091, 33098, 33106,
+    33103, 33095, 33085, 33101, 33082, 33254, 33262, 33271, 33272, 33273, 33284,
+    33340, 33341, 33343, 33397, 33595, 33743, 33785, 33827, 33728, 33768, 33810,
+    33767, 33764, 33788, 33782, 33808, 33734, 33736, 33771, 33763, 33727, 33793,
+    33757, 33765, 33752, 33791, 33761, 33739, 33742, 33750, 33781, 33737, 33801,
+    33807, 33758, 33809, 33798, 33730, 33779, 33749, 33786, 33735, 33745, 33770,
+    33811, 33731, 33772, 33774, 33732, 33787, 33751, 33762, 33819, 33755, 33790,
+    34520, 34530, 34534, 34515, 34531, 34522, 34538, 34525, 34539, 34524, 34540,
+    34537, 34519, 34536, 34513, 34888, 34902, 34901, 35002, 35031, 35001, 35000,
+    35008, 35006, 34998, 35004, 34999, 35005, 34994, 35073, 35017, 35221, 35224,
+    35223, 35293, 35290, 35291, 35406, 35405, 35385, 35417, 35392, 35415, 35416,
+    35396, 35397, 35410, 35400, 35409, 35402, 35404, 35407, 35935, 35969, 35968,
+    36026, 36030, 36016, 36025, 36021, 36228, 36224, 36233, 36312, 36307, 36301,
+    36295, 36310, 36316, 36303, 36309, 36313, 36296, 36311, 36293, 36591, 36599,
+    36602, 36601, 36582, 36590, 36581, 36597, 36583, 36584, 36598, 36587, 36593,
+    36588, 36596, 36585, 36909, 36916, 36911, 37126, 37164, 37124, 37119, 37116,
+    37128, 37113, 37115, 37121, 37120, 37127, 37125, 37123, 37217, 37220, 37215,
+    37218, 37216, 37377, 37386, 37413, 37379, 37402, 37414, 37391, 37388, 37376,
+    37394, 37375, 37373, 37382, 37380, 37415, 37378, 37404, 37412, 37401, 37399,
+    37381, 37398, 38267, 38285, 38284, 38288, 38535, 38526, 38536, 38537, 38531,
+    38528, 38594, 38600, 38595, 38641, 38640, 38764, 38768, 38766, 38919, 39081,
+    39147, 40166, 40697, 20099, 20100, 20150, 20669, 20671, 20678, 20654, 20676,
+    20682, 20660, 20680, 20674, 20656, 20673, 20666, 20657, 20683, 20681, 20662,
+    20664, 20951, 21114, 21112, 21115, 21116, 21955, 21979, 21964, 21968, 21963,
+    21962, 21981, 21952, 21972, 21956, 21993, 21951, 21970, 21901, 21967, 21973,
+    21986, 21974, 21960, 22002, 21965, 21977, 21954, 22292, 22611, 22632, 22628,
+    22607, 22605, 22601, 22639, 22613, 22606, 22621, 22617, 22629, 22619, 22589,
+    22627, 22641, 22780, 23239, 23236, 23243, 23226, 23224, 23217, 23221, 23216,
+    23231, 23240, 23227, 23238, 23223, 23232, 23242, 23220, 23222, 23245, 23225,
+    23184, 23510, 23512, 23513, 23583, 23603, 23921, 23907, 23882, 23909, 23922,
+    23916, 23902, 23912, 23911, 23906, 24048, 24143, 24142, 24138, 24141, 24139,
+    24261, 24268, 24262, 24267, 24263, 24384, 24495, 24493, 24823, 24905, 24906,
+    24875, 24901, 24886, 24882, 24878, 24902, 24879, 24911, 24873, 24896, 25120,
+    37224, 25123, 25125, 25124, 25541, 25585, 25579, 25616, 25618, 25609, 25632,
+    25636, 25651, 25667, 25631, 25621, 25624, 25657, 25655, 25634, 25635, 25612,
+    25638, 25648, 25640, 25665, 25653, 25647, 25610, 25626, 25664, 25637, 25639,
+    25611, 25575, 25627, 25646, 25633, 25614, 25967, 26002, 26067, 26246, 26252,
+    26261, 26256, 26251, 26250, 26265, 26260, 26232, 26400, 26982, 26975, 26936,
+    26958, 26978, 26993, 26943, 26949, 26986, 26937, 26946, 26967, 26969, 27002,
+    26952, 26953, 26933, 26988, 26931, 26941, 26981, 26864, 27000, 26932, 26985,
+    26944, 26991, 26948, 26998, 26968, 26945, 26996, 26956, 26939, 26955, 26935,
+    26972, 26959, 26961, 26930, 26962, 26927, 27003, 26940, 27462, 27461, 27459,
+    27458, 27464, 27457, 27547, 64013, 27643, 27644, 27641, 27639, 27640, 28315,
+    28374, 28360, 28303, 28352, 28319, 28307, 28308, 28320, 28337, 28345, 28358,
+    28370, 28349, 28353, 28318, 28361, 28343, 28336, 28365, 28326, 28367, 28338,
+    28350, 28355, 28380, 28376, 28313, 28306, 28302, 28301, 28324, 28321, 28351,
+    28339, 28368, 28362, 28311, 28334, 28323, 28999, 29012, 29010, 29027, 29024,
+    28993, 29021, 29026, 29042, 29048, 29034, 29025, 28994, 29016, 28995, 29003,
+    29040, 29023, 29008, 29011, 28996, 29005, 29018, 29263, 29325, 29324, 29329,
+    29328, 29326, 29500, 29506, 29499, 29498, 29504, 29514, 29513, 29764, 29770,
+    29771, 29778, 29777, 29783, 29760, 29775, 29776, 29774, 29762, 29766, 29773,
+    29780, 29921, 29951, 29950, 29949, 29981, 30073, 30071, 27011, 30191, 30223,
+    30211, 30199, 30206, 30204, 30201, 30200, 30224, 30203, 30198, 30189, 30197,
+    30205, 30361, 30389, 30429, 30549, 30559, 30560, 30546, 30550, 30554, 30569,
+    30567, 30548, 30553, 30573, 30688, 30855, 30874, 30868, 30863, 30852, 30869,
+    30853, 30854, 30881, 30851, 30841, 30873, 30848, 30870, 30843, 31100, 31106,
+    31101, 31097, 31249, 31256, 31257, 31250, 31255, 31253, 31266, 31251, 31259,
+    31248, 31395, 31394, 31390, 31467, 31590, 31588, 31597, 31604, 31593, 31602,
+    31589, 31603, 31601, 31600, 31585, 31608, 31606, 31587, 31922, 31924, 31919,
+    32136, 32134, 32128, 32141, 32127, 32133, 32122, 32142, 32123, 32131, 32124,
+    32140, 32148, 32132, 32125, 32146, 32621, 32619, 32615, 32616, 32620, 32678,
+    32677, 32679, 32731, 32732, 32801, 33124, 33120, 33143, 33116, 33129, 33115,
+    33122, 33138, 26401, 33118, 33142, 33127, 33135, 33092, 33121, 33309, 33353,
+    33348, 33344, 33346, 33349, 34033, 33855, 33878, 33910, 33913, 33935, 33933,
+    33893, 33873, 33856, 33926, 33895, 33840, 33869, 33917, 33882, 33881, 33908,
+    33907, 33885, 34055, 33886, 33847, 33850, 33844, 33914, 33859, 33912, 33842,
+    33861, 33833, 33753, 33867, 33839, 33858, 33837, 33887, 33904, 33849, 33870,
+    33868, 33874, 33903, 33989, 33934, 33851, 33863, 33846, 33843, 33896, 33918,
+    33860, 33835, 33888, 33876, 33902, 33872, 34571, 34564, 34551, 34572, 34554,
+    34518, 34549, 34637, 34552, 34574, 34569, 34561, 34550, 34573, 34565, 35030,
+    35019, 35021, 35022, 35038, 35035, 35034, 35020, 35024, 35205, 35227, 35295,
+    35301, 35300, 35297, 35296, 35298, 35292, 35302, 35446, 35462, 35455, 35425,
+    35391, 35447, 35458, 35460, 35445, 35459, 35457, 35444, 35450, 35900, 35915,
+    35914, 35941, 35940, 35942, 35974, 35972, 35973, 36044, 36200, 36201, 36241,
+    36236, 36238, 36239, 36237, 36243, 36244, 36240, 36242, 36336, 36320, 36332,
+    36337, 36334, 36304, 36329, 36323, 36322, 36327, 36338, 36331, 36340, 36614,
+    36607, 36609, 36608, 36613, 36615, 36616, 36610, 36619, 36946, 36927, 36932,
+    36937, 36925, 37136, 37133, 37135, 37137, 37142, 37140, 37131, 37134, 37230,
+    37231, 37448, 37458, 37424, 37434, 37478, 37427, 37477, 37470, 37507, 37422,
+    37450, 37446, 37485, 37484, 37455, 37472, 37479, 37487, 37430, 37473, 37488,
+    37425, 37460, 37475, 37456, 37490, 37454, 37459, 37452, 37462, 37426, 38303,
+    38300, 38302, 38299, 38546, 38547, 38545, 38551, 38606, 38650, 38653, 38648,
+    38645, 38771, 38775, 38776, 38770, 38927, 38925, 38926, 39084, 39158, 39161,
+    39343, 39346, 39344, 39349, 39597, 39595, 39771, 40170, 40173, 40167, 40576,
+    40701, 20710, 20692, 20695, 20712, 20723, 20699, 20714, 20701, 20708, 20691,
+    20716, 20720, 20719, 20707, 20704, 20952, 21120, 21121, 21225, 21227, 21296,
+    21420, 22055, 22037, 22028, 22034, 22012, 22031, 22044, 22017, 22035, 22018,
+    22010, 22045, 22020, 22015, 22009, 22665, 22652, 22672, 22680, 22662, 22657,
+    22655, 22644, 22667, 22650, 22663, 22673, 22670, 22646, 22658, 22664, 22651,
+    22676, 22671, 22782, 22891, 23260, 23278, 23269, 23253, 23274, 23258, 23277,
+    23275, 23283, 23266, 23264, 23259, 23276, 23262, 23261, 23257, 23272, 23263,
+    23415, 23520, 23523, 23651, 23938, 23936, 23933, 23942, 23930, 23937, 23927,
+    23946, 23945, 23944, 23934, 23932, 23949, 23929, 23935, 24152, 24153, 24147,
+    24280, 24273, 24279, 24270, 24284, 24277, 24281, 24274, 24276, 24388, 24387,
+    24431, 24502, 24876, 24872, 24897, 24926, 24945, 24947, 24914, 24915, 24946,
+    24940, 24960, 24948, 24916, 24954, 24923, 24933, 24891, 24938, 24929, 24918,
+    25129, 25127, 25131, 25643, 25677, 25691, 25693, 25716, 25718, 25714, 25715,
+    25725, 25717, 25702, 25766, 25678, 25730, 25694, 25692, 25675, 25683, 25696,
+    25680, 25727, 25663, 25708, 25707, 25689, 25701, 25719, 25971, 26016, 26273,
+    26272, 26271, 26373, 26372, 26402, 27057, 27062, 27081, 27040, 27086, 27030,
+    27056, 27052, 27068, 27025, 27033, 27022, 27047, 27021, 27049, 27070, 27055,
+    27071, 27076, 27069, 27044, 27092, 27065, 27082, 27034, 27087, 27059, 27027,
+    27050, 27041, 27038, 27097, 27031, 27024, 27074, 27061, 27045, 27078, 27466,
+    27469, 27467, 27550, 27551, 27552, 27587, 27588, 27646, 28366, 28405, 28401,
+    28419, 28453, 28408, 28471, 28411, 28462, 28425, 28494, 28441, 28442, 28455,
+    28440, 28475, 28434, 28397, 28426, 28470, 28531, 28409, 28398, 28461, 28480,
+    28464, 28476, 28469, 28395, 28423, 28430, 28483, 28421, 28413, 28406, 28473,
+    28444, 28412, 28474, 28447, 28429, 28446, 28424, 28449, 29063, 29072, 29065,
+    29056, 29061, 29058, 29071, 29051, 29062, 29057, 29079, 29252, 29267, 29335,
+    29333, 29331, 29507, 29517, 29521, 29516, 29794, 29811, 29809, 29813, 29810,
+    29799, 29806, 29952, 29954, 29955, 30077, 30096, 30230, 30216, 30220, 30229,
+    30225, 30218, 30228, 30392, 30593, 30588, 30597, 30594, 30574, 30592, 30575,
+    30590, 30595, 30898, 30890, 30900, 30893, 30888, 30846, 30891, 30878, 30885,
+    30880, 30892, 30882, 30884, 31128, 31114, 31115, 31126, 31125, 31124, 31123,
+    31127, 31112, 31122, 31120, 31275, 31306, 31280, 31279, 31272, 31270, 31400,
+    31403, 31404, 31470, 31624, 31644, 31626, 31633, 31632, 31638, 31629, 31628,
+    31643, 31630, 31621, 31640, 21124, 31641, 31652, 31618, 31931, 31935, 31932,
+    31930, 32167, 32183, 32194, 32163, 32170, 32193, 32192, 32197, 32157, 32206,
+    32196, 32198, 32203, 32204, 32175, 32185, 32150, 32188, 32159, 32166, 32174,
+    32169, 32161, 32201, 32627, 32738, 32739, 32741, 32734, 32804, 32861, 32860,
+    33161, 33158, 33155, 33159, 33165, 33164, 33163, 33301, 33943, 33956, 33953,
+    33951, 33978, 33998, 33986, 33964, 33966, 33963, 33977, 33972, 33985, 33997,
+    33962, 33946, 33969, 34000, 33949, 33959, 33979, 33954, 33940, 33991, 33996,
+    33947, 33961, 33967, 33960, 34006, 33944, 33974, 33999, 33952, 34007, 34004,
+    34002, 34011, 33968, 33937, 34401, 34611, 34595, 34600, 34667, 34624, 34606,
+    34590, 34593, 34585, 34587, 34627, 34604, 34625, 34622, 34630, 34592, 34610,
+    34602, 34605, 34620, 34578, 34618, 34609, 34613, 34626, 34598, 34599, 34616,
+    34596, 34586, 34608, 34577, 35063, 35047, 35057, 35058, 35066, 35070, 35054,
+    35068, 35062, 35067, 35056, 35052, 35051, 35229, 35233, 35231, 35230, 35305,
+    35307, 35304, 35499, 35481, 35467, 35474, 35471, 35478, 35901, 35944, 35945,
+    36053, 36047, 36055, 36246, 36361, 36354, 36351, 36365, 36349, 36362, 36355,
+    36359, 36358, 36357, 36350, 36352, 36356, 36624, 36625, 36622, 36621, 37155,
+    37148, 37152, 37154, 37151, 37149, 37146, 37156, 37153, 37147, 37242, 37234,
+    37241, 37235, 37541, 37540, 37494, 37531, 37498, 37536, 37524, 37546, 37517,
+    37542, 37530, 37547, 37497, 37527, 37503, 37539, 37614, 37518, 37506, 37525,
+    37538, 37501, 37512, 37537, 37514, 37510, 37516, 37529, 37543, 37502, 37511,
+    37545, 37533, 37515, 37421, 38558, 38561, 38655, 38744, 38781, 38778, 38782,
+    38787, 38784, 38786, 38779, 38788, 38785, 38783, 38862, 38861, 38934, 39085,
+    39086, 39170, 39168, 39175, 39325, 39324, 39363, 39353, 39355, 39354, 39362,
+    39357, 39367, 39601, 39651, 39655, 39742, 39743, 39776, 39777, 39775, 40177,
+    40178, 40181, 40615, 20735, 20739, 20784, 20728, 20742, 20743, 20726, 20734,
+    20747, 20748, 20733, 20746, 21131, 21132, 21233, 21231, 22088, 22082, 22092,
+    22069, 22081, 22090, 22089, 22086, 22104, 22106, 22080, 22067, 22077, 22060,
+    22078, 22072, 22058, 22074, 22298, 22699, 22685, 22705, 22688, 22691, 22703,
+    22700, 22693, 22689, 22783, 23295, 23284, 23293, 23287, 23286, 23299, 23288,
+    23298, 23289, 23297, 23303, 23301, 23311, 23655, 23961, 23959, 23967, 23954,
+    23970, 23955, 23957, 23968, 23964, 23969, 23962, 23966, 24169, 24157, 24160,
+    24156, 32243, 24283, 24286, 24289, 24393, 24498, 24971, 24963, 24953, 25009,
+    25008, 24994, 24969, 24987, 24979, 25007, 25005, 24991, 24978, 25002, 24993,
+    24973, 24934, 25011, 25133, 25710, 25712, 25750, 25760, 25733, 25751, 25756,
+    25743, 25739, 25738, 25740, 25763, 25759, 25704, 25777, 25752, 25974, 25978,
+    25977, 25979, 26034, 26035, 26293, 26288, 26281, 26290, 26295, 26282, 26287,
+    27136, 27142, 27159, 27109, 27128, 27157, 27121, 27108, 27168, 27135, 27116,
+    27106, 27163, 27165, 27134, 27175, 27122, 27118, 27156, 27127, 27111, 27200,
+    27144, 27110, 27131, 27149, 27132, 27115, 27145, 27140, 27160, 27173, 27151,
+    27126, 27174, 27143, 27124, 27158, 27473, 27557, 27555, 27554, 27558, 27649,
+    27648, 27647, 27650, 28481, 28454, 28542, 28551, 28614, 28562, 28557, 28553,
+    28556, 28514, 28495, 28549, 28506, 28566, 28534, 28524, 28546, 28501, 28530,
+    28498, 28496, 28503, 28564, 28563, 28509, 28416, 28513, 28523, 28541, 28519,
+    28560, 28499, 28555, 28521, 28543, 28565, 28515, 28535, 28522, 28539, 29106,
+    29103, 29083, 29104, 29088, 29082, 29097, 29109, 29085, 29093, 29086, 29092,
+    29089, 29098, 29084, 29095, 29107, 29336, 29338, 29528, 29522, 29534, 29535,
+    29536, 29533, 29531, 29537, 29530, 29529, 29538, 29831, 29833, 29834, 29830,
+    29825, 29821, 29829, 29832, 29820, 29817, 29960, 29959, 30078, 30245, 30238,
+    30233, 30237, 30236, 30243, 30234, 30248, 30235, 30364, 30365, 30366, 30363,
+    30605, 30607, 30601, 30600, 30925, 30907, 30927, 30924, 30929, 30926, 30932,
+    30920, 30915, 30916, 30921, 31130, 31137, 31136, 31132, 31138, 31131, 27510,
+    31289, 31410, 31412, 31411, 31671, 31691, 31678, 31660, 31694, 31663, 31673,
+    31690, 31669, 31941, 31944, 31948, 31947, 32247, 32219, 32234, 32231, 32215,
+    32225, 32259, 32250, 32230, 32246, 32241, 32240, 32238, 32223, 32630, 32684,
+    32688, 32685, 32749, 32747, 32746, 32748, 32742, 32744, 32868, 32871, 33187,
+    33183, 33182, 33173, 33186, 33177, 33175, 33302, 33359, 33363, 33362, 33360,
+    33358, 33361, 34084, 34107, 34063, 34048, 34089, 34062, 34057, 34061, 34079,
+    34058, 34087, 34076, 34043, 34091, 34042, 34056, 34060, 34036, 34090, 34034,
+    34069, 34039, 34027, 34035, 34044, 34066, 34026, 34025, 34070, 34046, 34088,
+    34077, 34094, 34050, 34045, 34078, 34038, 34097, 34086, 34023, 34024, 34032,
+    34031, 34041, 34072, 34080, 34096, 34059, 34073, 34095, 34402, 34646, 34659,
+    34660, 34679, 34785, 34675, 34648, 34644, 34651, 34642, 34657, 34650, 34641,
+    34654, 34669, 34666, 34640, 34638, 34655, 34653, 34671, 34668, 34682, 34670,
+    34652, 34661, 34639, 34683, 34677, 34658, 34663, 34665, 34906, 35077, 35084,
+    35092, 35083, 35095, 35096, 35097, 35078, 35094, 35089, 35086, 35081, 35234,
+    35236, 35235, 35309, 35312, 35308, 35535, 35526, 35512, 35539, 35537, 35540,
+    35541, 35515, 35543, 35518, 35520, 35525, 35544, 35523, 35514, 35517, 35545,
+    35902, 35917, 35983, 36069, 36063, 36057, 36072, 36058, 36061, 36071, 36256,
+    36252, 36257, 36251, 36384, 36387, 36389, 36388, 36398, 36373, 36379, 36374,
+    36369, 36377, 36390, 36391, 36372, 36370, 36376, 36371, 36380, 36375, 36378,
+    36652, 36644, 36632, 36634, 36640, 36643, 36630, 36631, 36979, 36976, 36975,
+    36967, 36971, 37167, 37163, 37161, 37162, 37170, 37158, 37166, 37253, 37254,
+    37258, 37249, 37250, 37252, 37248, 37584, 37571, 37572, 37568, 37593, 37558,
+    37583, 37617, 37599, 37592, 37609, 37591, 37597, 37580, 37615, 37570, 37608,
+    37578, 37576, 37582, 37606, 37581, 37589, 37577, 37600, 37598, 37607, 37585,
+    37587, 37557, 37601, 37574, 37556, 38268, 38316, 38315, 38318, 38320, 38564,
+    38562, 38611, 38661, 38664, 38658, 38746, 38794, 38798, 38792, 38864, 38863,
+    38942, 38941, 38950, 38953, 38952, 38944, 38939, 38951, 39090, 39176, 39162,
+    39185, 39188, 39190, 39191, 39189, 39388, 39373, 39375, 39379, 39380, 39374,
+    39369, 39382, 39384, 39371, 39383, 39372, 39603, 39660, 39659, 39667, 39666,
+    39665, 39750, 39747, 39783, 39796, 39793, 39782, 39798, 39797, 39792, 39784,
+    39780, 39788, 40188, 40186, 40189, 40191, 40183, 40199, 40192, 40185, 40187,
+    40200, 40197, 40196, 40579, 40659, 40719, 40720, 20764, 20755, 20759, 20762,
+    20753, 20958, 21300, 21473, 22128, 22112, 22126, 22131, 22118, 22115, 22125,
+    22130, 22110, 22135, 22300, 22299, 22728, 22717, 22729, 22719, 22714, 22722,
+    22716, 22726, 23319, 23321, 23323, 23329, 23316, 23315, 23312, 23318, 23336,
+    23322, 23328, 23326, 23535, 23980, 23985, 23977, 23975, 23989, 23984, 23982,
+    23978, 23976, 23986, 23981, 23983, 23988, 24167, 24168, 24166, 24175, 24297,
+    24295, 24294, 24296, 24293, 24395, 24508, 24989, 25000, 24982, 25029, 25012,
+    25030, 25025, 25036, 25018, 25023, 25016, 24972, 25815, 25814, 25808, 25807,
+    25801, 25789, 25737, 25795, 25819, 25843, 25817, 25907, 25983, 25980, 26018,
+    26312, 26302, 26304, 26314, 26315, 26319, 26301, 26299, 26298, 26316, 26403,
+    27188, 27238, 27209, 27239, 27186, 27240, 27198, 27229, 27245, 27254, 27227,
+    27217, 27176, 27226, 27195, 27199, 27201, 27242, 27236, 27216, 27215, 27220,
+    27247, 27241, 27232, 27196, 27230, 27222, 27221, 27213, 27214, 27206, 27477,
+    27476, 27478, 27559, 27562, 27563, 27592, 27591, 27652, 27651, 27654, 28589,
+    28619, 28579, 28615, 28604, 28622, 28616, 28510, 28612, 28605, 28574, 28618,
+    28584, 28676, 28581, 28590, 28602, 28588, 28586, 28623, 28607, 28600, 28578,
+    28617, 28587, 28621, 28591, 28594, 28592, 29125, 29122, 29119, 29112, 29142,
+    29120, 29121, 29131, 29140, 29130, 29127, 29135, 29117, 29144, 29116, 29126,
+    29146, 29147, 29341, 29342, 29545, 29542, 29543, 29548, 29541, 29547, 29546,
+    29823, 29850, 29856, 29844, 29842, 29845, 29857, 29963, 30080, 30255, 30253,
+    30257, 30269, 30259, 30268, 30261, 30258, 30256, 30395, 30438, 30618, 30621,
+    30625, 30620, 30619, 30626, 30627, 30613, 30617, 30615, 30941, 30953, 30949,
+    30954, 30942, 30947, 30939, 30945, 30946, 30957, 30943, 30944, 31140, 31300,
+    31304, 31303, 31414, 31416, 31413, 31409, 31415, 31710, 31715, 31719, 31709,
+    31701, 31717, 31706, 31720, 31737, 31700, 31722, 31714, 31708, 31723, 31704,
+    31711, 31954, 31956, 31959, 31952, 31953, 32274, 32289, 32279, 32268, 32287,
+    32288, 32275, 32270, 32284, 32277, 32282, 32290, 32267, 32271, 32278, 32269,
+    32276, 32293, 32292, 32579, 32635, 32636, 32634, 32689, 32751, 32810, 32809,
+    32876, 33201, 33190, 33198, 33209, 33205, 33195, 33200, 33196, 33204, 33202,
+    33207, 33191, 33266, 33365, 33366, 33367, 34134, 34117, 34155, 34125, 34131,
+    34145, 34136, 34112, 34118, 34148, 34113, 34146, 34116, 34129, 34119, 34147,
+    34110, 34139, 34161, 34126, 34158, 34165, 34133, 34151, 34144, 34188, 34150,
+    34141, 34132, 34149, 34156, 34403, 34405, 34404, 34715, 34703, 34711, 34707,
+    34706, 34696, 34689, 34710, 34712, 34681, 34695, 34723, 34693, 34704, 34705,
+    34717, 34692, 34708, 34716, 34714, 34697, 35102, 35110, 35120, 35117, 35118,
+    35111, 35121, 35106, 35113, 35107, 35119, 35116, 35103, 35313, 35552, 35554,
+    35570, 35572, 35573, 35549, 35604, 35556, 35551, 35568, 35528, 35550, 35553,
+    35560, 35583, 35567, 35579, 35985, 35986, 35984, 36085, 36078, 36081, 36080,
+    36083, 36204, 36206, 36261, 36263, 36403, 36414, 36408, 36416, 36421, 36406,
+    36412, 36413, 36417, 36400, 36415, 36541, 36662, 36654, 36661, 36658, 36665,
+    36663, 36660, 36982, 36985, 36987, 36998, 37114, 37171, 37173, 37174, 37267,
+    37264, 37265, 37261, 37263, 37671, 37662, 37640, 37663, 37638, 37647, 37754,
+    37688, 37692, 37659, 37667, 37650, 37633, 37702, 37677, 37646, 37645, 37579,
+    37661, 37626, 37669, 37651, 37625, 37623, 37684, 37634, 37668, 37631, 37673,
+    37689, 37685, 37674, 37652, 37644, 37643, 37630, 37641, 37632, 37627, 37654,
+    38332, 38349, 38334, 38329, 38330, 38326, 38335, 38325, 38333, 38569, 38612,
+    38667, 38674, 38672, 38809, 38807, 38804, 38896, 38904, 38965, 38959, 38962,
+    39204, 39199, 39207, 39209, 39326, 39406, 39404, 39397, 39396, 39408, 39395,
+    39402, 39401, 39399, 39609, 39615, 39604, 39611, 39670, 39674, 39673, 39671,
+    39731, 39808, 39813, 39815, 39804, 39806, 39803, 39810, 39827, 39826, 39824,
+    39802, 39829, 39805, 39816, 40229, 40215, 40224, 40222, 40212, 40233, 40221,
+    40216, 40226, 40208, 40217, 40223, 40584, 40582, 40583, 40622, 40621, 40661,
+    40662, 40698, 40722, 40765, 20774, 20773, 20770, 20772, 20768, 20777, 21236,
+    22163, 22156, 22157, 22150, 22148, 22147, 22142, 22146, 22143, 22145, 22742,
+    22740, 22735, 22738, 23341, 23333, 23346, 23331, 23340, 23335, 23334, 23343,
+    23342, 23419, 23537, 23538, 23991, 24172, 24170, 24510, 24507, 25027, 25013,
+    25020, 25063, 25056, 25061, 25060, 25064, 25054, 25839, 25833, 25827, 25835,
+    25828, 25832, 25985, 25984, 26038, 26074, 26322, 27277, 27286, 27265, 27301,
+    27273, 27295, 27291, 27297, 27294, 27271, 27283, 27278, 27285, 27267, 27304,
+    27300, 27281, 27263, 27302, 27290, 27269, 27276, 27282, 27483, 27565, 27657,
+    28620, 28585, 28660, 28628, 28643, 28636, 28653, 28647, 28646, 28638, 28658,
+    28637, 28642, 28648, 29153, 29169, 29160, 29170, 29156, 29168, 29154, 29555,
+    29550, 29551, 29847, 29874, 29867, 29840, 29866, 29869, 29873, 29861, 29871,
+    29968, 29969, 29970, 29967, 30084, 30275, 30280, 30281, 30279, 30372, 30441,
+    30645, 30635, 30642, 30647, 30646, 30644, 30641, 30632, 30704, 30963, 30973,
+    30978, 30971, 30972, 30962, 30981, 30969, 30974, 30980, 31147, 31144, 31324,
+    31323, 31318, 31320, 31316, 31322, 31422, 31424, 31425, 31749, 31759, 31730,
+    31744, 31743, 31739, 31758, 31732, 31755, 31731, 31746, 31753, 31747, 31745,
+    31736, 31741, 31750, 31728, 31729, 31760, 31754, 31976, 32301, 32316, 32322,
+    32307, 38984, 32312, 32298, 32329, 32320, 32327, 32297, 32332, 32304, 32315,
+    32310, 32324, 32314, 32581, 32639, 32638, 32637, 32756, 32754, 32812, 33211,
+    33220, 33228, 33226, 33221, 33223, 33212, 33257, 33371, 33370, 33372, 34179,
+    34176, 34191, 34215, 34197, 34208, 34187, 34211, 34171, 34212, 34202, 34206,
+    34167, 34172, 34185, 34209, 34170, 34168, 34135, 34190, 34198, 34182, 34189,
+    34201, 34205, 34177, 34210, 34178, 34184, 34181, 34169, 34166, 34200, 34192,
+    34207, 34408, 34750, 34730, 34733, 34757, 34736, 34732, 34745, 34741, 34748,
+    34734, 34761, 34755, 34754, 34764, 34743, 34735, 34756, 34762, 34740, 34742,
+    34751, 34744, 34749, 34782, 34738, 35125, 35123, 35132, 35134, 35137, 35154,
+    35127, 35138, 35245, 35247, 35246, 35314, 35315, 35614, 35608, 35606, 35601,
+    35589, 35595, 35618, 35599, 35602, 35605, 35591, 35597, 35592, 35590, 35612,
+    35603, 35610, 35919, 35952, 35954, 35953, 35951, 35989, 35988, 36089, 36207,
+    36430, 36429, 36435, 36432, 36428, 36423, 36675, 36672, 36997, 36990, 37176,
+    37274, 37282, 37275, 37273, 37279, 37281, 37277, 37280, 37793, 37763, 37807,
+    37732, 37718, 37703, 37756, 37720, 37724, 37750, 37705, 37712, 37713, 37728,
+    37741, 37775, 37708, 37738, 37753, 37719, 37717, 37714, 37711, 37745, 37751,
+    37755, 37729, 37726, 37731, 37735, 37760, 37710, 37721, 38343, 38336, 38345,
+    38339, 38341, 38327, 38574, 38576, 38572, 38688, 38687, 38680, 38685, 38681,
+    38810, 38817, 38812, 38814, 38813, 38869, 38868, 38897, 38977, 38980, 38986,
+    38985, 38981, 38979, 39205, 39211, 39212, 39210, 39219, 39218, 39215, 39213,
+    39217, 39216, 39320, 39331, 39329, 39426, 39418, 39412, 39415, 39417, 39416,
+    39414, 39419, 39421, 39422, 39420, 39427, 39614, 39678, 39677, 39681, 39676,
+    39752, 39834, 39848, 39838, 39835, 39846, 39841, 39845, 39844, 39814, 39842,
+    39840, 39855, 40243, 40257, 40295, 40246, 40238, 40239, 40241, 40248, 40240,
+    40261, 40258, 40259, 40254, 40247, 40256, 40253, 32757, 40237, 40586, 40585,
+    40589, 40624, 40648, 40666, 40699, 40703, 40740, 40739, 40738, 40788, 40864,
+    20785, 20781, 20782, 22168, 22172, 22167, 22170, 22173, 22169, 22896, 23356,
+    23657, 23658, 24000, 24173, 24174, 25048, 25055, 25069, 25070, 25073, 25066,
+    25072, 25067, 25046, 25065, 25855, 25860, 25853, 25848, 25857, 25859, 25852,
+    26004, 26075, 26330, 26331, 26328, 27333, 27321, 27325, 27361, 27334, 27322,
+    27318, 27319, 27335, 27316, 27309, 27486, 27593, 27659, 28679, 28684, 28685,
+    28673, 28677, 28692, 28686, 28671, 28672, 28667, 28710, 28668, 28663, 28682,
+    29185, 29183, 29177, 29187, 29181, 29558, 29880, 29888, 29877, 29889, 29886,
+    29878, 29883, 29890, 29972, 29971, 30300, 30308, 30297, 30288, 30291, 30295,
+    30298, 30374, 30397, 30444, 30658, 30650, 30975, 30988, 30995, 30996, 30985,
+    30992, 30994, 30993, 31149, 31148, 31327, 31772, 31785, 31769, 31776, 31775,
+    31789, 31773, 31782, 31784, 31778, 31781, 31792, 32348, 32336, 32342, 32355,
+    32344, 32354, 32351, 32337, 32352, 32343, 32339, 32693, 32691, 32759, 32760,
+    32885, 33233, 33234, 33232, 33375, 33374, 34228, 34246, 34240, 34243, 34242,
+    34227, 34229, 34237, 34247, 34244, 34239, 34251, 34254, 34248, 34245, 34225,
+    34230, 34258, 34340, 34232, 34231, 34238, 34409, 34791, 34790, 34786, 34779,
+    34795, 34794, 34789, 34783, 34803, 34788, 34772, 34780, 34771, 34797, 34776,
+    34787, 34724, 34775, 34777, 34817, 34804, 34792, 34781, 35155, 35147, 35151,
+    35148, 35142, 35152, 35153, 35145, 35626, 35623, 35619, 35635, 35632, 35637,
+    35655, 35631, 35644, 35646, 35633, 35621, 35639, 35622, 35638, 35630, 35620,
+    35643, 35645, 35642, 35906, 35957, 35993, 35992, 35991, 36094, 36100, 36098,
+    36096, 36444, 36450, 36448, 36439, 36438, 36446, 36453, 36455, 36443, 36442,
+    36449, 36445, 36457, 36436, 36678, 36679, 36680, 36683, 37160, 37178, 37179,
+    37182, 37288, 37285, 37287, 37295, 37290, 37813, 37772, 37778, 37815, 37787,
+    37789, 37769, 37799, 37774, 37802, 37790, 37798, 37781, 37768, 37785, 37791,
+    37773, 37809, 37777, 37810, 37796, 37800, 37812, 37795, 37797, 38354, 38355,
+    38353, 38579, 38615, 38618, 24002, 38623, 38616, 38621, 38691, 38690, 38693,
+    38828, 38830, 38824, 38827, 38820, 38826, 38818, 38821, 38871, 38873, 38870,
+    38872, 38906, 38992, 38993, 38994, 39096, 39233, 39228, 39226, 39439, 39435,
+    39433, 39437, 39428, 39441, 39434, 39429, 39431, 39430, 39616, 39644, 39688,
+    39684, 39685, 39721, 39733, 39754, 39756, 39755, 39879, 39878, 39875, 39871,
+    39873, 39861, 39864, 39891, 39862, 39876, 39865, 39869, 40284, 40275, 40271,
+    40266, 40283, 40267, 40281, 40278, 40268, 40279, 40274, 40276, 40287, 40280,
+    40282, 40590, 40588, 40671, 40705, 40704, 40726, 40741, 40747, 40746, 40745,
+    40744, 40780, 40789, 20788, 20789, 21142, 21239, 21428, 22187, 22189, 22182,
+    22183, 22186, 22188, 22746, 22749, 22747, 22802, 23357, 23358, 23359, 24003,
+    24176, 24511, 25083, 25863, 25872, 25869, 25865, 25868, 25870, 25988, 26078,
+    26077, 26334, 27367, 27360, 27340, 27345, 27353, 27339, 27359, 27356, 27344,
+    27371, 27343, 27341, 27358, 27488, 27568, 27660, 28697, 28711, 28704, 28694,
+    28715, 28705, 28706, 28707, 28713, 28695, 28708, 28700, 28714, 29196, 29194,
+    29191, 29186, 29189, 29349, 29350, 29348, 29347, 29345, 29899, 29893, 29879,
+    29891, 29974, 30304, 30665, 30666, 30660, 30705, 31005, 31003, 31009, 31004,
+    30999, 31006, 31152, 31335, 31336, 31795, 31804, 31801, 31788, 31803, 31980,
+    31978, 32374, 32373, 32376, 32368, 32375, 32367, 32378, 32370, 32372, 32360,
+    32587, 32586, 32643, 32646, 32695, 32765, 32766, 32888, 33239, 33237, 33380,
+    33377, 33379, 34283, 34289, 34285, 34265, 34273, 34280, 34266, 34263, 34284,
+    34290, 34296, 34264, 34271, 34275, 34268, 34257, 34288, 34278, 34287, 34270,
+    34274, 34816, 34810, 34819, 34806, 34807, 34825, 34828, 34827, 34822, 34812,
+    34824, 34815, 34826, 34818, 35170, 35162, 35163, 35159, 35169, 35164, 35160,
+    35165, 35161, 35208, 35255, 35254, 35318, 35664, 35656, 35658, 35648, 35667,
+    35670, 35668, 35659, 35669, 35665, 35650, 35666, 35671, 35907, 35959, 35958,
+    35994, 36102, 36103, 36105, 36268, 36266, 36269, 36267, 36461, 36472, 36467,
+    36458, 36463, 36475, 36546, 36690, 36689, 36687, 36688, 36691, 36788, 37184,
+    37183, 37296, 37293, 37854, 37831, 37839, 37826, 37850, 37840, 37881, 37868,
+    37836, 37849, 37801, 37862, 37834, 37844, 37870, 37859, 37845, 37828, 37838,
+    37824, 37842, 37863, 38269, 38362, 38363, 38625, 38697, 38699, 38700, 38696,
+    38694, 38835, 38839, 38838, 38877, 38878, 38879, 39004, 39001, 39005, 38999,
+    39103, 39101, 39099, 39102, 39240, 39239, 39235, 39334, 39335, 39450, 39445,
+    39461, 39453, 39460, 39451, 39458, 39456, 39463, 39459, 39454, 39452, 39444,
+    39618, 39691, 39690, 39694, 39692, 39735, 39914, 39915, 39904, 39902, 39908,
+    39910, 39906, 39920, 39892, 39895, 39916, 39900, 39897, 39909, 39893, 39905,
+    39898, 40311, 40321, 40330, 40324, 40328, 40305, 40320, 40312, 40326, 40331,
+    40332, 40317, 40299, 40308, 40309, 40304, 40297, 40325, 40307, 40315, 40322,
+    40303, 40313, 40319, 40327, 40296, 40596, 40593, 40640, 40700, 40749, 40768,
+    40769, 40781, 40790, 40791, 40792, 21303, 22194, 22197, 22195, 22755, 23365,
+    24006, 24007, 24302, 24303, 24512, 24513, 25081, 25879, 25878, 25877, 25875,
+    26079, 26344, 26339, 26340, 27379, 27376, 27370, 27368, 27385, 27377, 27374,
+    27375, 28732, 28725, 28719, 28727, 28724, 28721, 28738, 28728, 28735, 28730,
+    28729, 28736, 28731, 28723, 28737, 29203, 29204, 29352, 29565, 29564, 29882,
+    30379, 30378, 30398, 30445, 30668, 30670, 30671, 30669, 30706, 31013, 31011,
+    31015, 31016, 31012, 31017, 31154, 31342, 31340, 31341, 31479, 31817, 31816,
+    31818, 31815, 31813, 31982, 32379, 32382, 32385, 32384, 32698, 32767, 32889,
+    33243, 33241, 33291, 33384, 33385, 34338, 34303, 34305, 34302, 34331, 34304,
+    34294, 34308, 34313, 34309, 34316, 34301, 34841, 34832, 34833, 34839, 34835,
+    34838, 35171, 35174, 35257, 35319, 35680, 35690, 35677, 35688, 35683, 35685,
+    35687, 35693, 36270, 36486, 36488, 36484, 36697, 36694, 36695, 36693, 36696,
+    36698, 37005, 37187, 37185, 37303, 37301, 37298, 37299, 37899, 37907, 37883,
+    37920, 37903, 37908, 37886, 37909, 37904, 37928, 37913, 37901, 37877, 37888,
+    37879, 37895, 37902, 37910, 37906, 37882, 37897, 37880, 37898, 37887, 37884,
+    37900, 37878, 37905, 37894, 38366, 38368, 38367, 38702, 38703, 38841, 38843,
+    38909, 38910, 39008, 39010, 39011, 39007, 39105, 39106, 39248, 39246, 39257,
+    39244, 39243, 39251, 39474, 39476, 39473, 39468, 39466, 39478, 39465, 39470,
+    39480, 39469, 39623, 39626, 39622, 39696, 39698, 39697, 39947, 39944, 39927,
+    39941, 39954, 39928, 40000, 39943, 39950, 39942, 39959, 39956, 39945, 40351,
+    40345, 40356, 40349, 40338, 40344, 40336, 40347, 40352, 40340, 40348, 40362,
+    40343, 40353, 40346, 40354, 40360, 40350, 40355, 40383, 40361, 40342, 40358,
+    40359, 40601, 40603, 40602, 40677, 40676, 40679, 40678, 40752, 40750, 40795,
+    40800, 40798, 40797, 40793, 40849, 20794, 20793, 21144, 21143, 22211, 22205,
+    22206, 23368, 23367, 24011, 24015, 24305, 25085, 25883, 27394, 27388, 27395,
+    27384, 27392, 28739, 28740, 28746, 28744, 28745, 28741, 28742, 29213, 29210,
+    29209, 29566, 29975, 30314, 30672, 31021, 31025, 31023, 31828, 31827, 31986,
+    32394, 32391, 32392, 32395, 32390, 32397, 32589, 32699, 32816, 33245, 34328,
+    34346, 34342, 34335, 34339, 34332, 34329, 34343, 34350, 34337, 34336, 34345,
+    34334, 34341, 34857, 34845, 34843, 34848, 34852, 34844, 34859, 34890, 35181,
+    35177, 35182, 35179, 35322, 35705, 35704, 35653, 35706, 35707, 36112, 36116,
+    36271, 36494, 36492, 36702, 36699, 36701, 37190, 37188, 37189, 37305, 37951,
+    37947, 37942, 37929, 37949, 37948, 37936, 37945, 37930, 37943, 37932, 37952,
+    37937, 38373, 38372, 38371, 38709, 38714, 38847, 38881, 39012, 39113, 39110,
+    39104, 39256, 39254, 39481, 39485, 39494, 39492, 39490, 39489, 39482, 39487,
+    39629, 39701, 39703, 39704, 39702, 39738, 39762, 39979, 39965, 39964, 39980,
+    39971, 39976, 39977, 39972, 39969, 40375, 40374, 40380, 40385, 40391, 40394,
+    40399, 40382, 40389, 40387, 40379, 40373, 40398, 40377, 40378, 40364, 40392,
+    40369, 40365, 40396, 40371, 40397, 40370, 40570, 40604, 40683, 40686, 40685,
+    40731, 40728, 40730, 40753, 40782, 40805, 40804, 40850, 20153, 22214, 22213,
+    22219, 22897, 23371, 23372, 24021, 24017, 24306, 25889, 25888, 25894, 25890,
+    27403, 27400, 27401, 27661, 28757, 28758, 28759, 28754, 29214, 29215, 29353,
+    29567, 29912, 29909, 29913, 29911, 30317, 30381, 31029, 31156, 31344, 31345,
+    31831, 31836, 31833, 31835, 31834, 31988, 31985, 32401, 32591, 32647, 33246,
+    33387, 34356, 34357, 34355, 34348, 34354, 34358, 34860, 34856, 34854, 34858,
+    34853, 35185, 35263, 35262, 35323, 35710, 35716, 35714, 35718, 35717, 35711,
+    36117, 36501, 36500, 36506, 36498, 36496, 36502, 36503, 36704, 36706, 37191,
+    37964, 37968, 37962, 37963, 37967, 37959, 37957, 37960, 37961, 37958, 38719,
+    38883, 39018, 39017, 39115, 39252, 39259, 39502, 39507, 39508, 39500, 39503,
+    39496, 39498, 39497, 39506, 39504, 39632, 39705, 39723, 39739, 39766, 39765,
+    40006, 40008, 39999, 40004, 39993, 39987, 40001, 39996, 39991, 39988, 39986,
+    39997, 39990, 40411, 40402, 40414, 40410, 40395, 40400, 40412, 40401, 40415,
+    40425, 40409, 40408, 40406, 40437, 40405, 40413, 40630, 40688, 40757, 40755,
+    40754, 40770, 40811, 40853, 40866, 20797, 21145, 22760, 22759, 22898, 23373,
+    24024, 34863, 24399, 25089, 25091, 25092, 25897, 25893, 26006, 26347, 27409,
+    27410, 27407, 27594, 28763, 28762, 29218, 29570, 29569, 29571, 30320, 30676,
+    31847, 31846, 32405, 33388, 34362, 34368, 34361, 34364, 34353, 34363, 34366,
+    34864, 34866, 34862, 34867, 35190, 35188, 35187, 35326, 35724, 35726, 35723,
+    35720, 35909, 36121, 36504, 36708, 36707, 37308, 37986, 37973, 37981, 37975,
+    37982, 38852, 38853, 38912, 39510, 39513, 39710, 39711, 39712, 40018, 40024,
+    40016, 40010, 40013, 40011, 40021, 40025, 40012, 40014, 40443, 40439, 40431,
+    40419, 40427, 40440, 40420, 40438, 40417, 40430, 40422, 40434, 40432, 40418,
+    40428, 40436, 40435, 40424, 40429, 40642, 40656, 40690, 40691, 40710, 40732,
+    40760, 40759, 40758, 40771, 40783, 40817, 40816, 40814, 40815, 22227, 22221,
+    23374, 23661, 25901, 26349, 26350, 27411, 28767, 28769, 28765, 28768, 29219,
+    29915, 29925, 30677, 31032, 31159, 31158, 31850, 32407, 32649, 33389, 34371,
+    34872, 34871, 34869, 34891, 35732, 35733, 36510, 36511, 36512, 36509, 37310,
+    37309, 37314, 37995, 37992, 37993, 38629, 38726, 38723, 38727, 38855, 38885,
+    39518, 39637, 39769, 40035, 40039, 40038, 40034, 40030, 40032, 40450, 40446,
+    40455, 40451, 40454, 40453, 40448, 40449, 40457, 40447, 40445, 40452, 40608,
+    40734, 40774, 40820, 40821, 40822, 22228, 25902, 26040, 27416, 27417, 27415,
+    27418, 28770, 29222, 29354, 30680, 30681, 31033, 31849, 31851, 31990, 32410,
+    32408, 32411, 32409, 33248, 33249, 34374, 34375, 34376, 35193, 35194, 35196,
+    35195, 35327, 35736, 35737, 36517, 36516, 36515, 37998, 37997, 37999, 38001,
+    38003, 38729, 39026, 39263, 40040, 40046, 40045, 40459, 40461, 40464, 40463,
+    40466, 40465, 40609, 40693, 40713, 40775, 40824, 40827, 40826, 40825, 22302,
+    28774, 31855, 34876, 36274, 36518, 37315, 38004, 38008, 38006, 38005, 39520,
+    40052, 40051, 40049, 40053, 40468, 40467, 40694, 40714, 40868, 28776, 28773,
+    31991, 34410, 34878, 34877, 34879, 35742, 35996, 36521, 36553, 38731, 39027,
+    39028, 39116, 39265, 39339, 39524, 39526, 39527, 39716, 40469, 40471, 40776,
+    25095, 27422, 29223, 34380, 36520, 38018, 38016, 38017, 39529, 39528, 39726,
+    40473, 29225, 34379, 35743, 38019, 40057, 40631, 30325, 39531, 40058, 40477,
+    28777, 28778, 40612, 40830, 40777, 40856, 30849, 37561, 35023, 22715, 24658,
+    31911, 23290, 9556, 9574, 9559, 9568, 9580, 9571, 9562, 9577, 9565, 9554,
+    9572, 9557, 9566, 9578, 9569, 9560, 9575, 9563, 9555, 9573, 9558, 9567,
+    9579, 9570, 9561, 9576, 9564, 9553, 9552, 9581, 9582, 9584, 9583, 9619,
diff --git a/fusl/src/locale/bind_textdomain_codeset.c b/fusl/src/locale/bind_textdomain_codeset.c
index 5ebfd5e..4785902 100644
--- a/fusl/src/locale/bind_textdomain_codeset.c
+++ b/fusl/src/locale/bind_textdomain_codeset.c
@@ -3,9 +3,8 @@
 #include <strings.h>
 #include <errno.h>
 
-char *bind_textdomain_codeset(const char *domainname, const char *codeset)
-{
-	if (codeset && strcasecmp(codeset, "UTF-8"))
-		errno = EINVAL;
-	return NULL;
+char* bind_textdomain_codeset(const char* domainname, const char* codeset) {
+  if (codeset && strcasecmp(codeset, "UTF-8"))
+    errno = EINVAL;
+  return NULL;
 }
diff --git a/fusl/src/locale/c_locale.c b/fusl/src/locale/c_locale.c
index 77ccf58..54154ff 100644
--- a/fusl/src/locale/c_locale.c
+++ b/fusl/src/locale/c_locale.c
@@ -1,15 +1,12 @@
 #include "locale_impl.h"
 #include <stdint.h>
 
-static const uint32_t empty_mo[] = { 0x950412de, 0, -1, -1, -1 };
+static const uint32_t empty_mo[] = {0x950412de, 0, -1, -1, -1};
 
-const struct __locale_map __c_dot_utf8 = {
-	.map = empty_mo,
-	.map_size = sizeof empty_mo,
-	.name = "C.UTF-8"
-};
+const struct __locale_map __c_dot_utf8 = {.map = empty_mo,
+                                          .map_size = sizeof empty_mo,
+                                          .name = "C.UTF-8"};
 
-const struct __locale_struct __c_locale = { 0 };
-const struct __locale_struct __c_dot_utf8_locale = {
-	.cat[LC_CTYPE] = &__c_dot_utf8
-};
+const struct __locale_struct __c_locale = {0};
+const struct __locale_struct __c_dot_utf8_locale = {.cat[LC_CTYPE] =
+                                                        &__c_dot_utf8};
diff --git a/fusl/src/locale/catclose.c b/fusl/src/locale/catclose.c
index 02cd3e5..e430cc0 100644
--- a/fusl/src/locale/catclose.c
+++ b/fusl/src/locale/catclose.c
@@ -1,6 +1,5 @@
 #include <nl_types.h>
 
-int catclose (nl_catd catd)
-{
-	return 0;
+int catclose(nl_catd catd) {
+  return 0;
 }
diff --git a/fusl/src/locale/catgets.c b/fusl/src/locale/catgets.c
index bbee898..6ae91c9 100644
--- a/fusl/src/locale/catgets.c
+++ b/fusl/src/locale/catgets.c
@@ -1,6 +1,5 @@
 #include <nl_types.h>
 
-char *catgets (nl_catd catd, int set_id, int msg_id, const char *s)
-{
-	return (char *)s;
+char* catgets(nl_catd catd, int set_id, int msg_id, const char* s) {
+  return (char*)s;
 }
diff --git a/fusl/src/locale/catopen.c b/fusl/src/locale/catopen.c
index 4423c4d..f544d11 100644
--- a/fusl/src/locale/catopen.c
+++ b/fusl/src/locale/catopen.c
@@ -1,6 +1,5 @@
 #include <nl_types.h>
 
-nl_catd catopen (const char *name, int oflag)
-{
-	return (nl_catd)-1;
+nl_catd catopen(const char* name, int oflag) {
+  return (nl_catd)-1;
 }
diff --git a/fusl/src/locale/codepages.h b/fusl/src/locale/codepages.h
index ab146e8..d5fb67f 100644
--- a/fusl/src/locale/codepages.h
+++ b/fusl/src/locale/codepages.h
@@ -1,265 +1,316 @@
 "iso88591\0"
-"latin1\0"
-"\0\200"
+    "latin1\0"
+    "\0\200"
 
-"iso88592\0"
-"\0\40"
-"\0\330\20\313\32\0\244\21\10\0\0\34\122\310\42\240\0\100\212\50\0\334\60\13\33"
-"\0\250\41\10\54\0\40\142\10\43\241\324\122\312\50\173\0\0\0\15\0\224\201\3\0"
-"\76\0\200\4\0\112\0\0\0\20\102\264\21\7\0\0\334\1\0\0\177\124\2\300\45"
-"\0\0\220\10\0\174\0\0\100\15\0\230\221\3\0\77\0\220\4\0\113\0\0\100\20"
-"\103\270\41\7\0\0\340\1\0\0\200\130\2\0\46\0\0\240\210\54"
+    "iso88592\0"
+    "\0\40"
+    "\0\330\20\313\32\0\244\21\10\0\0\34\122\310\42\240\0\100\212\50\0\334\60"
+    "\13\33"
+    "\0\250\41\10\54\0\40\142\10\43\241\324\122\312\50\173\0\0\0\15\0\224\201\3"
+    "\0"
+    "\76\0\200\4\0\112\0\0\0\20\102\264\21\7\0\0\334\1\0\0\177\124\2\300\45"
+    "\0\0\220\10\0\174\0\0\100\15\0\230\221\3\0\77\0\220\4\0\113\0\0\100\20"
+    "\103\270\41\7\0\0\340\1\0\0\200\130\2\0\46\0\0\240\210\54"
 
-"iso88593\0"
-"\0\40"
-"\0\130\21\13\0\0\4\100\5\0\0\170\121\210\23\140\0\20\200\50\0\134\1\0\0"
-"\0\0\120\5\0\0\174\141\310\23\141\0\20\300\50\0\0\0\100\0\0\360\240\3\0"
-"\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\100\1\0\0\114\0\0\0\0\0\114\62\10\0"
-"\0\0\0\100\0\0\364\260\3\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\104\1\0\0"
-"\115\0\0\0\0\0\120\102\210\54"
+    "iso88593\0"
+    "\0\40"
+    "\0\130\21\13\0\0\4\100\5\0\0\170\121\210\23\140\0\20\200\50\0\134\1\0\0"
+    "\0\0\120\5\0\0\174\141\310\23\141\0\20\300\50\0\0\0\100\0\0\360\240\3\0"
+    "\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\100\1\0\0\114\0\0\0\0\0\114\62\10\0"
+    "\0\0\0\100\0\0\364\260\3\0\0\0\0\0\0\0\0\0\0\0\1\0\0\0\0\0\104\1\0\0"
+    "\115\0\0\0\0\0\120\102\210\54"
 
-"iso88594\0"
-"\0\40"
-"\0\330\100\106\37\0\140\161\6\0\0\34\102\204\24\215\0\100\12\0\0\334\60\213\37"
-"\0\144\201\6\54\0\40\122\304\24\216\314\121\12\35\62\0\0\0\0\0\0\0\0\27"
-"\76\0\200\4\0\106\0\0\200\26\102\274\121\207\30\0\0\0\0\0\0\144\2\0\0"
-"\0\74\22\11\0\63\0\0\0\0\0\0\0\100\27\77\0\220\4\0\107\0\0\300\26"
-"\103\300\141\307\30\0\0\0\0\0\0\150\2\0\0\0\100\42\211\54"
+    "iso88594\0"
+    "\0\40"
+    "\0\330\100\106\37\0\140\161\6\0\0\34\102\204\24\215\0\100\12\0\0\334\60"
+    "\213\37"
+    "\0\144\201\6\54\0\40\122\304\24\216\314\121\12\35\62\0\0\0\0\0\0\0\0\27"
+    "\76\0\200\4\0\106\0\0\200\26\102\274\121\207\30\0\0\0\0\0\0\144\2\0\0"
+    "\0\74\22\11\0\63\0\0\0\0\0\0\0\100\27\77\0\220\4\0\107\0\0\300\26"
+    "\103\300\141\307\30\0\0\0\0\0\0\150\2\0\0\0\100\42\211\54"
 
-"iso88595\0"
-"\0\40"
-"\0\14\104\120\101\6\35\204\120\102\12\55\304\120\103\16\1\360\20\104"
-"\21\111\64\21\105\25\131\164\21\106\31\151\264\21\107\35\171\364\21\110"
-"\41\211\64\22\111\45\231\164\22\112\51\251\264\22\113\55\271\364\22\114"
-"\61\311\64\23\115\65\331\164\23\116\71\351\264\23\117\75\371\364\23\120"
-"\101\11\65\24\121\105\31\165\24\122\111\51\265\24\123\115\71\365\24\124"
-"\127\106\45\325\124\124\125\145\325\125\130\145\245\325\126\134\15\320\225\127"
+    "iso88595\0"
+    "\0\40"
+    "\0\14\104\120\101\6\35\204\120\102\12\55\304\120\103\16\1\360\20\104"
+    "\21\111\64\21\105\25\131\164\21\106\31\151\264\21\107\35\171\364\21\110"
+    "\41\211\64\22\111\45\231\164\22\112\51\251\264\22\113\55\271\364\22\114"
+    "\61\311\64\23\115\65\331\164\23\116\71\351\264\23\117\75\371\364\23\120"
+    "\101\11\65\24\121\105\31\165\24\122\111\51\265\24\123\115\71\365\24\124"
+    "\127\106\45\325\124\124\125\145\325\125\130\145\245\325\126\134\15\320\225"
+    "\127"
 
-"iso88596\0"
-"\0\40"
-"\0\4\20\100\0\0\4\20\100\0\1\4\20\100\0\224\1\20\100\0\1\4\20\100\0"
-"\1\4\20\100\0\1\4\20\100\145\1\4\20\200\145\1\134\206\131\146"
-"\232\155\306\131\147\236\175\6\132\150\242\215\106\132\151\246\235\206\132\152"
-"\252\255\306\132\153\256\275\6\133\0\1\4\20\100\0\261\311\66\33\155"
-"\265\331\166\33\156\271\351\266\33\157\275\371\366\33\160\301\11\67\134\0"
-"\1\4\20\100\0\1\4\20\100\0\1\4\20\100\0"
+    "iso88596\0"
+    "\0\40"
+    "\0\4\20\100\0\0\4\20\100\0\1\4\20\100\0\224\1\20\100\0\1\4\20\100\0"
+    "\1\4\20\100\0\1\4\20\100\145\1\4\20\200\145\1\134\206\131\146"
+    "\232\155\306\131\147\236\175\6\132\150\242\215\106\132\151\246\235\206\132"
+    "\152"
+    "\252\255\306\132\153\256\275\6\133\0\1\4\20\100\0\261\311\66\33\155"
+    "\265\331\166\33\156\271\351\266\33\157\275\371\366\33\160\301\11\67\134\0"
+    "\1\4\20\100\0\1\4\20\100\0\1\4\20\100\0"
 
-"iso88597\0"
-"\0\40"
-"\0\24\151\44\0\124\126\11\0\0\0\0\260\13\0\0\0\20\300\220\0\0\0\0\0"
-"\274\364\342\13\0\277\0\23\14\0\302\0\60\14\61\305\30\163\14\62"
-"\311\50\263\14\63\315\70\363\14\64\321\110\63\15\65\325\130\23\300\65"
-"\330\144\243\315\66\334\164\343\315\67\340\204\43\316\70\344\224\143\316\71"
-"\350\244\243\316\72\354\264\343\316\73\360\304\43\317\74\364\324\143\317\75"
-"\370\344\243\317\76\374\364\343\317\77\0\5\44\120\0"
+    "iso88597\0"
+    "\0\40"
+    "\0\24\151\44\0\124\126\11\0\0\0\0\260\13\0\0\0\20\300\220\0\0\0\0\0"
+    "\274\364\342\13\0\277\0\23\14\0\302\0\60\14\61\305\30\163\14\62"
+    "\311\50\263\14\63\315\70\363\14\64\321\110\63\15\65\325\130\23\300\65"
+    "\330\144\243\315\66\334\164\343\315\67\340\204\43\316\70\344\224\143\316"
+    "\71"
+    "\350\244\243\316\72\354\264\343\316\73\360\304\43\317\74\364\324\143\317"
+    "\75"
+    "\370\344\243\317\76\374\364\343\317\77\0\5\44\120\0"
 
-"iso88598\0"
-"\0\40"
-"\0\4\0\0\0\0\0\0\0\0\0\0\300\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\360\0\0"
-"\0\0\0\100\0\1\4\20\100\0\1\4\20\100\0\1\4\20\100\0\1\4\20\100\0\1\4\20\100\0"
-"\1\4\20\100\0\1\4\20\100\0\1\4\20\0\221\164\325\145\327\135"
-"\170\345\245\327\136\174\365\345\327\137\200\5\46\330\140\204\25\146\330\141"
-"\210\45\246\330\142\214\65\346\130\0\1\374\10\144\0"
+    "iso88598\0"
+    "\0\40"
+    "\0\4\0\0\0\0\0\0\0\0\0\0\300\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\360\0\0"
+    "\0\0\0\100\0\1\4\20\100\0\1\4\20\100\0\1\4\20\100\0\1\4\20\100\0\1\4\20"
+    "\100\0"
+    "\1\4\20\100\0\1\4\20\100\0\1\4\20\0\221\164\325\145\327\135"
+    "\170\345\245\327\136\174\365\345\327\137\200\5\46\330\140\204\25\146\330"
+    "\141"
+    "\210\45\246\330\142\214\65\346\130\0\1\374\10\144\0"
 
-"iso88599\0"
-"\0\120"
-"\116\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\170\121\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-"\0\0\0\0\0\117\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\174\141\10\0"
+    "iso88599\0"
+    "\0\120"
+    "\116\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\170\121\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+    "\0\0"
+    "\0\0\0\0\0\117\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\174\141\10\0"
 
-"iso885910\0"
-"\0\40"
-"\0\330\100\204\24\132\140\41\6\0\147\10\161\110\43\244\0\20\311\34"
-"\0\334\120\304\24\133\144\61\6\0\150\14\201\210\43\245\14\51\11\35\62\0\0\0\0"
-"\0\0\0\0\27\76\0\200\4\0\106\0\0\0\0\0\274\121\7\0\0\0\0\300\43\0\144\2\0\0"
-"\0\0\0\0\0\63\0\0\0\0\0\0\0\100\27\77\0\220\4\0\107\0\0\0\0\0\300\141\7\0"
-"\0\0\0\0\44\0\150\2\0\0\0\0\0\0\31"
+    "iso885910\0"
+    "\0\40"
+    "\0\330\100\204\24\132\140\41\6\0\147\10\161\110\43\244\0\20\311\34"
+    "\0\334\120\304\24\133\144\61\6\0\150\14\201\210\43\245\14\51\11\35\62\0\0"
+    "\0\0"
+    "\0\0\0\0\27\76\0\200\4\0\106\0\0\0\0\0\274\121\7\0\0\0\0\300\43\0\144\2\0"
+    "\0"
+    "\0\0\0\0\0\63\0\0\0\0\0\0\0\100\27\77\0\220\4\0\107\0\0\0\0\0\300\141\7\0"
+    "\0\0\0\0\44\0\150\2\0\0\0\0\0\0\31"
 
-"iso885911\0"
-"tis620\0"
-"\0\40"
-"\0\100\27\235\164\323\121\127\235\165\327\141\227\235\166\333\161\327\235\167"
-"\337\201\27\236\170\343\221\127\236\171\347\241\227\236\172"
-"\353\261\327\236\173\357\301\27\237\174\363\321\127\237\175"
-"\367\341\227\237\176\373\361\327\237\177\377\1\30\240\200\3\22\130\240\201"
-"\7\42\230\140\0\1\4\20\200\202\13\62\330\240\203\17\102\30\241\204"
-"\23\122\130\241\205\27\142\230\241\206\33\162\330\241\207\37\202\30\242\210"
-"\43\222\130\242\211\1\4\20\100\0"
+    "iso885911\0"
+    "tis620\0"
+    "\0\40"
+    "\0\100\27\235\164\323\121\127\235\165\327\141\227\235\166\333\161\327\235"
+    "\167"
+    "\337\201\27\236\170\343\221\127\236\171\347\241\227\236\172"
+    "\353\261\327\236\173\357\301\27\237\174\363\321\127\237\175"
+    "\367\341\227\237\176\373\361\327\237\177\377\1\30\240\200\3\22\130\240\201"
+    "\7\42\230\140\0\1\4\20\200\202\13\62\330\240\203\17\102\30\241\204"
+    "\23\122\130\241\205\27\142\230\241\206\33\162\330\241\207\37\202\30\242"
+    "\210"
+    "\43\222\130\242\211\1\4\20\100\0"
 
-"iso885913\0"
-"\0\40"
-"\0\44\11\0\0\0\50\11\0\0\15\0\320\7\0\0\0\0\300\2\0\0\0\0\0\110\2\0\0\0"
-"\20\0\340\7\0\0\0\0\200\3\66\160\41\3\16\0\0\200\4\21\76\0\0\212\21"
-"\122\210\241\305\31\207\264\361\6\0\165\0\0\0\0\231\254\21\110\44"
-"\0\210\102\12\0\67\164\61\103\16\0\0\220\104\21\77\0\20\312\21"
-"\123\214\261\5\32\210\270\1\7\0\166\0\0\0\0\232\260\41\210\44"
-"\0\214\122\212\221"
+    "iso885913\0"
+    "\0\40"
+    "\0\44\11\0\0\0\50\11\0\0\15\0\320\7\0\0\0\0\300\2\0\0\0\0\0\110\2\0\0\0"
+    "\20\0\340\7\0\0\0\0\200\3\66\160\41\3\16\0\0\200\4\21\76\0\0\212\21"
+    "\122\210\241\305\31\207\264\361\6\0\165\0\0\0\0\231\254\21\110\44"
+    "\0\210\102\12\0\67\164\61\103\16\0\0\220\104\21\77\0\20\312\21"
+    "\123\214\261\5\32\210\270\1\7\0\166\0\0\0\0\232\260\41\210\44"
+    "\0\214\122\212\221"
 
-"iso885914\0"
-"\0\40"
-"\0\234\210\42\0\74\364\220\42\0\65\2\160\243\212\73\2\0\300\47"
-"\53\262\10\105\24\55\272\10\300\213\66\302\210\143\214\74\346\250\243\214"
-"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\233\0\0\0\0\0\0\0\300\214\0\0\0\0\0"
-"\0\0\320\11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\234\0\0\0\0\0\0\0\0\215"
-"\0\0\0\0\0\0\0\340\11\0"
+    "iso885914\0"
+    "\0\40"
+    "\0\234\210\42\0\74\364\220\42\0\65\2\160\243\212\73\2\0\300\47"
+    "\53\262\10\105\24\55\272\10\300\213\66\302\210\143\214\74\346\250\243\214"
+    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\233\0\0\0\0\0\0\0\300\214\0\0\0\0"
+    "\0"
+    "\0\0\320\11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\234\0\0\0\0\0\0\0\0"
+    "\215"
+    "\0\0\0\0\0\0\0\340\11\0"
 
-"iso885915\0"
-"latin9\0"
-"\0\44"
-"\124\2\160\10\0\210\0\0\0\0\0\0\0\0\0\0\0\0\0\0\244\0\0\0\0\245\0\0\0\0"
-"\171\350\361\11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+    "iso885915\0"
+    "latin9\0"
+    "\0\44"
+    "\124\2\160\10\0\210\0\0\0\0\0\0\0\0\0\0\0\0\0\0\244\0\0\0\0\245\0\0\0\0"
+    "\171\350\361\11\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+    "\0\0"
+    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
 
-"iso885916\0"
-"\0\40"
-"\0\330\160\303\32\124\52\171\10\0\210\0\260\12\0\240\0\20\212\50\0\0\340\3\33"
-"\244\44\11\0\0\245\374\300\12\0\171\350\361\311\50\0\0\0\0\15\0\340\0\0\0"
-"\0\0\0\0\0\0\0\0\0\0\102\264\1\0\0\0\334\1\100\40\227\0\0\0\0\0\40\321\12\0"
-"\0\0\0\100\15\0\344\0\0\0\0\0\0\0\0\0\0\0\0\0\103\270\1\0\0\0\340\1\200\40"
-"\230\0\0\0\0\0\44\341\12\0"
+    "iso885916\0"
+    "\0\40"
+    "\0\330\160\303\32\124\52\171\10\0\210\0\260\12\0\240\0\20\212\50\0\0\340\3"
+    "\33"
+    "\244\44\11\0\0\245\374\300\12\0\171\350\361\311\50\0\0\0\0\15\0\340\0\0\0"
+    "\0\0\0\0\0\0\0\0\0\0\102\264\1\0\0\0\334\1\100\40\227\0\0\0\0\0\40\321\12"
+    "\0"
+    "\0\0\0\100\15\0\344\0\0\0\0\0\0\0\0\0\0\0\0\0\103\270\1\0\0\0\340\1\200\40"
+    "\230\0\0\0\0\0\44\341\12\0"
 
-"cp1250\0"
-"windows1250\0"
-"\0\0"
-"\124\6\160\144\0\112\72\271\44\223\1\74\171\10\224\201\54\102\12\50"
-"\1\24\151\44\222\111\66\31\244\220\1\140\211\110\224\202\60\122\112\50"
-"\0\300\22\313\32\0\330\0\0\0\0\0\120\10\0\0\0\0\200\50\0\0\60\13\33\0\0\0\0\0"
-"\0\334\140\10\0\151\324\242\306\50\173\0\0\0\15\0\224\201\3\0\76\0\200\4\0"
-"\112\0\0\0\20\102\264\21\7\0\0\334\1\0\0\177\124\2\300\45\0\0\220\10\0"
-"\174\0\0\100\15\0\230\221\3\0\77\0\220\4\0\113\0\0\100\20\103\270\41\7\0"
-"\0\340\1\0\0\200\130\2\0\46\0\0\240\210\54"
+    "cp1250\0"
+    "windows1250\0"
+    "\0\0"
+    "\124\6\160\144\0\112\72\271\44\223\1\74\171\10\224\201\54\102\12\50"
+    "\1\24\151\44\222\111\66\31\244\220\1\140\211\110\224\202\60\122\112\50"
+    "\0\300\22\313\32\0\330\0\0\0\0\0\120\10\0\0\0\0\200\50\0\0\60\13\33\0\0\0"
+    "\0\0"
+    "\0\334\140\10\0\151\324\242\306\50\173\0\0\0\15\0\224\201\3\0\76\0\200\4\0"
+    "\112\0\0\0\20\102\264\21\7\0\0\334\1\0\0\177\124\2\300\45\0\0\220\10\0"
+    "\174\0\0\100\15\0\230\221\3\0\77\0\220\4\0\113\0\0\100\20\103\270\41\7\0"
+    "\0\340\1\0\0\200\130\2\0\46\0\0\240\210\54"
 
-"cp1251\0"
-"windows1251\0"
-"\0\0"
-"\4\25\164\344\124\112\72\271\44\223\124\76\271\20\224\14\71\324\20\104"
-"\122\25\151\44\222\111\66\31\244\220\1\140\231\125\224\132\161\265\225\127"
-"\0\74\324\225\102\0\174\5\0\0\3\1\140\20\0\0\0\0\100\102\0\0\200\220\125"
-"\140\1\0\0\0\121\135\111\25\0\130\35\124\325\125\21\111\64\21\105"
-"\25\131\164\21\106\31\151\264\21\107\35\171\364\21\110\41\211\64\22\111"
-"\45\231\164\22\112\51\251\264\22\113\55\271\364\22\114\61\311\64\23\115"
-"\65\331\164\23\116\71\351\264\23\117\75\371\364\23\120\101\11\65\24\121"
-"\105\31\165\24\122\111\51\265\24\123\115\71\365\24\124"
+    "cp1251\0"
+    "windows1251\0"
+    "\0\0"
+    "\4\25\164\344\124\112\72\271\44\223\124\76\271\20\224\14\71\324\20\104"
+    "\122\25\151\44\222\111\66\31\244\220\1\140\231\125\224\132\161\265\225\127"
+    "\0\74\324\225\102\0\174\5\0\0\3\1\140\20\0\0\0\0\100\102\0\0\200\220\125"
+    "\140\1\0\0\0\121\135\111\25\0\130\35\124\325\125\21\111\64\21\105"
+    "\25\131\164\21\106\31\151\264\21\107\35\171\364\21\110\41\211\64\22\111"
+    "\45\231\164\22\112\51\251\264\22\113\55\271\364\22\114\61\311\64\23\115"
+    "\65\331\164\23\116\71\351\264\23\117\75\371\364\23\120\101\11\65\24\121"
+    "\105\31\165\24\122\111\51\265\24\123\115\71\365\24\124"
 
-"cp1252\0"
-"windows1252\0"
-"\0\0"
-"\124\6\160\244\51\112\72\271\44\223\257\74\171\10\224\171\4\100\112\0"
-"\1\24\151\44\222\111\66\31\244\220\264\140\211\110\224\172\4\120\312\47"
-"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+    "cp1252\0"
+    "windows1252\0"
+    "\0\0"
+    "\124\6\160\244\51\112\72\271\44\223\257\74\171\10\224\171\4\100\112\0"
+    "\1\24\151\44\222\111\66\31\244\220\264\140\211\110\224\172\4\120\312\47"
+    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
 
-"cp1253\0"
-"windows1253\0"
-"\0\0"
-"\124\6\160\244\51\112\72\271\44\223\1\74\31\0\224\1\4\20\100\0\1\24\151\44\222"
-"\111\66\31\244\220\1\140\31\100\224\1\4\20\100\0\0\364\342\13\0\0\0\0\0\0"
-"\0\0\20\0\0\0\0\0\300\220\0\0\0\0\0\274\0\0\0\0\277\0\23\14\0\302\0\60\14\61"
-"\305\30\163\14\62\311\50\263\14\63\315\70\363\14\64\321\110\63\15\65"
-"\325\130\23\300\65\330\144\243\315\66\334\164\343\315\67\340\204\43\316\70"
-"\344\224\143\316\71\350\244\243\316\72\354\264\343\316\73\360\304\43\317\74"
-"\364\324\143\317\75\370\344\243\317\76\374\364\343\317\77\0\5\44\120\0"
+    "cp1253\0"
+    "windows1253\0"
+    "\0\0"
+    "\124\6\160\244\51\112\72\271\44\223\1\74\31\0\224\1\4\20\100\0\1\24\151\44"
+    "\222"
+    "\111\66\31\244\220\1\140\31\100\224\1\4\20\100\0\0\364\342\13\0\0\0\0\0\0"
+    "\0\0\20\0\0\0\0\0\300\220\0\0\0\0\0\274\0\0\0\0\277\0\23\14\0\302\0\60\14"
+    "\61"
+    "\305\30\163\14\62\311\50\263\14\63\315\70\363\14\64\321\110\63\15\65"
+    "\325\130\23\300\65\330\144\243\315\66\334\164\343\315\67\340\204\43\316\70"
+    "\344\224\143\316\71\350\244\243\316\72\354\264\343\316\73\360\304\43\317"
+    "\74"
+    "\364\324\143\317\75\370\344\243\317\76\374\364\343\317\77\0\5\44\120\0"
 
-"cp1254\0"
-"windows1254\0"
-"\0\0"
-"\124\6\160\244\51\112\72\271\44\223\257\74\171\10\224\171\4\20\100\0"
-"\1\24\151\44\222\111\66\31\244\220\264\140\211\110\224\172\4\20\300\47"
-"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\116\0\0\0\0\0\0\0\0\0"
-"\0\0\0\0\0\0\170\121\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\117\0\0\0\0"
-"\0\0\0\0\0\0\0\0\0\0\0\174\141\10\0"
+    "cp1254\0"
+    "windows1254\0"
+    "\0\0"
+    "\124\6\160\244\51\112\72\271\44\223\257\74\171\10\224\171\4\20\100\0"
+    "\1\24\151\44\222\111\66\31\244\220\264\140\211\110\224\172\4\20\300\47"
+    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\116\0\0\0\0\0\0\0\0\0"
+    "\0\0\0\0\0\0\170\121\10\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\117\0\0"
+    "\0\0"
+    "\0\0\0\0\0\0\0\0\0\0\0\174\141\10\0"
 
-"cp1255\0"
-"windows1255\0"
-"\0\0"
-"\124\6\160\244\51\112\72\271\44\223\257\74\31\0\224\1\4\20\100\0"
-"\1\24\151\44\222\111\66\31\244\220\264\140\31\100\224\1\4\20\100\0\0\0\0\0\0"
-"\122\2\0\0\0\0\0\300\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\360\0\0\0\0\0\0\0"
-"\141\211\65\26\131\145\231\165\26\132\151\251\25\300\132\154\265\345\326\133"
-"\160\305\45\327\134\217\101\26\231\144\223\5\20\100\0\1\4\20\100\0"
-"\164\325\145\327\135\170\345\245\327\136\174\365\345\327\137\200\5\46\330\140"
-"\204\25\146\330\141\210\45\246\330\142\214\65\346\130\0\1\374\10\144\0"
+    "cp1255\0"
+    "windows1255\0"
+    "\0\0"
+    "\124\6\160\244\51\112\72\271\44\223\257\74\31\0\224\1\4\20\100\0"
+    "\1\24\151\44\222\111\66\31\244\220\264\140\31\100\224\1\4\20\100\0\0\0\0\0"
+    "\0"
+    "\122\2\0\0\0\0\0\300\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\360\0\0\0\0\0\0"
+    "\0"
+    "\141\211\65\26\131\145\231\165\26\132\151\251\25\300\132\154\265\345\326"
+    "\133"
+    "\160\305\45\327\134\217\101\26\231\144\223\5\20\100\0\1\4\20\100\0"
+    "\164\325\145\327\135\170\345\245\327\136\174\365\345\327\137\200\5\46\330"
+    "\140"
+    "\204\25\146\330\141\210\45\246\330\142\214\65\346\130\0\1\374\10\144\0"
 
-"cp1256\0"
-"windows1256\0"
-"\0\0"
-"\124\26\167\244\51\112\72\271\44\223\257\74\111\34\224\171\30\227\334\161"
-"\313\25\151\44\222\111\66\31\244\220\312\141\211\134\224\172\364\350\43\163"
-"\0\120\6\0\0\0\0\0\0\0\0\0\320\34\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\120\31\0"
-"\0\0\0\200\145\316\135\206\131\146\232\155\306\131\147\236\175\6\132\150"
-"\242\215\106\132\151\246\235\206\132\152\252\255\306\32\0\255\271\366\32\154"
-"\261\311\66\33\155\0\324\6\200\155\267\341\226\33\0\0\0\0\0\0\272\355\6\0\0"
-"\274\365\346\333\157\0\0\27\34\0\302\1\60\34\0\0\374\10\344\163"
+    "cp1256\0"
+    "windows1256\0"
+    "\0\0"
+    "\124\26\167\244\51\112\72\271\44\223\257\74\111\34\224\171\30\227\334\161"
+    "\313\25\151\44\222\111\66\31\244\220\312\141\211\134\224\172\364\350\43"
+    "\163"
+    "\0\120\6\0\0\0\0\0\0\0\0\0\320\34\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\120"
+    "\31\0"
+    "\0\0\0\200\145\316\135\206\131\146\232\155\306\131\147\236\175\6\132\150"
+    "\242\215\106\132\151\246\235\206\132\152\252\255\306\32\0\255\271\366\32"
+    "\154"
+    "\261\311\66\33\155\0\324\6\200\155\267\341\226\33\0\0\0\0\0\0\272\355\6\0"
+    "\0"
+    "\274\365\346\333\157\0\0\27\34\0\302\1\60\34\0\0\374\10\344\163"
 
-"cp1257\0"
-"windows1257\0"
-"\0\0"
-"\124\6\160\144\0\112\72\271\44\223\1\74\31\0\224\1\20\0\213\2\1\24\151\44\222"
-"\111\66\31\244\220\1\140\31\100\224\1\30\60\113\0\0\4\0\0\0\0\4\0\0\0"
-"\15\0\320\7\0\0\0\0\300\2\0\0\0\0\0\0\0\0\0\0\20\0\340\7\0\0\0\0\200\3"
-"\66\160\41\3\16\0\0\200\4\21\76\0\0\212\21\122\210\241\305\31\207\264\361\6\0"
-"\165\0\0\0\0\231\254\21\110\44\0\210\102\12\0\67\164\61\103\16\0\0\220\104\21"
-"\77\0\20\312\21\123\214\261\5\32\210\270\1\7\0\166\0\0\0\0\232\260\41\210\44"
-"\0\214\122\212\54"
+    "cp1257\0"
+    "windows1257\0"
+    "\0\0"
+    "\124\6\160\144\0\112\72\271\44\223\1\74\31\0\224\1\20\0\213\2\1\24\151\44"
+    "\222"
+    "\111\66\31\244\220\1\140\31\100\224\1\30\60\113\0\0\4\0\0\0\0\4\0\0\0"
+    "\15\0\320\7\0\0\0\0\300\2\0\0\0\0\0\0\0\0\0\0\20\0\340\7\0\0\0\0\200\3"
+    "\66\160\41\3\16\0\0\200\4\21\76\0\0\212\21\122\210\241\305\31\207\264\361"
+    "\6\0"
+    "\165\0\0\0\0\231\254\21\110\44\0\210\102\12\0\67\164\61\103\16\0\0\220\104"
+    "\21"
+    "\77\0\20\312\21\123\214\261\5\32\210\270\1\7\0\166\0\0\0\0\232\260\41\210"
+    "\44"
+    "\0\214\122\212\54"
 
-"cp1258\0"
-"windows1258\0"
-"\0\0"
-"\124\6\160\244\51\112\72\271\44\223\257\74\31\0\224\171\4\20\100\0"
-"\1\24\151\44\222\111\66\31\244\220\264\140\31\100\224\172\4\20\300\47"
-"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
-"\0\0\0\0\0\0\0\0\0\15\0\0\0\0\0\0\0\0\0\0\266\0\0\0\0\102\0\220\13\0"
-"\0\234\2\0\0\0\0\0\0\0\0\244\202\13\0\0\0\0\100\15\0\0\0\0\0\0\0\0\0\0"
-"\267\0\0\0\0\103\0\240\13\0\0\240\2\0\0\0\0\0\0\0\0\250\62\45\0"
+    "cp1258\0"
+    "windows1258\0"
+    "\0\0"
+    "\124\6\160\244\51\112\72\271\44\223\257\74\31\0\224\171\4\20\100\0"
+    "\1\24\151\44\222\111\66\31\244\220\264\140\31\100\224\172\4\20\300\47"
+    "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"
+    "\0\0\0\0\0\0\0\0\0\15\0\0\0\0\0\0\0\0\0\0\266\0\0\0\0\102\0\220\13\0"
+    "\0\234\2\0\0\0\0\0\0\0\0\244\202\13\0\0\0\0\100\15\0\0\0\0\0\0\0\0\0\0"
+    "\267\0\0\0\0\103\0\240\13\0\0\240\2\0\0\0\0\0\0\0\0\250\62\45\0"
 
-"koi8r\0"
-"\0\0"
-"\140\206\51\346\230\144\226\151\346\231\150\246\251\46\242\211\52\272\50\243"
-"\215\72\372\250\227\220\146\251\345\226\134\166\51\300\227\7\40\220\300\3"
-"\153\262\331\146\124\156\276\11\147\234\162\316\111\147\235"
-"\166\336\211\147\236\172\356\311\347\100\175\372\371\47\240\201\12\72\50\241"
-"\205\32\172\150\1\117\305\44\323\121\65\331\124\24\115\106\345\244\323\116"
-"\74\365\344\323\117\100\101\25\224\120\103\21\165\323\114\115\61\205\123\122"
-"\116\51\205\324\122\57\105\44\321\111\25\131\124\22\105\46\145\244\321\106"
-"\34\165\344\321\107\40\301\24\222\110\43\221\164\321\104\55\261\204\121\112"
-"\56\251\204\322\112"
+    "koi8r\0"
+    "\0\0"
+    "\140\206\51\346\230\144\226\151\346\231\150\246\251\46\242\211\52\272\50"
+    "\243"
+    "\215\72\372\250\227\220\146\251\345\226\134\166\51\300\227\7\40\220\300\3"
+    "\153\262\331\146\124\156\276\11\147\234\162\316\111\147\235"
+    "\166\336\211\147\236\172\356\311\347\100\175\372\371\47\240\201\12\72\50"
+    "\241"
+    "\205\32\172\150\1\117\305\44\323\121\65\331\124\24\115\106\345\244\323\116"
+    "\74\365\344\323\117\100\101\25\224\120\103\21\165\323\114\115\61\205\123"
+    "\122"
+    "\116\51\205\324\122\57\105\44\321\111\25\131\124\22\105\46\145\244\321\106"
+    "\34\165\344\321\107\40\301\24\222\110\43\221\164\321\104\55\261\204\121"
+    "\112"
+    "\56\251\204\322\112"
 
-"koi8u\0"
-"\0\0"
-"\140\206\51\346\230\144\226\151\346\231\150\246\251\46\242\211\52\272\50\243"
-"\215\72\372\250\227\220\146\251\345\226\134\166\51\300\227\7\40\220\300\3"
-"\153\262\331\146\124\124\275\151\325\125\162\316\111\147\235"
-"\166\202\205\147\236\172\356\311\347\100\6\371\211\120\102\201\12\72\50\241"
-"\205\176\165\150\1\117\305\44\323\121\65\331\124\24\115\106\345\244\323\116"
-"\74\365\344\323\117\100\101\25\224\120\103\21\165\323\114\115\61\205\123\122"
-"\116\51\205\324\122\57\105\44\321\111\25\131\124\22\105\46\145\244\321\106"
-"\34\165\344\321\107\40\301\24\222\110\43\221\164\321\104\55\261\204\121\112"
-"\56\251\204\322\112"
+    "koi8u\0"
+    "\0\0"
+    "\140\206\51\346\230\144\226\151\346\231\150\246\251\46\242\211\52\272\50"
+    "\243"
+    "\215\72\372\250\227\220\146\251\345\226\134\166\51\300\227\7\40\220\300\3"
+    "\153\262\331\146\124\124\275\151\325\125\162\316\111\147\235"
+    "\166\202\205\147\236\172\356\311\347\100\6\371\211\120\102\201\12\72\50"
+    "\241"
+    "\205\176\165\150\1\117\305\44\323\121\65\331\124\24\115\106\345\244\323"
+    "\116"
+    "\74\365\344\323\117\100\101\25\224\120\103\21\165\323\114\115\61\205\123"
+    "\122"
+    "\116\51\205\324\122\57\105\44\321\111\25\131\124\22\105\46\145\244\321\106"
+    "\34\165\344\321\107\40\301\24\222\110\43\221\164\321\104\55\261\204\121"
+    "\112"
+    "\56\251\204\322\112"
 
-"cp437\0"
-"\0\0"
-"\27\300\100\202\7\37\164\0\202\10\45\230\60\102\12\50\234\100\101\5"
-"\30\70\260\300\12\54\250\360\202\13\61\144\300\101\4\22\114\140\245\51"
-"\221\106\32\151\244\221\106\32\151\244\221\106\32\151\244\221\106\32\151\244"
-"\215\72\372\150\230\147\362\331\147\234\160\372\311\246\234"
-"\170\336\151\347\230\144\246\211\246\231\140\252\231\247\236"
-"\165\276\111\150\240\173\256\171\250\240\203\376\11\50\235\163\266\351\246\241"
-"\205\226\51\246\242\211\56\312\50\242\345\104\212\14\75\327\334\23\51\76"
-"\332\64\323\15\72\221\352\223\116\244\221\106\332\45\227\136\176\371\300\226"
-"\7\144\231\200\226\221\42\0\251\0"
+    "cp437\0"
+    "\0\0"
+    "\27\300\100\202\7\37\164\0\202\10\45\230\60\102\12\50\234\100\101\5"
+    "\30\70\260\300\12\54\250\360\202\13\61\144\300\101\4\22\114\140\245\51"
+    "\221\106\32\151\244\221\106\32\151\244\221\106\32\151\244\221\106\32\151"
+    "\244"
+    "\215\72\372\150\230\147\362\331\147\234\160\372\311\246\234"
+    "\170\336\151\347\230\144\246\211\246\231\140\252\231\247\236"
+    "\165\276\111\150\240\173\256\171\250\240\203\376\11\50\235\163\266\351\246"
+    "\241"
+    "\205\226\51\246\242\211\56\312\50\242\345\104\212\14\75\327\334\23\51\76"
+    "\332\64\323\15\72\221\352\223\116\244\221\106\332\45\227\136\176\371\300"
+    "\226"
+    "\7\144\231\200\226\221\42\0\251\0"
 
-"cp850\0"
-"\0\0"
-"\27\300\100\202\7\37\164\0\202\10\45\230\60\102\12\50\234\100\101\5"
-"\30\70\260\300\12\54\250\360\202\13\61\144\300\1\4\22\64\300\200\51"
-"\221\106\32\151\244\221\106\32\151\244\221\106\32\151\244\221\106\32\151\244"
-"\215\72\372\150\230\147\106\32\151\244\5\370\311\246\234\170\106\60\301\230"
-"\144\246\211\246\231\140\252\31\151\244\165\276\111\150\240"
-"\173\256\171\150\244\221\106\32\151\244\221\176\21\151\244\221\226\51\246\242"
-"\211\106\32\51\242\221\106\32\151\244\221\106\32\151\244\221\106\32\151\244"
-"\221\106\152\100\244\221\106\112\144\244\221\16\360\200\2\7\20\220\100\244"
-"\221\42\0\251\0"
-
+    "cp850\0"
+    "\0\0"
+    "\27\300\100\202\7\37\164\0\202\10\45\230\60\102\12\50\234\100\101\5"
+    "\30\70\260\300\12\54\250\360\202\13\61\144\300\1\4\22\64\300\200\51"
+    "\221\106\32\151\244\221\106\32\151\244\221\106\32\151\244\221\106\32\151"
+    "\244"
+    "\215\72\372\150\230\147\106\32\151\244\5\370\311\246\234\170\106\60\301"
+    "\230"
+    "\144\246\211\246\231\140\252\31\151\244\165\276\111\150\240"
+    "\173\256\171\150\244\221\106\32\151\244\221\176\21\151\244\221\226\51\246"
+    "\242"
+    "\211\106\32\51\242\221\106\32\151\244\221\106\32\151\244\221\106\32\151"
+    "\244"
+    "\221\106\152\100\244\221\106\112\144\244\221\16\360\200\2\7\20\220\100\244"
+    "\221\42\0\251\0"
diff --git a/fusl/src/locale/dcngettext.c b/fusl/src/locale/dcngettext.c
index a5ff847..5c2714d 100644
--- a/fusl/src/locale/dcngettext.c
+++ b/fusl/src/locale/dcngettext.c
@@ -10,240 +10,248 @@
 #include "atomic.h"
 
 struct binding {
-	struct binding *next;
-	int dirlen;
-	volatile int active;
-	char *domainname;
-	char *dirname;
-	char buf[];
+  struct binding* next;
+  int dirlen;
+  volatile int active;
+  char* domainname;
+  char* dirname;
+  char buf[];
 };
 
-static void *volatile bindings;
+static void* volatile bindings;
 
-static char *gettextdir(const char *domainname, size_t *dirlen)
-{
-	struct binding *p;
-	for (p=bindings; p; p=p->next) {
-		if (!strcmp(p->domainname, domainname) && p->active) {
-			*dirlen = p->dirlen;
-			return (char *)p->dirname;
-		}
-	}
-	return 0;
+static char* gettextdir(const char* domainname, size_t* dirlen) {
+  struct binding* p;
+  for (p = bindings; p; p = p->next) {
+    if (!strcmp(p->domainname, domainname) && p->active) {
+      *dirlen = p->dirlen;
+      return (char*)p->dirname;
+    }
+  }
+  return 0;
 }
 
-char *bindtextdomain(const char *domainname, const char *dirname)
-{
-	static volatile int lock[2];
-	struct binding *p, *q;
+char* bindtextdomain(const char* domainname, const char* dirname) {
+  static volatile int lock[2];
+  struct binding *p, *q;
 
-	if (!domainname) return 0;
-	if (!dirname) return gettextdir(domainname, &(size_t){0});
+  if (!domainname)
+    return 0;
+  if (!dirname)
+    return gettextdir(domainname, &(size_t){0});
 
-	size_t domlen = strlen(domainname);
-	size_t dirlen = strlen(dirname);
-	if (domlen > NAME_MAX || dirlen >= PATH_MAX) {
-		errno = EINVAL;
-		return 0;
-	}
+  size_t domlen = strlen(domainname);
+  size_t dirlen = strlen(dirname);
+  if (domlen > NAME_MAX || dirlen >= PATH_MAX) {
+    errno = EINVAL;
+    return 0;
+  }
 
-	LOCK(lock);
+  LOCK(lock);
 
-	for (p=bindings; p; p=p->next) {
-		if (!strcmp(p->domainname, domainname) &&
-		    !strcmp(p->dirname, dirname)) {
-			break;
-		}
-	}
+  for (p = bindings; p; p = p->next) {
+    if (!strcmp(p->domainname, domainname) && !strcmp(p->dirname, dirname)) {
+      break;
+    }
+  }
 
-	if (!p) {
-		p = malloc(sizeof *p + domlen + dirlen + 2);
-		if (!p) {
-			UNLOCK(lock);
-			return 0;
-		}
-		p->next = bindings;
-		p->dirlen = dirlen;
-		p->domainname = p->buf;
-		p->dirname = p->buf + domlen + 1;
-		memcpy(p->domainname, domainname, domlen+1);
-		memcpy(p->dirname, dirname, dirlen+1);
-		a_cas_p(&bindings, bindings, p);
-	}
+  if (!p) {
+    p = malloc(sizeof *p + domlen + dirlen + 2);
+    if (!p) {
+      UNLOCK(lock);
+      return 0;
+    }
+    p->next = bindings;
+    p->dirlen = dirlen;
+    p->domainname = p->buf;
+    p->dirname = p->buf + domlen + 1;
+    memcpy(p->domainname, domainname, domlen + 1);
+    memcpy(p->dirname, dirname, dirlen + 1);
+    a_cas_p(&bindings, bindings, p);
+  }
 
-	a_store(&p->active, 1);
+  a_store(&p->active, 1);
 
-	for (q=bindings; q; q=q->next) {
-		if (!strcmp(p->domainname, domainname) && q != p)
-			a_store(&q->active, 0);
-	}
+  for (q = bindings; q; q = q->next) {
+    if (!strcmp(p->domainname, domainname) && q != p)
+      a_store(&q->active, 0);
+  }
 
-	UNLOCK(lock);
-	
-	return (char *)p->dirname;
+  UNLOCK(lock);
+
+  return (char*)p->dirname;
 }
 
 static const char catnames[][12] = {
-	"LC_CTYPE",
-	"LC_NUMERIC",
-	"LC_TIME",
-	"LC_COLLATE",
-	"LC_MONETARY",
-	"LC_MESSAGES",
+    "LC_CTYPE",   "LC_NUMERIC",  "LC_TIME",
+    "LC_COLLATE", "LC_MONETARY", "LC_MESSAGES",
 };
 
-static const char catlens[] = { 8, 10, 7, 10, 11, 11 };
+static const char catlens[] = {8, 10, 7, 10, 11, 11};
 
 struct msgcat {
-	struct msgcat *next;
-	const void *map;
-	size_t map_size;
-	void *volatile plural_rule;
-	volatile int nplurals;
-	char name[];
+  struct msgcat* next;
+  const void* map;
+  size_t map_size;
+  void* volatile plural_rule;
+  volatile int nplurals;
+  char name[];
 };
 
-static char *dummy_gettextdomain()
-{
-	return "messages";
+static char* dummy_gettextdomain() {
+  return "messages";
 }
 
 weak_alias(dummy_gettextdomain, __gettextdomain);
 
-const unsigned char *__map_file(const char *, size_t *);
-int __munmap(void *, size_t);
-unsigned long __pleval(const char *, unsigned long);
+const unsigned char* __map_file(const char*, size_t*);
+int __munmap(void*, size_t);
+unsigned long __pleval(const char*, unsigned long);
 
-char *dcngettext(const char *domainname, const char *msgid1, const char *msgid2, unsigned long int n, int category)
-{
-	static struct msgcat *volatile cats;
-	struct msgcat *p;
-	struct __locale_struct *loc = CURRENT_LOCALE;
-	const struct __locale_map *lm;
-	const char *dirname, *locname, *catname;
-	size_t dirlen, loclen, catlen, domlen;
+char* dcngettext(const char* domainname,
+                 const char* msgid1,
+                 const char* msgid2,
+                 unsigned long int n,
+                 int category) {
+  static struct msgcat* volatile cats;
+  struct msgcat* p;
+  struct __locale_struct* loc = CURRENT_LOCALE;
+  const struct __locale_map* lm;
+  const char *dirname, *locname, *catname;
+  size_t dirlen, loclen, catlen, domlen;
 
-	if ((unsigned)category >= LC_ALL) goto notrans;
+  if ((unsigned)category >= LC_ALL)
+    goto notrans;
 
-	if (!domainname) domainname = __gettextdomain();
+  if (!domainname)
+    domainname = __gettextdomain();
 
-	domlen = strlen(domainname);
-	if (domlen > NAME_MAX) goto notrans;
+  domlen = strlen(domainname);
+  if (domlen > NAME_MAX)
+    goto notrans;
 
-	dirname = gettextdir(domainname, &dirlen);
-	if (!dirname) goto notrans;
+  dirname = gettextdir(domainname, &dirlen);
+  if (!dirname)
+    goto notrans;
 
-	lm = loc->cat[category];
-	if (!lm) {
-notrans:
-		return (char *) ((n == 1) ? msgid1 : msgid2);
-	}
-	locname = lm->name;
+  lm = loc->cat[category];
+  if (!lm) {
+  notrans:
+    return (char*)((n == 1) ? msgid1 : msgid2);
+  }
+  locname = lm->name;
 
-	catname = catnames[category];
-	catlen = catlens[category];
-	loclen = strlen(locname);
+  catname = catnames[category];
+  catlen = catlens[category];
+  loclen = strlen(locname);
 
-	size_t namelen = dirlen+1 + loclen+1 + catlen+1 + domlen+3;
-	char name[namelen+1], *s = name;
+  size_t namelen = dirlen + 1 + loclen + 1 + catlen + 1 + domlen + 3;
+  char name[namelen + 1], *s = name;
 
-	memcpy(s, dirname, dirlen);
-	s[dirlen] = '/';
-	s += dirlen + 1;
-	memcpy(s, locname, loclen);
-	s[loclen] = '/';
-	s += loclen + 1;
-	memcpy(s, catname, catlen);
-	s[catlen] = '/';
-	s += catlen + 1;
-	memcpy(s, domainname, domlen);
-	s[domlen] = '.';
-	s[domlen+1] = 'm';
-	s[domlen+2] = 'o';
-	s[domlen+3] = 0;
+  memcpy(s, dirname, dirlen);
+  s[dirlen] = '/';
+  s += dirlen + 1;
+  memcpy(s, locname, loclen);
+  s[loclen] = '/';
+  s += loclen + 1;
+  memcpy(s, catname, catlen);
+  s[catlen] = '/';
+  s += catlen + 1;
+  memcpy(s, domainname, domlen);
+  s[domlen] = '.';
+  s[domlen + 1] = 'm';
+  s[domlen + 2] = 'o';
+  s[domlen + 3] = 0;
 
-	for (p=cats; p; p=p->next)
-		if (!strcmp(p->name, name))
-			break;
+  for (p = cats; p; p = p->next)
+    if (!strcmp(p->name, name))
+      break;
 
-	if (!p) {
-		void *old_cats;
-		size_t map_size;
-		const void *map = __map_file(name, &map_size);
-		if (!map) goto notrans;
-		p = malloc(sizeof *p + namelen + 1);
-		if (!p) {
-			__munmap((void *)map, map_size);
-			goto notrans;
-		}
-		p->map = map;
-		p->map_size = map_size;
-		memcpy(p->name, name, namelen+1);
-		do {
-			old_cats = cats;
-			p->next = old_cats;
-		} while (a_cas_p(&cats, old_cats, p) != old_cats);
-	}
+  if (!p) {
+    void* old_cats;
+    size_t map_size;
+    const void* map = __map_file(name, &map_size);
+    if (!map)
+      goto notrans;
+    p = malloc(sizeof *p + namelen + 1);
+    if (!p) {
+      __munmap((void*)map, map_size);
+      goto notrans;
+    }
+    p->map = map;
+    p->map_size = map_size;
+    memcpy(p->name, name, namelen + 1);
+    do {
+      old_cats = cats;
+      p->next = old_cats;
+    } while (a_cas_p(&cats, old_cats, p) != old_cats);
+  }
 
-	const char *trans = __mo_lookup(p->map, p->map_size, msgid1);
-	if (!trans) goto notrans;
+  const char* trans = __mo_lookup(p->map, p->map_size, msgid1);
+  if (!trans)
+    goto notrans;
 
-	/* Non-plural-processing gettext forms pass a null pointer as
-	 * msgid2 to request that dcngettext suppress plural processing. */
-	if (!msgid2) return (char *)trans;
+  /* Non-plural-processing gettext forms pass a null pointer as
+   * msgid2 to request that dcngettext suppress plural processing. */
+  if (!msgid2)
+    return (char*)trans;
 
-	if (!p->plural_rule) {
-		const char *rule = "n!=1;";
-		unsigned long np = 2;
-		const char *r = __mo_lookup(p->map, p->map_size, "");
-		char *z;
-		while (r && strncmp(r, "Plural-Forms:", 13)) {
-			z = strchr(r, '\n');
-			r = z ? z+1 : 0;
-		}
-		if (r) {
-			r += 13;
-			while (isspace(*r)) r++;
-			if (!strncmp(r, "nplurals=", 9)) {
-				np = strtoul(r+9, &z, 10);
-				r = z;
-			}
-			while (*r && *r != ';') r++;
-			if (*r) {
-				r++;
-				while (isspace(*r)) r++;
-				if (!strncmp(r, "plural=", 7))
-					rule = r+7;
-			}
-		}
-		a_store(&p->nplurals, np);
-		a_cas_p(&p->plural_rule, 0, (void *)rule);
-	}
-	if (p->nplurals) {
-		unsigned long plural = __pleval(p->plural_rule, n);
-		if (plural > p->nplurals) goto notrans;
-		while (plural--) {
-			size_t rem = p->map_size - (trans - (char *)p->map);
-			size_t l = strnlen(trans, rem);
-			if (l+1 >= rem)
-				goto notrans;
-			trans += l+1;
-		}
-	}
-	return (char *)trans;
+  if (!p->plural_rule) {
+    const char* rule = "n!=1;";
+    unsigned long np = 2;
+    const char* r = __mo_lookup(p->map, p->map_size, "");
+    char* z;
+    while (r && strncmp(r, "Plural-Forms:", 13)) {
+      z = strchr(r, '\n');
+      r = z ? z + 1 : 0;
+    }
+    if (r) {
+      r += 13;
+      while (isspace(*r))
+        r++;
+      if (!strncmp(r, "nplurals=", 9)) {
+        np = strtoul(r + 9, &z, 10);
+        r = z;
+      }
+      while (*r && *r != ';')
+        r++;
+      if (*r) {
+        r++;
+        while (isspace(*r))
+          r++;
+        if (!strncmp(r, "plural=", 7))
+          rule = r + 7;
+      }
+    }
+    a_store(&p->nplurals, np);
+    a_cas_p(&p->plural_rule, 0, (void*)rule);
+  }
+  if (p->nplurals) {
+    unsigned long plural = __pleval(p->plural_rule, n);
+    if (plural > p->nplurals)
+      goto notrans;
+    while (plural--) {
+      size_t rem = p->map_size - (trans - (char*)p->map);
+      size_t l = strnlen(trans, rem);
+      if (l + 1 >= rem)
+        goto notrans;
+      trans += l + 1;
+    }
+  }
+  return (char*)trans;
 }
 
-char *dcgettext(const char *domainname, const char *msgid, int category)
-{
-	return dcngettext(domainname, msgid, 0, 1, category);
+char* dcgettext(const char* domainname, const char* msgid, int category) {
+  return dcngettext(domainname, msgid, 0, 1, category);
 }
 
-char *dngettext(const char *domainname, const char *msgid1, const char *msgid2, unsigned long int n)
-{
-	return dcngettext(domainname, msgid1, msgid2, n, LC_MESSAGES);
+char* dngettext(const char* domainname,
+                const char* msgid1,
+                const char* msgid2,
+                unsigned long int n) {
+  return dcngettext(domainname, msgid1, msgid2, n, LC_MESSAGES);
 }
 
-char *dgettext(const char *domainname, const char *msgid)
-{
-	return dcngettext(domainname, msgid, 0, 1, LC_MESSAGES);
+char* dgettext(const char* domainname, const char* msgid) {
+  return dcngettext(domainname, msgid, 0, 1, LC_MESSAGES);
 }
diff --git a/fusl/src/locale/duplocale.c b/fusl/src/locale/duplocale.c
index 030b64c..6c29b78 100644
--- a/fusl/src/locale/duplocale.c
+++ b/fusl/src/locale/duplocale.c
@@ -3,13 +3,14 @@
 #include "locale_impl.h"
 #include "libc.h"
 
-locale_t __duplocale(locale_t old)
-{
-	locale_t new = malloc(sizeof *new);
-	if (!new) return 0;
-	if (old == LC_GLOBAL_LOCALE) old = &libc.global_locale;
-	*new = *old;
-	return new;
+locale_t __duplocale(locale_t old) {
+  locale_t new = malloc(sizeof *new);
+  if (!new)
+    return 0;
+  if (old == LC_GLOBAL_LOCALE)
+    old = &libc.global_locale;
+  *new = *old;
+  return new;
 }
 
 weak_alias(__duplocale, duplocale);
diff --git a/fusl/src/locale/freelocale.c b/fusl/src/locale/freelocale.c
index c2ae1a3..b4e9f6c 100644
--- a/fusl/src/locale/freelocale.c
+++ b/fusl/src/locale/freelocale.c
@@ -4,9 +4,9 @@
 
 int __loc_is_allocated(locale_t);
 
-void freelocale(locale_t l)
-{
-	if (__loc_is_allocated(l)) free(l);
+void freelocale(locale_t l) {
+  if (__loc_is_allocated(l))
+    free(l);
 }
 
 weak_alias(freelocale, __freelocale);
diff --git a/fusl/src/locale/gb18030.h b/fusl/src/locale/gb18030.h
index 5aceb32..dbcdae0 100644
--- a/fusl/src/locale/gb18030.h
+++ b/fusl/src/locale/gb18030.h
@@ -1,1836 +1,2172 @@
-19970,19972,19973,19974,19983,19986,19991,19999,20000,20001,20003,20006,20009,
-20014,20015,20017,20019,20021,20023,20028,20032,20033,20034,20036,20038,20042,
-20049,20053,20055,20058,20059,20066,20067,20068,20069,20071,20072,20074,20075,
-20076,20077,20078,20079,20082,20084,20085,20086,20087,20088,20089,20090,20091,
-20092,20093,20095,20096,20097,20098,20099,20100,20101,20103,20106,20112,20118,
-20119,20121,20124,20125,20126,20131,20138,20143,20144,20145,20148,20150,20151,
-20152,20153,20156,20157,20158,20168,20172,20175,20176,20178,20186,20187,20188,
-20192,20194,20198,20199,20201,20205,20206,20207,20209,20212,20216,20217,20218,
-20220,20222,20224,20226,20227,20228,20229,20230,20231,20232,20235,20236,20242,
-20243,20244,20245,20246,20252,20253,20257,20259,20264,20265,20268,20269,20270,
-20273,20275,20277,20279,20281,20283,20286,20287,20288,20289,20290,20292,20293,
-20295,20296,20297,20298,20299,20300,20306,20308,20310,20321,20322,20326,20328,
-20330,20331,20333,20334,20337,20338,20341,20343,20344,20345,20346,20349,20352,
-20353,20354,20357,20358,20359,20362,20364,20366,20368,20370,20371,20373,20374,
-20376,20377,20378,20380,20382,20383,20385,20386,20388,20395,20397,20400,20401,
-20402,20403,20404,20406,20407,20408,20409,20410,20411,20412,20413,20414,20416,
-20417,20418,20422,20423,20424,20425,20427,20428,20429,20434,20435,20436,20437,
-20438,20441,20443,20448,20450,20452,20453,20455,20459,20460,20464,20466,20468,
-20469,20470,20471,20473,20475,20476,20477,20479,20480,20481,20482,20483,20484,
-20485,20486,20487,20488,20489,20490,20491,20494,20496,20497,20499,20501,20502,
-20503,20507,20509,20510,20512,20514,20515,20516,20519,20523,20527,20528,20529,
-20530,20531,20532,20533,20534,20535,20536,20537,20539,20541,20543,20544,20545,
-20546,20548,20549,20550,20553,20554,20555,20557,20560,20561,20562,20563,20564,
-20566,20567,20568,20569,20571,20573,20574,20575,20576,20577,20578,20579,20580,
-20582,20583,20584,20585,20586,20587,20589,20590,20591,20592,20593,20594,20595,
-20596,20597,20600,20601,20602,20604,20605,20609,20610,20611,20612,20614,20615,
-20617,20618,20619,20620,20622,20623,20624,20625,20626,20627,20628,20629,20630,
-20631,20632,20633,20634,20635,20636,20637,20638,20639,20640,20641,20642,20644,
-20646,20650,20651,20653,20654,20655,20656,20657,20659,20660,20661,20662,20663,
-20664,20665,20668,20669,20670,20671,20672,20673,20674,20675,20676,20677,20678,
-20679,20680,20681,20682,20683,20684,20685,20686,20688,20689,20690,20691,20692,
-20693,20695,20696,20697,20699,20700,20701,20702,20703,20704,20705,20706,20707,
-20708,20709,20712,20713,20714,20715,20719,20720,20721,20722,20724,20726,20727,
-20728,20729,20730,20732,20733,20734,20735,20736,20737,20738,20739,20740,20741,
-20744,20745,20746,20748,20749,20750,20751,20752,20753,20755,20756,20757,20758,
-20759,20760,20761,20762,20763,20764,20765,20766,20767,20768,20770,20771,20772,
-20773,20774,20775,20776,20777,20778,20779,20780,20781,20782,20783,20784,20785,
-20786,20787,20788,20789,20790,20791,20792,20793,20794,20795,20796,20797,20798,
-20802,20807,20810,20812,20814,20815,20816,20818,20819,20823,20824,20825,20827,
-20829,20830,20831,20832,20833,20835,20836,20838,20839,20841,20842,20847,20850,
-20858,20862,20863,20867,20868,20870,20871,20874,20875,20878,20879,20880,20881,
-20883,20884,20888,20890,20893,20894,20895,20897,20899,20902,20903,20904,20905,
-20906,20909,20910,20916,20920,20921,20922,20926,20927,20929,20930,20931,20933,
-20936,20938,20941,20942,20944,20946,20947,20948,20949,20950,20951,20952,20953,
-20954,20956,20958,20959,20962,20963,20965,20966,20967,20968,20969,20970,20972,
-20974,20977,20978,20980,20983,20990,20996,20997,21001,21003,21004,21007,21008,
-21011,21012,21013,21020,21022,21023,21025,21026,21027,21029,21030,21031,21034,
-21036,21039,21041,21042,21044,21045,21052,21054,21060,21061,21062,21063,21064,
-21065,21067,21070,21071,21074,21075,21077,21079,21080,21081,21082,21083,21085,
-21087,21088,21090,21091,21092,21094,21096,21099,21100,21101,21102,21104,21105,
-21107,21108,21109,21110,21111,21112,21113,21114,21115,21116,21118,21120,21123,
-21124,21125,21126,21127,21129,21130,21131,21132,21133,21134,21135,21137,21138,
-21140,21141,21142,21143,21144,21145,21146,21148,21156,21157,21158,21159,21166,
-21167,21168,21172,21173,21174,21175,21176,21177,21178,21179,21180,21181,21184,
-21185,21186,21188,21189,21190,21192,21194,21196,21197,21198,21199,21201,21203,
-21204,21205,21207,21209,21210,21211,21212,21213,21214,21216,21217,21218,21219,
-21221,21222,21223,21224,21225,21226,21227,21228,21229,21230,21231,21233,21234,
-21235,21236,21237,21238,21239,21240,21243,21244,21245,21249,21250,21251,21252,
-21255,21257,21258,21259,21260,21262,21265,21266,21267,21268,21272,21275,21276,
-21278,21279,21282,21284,21285,21287,21288,21289,21291,21292,21293,21295,21296,
-21297,21298,21299,21300,21301,21302,21303,21304,21308,21309,21312,21314,21316,
-21318,21323,21324,21325,21328,21332,21336,21337,21339,21341,21349,21352,21354,
-21356,21357,21362,21366,21369,21371,21372,21373,21374,21376,21377,21379,21383,
-21384,21386,21390,21391,21392,21393,21394,21395,21396,21398,21399,21401,21403,
-21404,21406,21408,21409,21412,21415,21418,21419,21420,21421,21423,21424,21425,
-21426,21427,21428,21429,21431,21432,21433,21434,21436,21437,21438,21440,21443,
-21444,21445,21446,21447,21454,21455,21456,21458,21459,21461,21466,21468,21469,
-21470,21473,21474,21479,21492,21498,21502,21503,21504,21506,21509,21511,21515,
-21524,21528,21529,21530,21532,21538,21540,21541,21546,21552,21555,21558,21559,
-21562,21565,21567,21569,21570,21572,21573,21575,21577,21580,21581,21582,21583,
-21585,21594,21597,21598,21599,21600,21601,21603,21605,21607,21609,21610,21611,
-21612,21613,21614,21615,21616,21620,21625,21626,21630,21631,21633,21635,21637,
-21639,21640,21641,21642,21645,21649,21651,21655,21656,21660,21662,21663,21664,
-21665,21666,21669,21678,21680,21682,21685,21686,21687,21689,21690,21692,21694,
-21699,21701,21706,21707,21718,21720,21723,21728,21729,21730,21731,21732,21739,
-21740,21743,21744,21745,21748,21749,21750,21751,21752,21753,21755,21758,21760,
-21762,21763,21764,21765,21768,21770,21771,21772,21773,21774,21778,21779,21781,
-21782,21783,21784,21785,21786,21788,21789,21790,21791,21793,21797,21798,21800,
-21801,21803,21805,21810,21812,21813,21814,21816,21817,21818,21819,21821,21824,
-21826,21829,21831,21832,21835,21836,21837,21838,21839,21841,21842,21843,21844,
-21847,21848,21849,21850,21851,21853,21854,21855,21856,21858,21859,21864,21865,
-21867,21871,21872,21873,21874,21875,21876,21881,21882,21885,21887,21893,21894,
-21900,21901,21902,21904,21906,21907,21909,21910,21911,21914,21915,21918,21920,
-21921,21922,21923,21924,21925,21926,21928,21929,21930,21931,21932,21933,21934,
-21935,21936,21938,21940,21942,21944,21946,21948,21951,21952,21953,21954,21955,
-21958,21959,21960,21962,21963,21966,21967,21968,21973,21975,21976,21977,21978,
-21979,21982,21984,21986,21991,21993,21997,21998,22000,22001,22004,22006,22008,
-22009,22010,22011,22012,22015,22018,22019,22020,22021,22022,22023,22026,22027,
-22029,22032,22033,22034,22035,22036,22037,22038,22039,22041,22042,22044,22045,
-22048,22049,22050,22053,22054,22056,22057,22058,22059,22062,22063,22064,22067,
-22069,22071,22072,22074,22076,22077,22078,22080,22081,22082,22083,22084,22085,
-22086,22087,22088,22089,22090,22091,22095,22096,22097,22098,22099,22101,22102,
-22106,22107,22109,22110,22111,22112,22113,22115,22117,22118,22119,22125,22126,
-22127,22128,22130,22131,22132,22133,22135,22136,22137,22138,22141,22142,22143,
-22144,22145,22146,22147,22148,22151,22152,22153,22154,22155,22156,22157,22160,
-22161,22162,22164,22165,22166,22167,22168,22169,22170,22171,22172,22173,22174,
-22175,22176,22177,22178,22180,22181,22182,22183,22184,22185,22186,22187,22188,
-22189,22190,22192,22193,22194,22195,22196,22197,22198,22200,22201,22202,22203,
-22205,22206,22207,22208,22209,22210,22211,22212,22213,22214,22215,22216,22217,
-22219,22220,22221,22222,22223,22224,22225,22226,22227,22229,22230,22232,22233,
-22236,22243,22245,22246,22247,22248,22249,22250,22252,22254,22255,22258,22259,
-22262,22263,22264,22267,22268,22272,22273,22274,22277,22279,22283,22284,22285,
-22286,22287,22288,22289,22290,22291,22292,22293,22294,22295,22296,22297,22298,
-22299,22301,22302,22304,22305,22306,22308,22309,22310,22311,22315,22321,22322,
-22324,22325,22326,22327,22328,22332,22333,22335,22337,22339,22340,22341,22342,
-22344,22345,22347,22354,22355,22356,22357,22358,22360,22361,22370,22371,22373,
-22375,22380,22382,22384,22385,22386,22388,22389,22392,22393,22394,22397,22398,
-22399,22400,22401,22407,22408,22409,22410,22413,22414,22415,22416,22417,22420,
-22421,22422,22423,22424,22425,22426,22428,22429,22430,22431,22437,22440,22442,
-22444,22447,22448,22449,22451,22453,22454,22455,22457,22458,22459,22460,22461,
-22462,22463,22464,22465,22468,22469,22470,22471,22472,22473,22474,22476,22477,
-22480,22481,22483,22486,22487,22491,22492,22494,22497,22498,22499,22501,22502,
-22503,22504,22505,22506,22507,22508,22510,22512,22513,22514,22515,22517,22518,
-22519,22523,22524,22526,22527,22529,22531,22532,22533,22536,22537,22538,22540,
-22542,22543,22544,22546,22547,22548,22550,22551,22552,22554,22555,22556,22557,
-22559,22562,22563,22565,22566,22567,22568,22569,22571,22572,22573,22574,22575,
-22577,22578,22579,22580,22582,22583,22584,22585,22586,22587,22588,22589,22590,
-22591,22592,22593,22594,22595,22597,22598,22599,22600,22601,22602,22603,22606,
-22607,22608,22610,22611,22613,22614,22615,22617,22618,22619,22620,22621,22623,
-22624,22625,22626,22627,22628,22630,22631,22632,22633,22634,22637,22638,22639,
-22640,22641,22642,22643,22644,22645,22646,22647,22648,22649,22650,22651,22652,
-22653,22655,22658,22660,22662,22663,22664,22666,22667,22668,22669,22670,22671,
-22672,22673,22676,22677,22678,22679,22680,22683,22684,22685,22688,22689,22690,
-22691,22692,22693,22694,22695,22698,22699,22700,22701,22702,22703,22704,22705,
-22706,22707,22708,22709,22710,22711,22712,22713,22714,22715,22717,22718,22719,
-22720,22722,22723,22724,22726,22727,22728,22729,22730,22731,22732,22733,22734,
-22735,22736,22738,22739,22740,22742,22743,22744,22745,22746,22747,22748,22749,
-22750,22751,22752,22753,22754,22755,22757,22758,22759,22760,22761,22762,22765,
-22767,22769,22770,22772,22773,22775,22776,22778,22779,22780,22781,22782,22783,
-22784,22785,22787,22789,22790,22792,22793,22794,22795,22796,22798,22800,22801,
-22802,22803,22807,22808,22811,22813,22814,22816,22817,22818,22819,22822,22824,
-22828,22832,22834,22835,22837,22838,22843,22845,22846,22847,22848,22851,22853,
-22854,22858,22860,22861,22864,22866,22867,22873,22875,22876,22877,22878,22879,
-22881,22883,22884,22886,22887,22888,22889,22890,22891,22892,22893,22894,22895,
-22896,22897,22898,22901,22903,22906,22907,22908,22910,22911,22912,22917,22921,
-22923,22924,22926,22927,22928,22929,22932,22933,22936,22938,22939,22940,22941,
-22943,22944,22945,22946,22950,22951,22956,22957,22960,22961,22963,22964,22965,
-22966,22967,22968,22970,22972,22973,22975,22976,22977,22978,22979,22980,22981,
-22983,22984,22985,22988,22989,22990,22991,22997,22998,23001,23003,23006,23007,
-23008,23009,23010,23012,23014,23015,23017,23018,23019,23021,23022,23023,23024,
-23025,23026,23027,23028,23029,23030,23031,23032,23034,23036,23037,23038,23040,
-23042,23050,23051,23053,23054,23055,23056,23058,23060,23061,23062,23063,23065,
-23066,23067,23069,23070,23073,23074,23076,23078,23079,23080,23082,23083,23084,
-23085,23086,23087,23088,23091,23093,23095,23096,23097,23098,23099,23101,23102,
-23103,23105,23106,23107,23108,23109,23111,23112,23115,23116,23117,23118,23119,
-23120,23121,23122,23123,23124,23126,23127,23128,23129,23131,23132,23133,23134,
-23135,23136,23137,23139,23140,23141,23142,23144,23145,23147,23148,23149,23150,
-23151,23152,23153,23154,23155,23160,23161,23163,23164,23165,23166,23168,23169,
-23170,23171,23172,23173,23174,23175,23176,23177,23178,23179,23180,23181,23182,
-23183,23184,23185,23187,23188,23189,23190,23191,23192,23193,23196,23197,23198,
-23199,23200,23201,23202,23203,23204,23205,23206,23207,23208,23209,23211,23212,
-23213,23214,23215,23216,23217,23220,23222,23223,23225,23226,23227,23228,23229,
-23231,23232,23235,23236,23237,23238,23239,23240,23242,23243,23245,23246,23247,
-23248,23249,23251,23253,23255,23257,23258,23259,23261,23262,23263,23266,23268,
-23269,23271,23272,23274,23276,23277,23278,23279,23280,23282,23283,23284,23285,
-23286,23287,23288,23289,23290,23291,23292,23293,23294,23295,23296,23297,23298,
-23299,23300,23301,23302,23303,23304,23306,23307,23308,23309,23310,23311,23312,
-23313,23314,23315,23316,23317,23320,23321,23322,23323,23324,23325,23326,23327,
-23328,23329,23330,23331,23332,23333,23334,23335,23336,23337,23338,23339,23340,
-23341,23342,23343,23344,23345,23347,23349,23350,23352,23353,23354,23355,23356,
-23357,23358,23359,23361,23362,23363,23364,23365,23366,23367,23368,23369,23370,
-23371,23372,23373,23374,23375,23378,23382,23390,23392,23393,23399,23400,23403,
-23405,23406,23407,23410,23412,23414,23415,23416,23417,23419,23420,23422,23423,
-23426,23430,23434,23437,23438,23440,23441,23442,23444,23446,23455,23463,23464,
-23465,23468,23469,23470,23471,23473,23474,23479,23482,23483,23484,23488,23489,
-23491,23496,23497,23498,23499,23501,23502,23503,23505,23508,23509,23510,23511,
-23512,23513,23514,23515,23516,23520,23522,23523,23526,23527,23529,23530,23531,
-23532,23533,23535,23537,23538,23539,23540,23541,23542,23543,23549,23550,23552,
-23554,23555,23557,23559,23560,23563,23564,23565,23566,23568,23570,23571,23575,
-23577,23579,23582,23583,23584,23585,23587,23590,23592,23593,23594,23595,23597,
-23598,23599,23600,23602,23603,23605,23606,23607,23619,23620,23622,23623,23628,
-23629,23634,23635,23636,23638,23639,23640,23642,23643,23644,23645,23647,23650,
-23652,23655,23656,23657,23658,23659,23660,23661,23664,23666,23667,23668,23669,
-23670,23671,23672,23675,23676,23677,23678,23680,23683,23684,23685,23686,23687,
-23689,23690,23691,23694,23695,23698,23699,23701,23709,23710,23711,23712,23713,
-23716,23717,23718,23719,23720,23722,23726,23727,23728,23730,23732,23734,23737,
-23738,23739,23740,23742,23744,23746,23747,23749,23750,23751,23752,23753,23754,
-23756,23757,23758,23759,23760,23761,23763,23764,23765,23766,23767,23768,23770,
-23771,23772,23773,23774,23775,23776,23778,23779,23783,23785,23787,23788,23790,
-23791,23793,23794,23795,23796,23797,23798,23799,23800,23801,23802,23804,23805,
-23806,23807,23808,23809,23812,23813,23816,23817,23818,23819,23820,23821,23823,
-23824,23825,23826,23827,23829,23831,23832,23833,23834,23836,23837,23839,23840,
-23841,23842,23843,23845,23848,23850,23851,23852,23855,23856,23857,23858,23859,
-23861,23862,23863,23864,23865,23866,23867,23868,23871,23872,23873,23874,23875,
-23876,23877,23878,23880,23881,23885,23886,23887,23888,23889,23890,23891,23892,
-23893,23894,23895,23897,23898,23900,23902,23903,23904,23905,23906,23907,23908,
-23909,23910,23911,23912,23914,23917,23918,23920,23921,23922,23923,23925,23926,
-23927,23928,23929,23930,23931,23932,23933,23934,23935,23936,23937,23939,23940,
-23941,23942,23943,23944,23945,23946,23947,23948,23949,23950,23951,23952,23953,
-23954,23955,23956,23957,23958,23959,23960,23962,23963,23964,23966,23967,23968,
-23969,23970,23971,23972,23973,23974,23975,23976,23977,23978,23979,23980,23981,
-23982,23983,23984,23985,23986,23987,23988,23989,23990,23992,23993,23994,23995,
-23996,23997,23998,23999,24000,24001,24002,24003,24004,24006,24007,24008,24009,
-24010,24011,24012,24014,24015,24016,24017,24018,24019,24020,24021,24022,24023,
-24024,24025,24026,24028,24031,24032,24035,24036,24042,24044,24045,24048,24053,
-24054,24056,24057,24058,24059,24060,24063,24064,24068,24071,24073,24074,24075,
-24077,24078,24082,24083,24087,24094,24095,24096,24097,24098,24099,24100,24101,
-24104,24105,24106,24107,24108,24111,24112,24114,24115,24116,24117,24118,24121,
-24122,24126,24127,24128,24129,24131,24134,24135,24136,24137,24138,24139,24141,
-24142,24143,24144,24145,24146,24147,24150,24151,24152,24153,24154,24156,24157,
-24159,24160,24163,24164,24165,24166,24167,24168,24169,24170,24171,24172,24173,
-24174,24175,24176,24177,24181,24183,24185,24190,24193,24194,24195,24197,24200,
-24201,24204,24205,24206,24210,24216,24219,24221,24225,24226,24227,24228,24232,
-24233,24234,24235,24236,24238,24239,24240,24241,24242,24244,24250,24251,24252,
-24253,24255,24256,24257,24258,24259,24260,24261,24262,24263,24264,24267,24268,
-24269,24270,24271,24272,24276,24277,24279,24280,24281,24282,24284,24285,24286,
-24287,24288,24289,24290,24291,24292,24293,24294,24295,24297,24299,24300,24301,
-24302,24303,24304,24305,24306,24307,24309,24312,24313,24315,24316,24317,24325,
-24326,24327,24329,24332,24333,24334,24336,24338,24340,24342,24345,24346,24348,
-24349,24350,24353,24354,24355,24356,24360,24363,24364,24366,24368,24370,24371,
-24372,24373,24374,24375,24376,24379,24381,24382,24383,24385,24386,24387,24388,
-24389,24390,24391,24392,24393,24394,24395,24396,24397,24398,24399,24401,24404,
-24409,24410,24411,24412,24414,24415,24416,24419,24421,24423,24424,24427,24430,
-24431,24434,24436,24437,24438,24440,24442,24445,24446,24447,24451,24454,24461,
-24462,24463,24465,24467,24468,24470,24474,24475,24477,24478,24479,24480,24482,
-24483,24484,24485,24486,24487,24489,24491,24492,24495,24496,24497,24498,24499,
-24500,24502,24504,24505,24506,24507,24510,24511,24512,24513,24514,24519,24520,
-24522,24523,24526,24531,24532,24533,24538,24539,24540,24542,24543,24546,24547,
-24549,24550,24552,24553,24556,24559,24560,24562,24563,24564,24566,24567,24569,
-24570,24572,24583,24584,24585,24587,24588,24592,24593,24595,24599,24600,24602,
-24606,24607,24610,24611,24612,24620,24621,24622,24624,24625,24626,24627,24628,
-24630,24631,24632,24633,24634,24637,24638,24640,24644,24645,24646,24647,24648,
-24649,24650,24652,24654,24655,24657,24659,24660,24662,24663,24664,24667,24668,
-24670,24671,24672,24673,24677,24678,24686,24689,24690,24692,24693,24695,24702,
-24704,24705,24706,24709,24710,24711,24712,24714,24715,24718,24719,24720,24721,
-24723,24725,24727,24728,24729,24732,24734,24737,24738,24740,24741,24743,24745,
-24746,24750,24752,24755,24757,24758,24759,24761,24762,24765,24766,24767,24768,
-24769,24770,24771,24772,24775,24776,24777,24780,24781,24782,24783,24784,24786,
-24787,24788,24790,24791,24793,24795,24798,24801,24802,24803,24804,24805,24810,
-24817,24818,24821,24823,24824,24827,24828,24829,24830,24831,24834,24835,24836,
-24837,24839,24842,24843,24844,24848,24849,24850,24851,24852,24854,24855,24856,
-24857,24859,24860,24861,24862,24865,24866,24869,24872,24873,24874,24876,24877,
-24878,24879,24880,24881,24882,24883,24884,24885,24886,24887,24888,24889,24890,
-24891,24892,24893,24894,24896,24897,24898,24899,24900,24901,24902,24903,24905,
-24907,24909,24911,24912,24914,24915,24916,24918,24919,24920,24921,24922,24923,
-24924,24926,24927,24928,24929,24931,24932,24933,24934,24937,24938,24939,24940,
-24941,24942,24943,24945,24946,24947,24948,24950,24952,24953,24954,24955,24956,
-24957,24958,24959,24960,24961,24962,24963,24964,24965,24966,24967,24968,24969,
-24970,24972,24973,24975,24976,24977,24978,24979,24981,24982,24983,24984,24985,
-24986,24987,24988,24990,24991,24992,24993,24994,24995,24996,24997,24998,25002,
-25003,25005,25006,25007,25008,25009,25010,25011,25012,25013,25014,25016,25017,
-25018,25019,25020,25021,25023,25024,25025,25027,25028,25029,25030,25031,25033,
-25036,25037,25038,25039,25040,25043,25045,25046,25047,25048,25049,25050,25051,
-25052,25053,25054,25055,25056,25057,25058,25059,25060,25061,25063,25064,25065,
-25066,25067,25068,25069,25070,25071,25072,25073,25074,25075,25076,25078,25079,
-25080,25081,25082,25083,25084,25085,25086,25088,25089,25090,25091,25092,25093,
-25095,25097,25107,25108,25113,25116,25117,25118,25120,25123,25126,25127,25128,
-25129,25131,25133,25135,25136,25137,25138,25141,25142,25144,25145,25146,25147,
-25148,25154,25156,25157,25158,25162,25167,25168,25173,25174,25175,25177,25178,
-25180,25181,25182,25183,25184,25185,25186,25188,25189,25192,25201,25202,25204,
-25205,25207,25208,25210,25211,25213,25217,25218,25219,25221,25222,25223,25224,
-25227,25228,25229,25230,25231,25232,25236,25241,25244,25245,25246,25251,25254,
-25255,25257,25258,25261,25262,25263,25264,25266,25267,25268,25270,25271,25272,
-25274,25278,25280,25281,25283,25291,25295,25297,25301,25309,25310,25312,25313,
-25316,25322,25323,25328,25330,25333,25336,25337,25338,25339,25344,25347,25348,
-25349,25350,25354,25355,25356,25357,25359,25360,25362,25363,25364,25365,25367,
-25368,25369,25372,25382,25383,25385,25388,25389,25390,25392,25393,25395,25396,
-25397,25398,25399,25400,25403,25404,25406,25407,25408,25409,25412,25415,25416,
-25418,25425,25426,25427,25428,25430,25431,25432,25433,25434,25435,25436,25437,
-25440,25444,25445,25446,25448,25450,25451,25452,25455,25456,25458,25459,25460,
-25461,25464,25465,25468,25469,25470,25471,25473,25475,25476,25477,25478,25483,
-25485,25489,25491,25492,25493,25495,25497,25498,25499,25500,25501,25502,25503,
-25505,25508,25510,25515,25519,25521,25522,25525,25526,25529,25531,25533,25535,
-25536,25537,25538,25539,25541,25543,25544,25546,25547,25548,25553,25555,25556,
-25557,25559,25560,25561,25562,25563,25564,25565,25567,25570,25572,25573,25574,
-25575,25576,25579,25580,25582,25583,25584,25585,25587,25589,25591,25593,25594,
-25595,25596,25598,25603,25604,25606,25607,25608,25609,25610,25613,25614,25617,
-25618,25621,25622,25623,25624,25625,25626,25629,25631,25634,25635,25636,25637,
-25639,25640,25641,25643,25646,25647,25648,25649,25650,25651,25653,25654,25655,
-25656,25657,25659,25660,25662,25664,25666,25667,25673,25675,25676,25677,25678,
-25679,25680,25681,25683,25685,25686,25687,25689,25690,25691,25692,25693,25695,
-25696,25697,25698,25699,25700,25701,25702,25704,25706,25707,25708,25710,25711,
-25712,25713,25714,25715,25716,25717,25718,25719,25723,25724,25725,25726,25727,
-25728,25729,25731,25734,25736,25737,25738,25739,25740,25741,25742,25743,25744,
-25747,25748,25751,25752,25754,25755,25756,25757,25759,25760,25761,25762,25763,
-25765,25766,25767,25768,25770,25771,25775,25777,25778,25779,25780,25782,25785,
-25787,25789,25790,25791,25793,25795,25796,25798,25799,25800,25801,25802,25803,
-25804,25807,25809,25811,25812,25813,25814,25817,25818,25819,25820,25821,25823,
-25824,25825,25827,25829,25831,25832,25833,25834,25835,25836,25837,25838,25839,
-25840,25841,25842,25843,25844,25845,25846,25847,25848,25849,25850,25851,25852,
-25853,25854,25855,25857,25858,25859,25860,25861,25862,25863,25864,25866,25867,
-25868,25869,25870,25871,25872,25873,25875,25876,25877,25878,25879,25881,25882,
-25883,25884,25885,25886,25887,25888,25889,25890,25891,25892,25894,25895,25896,
-25897,25898,25900,25901,25904,25905,25906,25907,25911,25914,25916,25917,25920,
-25921,25922,25923,25924,25926,25927,25930,25931,25933,25934,25936,25938,25939,
-25940,25943,25944,25946,25948,25951,25952,25953,25956,25957,25959,25960,25961,
-25962,25965,25966,25967,25969,25971,25973,25974,25976,25977,25978,25979,25980,
-25981,25982,25983,25984,25985,25986,25987,25988,25989,25990,25992,25993,25994,
-25997,25998,25999,26002,26004,26005,26006,26008,26010,26013,26014,26016,26018,
-26019,26022,26024,26026,26028,26030,26033,26034,26035,26036,26037,26038,26039,
-26040,26042,26043,26046,26047,26048,26050,26055,26056,26057,26058,26061,26064,
-26065,26067,26068,26069,26072,26073,26074,26075,26076,26077,26078,26079,26081,
-26083,26084,26090,26091,26098,26099,26100,26101,26104,26105,26107,26108,26109,
-26110,26111,26113,26116,26117,26119,26120,26121,26123,26125,26128,26129,26130,
-26134,26135,26136,26138,26139,26140,26142,26145,26146,26147,26148,26150,26153,
-26154,26155,26156,26158,26160,26162,26163,26167,26168,26169,26170,26171,26173,
-26175,26176,26178,26180,26181,26182,26183,26184,26185,26186,26189,26190,26192,
-26193,26200,26201,26203,26204,26205,26206,26208,26210,26211,26213,26215,26217,
-26218,26219,26220,26221,26225,26226,26227,26229,26232,26233,26235,26236,26237,
-26239,26240,26241,26243,26245,26246,26248,26249,26250,26251,26253,26254,26255,
-26256,26258,26259,26260,26261,26264,26265,26266,26267,26268,26270,26271,26272,
-26273,26274,26275,26276,26277,26278,26281,26282,26283,26284,26285,26287,26288,
-26289,26290,26291,26293,26294,26295,26296,26298,26299,26300,26301,26303,26304,
-26305,26306,26307,26308,26309,26310,26311,26312,26313,26314,26315,26316,26317,
-26318,26319,26320,26321,26322,26323,26324,26325,26326,26327,26328,26330,26334,
-26335,26336,26337,26338,26339,26340,26341,26343,26344,26346,26347,26348,26349,
-26350,26351,26353,26357,26358,26360,26362,26363,26365,26369,26370,26371,26372,
-26373,26374,26375,26380,26382,26383,26385,26386,26387,26390,26392,26393,26394,
-26396,26398,26400,26401,26402,26403,26404,26405,26407,26409,26414,26416,26418,
-26419,26422,26423,26424,26425,26427,26428,26430,26431,26433,26436,26437,26439,
-26442,26443,26445,26450,26452,26453,26455,26456,26457,26458,26459,26461,26466,
-26467,26468,26470,26471,26475,26476,26478,26481,26484,26486,26488,26489,26490,
-26491,26493,26496,26498,26499,26501,26502,26504,26506,26508,26509,26510,26511,
-26513,26514,26515,26516,26518,26521,26523,26527,26528,26529,26532,26534,26537,
-26540,26542,26545,26546,26548,26553,26554,26555,26556,26557,26558,26559,26560,
-26562,26565,26566,26567,26568,26569,26570,26571,26572,26573,26574,26581,26582,
-26583,26587,26591,26593,26595,26596,26598,26599,26600,26602,26603,26605,26606,
-26610,26613,26614,26615,26616,26617,26618,26619,26620,26622,26625,26626,26627,
-26628,26630,26637,26640,26642,26644,26645,26648,26649,26650,26651,26652,26654,
-26655,26656,26658,26659,26660,26661,26662,26663,26664,26667,26668,26669,26670,
-26671,26672,26673,26676,26677,26678,26682,26683,26687,26695,26699,26701,26703,
-26706,26710,26711,26712,26713,26714,26715,26716,26717,26718,26719,26730,26732,
-26733,26734,26735,26736,26737,26738,26739,26741,26744,26745,26746,26747,26748,
-26749,26750,26751,26752,26754,26756,26759,26760,26761,26762,26763,26764,26765,
-26766,26768,26769,26770,26772,26773,26774,26776,26777,26778,26779,26780,26781,
-26782,26783,26784,26785,26787,26788,26789,26793,26794,26795,26796,26798,26801,
-26802,26804,26806,26807,26808,26809,26810,26811,26812,26813,26814,26815,26817,
-26819,26820,26821,26822,26823,26824,26826,26828,26830,26831,26832,26833,26835,
-26836,26838,26839,26841,26843,26844,26845,26846,26847,26849,26850,26852,26853,
-26854,26855,26856,26857,26858,26859,26860,26861,26863,26866,26867,26868,26870,
-26871,26872,26875,26877,26878,26879,26880,26882,26883,26884,26886,26887,26888,
-26889,26890,26892,26895,26897,26899,26900,26901,26902,26903,26904,26905,26906,
-26907,26908,26909,26910,26913,26914,26915,26917,26918,26919,26920,26921,26922,
-26923,26924,26926,26927,26929,26930,26931,26933,26934,26935,26936,26938,26939,
-26940,26942,26944,26945,26947,26948,26949,26950,26951,26952,26953,26954,26955,
-26956,26957,26958,26959,26960,26961,26962,26963,26965,26966,26968,26969,26971,
-26972,26975,26977,26978,26980,26981,26983,26984,26985,26986,26988,26989,26991,
-26992,26994,26995,26996,26997,26998,27002,27003,27005,27006,27007,27009,27011,
-27013,27018,27019,27020,27022,27023,27024,27025,27026,27027,27030,27031,27033,
-27034,27037,27038,27039,27040,27041,27042,27043,27044,27045,27046,27049,27050,
-27052,27054,27055,27056,27058,27059,27061,27062,27064,27065,27066,27068,27069,
-27070,27071,27072,27074,27075,27076,27077,27078,27079,27080,27081,27083,27085,
-27087,27089,27090,27091,27093,27094,27095,27096,27097,27098,27100,27101,27102,
-27105,27106,27107,27108,27109,27110,27111,27112,27113,27114,27115,27116,27118,
-27119,27120,27121,27123,27124,27125,27126,27127,27128,27129,27130,27131,27132,
-27134,27136,27137,27138,27139,27140,27141,27142,27143,27144,27145,27147,27148,
-27149,27150,27151,27152,27153,27154,27155,27156,27157,27158,27161,27162,27163,
-27164,27165,27166,27168,27170,27171,27172,27173,27174,27175,27177,27179,27180,
-27181,27182,27184,27186,27187,27188,27190,27191,27192,27193,27194,27195,27196,
-27199,27200,27201,27202,27203,27205,27206,27208,27209,27210,27211,27212,27213,
-27214,27215,27217,27218,27219,27220,27221,27222,27223,27226,27228,27229,27230,
-27231,27232,27234,27235,27236,27238,27239,27240,27241,27242,27243,27244,27245,
-27246,27247,27248,27250,27251,27252,27253,27254,27255,27256,27258,27259,27261,
-27262,27263,27265,27266,27267,27269,27270,27271,27272,27273,27274,27275,27276,
-27277,27279,27282,27283,27284,27285,27286,27288,27289,27290,27291,27292,27293,
-27294,27295,27297,27298,27299,27300,27301,27302,27303,27304,27306,27309,27310,
-27311,27312,27313,27314,27315,27316,27317,27318,27319,27320,27321,27322,27323,
-27324,27325,27326,27327,27328,27329,27330,27331,27332,27333,27334,27335,27336,
-27337,27338,27339,27340,27341,27342,27343,27344,27345,27346,27347,27348,27349,
-27350,27351,27352,27353,27354,27355,27356,27357,27358,27359,27360,27361,27362,
-27363,27364,27365,27366,27367,27368,27369,27370,27371,27372,27373,27374,27375,
-27376,27377,27378,27379,27380,27381,27382,27383,27384,27385,27386,27387,27388,
-27389,27390,27391,27392,27393,27394,27395,27396,27397,27398,27399,27400,27401,
-27402,27403,27404,27405,27406,27407,27408,27409,27410,27411,27412,27413,27414,
-27415,27416,27417,27418,27419,27420,27421,27422,27423,27429,27430,27432,27433,
-27434,27435,27436,27437,27438,27439,27440,27441,27443,27444,27445,27446,27448,
-27451,27452,27453,27455,27456,27457,27458,27460,27461,27464,27466,27467,27469,
-27470,27471,27472,27473,27474,27475,27476,27477,27478,27479,27480,27482,27483,
-27484,27485,27486,27487,27488,27489,27496,27497,27499,27500,27501,27502,27503,
-27504,27505,27506,27507,27508,27509,27510,27511,27512,27514,27517,27518,27519,
-27520,27525,27528,27532,27534,27535,27536,27537,27540,27541,27543,27544,27545,
-27548,27549,27550,27551,27552,27554,27555,27556,27557,27558,27559,27560,27561,
-27563,27564,27565,27566,27567,27568,27569,27570,27574,27576,27577,27578,27579,
-27580,27581,27582,27584,27587,27588,27590,27591,27592,27593,27594,27596,27598,
-27600,27601,27608,27610,27612,27613,27614,27615,27616,27618,27619,27620,27621,
-27622,27623,27624,27625,27628,27629,27630,27632,27633,27634,27636,27638,27639,
-27640,27642,27643,27644,27646,27647,27648,27649,27650,27651,27652,27656,27657,
-27658,27659,27660,27662,27666,27671,27676,27677,27678,27680,27683,27685,27691,
-27692,27693,27697,27699,27702,27703,27705,27706,27707,27708,27710,27711,27715,
-27716,27717,27720,27723,27724,27725,27726,27727,27729,27730,27731,27734,27736,
-27737,27738,27746,27747,27749,27750,27751,27755,27756,27757,27758,27759,27761,
-27763,27765,27767,27768,27770,27771,27772,27775,27776,27780,27783,27786,27787,
-27789,27790,27793,27794,27797,27798,27799,27800,27802,27804,27805,27806,27808,
-27810,27816,27820,27823,27824,27828,27829,27830,27831,27834,27840,27841,27842,
-27843,27846,27847,27848,27851,27853,27854,27855,27857,27858,27864,27865,27866,
-27868,27869,27871,27876,27878,27879,27881,27884,27885,27890,27892,27897,27903,
-27904,27906,27907,27909,27910,27912,27913,27914,27917,27919,27920,27921,27923,
-27924,27925,27926,27928,27932,27933,27935,27936,27937,27938,27939,27940,27942,
-27944,27945,27948,27949,27951,27952,27956,27958,27959,27960,27962,27967,27968,
-27970,27972,27977,27980,27984,27989,27990,27991,27992,27995,27997,27999,28001,
-28002,28004,28005,28007,28008,28011,28012,28013,28016,28017,28018,28019,28021,
-28022,28025,28026,28027,28029,28030,28031,28032,28033,28035,28036,28038,28039,
-28042,28043,28045,28047,28048,28050,28054,28055,28056,28057,28058,28060,28066,
-28069,28076,28077,28080,28081,28083,28084,28086,28087,28089,28090,28091,28092,
-28093,28094,28097,28098,28099,28104,28105,28106,28109,28110,28111,28112,28114,
-28115,28116,28117,28119,28122,28123,28124,28127,28130,28131,28133,28135,28136,
-28137,28138,28141,28143,28144,28146,28148,28149,28150,28152,28154,28157,28158,
-28159,28160,28161,28162,28163,28164,28166,28167,28168,28169,28171,28175,28178,
-28179,28181,28184,28185,28187,28188,28190,28191,28194,28198,28199,28200,28202,
-28204,28206,28208,28209,28211,28213,28214,28215,28217,28219,28220,28221,28222,
-28223,28224,28225,28226,28229,28230,28231,28232,28233,28234,28235,28236,28239,
-28240,28241,28242,28245,28247,28249,28250,28252,28253,28254,28256,28257,28258,
-28259,28260,28261,28262,28263,28264,28265,28266,28268,28269,28271,28272,28273,
-28274,28275,28276,28277,28278,28279,28280,28281,28282,28283,28284,28285,28288,
-28289,28290,28292,28295,28296,28298,28299,28300,28301,28302,28305,28306,28307,
-28308,28309,28310,28311,28313,28314,28315,28317,28318,28320,28321,28323,28324,
-28326,28328,28329,28331,28332,28333,28334,28336,28339,28341,28344,28345,28348,
-28350,28351,28352,28355,28356,28357,28358,28360,28361,28362,28364,28365,28366,
-28368,28370,28374,28376,28377,28379,28380,28381,28387,28391,28394,28395,28396,
-28397,28398,28399,28400,28401,28402,28403,28405,28406,28407,28408,28410,28411,
-28412,28413,28414,28415,28416,28417,28419,28420,28421,28423,28424,28426,28427,
-28428,28429,28430,28432,28433,28434,28438,28439,28440,28441,28442,28443,28444,
-28445,28446,28447,28449,28450,28451,28453,28454,28455,28456,28460,28462,28464,
-28466,28468,28469,28471,28472,28473,28474,28475,28476,28477,28479,28480,28481,
-28482,28483,28484,28485,28488,28489,28490,28492,28494,28495,28496,28497,28498,
-28499,28500,28501,28502,28503,28505,28506,28507,28509,28511,28512,28513,28515,
-28516,28517,28519,28520,28521,28522,28523,28524,28527,28528,28529,28531,28533,
-28534,28535,28537,28539,28541,28542,28543,28544,28545,28546,28547,28549,28550,
-28551,28554,28555,28559,28560,28561,28562,28563,28564,28565,28566,28567,28568,
-28569,28570,28571,28573,28574,28575,28576,28578,28579,28580,28581,28582,28584,
-28585,28586,28587,28588,28589,28590,28591,28592,28593,28594,28596,28597,28599,
-28600,28602,28603,28604,28605,28606,28607,28609,28611,28612,28613,28614,28615,
-28616,28618,28619,28620,28621,28622,28623,28624,28627,28628,28629,28630,28631,
-28632,28633,28634,28635,28636,28637,28639,28642,28643,28644,28645,28646,28647,
-28648,28649,28650,28651,28652,28653,28656,28657,28658,28659,28660,28661,28662,
-28663,28664,28665,28666,28667,28668,28669,28670,28671,28672,28673,28674,28675,
-28676,28677,28678,28679,28680,28681,28682,28683,28684,28685,28686,28687,28688,
-28690,28691,28692,28693,28694,28695,28696,28697,28700,28701,28702,28703,28704,
-28705,28706,28708,28709,28710,28711,28712,28713,28714,28715,28716,28717,28718,
-28719,28720,28721,28722,28723,28724,28726,28727,28728,28730,28731,28732,28733,
-28734,28735,28736,28737,28738,28739,28740,28741,28742,28743,28744,28745,28746,
-28747,28749,28750,28752,28753,28754,28755,28756,28757,28758,28759,28760,28761,
-28762,28763,28764,28765,28767,28768,28769,28770,28771,28772,28773,28774,28775,
-28776,28777,28778,28782,28785,28786,28787,28788,28791,28793,28794,28795,28797,
-28801,28802,28803,28804,28806,28807,28808,28811,28812,28813,28815,28816,28817,
-28819,28823,28824,28826,28827,28830,28831,28832,28833,28834,28835,28836,28837,
-28838,28839,28840,28841,28842,28848,28850,28852,28853,28854,28858,28862,28863,
-28868,28869,28870,28871,28873,28875,28876,28877,28878,28879,28880,28881,28882,
-28883,28884,28885,28886,28887,28890,28892,28893,28894,28896,28897,28898,28899,
-28901,28906,28910,28912,28913,28914,28915,28916,28917,28918,28920,28922,28923,
-28924,28926,28927,28928,28929,28930,28931,28932,28933,28934,28935,28936,28939,
-28940,28941,28942,28943,28945,28946,28948,28951,28955,28956,28957,28958,28959,
-28960,28961,28962,28963,28964,28965,28967,28968,28969,28970,28971,28972,28973,
-28974,28978,28979,28980,28981,28983,28984,28985,28986,28987,28988,28989,28990,
-28991,28992,28993,28994,28995,28996,28998,28999,29000,29001,29003,29005,29007,
-29008,29009,29010,29011,29012,29013,29014,29015,29016,29017,29018,29019,29021,
-29023,29024,29025,29026,29027,29029,29033,29034,29035,29036,29037,29039,29040,
-29041,29044,29045,29046,29047,29049,29051,29052,29054,29055,29056,29057,29058,
-29059,29061,29062,29063,29064,29065,29067,29068,29069,29070,29072,29073,29074,
-29075,29077,29078,29079,29082,29083,29084,29085,29086,29089,29090,29091,29092,
-29093,29094,29095,29097,29098,29099,29101,29102,29103,29104,29105,29106,29108,
-29110,29111,29112,29114,29115,29116,29117,29118,29119,29120,29121,29122,29124,
-29125,29126,29127,29128,29129,29130,29131,29132,29133,29135,29136,29137,29138,
-29139,29142,29143,29144,29145,29146,29147,29148,29149,29150,29151,29153,29154,
-29155,29156,29158,29160,29161,29162,29163,29164,29165,29167,29168,29169,29170,
-29171,29172,29173,29174,29175,29176,29178,29179,29180,29181,29182,29183,29184,
-29185,29186,29187,29188,29189,29191,29192,29193,29194,29195,29196,29197,29198,
-29199,29200,29201,29202,29203,29204,29205,29206,29207,29208,29209,29210,29211,
-29212,29214,29215,29216,29217,29218,29219,29220,29221,29222,29223,29225,29227,
-29229,29230,29231,29234,29235,29236,29242,29244,29246,29248,29249,29250,29251,
-29252,29253,29254,29257,29258,29259,29262,29263,29264,29265,29267,29268,29269,
-29271,29272,29274,29276,29278,29280,29283,29284,29285,29288,29290,29291,29292,
-29293,29296,29297,29299,29300,29302,29303,29304,29307,29308,29309,29314,29315,
-29317,29318,29319,29320,29321,29324,29326,29328,29329,29331,29332,29333,29334,
-29335,29336,29337,29338,29339,29340,29341,29342,29344,29345,29346,29347,29348,
-29349,29350,29351,29352,29353,29354,29355,29358,29361,29362,29363,29365,29370,
-29371,29372,29373,29374,29375,29376,29381,29382,29383,29385,29386,29387,29388,
-29391,29393,29395,29396,29397,29398,29400,29402,29403,58566,58567,58568,58569,
-58570,58571,58572,58573,58574,58575,58576,58577,58578,58579,58580,58581,58582,
-58583,58584,58585,58586,58587,58588,58589,58590,58591,58592,58593,58594,58595,
-58596,58597,58598,58599,58600,58601,58602,58603,58604,58605,58606,58607,58608,
-58609,58610,58611,58612,58613,58614,58615,58616,58617,58618,58619,58620,58621,
-58622,58623,58624,58625,58626,58627,58628,58629,58630,58631,58632,58633,58634,
-58635,58636,58637,58638,58639,58640,58641,58642,58643,58644,58645,58646,58647,
-58648,58649,58650,58651,58652,58653,58654,58655,58656,58657,58658,58659,58660,
-58661,12288,12289,12290,183,713,711,168,12291,12293,8212,65374,8214,8230,8216,
-8217,8220,8221,12308,12309,12296,12297,12298,12299,12300,12301,12302,12303,
-12310,12311,12304,12305,177,215,247,8758,8743,8744,8721,8719,8746,8745,8712,
-8759,8730,8869,8741,8736,8978,8857,8747,8750,8801,8780,8776,8765,8733,8800,
-8814,8815,8804,8805,8734,8757,8756,9794,9792,176,8242,8243,8451,65284,164,
-65504,65505,8240,167,8470,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,
-9650,8251,8594,8592,8593,8595,12307,58662,58663,58664,58665,58666,58667,58668,
-58669,58670,58671,58672,58673,58674,58675,58676,58677,58678,58679,58680,58681,
-58682,58683,58684,58685,58686,58687,58688,58689,58690,58691,58692,58693,58694,
-58695,58696,58697,58698,58699,58700,58701,58702,58703,58704,58705,58706,58707,
-58708,58709,58710,58711,58712,58713,58714,58715,58716,58717,58718,58719,58720,
-58721,58722,58723,58724,58725,58726,58727,58728,58729,58730,58731,58732,58733,
-58734,58735,58736,58737,58738,58739,58740,58741,58742,58743,58744,58745,58746,
-58747,58748,58749,58750,58751,58752,58753,58754,58755,58756,58757,8560,8561,
-8562,8563,8564,8565,8566,8567,8568,8569,59238,59239,59240,59241,59242,59243,
-9352,9353,9354,9355,9356,9357,9358,9359,9360,9361,9362,9363,9364,9365,9366,
-9367,9368,9369,9370,9371,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,
-9342,9343,9344,9345,9346,9347,9348,9349,9350,9351,9312,9313,9314,9315,9316,
-9317,9318,9319,9320,9321,8364,59245,12832,12833,12834,12835,12836,12837,12838,
-12839,12840,12841,59246,59247,8544,8545,8546,8547,8548,8549,8550,8551,8552,
-8553,8554,8555,59248,59249,58758,58759,58760,58761,58762,58763,58764,58765,
-58766,58767,58768,58769,58770,58771,58772,58773,58774,58775,58776,58777,58778,
-58779,58780,58781,58782,58783,58784,58785,58786,58787,58788,58789,58790,58791,
-58792,58793,58794,58795,58796,58797,58798,58799,58800,58801,58802,58803,58804,
-58805,58806,58807,58808,58809,58810,58811,58812,58813,58814,58815,58816,58817,
-58818,58819,58820,58821,58822,58823,58824,58825,58826,58827,58828,58829,58830,
-58831,58832,58833,58834,58835,58836,58837,58838,58839,58840,58841,58842,58843,
-58844,58845,58846,58847,58848,58849,58850,58851,58852,58853,65281,65282,65283,
-65509,65285,65286,65287,65288,65289,65290,65291,65292,65293,65294,65295,65296,
-65297,65298,65299,65300,65301,65302,65303,65304,65305,65306,65307,65308,65309,
-65310,65311,65312,65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,
-65323,65324,65325,65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,
-65336,65337,65338,65339,65340,65341,65342,65343,65344,65345,65346,65347,65348,
-65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,
-65362,65363,65364,65365,65366,65367,65368,65369,65370,65371,65372,65373,65507,
-58854,58855,58856,58857,58858,58859,58860,58861,58862,58863,58864,58865,58866,
-58867,58868,58869,58870,58871,58872,58873,58874,58875,58876,58877,58878,58879,
-58880,58881,58882,58883,58884,58885,58886,58887,58888,58889,58890,58891,58892,
-58893,58894,58895,58896,58897,58898,58899,58900,58901,58902,58903,58904,58905,
-58906,58907,58908,58909,58910,58911,58912,58913,58914,58915,58916,58917,58918,
-58919,58920,58921,58922,58923,58924,58925,58926,58927,58928,58929,58930,58931,
-58932,58933,58934,58935,58936,58937,58938,58939,58940,58941,58942,58943,58944,
-58945,58946,58947,58948,58949,12353,12354,12355,12356,12357,12358,12359,12360,
-12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,12371,12372,12373,
-12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,12384,12385,12386,
-12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,12397,12398,12399,
-12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,12410,12411,12412,
-12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,12423,12424,12425,
-12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,59250,59251,59252,
-59253,59254,59255,59256,59257,59258,59259,59260,58950,58951,58952,58953,58954,
-58955,58956,58957,58958,58959,58960,58961,58962,58963,58964,58965,58966,58967,
-58968,58969,58970,58971,58972,58973,58974,58975,58976,58977,58978,58979,58980,
-58981,58982,58983,58984,58985,58986,58987,58988,58989,58990,58991,58992,58993,
-58994,58995,58996,58997,58998,58999,59000,59001,59002,59003,59004,59005,59006,
-59007,59008,59009,59010,59011,59012,59013,59014,59015,59016,59017,59018,59019,
-59020,59021,59022,59023,59024,59025,59026,59027,59028,59029,59030,59031,59032,
-59033,59034,59035,59036,59037,59038,59039,59040,59041,59042,59043,59044,59045,
-12449,12450,12451,12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,
-12462,12463,12464,12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,
-12475,12476,12477,12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,
-12488,12489,12490,12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,
-12501,12502,12503,12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,
-12514,12515,12516,12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,
-12527,12528,12529,12530,12531,12532,12533,12534,59261,59262,59263,59264,59265,
-59266,59267,59268,59046,59047,59048,59049,59050,59051,59052,59053,59054,59055,
-59056,59057,59058,59059,59060,59061,59062,59063,59064,59065,59066,59067,59068,
-59069,59070,59071,59072,59073,59074,59075,59076,59077,59078,59079,59080,59081,
-59082,59083,59084,59085,59086,59087,59088,59089,59090,59091,59092,59093,59094,
-59095,59096,59097,59098,59099,59100,59101,59102,59103,59104,59105,59106,59107,
-59108,59109,59110,59111,59112,59113,59114,59115,59116,59117,59118,59119,59120,
-59121,59122,59123,59124,59125,59126,59127,59128,59129,59130,59131,59132,59133,
-59134,59135,59136,59137,59138,59139,59140,59141,913,914,915,916,917,918,919,
-920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,59269,
-59270,59271,59272,59273,59274,59275,59276,945,946,947,948,949,950,951,952,953,
-954,955,956,957,958,959,960,961,963,964,965,966,967,968,969,59277,59278,59279,
-59280,59281,59282,59283,65077,65078,65081,65082,65087,65088,65085,65086,65089,
-65090,65091,65092,59284,59285,65083,65084,65079,65080,65073,59286,65075,65076,
-59287,59288,59289,59290,59291,59292,59293,59294,59295,59142,59143,59144,59145,
-59146,59147,59148,59149,59150,59151,59152,59153,59154,59155,59156,59157,59158,
-59159,59160,59161,59162,59163,59164,59165,59166,59167,59168,59169,59170,59171,
-59172,59173,59174,59175,59176,59177,59178,59179,59180,59181,59182,59183,59184,
-59185,59186,59187,59188,59189,59190,59191,59192,59193,59194,59195,59196,59197,
-59198,59199,59200,59201,59202,59203,59204,59205,59206,59207,59208,59209,59210,
-59211,59212,59213,59214,59215,59216,59217,59218,59219,59220,59221,59222,59223,
-59224,59225,59226,59227,59228,59229,59230,59231,59232,59233,59234,59235,59236,
-59237,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,1052,
-1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,
-1068,1069,1070,1071,59296,59297,59298,59299,59300,59301,59302,59303,59304,
-59305,59306,59307,59308,59309,59310,1072,1073,1074,1075,1076,1077,1105,1078,
-1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,
-1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,59311,59312,59313,59314,
-59315,59316,59317,59318,59319,59320,59321,59322,59323,714,715,729,8211,8213,
-8229,8245,8453,8457,8598,8599,8600,8601,8725,8735,8739,8786,8806,8807,8895,
-9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,9564,9565,9566,
-9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,9579,9580,9581,
-9582,9583,9584,9585,9586,9587,9601,9602,9603,9604,9605,9606,9607,9608,9609,
-9610,9611,9612,9613,9614,9615,9619,9620,9621,9660,9661,9698,9699,9700,9701,
-9737,8853,12306,12317,12318,59324,59325,59326,59327,59328,59329,59330,59331,
-59332,59333,59334,257,225,462,224,275,233,283,232,299,237,464,236,333,243,466,
-242,363,250,468,249,470,472,474,476,252,234,593,59335,324,328,505,609,59337,
-59338,59339,59340,12549,12550,12551,12552,12553,12554,12555,12556,12557,12558,
-12559,12560,12561,12562,12563,12564,12565,12566,12567,12568,12569,12570,12571,
-12572,12573,12574,12575,12576,12577,12578,12579,12580,12581,12582,12583,12584,
-12585,59341,59342,59343,59344,59345,59346,59347,59348,59349,59350,59351,59352,
-59353,59354,59355,59356,59357,59358,59359,59360,59361,12321,12322,12323,12324,
-12325,12326,12327,12328,12329,12963,13198,13199,13212,13213,13214,13217,13252,
-13262,13265,13266,13269,65072,65506,65508,59362,8481,12849,59363,8208,59364,
-59365,59366,12540,12443,12444,12541,12542,12294,12445,12446,65097,65098,65099,
-65100,65101,65102,65103,65104,65105,65106,65108,65109,65110,65111,65113,65114,
-65115,65116,65117,65118,65119,65120,65121,65122,65123,65124,65125,65126,65128,
-65129,65130,65131,12350,12272,12273,12274,12275,12276,12277,12278,12279,12280,
-12281,12282,12283,12295,59380,59381,59382,59383,59384,59385,59386,59387,59388,
-59389,59390,59391,59392,9472,9473,9474,9475,9476,9477,9478,9479,9480,9481,
-9482,9483,9484,9485,9486,9487,9488,9489,9490,9491,9492,9493,9494,9495,9496,
-9497,9498,9499,9500,9501,9502,9503,9504,9505,9506,9507,9508,9509,9510,9511,
-9512,9513,9514,9515,9516,9517,9518,9519,9520,9521,9522,9523,9524,9525,9526,
-9527,9528,9529,9530,9531,9532,9533,9534,9535,9536,9537,9538,9539,9540,9541,
-9542,9543,9544,9545,9546,9547,59393,59394,59395,59396,59397,59398,59399,59400,
-59401,59402,59403,59404,59405,59406,59407,29404,29405,29407,29410,29411,29412,
-29413,29414,29415,29418,29419,29429,29430,29433,29437,29438,29439,29440,29442,
-29444,29445,29446,29447,29448,29449,29451,29452,29453,29455,29456,29457,29458,
-29460,29464,29465,29466,29471,29472,29475,29476,29478,29479,29480,29485,29487,
-29488,29490,29491,29493,29494,29498,29499,29500,29501,29504,29505,29506,29507,
-29508,29509,29510,29511,29512,29513,29514,29515,29516,29518,29519,29521,29523,
-29524,29525,29526,29528,29529,29530,29531,29532,29533,29534,29535,29537,29538,
-29539,29540,29541,29542,29543,29544,29545,29546,29547,29550,29552,29553,57344,
-57345,57346,57347,57348,57349,57350,57351,57352,57353,57354,57355,57356,57357,
-57358,57359,57360,57361,57362,57363,57364,57365,57366,57367,57368,57369,57370,
-57371,57372,57373,57374,57375,57376,57377,57378,57379,57380,57381,57382,57383,
-57384,57385,57386,57387,57388,57389,57390,57391,57392,57393,57394,57395,57396,
-57397,57398,57399,57400,57401,57402,57403,57404,57405,57406,57407,57408,57409,
-57410,57411,57412,57413,57414,57415,57416,57417,57418,57419,57420,57421,57422,
-57423,57424,57425,57426,57427,57428,57429,57430,57431,57432,57433,57434,57435,
-57436,57437,29554,29555,29556,29557,29558,29559,29560,29561,29562,29563,29564,
-29565,29567,29568,29569,29570,29571,29573,29574,29576,29578,29580,29581,29583,
-29584,29586,29587,29588,29589,29591,29592,29593,29594,29596,29597,29598,29600,
-29601,29603,29604,29605,29606,29607,29608,29610,29612,29613,29617,29620,29621,
-29622,29624,29625,29628,29629,29630,29631,29633,29635,29636,29637,29638,29639,
-29643,29644,29646,29650,29651,29652,29653,29654,29655,29656,29658,29659,29660,
-29661,29663,29665,29666,29667,29668,29670,29672,29674,29675,29676,29678,29679,
-29680,29681,29683,29684,29685,29686,29687,57438,57439,57440,57441,57442,57443,
-57444,57445,57446,57447,57448,57449,57450,57451,57452,57453,57454,57455,57456,
-57457,57458,57459,57460,57461,57462,57463,57464,57465,57466,57467,57468,57469,
-57470,57471,57472,57473,57474,57475,57476,57477,57478,57479,57480,57481,57482,
-57483,57484,57485,57486,57487,57488,57489,57490,57491,57492,57493,57494,57495,
-57496,57497,57498,57499,57500,57501,57502,57503,57504,57505,57506,57507,57508,
-57509,57510,57511,57512,57513,57514,57515,57516,57517,57518,57519,57520,57521,
-57522,57523,57524,57525,57526,57527,57528,57529,57530,57531,29688,29689,29690,
-29691,29692,29693,29694,29695,29696,29697,29698,29700,29703,29704,29707,29708,
-29709,29710,29713,29714,29715,29716,29717,29718,29719,29720,29721,29724,29725,
-29726,29727,29728,29729,29731,29732,29735,29737,29739,29741,29743,29745,29746,
-29751,29752,29753,29754,29755,29757,29758,29759,29760,29762,29763,29764,29765,
-29766,29767,29768,29769,29770,29771,29772,29773,29774,29775,29776,29777,29778,
-29779,29780,29782,29784,29789,29792,29793,29794,29795,29796,29797,29798,29799,
-29800,29801,29802,29803,29804,29806,29807,29809,29810,29811,29812,29813,29816,
-29817,29818,57532,57533,57534,57535,57536,57537,57538,57539,57540,57541,57542,
-57543,57544,57545,57546,57547,57548,57549,57550,57551,57552,57553,57554,57555,
-57556,57557,57558,57559,57560,57561,57562,57563,57564,57565,57566,57567,57568,
-57569,57570,57571,57572,57573,57574,57575,57576,57577,57578,57579,57580,57581,
-57582,57583,57584,57585,57586,57587,57588,57589,57590,57591,57592,57593,57594,
-57595,57596,57597,57598,57599,57600,57601,57602,57603,57604,57605,57606,57607,
-57608,57609,57610,57611,57612,57613,57614,57615,57616,57617,57618,57619,57620,
-57621,57622,57623,57624,57625,29819,29820,29821,29823,29826,29828,29829,29830,
-29832,29833,29834,29836,29837,29839,29841,29842,29843,29844,29845,29846,29847,
-29848,29849,29850,29851,29853,29855,29856,29857,29858,29859,29860,29861,29862,
-29866,29867,29868,29869,29870,29871,29872,29873,29874,29875,29876,29877,29878,
-29879,29880,29881,29883,29884,29885,29886,29887,29888,29889,29890,29891,29892,
-29893,29894,29895,29896,29897,29898,29899,29900,29901,29902,29903,29904,29905,
-29907,29908,29909,29910,29911,29912,29913,29914,29915,29917,29919,29921,29925,
-29927,29928,29929,29930,29931,29932,29933,29936,29937,29938,57626,57627,57628,
-57629,57630,57631,57632,57633,57634,57635,57636,57637,57638,57639,57640,57641,
-57642,57643,57644,57645,57646,57647,57648,57649,57650,57651,57652,57653,57654,
-57655,57656,57657,57658,57659,57660,57661,57662,57663,57664,57665,57666,57667,
-57668,57669,57670,57671,57672,57673,57674,57675,57676,57677,57678,57679,57680,
-57681,57682,57683,57684,57685,57686,57687,57688,57689,57690,57691,57692,57693,
-57694,57695,57696,57697,57698,57699,57700,57701,57702,57703,57704,57705,57706,
-57707,57708,57709,57710,57711,57712,57713,57714,57715,57716,57717,57718,57719,
-29939,29941,29944,29945,29946,29947,29948,29949,29950,29952,29953,29954,29955,
-29957,29958,29959,29960,29961,29962,29963,29964,29966,29968,29970,29972,29973,
-29974,29975,29979,29981,29982,29984,29985,29986,29987,29988,29990,29991,29994,
-29998,30004,30006,30009,30012,30013,30015,30017,30018,30019,30020,30022,30023,
-30025,30026,30029,30032,30033,30034,30035,30037,30038,30039,30040,30045,30046,
-30047,30048,30049,30050,30051,30052,30055,30056,30057,30059,30060,30061,30062,
-30063,30064,30065,30067,30069,30070,30071,30074,30075,30076,30077,30078,30080,
-30081,30082,30084,30085,30087,57720,57721,57722,57723,57724,57725,57726,57727,
-57728,57729,57730,57731,57732,57733,57734,57735,57736,57737,57738,57739,57740,
-57741,57742,57743,57744,57745,57746,57747,57748,57749,57750,57751,57752,57753,
-57754,57755,57756,57757,57758,57759,57760,57761,57762,57763,57764,57765,57766,
-57767,57768,57769,57770,57771,57772,57773,57774,57775,57776,57777,57778,57779,
-57780,57781,57782,57783,57784,57785,57786,57787,57788,57789,57790,57791,57792,
-57793,57794,57795,57796,57797,57798,57799,57800,57801,57802,57803,57804,57805,
-57806,57807,57808,57809,57810,57811,57812,57813,30088,30089,30090,30092,30093,
-30094,30096,30099,30101,30104,30107,30108,30110,30114,30118,30119,30120,30121,
-30122,30125,30134,30135,30138,30139,30143,30144,30145,30150,30155,30156,30158,
-30159,30160,30161,30163,30167,30169,30170,30172,30173,30175,30176,30177,30181,
-30185,30188,30189,30190,30191,30194,30195,30197,30198,30199,30200,30202,30203,
-30205,30206,30210,30212,30214,30215,30216,30217,30219,30221,30222,30223,30225,
-30226,30227,30228,30230,30234,30236,30237,30238,30241,30243,30247,30248,30252,
-30254,30255,30257,30258,30262,30263,30265,30266,30267,30269,30273,30274,30276,
-57814,57815,57816,57817,57818,57819,57820,57821,57822,57823,57824,57825,57826,
-57827,57828,57829,57830,57831,57832,57833,57834,57835,57836,57837,57838,57839,
-57840,57841,57842,57843,57844,57845,57846,57847,57848,57849,57850,57851,57852,
-57853,57854,57855,57856,57857,57858,57859,57860,57861,57862,57863,57864,57865,
-57866,57867,57868,57869,57870,57871,57872,57873,57874,57875,57876,57877,57878,
-57879,57880,57881,57882,57883,57884,57885,57886,57887,57888,57889,57890,57891,
-57892,57893,57894,57895,57896,57897,57898,57899,57900,57901,57902,57903,57904,
-57905,57906,57907,30277,30278,30279,30280,30281,30282,30283,30286,30287,30288,
-30289,30290,30291,30293,30295,30296,30297,30298,30299,30301,30303,30304,30305,
-30306,30308,30309,30310,30311,30312,30313,30314,30316,30317,30318,30320,30321,
-30322,30323,30324,30325,30326,30327,30329,30330,30332,30335,30336,30337,30339,
-30341,30345,30346,30348,30349,30351,30352,30354,30356,30357,30359,30360,30362,
-30363,30364,30365,30366,30367,30368,30369,30370,30371,30373,30374,30375,30376,
-30377,30378,30379,30380,30381,30383,30384,30387,30389,30390,30391,30392,30393,
-30394,30395,30396,30397,30398,30400,30401,30403,21834,38463,22467,25384,21710,
-21769,21696,30353,30284,34108,30702,33406,30861,29233,38552,38797,27688,23433,
-20474,25353,26263,23736,33018,26696,32942,26114,30414,20985,25942,29100,32753,
-34948,20658,22885,25034,28595,33453,25420,25170,21485,21543,31494,20843,30116,
-24052,25300,36299,38774,25226,32793,22365,38712,32610,29240,30333,26575,30334,
-25670,20336,36133,25308,31255,26001,29677,25644,25203,33324,39041,26495,29256,
-25198,25292,20276,29923,21322,21150,32458,37030,24110,26758,27036,33152,32465,
-26834,30917,34444,38225,20621,35876,33502,32990,21253,35090,21093,30404,30407,
-30409,30411,30412,30419,30421,30425,30426,30428,30429,30430,30432,30433,30434,
-30435,30436,30438,30439,30440,30441,30442,30443,30444,30445,30448,30451,30453,
-30454,30455,30458,30459,30461,30463,30464,30466,30467,30469,30470,30474,30476,
-30478,30479,30480,30481,30482,30483,30484,30485,30486,30487,30488,30491,30492,
-30493,30494,30497,30499,30500,30501,30503,30506,30507,30508,30510,30512,30513,
-30514,30515,30516,30521,30523,30525,30526,30527,30530,30532,30533,30534,30536,
-30537,30538,30539,30540,30541,30542,30543,30546,30547,30548,30549,30550,30551,
-30552,30553,30556,34180,38649,20445,22561,39281,23453,25265,25253,26292,35961,
-40077,29190,26479,30865,24754,21329,21271,36744,32972,36125,38049,20493,29384,
-22791,24811,28953,34987,22868,33519,26412,31528,23849,32503,29997,27893,36454,
-36856,36924,40763,27604,37145,31508,24444,30887,34006,34109,27605,27609,27606,
-24065,24199,30201,38381,25949,24330,24517,36767,22721,33218,36991,38491,38829,
-36793,32534,36140,25153,20415,21464,21342,36776,36777,36779,36941,26631,24426,
-33176,34920,40150,24971,21035,30250,24428,25996,28626,28392,23486,25672,20853,
-20912,26564,19993,31177,39292,28851,30557,30558,30559,30560,30564,30567,30569,
-30570,30573,30574,30575,30576,30577,30578,30579,30580,30581,30582,30583,30584,
-30586,30587,30588,30593,30594,30595,30598,30599,30600,30601,30602,30603,30607,
-30608,30611,30612,30613,30614,30615,30616,30617,30618,30619,30620,30621,30622,
-30625,30627,30628,30630,30632,30635,30637,30638,30639,30641,30642,30644,30646,
-30647,30648,30649,30650,30652,30654,30656,30657,30658,30659,30660,30661,30662,
-30663,30664,30665,30666,30667,30668,30670,30671,30672,30673,30674,30675,30676,
-30677,30678,30680,30681,30682,30685,30686,30687,30688,30689,30692,30149,24182,
-29627,33760,25773,25320,38069,27874,21338,21187,25615,38082,31636,20271,24091,
-33334,33046,33162,28196,27850,39539,25429,21340,21754,34917,22496,19981,24067,
-27493,31807,37096,24598,25830,29468,35009,26448,25165,36130,30572,36393,37319,
-24425,33756,34081,39184,21442,34453,27531,24813,24808,28799,33485,33329,20179,
-27815,34255,25805,31961,27133,26361,33609,21397,31574,20391,20876,27979,23618,
-36461,25554,21449,33580,33590,26597,30900,25661,23519,23700,24046,35815,25286,
-26612,35962,25600,25530,34633,39307,35863,32544,38130,20135,38416,39076,26124,
-29462,30694,30696,30698,30703,30704,30705,30706,30708,30709,30711,30713,30714,
-30715,30716,30723,30724,30725,30726,30727,30728,30730,30731,30734,30735,30736,
-30739,30741,30745,30747,30750,30752,30753,30754,30756,30760,30762,30763,30766,
-30767,30769,30770,30771,30773,30774,30781,30783,30785,30786,30787,30788,30790,
-30792,30793,30794,30795,30797,30799,30801,30803,30804,30808,30809,30810,30811,
-30812,30814,30815,30816,30817,30818,30819,30820,30821,30822,30823,30824,30825,
-30831,30832,30833,30834,30835,30836,30837,30838,30840,30841,30842,30843,30845,
-30846,30847,30848,30849,30850,30851,22330,23581,24120,38271,20607,32928,21378,
-25950,30021,21809,20513,36229,25220,38046,26397,22066,28526,24034,21557,28818,
-36710,25199,25764,25507,24443,28552,37108,33251,36784,23576,26216,24561,27785,
-38472,36225,34924,25745,31216,22478,27225,25104,21576,20056,31243,24809,28548,
-35802,25215,36894,39563,31204,21507,30196,25345,21273,27744,36831,24347,39536,
-32827,40831,20360,23610,36196,32709,26021,28861,20805,20914,34411,23815,23456,
-25277,37228,30068,36364,31264,24833,31609,20167,32504,30597,19985,33261,21021,
-20986,27249,21416,36487,38148,38607,28353,38500,26970,30852,30853,30854,30856,
-30858,30859,30863,30864,30866,30868,30869,30870,30873,30877,30878,30880,30882,
-30884,30886,30888,30889,30890,30891,30892,30893,30894,30895,30901,30902,30903,
-30904,30906,30907,30908,30909,30911,30912,30914,30915,30916,30918,30919,30920,
-30924,30925,30926,30927,30929,30930,30931,30934,30935,30936,30938,30939,30940,
-30941,30942,30943,30944,30945,30946,30947,30948,30949,30950,30951,30953,30954,
-30955,30957,30958,30959,30960,30961,30963,30965,30966,30968,30969,30971,30972,
-30973,30974,30975,30976,30978,30979,30980,30982,30983,30984,30985,30986,30987,
-30988,30784,20648,30679,25616,35302,22788,25571,24029,31359,26941,20256,33337,
-21912,20018,30126,31383,24162,24202,38383,21019,21561,28810,25462,38180,22402,
-26149,26943,37255,21767,28147,32431,34850,25139,32496,30133,33576,30913,38604,
-36766,24904,29943,35789,27492,21050,36176,27425,32874,33905,22257,21254,20174,
-19995,20945,31895,37259,31751,20419,36479,31713,31388,25703,23828,20652,33030,
-30209,31929,28140,32736,26449,23384,23544,30923,25774,25619,25514,25387,38169,
-25645,36798,31572,30249,25171,22823,21574,27513,20643,25140,24102,27526,20195,
-36151,34955,24453,36910,30989,30990,30991,30992,30993,30994,30996,30997,30998,
-30999,31000,31001,31002,31003,31004,31005,31007,31008,31009,31010,31011,31013,
-31014,31015,31016,31017,31018,31019,31020,31021,31022,31023,31024,31025,31026,
-31027,31029,31030,31031,31032,31033,31037,31039,31042,31043,31044,31045,31047,
-31050,31051,31052,31053,31054,31055,31056,31057,31058,31060,31061,31064,31065,
-31073,31075,31076,31078,31081,31082,31083,31084,31086,31088,31089,31090,31091,
-31092,31093,31094,31097,31099,31100,31101,31102,31103,31106,31107,31110,31111,
-31112,31113,31115,31116,31117,31118,31120,31121,31122,24608,32829,25285,20025,
-21333,37112,25528,32966,26086,27694,20294,24814,28129,35806,24377,34507,24403,
-25377,20826,33633,26723,20992,25443,36424,20498,23707,31095,23548,21040,31291,
-24764,36947,30423,24503,24471,30340,36460,28783,30331,31561,30634,20979,37011,
-22564,20302,28404,36842,25932,31515,29380,28068,32735,23265,25269,24213,22320,
-33922,31532,24093,24351,36882,32532,39072,25474,28359,30872,28857,20856,38747,
-22443,30005,20291,30008,24215,24806,22880,28096,27583,30857,21500,38613,20939,
-20993,25481,21514,38035,35843,36300,29241,30879,34678,36845,35853,21472,31123,
-31124,31125,31126,31127,31128,31129,31131,31132,31133,31134,31135,31136,31137,
-31138,31139,31140,31141,31142,31144,31145,31146,31147,31148,31149,31150,31151,
-31152,31153,31154,31156,31157,31158,31159,31160,31164,31167,31170,31172,31173,
-31175,31176,31178,31180,31182,31183,31184,31187,31188,31190,31191,31193,31194,
-31195,31196,31197,31198,31200,31201,31202,31205,31208,31210,31212,31214,31217,
-31218,31219,31220,31221,31222,31223,31225,31226,31228,31230,31231,31233,31236,
-31237,31239,31240,31241,31242,31244,31247,31248,31249,31250,31251,31253,31254,
-31256,31257,31259,31260,19969,30447,21486,38025,39030,40718,38189,23450,35746,
-20002,19996,20908,33891,25026,21160,26635,20375,24683,20923,27934,20828,25238,
-26007,38497,35910,36887,30168,37117,30563,27602,29322,29420,35835,22581,30585,
-36172,26460,38208,32922,24230,28193,22930,31471,30701,38203,27573,26029,32526,
-22534,20817,38431,23545,22697,21544,36466,25958,39039,22244,38045,30462,36929,
-25479,21702,22810,22842,22427,36530,26421,36346,33333,21057,24816,22549,34558,
-23784,40517,20420,39069,35769,23077,24694,21380,25212,36943,37122,39295,24681,
-32780,20799,32819,23572,39285,27953,20108,31261,31263,31265,31266,31268,31269,
-31270,31271,31272,31273,31274,31275,31276,31277,31278,31279,31280,31281,31282,
-31284,31285,31286,31288,31290,31294,31296,31297,31298,31299,31300,31301,31303,
-31304,31305,31306,31307,31308,31309,31310,31311,31312,31314,31315,31316,31317,
-31318,31320,31321,31322,31323,31324,31325,31326,31327,31328,31329,31330,31331,
-31332,31333,31334,31335,31336,31337,31338,31339,31340,31341,31342,31343,31345,
-31346,31347,31349,31355,31356,31357,31358,31362,31365,31367,31369,31370,31371,
-31372,31374,31375,31376,31379,31380,31385,31386,31387,31390,31393,31394,36144,
-21457,32602,31567,20240,20047,38400,27861,29648,34281,24070,30058,32763,27146,
-30718,38034,32321,20961,28902,21453,36820,33539,36137,29359,39277,27867,22346,
-33459,26041,32938,25151,38450,22952,20223,35775,32442,25918,33778,38750,21857,
-39134,32933,21290,35837,21536,32954,24223,27832,36153,33452,37210,21545,27675,
-20998,32439,22367,28954,27774,31881,22859,20221,24575,24868,31914,20016,23553,
-26539,34562,23792,38155,39118,30127,28925,36898,20911,32541,35773,22857,20964,
-20315,21542,22827,25975,32932,23413,25206,25282,36752,24133,27679,31526,20239,
-20440,26381,31395,31396,31399,31401,31402,31403,31406,31407,31408,31409,31410,
-31412,31413,31414,31415,31416,31417,31418,31419,31420,31421,31422,31424,31425,
-31426,31427,31428,31429,31430,31431,31432,31433,31434,31436,31437,31438,31439,
-31440,31441,31442,31443,31444,31445,31447,31448,31450,31451,31452,31453,31457,
-31458,31460,31463,31464,31465,31466,31467,31468,31470,31472,31473,31474,31475,
-31476,31477,31478,31479,31480,31483,31484,31486,31488,31489,31490,31493,31495,
-31497,31500,31501,31502,31504,31506,31507,31510,31511,31512,31514,31516,31517,
-31519,31521,31522,31523,31527,31529,31533,28014,28074,31119,34993,24343,29995,
-25242,36741,20463,37340,26023,33071,33105,24220,33104,36212,21103,35206,36171,
-22797,20613,20184,38428,29238,33145,36127,23500,35747,38468,22919,32538,21648,
-22134,22030,35813,25913,27010,38041,30422,28297,24178,29976,26438,26577,31487,
-32925,36214,24863,31174,25954,36195,20872,21018,38050,32568,32923,32434,23703,
-28207,26464,31705,30347,39640,33167,32660,31957,25630,38224,31295,21578,21733,
-27468,25601,25096,40509,33011,30105,21106,38761,33883,26684,34532,38401,38548,
-38124,20010,21508,32473,26681,36319,32789,26356,24218,32697,31535,31536,31538,
-31540,31541,31542,31543,31545,31547,31549,31551,31552,31553,31554,31555,31556,
-31558,31560,31562,31565,31566,31571,31573,31575,31577,31580,31582,31583,31585,
-31587,31588,31589,31590,31591,31592,31593,31594,31595,31596,31597,31599,31600,
-31603,31604,31606,31608,31610,31612,31613,31615,31617,31618,31619,31620,31622,
-31623,31624,31625,31626,31627,31628,31630,31631,31633,31634,31635,31638,31640,
-31641,31642,31643,31646,31647,31648,31651,31652,31653,31662,31663,31664,31666,
-31667,31669,31670,31671,31673,31674,31675,31676,31677,31678,31679,31680,31682,
-31683,31684,22466,32831,26775,24037,25915,21151,24685,40858,20379,36524,20844,
-23467,24339,24041,27742,25329,36129,20849,38057,21246,27807,33503,29399,22434,
-26500,36141,22815,36764,33735,21653,31629,20272,27837,23396,22993,40723,21476,
-34506,39592,35895,32929,25925,39038,22266,38599,21038,29916,21072,23521,25346,
-35074,20054,25296,24618,26874,20851,23448,20896,35266,31649,39302,32592,24815,
-28748,36143,20809,24191,36891,29808,35268,22317,30789,24402,40863,38394,36712,
-39740,35809,30328,26690,26588,36330,36149,21053,36746,28378,26829,38149,37101,
-22269,26524,35065,36807,21704,31685,31688,31689,31690,31691,31693,31694,31695,
-31696,31698,31700,31701,31702,31703,31704,31707,31708,31710,31711,31712,31714,
-31715,31716,31719,31720,31721,31723,31724,31725,31727,31728,31730,31731,31732,
-31733,31734,31736,31737,31738,31739,31741,31743,31744,31745,31746,31747,31748,
-31749,31750,31752,31753,31754,31757,31758,31760,31761,31762,31763,31764,31765,
-31767,31768,31769,31770,31771,31772,31773,31774,31776,31777,31778,31779,31780,
-31781,31784,31785,31787,31788,31789,31790,31791,31792,31793,31794,31795,31796,
-31797,31798,31799,31801,31802,31803,31804,31805,31806,31810,39608,23401,28023,
-27686,20133,23475,39559,37219,25000,37039,38889,21547,28085,23506,20989,21898,
-32597,32752,25788,25421,26097,25022,24717,28938,27735,27721,22831,26477,33322,
-22741,22158,35946,27627,37085,22909,32791,21495,28009,21621,21917,33655,33743,
-26680,31166,21644,20309,21512,30418,35977,38402,27827,28088,36203,35088,40548,
-36154,22079,40657,30165,24456,29408,24680,21756,20136,27178,34913,24658,36720,
-21700,28888,34425,40511,27946,23439,24344,32418,21897,20399,29492,21564,21402,
-20505,21518,21628,20046,24573,29786,22774,33899,32993,34676,29392,31946,28246,
-31811,31812,31813,31814,31815,31816,31817,31818,31819,31820,31822,31823,31824,
-31825,31826,31827,31828,31829,31830,31831,31832,31833,31834,31835,31836,31837,
-31838,31839,31840,31841,31842,31843,31844,31845,31846,31847,31848,31849,31850,
-31851,31852,31853,31854,31855,31856,31857,31858,31861,31862,31863,31864,31865,
-31866,31870,31871,31872,31873,31874,31875,31876,31877,31878,31879,31880,31882,
-31883,31884,31885,31886,31887,31888,31891,31892,31894,31897,31898,31899,31904,
-31905,31907,31910,31911,31912,31913,31915,31916,31917,31919,31920,31924,31925,
-31926,31927,31928,31930,31931,24359,34382,21804,25252,20114,27818,25143,33457,
-21719,21326,29502,28369,30011,21010,21270,35805,27088,24458,24576,28142,22351,
-27426,29615,26707,36824,32531,25442,24739,21796,30186,35938,28949,28067,23462,
-24187,33618,24908,40644,30970,34647,31783,30343,20976,24822,29004,26179,24140,
-24653,35854,28784,25381,36745,24509,24674,34516,22238,27585,24724,24935,21321,
-24800,26214,36159,31229,20250,28905,27719,35763,35826,32472,33636,26127,23130,
-39746,27985,28151,35905,27963,20249,28779,33719,25110,24785,38669,36135,31096,
-20987,22334,22522,26426,30072,31293,31215,31637,31935,31936,31938,31939,31940,
-31942,31945,31947,31950,31951,31952,31953,31954,31955,31956,31960,31962,31963,
-31965,31966,31969,31970,31971,31972,31973,31974,31975,31977,31978,31979,31980,
-31981,31982,31984,31985,31986,31987,31988,31989,31990,31991,31993,31994,31996,
-31997,31998,31999,32000,32001,32002,32003,32004,32005,32006,32007,32008,32009,
-32011,32012,32013,32014,32015,32016,32017,32018,32019,32020,32021,32022,32023,
-32024,32025,32026,32027,32028,32029,32030,32031,32033,32035,32036,32037,32038,
-32040,32041,32042,32044,32045,32046,32048,32049,32050,32051,32052,32053,32054,
-32908,39269,36857,28608,35749,40481,23020,32489,32521,21513,26497,26840,36753,
-31821,38598,21450,24613,30142,27762,21363,23241,32423,25380,20960,33034,24049,
-34015,25216,20864,23395,20238,31085,21058,24760,27982,23492,23490,35745,35760,
-26082,24524,38469,22931,32487,32426,22025,26551,22841,20339,23478,21152,33626,
-39050,36158,30002,38078,20551,31292,20215,26550,39550,23233,27516,30417,22362,
-23574,31546,38388,29006,20860,32937,33392,22904,32516,33575,26816,26604,30897,
-30839,25315,25441,31616,20461,21098,20943,33616,27099,37492,36341,36145,35265,
-38190,31661,20214,32055,32056,32057,32058,32059,32060,32061,32062,32063,32064,
-32065,32066,32067,32068,32069,32070,32071,32072,32073,32074,32075,32076,32077,
-32078,32079,32080,32081,32082,32083,32084,32085,32086,32087,32088,32089,32090,
-32091,32092,32093,32094,32095,32096,32097,32098,32099,32100,32101,32102,32103,
-32104,32105,32106,32107,32108,32109,32111,32112,32113,32114,32115,32116,32117,
-32118,32120,32121,32122,32123,32124,32125,32126,32127,32128,32129,32130,32131,
-32132,32133,32134,32135,32136,32137,32138,32139,32140,32141,32142,32143,32144,
-32145,32146,32147,32148,32149,32150,32151,32152,20581,33328,21073,39279,28176,
-28293,28071,24314,20725,23004,23558,27974,27743,30086,33931,26728,22870,35762,
-21280,37233,38477,34121,26898,30977,28966,33014,20132,37066,27975,39556,23047,
-22204,25605,38128,30699,20389,33050,29409,35282,39290,32564,32478,21119,25945,
-37237,36735,36739,21483,31382,25581,25509,30342,31224,34903,38454,25130,21163,
-33410,26708,26480,25463,30571,31469,27905,32467,35299,22992,25106,34249,33445,
-30028,20511,20171,30117,35819,23626,24062,31563,26020,37329,20170,27941,35167,
-32039,38182,20165,35880,36827,38771,26187,31105,36817,28908,28024,32153,32154,
-32155,32156,32157,32158,32159,32160,32161,32162,32163,32164,32165,32167,32168,
-32169,32170,32171,32172,32173,32175,32176,32177,32178,32179,32180,32181,32182,
-32183,32184,32185,32186,32187,32188,32189,32190,32191,32192,32193,32194,32195,
-32196,32197,32198,32199,32200,32201,32202,32203,32204,32205,32206,32207,32208,
-32209,32210,32211,32212,32213,32214,32215,32216,32217,32218,32219,32220,32221,
-32222,32223,32224,32225,32226,32227,32228,32229,32230,32231,32232,32233,32234,
-32235,32236,32237,32238,32239,32240,32241,32242,32243,32244,32245,32246,32247,
-32248,32249,32250,23613,21170,33606,20834,33550,30555,26230,40120,20140,24778,
-31934,31923,32463,20117,35686,26223,39048,38745,22659,25964,38236,24452,30153,
-38742,31455,31454,20928,28847,31384,25578,31350,32416,29590,38893,20037,28792,
-20061,37202,21417,25937,26087,33276,33285,21646,23601,30106,38816,25304,29401,
-30141,23621,39545,33738,23616,21632,30697,20030,27822,32858,25298,25454,24040,
-20855,36317,36382,38191,20465,21477,24807,28844,21095,25424,40515,23071,20518,
-30519,21367,32482,25733,25899,25225,25496,20500,29237,35273,20915,35776,32477,
-22343,33740,38055,20891,21531,23803,32251,32252,32253,32254,32255,32256,32257,
-32258,32259,32260,32261,32262,32263,32264,32265,32266,32267,32268,32269,32270,
-32271,32272,32273,32274,32275,32276,32277,32278,32279,32280,32281,32282,32283,
-32284,32285,32286,32287,32288,32289,32290,32291,32292,32293,32294,32295,32296,
-32297,32298,32299,32300,32301,32302,32303,32304,32305,32306,32307,32308,32309,
-32310,32311,32312,32313,32314,32316,32317,32318,32319,32320,32322,32323,32324,
-32325,32326,32328,32329,32330,32331,32332,32333,32334,32335,32336,32337,32338,
-32339,32340,32341,32342,32343,32344,32345,32346,32347,32348,32349,20426,31459,
-27994,37089,39567,21888,21654,21345,21679,24320,25577,26999,20975,24936,21002,
-22570,21208,22350,30733,30475,24247,24951,31968,25179,25239,20130,28821,32771,
-25335,28900,38752,22391,33499,26607,26869,30933,39063,31185,22771,21683,21487,
-28212,20811,21051,23458,35838,32943,21827,22438,24691,22353,21549,31354,24656,
-23380,25511,25248,21475,25187,23495,26543,21741,31391,33510,37239,24211,35044,
-22840,22446,25358,36328,33007,22359,31607,20393,24555,23485,27454,21281,31568,
-29378,26694,30719,30518,26103,20917,20111,30420,23743,31397,33909,22862,39745,
-20608,32350,32351,32352,32353,32354,32355,32356,32357,32358,32359,32360,32361,
-32362,32363,32364,32365,32366,32367,32368,32369,32370,32371,32372,32373,32374,
-32375,32376,32377,32378,32379,32380,32381,32382,32383,32384,32385,32387,32388,
-32389,32390,32391,32392,32393,32394,32395,32396,32397,32398,32399,32400,32401,
-32402,32403,32404,32405,32406,32407,32408,32409,32410,32412,32413,32414,32430,
-32436,32443,32444,32470,32484,32492,32505,32522,32528,32542,32567,32569,32571,
-32572,32573,32574,32575,32576,32577,32579,32582,32583,32584,32585,32586,32587,
-32588,32589,32590,32591,32594,32595,39304,24871,28291,22372,26118,25414,22256,
-25324,25193,24275,38420,22403,25289,21895,34593,33098,36771,21862,33713,26469,
-36182,34013,23146,26639,25318,31726,38417,20848,28572,35888,25597,35272,25042,
-32518,28866,28389,29701,27028,29436,24266,37070,26391,28010,25438,21171,29282,
-32769,20332,23013,37226,28889,28061,21202,20048,38647,38253,34174,30922,32047,
-20769,22418,25794,32907,31867,27882,26865,26974,20919,21400,26792,29313,40654,
-31729,29432,31163,28435,29702,26446,37324,40100,31036,33673,33620,21519,26647,
-20029,21385,21169,30782,21382,21033,20616,20363,20432,32598,32601,32603,32604,
-32605,32606,32608,32611,32612,32613,32614,32615,32619,32620,32621,32623,32624,
-32627,32629,32630,32631,32632,32634,32635,32636,32637,32639,32640,32642,32643,
-32644,32645,32646,32647,32648,32649,32651,32653,32655,32656,32657,32658,32659,
-32661,32662,32663,32664,32665,32667,32668,32672,32674,32675,32677,32678,32680,
-32681,32682,32683,32684,32685,32686,32689,32691,32692,32693,32694,32695,32698,
-32699,32702,32704,32706,32707,32708,32710,32711,32712,32713,32715,32717,32719,
-32720,32721,32722,32723,32726,32727,32729,32730,32731,32732,32733,32734,32738,
-32739,30178,31435,31890,27813,38582,21147,29827,21737,20457,32852,33714,36830,
-38256,24265,24604,28063,24088,25947,33080,38142,24651,28860,32451,31918,20937,
-26753,31921,33391,20004,36742,37327,26238,20142,35845,25769,32842,20698,30103,
-29134,23525,36797,28518,20102,25730,38243,24278,26009,21015,35010,28872,21155,
-29454,29747,26519,30967,38678,20020,37051,40158,28107,20955,36161,21533,25294,
-29618,33777,38646,40836,38083,20278,32666,20940,28789,38517,23725,39046,21478,
-20196,28316,29705,27060,30827,39311,30041,21016,30244,27969,26611,20845,40857,
-32843,21657,31548,31423,32740,32743,32744,32746,32747,32748,32749,32751,32754,
-32756,32757,32758,32759,32760,32761,32762,32765,32766,32767,32770,32775,32776,
-32777,32778,32782,32783,32785,32787,32794,32795,32797,32798,32799,32801,32803,
-32804,32811,32812,32813,32814,32815,32816,32818,32820,32825,32826,32828,32830,
-32832,32833,32836,32837,32839,32840,32841,32846,32847,32848,32849,32851,32853,
-32854,32855,32857,32859,32860,32861,32862,32863,32864,32865,32866,32867,32868,
-32869,32870,32871,32872,32875,32876,32877,32878,32879,32880,32882,32883,32884,
-32885,32886,32887,32888,32889,32890,32891,32892,32893,38534,22404,25314,38471,
-27004,23044,25602,31699,28431,38475,33446,21346,39045,24208,28809,25523,21348,
-34383,40065,40595,30860,38706,36335,36162,40575,28510,31108,24405,38470,25134,
-39540,21525,38109,20387,26053,23653,23649,32533,34385,27695,24459,29575,28388,
-32511,23782,25371,23402,28390,21365,20081,25504,30053,25249,36718,20262,20177,
-27814,32438,35770,33821,34746,32599,36923,38179,31657,39585,35064,33853,27931,
-39558,32476,22920,40635,29595,30721,34434,39532,39554,22043,21527,22475,20080,
-40614,21334,36808,33033,30610,39314,34542,28385,34067,26364,24930,28459,32894,
-32897,32898,32901,32904,32906,32909,32910,32911,32912,32913,32914,32916,32917,
-32919,32921,32926,32931,32934,32935,32936,32940,32944,32947,32949,32950,32952,
-32953,32955,32965,32967,32968,32969,32970,32971,32975,32976,32977,32978,32979,
-32980,32981,32984,32991,32992,32994,32995,32998,33006,33013,33015,33017,33019,
-33022,33023,33024,33025,33027,33028,33029,33031,33032,33035,33036,33045,33047,
-33049,33051,33052,33053,33055,33056,33057,33058,33059,33060,33061,33062,33063,
-33064,33065,33066,33067,33069,33070,33072,33075,33076,33077,33079,33081,33082,
-33083,33084,33085,33087,35881,33426,33579,30450,27667,24537,33725,29483,33541,
-38170,27611,30683,38086,21359,33538,20882,24125,35980,36152,20040,29611,26522,
-26757,37238,38665,29028,27809,30473,23186,38209,27599,32654,26151,23504,22969,
-23194,38376,38391,20204,33804,33945,27308,30431,38192,29467,26790,23391,30511,
-37274,38753,31964,36855,35868,24357,31859,31192,35269,27852,34588,23494,24130,
-26825,30496,32501,20885,20813,21193,23081,32517,38754,33495,25551,30596,34256,
-31186,28218,24217,22937,34065,28781,27665,25279,30399,25935,24751,38397,26126,
-34719,40483,38125,21517,21629,35884,25720,33088,33089,33090,33091,33092,33093,
-33095,33097,33101,33102,33103,33106,33110,33111,33112,33115,33116,33117,33118,
-33119,33121,33122,33123,33124,33126,33128,33130,33131,33132,33135,33138,33139,
-33141,33142,33143,33144,33153,33155,33156,33157,33158,33159,33161,33163,33164,
-33165,33166,33168,33170,33171,33172,33173,33174,33175,33177,33178,33182,33183,
-33184,33185,33186,33188,33189,33191,33193,33195,33196,33197,33198,33199,33200,
-33201,33202,33204,33205,33206,33207,33208,33209,33212,33213,33214,33215,33220,
-33221,33223,33224,33225,33227,33229,33230,33231,33232,33233,33234,33235,25721,
-34321,27169,33180,30952,25705,39764,25273,26411,33707,22696,40664,27819,28448,
-23518,38476,35851,29279,26576,25287,29281,20137,22982,27597,22675,26286,24149,
-21215,24917,26408,30446,30566,29287,31302,25343,21738,21584,38048,37027,23068,
-32435,27670,20035,22902,32784,22856,21335,30007,38590,22218,25376,33041,24700,
-38393,28118,21602,39297,20869,23273,33021,22958,38675,20522,27877,23612,25311,
-20320,21311,33147,36870,28346,34091,25288,24180,30910,25781,25467,24565,23064,
-37247,40479,23615,25423,32834,23421,21870,38218,38221,28037,24744,26592,29406,
-20957,23425,33236,33237,33238,33239,33240,33241,33242,33243,33244,33245,33246,
-33247,33248,33249,33250,33252,33253,33254,33256,33257,33259,33262,33263,33264,
-33265,33266,33269,33270,33271,33272,33273,33274,33277,33279,33283,33287,33288,
-33289,33290,33291,33294,33295,33297,33299,33301,33302,33303,33304,33305,33306,
-33309,33312,33316,33317,33318,33319,33321,33326,33330,33338,33340,33341,33343,
-33344,33345,33346,33347,33349,33350,33352,33354,33356,33357,33358,33360,33361,
-33362,33363,33364,33365,33366,33367,33369,33371,33372,33373,33374,33376,33377,
-33378,33379,33380,33381,33382,33383,33385,25319,27870,29275,25197,38062,32445,
-33043,27987,20892,24324,22900,21162,24594,22899,26262,34384,30111,25386,25062,
-31983,35834,21734,27431,40485,27572,34261,21589,20598,27812,21866,36276,29228,
-24085,24597,29750,25293,25490,29260,24472,28227,27966,25856,28504,30424,30928,
-30460,30036,21028,21467,20051,24222,26049,32810,32982,25243,21638,21032,28846,
-34957,36305,27873,21624,32986,22521,35060,36180,38506,37197,20329,27803,21943,
-30406,30768,25256,28921,28558,24429,34028,26842,30844,31735,33192,26379,40527,
-25447,30896,22383,30738,38713,25209,25259,21128,29749,27607,33386,33387,33388,
-33389,33393,33397,33398,33399,33400,33403,33404,33408,33409,33411,33413,33414,
-33415,33417,33420,33424,33427,33428,33429,33430,33434,33435,33438,33440,33442,
-33443,33447,33458,33461,33462,33466,33467,33468,33471,33472,33474,33475,33477,
-33478,33481,33488,33494,33497,33498,33501,33506,33511,33512,33513,33514,33516,
-33517,33518,33520,33522,33523,33525,33526,33528,33530,33532,33533,33534,33535,
-33536,33546,33547,33549,33552,33554,33555,33558,33560,33561,33565,33566,33567,
-33568,33569,33570,33571,33572,33573,33574,33577,33578,33582,33584,33586,33591,
-33595,33597,21860,33086,30130,30382,21305,30174,20731,23617,35692,31687,20559,
-29255,39575,39128,28418,29922,31080,25735,30629,25340,39057,36139,21697,32856,
-20050,22378,33529,33805,24179,20973,29942,35780,23631,22369,27900,39047,23110,
-30772,39748,36843,31893,21078,25169,38138,20166,33670,33889,33769,33970,22484,
-26420,22275,26222,28006,35889,26333,28689,26399,27450,26646,25114,22971,19971,
-20932,28422,26578,27791,20854,26827,22855,27495,30054,23822,33040,40784,26071,
-31048,31041,39569,36215,23682,20062,20225,21551,22865,30732,22120,27668,36804,
-24323,27773,27875,35755,25488,33598,33599,33601,33602,33604,33605,33608,33610,
-33611,33612,33613,33614,33619,33621,33622,33623,33624,33625,33629,33634,33648,
-33649,33650,33651,33652,33653,33654,33657,33658,33662,33663,33664,33665,33666,
-33667,33668,33671,33672,33674,33675,33676,33677,33679,33680,33681,33684,33685,
-33686,33687,33689,33690,33693,33695,33697,33698,33699,33700,33701,33702,33703,
-33708,33709,33710,33711,33717,33723,33726,33727,33730,33731,33732,33734,33736,
-33737,33739,33741,33742,33744,33745,33746,33747,33749,33751,33753,33754,33755,
-33758,33762,33763,33764,33766,33767,33768,33771,33772,33773,24688,27965,29301,
-25190,38030,38085,21315,36801,31614,20191,35878,20094,40660,38065,38067,21069,
-28508,36963,27973,35892,22545,23884,27424,27465,26538,21595,33108,32652,22681,
-34103,24378,25250,27207,38201,25970,24708,26725,30631,20052,20392,24039,38808,
-25772,32728,23789,20431,31373,20999,33540,19988,24623,31363,38054,20405,20146,
-31206,29748,21220,33465,25810,31165,23517,27777,38738,36731,27682,20542,21375,
-28165,25806,26228,27696,24773,39031,35831,24198,29756,31351,31179,19992,37041,
-29699,27714,22234,37195,27845,36235,21306,34502,26354,36527,23624,39537,28192,
-33774,33775,33779,33780,33781,33782,33783,33786,33787,33788,33790,33791,33792,
-33794,33797,33799,33800,33801,33802,33808,33810,33811,33812,33813,33814,33815,
-33817,33818,33819,33822,33823,33824,33825,33826,33827,33833,33834,33835,33836,
-33837,33838,33839,33840,33842,33843,33844,33845,33846,33847,33849,33850,33851,
-33854,33855,33856,33857,33858,33859,33860,33861,33863,33864,33865,33866,33867,
-33868,33869,33870,33871,33872,33874,33875,33876,33877,33878,33880,33885,33886,
-33887,33888,33890,33892,33893,33894,33895,33896,33898,33902,33903,33904,33906,
-33908,33911,33913,33915,33916,21462,23094,40843,36259,21435,22280,39079,26435,
-37275,27849,20840,30154,25331,29356,21048,21149,32570,28820,30264,21364,40522,
-27063,30830,38592,35033,32676,28982,29123,20873,26579,29924,22756,25880,22199,
-35753,39286,25200,32469,24825,28909,22764,20161,20154,24525,38887,20219,35748,
-20995,22922,32427,25172,20173,26085,25102,33592,33993,33635,34701,29076,28342,
-23481,32466,20887,25545,26580,32905,33593,34837,20754,23418,22914,36785,20083,
-27741,20837,35109,36719,38446,34122,29790,38160,38384,28070,33509,24369,25746,
-27922,33832,33134,40131,22622,36187,19977,21441,33917,33918,33919,33920,33921,
-33923,33924,33925,33926,33930,33933,33935,33936,33937,33938,33939,33940,33941,
-33942,33944,33946,33947,33949,33950,33951,33952,33954,33955,33956,33957,33958,
-33959,33960,33961,33962,33963,33964,33965,33966,33968,33969,33971,33973,33974,
-33975,33979,33980,33982,33984,33986,33987,33989,33990,33991,33992,33995,33996,
-33998,33999,34002,34004,34005,34007,34008,34009,34010,34011,34012,34014,34017,
-34018,34020,34023,34024,34025,34026,34027,34029,34030,34031,34033,34034,34035,
-34036,34037,34038,34039,34040,34041,34042,34043,34045,34046,34048,34049,34050,
-20254,25955,26705,21971,20007,25620,39578,25195,23234,29791,33394,28073,26862,
-20711,33678,30722,26432,21049,27801,32433,20667,21861,29022,31579,26194,29642,
-33515,26441,23665,21024,29053,34923,38378,38485,25797,36193,33203,21892,27733,
-25159,32558,22674,20260,21830,36175,26188,19978,23578,35059,26786,25422,31245,
-28903,33421,21242,38902,23569,21736,37045,32461,22882,36170,34503,33292,33293,
-36198,25668,23556,24913,28041,31038,35774,30775,30003,21627,20280,36523,28145,
-23072,32453,31070,27784,23457,23158,29978,32958,24910,28183,22768,29983,29989,
-29298,21319,32499,34051,34052,34053,34054,34055,34056,34057,34058,34059,34061,
-34062,34063,34064,34066,34068,34069,34070,34072,34073,34075,34076,34077,34078,
-34080,34082,34083,34084,34085,34086,34087,34088,34089,34090,34093,34094,34095,
-34096,34097,34098,34099,34100,34101,34102,34110,34111,34112,34113,34114,34116,
-34117,34118,34119,34123,34124,34125,34126,34127,34128,34129,34130,34131,34132,
-34133,34135,34136,34138,34139,34140,34141,34143,34144,34145,34146,34147,34149,
-34150,34151,34153,34154,34155,34156,34157,34158,34159,34160,34161,34163,34165,
-34166,34167,34168,34172,34173,34175,34176,34177,30465,30427,21097,32988,22307,
-24072,22833,29422,26045,28287,35799,23608,34417,21313,30707,25342,26102,20160,
-39135,34432,23454,35782,21490,30690,20351,23630,39542,22987,24335,31034,22763,
-19990,26623,20107,25325,35475,36893,21183,26159,21980,22124,36866,20181,20365,
-37322,39280,27663,24066,24643,23460,35270,35797,25910,25163,39318,23432,23551,
-25480,21806,21463,30246,20861,34092,26530,26803,27530,25234,36755,21460,33298,
-28113,30095,20070,36174,23408,29087,34223,26257,26329,32626,34560,40653,40736,
-23646,26415,36848,26641,26463,25101,31446,22661,24246,25968,28465,34178,34179,
-34182,34184,34185,34186,34187,34188,34189,34190,34192,34193,34194,34195,34196,
-34197,34198,34199,34200,34201,34202,34205,34206,34207,34208,34209,34210,34211,
-34213,34214,34215,34217,34219,34220,34221,34225,34226,34227,34228,34229,34230,
-34232,34234,34235,34236,34237,34238,34239,34240,34242,34243,34244,34245,34246,
-34247,34248,34250,34251,34252,34253,34254,34257,34258,34260,34262,34263,34264,
-34265,34266,34267,34269,34270,34271,34272,34273,34274,34275,34277,34278,34279,
-34280,34282,34283,34284,34285,34286,34287,34288,34289,34290,34291,34292,34293,
-34294,34295,34296,24661,21047,32781,25684,34928,29993,24069,26643,25332,38684,
-21452,29245,35841,27700,30561,31246,21550,30636,39034,33308,35828,30805,26388,
-28865,26031,25749,22070,24605,31169,21496,19997,27515,32902,23546,21987,22235,
-20282,20284,39282,24051,26494,32824,24578,39042,36865,23435,35772,35829,25628,
-33368,25822,22013,33487,37221,20439,32032,36895,31903,20723,22609,28335,23487,
-35785,32899,37240,33948,31639,34429,38539,38543,32485,39635,30862,23681,31319,
-36930,38567,31071,23385,25439,31499,34001,26797,21766,32553,29712,32034,38145,
-25152,22604,20182,23427,22905,22612,34297,34298,34300,34301,34302,34304,34305,
-34306,34307,34308,34310,34311,34312,34313,34314,34315,34316,34317,34318,34319,
-34320,34322,34323,34324,34325,34327,34328,34329,34330,34331,34332,34333,34334,
-34335,34336,34337,34338,34339,34340,34341,34342,34344,34346,34347,34348,34349,
-34350,34351,34352,34353,34354,34355,34356,34357,34358,34359,34361,34362,34363,
-34365,34366,34367,34368,34369,34370,34371,34372,34373,34374,34375,34376,34377,
-34378,34379,34380,34386,34387,34389,34390,34391,34392,34393,34395,34396,34397,
-34399,34400,34401,34403,34404,34405,34406,34407,34408,34409,34410,29549,25374,
-36427,36367,32974,33492,25260,21488,27888,37214,22826,24577,27760,22349,25674,
-36138,30251,28393,22363,27264,30192,28525,35885,35848,22374,27631,34962,30899,
-25506,21497,28845,27748,22616,25642,22530,26848,33179,21776,31958,20504,36538,
-28108,36255,28907,25487,28059,28372,32486,33796,26691,36867,28120,38518,35752,
-22871,29305,34276,33150,30140,35466,26799,21076,36386,38161,25552,39064,36420,
-21884,20307,26367,22159,24789,28053,21059,23625,22825,28155,22635,30000,29980,
-24684,33300,33094,25361,26465,36834,30522,36339,36148,38081,24086,21381,21548,
-28867,34413,34415,34416,34418,34419,34420,34421,34422,34423,34424,34435,34436,
-34437,34438,34439,34440,34441,34446,34447,34448,34449,34450,34452,34454,34455,
-34456,34457,34458,34459,34462,34463,34464,34465,34466,34469,34470,34475,34477,
-34478,34482,34483,34487,34488,34489,34491,34492,34493,34494,34495,34497,34498,
-34499,34501,34504,34508,34509,34514,34515,34517,34518,34519,34522,34524,34525,
-34528,34529,34530,34531,34533,34534,34535,34536,34538,34539,34540,34543,34549,
-34550,34551,34554,34555,34556,34557,34559,34561,34564,34565,34566,34571,34572,
-34574,34575,34576,34577,34580,34582,27712,24311,20572,20141,24237,25402,33351,
-36890,26704,37230,30643,21516,38108,24420,31461,26742,25413,31570,32479,30171,
-20599,25237,22836,36879,20984,31171,31361,22270,24466,36884,28034,23648,22303,
-21520,20820,28237,22242,25512,39059,33151,34581,35114,36864,21534,23663,33216,
-25302,25176,33073,40501,38464,39534,39548,26925,22949,25299,21822,25366,21703,
-34521,27964,23043,29926,34972,27498,22806,35916,24367,28286,29609,39037,20024,
-28919,23436,30871,25405,26202,30358,24779,23451,23113,19975,33109,27754,29579,
-20129,26505,32593,24448,26106,26395,24536,22916,23041,34585,34587,34589,34591,
-34592,34596,34598,34599,34600,34602,34603,34604,34605,34607,34608,34610,34611,
-34613,34614,34616,34617,34618,34620,34621,34624,34625,34626,34627,34628,34629,
-34630,34634,34635,34637,34639,34640,34641,34642,34644,34645,34646,34648,34650,
-34651,34652,34653,34654,34655,34657,34658,34662,34663,34664,34665,34666,34667,
-34668,34669,34671,34673,34674,34675,34677,34679,34680,34681,34682,34687,34688,
-34689,34692,34694,34695,34697,34698,34700,34702,34703,34704,34705,34706,34708,
-34709,34710,34712,34713,34714,34715,34716,34717,34718,34720,34721,34722,34723,
-34724,24013,24494,21361,38886,36829,26693,22260,21807,24799,20026,28493,32500,
-33479,33806,22996,20255,20266,23614,32428,26410,34074,21619,30031,32963,21890,
-39759,20301,28205,35859,23561,24944,21355,30239,28201,34442,25991,38395,32441,
-21563,31283,32010,38382,21985,32705,29934,25373,34583,28065,31389,25105,26017,
-21351,25569,27779,24043,21596,38056,20044,27745,35820,23627,26080,33436,26791,
-21566,21556,27595,27494,20116,25410,21320,33310,20237,20398,22366,25098,38654,
-26212,29289,21247,21153,24735,35823,26132,29081,26512,35199,30802,30717,26224,
-22075,21560,38177,29306,34725,34726,34727,34729,34730,34734,34736,34737,34738,
-34740,34742,34743,34744,34745,34747,34748,34750,34751,34753,34754,34755,34756,
-34757,34759,34760,34761,34764,34765,34766,34767,34768,34772,34773,34774,34775,
-34776,34777,34778,34780,34781,34782,34783,34785,34786,34787,34788,34790,34791,
-34792,34793,34795,34796,34797,34799,34800,34801,34802,34803,34804,34805,34806,
-34807,34808,34810,34811,34812,34813,34815,34816,34817,34818,34820,34821,34822,
-34823,34824,34825,34827,34828,34829,34830,34831,34832,34833,34834,34836,34839,
-34840,34841,34842,34844,34845,34846,34847,34848,34851,31232,24687,24076,24713,
-33181,22805,24796,29060,28911,28330,27728,29312,27268,34989,24109,20064,23219,
-21916,38115,27927,31995,38553,25103,32454,30606,34430,21283,38686,36758,26247,
-23777,20384,29421,19979,21414,22799,21523,25472,38184,20808,20185,40092,32420,
-21688,36132,34900,33335,38386,28046,24358,23244,26174,38505,29616,29486,21439,
-33146,39301,32673,23466,38519,38480,32447,30456,21410,38262,39321,31665,35140,
-28248,20065,32724,31077,35814,24819,21709,20139,39033,24055,27233,20687,21521,
-35937,33831,30813,38660,21066,21742,22179,38144,28040,23477,28102,26195,34852,
-34853,34854,34855,34856,34857,34858,34859,34860,34861,34862,34863,34864,34865,
-34867,34868,34869,34870,34871,34872,34874,34875,34877,34878,34879,34881,34882,
-34883,34886,34887,34888,34889,34890,34891,34894,34895,34896,34897,34898,34899,
-34901,34902,34904,34906,34907,34908,34909,34910,34911,34912,34918,34919,34922,
-34925,34927,34929,34931,34932,34933,34934,34936,34937,34938,34939,34940,34944,
-34947,34950,34951,34953,34954,34956,34958,34959,34960,34961,34963,34964,34965,
-34967,34968,34969,34970,34971,34973,34974,34975,34976,34977,34979,34981,34982,
-34983,34984,34985,34986,23567,23389,26657,32918,21880,31505,25928,26964,20123,
-27463,34638,38795,21327,25375,25658,37034,26012,32961,35856,20889,26800,21368,
-34809,25032,27844,27899,35874,23633,34218,33455,38156,27427,36763,26032,24571,
-24515,20449,34885,26143,33125,29481,24826,20852,21009,22411,24418,37026,34892,
-37266,24184,26447,24615,22995,20804,20982,33016,21256,27769,38596,29066,20241,
-20462,32670,26429,21957,38152,31168,34966,32483,22687,25100,38656,34394,22040,
-39035,24464,35768,33988,37207,21465,26093,24207,30044,24676,32110,23167,32490,
-32493,36713,21927,23459,24748,26059,29572,34988,34990,34991,34992,34994,34995,
-34996,34997,34998,35000,35001,35002,35003,35005,35006,35007,35008,35011,35012,
-35015,35016,35018,35019,35020,35021,35023,35024,35025,35027,35030,35031,35034,
-35035,35036,35037,35038,35040,35041,35046,35047,35049,35050,35051,35052,35053,
-35054,35055,35058,35061,35062,35063,35066,35067,35069,35071,35072,35073,35075,
-35076,35077,35078,35079,35080,35081,35083,35084,35085,35086,35087,35089,35092,
-35093,35094,35095,35096,35100,35101,35102,35103,35104,35106,35107,35108,35110,
-35111,35112,35113,35116,35117,35118,35119,35121,35122,35123,35125,35127,36873,
-30307,30505,32474,38772,34203,23398,31348,38634,34880,21195,29071,24490,26092,
-35810,23547,39535,24033,27529,27739,35757,35759,36874,36805,21387,25276,40486,
-40493,21568,20011,33469,29273,34460,23830,34905,28079,38597,21713,20122,35766,
-28937,21693,38409,28895,28153,30416,20005,30740,34578,23721,24310,35328,39068,
-38414,28814,27839,22852,25513,30524,34893,28436,33395,22576,29141,21388,30746,
-38593,21761,24422,28976,23476,35866,39564,27523,22830,40495,31207,26472,25196,
-20335,30113,32650,27915,38451,27687,20208,30162,20859,26679,28478,36992,33136,
-22934,29814,35128,35129,35130,35131,35132,35133,35134,35135,35136,35138,35139,
-35141,35142,35143,35144,35145,35146,35147,35148,35149,35150,35151,35152,35153,
-35154,35155,35156,35157,35158,35159,35160,35161,35162,35163,35164,35165,35168,
-35169,35170,35171,35172,35173,35175,35176,35177,35178,35179,35180,35181,35182,
-35183,35184,35185,35186,35187,35188,35189,35190,35191,35192,35193,35194,35196,
-35197,35198,35200,35202,35204,35205,35207,35208,35209,35210,35211,35212,35213,
-35214,35215,35216,35217,35218,35219,35220,35221,35222,35223,35224,35225,35226,
-35227,35228,35229,35230,35231,35232,35233,25671,23591,36965,31377,35875,23002,
-21676,33280,33647,35201,32768,26928,22094,32822,29239,37326,20918,20063,39029,
-25494,19994,21494,26355,33099,22812,28082,19968,22777,21307,25558,38129,20381,
-20234,34915,39056,22839,36951,31227,20202,33008,30097,27778,23452,23016,24413,
-26885,34433,20506,24050,20057,30691,20197,33402,25233,26131,37009,23673,20159,
-24441,33222,36920,32900,30123,20134,35028,24847,27589,24518,20041,30410,28322,
-35811,35758,35850,35793,24322,32764,32716,32462,33589,33643,22240,27575,38899,
-38452,23035,21535,38134,28139,23493,39278,23609,24341,38544,35234,35235,35236,
-35237,35238,35239,35240,35241,35242,35243,35244,35245,35246,35247,35248,35249,
-35250,35251,35252,35253,35254,35255,35256,35257,35258,35259,35260,35261,35262,
-35263,35264,35267,35277,35283,35284,35285,35287,35288,35289,35291,35293,35295,
-35296,35297,35298,35300,35303,35304,35305,35306,35308,35309,35310,35312,35313,
-35314,35316,35317,35318,35319,35320,35321,35322,35323,35324,35325,35326,35327,
-35329,35330,35331,35332,35333,35334,35336,35337,35338,35339,35340,35341,35342,
-35343,35344,35345,35346,35347,35348,35349,35350,35351,35352,35353,35354,35355,
-35356,35357,21360,33521,27185,23156,40560,24212,32552,33721,33828,33829,33639,
-34631,36814,36194,30408,24433,39062,30828,26144,21727,25317,20323,33219,30152,
-24248,38605,36362,34553,21647,27891,28044,27704,24703,21191,29992,24189,20248,
-24736,24551,23588,30001,37038,38080,29369,27833,28216,37193,26377,21451,21491,
-20305,37321,35825,21448,24188,36802,28132,20110,30402,27014,34398,24858,33286,
-20313,20446,36926,40060,24841,28189,28180,38533,20104,23089,38632,19982,23679,
-31161,23431,35821,32701,29577,22495,33419,37057,21505,36935,21947,23786,24481,
-24840,27442,29425,32946,35465,35358,35359,35360,35361,35362,35363,35364,35365,
-35366,35367,35368,35369,35370,35371,35372,35373,35374,35375,35376,35377,35378,
-35379,35380,35381,35382,35383,35384,35385,35386,35387,35388,35389,35391,35392,
-35393,35394,35395,35396,35397,35398,35399,35401,35402,35403,35404,35405,35406,
-35407,35408,35409,35410,35411,35412,35413,35414,35415,35416,35417,35418,35419,
-35420,35421,35422,35423,35424,35425,35426,35427,35428,35429,35430,35431,35432,
-35433,35434,35435,35436,35437,35438,35439,35440,35441,35442,35443,35444,35445,
-35446,35447,35448,35450,35451,35452,35453,35454,35455,35456,28020,23507,35029,
-39044,35947,39533,40499,28170,20900,20803,22435,34945,21407,25588,36757,22253,
-21592,22278,29503,28304,32536,36828,33489,24895,24616,38498,26352,32422,36234,
-36291,38053,23731,31908,26376,24742,38405,32792,20113,37095,21248,38504,20801,
-36816,34164,37213,26197,38901,23381,21277,30776,26434,26685,21705,28798,23472,
-36733,20877,22312,21681,25874,26242,36190,36163,33039,33900,36973,31967,20991,
-34299,26531,26089,28577,34468,36481,22122,36896,30338,28790,29157,36131,25321,
-21017,27901,36156,24590,22686,24974,26366,36192,25166,21939,28195,26413,36711,
-35457,35458,35459,35460,35461,35462,35463,35464,35467,35468,35469,35470,35471,
-35472,35473,35474,35476,35477,35478,35479,35480,35481,35482,35483,35484,35485,
-35486,35487,35488,35489,35490,35491,35492,35493,35494,35495,35496,35497,35498,
-35499,35500,35501,35502,35503,35504,35505,35506,35507,35508,35509,35510,35511,
-35512,35513,35514,35515,35516,35517,35518,35519,35520,35521,35522,35523,35524,
-35525,35526,35527,35528,35529,35530,35531,35532,35533,35534,35535,35536,35537,
-35538,35539,35540,35541,35542,35543,35544,35545,35546,35547,35548,35549,35550,
-35551,35552,35553,35554,35555,38113,38392,30504,26629,27048,21643,20045,28856,
-35784,25688,25995,23429,31364,20538,23528,30651,27617,35449,31896,27838,30415,
-26025,36759,23853,23637,34360,26632,21344,25112,31449,28251,32509,27167,31456,
-24432,28467,24352,25484,28072,26454,19976,24080,36134,20183,32960,30260,38556,
-25307,26157,25214,27836,36213,29031,32617,20806,32903,21484,36974,25240,21746,
-34544,36761,32773,38167,34071,36825,27993,29645,26015,30495,29956,30759,33275,
-36126,38024,20390,26517,30137,35786,38663,25391,38215,38453,33976,25379,30529,
-24449,29424,20105,24596,25972,25327,27491,25919,35556,35557,35558,35559,35560,
-35561,35562,35563,35564,35565,35566,35567,35568,35569,35570,35571,35572,35573,
-35574,35575,35576,35577,35578,35579,35580,35581,35582,35583,35584,35585,35586,
-35587,35588,35589,35590,35592,35593,35594,35595,35596,35597,35598,35599,35600,
-35601,35602,35603,35604,35605,35606,35607,35608,35609,35610,35611,35612,35613,
-35614,35615,35616,35617,35618,35619,35620,35621,35623,35624,35625,35626,35627,
-35628,35629,35630,35631,35632,35633,35634,35635,35636,35637,35638,35639,35640,
-35641,35642,35643,35644,35645,35646,35647,35648,35649,35650,35651,35652,35653,
-24103,30151,37073,35777,33437,26525,25903,21553,34584,30693,32930,33026,27713,
-20043,32455,32844,30452,26893,27542,25191,20540,20356,22336,25351,27490,36286,
-21482,26088,32440,24535,25370,25527,33267,33268,32622,24092,23769,21046,26234,
-31209,31258,36136,28825,30164,28382,27835,31378,20013,30405,24544,38047,34935,
-32456,31181,32959,37325,20210,20247,33311,21608,24030,27954,35788,31909,36724,
-32920,24090,21650,30385,23449,26172,39588,29664,26666,34523,26417,29482,35832,
-35803,36880,31481,28891,29038,25284,30633,22065,20027,33879,26609,21161,34496,
-36142,38136,31569,35654,35655,35656,35657,35658,35659,35660,35661,35662,35663,
-35664,35665,35666,35667,35668,35669,35670,35671,35672,35673,35674,35675,35676,
-35677,35678,35679,35680,35681,35682,35683,35684,35685,35687,35688,35689,35690,
-35691,35693,35694,35695,35696,35697,35698,35699,35700,35701,35702,35703,35704,
-35705,35706,35707,35708,35709,35710,35711,35712,35713,35714,35715,35716,35717,
-35718,35719,35720,35721,35722,35723,35724,35725,35726,35727,35728,35729,35730,
-35731,35732,35733,35734,35735,35736,35737,35738,35739,35740,35741,35742,35743,
-35756,35761,35771,35783,35792,35818,35849,35870,20303,27880,31069,39547,25235,
-29226,25341,19987,30742,36716,25776,36186,31686,26729,24196,35013,22918,25758,
-22766,29366,26894,38181,36861,36184,22368,32512,35846,20934,25417,25305,21331,
-26700,29730,33537,37196,21828,30528,28796,27978,20857,21672,36164,23039,28363,
-28100,23388,32043,20180,31869,28371,23376,33258,28173,23383,39683,26837,36394,
-23447,32508,24635,32437,37049,36208,22863,25549,31199,36275,21330,26063,31062,
-35781,38459,32452,38075,32386,22068,37257,26368,32618,23562,36981,26152,24038,
-20304,26590,20570,20316,22352,24231,59408,59409,59410,59411,59412,35896,35897,
-35898,35899,35900,35901,35902,35903,35904,35906,35907,35908,35909,35912,35914,
-35915,35917,35918,35919,35920,35921,35922,35923,35924,35926,35927,35928,35929,
-35931,35932,35933,35934,35935,35936,35939,35940,35941,35942,35943,35944,35945,
-35948,35949,35950,35951,35952,35953,35954,35956,35957,35958,35959,35963,35964,
-35965,35966,35967,35968,35969,35971,35972,35974,35975,35976,35979,35981,35982,
-35983,35984,35985,35986,35987,35989,35990,35991,35993,35994,35995,35996,35997,
-35998,35999,36000,36001,36002,36003,36004,36005,36006,36007,36008,36009,36010,
-36011,36012,36013,20109,19980,20800,19984,24319,21317,19989,20120,19998,39730,
-23404,22121,20008,31162,20031,21269,20039,22829,29243,21358,27664,22239,32996,
-39319,27603,30590,40727,20022,20127,40720,20060,20073,20115,33416,23387,21868,
-22031,20164,21389,21405,21411,21413,21422,38757,36189,21274,21493,21286,21294,
-21310,36188,21350,21347,20994,21000,21006,21037,21043,21055,21056,21068,21086,
-21089,21084,33967,21117,21122,21121,21136,21139,20866,32596,20155,20163,20169,
-20162,20200,20193,20203,20190,20251,20211,20258,20324,20213,20261,20263,20233,
-20267,20318,20327,25912,20314,20317,36014,36015,36016,36017,36018,36019,36020,
-36021,36022,36023,36024,36025,36026,36027,36028,36029,36030,36031,36032,36033,
-36034,36035,36036,36037,36038,36039,36040,36041,36042,36043,36044,36045,36046,
-36047,36048,36049,36050,36051,36052,36053,36054,36055,36056,36057,36058,36059,
-36060,36061,36062,36063,36064,36065,36066,36067,36068,36069,36070,36071,36072,
-36073,36074,36075,36076,36077,36078,36079,36080,36081,36082,36083,36084,36085,
-36086,36087,36088,36089,36090,36091,36092,36093,36094,36095,36096,36097,36098,
-36099,36100,36101,36102,36103,36104,36105,36106,36107,36108,36109,20319,20311,
-20274,20285,20342,20340,20369,20361,20355,20367,20350,20347,20394,20348,20396,
-20372,20454,20456,20458,20421,20442,20451,20444,20433,20447,20472,20521,20556,
-20467,20524,20495,20526,20525,20478,20508,20492,20517,20520,20606,20547,20565,
-20552,20558,20588,20603,20645,20647,20649,20666,20694,20742,20717,20716,20710,
-20718,20743,20747,20189,27709,20312,20325,20430,40864,27718,31860,20846,24061,
-40649,39320,20865,22804,21241,21261,35335,21264,20971,22809,20821,20128,20822,
-20147,34926,34980,20149,33044,35026,31104,23348,34819,32696,20907,20913,20925,
-20924,36110,36111,36112,36113,36114,36115,36116,36117,36118,36119,36120,36121,
-36122,36123,36124,36128,36177,36178,36183,36191,36197,36200,36201,36202,36204,
-36206,36207,36209,36210,36216,36217,36218,36219,36220,36221,36222,36223,36224,
-36226,36227,36230,36231,36232,36233,36236,36237,36238,36239,36240,36242,36243,
-36245,36246,36247,36248,36249,36250,36251,36252,36253,36254,36256,36257,36258,
-36260,36261,36262,36263,36264,36265,36266,36267,36268,36269,36270,36271,36272,
-36274,36278,36279,36281,36283,36285,36288,36289,36290,36293,36295,36296,36297,
-36298,36301,36304,36306,36307,36308,20935,20886,20898,20901,35744,35750,35751,
-35754,35764,35765,35767,35778,35779,35787,35791,35790,35794,35795,35796,35798,
-35800,35801,35804,35807,35808,35812,35816,35817,35822,35824,35827,35830,35833,
-35836,35839,35840,35842,35844,35847,35852,35855,35857,35858,35860,35861,35862,
-35865,35867,35864,35869,35871,35872,35873,35877,35879,35882,35883,35886,35887,
-35890,35891,35893,35894,21353,21370,38429,38434,38433,38449,38442,38461,38460,
-38466,38473,38484,38495,38503,38508,38514,38516,38536,38541,38551,38576,37015,
-37019,37021,37017,37036,37025,37044,37043,37046,37050,36309,36312,36313,36316,
-36320,36321,36322,36325,36326,36327,36329,36333,36334,36336,36337,36338,36340,
-36342,36348,36350,36351,36352,36353,36354,36355,36356,36358,36359,36360,36363,
-36365,36366,36368,36369,36370,36371,36373,36374,36375,36376,36377,36378,36379,
-36380,36384,36385,36388,36389,36390,36391,36392,36395,36397,36400,36402,36403,
-36404,36406,36407,36408,36411,36412,36414,36415,36419,36421,36422,36428,36429,
-36430,36431,36432,36435,36436,36437,36438,36439,36440,36442,36443,36444,36445,
-36446,36447,36448,36449,36450,36451,36452,36453,36455,36456,36458,36459,36462,
-36465,37048,37040,37071,37061,37054,37072,37060,37063,37075,37094,37090,37084,
-37079,37083,37099,37103,37118,37124,37154,37150,37155,37169,37167,37177,37187,
-37190,21005,22850,21154,21164,21165,21182,21759,21200,21206,21232,21471,29166,
-30669,24308,20981,20988,39727,21430,24321,30042,24047,22348,22441,22433,22654,
-22716,22725,22737,22313,22316,22314,22323,22329,22318,22319,22364,22331,22338,
-22377,22405,22379,22406,22396,22395,22376,22381,22390,22387,22445,22436,22412,
-22450,22479,22439,22452,22419,22432,22485,22488,22490,22489,22482,22456,22516,
-22511,22520,22500,22493,36467,36469,36471,36472,36473,36474,36475,36477,36478,
-36480,36482,36483,36484,36486,36488,36489,36490,36491,36492,36493,36494,36497,
-36498,36499,36501,36502,36503,36504,36505,36506,36507,36509,36511,36512,36513,
-36514,36515,36516,36517,36518,36519,36520,36521,36522,36525,36526,36528,36529,
-36531,36532,36533,36534,36535,36536,36537,36539,36540,36541,36542,36543,36544,
-36545,36546,36547,36548,36549,36550,36551,36552,36553,36554,36555,36556,36557,
-36559,36560,36561,36562,36563,36564,36565,36566,36567,36568,36569,36570,36571,
-36572,36573,36574,36575,36576,36577,36578,36579,36580,22539,22541,22525,22509,
-22528,22558,22553,22596,22560,22629,22636,22657,22665,22682,22656,39336,40729,
-25087,33401,33405,33407,33423,33418,33448,33412,33422,33425,33431,33433,33451,
-33464,33470,33456,33480,33482,33507,33432,33463,33454,33483,33484,33473,33449,
-33460,33441,33450,33439,33476,33486,33444,33505,33545,33527,33508,33551,33543,
-33500,33524,33490,33496,33548,33531,33491,33553,33562,33542,33556,33557,33504,
-33493,33564,33617,33627,33628,33544,33682,33596,33588,33585,33691,33630,33583,
-33615,33607,33603,33631,33600,33559,33632,33581,33594,33587,33638,33637,36581,
-36582,36583,36584,36585,36586,36587,36588,36589,36590,36591,36592,36593,36594,
-36595,36596,36597,36598,36599,36600,36601,36602,36603,36604,36605,36606,36607,
-36608,36609,36610,36611,36612,36613,36614,36615,36616,36617,36618,36619,36620,
-36621,36622,36623,36624,36625,36626,36627,36628,36629,36630,36631,36632,36633,
-36634,36635,36636,36637,36638,36639,36640,36641,36642,36643,36644,36645,36646,
-36647,36648,36649,36650,36651,36652,36653,36654,36655,36656,36657,36658,36659,
-36660,36661,36662,36663,36664,36665,36666,36667,36668,36669,36670,36671,36672,
-36673,36674,36675,36676,33640,33563,33641,33644,33642,33645,33646,33712,33656,
-33715,33716,33696,33706,33683,33692,33669,33660,33718,33705,33661,33720,33659,
-33688,33694,33704,33722,33724,33729,33793,33765,33752,22535,33816,33803,33757,
-33789,33750,33820,33848,33809,33798,33748,33759,33807,33795,33784,33785,33770,
-33733,33728,33830,33776,33761,33884,33873,33882,33881,33907,33927,33928,33914,
-33929,33912,33852,33862,33897,33910,33932,33934,33841,33901,33985,33997,34000,
-34022,33981,34003,33994,33983,33978,34016,33953,33977,33972,33943,34021,34019,
-34060,29965,34104,34032,34105,34079,34106,36677,36678,36679,36680,36681,36682,
-36683,36684,36685,36686,36687,36688,36689,36690,36691,36692,36693,36694,36695,
-36696,36697,36698,36699,36700,36701,36702,36703,36704,36705,36706,36707,36708,
-36709,36714,36736,36748,36754,36765,36768,36769,36770,36772,36773,36774,36775,
-36778,36780,36781,36782,36783,36786,36787,36788,36789,36791,36792,36794,36795,
-36796,36799,36800,36803,36806,36809,36810,36811,36812,36813,36815,36818,36822,
-36823,36826,36832,36833,36835,36839,36844,36847,36849,36850,36852,36853,36854,
-36858,36859,36860,36862,36863,36871,36872,36876,36878,36883,36885,36888,34134,
-34107,34047,34044,34137,34120,34152,34148,34142,34170,30626,34115,34162,34171,
-34212,34216,34183,34191,34169,34222,34204,34181,34233,34231,34224,34259,34241,
-34268,34303,34343,34309,34345,34326,34364,24318,24328,22844,22849,32823,22869,
-22874,22872,21263,23586,23589,23596,23604,25164,25194,25247,25275,25290,25306,
-25303,25326,25378,25334,25401,25419,25411,25517,25590,25457,25466,25486,25524,
-25453,25516,25482,25449,25518,25532,25586,25592,25568,25599,25540,25566,25550,
-25682,25542,25534,25669,25665,25611,25627,25632,25612,25638,25633,25694,25732,
-25709,25750,36889,36892,36899,36900,36901,36903,36904,36905,36906,36907,36908,
-36912,36913,36914,36915,36916,36919,36921,36922,36925,36927,36928,36931,36933,
-36934,36936,36937,36938,36939,36940,36942,36948,36949,36950,36953,36954,36956,
-36957,36958,36959,36960,36961,36964,36966,36967,36969,36970,36971,36972,36975,
-36976,36977,36978,36979,36982,36983,36984,36985,36986,36987,36988,36990,36993,
-36996,36997,36998,36999,37001,37002,37004,37005,37006,37007,37008,37010,37012,
-37014,37016,37018,37020,37022,37023,37024,37028,37029,37031,37032,37033,37035,
-37037,37042,37047,37052,37053,37055,37056,25722,25783,25784,25753,25786,25792,
-25808,25815,25828,25826,25865,25893,25902,24331,24530,29977,24337,21343,21489,
-21501,21481,21480,21499,21522,21526,21510,21579,21586,21587,21588,21590,21571,
-21537,21591,21593,21539,21554,21634,21652,21623,21617,21604,21658,21659,21636,
-21622,21606,21661,21712,21677,21698,21684,21714,21671,21670,21715,21716,21618,
-21667,21717,21691,21695,21708,21721,21722,21724,21673,21674,21668,21725,21711,
-21726,21787,21735,21792,21757,21780,21747,21794,21795,21775,21777,21799,21802,
-21863,21903,21941,21833,21869,21825,21845,21823,21840,21820,37058,37059,37062,
-37064,37065,37067,37068,37069,37074,37076,37077,37078,37080,37081,37082,37086,
-37087,37088,37091,37092,37093,37097,37098,37100,37102,37104,37105,37106,37107,
-37109,37110,37111,37113,37114,37115,37116,37119,37120,37121,37123,37125,37126,
-37127,37128,37129,37130,37131,37132,37133,37134,37135,37136,37137,37138,37139,
-37140,37141,37142,37143,37144,37146,37147,37148,37149,37151,37152,37153,37156,
-37157,37158,37159,37160,37161,37162,37163,37164,37165,37166,37168,37170,37171,
-37172,37173,37174,37175,37176,37178,37179,37180,37181,37182,37183,37184,37185,
-37186,37188,21815,21846,21877,21878,21879,21811,21808,21852,21899,21970,21891,
-21937,21945,21896,21889,21919,21886,21974,21905,21883,21983,21949,21950,21908,
-21913,21994,22007,21961,22047,21969,21995,21996,21972,21990,21981,21956,21999,
-21989,22002,22003,21964,21965,21992,22005,21988,36756,22046,22024,22028,22017,
-22052,22051,22014,22016,22055,22061,22104,22073,22103,22060,22093,22114,22105,
-22108,22092,22100,22150,22116,22129,22123,22139,22140,22149,22163,22191,22228,
-22231,22237,22241,22261,22251,22265,22271,22276,22282,22281,22300,24079,24089,
-24084,24081,24113,24123,24124,37189,37191,37192,37201,37203,37204,37205,37206,
-37208,37209,37211,37212,37215,37216,37222,37223,37224,37227,37229,37235,37242,
-37243,37244,37248,37249,37250,37251,37252,37254,37256,37258,37262,37263,37267,
-37268,37269,37270,37271,37272,37273,37276,37277,37278,37279,37280,37281,37284,
-37285,37286,37287,37288,37289,37291,37292,37296,37297,37298,37299,37302,37303,
-37304,37305,37307,37308,37309,37310,37311,37312,37313,37314,37315,37316,37317,
-37318,37320,37323,37328,37330,37331,37332,37333,37334,37335,37336,37337,37338,
-37339,37341,37342,37343,37344,37345,37346,37347,37348,37349,24119,24132,24148,
-24155,24158,24161,23692,23674,23693,23696,23702,23688,23704,23705,23697,23706,
-23708,23733,23714,23741,23724,23723,23729,23715,23745,23735,23748,23762,23780,
-23755,23781,23810,23811,23847,23846,23854,23844,23838,23814,23835,23896,23870,
-23860,23869,23916,23899,23919,23901,23915,23883,23882,23913,23924,23938,23961,
-23965,35955,23991,24005,24435,24439,24450,24455,24457,24460,24469,24473,24476,
-24488,24493,24501,24508,34914,24417,29357,29360,29364,29367,29368,29379,29377,
-29390,29389,29394,29416,29423,29417,29426,29428,29431,29441,29427,29443,29434,
-37350,37351,37352,37353,37354,37355,37356,37357,37358,37359,37360,37361,37362,
-37363,37364,37365,37366,37367,37368,37369,37370,37371,37372,37373,37374,37375,
-37376,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37387,37388,
-37389,37390,37391,37392,37393,37394,37395,37396,37397,37398,37399,37400,37401,
-37402,37403,37404,37405,37406,37407,37408,37409,37410,37411,37412,37413,37414,
-37415,37416,37417,37418,37419,37420,37421,37422,37423,37424,37425,37426,37427,
-37428,37429,37430,37431,37432,37433,37434,37435,37436,37437,37438,37439,37440,
-37441,37442,37443,37444,37445,29435,29463,29459,29473,29450,29470,29469,29461,
-29474,29497,29477,29484,29496,29489,29520,29517,29527,29536,29548,29551,29566,
-33307,22821,39143,22820,22786,39267,39271,39272,39273,39274,39275,39276,39284,
-39287,39293,39296,39300,39303,39306,39309,39312,39313,39315,39316,39317,24192,
-24209,24203,24214,24229,24224,24249,24245,24254,24243,36179,24274,24273,24283,
-24296,24298,33210,24516,24521,24534,24527,24579,24558,24580,24545,24548,24574,
-24581,24582,24554,24557,24568,24601,24629,24614,24603,24591,24589,24617,24619,
-24586,24639,24609,24696,24697,24699,24698,24642,37446,37447,37448,37449,37450,
-37451,37452,37453,37454,37455,37456,37457,37458,37459,37460,37461,37462,37463,
-37464,37465,37466,37467,37468,37469,37470,37471,37472,37473,37474,37475,37476,
-37477,37478,37479,37480,37481,37482,37483,37484,37485,37486,37487,37488,37489,
-37490,37491,37493,37494,37495,37496,37497,37498,37499,37500,37501,37502,37503,
-37504,37505,37506,37507,37508,37509,37510,37511,37512,37513,37514,37515,37516,
-37517,37519,37520,37521,37522,37523,37524,37525,37526,37527,37528,37529,37530,
-37531,37532,37533,37534,37535,37536,37537,37538,37539,37540,37541,37542,37543,
-24682,24701,24726,24730,24749,24733,24707,24722,24716,24731,24812,24763,24753,
-24797,24792,24774,24794,24756,24864,24870,24853,24867,24820,24832,24846,24875,
-24906,24949,25004,24980,24999,25015,25044,25077,24541,38579,38377,38379,38385,
-38387,38389,38390,38396,38398,38403,38404,38406,38408,38410,38411,38412,38413,
-38415,38418,38421,38422,38423,38425,38426,20012,29247,25109,27701,27732,27740,
-27722,27811,27781,27792,27796,27788,27752,27753,27764,27766,27782,27817,27856,
-27860,27821,27895,27896,27889,27863,27826,27872,27862,27898,27883,27886,27825,
-27859,27887,27902,37544,37545,37546,37547,37548,37549,37551,37552,37553,37554,
-37555,37556,37557,37558,37559,37560,37561,37562,37563,37564,37565,37566,37567,
-37568,37569,37570,37571,37572,37573,37574,37575,37577,37578,37579,37580,37581,
-37582,37583,37584,37585,37586,37587,37588,37589,37590,37591,37592,37593,37594,
-37595,37596,37597,37598,37599,37600,37601,37602,37603,37604,37605,37606,37607,
-37608,37609,37610,37611,37612,37613,37614,37615,37616,37617,37618,37619,37620,
-37621,37622,37623,37624,37625,37626,37627,37628,37629,37630,37631,37632,37633,
-37634,37635,37636,37637,37638,37639,37640,37641,27961,27943,27916,27971,27976,
-27911,27908,27929,27918,27947,27981,27950,27957,27930,27983,27986,27988,27955,
-28049,28015,28062,28064,27998,28051,28052,27996,28000,28028,28003,28186,28103,
-28101,28126,28174,28095,28128,28177,28134,28125,28121,28182,28075,28172,28078,
-28203,28270,28238,28267,28338,28255,28294,28243,28244,28210,28197,28228,28383,
-28337,28312,28384,28461,28386,28325,28327,28349,28347,28343,28375,28340,28367,
-28303,28354,28319,28514,28486,28487,28452,28437,28409,28463,28470,28491,28532,
-28458,28425,28457,28553,28557,28556,28536,28530,28540,28538,28625,37642,37643,
-37644,37645,37646,37647,37648,37649,37650,37651,37652,37653,37654,37655,37656,
-37657,37658,37659,37660,37661,37662,37663,37664,37665,37666,37667,37668,37669,
-37670,37671,37672,37673,37674,37675,37676,37677,37678,37679,37680,37681,37682,
-37683,37684,37685,37686,37687,37688,37689,37690,37691,37692,37693,37695,37696,
-37697,37698,37699,37700,37701,37702,37703,37704,37705,37706,37707,37708,37709,
-37710,37711,37712,37713,37714,37715,37716,37717,37718,37719,37720,37721,37722,
-37723,37724,37725,37726,37727,37728,37729,37730,37731,37732,37733,37734,37735,
-37736,37737,37739,28617,28583,28601,28598,28610,28641,28654,28638,28640,28655,
-28698,28707,28699,28729,28725,28751,28766,23424,23428,23445,23443,23461,23480,
-29999,39582,25652,23524,23534,35120,23536,36423,35591,36790,36819,36821,36837,
-36846,36836,36841,36838,36851,36840,36869,36868,36875,36902,36881,36877,36886,
-36897,36917,36918,36909,36911,36932,36945,36946,36944,36968,36952,36962,36955,
-26297,36980,36989,36994,37000,36995,37003,24400,24407,24406,24408,23611,21675,
-23632,23641,23409,23651,23654,32700,24362,24361,24365,33396,24380,39739,23662,
-22913,22915,22925,22953,22954,22947,37740,37741,37742,37743,37744,37745,37746,
-37747,37748,37749,37750,37751,37752,37753,37754,37755,37756,37757,37758,37759,
-37760,37761,37762,37763,37764,37765,37766,37767,37768,37769,37770,37771,37772,
-37773,37774,37776,37777,37778,37779,37780,37781,37782,37783,37784,37785,37786,
-37787,37788,37789,37790,37791,37792,37793,37794,37795,37796,37797,37798,37799,
-37800,37801,37802,37803,37804,37805,37806,37807,37808,37809,37810,37811,37812,
-37813,37814,37815,37816,37817,37818,37819,37820,37821,37822,37823,37824,37825,
-37826,37827,37828,37829,37830,37831,37832,37833,37835,37836,37837,22935,22986,
-22955,22942,22948,22994,22962,22959,22999,22974,23045,23046,23005,23048,23011,
-23000,23033,23052,23049,23090,23092,23057,23075,23059,23104,23143,23114,23125,
-23100,23138,23157,33004,23210,23195,23159,23162,23230,23275,23218,23250,23252,
-23224,23264,23267,23281,23254,23270,23256,23260,23305,23319,23318,23346,23351,
-23360,23573,23580,23386,23397,23411,23377,23379,23394,39541,39543,39544,39546,
-39551,39549,39552,39553,39557,39560,39562,39568,39570,39571,39574,39576,39579,
-39580,39581,39583,39584,39586,39587,39589,39591,32415,32417,32419,32421,32424,
-32425,37838,37839,37840,37841,37842,37843,37844,37845,37847,37848,37849,37850,
-37851,37852,37853,37854,37855,37856,37857,37858,37859,37860,37861,37862,37863,
-37864,37865,37866,37867,37868,37869,37870,37871,37872,37873,37874,37875,37876,
-37877,37878,37879,37880,37881,37882,37883,37884,37885,37886,37887,37888,37889,
-37890,37891,37892,37893,37894,37895,37896,37897,37898,37899,37900,37901,37902,
-37903,37904,37905,37906,37907,37908,37909,37910,37911,37912,37913,37914,37915,
-37916,37917,37918,37919,37920,37921,37922,37923,37924,37925,37926,37927,37928,
-37929,37930,37931,37932,37933,37934,32429,32432,32446,32448,32449,32450,32457,
-32459,32460,32464,32468,32471,32475,32480,32481,32488,32491,32494,32495,32497,
-32498,32525,32502,32506,32507,32510,32513,32514,32515,32519,32520,32523,32524,
-32527,32529,32530,32535,32537,32540,32539,32543,32545,32546,32547,32548,32549,
-32550,32551,32554,32555,32556,32557,32559,32560,32561,32562,32563,32565,24186,
-30079,24027,30014,37013,29582,29585,29614,29602,29599,29647,29634,29649,29623,
-29619,29632,29641,29640,29669,29657,39036,29706,29673,29671,29662,29626,29682,
-29711,29738,29787,29734,29733,29736,29744,29742,29740,37935,37936,37937,37938,
-37939,37940,37941,37942,37943,37944,37945,37946,37947,37948,37949,37951,37952,
-37953,37954,37955,37956,37957,37958,37959,37960,37961,37962,37963,37964,37965,
-37966,37967,37968,37969,37970,37971,37972,37973,37974,37975,37976,37977,37978,
-37979,37980,37981,37982,37983,37984,37985,37986,37987,37988,37989,37990,37991,
-37992,37993,37994,37996,37997,37998,37999,38000,38001,38002,38003,38004,38005,
-38006,38007,38008,38009,38010,38011,38012,38013,38014,38015,38016,38017,38018,
-38019,38020,38033,38038,38040,38087,38095,38099,38100,38106,38118,38139,38172,
-38176,29723,29722,29761,29788,29783,29781,29785,29815,29805,29822,29852,29838,
-29824,29825,29831,29835,29854,29864,29865,29840,29863,29906,29882,38890,38891,
-38892,26444,26451,26462,26440,26473,26533,26503,26474,26483,26520,26535,26485,
-26536,26526,26541,26507,26487,26492,26608,26633,26584,26634,26601,26544,26636,
-26585,26549,26586,26547,26589,26624,26563,26552,26594,26638,26561,26621,26674,
-26675,26720,26721,26702,26722,26692,26724,26755,26653,26709,26726,26689,26727,
-26688,26686,26698,26697,26665,26805,26767,26740,26743,26771,26731,26818,26990,
-26876,26911,26912,26873,38183,38195,38205,38211,38216,38219,38229,38234,38240,
-38254,38260,38261,38263,38264,38265,38266,38267,38268,38269,38270,38272,38273,
-38274,38275,38276,38277,38278,38279,38280,38281,38282,38283,38284,38285,38286,
-38287,38288,38289,38290,38291,38292,38293,38294,38295,38296,38297,38298,38299,
-38300,38301,38302,38303,38304,38305,38306,38307,38308,38309,38310,38311,38312,
-38313,38314,38315,38316,38317,38318,38319,38320,38321,38322,38323,38324,38325,
-38326,38327,38328,38329,38330,38331,38332,38333,38334,38335,38336,38337,38338,
-38339,38340,38341,38342,38343,38344,38345,38346,38347,26916,26864,26891,26881,
-26967,26851,26896,26993,26937,26976,26946,26973,27012,26987,27008,27032,27000,
-26932,27084,27015,27016,27086,27017,26982,26979,27001,27035,27047,27067,27051,
-27053,27092,27057,27073,27082,27103,27029,27104,27021,27135,27183,27117,27159,
-27160,27237,27122,27204,27198,27296,27216,27227,27189,27278,27257,27197,27176,
-27224,27260,27281,27280,27305,27287,27307,29495,29522,27521,27522,27527,27524,
-27538,27539,27533,27546,27547,27553,27562,36715,36717,36721,36722,36723,36725,
-36726,36728,36727,36729,36730,36732,36734,36737,36738,36740,36743,36747,38348,
-38349,38350,38351,38352,38353,38354,38355,38356,38357,38358,38359,38360,38361,
-38362,38363,38364,38365,38366,38367,38368,38369,38370,38371,38372,38373,38374,
-38375,38380,38399,38407,38419,38424,38427,38430,38432,38435,38436,38437,38438,
-38439,38440,38441,38443,38444,38445,38447,38448,38455,38456,38457,38458,38462,
-38465,38467,38474,38478,38479,38481,38482,38483,38486,38487,38488,38489,38490,
-38492,38493,38494,38496,38499,38501,38502,38507,38509,38510,38511,38512,38513,
-38515,38520,38521,38522,38523,38524,38525,38526,38527,38528,38529,38530,38531,
-38532,38535,38537,38538,36749,36750,36751,36760,36762,36558,25099,25111,25115,
-25119,25122,25121,25125,25124,25132,33255,29935,29940,29951,29967,29969,29971,
-25908,26094,26095,26096,26122,26137,26482,26115,26133,26112,28805,26359,26141,
-26164,26161,26166,26165,32774,26207,26196,26177,26191,26198,26209,26199,26231,
-26244,26252,26279,26269,26302,26331,26332,26342,26345,36146,36147,36150,36155,
-36157,36160,36165,36166,36168,36169,36167,36173,36181,36185,35271,35274,35275,
-35276,35278,35279,35280,35281,29294,29343,29277,29286,29295,29310,29311,29316,
-29323,29325,29327,29330,25352,25394,25520,38540,38542,38545,38546,38547,38549,
-38550,38554,38555,38557,38558,38559,38560,38561,38562,38563,38564,38565,38566,
-38568,38569,38570,38571,38572,38573,38574,38575,38577,38578,38580,38581,38583,
-38584,38586,38587,38591,38594,38595,38600,38602,38603,38608,38609,38611,38612,
-38614,38615,38616,38617,38618,38619,38620,38621,38622,38623,38625,38626,38627,
-38628,38629,38630,38631,38635,38636,38637,38638,38640,38641,38642,38644,38645,
-38648,38650,38651,38652,38653,38655,38658,38659,38661,38666,38667,38668,38672,
-38673,38674,38676,38677,38679,38680,38681,38682,38683,38685,38687,38688,25663,
-25816,32772,27626,27635,27645,27637,27641,27653,27655,27654,27661,27669,27672,
-27673,27674,27681,27689,27684,27690,27698,25909,25941,25963,29261,29266,29270,
-29232,34402,21014,32927,32924,32915,32956,26378,32957,32945,32939,32941,32948,
-32951,32999,33000,33001,33002,32987,32962,32964,32985,32973,32983,26384,32989,
-33003,33009,33012,33005,33037,33038,33010,33020,26389,33042,35930,33078,33054,
-33068,33048,33074,33096,33100,33107,33140,33113,33114,33137,33120,33129,33148,
-33149,33133,33127,22605,23221,33160,33154,33169,28373,33187,33194,33228,26406,
-33226,33211,38689,38690,38691,38692,38693,38694,38695,38696,38697,38699,38700,
-38702,38703,38705,38707,38708,38709,38710,38711,38714,38715,38716,38717,38719,
-38720,38721,38722,38723,38724,38725,38726,38727,38728,38729,38730,38731,38732,
-38733,38734,38735,38736,38737,38740,38741,38743,38744,38746,38748,38749,38751,
-38755,38756,38758,38759,38760,38762,38763,38764,38765,38766,38767,38768,38769,
-38770,38773,38775,38776,38777,38778,38779,38781,38782,38783,38784,38785,38786,
-38787,38788,38790,38791,38792,38793,38794,38796,38798,38799,38800,38803,38805,
-38806,38807,38809,38810,38811,38812,38813,33217,33190,27428,27447,27449,27459,
-27462,27481,39121,39122,39123,39125,39129,39130,27571,24384,27586,35315,26000,
-40785,26003,26044,26054,26052,26051,26060,26062,26066,26070,28800,28828,28822,
-28829,28859,28864,28855,28843,28849,28904,28874,28944,28947,28950,28975,28977,
-29043,29020,29032,28997,29042,29002,29048,29050,29080,29107,29109,29096,29088,
-29152,29140,29159,29177,29213,29224,28780,28952,29030,29113,25150,25149,25155,
-25160,25161,31035,31040,31046,31049,31067,31068,31059,31066,31074,31063,31072,
-31087,31079,31098,31109,31114,31130,31143,31155,24529,24528,38814,38815,38817,
-38818,38820,38821,38822,38823,38824,38825,38826,38828,38830,38832,38833,38835,
-38837,38838,38839,38840,38841,38842,38843,38844,38845,38846,38847,38848,38849,
-38850,38851,38852,38853,38854,38855,38856,38857,38858,38859,38860,38861,38862,
-38863,38864,38865,38866,38867,38868,38869,38870,38871,38872,38873,38874,38875,
-38876,38877,38878,38879,38880,38881,38882,38883,38884,38885,38888,38894,38895,
-38896,38897,38898,38900,38903,38904,38905,38906,38907,38908,38909,38910,38911,
-38912,38913,38914,38915,38916,38917,38918,38919,38920,38921,38922,38923,38924,
-38925,38926,24636,24669,24666,24679,24641,24665,24675,24747,24838,24845,24925,
-25001,24989,25035,25041,25094,32896,32895,27795,27894,28156,30710,30712,30720,
-30729,30743,30744,30737,26027,30765,30748,30749,30777,30778,30779,30751,30780,
-30757,30764,30755,30761,30798,30829,30806,30807,30758,30800,30791,30796,30826,
-30875,30867,30874,30855,30876,30881,30883,30898,30905,30885,30932,30937,30921,
-30956,30962,30981,30964,30995,31012,31006,31028,40859,40697,40699,40700,30449,
-30468,30477,30457,30471,30472,30490,30498,30489,30509,30502,30517,30520,30544,
-30545,30535,30531,30554,30568,38927,38928,38929,38930,38931,38932,38933,38934,
-38935,38936,38937,38938,38939,38940,38941,38942,38943,38944,38945,38946,38947,
-38948,38949,38950,38951,38952,38953,38954,38955,38956,38957,38958,38959,38960,
-38961,38962,38963,38964,38965,38966,38967,38968,38969,38970,38971,38972,38973,
-38974,38975,38976,38977,38978,38979,38980,38981,38982,38983,38984,38985,38986,
-38987,38988,38989,38990,38991,38992,38993,38994,38995,38996,38997,38998,38999,
-39000,39001,39002,39003,39004,39005,39006,39007,39008,39009,39010,39011,39012,
-39013,39014,39015,39016,39017,39018,39019,39020,39021,39022,30562,30565,30591,
-30605,30589,30592,30604,30609,30623,30624,30640,30645,30653,30010,30016,30030,
-30027,30024,30043,30066,30073,30083,32600,32609,32607,35400,32616,32628,32625,
-32633,32641,32638,30413,30437,34866,38021,38022,38023,38027,38026,38028,38029,
-38031,38032,38036,38039,38037,38042,38043,38044,38051,38052,38059,38058,38061,
-38060,38063,38064,38066,38068,38070,38071,38072,38073,38074,38076,38077,38079,
-38084,38088,38089,38090,38091,38092,38093,38094,38096,38097,38098,38101,38102,
-38103,38105,38104,38107,38110,38111,38112,38114,38116,38117,38119,38120,38122,
-39023,39024,39025,39026,39027,39028,39051,39054,39058,39061,39065,39075,39080,
-39081,39082,39083,39084,39085,39086,39087,39088,39089,39090,39091,39092,39093,
-39094,39095,39096,39097,39098,39099,39100,39101,39102,39103,39104,39105,39106,
-39107,39108,39109,39110,39111,39112,39113,39114,39115,39116,39117,39119,39120,
-39124,39126,39127,39131,39132,39133,39136,39137,39138,39139,39140,39141,39142,
-39145,39146,39147,39148,39149,39150,39151,39152,39153,39154,39155,39156,39157,
-39158,39159,39160,39161,39162,39163,39164,39165,39166,39167,39168,39169,39170,
-39171,39172,39173,39174,39175,38121,38123,38126,38127,38131,38132,38133,38135,
-38137,38140,38141,38143,38147,38146,38150,38151,38153,38154,38157,38158,38159,
-38162,38163,38164,38165,38166,38168,38171,38173,38174,38175,38178,38186,38187,
-38185,38188,38193,38194,38196,38198,38199,38200,38204,38206,38207,38210,38197,
-38212,38213,38214,38217,38220,38222,38223,38226,38227,38228,38230,38231,38232,
-38233,38235,38238,38239,38237,38241,38242,38244,38245,38246,38247,38248,38249,
-38250,38251,38252,38255,38257,38258,38259,38202,30695,30700,38601,31189,31213,
-31203,31211,31238,23879,31235,31234,31262,31252,39176,39177,39178,39179,39180,
-39182,39183,39185,39186,39187,39188,39189,39190,39191,39192,39193,39194,39195,
-39196,39197,39198,39199,39200,39201,39202,39203,39204,39205,39206,39207,39208,
-39209,39210,39211,39212,39213,39215,39216,39217,39218,39219,39220,39221,39222,
-39223,39224,39225,39226,39227,39228,39229,39230,39231,39232,39233,39234,39235,
-39236,39237,39238,39239,39240,39241,39242,39243,39244,39245,39246,39247,39248,
-39249,39250,39251,39254,39255,39256,39257,39258,39259,39260,39261,39262,39263,
-39264,39265,39266,39268,39270,39283,39288,39289,39291,39294,39298,39299,39305,
-31289,31287,31313,40655,39333,31344,30344,30350,30355,30361,30372,29918,29920,
-29996,40480,40482,40488,40489,40490,40491,40492,40498,40497,40502,40504,40503,
-40505,40506,40510,40513,40514,40516,40518,40519,40520,40521,40523,40524,40526,
-40529,40533,40535,40538,40539,40540,40542,40547,40550,40551,40552,40553,40554,
-40555,40556,40561,40557,40563,30098,30100,30102,30112,30109,30124,30115,30131,
-30132,30136,30148,30129,30128,30147,30146,30166,30157,30179,30184,30182,30180,
-30187,30183,30211,30193,30204,30207,30224,30208,30213,30220,30231,30218,30245,
-30232,30229,30233,39308,39310,39322,39323,39324,39325,39326,39327,39328,39329,
-39330,39331,39332,39334,39335,39337,39338,39339,39340,39341,39342,39343,39344,
-39345,39346,39347,39348,39349,39350,39351,39352,39353,39354,39355,39356,39357,
-39358,39359,39360,39361,39362,39363,39364,39365,39366,39367,39368,39369,39370,
-39371,39372,39373,39374,39375,39376,39377,39378,39379,39380,39381,39382,39383,
-39384,39385,39386,39387,39388,39389,39390,39391,39392,39393,39394,39395,39396,
-39397,39398,39399,39400,39401,39402,39403,39404,39405,39406,39407,39408,39409,
-39410,39411,39412,39413,39414,39415,39416,39417,30235,30268,30242,30240,30272,
-30253,30256,30271,30261,30275,30270,30259,30285,30302,30292,30300,30294,30315,
-30319,32714,31462,31352,31353,31360,31366,31368,31381,31398,31392,31404,31400,
-31405,31411,34916,34921,34930,34941,34943,34946,34978,35014,34999,35004,35017,
-35042,35022,35043,35045,35057,35098,35068,35048,35070,35056,35105,35097,35091,
-35099,35082,35124,35115,35126,35137,35174,35195,30091,32997,30386,30388,30684,
-32786,32788,32790,32796,32800,32802,32805,32806,32807,32809,32808,32817,32779,
-32821,32835,32838,32845,32850,32873,32881,35203,39032,39040,39043,39418,39419,
-39420,39421,39422,39423,39424,39425,39426,39427,39428,39429,39430,39431,39432,
-39433,39434,39435,39436,39437,39438,39439,39440,39441,39442,39443,39444,39445,
-39446,39447,39448,39449,39450,39451,39452,39453,39454,39455,39456,39457,39458,
-39459,39460,39461,39462,39463,39464,39465,39466,39467,39468,39469,39470,39471,
-39472,39473,39474,39475,39476,39477,39478,39479,39480,39481,39482,39483,39484,
-39485,39486,39487,39488,39489,39490,39491,39492,39493,39494,39495,39496,39497,
-39498,39499,39500,39501,39502,39503,39504,39505,39506,39507,39508,39509,39510,
-39511,39512,39513,39049,39052,39053,39055,39060,39066,39067,39070,39071,39073,
-39074,39077,39078,34381,34388,34412,34414,34431,34426,34428,34427,34472,34445,
-34443,34476,34461,34471,34467,34474,34451,34473,34486,34500,34485,34510,34480,
-34490,34481,34479,34505,34511,34484,34537,34545,34546,34541,34547,34512,34579,
-34526,34548,34527,34520,34513,34563,34567,34552,34568,34570,34573,34569,34595,
-34619,34590,34597,34606,34586,34622,34632,34612,34609,34601,34615,34623,34690,
-34594,34685,34686,34683,34656,34672,34636,34670,34699,34643,34659,34684,34660,
-34649,34661,34707,34735,34728,34770,39514,39515,39516,39517,39518,39519,39520,
-39521,39522,39523,39524,39525,39526,39527,39528,39529,39530,39531,39538,39555,
-39561,39565,39566,39572,39573,39577,39590,39593,39594,39595,39596,39597,39598,
-39599,39602,39603,39604,39605,39609,39611,39613,39614,39615,39619,39620,39622,
-39623,39624,39625,39626,39629,39630,39631,39632,39634,39636,39637,39638,39639,
-39641,39642,39643,39644,39645,39646,39648,39650,39651,39652,39653,39655,39656,
-39657,39658,39660,39662,39664,39665,39666,39667,39668,39669,39670,39671,39672,
-39674,39676,39677,39678,39679,39680,39681,39682,39684,39685,39686,34758,34696,
-34693,34733,34711,34691,34731,34789,34732,34741,34739,34763,34771,34749,34769,
-34752,34762,34779,34794,34784,34798,34838,34835,34814,34826,34843,34849,34873,
-34876,32566,32578,32580,32581,33296,31482,31485,31496,31491,31492,31509,31498,
-31531,31503,31559,31544,31530,31513,31534,31537,31520,31525,31524,31539,31550,
-31518,31576,31578,31557,31605,31564,31581,31584,31598,31611,31586,31602,31601,
-31632,31654,31655,31672,31660,31645,31656,31621,31658,31644,31650,31659,31668,
-31697,31681,31692,31709,31706,31717,31718,31722,31756,31742,31740,31759,31766,
-31755,39687,39689,39690,39691,39692,39693,39694,39696,39697,39698,39700,39701,
-39702,39703,39704,39705,39706,39707,39708,39709,39710,39712,39713,39714,39716,
-39717,39718,39719,39720,39721,39722,39723,39724,39725,39726,39728,39729,39731,
-39732,39733,39734,39735,39736,39737,39738,39741,39742,39743,39744,39750,39754,
-39755,39756,39758,39760,39762,39763,39765,39766,39767,39768,39769,39770,39771,
-39772,39773,39774,39775,39776,39777,39778,39779,39780,39781,39782,39783,39784,
-39785,39786,39787,39788,39789,39790,39791,39792,39793,39794,39795,39796,39797,
-39798,39799,39800,39801,39802,39803,31775,31786,31782,31800,31809,31808,33278,
-33281,33282,33284,33260,34884,33313,33314,33315,33325,33327,33320,33323,33336,
-33339,33331,33332,33342,33348,33353,33355,33359,33370,33375,33384,34942,34949,
-34952,35032,35039,35166,32669,32671,32679,32687,32688,32690,31868,25929,31889,
-31901,31900,31902,31906,31922,31932,31933,31937,31943,31948,31949,31944,31941,
-31959,31976,33390,26280,32703,32718,32725,32741,32737,32742,32745,32750,32755,
-31992,32119,32166,32174,32327,32411,40632,40628,36211,36228,36244,36241,36273,
-36199,36205,35911,35913,37194,37200,37198,37199,37220,39804,39805,39806,39807,
-39808,39809,39810,39811,39812,39813,39814,39815,39816,39817,39818,39819,39820,
-39821,39822,39823,39824,39825,39826,39827,39828,39829,39830,39831,39832,39833,
-39834,39835,39836,39837,39838,39839,39840,39841,39842,39843,39844,39845,39846,
-39847,39848,39849,39850,39851,39852,39853,39854,39855,39856,39857,39858,39859,
-39860,39861,39862,39863,39864,39865,39866,39867,39868,39869,39870,39871,39872,
-39873,39874,39875,39876,39877,39878,39879,39880,39881,39882,39883,39884,39885,
-39886,39887,39888,39889,39890,39891,39892,39893,39894,39895,39896,39897,39898,
-39899,37218,37217,37232,37225,37231,37245,37246,37234,37236,37241,37260,37253,
-37264,37261,37265,37282,37283,37290,37293,37294,37295,37301,37300,37306,35925,
-40574,36280,36331,36357,36441,36457,36277,36287,36284,36282,36292,36310,36311,
-36314,36318,36302,36303,36315,36294,36332,36343,36344,36323,36345,36347,36324,
-36361,36349,36372,36381,36383,36396,36398,36387,36399,36410,36416,36409,36405,
-36413,36401,36425,36417,36418,36433,36434,36426,36464,36470,36476,36463,36468,
-36485,36495,36500,36496,36508,36510,35960,35970,35978,35973,35992,35988,26011,
-35286,35294,35290,35292,39900,39901,39902,39903,39904,39905,39906,39907,39908,
-39909,39910,39911,39912,39913,39914,39915,39916,39917,39918,39919,39920,39921,
-39922,39923,39924,39925,39926,39927,39928,39929,39930,39931,39932,39933,39934,
-39935,39936,39937,39938,39939,39940,39941,39942,39943,39944,39945,39946,39947,
-39948,39949,39950,39951,39952,39953,39954,39955,39956,39957,39958,39959,39960,
-39961,39962,39963,39964,39965,39966,39967,39968,39969,39970,39971,39972,39973,
-39974,39975,39976,39977,39978,39979,39980,39981,39982,39983,39984,39985,39986,
-39987,39988,39989,39990,39991,39992,39993,39994,39995,35301,35307,35311,35390,
-35622,38739,38633,38643,38639,38662,38657,38664,38671,38670,38698,38701,38704,
-38718,40832,40835,40837,40838,40839,40840,40841,40842,40844,40702,40715,40717,
-38585,38588,38589,38606,38610,30655,38624,37518,37550,37576,37694,37738,37834,
-37775,37950,37995,40063,40066,40069,40070,40071,40072,31267,40075,40078,40080,
-40081,40082,40084,40085,40090,40091,40094,40095,40096,40097,40098,40099,40101,
-40102,40103,40104,40105,40107,40109,40110,40112,40113,40114,40115,40116,40117,
-40118,40119,40122,40123,40124,40125,40132,40133,40134,40135,40138,40139,39996,
-39997,39998,39999,40000,40001,40002,40003,40004,40005,40006,40007,40008,40009,
-40010,40011,40012,40013,40014,40015,40016,40017,40018,40019,40020,40021,40022,
-40023,40024,40025,40026,40027,40028,40029,40030,40031,40032,40033,40034,40035,
-40036,40037,40038,40039,40040,40041,40042,40043,40044,40045,40046,40047,40048,
-40049,40050,40051,40052,40053,40054,40055,40056,40057,40058,40059,40061,40062,
-40064,40067,40068,40073,40074,40076,40079,40083,40086,40087,40088,40089,40093,
-40106,40108,40111,40121,40126,40127,40128,40129,40130,40136,40137,40145,40146,
-40154,40155,40160,40161,40140,40141,40142,40143,40144,40147,40148,40149,40151,
-40152,40153,40156,40157,40159,40162,38780,38789,38801,38802,38804,38831,38827,
-38819,38834,38836,39601,39600,39607,40536,39606,39610,39612,39617,39616,39621,
-39618,39627,39628,39633,39749,39747,39751,39753,39752,39757,39761,39144,39181,
-39214,39253,39252,39647,39649,39654,39663,39659,39675,39661,39673,39688,39695,
-39699,39711,39715,40637,40638,32315,40578,40583,40584,40587,40594,37846,40605,
-40607,40667,40668,40669,40672,40671,40674,40681,40679,40677,40682,40687,40738,
-40748,40751,40761,40759,40765,40766,40772,40163,40164,40165,40166,40167,40168,
-40169,40170,40171,40172,40173,40174,40175,40176,40177,40178,40179,40180,40181,
-40182,40183,40184,40185,40186,40187,40188,40189,40190,40191,40192,40193,40194,
-40195,40196,40197,40198,40199,40200,40201,40202,40203,40204,40205,40206,40207,
-40208,40209,40210,40211,40212,40213,40214,40215,40216,40217,40218,40219,40220,
-40221,40222,40223,40224,40225,40226,40227,40228,40229,40230,40231,40232,40233,
-40234,40235,40236,40237,40238,40239,40240,40241,40242,40243,40244,40245,40246,
-40247,40248,40249,40250,40251,40252,40253,40254,40255,40256,40257,40258,57908,
-57909,57910,57911,57912,57913,57914,57915,57916,57917,57918,57919,57920,57921,
-57922,57923,57924,57925,57926,57927,57928,57929,57930,57931,57932,57933,57934,
-57935,57936,57937,57938,57939,57940,57941,57942,57943,57944,57945,57946,57947,
-57948,57949,57950,57951,57952,57953,57954,57955,57956,57957,57958,57959,57960,
-57961,57962,57963,57964,57965,57966,57967,57968,57969,57970,57971,57972,57973,
-57974,57975,57976,57977,57978,57979,57980,57981,57982,57983,57984,57985,57986,
-57987,57988,57989,57990,57991,57992,57993,57994,57995,57996,57997,57998,57999,
-58000,58001,40259,40260,40261,40262,40263,40264,40265,40266,40267,40268,40269,
-40270,40271,40272,40273,40274,40275,40276,40277,40278,40279,40280,40281,40282,
-40283,40284,40285,40286,40287,40288,40289,40290,40291,40292,40293,40294,40295,
-40296,40297,40298,40299,40300,40301,40302,40303,40304,40305,40306,40307,40308,
-40309,40310,40311,40312,40313,40314,40315,40316,40317,40318,40319,40320,40321,
-40322,40323,40324,40325,40326,40327,40328,40329,40330,40331,40332,40333,40334,
-40335,40336,40337,40338,40339,40340,40341,40342,40343,40344,40345,40346,40347,
-40348,40349,40350,40351,40352,40353,40354,58002,58003,58004,58005,58006,58007,
-58008,58009,58010,58011,58012,58013,58014,58015,58016,58017,58018,58019,58020,
-58021,58022,58023,58024,58025,58026,58027,58028,58029,58030,58031,58032,58033,
-58034,58035,58036,58037,58038,58039,58040,58041,58042,58043,58044,58045,58046,
-58047,58048,58049,58050,58051,58052,58053,58054,58055,58056,58057,58058,58059,
-58060,58061,58062,58063,58064,58065,58066,58067,58068,58069,58070,58071,58072,
-58073,58074,58075,58076,58077,58078,58079,58080,58081,58082,58083,58084,58085,
-58086,58087,58088,58089,58090,58091,58092,58093,58094,58095,40355,40356,40357,
-40358,40359,40360,40361,40362,40363,40364,40365,40366,40367,40368,40369,40370,
-40371,40372,40373,40374,40375,40376,40377,40378,40379,40380,40381,40382,40383,
-40384,40385,40386,40387,40388,40389,40390,40391,40392,40393,40394,40395,40396,
-40397,40398,40399,40400,40401,40402,40403,40404,40405,40406,40407,40408,40409,
-40410,40411,40412,40413,40414,40415,40416,40417,40418,40419,40420,40421,40422,
-40423,40424,40425,40426,40427,40428,40429,40430,40431,40432,40433,40434,40435,
-40436,40437,40438,40439,40440,40441,40442,40443,40444,40445,40446,40447,40448,
-40449,40450,58096,58097,58098,58099,58100,58101,58102,58103,58104,58105,58106,
-58107,58108,58109,58110,58111,58112,58113,58114,58115,58116,58117,58118,58119,
-58120,58121,58122,58123,58124,58125,58126,58127,58128,58129,58130,58131,58132,
-58133,58134,58135,58136,58137,58138,58139,58140,58141,58142,58143,58144,58145,
-58146,58147,58148,58149,58150,58151,58152,58153,58154,58155,58156,58157,58158,
-58159,58160,58161,58162,58163,58164,58165,58166,58167,58168,58169,58170,58171,
-58172,58173,58174,58175,58176,58177,58178,58179,58180,58181,58182,58183,58184,
-58185,58186,58187,58188,58189,40451,40452,40453,40454,40455,40456,40457,40458,
-40459,40460,40461,40462,40463,40464,40465,40466,40467,40468,40469,40470,40471,
-40472,40473,40474,40475,40476,40477,40478,40484,40487,40494,40496,40500,40507,
-40508,40512,40525,40528,40530,40531,40532,40534,40537,40541,40543,40544,40545,
-40546,40549,40558,40559,40562,40564,40565,40566,40567,40568,40569,40570,40571,
-40572,40573,40576,40577,40579,40580,40581,40582,40585,40586,40588,40589,40590,
-40591,40592,40593,40596,40597,40598,40599,40600,40601,40602,40603,40604,40606,
-40608,40609,40610,40611,40612,40613,40615,40616,40617,40618,58190,58191,58192,
-58193,58194,58195,58196,58197,58198,58199,58200,58201,58202,58203,58204,58205,
-58206,58207,58208,58209,58210,58211,58212,58213,58214,58215,58216,58217,58218,
-58219,58220,58221,58222,58223,58224,58225,58226,58227,58228,58229,58230,58231,
-58232,58233,58234,58235,58236,58237,58238,58239,58240,58241,58242,58243,58244,
-58245,58246,58247,58248,58249,58250,58251,58252,58253,58254,58255,58256,58257,
-58258,58259,58260,58261,58262,58263,58264,58265,58266,58267,58268,58269,58270,
-58271,58272,58273,58274,58275,58276,58277,58278,58279,58280,58281,58282,58283,
-40619,40620,40621,40622,40623,40624,40625,40626,40627,40629,40630,40631,40633,
-40634,40636,40639,40640,40641,40642,40643,40645,40646,40647,40648,40650,40651,
-40652,40656,40658,40659,40661,40662,40663,40665,40666,40670,40673,40675,40676,
-40678,40680,40683,40684,40685,40686,40688,40689,40690,40691,40692,40693,40694,
-40695,40696,40698,40701,40703,40704,40705,40706,40707,40708,40709,40710,40711,
-40712,40713,40714,40716,40719,40721,40722,40724,40725,40726,40728,40730,40731,
-40732,40733,40734,40735,40737,40739,40740,40741,40742,40743,40744,40745,40746,
-40747,40749,40750,40752,40753,58284,58285,58286,58287,58288,58289,58290,58291,
-58292,58293,58294,58295,58296,58297,58298,58299,58300,58301,58302,58303,58304,
-58305,58306,58307,58308,58309,58310,58311,58312,58313,58314,58315,58316,58317,
-58318,58319,58320,58321,58322,58323,58324,58325,58326,58327,58328,58329,58330,
-58331,58332,58333,58334,58335,58336,58337,58338,58339,58340,58341,58342,58343,
-58344,58345,58346,58347,58348,58349,58350,58351,58352,58353,58354,58355,58356,
-58357,58358,58359,58360,58361,58362,58363,58364,58365,58366,58367,58368,58369,
-58370,58371,58372,58373,58374,58375,58376,58377,40754,40755,40756,40757,40758,
-40760,40762,40764,40767,40768,40769,40770,40771,40773,40774,40775,40776,40777,
-40778,40779,40780,40781,40782,40783,40786,40787,40788,40789,40790,40791,40792,
-40793,40794,40795,40796,40797,40798,40799,40800,40801,40802,40803,40804,40805,
-40806,40807,40808,40809,40810,40811,40812,40813,40814,40815,40816,40817,40818,
-40819,40820,40821,40822,40823,40824,40825,40826,40827,40828,40829,40830,40833,
-40834,40845,40846,40847,40848,40849,40850,40851,40852,40853,40854,40855,40856,
-40860,40861,40862,40865,40866,40867,40868,40869,63788,63865,63893,63975,63985,
-58378,58379,58380,58381,58382,58383,58384,58385,58386,58387,58388,58389,58390,
-58391,58392,58393,58394,58395,58396,58397,58398,58399,58400,58401,58402,58403,
-58404,58405,58406,58407,58408,58409,58410,58411,58412,58413,58414,58415,58416,
-58417,58418,58419,58420,58421,58422,58423,58424,58425,58426,58427,58428,58429,
-58430,58431,58432,58433,58434,58435,58436,58437,58438,58439,58440,58441,58442,
-58443,58444,58445,58446,58447,58448,58449,58450,58451,58452,58453,58454,58455,
-58456,58457,58458,58459,58460,58461,58462,58463,58464,58465,58466,58467,58468,
-58469,58470,58471,64012,64013,64014,64015,64017,64019,64020,64024,64031,64032,
-64033,64035,64036,64039,64040,64041,11905,59414,59415,59416,11908,13427,13383,
-11912,11915,59422,13726,13850,13838,11916,11927,14702,14616,59430,14799,14815,
-14963,14800,59435,59436,15182,15470,15584,11943,59441,59442,11946,16470,16735,
-11950,17207,11955,11958,11959,59451,17329,17324,11963,17373,17622,18017,17996,
-59459,18211,18217,18300,18317,11978,18759,18810,18813,18818,18819,18821,18822,
-18847,18843,18871,18870,59476,59477,19619,19615,19616,19617,19575,19618,19731,
-19732,19733,19734,19735,19736,19737,19886,59492,58472,58473,58474,58475,58476,
-58477,58478,58479,58480,58481,58482,58483,58484,58485,58486,58487,58488,58489,
-58490,58491,58492,58493,58494,58495,58496,58497,58498,58499,58500,58501,58502,
-58503,58504,58505,58506,58507,58508,58509,58510,58511,58512,58513,58514,58515,
-58516,58517,58518,58519,58520,58521,58522,58523,58524,58525,58526,58527,58528,
-58529,58530,58531,58532,58533,58534,58535,58536,58537,58538,58539,58540,58541,
-58542,58543,58544,58545,58546,58547,58548,58549,58550,58551,58552,58553,58554,
-58555,58556,58557,58558,58559,58560,58561,58562,58563,58564,58565,
+19970, 19972, 19973, 19974, 19983, 19986, 19991, 19999, 20000, 20001, 20003,
+    20006, 20009, 20014, 20015, 20017, 20019, 20021, 20023, 20028, 20032, 20033,
+    20034, 20036, 20038, 20042, 20049, 20053, 20055, 20058, 20059, 20066, 20067,
+    20068, 20069, 20071, 20072, 20074, 20075, 20076, 20077, 20078, 20079, 20082,
+    20084, 20085, 20086, 20087, 20088, 20089, 20090, 20091, 20092, 20093, 20095,
+    20096, 20097, 20098, 20099, 20100, 20101, 20103, 20106, 20112, 20118, 20119,
+    20121, 20124, 20125, 20126, 20131, 20138, 20143, 20144, 20145, 20148, 20150,
+    20151, 20152, 20153, 20156, 20157, 20158, 20168, 20172, 20175, 20176, 20178,
+    20186, 20187, 20188, 20192, 20194, 20198, 20199, 20201, 20205, 20206, 20207,
+    20209, 20212, 20216, 20217, 20218, 20220, 20222, 20224, 20226, 20227, 20228,
+    20229, 20230, 20231, 20232, 20235, 20236, 20242, 20243, 20244, 20245, 20246,
+    20252, 20253, 20257, 20259, 20264, 20265, 20268, 20269, 20270, 20273, 20275,
+    20277, 20279, 20281, 20283, 20286, 20287, 20288, 20289, 20290, 20292, 20293,
+    20295, 20296, 20297, 20298, 20299, 20300, 20306, 20308, 20310, 20321, 20322,
+    20326, 20328, 20330, 20331, 20333, 20334, 20337, 20338, 20341, 20343, 20344,
+    20345, 20346, 20349, 20352, 20353, 20354, 20357, 20358, 20359, 20362, 20364,
+    20366, 20368, 20370, 20371, 20373, 20374, 20376, 20377, 20378, 20380, 20382,
+    20383, 20385, 20386, 20388, 20395, 20397, 20400, 20401, 20402, 20403, 20404,
+    20406, 20407, 20408, 20409, 20410, 20411, 20412, 20413, 20414, 20416, 20417,
+    20418, 20422, 20423, 20424, 20425, 20427, 20428, 20429, 20434, 20435, 20436,
+    20437, 20438, 20441, 20443, 20448, 20450, 20452, 20453, 20455, 20459, 20460,
+    20464, 20466, 20468, 20469, 20470, 20471, 20473, 20475, 20476, 20477, 20479,
+    20480, 20481, 20482, 20483, 20484, 20485, 20486, 20487, 20488, 20489, 20490,
+    20491, 20494, 20496, 20497, 20499, 20501, 20502, 20503, 20507, 20509, 20510,
+    20512, 20514, 20515, 20516, 20519, 20523, 20527, 20528, 20529, 20530, 20531,
+    20532, 20533, 20534, 20535, 20536, 20537, 20539, 20541, 20543, 20544, 20545,
+    20546, 20548, 20549, 20550, 20553, 20554, 20555, 20557, 20560, 20561, 20562,
+    20563, 20564, 20566, 20567, 20568, 20569, 20571, 20573, 20574, 20575, 20576,
+    20577, 20578, 20579, 20580, 20582, 20583, 20584, 20585, 20586, 20587, 20589,
+    20590, 20591, 20592, 20593, 20594, 20595, 20596, 20597, 20600, 20601, 20602,
+    20604, 20605, 20609, 20610, 20611, 20612, 20614, 20615, 20617, 20618, 20619,
+    20620, 20622, 20623, 20624, 20625, 20626, 20627, 20628, 20629, 20630, 20631,
+    20632, 20633, 20634, 20635, 20636, 20637, 20638, 20639, 20640, 20641, 20642,
+    20644, 20646, 20650, 20651, 20653, 20654, 20655, 20656, 20657, 20659, 20660,
+    20661, 20662, 20663, 20664, 20665, 20668, 20669, 20670, 20671, 20672, 20673,
+    20674, 20675, 20676, 20677, 20678, 20679, 20680, 20681, 20682, 20683, 20684,
+    20685, 20686, 20688, 20689, 20690, 20691, 20692, 20693, 20695, 20696, 20697,
+    20699, 20700, 20701, 20702, 20703, 20704, 20705, 20706, 20707, 20708, 20709,
+    20712, 20713, 20714, 20715, 20719, 20720, 20721, 20722, 20724, 20726, 20727,
+    20728, 20729, 20730, 20732, 20733, 20734, 20735, 20736, 20737, 20738, 20739,
+    20740, 20741, 20744, 20745, 20746, 20748, 20749, 20750, 20751, 20752, 20753,
+    20755, 20756, 20757, 20758, 20759, 20760, 20761, 20762, 20763, 20764, 20765,
+    20766, 20767, 20768, 20770, 20771, 20772, 20773, 20774, 20775, 20776, 20777,
+    20778, 20779, 20780, 20781, 20782, 20783, 20784, 20785, 20786, 20787, 20788,
+    20789, 20790, 20791, 20792, 20793, 20794, 20795, 20796, 20797, 20798, 20802,
+    20807, 20810, 20812, 20814, 20815, 20816, 20818, 20819, 20823, 20824, 20825,
+    20827, 20829, 20830, 20831, 20832, 20833, 20835, 20836, 20838, 20839, 20841,
+    20842, 20847, 20850, 20858, 20862, 20863, 20867, 20868, 20870, 20871, 20874,
+    20875, 20878, 20879, 20880, 20881, 20883, 20884, 20888, 20890, 20893, 20894,
+    20895, 20897, 20899, 20902, 20903, 20904, 20905, 20906, 20909, 20910, 20916,
+    20920, 20921, 20922, 20926, 20927, 20929, 20930, 20931, 20933, 20936, 20938,
+    20941, 20942, 20944, 20946, 20947, 20948, 20949, 20950, 20951, 20952, 20953,
+    20954, 20956, 20958, 20959, 20962, 20963, 20965, 20966, 20967, 20968, 20969,
+    20970, 20972, 20974, 20977, 20978, 20980, 20983, 20990, 20996, 20997, 21001,
+    21003, 21004, 21007, 21008, 21011, 21012, 21013, 21020, 21022, 21023, 21025,
+    21026, 21027, 21029, 21030, 21031, 21034, 21036, 21039, 21041, 21042, 21044,
+    21045, 21052, 21054, 21060, 21061, 21062, 21063, 21064, 21065, 21067, 21070,
+    21071, 21074, 21075, 21077, 21079, 21080, 21081, 21082, 21083, 21085, 21087,
+    21088, 21090, 21091, 21092, 21094, 21096, 21099, 21100, 21101, 21102, 21104,
+    21105, 21107, 21108, 21109, 21110, 21111, 21112, 21113, 21114, 21115, 21116,
+    21118, 21120, 21123, 21124, 21125, 21126, 21127, 21129, 21130, 21131, 21132,
+    21133, 21134, 21135, 21137, 21138, 21140, 21141, 21142, 21143, 21144, 21145,
+    21146, 21148, 21156, 21157, 21158, 21159, 21166, 21167, 21168, 21172, 21173,
+    21174, 21175, 21176, 21177, 21178, 21179, 21180, 21181, 21184, 21185, 21186,
+    21188, 21189, 21190, 21192, 21194, 21196, 21197, 21198, 21199, 21201, 21203,
+    21204, 21205, 21207, 21209, 21210, 21211, 21212, 21213, 21214, 21216, 21217,
+    21218, 21219, 21221, 21222, 21223, 21224, 21225, 21226, 21227, 21228, 21229,
+    21230, 21231, 21233, 21234, 21235, 21236, 21237, 21238, 21239, 21240, 21243,
+    21244, 21245, 21249, 21250, 21251, 21252, 21255, 21257, 21258, 21259, 21260,
+    21262, 21265, 21266, 21267, 21268, 21272, 21275, 21276, 21278, 21279, 21282,
+    21284, 21285, 21287, 21288, 21289, 21291, 21292, 21293, 21295, 21296, 21297,
+    21298, 21299, 21300, 21301, 21302, 21303, 21304, 21308, 21309, 21312, 21314,
+    21316, 21318, 21323, 21324, 21325, 21328, 21332, 21336, 21337, 21339, 21341,
+    21349, 21352, 21354, 21356, 21357, 21362, 21366, 21369, 21371, 21372, 21373,
+    21374, 21376, 21377, 21379, 21383, 21384, 21386, 21390, 21391, 21392, 21393,
+    21394, 21395, 21396, 21398, 21399, 21401, 21403, 21404, 21406, 21408, 21409,
+    21412, 21415, 21418, 21419, 21420, 21421, 21423, 21424, 21425, 21426, 21427,
+    21428, 21429, 21431, 21432, 21433, 21434, 21436, 21437, 21438, 21440, 21443,
+    21444, 21445, 21446, 21447, 21454, 21455, 21456, 21458, 21459, 21461, 21466,
+    21468, 21469, 21470, 21473, 21474, 21479, 21492, 21498, 21502, 21503, 21504,
+    21506, 21509, 21511, 21515, 21524, 21528, 21529, 21530, 21532, 21538, 21540,
+    21541, 21546, 21552, 21555, 21558, 21559, 21562, 21565, 21567, 21569, 21570,
+    21572, 21573, 21575, 21577, 21580, 21581, 21582, 21583, 21585, 21594, 21597,
+    21598, 21599, 21600, 21601, 21603, 21605, 21607, 21609, 21610, 21611, 21612,
+    21613, 21614, 21615, 21616, 21620, 21625, 21626, 21630, 21631, 21633, 21635,
+    21637, 21639, 21640, 21641, 21642, 21645, 21649, 21651, 21655, 21656, 21660,
+    21662, 21663, 21664, 21665, 21666, 21669, 21678, 21680, 21682, 21685, 21686,
+    21687, 21689, 21690, 21692, 21694, 21699, 21701, 21706, 21707, 21718, 21720,
+    21723, 21728, 21729, 21730, 21731, 21732, 21739, 21740, 21743, 21744, 21745,
+    21748, 21749, 21750, 21751, 21752, 21753, 21755, 21758, 21760, 21762, 21763,
+    21764, 21765, 21768, 21770, 21771, 21772, 21773, 21774, 21778, 21779, 21781,
+    21782, 21783, 21784, 21785, 21786, 21788, 21789, 21790, 21791, 21793, 21797,
+    21798, 21800, 21801, 21803, 21805, 21810, 21812, 21813, 21814, 21816, 21817,
+    21818, 21819, 21821, 21824, 21826, 21829, 21831, 21832, 21835, 21836, 21837,
+    21838, 21839, 21841, 21842, 21843, 21844, 21847, 21848, 21849, 21850, 21851,
+    21853, 21854, 21855, 21856, 21858, 21859, 21864, 21865, 21867, 21871, 21872,
+    21873, 21874, 21875, 21876, 21881, 21882, 21885, 21887, 21893, 21894, 21900,
+    21901, 21902, 21904, 21906, 21907, 21909, 21910, 21911, 21914, 21915, 21918,
+    21920, 21921, 21922, 21923, 21924, 21925, 21926, 21928, 21929, 21930, 21931,
+    21932, 21933, 21934, 21935, 21936, 21938, 21940, 21942, 21944, 21946, 21948,
+    21951, 21952, 21953, 21954, 21955, 21958, 21959, 21960, 21962, 21963, 21966,
+    21967, 21968, 21973, 21975, 21976, 21977, 21978, 21979, 21982, 21984, 21986,
+    21991, 21993, 21997, 21998, 22000, 22001, 22004, 22006, 22008, 22009, 22010,
+    22011, 22012, 22015, 22018, 22019, 22020, 22021, 22022, 22023, 22026, 22027,
+    22029, 22032, 22033, 22034, 22035, 22036, 22037, 22038, 22039, 22041, 22042,
+    22044, 22045, 22048, 22049, 22050, 22053, 22054, 22056, 22057, 22058, 22059,
+    22062, 22063, 22064, 22067, 22069, 22071, 22072, 22074, 22076, 22077, 22078,
+    22080, 22081, 22082, 22083, 22084, 22085, 22086, 22087, 22088, 22089, 22090,
+    22091, 22095, 22096, 22097, 22098, 22099, 22101, 22102, 22106, 22107, 22109,
+    22110, 22111, 22112, 22113, 22115, 22117, 22118, 22119, 22125, 22126, 22127,
+    22128, 22130, 22131, 22132, 22133, 22135, 22136, 22137, 22138, 22141, 22142,
+    22143, 22144, 22145, 22146, 22147, 22148, 22151, 22152, 22153, 22154, 22155,
+    22156, 22157, 22160, 22161, 22162, 22164, 22165, 22166, 22167, 22168, 22169,
+    22170, 22171, 22172, 22173, 22174, 22175, 22176, 22177, 22178, 22180, 22181,
+    22182, 22183, 22184, 22185, 22186, 22187, 22188, 22189, 22190, 22192, 22193,
+    22194, 22195, 22196, 22197, 22198, 22200, 22201, 22202, 22203, 22205, 22206,
+    22207, 22208, 22209, 22210, 22211, 22212, 22213, 22214, 22215, 22216, 22217,
+    22219, 22220, 22221, 22222, 22223, 22224, 22225, 22226, 22227, 22229, 22230,
+    22232, 22233, 22236, 22243, 22245, 22246, 22247, 22248, 22249, 22250, 22252,
+    22254, 22255, 22258, 22259, 22262, 22263, 22264, 22267, 22268, 22272, 22273,
+    22274, 22277, 22279, 22283, 22284, 22285, 22286, 22287, 22288, 22289, 22290,
+    22291, 22292, 22293, 22294, 22295, 22296, 22297, 22298, 22299, 22301, 22302,
+    22304, 22305, 22306, 22308, 22309, 22310, 22311, 22315, 22321, 22322, 22324,
+    22325, 22326, 22327, 22328, 22332, 22333, 22335, 22337, 22339, 22340, 22341,
+    22342, 22344, 22345, 22347, 22354, 22355, 22356, 22357, 22358, 22360, 22361,
+    22370, 22371, 22373, 22375, 22380, 22382, 22384, 22385, 22386, 22388, 22389,
+    22392, 22393, 22394, 22397, 22398, 22399, 22400, 22401, 22407, 22408, 22409,
+    22410, 22413, 22414, 22415, 22416, 22417, 22420, 22421, 22422, 22423, 22424,
+    22425, 22426, 22428, 22429, 22430, 22431, 22437, 22440, 22442, 22444, 22447,
+    22448, 22449, 22451, 22453, 22454, 22455, 22457, 22458, 22459, 22460, 22461,
+    22462, 22463, 22464, 22465, 22468, 22469, 22470, 22471, 22472, 22473, 22474,
+    22476, 22477, 22480, 22481, 22483, 22486, 22487, 22491, 22492, 22494, 22497,
+    22498, 22499, 22501, 22502, 22503, 22504, 22505, 22506, 22507, 22508, 22510,
+    22512, 22513, 22514, 22515, 22517, 22518, 22519, 22523, 22524, 22526, 22527,
+    22529, 22531, 22532, 22533, 22536, 22537, 22538, 22540, 22542, 22543, 22544,
+    22546, 22547, 22548, 22550, 22551, 22552, 22554, 22555, 22556, 22557, 22559,
+    22562, 22563, 22565, 22566, 22567, 22568, 22569, 22571, 22572, 22573, 22574,
+    22575, 22577, 22578, 22579, 22580, 22582, 22583, 22584, 22585, 22586, 22587,
+    22588, 22589, 22590, 22591, 22592, 22593, 22594, 22595, 22597, 22598, 22599,
+    22600, 22601, 22602, 22603, 22606, 22607, 22608, 22610, 22611, 22613, 22614,
+    22615, 22617, 22618, 22619, 22620, 22621, 22623, 22624, 22625, 22626, 22627,
+    22628, 22630, 22631, 22632, 22633, 22634, 22637, 22638, 22639, 22640, 22641,
+    22642, 22643, 22644, 22645, 22646, 22647, 22648, 22649, 22650, 22651, 22652,
+    22653, 22655, 22658, 22660, 22662, 22663, 22664, 22666, 22667, 22668, 22669,
+    22670, 22671, 22672, 22673, 22676, 22677, 22678, 22679, 22680, 22683, 22684,
+    22685, 22688, 22689, 22690, 22691, 22692, 22693, 22694, 22695, 22698, 22699,
+    22700, 22701, 22702, 22703, 22704, 22705, 22706, 22707, 22708, 22709, 22710,
+    22711, 22712, 22713, 22714, 22715, 22717, 22718, 22719, 22720, 22722, 22723,
+    22724, 22726, 22727, 22728, 22729, 22730, 22731, 22732, 22733, 22734, 22735,
+    22736, 22738, 22739, 22740, 22742, 22743, 22744, 22745, 22746, 22747, 22748,
+    22749, 22750, 22751, 22752, 22753, 22754, 22755, 22757, 22758, 22759, 22760,
+    22761, 22762, 22765, 22767, 22769, 22770, 22772, 22773, 22775, 22776, 22778,
+    22779, 22780, 22781, 22782, 22783, 22784, 22785, 22787, 22789, 22790, 22792,
+    22793, 22794, 22795, 22796, 22798, 22800, 22801, 22802, 22803, 22807, 22808,
+    22811, 22813, 22814, 22816, 22817, 22818, 22819, 22822, 22824, 22828, 22832,
+    22834, 22835, 22837, 22838, 22843, 22845, 22846, 22847, 22848, 22851, 22853,
+    22854, 22858, 22860, 22861, 22864, 22866, 22867, 22873, 22875, 22876, 22877,
+    22878, 22879, 22881, 22883, 22884, 22886, 22887, 22888, 22889, 22890, 22891,
+    22892, 22893, 22894, 22895, 22896, 22897, 22898, 22901, 22903, 22906, 22907,
+    22908, 22910, 22911, 22912, 22917, 22921, 22923, 22924, 22926, 22927, 22928,
+    22929, 22932, 22933, 22936, 22938, 22939, 22940, 22941, 22943, 22944, 22945,
+    22946, 22950, 22951, 22956, 22957, 22960, 22961, 22963, 22964, 22965, 22966,
+    22967, 22968, 22970, 22972, 22973, 22975, 22976, 22977, 22978, 22979, 22980,
+    22981, 22983, 22984, 22985, 22988, 22989, 22990, 22991, 22997, 22998, 23001,
+    23003, 23006, 23007, 23008, 23009, 23010, 23012, 23014, 23015, 23017, 23018,
+    23019, 23021, 23022, 23023, 23024, 23025, 23026, 23027, 23028, 23029, 23030,
+    23031, 23032, 23034, 23036, 23037, 23038, 23040, 23042, 23050, 23051, 23053,
+    23054, 23055, 23056, 23058, 23060, 23061, 23062, 23063, 23065, 23066, 23067,
+    23069, 23070, 23073, 23074, 23076, 23078, 23079, 23080, 23082, 23083, 23084,
+    23085, 23086, 23087, 23088, 23091, 23093, 23095, 23096, 23097, 23098, 23099,
+    23101, 23102, 23103, 23105, 23106, 23107, 23108, 23109, 23111, 23112, 23115,
+    23116, 23117, 23118, 23119, 23120, 23121, 23122, 23123, 23124, 23126, 23127,
+    23128, 23129, 23131, 23132, 23133, 23134, 23135, 23136, 23137, 23139, 23140,
+    23141, 23142, 23144, 23145, 23147, 23148, 23149, 23150, 23151, 23152, 23153,
+    23154, 23155, 23160, 23161, 23163, 23164, 23165, 23166, 23168, 23169, 23170,
+    23171, 23172, 23173, 23174, 23175, 23176, 23177, 23178, 23179, 23180, 23181,
+    23182, 23183, 23184, 23185, 23187, 23188, 23189, 23190, 23191, 23192, 23193,
+    23196, 23197, 23198, 23199, 23200, 23201, 23202, 23203, 23204, 23205, 23206,
+    23207, 23208, 23209, 23211, 23212, 23213, 23214, 23215, 23216, 23217, 23220,
+    23222, 23223, 23225, 23226, 23227, 23228, 23229, 23231, 23232, 23235, 23236,
+    23237, 23238, 23239, 23240, 23242, 23243, 23245, 23246, 23247, 23248, 23249,
+    23251, 23253, 23255, 23257, 23258, 23259, 23261, 23262, 23263, 23266, 23268,
+    23269, 23271, 23272, 23274, 23276, 23277, 23278, 23279, 23280, 23282, 23283,
+    23284, 23285, 23286, 23287, 23288, 23289, 23290, 23291, 23292, 23293, 23294,
+    23295, 23296, 23297, 23298, 23299, 23300, 23301, 23302, 23303, 23304, 23306,
+    23307, 23308, 23309, 23310, 23311, 23312, 23313, 23314, 23315, 23316, 23317,
+    23320, 23321, 23322, 23323, 23324, 23325, 23326, 23327, 23328, 23329, 23330,
+    23331, 23332, 23333, 23334, 23335, 23336, 23337, 23338, 23339, 23340, 23341,
+    23342, 23343, 23344, 23345, 23347, 23349, 23350, 23352, 23353, 23354, 23355,
+    23356, 23357, 23358, 23359, 23361, 23362, 23363, 23364, 23365, 23366, 23367,
+    23368, 23369, 23370, 23371, 23372, 23373, 23374, 23375, 23378, 23382, 23390,
+    23392, 23393, 23399, 23400, 23403, 23405, 23406, 23407, 23410, 23412, 23414,
+    23415, 23416, 23417, 23419, 23420, 23422, 23423, 23426, 23430, 23434, 23437,
+    23438, 23440, 23441, 23442, 23444, 23446, 23455, 23463, 23464, 23465, 23468,
+    23469, 23470, 23471, 23473, 23474, 23479, 23482, 23483, 23484, 23488, 23489,
+    23491, 23496, 23497, 23498, 23499, 23501, 23502, 23503, 23505, 23508, 23509,
+    23510, 23511, 23512, 23513, 23514, 23515, 23516, 23520, 23522, 23523, 23526,
+    23527, 23529, 23530, 23531, 23532, 23533, 23535, 23537, 23538, 23539, 23540,
+    23541, 23542, 23543, 23549, 23550, 23552, 23554, 23555, 23557, 23559, 23560,
+    23563, 23564, 23565, 23566, 23568, 23570, 23571, 23575, 23577, 23579, 23582,
+    23583, 23584, 23585, 23587, 23590, 23592, 23593, 23594, 23595, 23597, 23598,
+    23599, 23600, 23602, 23603, 23605, 23606, 23607, 23619, 23620, 23622, 23623,
+    23628, 23629, 23634, 23635, 23636, 23638, 23639, 23640, 23642, 23643, 23644,
+    23645, 23647, 23650, 23652, 23655, 23656, 23657, 23658, 23659, 23660, 23661,
+    23664, 23666, 23667, 23668, 23669, 23670, 23671, 23672, 23675, 23676, 23677,
+    23678, 23680, 23683, 23684, 23685, 23686, 23687, 23689, 23690, 23691, 23694,
+    23695, 23698, 23699, 23701, 23709, 23710, 23711, 23712, 23713, 23716, 23717,
+    23718, 23719, 23720, 23722, 23726, 23727, 23728, 23730, 23732, 23734, 23737,
+    23738, 23739, 23740, 23742, 23744, 23746, 23747, 23749, 23750, 23751, 23752,
+    23753, 23754, 23756, 23757, 23758, 23759, 23760, 23761, 23763, 23764, 23765,
+    23766, 23767, 23768, 23770, 23771, 23772, 23773, 23774, 23775, 23776, 23778,
+    23779, 23783, 23785, 23787, 23788, 23790, 23791, 23793, 23794, 23795, 23796,
+    23797, 23798, 23799, 23800, 23801, 23802, 23804, 23805, 23806, 23807, 23808,
+    23809, 23812, 23813, 23816, 23817, 23818, 23819, 23820, 23821, 23823, 23824,
+    23825, 23826, 23827, 23829, 23831, 23832, 23833, 23834, 23836, 23837, 23839,
+    23840, 23841, 23842, 23843, 23845, 23848, 23850, 23851, 23852, 23855, 23856,
+    23857, 23858, 23859, 23861, 23862, 23863, 23864, 23865, 23866, 23867, 23868,
+    23871, 23872, 23873, 23874, 23875, 23876, 23877, 23878, 23880, 23881, 23885,
+    23886, 23887, 23888, 23889, 23890, 23891, 23892, 23893, 23894, 23895, 23897,
+    23898, 23900, 23902, 23903, 23904, 23905, 23906, 23907, 23908, 23909, 23910,
+    23911, 23912, 23914, 23917, 23918, 23920, 23921, 23922, 23923, 23925, 23926,
+    23927, 23928, 23929, 23930, 23931, 23932, 23933, 23934, 23935, 23936, 23937,
+    23939, 23940, 23941, 23942, 23943, 23944, 23945, 23946, 23947, 23948, 23949,
+    23950, 23951, 23952, 23953, 23954, 23955, 23956, 23957, 23958, 23959, 23960,
+    23962, 23963, 23964, 23966, 23967, 23968, 23969, 23970, 23971, 23972, 23973,
+    23974, 23975, 23976, 23977, 23978, 23979, 23980, 23981, 23982, 23983, 23984,
+    23985, 23986, 23987, 23988, 23989, 23990, 23992, 23993, 23994, 23995, 23996,
+    23997, 23998, 23999, 24000, 24001, 24002, 24003, 24004, 24006, 24007, 24008,
+    24009, 24010, 24011, 24012, 24014, 24015, 24016, 24017, 24018, 24019, 24020,
+    24021, 24022, 24023, 24024, 24025, 24026, 24028, 24031, 24032, 24035, 24036,
+    24042, 24044, 24045, 24048, 24053, 24054, 24056, 24057, 24058, 24059, 24060,
+    24063, 24064, 24068, 24071, 24073, 24074, 24075, 24077, 24078, 24082, 24083,
+    24087, 24094, 24095, 24096, 24097, 24098, 24099, 24100, 24101, 24104, 24105,
+    24106, 24107, 24108, 24111, 24112, 24114, 24115, 24116, 24117, 24118, 24121,
+    24122, 24126, 24127, 24128, 24129, 24131, 24134, 24135, 24136, 24137, 24138,
+    24139, 24141, 24142, 24143, 24144, 24145, 24146, 24147, 24150, 24151, 24152,
+    24153, 24154, 24156, 24157, 24159, 24160, 24163, 24164, 24165, 24166, 24167,
+    24168, 24169, 24170, 24171, 24172, 24173, 24174, 24175, 24176, 24177, 24181,
+    24183, 24185, 24190, 24193, 24194, 24195, 24197, 24200, 24201, 24204, 24205,
+    24206, 24210, 24216, 24219, 24221, 24225, 24226, 24227, 24228, 24232, 24233,
+    24234, 24235, 24236, 24238, 24239, 24240, 24241, 24242, 24244, 24250, 24251,
+    24252, 24253, 24255, 24256, 24257, 24258, 24259, 24260, 24261, 24262, 24263,
+    24264, 24267, 24268, 24269, 24270, 24271, 24272, 24276, 24277, 24279, 24280,
+    24281, 24282, 24284, 24285, 24286, 24287, 24288, 24289, 24290, 24291, 24292,
+    24293, 24294, 24295, 24297, 24299, 24300, 24301, 24302, 24303, 24304, 24305,
+    24306, 24307, 24309, 24312, 24313, 24315, 24316, 24317, 24325, 24326, 24327,
+    24329, 24332, 24333, 24334, 24336, 24338, 24340, 24342, 24345, 24346, 24348,
+    24349, 24350, 24353, 24354, 24355, 24356, 24360, 24363, 24364, 24366, 24368,
+    24370, 24371, 24372, 24373, 24374, 24375, 24376, 24379, 24381, 24382, 24383,
+    24385, 24386, 24387, 24388, 24389, 24390, 24391, 24392, 24393, 24394, 24395,
+    24396, 24397, 24398, 24399, 24401, 24404, 24409, 24410, 24411, 24412, 24414,
+    24415, 24416, 24419, 24421, 24423, 24424, 24427, 24430, 24431, 24434, 24436,
+    24437, 24438, 24440, 24442, 24445, 24446, 24447, 24451, 24454, 24461, 24462,
+    24463, 24465, 24467, 24468, 24470, 24474, 24475, 24477, 24478, 24479, 24480,
+    24482, 24483, 24484, 24485, 24486, 24487, 24489, 24491, 24492, 24495, 24496,
+    24497, 24498, 24499, 24500, 24502, 24504, 24505, 24506, 24507, 24510, 24511,
+    24512, 24513, 24514, 24519, 24520, 24522, 24523, 24526, 24531, 24532, 24533,
+    24538, 24539, 24540, 24542, 24543, 24546, 24547, 24549, 24550, 24552, 24553,
+    24556, 24559, 24560, 24562, 24563, 24564, 24566, 24567, 24569, 24570, 24572,
+    24583, 24584, 24585, 24587, 24588, 24592, 24593, 24595, 24599, 24600, 24602,
+    24606, 24607, 24610, 24611, 24612, 24620, 24621, 24622, 24624, 24625, 24626,
+    24627, 24628, 24630, 24631, 24632, 24633, 24634, 24637, 24638, 24640, 24644,
+    24645, 24646, 24647, 24648, 24649, 24650, 24652, 24654, 24655, 24657, 24659,
+    24660, 24662, 24663, 24664, 24667, 24668, 24670, 24671, 24672, 24673, 24677,
+    24678, 24686, 24689, 24690, 24692, 24693, 24695, 24702, 24704, 24705, 24706,
+    24709, 24710, 24711, 24712, 24714, 24715, 24718, 24719, 24720, 24721, 24723,
+    24725, 24727, 24728, 24729, 24732, 24734, 24737, 24738, 24740, 24741, 24743,
+    24745, 24746, 24750, 24752, 24755, 24757, 24758, 24759, 24761, 24762, 24765,
+    24766, 24767, 24768, 24769, 24770, 24771, 24772, 24775, 24776, 24777, 24780,
+    24781, 24782, 24783, 24784, 24786, 24787, 24788, 24790, 24791, 24793, 24795,
+    24798, 24801, 24802, 24803, 24804, 24805, 24810, 24817, 24818, 24821, 24823,
+    24824, 24827, 24828, 24829, 24830, 24831, 24834, 24835, 24836, 24837, 24839,
+    24842, 24843, 24844, 24848, 24849, 24850, 24851, 24852, 24854, 24855, 24856,
+    24857, 24859, 24860, 24861, 24862, 24865, 24866, 24869, 24872, 24873, 24874,
+    24876, 24877, 24878, 24879, 24880, 24881, 24882, 24883, 24884, 24885, 24886,
+    24887, 24888, 24889, 24890, 24891, 24892, 24893, 24894, 24896, 24897, 24898,
+    24899, 24900, 24901, 24902, 24903, 24905, 24907, 24909, 24911, 24912, 24914,
+    24915, 24916, 24918, 24919, 24920, 24921, 24922, 24923, 24924, 24926, 24927,
+    24928, 24929, 24931, 24932, 24933, 24934, 24937, 24938, 24939, 24940, 24941,
+    24942, 24943, 24945, 24946, 24947, 24948, 24950, 24952, 24953, 24954, 24955,
+    24956, 24957, 24958, 24959, 24960, 24961, 24962, 24963, 24964, 24965, 24966,
+    24967, 24968, 24969, 24970, 24972, 24973, 24975, 24976, 24977, 24978, 24979,
+    24981, 24982, 24983, 24984, 24985, 24986, 24987, 24988, 24990, 24991, 24992,
+    24993, 24994, 24995, 24996, 24997, 24998, 25002, 25003, 25005, 25006, 25007,
+    25008, 25009, 25010, 25011, 25012, 25013, 25014, 25016, 25017, 25018, 25019,
+    25020, 25021, 25023, 25024, 25025, 25027, 25028, 25029, 25030, 25031, 25033,
+    25036, 25037, 25038, 25039, 25040, 25043, 25045, 25046, 25047, 25048, 25049,
+    25050, 25051, 25052, 25053, 25054, 25055, 25056, 25057, 25058, 25059, 25060,
+    25061, 25063, 25064, 25065, 25066, 25067, 25068, 25069, 25070, 25071, 25072,
+    25073, 25074, 25075, 25076, 25078, 25079, 25080, 25081, 25082, 25083, 25084,
+    25085, 25086, 25088, 25089, 25090, 25091, 25092, 25093, 25095, 25097, 25107,
+    25108, 25113, 25116, 25117, 25118, 25120, 25123, 25126, 25127, 25128, 25129,
+    25131, 25133, 25135, 25136, 25137, 25138, 25141, 25142, 25144, 25145, 25146,
+    25147, 25148, 25154, 25156, 25157, 25158, 25162, 25167, 25168, 25173, 25174,
+    25175, 25177, 25178, 25180, 25181, 25182, 25183, 25184, 25185, 25186, 25188,
+    25189, 25192, 25201, 25202, 25204, 25205, 25207, 25208, 25210, 25211, 25213,
+    25217, 25218, 25219, 25221, 25222, 25223, 25224, 25227, 25228, 25229, 25230,
+    25231, 25232, 25236, 25241, 25244, 25245, 25246, 25251, 25254, 25255, 25257,
+    25258, 25261, 25262, 25263, 25264, 25266, 25267, 25268, 25270, 25271, 25272,
+    25274, 25278, 25280, 25281, 25283, 25291, 25295, 25297, 25301, 25309, 25310,
+    25312, 25313, 25316, 25322, 25323, 25328, 25330, 25333, 25336, 25337, 25338,
+    25339, 25344, 25347, 25348, 25349, 25350, 25354, 25355, 25356, 25357, 25359,
+    25360, 25362, 25363, 25364, 25365, 25367, 25368, 25369, 25372, 25382, 25383,
+    25385, 25388, 25389, 25390, 25392, 25393, 25395, 25396, 25397, 25398, 25399,
+    25400, 25403, 25404, 25406, 25407, 25408, 25409, 25412, 25415, 25416, 25418,
+    25425, 25426, 25427, 25428, 25430, 25431, 25432, 25433, 25434, 25435, 25436,
+    25437, 25440, 25444, 25445, 25446, 25448, 25450, 25451, 25452, 25455, 25456,
+    25458, 25459, 25460, 25461, 25464, 25465, 25468, 25469, 25470, 25471, 25473,
+    25475, 25476, 25477, 25478, 25483, 25485, 25489, 25491, 25492, 25493, 25495,
+    25497, 25498, 25499, 25500, 25501, 25502, 25503, 25505, 25508, 25510, 25515,
+    25519, 25521, 25522, 25525, 25526, 25529, 25531, 25533, 25535, 25536, 25537,
+    25538, 25539, 25541, 25543, 25544, 25546, 25547, 25548, 25553, 25555, 25556,
+    25557, 25559, 25560, 25561, 25562, 25563, 25564, 25565, 25567, 25570, 25572,
+    25573, 25574, 25575, 25576, 25579, 25580, 25582, 25583, 25584, 25585, 25587,
+    25589, 25591, 25593, 25594, 25595, 25596, 25598, 25603, 25604, 25606, 25607,
+    25608, 25609, 25610, 25613, 25614, 25617, 25618, 25621, 25622, 25623, 25624,
+    25625, 25626, 25629, 25631, 25634, 25635, 25636, 25637, 25639, 25640, 25641,
+    25643, 25646, 25647, 25648, 25649, 25650, 25651, 25653, 25654, 25655, 25656,
+    25657, 25659, 25660, 25662, 25664, 25666, 25667, 25673, 25675, 25676, 25677,
+    25678, 25679, 25680, 25681, 25683, 25685, 25686, 25687, 25689, 25690, 25691,
+    25692, 25693, 25695, 25696, 25697, 25698, 25699, 25700, 25701, 25702, 25704,
+    25706, 25707, 25708, 25710, 25711, 25712, 25713, 25714, 25715, 25716, 25717,
+    25718, 25719, 25723, 25724, 25725, 25726, 25727, 25728, 25729, 25731, 25734,
+    25736, 25737, 25738, 25739, 25740, 25741, 25742, 25743, 25744, 25747, 25748,
+    25751, 25752, 25754, 25755, 25756, 25757, 25759, 25760, 25761, 25762, 25763,
+    25765, 25766, 25767, 25768, 25770, 25771, 25775, 25777, 25778, 25779, 25780,
+    25782, 25785, 25787, 25789, 25790, 25791, 25793, 25795, 25796, 25798, 25799,
+    25800, 25801, 25802, 25803, 25804, 25807, 25809, 25811, 25812, 25813, 25814,
+    25817, 25818, 25819, 25820, 25821, 25823, 25824, 25825, 25827, 25829, 25831,
+    25832, 25833, 25834, 25835, 25836, 25837, 25838, 25839, 25840, 25841, 25842,
+    25843, 25844, 25845, 25846, 25847, 25848, 25849, 25850, 25851, 25852, 25853,
+    25854, 25855, 25857, 25858, 25859, 25860, 25861, 25862, 25863, 25864, 25866,
+    25867, 25868, 25869, 25870, 25871, 25872, 25873, 25875, 25876, 25877, 25878,
+    25879, 25881, 25882, 25883, 25884, 25885, 25886, 25887, 25888, 25889, 25890,
+    25891, 25892, 25894, 25895, 25896, 25897, 25898, 25900, 25901, 25904, 25905,
+    25906, 25907, 25911, 25914, 25916, 25917, 25920, 25921, 25922, 25923, 25924,
+    25926, 25927, 25930, 25931, 25933, 25934, 25936, 25938, 25939, 25940, 25943,
+    25944, 25946, 25948, 25951, 25952, 25953, 25956, 25957, 25959, 25960, 25961,
+    25962, 25965, 25966, 25967, 25969, 25971, 25973, 25974, 25976, 25977, 25978,
+    25979, 25980, 25981, 25982, 25983, 25984, 25985, 25986, 25987, 25988, 25989,
+    25990, 25992, 25993, 25994, 25997, 25998, 25999, 26002, 26004, 26005, 26006,
+    26008, 26010, 26013, 26014, 26016, 26018, 26019, 26022, 26024, 26026, 26028,
+    26030, 26033, 26034, 26035, 26036, 26037, 26038, 26039, 26040, 26042, 26043,
+    26046, 26047, 26048, 26050, 26055, 26056, 26057, 26058, 26061, 26064, 26065,
+    26067, 26068, 26069, 26072, 26073, 26074, 26075, 26076, 26077, 26078, 26079,
+    26081, 26083, 26084, 26090, 26091, 26098, 26099, 26100, 26101, 26104, 26105,
+    26107, 26108, 26109, 26110, 26111, 26113, 26116, 26117, 26119, 26120, 26121,
+    26123, 26125, 26128, 26129, 26130, 26134, 26135, 26136, 26138, 26139, 26140,
+    26142, 26145, 26146, 26147, 26148, 26150, 26153, 26154, 26155, 26156, 26158,
+    26160, 26162, 26163, 26167, 26168, 26169, 26170, 26171, 26173, 26175, 26176,
+    26178, 26180, 26181, 26182, 26183, 26184, 26185, 26186, 26189, 26190, 26192,
+    26193, 26200, 26201, 26203, 26204, 26205, 26206, 26208, 26210, 26211, 26213,
+    26215, 26217, 26218, 26219, 26220, 26221, 26225, 26226, 26227, 26229, 26232,
+    26233, 26235, 26236, 26237, 26239, 26240, 26241, 26243, 26245, 26246, 26248,
+    26249, 26250, 26251, 26253, 26254, 26255, 26256, 26258, 26259, 26260, 26261,
+    26264, 26265, 26266, 26267, 26268, 26270, 26271, 26272, 26273, 26274, 26275,
+    26276, 26277, 26278, 26281, 26282, 26283, 26284, 26285, 26287, 26288, 26289,
+    26290, 26291, 26293, 26294, 26295, 26296, 26298, 26299, 26300, 26301, 26303,
+    26304, 26305, 26306, 26307, 26308, 26309, 26310, 26311, 26312, 26313, 26314,
+    26315, 26316, 26317, 26318, 26319, 26320, 26321, 26322, 26323, 26324, 26325,
+    26326, 26327, 26328, 26330, 26334, 26335, 26336, 26337, 26338, 26339, 26340,
+    26341, 26343, 26344, 26346, 26347, 26348, 26349, 26350, 26351, 26353, 26357,
+    26358, 26360, 26362, 26363, 26365, 26369, 26370, 26371, 26372, 26373, 26374,
+    26375, 26380, 26382, 26383, 26385, 26386, 26387, 26390, 26392, 26393, 26394,
+    26396, 26398, 26400, 26401, 26402, 26403, 26404, 26405, 26407, 26409, 26414,
+    26416, 26418, 26419, 26422, 26423, 26424, 26425, 26427, 26428, 26430, 26431,
+    26433, 26436, 26437, 26439, 26442, 26443, 26445, 26450, 26452, 26453, 26455,
+    26456, 26457, 26458, 26459, 26461, 26466, 26467, 26468, 26470, 26471, 26475,
+    26476, 26478, 26481, 26484, 26486, 26488, 26489, 26490, 26491, 26493, 26496,
+    26498, 26499, 26501, 26502, 26504, 26506, 26508, 26509, 26510, 26511, 26513,
+    26514, 26515, 26516, 26518, 26521, 26523, 26527, 26528, 26529, 26532, 26534,
+    26537, 26540, 26542, 26545, 26546, 26548, 26553, 26554, 26555, 26556, 26557,
+    26558, 26559, 26560, 26562, 26565, 26566, 26567, 26568, 26569, 26570, 26571,
+    26572, 26573, 26574, 26581, 26582, 26583, 26587, 26591, 26593, 26595, 26596,
+    26598, 26599, 26600, 26602, 26603, 26605, 26606, 26610, 26613, 26614, 26615,
+    26616, 26617, 26618, 26619, 26620, 26622, 26625, 26626, 26627, 26628, 26630,
+    26637, 26640, 26642, 26644, 26645, 26648, 26649, 26650, 26651, 26652, 26654,
+    26655, 26656, 26658, 26659, 26660, 26661, 26662, 26663, 26664, 26667, 26668,
+    26669, 26670, 26671, 26672, 26673, 26676, 26677, 26678, 26682, 26683, 26687,
+    26695, 26699, 26701, 26703, 26706, 26710, 26711, 26712, 26713, 26714, 26715,
+    26716, 26717, 26718, 26719, 26730, 26732, 26733, 26734, 26735, 26736, 26737,
+    26738, 26739, 26741, 26744, 26745, 26746, 26747, 26748, 26749, 26750, 26751,
+    26752, 26754, 26756, 26759, 26760, 26761, 26762, 26763, 26764, 26765, 26766,
+    26768, 26769, 26770, 26772, 26773, 26774, 26776, 26777, 26778, 26779, 26780,
+    26781, 26782, 26783, 26784, 26785, 26787, 26788, 26789, 26793, 26794, 26795,
+    26796, 26798, 26801, 26802, 26804, 26806, 26807, 26808, 26809, 26810, 26811,
+    26812, 26813, 26814, 26815, 26817, 26819, 26820, 26821, 26822, 26823, 26824,
+    26826, 26828, 26830, 26831, 26832, 26833, 26835, 26836, 26838, 26839, 26841,
+    26843, 26844, 26845, 26846, 26847, 26849, 26850, 26852, 26853, 26854, 26855,
+    26856, 26857, 26858, 26859, 26860, 26861, 26863, 26866, 26867, 26868, 26870,
+    26871, 26872, 26875, 26877, 26878, 26879, 26880, 26882, 26883, 26884, 26886,
+    26887, 26888, 26889, 26890, 26892, 26895, 26897, 26899, 26900, 26901, 26902,
+    26903, 26904, 26905, 26906, 26907, 26908, 26909, 26910, 26913, 26914, 26915,
+    26917, 26918, 26919, 26920, 26921, 26922, 26923, 26924, 26926, 26927, 26929,
+    26930, 26931, 26933, 26934, 26935, 26936, 26938, 26939, 26940, 26942, 26944,
+    26945, 26947, 26948, 26949, 26950, 26951, 26952, 26953, 26954, 26955, 26956,
+    26957, 26958, 26959, 26960, 26961, 26962, 26963, 26965, 26966, 26968, 26969,
+    26971, 26972, 26975, 26977, 26978, 26980, 26981, 26983, 26984, 26985, 26986,
+    26988, 26989, 26991, 26992, 26994, 26995, 26996, 26997, 26998, 27002, 27003,
+    27005, 27006, 27007, 27009, 27011, 27013, 27018, 27019, 27020, 27022, 27023,
+    27024, 27025, 27026, 27027, 27030, 27031, 27033, 27034, 27037, 27038, 27039,
+    27040, 27041, 27042, 27043, 27044, 27045, 27046, 27049, 27050, 27052, 27054,
+    27055, 27056, 27058, 27059, 27061, 27062, 27064, 27065, 27066, 27068, 27069,
+    27070, 27071, 27072, 27074, 27075, 27076, 27077, 27078, 27079, 27080, 27081,
+    27083, 27085, 27087, 27089, 27090, 27091, 27093, 27094, 27095, 27096, 27097,
+    27098, 27100, 27101, 27102, 27105, 27106, 27107, 27108, 27109, 27110, 27111,
+    27112, 27113, 27114, 27115, 27116, 27118, 27119, 27120, 27121, 27123, 27124,
+    27125, 27126, 27127, 27128, 27129, 27130, 27131, 27132, 27134, 27136, 27137,
+    27138, 27139, 27140, 27141, 27142, 27143, 27144, 27145, 27147, 27148, 27149,
+    27150, 27151, 27152, 27153, 27154, 27155, 27156, 27157, 27158, 27161, 27162,
+    27163, 27164, 27165, 27166, 27168, 27170, 27171, 27172, 27173, 27174, 27175,
+    27177, 27179, 27180, 27181, 27182, 27184, 27186, 27187, 27188, 27190, 27191,
+    27192, 27193, 27194, 27195, 27196, 27199, 27200, 27201, 27202, 27203, 27205,
+    27206, 27208, 27209, 27210, 27211, 27212, 27213, 27214, 27215, 27217, 27218,
+    27219, 27220, 27221, 27222, 27223, 27226, 27228, 27229, 27230, 27231, 27232,
+    27234, 27235, 27236, 27238, 27239, 27240, 27241, 27242, 27243, 27244, 27245,
+    27246, 27247, 27248, 27250, 27251, 27252, 27253, 27254, 27255, 27256, 27258,
+    27259, 27261, 27262, 27263, 27265, 27266, 27267, 27269, 27270, 27271, 27272,
+    27273, 27274, 27275, 27276, 27277, 27279, 27282, 27283, 27284, 27285, 27286,
+    27288, 27289, 27290, 27291, 27292, 27293, 27294, 27295, 27297, 27298, 27299,
+    27300, 27301, 27302, 27303, 27304, 27306, 27309, 27310, 27311, 27312, 27313,
+    27314, 27315, 27316, 27317, 27318, 27319, 27320, 27321, 27322, 27323, 27324,
+    27325, 27326, 27327, 27328, 27329, 27330, 27331, 27332, 27333, 27334, 27335,
+    27336, 27337, 27338, 27339, 27340, 27341, 27342, 27343, 27344, 27345, 27346,
+    27347, 27348, 27349, 27350, 27351, 27352, 27353, 27354, 27355, 27356, 27357,
+    27358, 27359, 27360, 27361, 27362, 27363, 27364, 27365, 27366, 27367, 27368,
+    27369, 27370, 27371, 27372, 27373, 27374, 27375, 27376, 27377, 27378, 27379,
+    27380, 27381, 27382, 27383, 27384, 27385, 27386, 27387, 27388, 27389, 27390,
+    27391, 27392, 27393, 27394, 27395, 27396, 27397, 27398, 27399, 27400, 27401,
+    27402, 27403, 27404, 27405, 27406, 27407, 27408, 27409, 27410, 27411, 27412,
+    27413, 27414, 27415, 27416, 27417, 27418, 27419, 27420, 27421, 27422, 27423,
+    27429, 27430, 27432, 27433, 27434, 27435, 27436, 27437, 27438, 27439, 27440,
+    27441, 27443, 27444, 27445, 27446, 27448, 27451, 27452, 27453, 27455, 27456,
+    27457, 27458, 27460, 27461, 27464, 27466, 27467, 27469, 27470, 27471, 27472,
+    27473, 27474, 27475, 27476, 27477, 27478, 27479, 27480, 27482, 27483, 27484,
+    27485, 27486, 27487, 27488, 27489, 27496, 27497, 27499, 27500, 27501, 27502,
+    27503, 27504, 27505, 27506, 27507, 27508, 27509, 27510, 27511, 27512, 27514,
+    27517, 27518, 27519, 27520, 27525, 27528, 27532, 27534, 27535, 27536, 27537,
+    27540, 27541, 27543, 27544, 27545, 27548, 27549, 27550, 27551, 27552, 27554,
+    27555, 27556, 27557, 27558, 27559, 27560, 27561, 27563, 27564, 27565, 27566,
+    27567, 27568, 27569, 27570, 27574, 27576, 27577, 27578, 27579, 27580, 27581,
+    27582, 27584, 27587, 27588, 27590, 27591, 27592, 27593, 27594, 27596, 27598,
+    27600, 27601, 27608, 27610, 27612, 27613, 27614, 27615, 27616, 27618, 27619,
+    27620, 27621, 27622, 27623, 27624, 27625, 27628, 27629, 27630, 27632, 27633,
+    27634, 27636, 27638, 27639, 27640, 27642, 27643, 27644, 27646, 27647, 27648,
+    27649, 27650, 27651, 27652, 27656, 27657, 27658, 27659, 27660, 27662, 27666,
+    27671, 27676, 27677, 27678, 27680, 27683, 27685, 27691, 27692, 27693, 27697,
+    27699, 27702, 27703, 27705, 27706, 27707, 27708, 27710, 27711, 27715, 27716,
+    27717, 27720, 27723, 27724, 27725, 27726, 27727, 27729, 27730, 27731, 27734,
+    27736, 27737, 27738, 27746, 27747, 27749, 27750, 27751, 27755, 27756, 27757,
+    27758, 27759, 27761, 27763, 27765, 27767, 27768, 27770, 27771, 27772, 27775,
+    27776, 27780, 27783, 27786, 27787, 27789, 27790, 27793, 27794, 27797, 27798,
+    27799, 27800, 27802, 27804, 27805, 27806, 27808, 27810, 27816, 27820, 27823,
+    27824, 27828, 27829, 27830, 27831, 27834, 27840, 27841, 27842, 27843, 27846,
+    27847, 27848, 27851, 27853, 27854, 27855, 27857, 27858, 27864, 27865, 27866,
+    27868, 27869, 27871, 27876, 27878, 27879, 27881, 27884, 27885, 27890, 27892,
+    27897, 27903, 27904, 27906, 27907, 27909, 27910, 27912, 27913, 27914, 27917,
+    27919, 27920, 27921, 27923, 27924, 27925, 27926, 27928, 27932, 27933, 27935,
+    27936, 27937, 27938, 27939, 27940, 27942, 27944, 27945, 27948, 27949, 27951,
+    27952, 27956, 27958, 27959, 27960, 27962, 27967, 27968, 27970, 27972, 27977,
+    27980, 27984, 27989, 27990, 27991, 27992, 27995, 27997, 27999, 28001, 28002,
+    28004, 28005, 28007, 28008, 28011, 28012, 28013, 28016, 28017, 28018, 28019,
+    28021, 28022, 28025, 28026, 28027, 28029, 28030, 28031, 28032, 28033, 28035,
+    28036, 28038, 28039, 28042, 28043, 28045, 28047, 28048, 28050, 28054, 28055,
+    28056, 28057, 28058, 28060, 28066, 28069, 28076, 28077, 28080, 28081, 28083,
+    28084, 28086, 28087, 28089, 28090, 28091, 28092, 28093, 28094, 28097, 28098,
+    28099, 28104, 28105, 28106, 28109, 28110, 28111, 28112, 28114, 28115, 28116,
+    28117, 28119, 28122, 28123, 28124, 28127, 28130, 28131, 28133, 28135, 28136,
+    28137, 28138, 28141, 28143, 28144, 28146, 28148, 28149, 28150, 28152, 28154,
+    28157, 28158, 28159, 28160, 28161, 28162, 28163, 28164, 28166, 28167, 28168,
+    28169, 28171, 28175, 28178, 28179, 28181, 28184, 28185, 28187, 28188, 28190,
+    28191, 28194, 28198, 28199, 28200, 28202, 28204, 28206, 28208, 28209, 28211,
+    28213, 28214, 28215, 28217, 28219, 28220, 28221, 28222, 28223, 28224, 28225,
+    28226, 28229, 28230, 28231, 28232, 28233, 28234, 28235, 28236, 28239, 28240,
+    28241, 28242, 28245, 28247, 28249, 28250, 28252, 28253, 28254, 28256, 28257,
+    28258, 28259, 28260, 28261, 28262, 28263, 28264, 28265, 28266, 28268, 28269,
+    28271, 28272, 28273, 28274, 28275, 28276, 28277, 28278, 28279, 28280, 28281,
+    28282, 28283, 28284, 28285, 28288, 28289, 28290, 28292, 28295, 28296, 28298,
+    28299, 28300, 28301, 28302, 28305, 28306, 28307, 28308, 28309, 28310, 28311,
+    28313, 28314, 28315, 28317, 28318, 28320, 28321, 28323, 28324, 28326, 28328,
+    28329, 28331, 28332, 28333, 28334, 28336, 28339, 28341, 28344, 28345, 28348,
+    28350, 28351, 28352, 28355, 28356, 28357, 28358, 28360, 28361, 28362, 28364,
+    28365, 28366, 28368, 28370, 28374, 28376, 28377, 28379, 28380, 28381, 28387,
+    28391, 28394, 28395, 28396, 28397, 28398, 28399, 28400, 28401, 28402, 28403,
+    28405, 28406, 28407, 28408, 28410, 28411, 28412, 28413, 28414, 28415, 28416,
+    28417, 28419, 28420, 28421, 28423, 28424, 28426, 28427, 28428, 28429, 28430,
+    28432, 28433, 28434, 28438, 28439, 28440, 28441, 28442, 28443, 28444, 28445,
+    28446, 28447, 28449, 28450, 28451, 28453, 28454, 28455, 28456, 28460, 28462,
+    28464, 28466, 28468, 28469, 28471, 28472, 28473, 28474, 28475, 28476, 28477,
+    28479, 28480, 28481, 28482, 28483, 28484, 28485, 28488, 28489, 28490, 28492,
+    28494, 28495, 28496, 28497, 28498, 28499, 28500, 28501, 28502, 28503, 28505,
+    28506, 28507, 28509, 28511, 28512, 28513, 28515, 28516, 28517, 28519, 28520,
+    28521, 28522, 28523, 28524, 28527, 28528, 28529, 28531, 28533, 28534, 28535,
+    28537, 28539, 28541, 28542, 28543, 28544, 28545, 28546, 28547, 28549, 28550,
+    28551, 28554, 28555, 28559, 28560, 28561, 28562, 28563, 28564, 28565, 28566,
+    28567, 28568, 28569, 28570, 28571, 28573, 28574, 28575, 28576, 28578, 28579,
+    28580, 28581, 28582, 28584, 28585, 28586, 28587, 28588, 28589, 28590, 28591,
+    28592, 28593, 28594, 28596, 28597, 28599, 28600, 28602, 28603, 28604, 28605,
+    28606, 28607, 28609, 28611, 28612, 28613, 28614, 28615, 28616, 28618, 28619,
+    28620, 28621, 28622, 28623, 28624, 28627, 28628, 28629, 28630, 28631, 28632,
+    28633, 28634, 28635, 28636, 28637, 28639, 28642, 28643, 28644, 28645, 28646,
+    28647, 28648, 28649, 28650, 28651, 28652, 28653, 28656, 28657, 28658, 28659,
+    28660, 28661, 28662, 28663, 28664, 28665, 28666, 28667, 28668, 28669, 28670,
+    28671, 28672, 28673, 28674, 28675, 28676, 28677, 28678, 28679, 28680, 28681,
+    28682, 28683, 28684, 28685, 28686, 28687, 28688, 28690, 28691, 28692, 28693,
+    28694, 28695, 28696, 28697, 28700, 28701, 28702, 28703, 28704, 28705, 28706,
+    28708, 28709, 28710, 28711, 28712, 28713, 28714, 28715, 28716, 28717, 28718,
+    28719, 28720, 28721, 28722, 28723, 28724, 28726, 28727, 28728, 28730, 28731,
+    28732, 28733, 28734, 28735, 28736, 28737, 28738, 28739, 28740, 28741, 28742,
+    28743, 28744, 28745, 28746, 28747, 28749, 28750, 28752, 28753, 28754, 28755,
+    28756, 28757, 28758, 28759, 28760, 28761, 28762, 28763, 28764, 28765, 28767,
+    28768, 28769, 28770, 28771, 28772, 28773, 28774, 28775, 28776, 28777, 28778,
+    28782, 28785, 28786, 28787, 28788, 28791, 28793, 28794, 28795, 28797, 28801,
+    28802, 28803, 28804, 28806, 28807, 28808, 28811, 28812, 28813, 28815, 28816,
+    28817, 28819, 28823, 28824, 28826, 28827, 28830, 28831, 28832, 28833, 28834,
+    28835, 28836, 28837, 28838, 28839, 28840, 28841, 28842, 28848, 28850, 28852,
+    28853, 28854, 28858, 28862, 28863, 28868, 28869, 28870, 28871, 28873, 28875,
+    28876, 28877, 28878, 28879, 28880, 28881, 28882, 28883, 28884, 28885, 28886,
+    28887, 28890, 28892, 28893, 28894, 28896, 28897, 28898, 28899, 28901, 28906,
+    28910, 28912, 28913, 28914, 28915, 28916, 28917, 28918, 28920, 28922, 28923,
+    28924, 28926, 28927, 28928, 28929, 28930, 28931, 28932, 28933, 28934, 28935,
+    28936, 28939, 28940, 28941, 28942, 28943, 28945, 28946, 28948, 28951, 28955,
+    28956, 28957, 28958, 28959, 28960, 28961, 28962, 28963, 28964, 28965, 28967,
+    28968, 28969, 28970, 28971, 28972, 28973, 28974, 28978, 28979, 28980, 28981,
+    28983, 28984, 28985, 28986, 28987, 28988, 28989, 28990, 28991, 28992, 28993,
+    28994, 28995, 28996, 28998, 28999, 29000, 29001, 29003, 29005, 29007, 29008,
+    29009, 29010, 29011, 29012, 29013, 29014, 29015, 29016, 29017, 29018, 29019,
+    29021, 29023, 29024, 29025, 29026, 29027, 29029, 29033, 29034, 29035, 29036,
+    29037, 29039, 29040, 29041, 29044, 29045, 29046, 29047, 29049, 29051, 29052,
+    29054, 29055, 29056, 29057, 29058, 29059, 29061, 29062, 29063, 29064, 29065,
+    29067, 29068, 29069, 29070, 29072, 29073, 29074, 29075, 29077, 29078, 29079,
+    29082, 29083, 29084, 29085, 29086, 29089, 29090, 29091, 29092, 29093, 29094,
+    29095, 29097, 29098, 29099, 29101, 29102, 29103, 29104, 29105, 29106, 29108,
+    29110, 29111, 29112, 29114, 29115, 29116, 29117, 29118, 29119, 29120, 29121,
+    29122, 29124, 29125, 29126, 29127, 29128, 29129, 29130, 29131, 29132, 29133,
+    29135, 29136, 29137, 29138, 29139, 29142, 29143, 29144, 29145, 29146, 29147,
+    29148, 29149, 29150, 29151, 29153, 29154, 29155, 29156, 29158, 29160, 29161,
+    29162, 29163, 29164, 29165, 29167, 29168, 29169, 29170, 29171, 29172, 29173,
+    29174, 29175, 29176, 29178, 29179, 29180, 29181, 29182, 29183, 29184, 29185,
+    29186, 29187, 29188, 29189, 29191, 29192, 29193, 29194, 29195, 29196, 29197,
+    29198, 29199, 29200, 29201, 29202, 29203, 29204, 29205, 29206, 29207, 29208,
+    29209, 29210, 29211, 29212, 29214, 29215, 29216, 29217, 29218, 29219, 29220,
+    29221, 29222, 29223, 29225, 29227, 29229, 29230, 29231, 29234, 29235, 29236,
+    29242, 29244, 29246, 29248, 29249, 29250, 29251, 29252, 29253, 29254, 29257,
+    29258, 29259, 29262, 29263, 29264, 29265, 29267, 29268, 29269, 29271, 29272,
+    29274, 29276, 29278, 29280, 29283, 29284, 29285, 29288, 29290, 29291, 29292,
+    29293, 29296, 29297, 29299, 29300, 29302, 29303, 29304, 29307, 29308, 29309,
+    29314, 29315, 29317, 29318, 29319, 29320, 29321, 29324, 29326, 29328, 29329,
+    29331, 29332, 29333, 29334, 29335, 29336, 29337, 29338, 29339, 29340, 29341,
+    29342, 29344, 29345, 29346, 29347, 29348, 29349, 29350, 29351, 29352, 29353,
+    29354, 29355, 29358, 29361, 29362, 29363, 29365, 29370, 29371, 29372, 29373,
+    29374, 29375, 29376, 29381, 29382, 29383, 29385, 29386, 29387, 29388, 29391,
+    29393, 29395, 29396, 29397, 29398, 29400, 29402, 29403, 58566, 58567, 58568,
+    58569, 58570, 58571, 58572, 58573, 58574, 58575, 58576, 58577, 58578, 58579,
+    58580, 58581, 58582, 58583, 58584, 58585, 58586, 58587, 58588, 58589, 58590,
+    58591, 58592, 58593, 58594, 58595, 58596, 58597, 58598, 58599, 58600, 58601,
+    58602, 58603, 58604, 58605, 58606, 58607, 58608, 58609, 58610, 58611, 58612,
+    58613, 58614, 58615, 58616, 58617, 58618, 58619, 58620, 58621, 58622, 58623,
+    58624, 58625, 58626, 58627, 58628, 58629, 58630, 58631, 58632, 58633, 58634,
+    58635, 58636, 58637, 58638, 58639, 58640, 58641, 58642, 58643, 58644, 58645,
+    58646, 58647, 58648, 58649, 58650, 58651, 58652, 58653, 58654, 58655, 58656,
+    58657, 58658, 58659, 58660, 58661, 12288, 12289, 12290, 183, 713, 711, 168,
+    12291, 12293, 8212, 65374, 8214, 8230, 8216, 8217, 8220, 8221, 12308, 12309,
+    12296, 12297, 12298, 12299, 12300, 12301, 12302, 12303, 12310, 12311, 12304,
+    12305, 177, 215, 247, 8758, 8743, 8744, 8721, 8719, 8746, 8745, 8712, 8759,
+    8730, 8869, 8741, 8736, 8978, 8857, 8747, 8750, 8801, 8780, 8776, 8765,
+    8733, 8800, 8814, 8815, 8804, 8805, 8734, 8757, 8756, 9794, 9792, 176, 8242,
+    8243, 8451, 65284, 164, 65504, 65505, 8240, 167, 8470, 9734, 9733, 9675,
+    9679, 9678, 9671, 9670, 9633, 9632, 9651, 9650, 8251, 8594, 8592, 8593,
+    8595, 12307, 58662, 58663, 58664, 58665, 58666, 58667, 58668, 58669, 58670,
+    58671, 58672, 58673, 58674, 58675, 58676, 58677, 58678, 58679, 58680, 58681,
+    58682, 58683, 58684, 58685, 58686, 58687, 58688, 58689, 58690, 58691, 58692,
+    58693, 58694, 58695, 58696, 58697, 58698, 58699, 58700, 58701, 58702, 58703,
+    58704, 58705, 58706, 58707, 58708, 58709, 58710, 58711, 58712, 58713, 58714,
+    58715, 58716, 58717, 58718, 58719, 58720, 58721, 58722, 58723, 58724, 58725,
+    58726, 58727, 58728, 58729, 58730, 58731, 58732, 58733, 58734, 58735, 58736,
+    58737, 58738, 58739, 58740, 58741, 58742, 58743, 58744, 58745, 58746, 58747,
+    58748, 58749, 58750, 58751, 58752, 58753, 58754, 58755, 58756, 58757, 8560,
+    8561, 8562, 8563, 8564, 8565, 8566, 8567, 8568, 8569, 59238, 59239, 59240,
+    59241, 59242, 59243, 9352, 9353, 9354, 9355, 9356, 9357, 9358, 9359, 9360,
+    9361, 9362, 9363, 9364, 9365, 9366, 9367, 9368, 9369, 9370, 9371, 9332,
+    9333, 9334, 9335, 9336, 9337, 9338, 9339, 9340, 9341, 9342, 9343, 9344,
+    9345, 9346, 9347, 9348, 9349, 9350, 9351, 9312, 9313, 9314, 9315, 9316,
+    9317, 9318, 9319, 9320, 9321, 8364, 59245, 12832, 12833, 12834, 12835,
+    12836, 12837, 12838, 12839, 12840, 12841, 59246, 59247, 8544, 8545, 8546,
+    8547, 8548, 8549, 8550, 8551, 8552, 8553, 8554, 8555, 59248, 59249, 58758,
+    58759, 58760, 58761, 58762, 58763, 58764, 58765, 58766, 58767, 58768, 58769,
+    58770, 58771, 58772, 58773, 58774, 58775, 58776, 58777, 58778, 58779, 58780,
+    58781, 58782, 58783, 58784, 58785, 58786, 58787, 58788, 58789, 58790, 58791,
+    58792, 58793, 58794, 58795, 58796, 58797, 58798, 58799, 58800, 58801, 58802,
+    58803, 58804, 58805, 58806, 58807, 58808, 58809, 58810, 58811, 58812, 58813,
+    58814, 58815, 58816, 58817, 58818, 58819, 58820, 58821, 58822, 58823, 58824,
+    58825, 58826, 58827, 58828, 58829, 58830, 58831, 58832, 58833, 58834, 58835,
+    58836, 58837, 58838, 58839, 58840, 58841, 58842, 58843, 58844, 58845, 58846,
+    58847, 58848, 58849, 58850, 58851, 58852, 58853, 65281, 65282, 65283, 65509,
+    65285, 65286, 65287, 65288, 65289, 65290, 65291, 65292, 65293, 65294, 65295,
+    65296, 65297, 65298, 65299, 65300, 65301, 65302, 65303, 65304, 65305, 65306,
+    65307, 65308, 65309, 65310, 65311, 65312, 65313, 65314, 65315, 65316, 65317,
+    65318, 65319, 65320, 65321, 65322, 65323, 65324, 65325, 65326, 65327, 65328,
+    65329, 65330, 65331, 65332, 65333, 65334, 65335, 65336, 65337, 65338, 65339,
+    65340, 65341, 65342, 65343, 65344, 65345, 65346, 65347, 65348, 65349, 65350,
+    65351, 65352, 65353, 65354, 65355, 65356, 65357, 65358, 65359, 65360, 65361,
+    65362, 65363, 65364, 65365, 65366, 65367, 65368, 65369, 65370, 65371, 65372,
+    65373, 65507, 58854, 58855, 58856, 58857, 58858, 58859, 58860, 58861, 58862,
+    58863, 58864, 58865, 58866, 58867, 58868, 58869, 58870, 58871, 58872, 58873,
+    58874, 58875, 58876, 58877, 58878, 58879, 58880, 58881, 58882, 58883, 58884,
+    58885, 58886, 58887, 58888, 58889, 58890, 58891, 58892, 58893, 58894, 58895,
+    58896, 58897, 58898, 58899, 58900, 58901, 58902, 58903, 58904, 58905, 58906,
+    58907, 58908, 58909, 58910, 58911, 58912, 58913, 58914, 58915, 58916, 58917,
+    58918, 58919, 58920, 58921, 58922, 58923, 58924, 58925, 58926, 58927, 58928,
+    58929, 58930, 58931, 58932, 58933, 58934, 58935, 58936, 58937, 58938, 58939,
+    58940, 58941, 58942, 58943, 58944, 58945, 58946, 58947, 58948, 58949, 12353,
+    12354, 12355, 12356, 12357, 12358, 12359, 12360, 12361, 12362, 12363, 12364,
+    12365, 12366, 12367, 12368, 12369, 12370, 12371, 12372, 12373, 12374, 12375,
+    12376, 12377, 12378, 12379, 12380, 12381, 12382, 12383, 12384, 12385, 12386,
+    12387, 12388, 12389, 12390, 12391, 12392, 12393, 12394, 12395, 12396, 12397,
+    12398, 12399, 12400, 12401, 12402, 12403, 12404, 12405, 12406, 12407, 12408,
+    12409, 12410, 12411, 12412, 12413, 12414, 12415, 12416, 12417, 12418, 12419,
+    12420, 12421, 12422, 12423, 12424, 12425, 12426, 12427, 12428, 12429, 12430,
+    12431, 12432, 12433, 12434, 12435, 59250, 59251, 59252, 59253, 59254, 59255,
+    59256, 59257, 59258, 59259, 59260, 58950, 58951, 58952, 58953, 58954, 58955,
+    58956, 58957, 58958, 58959, 58960, 58961, 58962, 58963, 58964, 58965, 58966,
+    58967, 58968, 58969, 58970, 58971, 58972, 58973, 58974, 58975, 58976, 58977,
+    58978, 58979, 58980, 58981, 58982, 58983, 58984, 58985, 58986, 58987, 58988,
+    58989, 58990, 58991, 58992, 58993, 58994, 58995, 58996, 58997, 58998, 58999,
+    59000, 59001, 59002, 59003, 59004, 59005, 59006, 59007, 59008, 59009, 59010,
+    59011, 59012, 59013, 59014, 59015, 59016, 59017, 59018, 59019, 59020, 59021,
+    59022, 59023, 59024, 59025, 59026, 59027, 59028, 59029, 59030, 59031, 59032,
+    59033, 59034, 59035, 59036, 59037, 59038, 59039, 59040, 59041, 59042, 59043,
+    59044, 59045, 12449, 12450, 12451, 12452, 12453, 12454, 12455, 12456, 12457,
+    12458, 12459, 12460, 12461, 12462, 12463, 12464, 12465, 12466, 12467, 12468,
+    12469, 12470, 12471, 12472, 12473, 12474, 12475, 12476, 12477, 12478, 12479,
+    12480, 12481, 12482, 12483, 12484, 12485, 12486, 12487, 12488, 12489, 12490,
+    12491, 12492, 12493, 12494, 12495, 12496, 12497, 12498, 12499, 12500, 12501,
+    12502, 12503, 12504, 12505, 12506, 12507, 12508, 12509, 12510, 12511, 12512,
+    12513, 12514, 12515, 12516, 12517, 12518, 12519, 12520, 12521, 12522, 12523,
+    12524, 12525, 12526, 12527, 12528, 12529, 12530, 12531, 12532, 12533, 12534,
+    59261, 59262, 59263, 59264, 59265, 59266, 59267, 59268, 59046, 59047, 59048,
+    59049, 59050, 59051, 59052, 59053, 59054, 59055, 59056, 59057, 59058, 59059,
+    59060, 59061, 59062, 59063, 59064, 59065, 59066, 59067, 59068, 59069, 59070,
+    59071, 59072, 59073, 59074, 59075, 59076, 59077, 59078, 59079, 59080, 59081,
+    59082, 59083, 59084, 59085, 59086, 59087, 59088, 59089, 59090, 59091, 59092,
+    59093, 59094, 59095, 59096, 59097, 59098, 59099, 59100, 59101, 59102, 59103,
+    59104, 59105, 59106, 59107, 59108, 59109, 59110, 59111, 59112, 59113, 59114,
+    59115, 59116, 59117, 59118, 59119, 59120, 59121, 59122, 59123, 59124, 59125,
+    59126, 59127, 59128, 59129, 59130, 59131, 59132, 59133, 59134, 59135, 59136,
+    59137, 59138, 59139, 59140, 59141, 913, 914, 915, 916, 917, 918, 919, 920,
+    921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936,
+    937, 59269, 59270, 59271, 59272, 59273, 59274, 59275, 59276, 945, 946, 947,
+    948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958, 959, 960, 961, 963,
+    964, 965, 966, 967, 968, 969, 59277, 59278, 59279, 59280, 59281, 59282,
+    59283, 65077, 65078, 65081, 65082, 65087, 65088, 65085, 65086, 65089, 65090,
+    65091, 65092, 59284, 59285, 65083, 65084, 65079, 65080, 65073, 59286, 65075,
+    65076, 59287, 59288, 59289, 59290, 59291, 59292, 59293, 59294, 59295, 59142,
+    59143, 59144, 59145, 59146, 59147, 59148, 59149, 59150, 59151, 59152, 59153,
+    59154, 59155, 59156, 59157, 59158, 59159, 59160, 59161, 59162, 59163, 59164,
+    59165, 59166, 59167, 59168, 59169, 59170, 59171, 59172, 59173, 59174, 59175,
+    59176, 59177, 59178, 59179, 59180, 59181, 59182, 59183, 59184, 59185, 59186,
+    59187, 59188, 59189, 59190, 59191, 59192, 59193, 59194, 59195, 59196, 59197,
+    59198, 59199, 59200, 59201, 59202, 59203, 59204, 59205, 59206, 59207, 59208,
+    59209, 59210, 59211, 59212, 59213, 59214, 59215, 59216, 59217, 59218, 59219,
+    59220, 59221, 59222, 59223, 59224, 59225, 59226, 59227, 59228, 59229, 59230,
+    59231, 59232, 59233, 59234, 59235, 59236, 59237, 1040, 1041, 1042, 1043,
+    1044, 1045, 1025, 1046, 1047, 1048, 1049, 1050, 1051, 1052, 1053, 1054,
+    1055, 1056, 1057, 1058, 1059, 1060, 1061, 1062, 1063, 1064, 1065, 1066,
+    1067, 1068, 1069, 1070, 1071, 59296, 59297, 59298, 59299, 59300, 59301,
+    59302, 59303, 59304, 59305, 59306, 59307, 59308, 59309, 59310, 1072, 1073,
+    1074, 1075, 1076, 1077, 1105, 1078, 1079, 1080, 1081, 1082, 1083, 1084,
+    1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096,
+    1097, 1098, 1099, 1100, 1101, 1102, 1103, 59311, 59312, 59313, 59314, 59315,
+    59316, 59317, 59318, 59319, 59320, 59321, 59322, 59323, 714, 715, 729, 8211,
+    8213, 8229, 8245, 8453, 8457, 8598, 8599, 8600, 8601, 8725, 8735, 8739,
+    8786, 8806, 8807, 8895, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559,
+    9560, 9561, 9562, 9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571,
+    9572, 9573, 9574, 9575, 9576, 9577, 9578, 9579, 9580, 9581, 9582, 9583,
+    9584, 9585, 9586, 9587, 9601, 9602, 9603, 9604, 9605, 9606, 9607, 9608,
+    9609, 9610, 9611, 9612, 9613, 9614, 9615, 9619, 9620, 9621, 9660, 9661,
+    9698, 9699, 9700, 9701, 9737, 8853, 12306, 12317, 12318, 59324, 59325,
+    59326, 59327, 59328, 59329, 59330, 59331, 59332, 59333, 59334, 257, 225,
+    462, 224, 275, 233, 283, 232, 299, 237, 464, 236, 333, 243, 466, 242, 363,
+    250, 468, 249, 470, 472, 474, 476, 252, 234, 593, 59335, 324, 328, 505, 609,
+    59337, 59338, 59339, 59340, 12549, 12550, 12551, 12552, 12553, 12554, 12555,
+    12556, 12557, 12558, 12559, 12560, 12561, 12562, 12563, 12564, 12565, 12566,
+    12567, 12568, 12569, 12570, 12571, 12572, 12573, 12574, 12575, 12576, 12577,
+    12578, 12579, 12580, 12581, 12582, 12583, 12584, 12585, 59341, 59342, 59343,
+    59344, 59345, 59346, 59347, 59348, 59349, 59350, 59351, 59352, 59353, 59354,
+    59355, 59356, 59357, 59358, 59359, 59360, 59361, 12321, 12322, 12323, 12324,
+    12325, 12326, 12327, 12328, 12329, 12963, 13198, 13199, 13212, 13213, 13214,
+    13217, 13252, 13262, 13265, 13266, 13269, 65072, 65506, 65508, 59362, 8481,
+    12849, 59363, 8208, 59364, 59365, 59366, 12540, 12443, 12444, 12541, 12542,
+    12294, 12445, 12446, 65097, 65098, 65099, 65100, 65101, 65102, 65103, 65104,
+    65105, 65106, 65108, 65109, 65110, 65111, 65113, 65114, 65115, 65116, 65117,
+    65118, 65119, 65120, 65121, 65122, 65123, 65124, 65125, 65126, 65128, 65129,
+    65130, 65131, 12350, 12272, 12273, 12274, 12275, 12276, 12277, 12278, 12279,
+    12280, 12281, 12282, 12283, 12295, 59380, 59381, 59382, 59383, 59384, 59385,
+    59386, 59387, 59388, 59389, 59390, 59391, 59392, 9472, 9473, 9474, 9475,
+    9476, 9477, 9478, 9479, 9480, 9481, 9482, 9483, 9484, 9485, 9486, 9487,
+    9488, 9489, 9490, 9491, 9492, 9493, 9494, 9495, 9496, 9497, 9498, 9499,
+    9500, 9501, 9502, 9503, 9504, 9505, 9506, 9507, 9508, 9509, 9510, 9511,
+    9512, 9513, 9514, 9515, 9516, 9517, 9518, 9519, 9520, 9521, 9522, 9523,
+    9524, 9525, 9526, 9527, 9528, 9529, 9530, 9531, 9532, 9533, 9534, 9535,
+    9536, 9537, 9538, 9539, 9540, 9541, 9542, 9543, 9544, 9545, 9546, 9547,
+    59393, 59394, 59395, 59396, 59397, 59398, 59399, 59400, 59401, 59402, 59403,
+    59404, 59405, 59406, 59407, 29404, 29405, 29407, 29410, 29411, 29412, 29413,
+    29414, 29415, 29418, 29419, 29429, 29430, 29433, 29437, 29438, 29439, 29440,
+    29442, 29444, 29445, 29446, 29447, 29448, 29449, 29451, 29452, 29453, 29455,
+    29456, 29457, 29458, 29460, 29464, 29465, 29466, 29471, 29472, 29475, 29476,
+    29478, 29479, 29480, 29485, 29487, 29488, 29490, 29491, 29493, 29494, 29498,
+    29499, 29500, 29501, 29504, 29505, 29506, 29507, 29508, 29509, 29510, 29511,
+    29512, 29513, 29514, 29515, 29516, 29518, 29519, 29521, 29523, 29524, 29525,
+    29526, 29528, 29529, 29530, 29531, 29532, 29533, 29534, 29535, 29537, 29538,
+    29539, 29540, 29541, 29542, 29543, 29544, 29545, 29546, 29547, 29550, 29552,
+    29553, 57344, 57345, 57346, 57347, 57348, 57349, 57350, 57351, 57352, 57353,
+    57354, 57355, 57356, 57357, 57358, 57359, 57360, 57361, 57362, 57363, 57364,
+    57365, 57366, 57367, 57368, 57369, 57370, 57371, 57372, 57373, 57374, 57375,
+    57376, 57377, 57378, 57379, 57380, 57381, 57382, 57383, 57384, 57385, 57386,
+    57387, 57388, 57389, 57390, 57391, 57392, 57393, 57394, 57395, 57396, 57397,
+    57398, 57399, 57400, 57401, 57402, 57403, 57404, 57405, 57406, 57407, 57408,
+    57409, 57410, 57411, 57412, 57413, 57414, 57415, 57416, 57417, 57418, 57419,
+    57420, 57421, 57422, 57423, 57424, 57425, 57426, 57427, 57428, 57429, 57430,
+    57431, 57432, 57433, 57434, 57435, 57436, 57437, 29554, 29555, 29556, 29557,
+    29558, 29559, 29560, 29561, 29562, 29563, 29564, 29565, 29567, 29568, 29569,
+    29570, 29571, 29573, 29574, 29576, 29578, 29580, 29581, 29583, 29584, 29586,
+    29587, 29588, 29589, 29591, 29592, 29593, 29594, 29596, 29597, 29598, 29600,
+    29601, 29603, 29604, 29605, 29606, 29607, 29608, 29610, 29612, 29613, 29617,
+    29620, 29621, 29622, 29624, 29625, 29628, 29629, 29630, 29631, 29633, 29635,
+    29636, 29637, 29638, 29639, 29643, 29644, 29646, 29650, 29651, 29652, 29653,
+    29654, 29655, 29656, 29658, 29659, 29660, 29661, 29663, 29665, 29666, 29667,
+    29668, 29670, 29672, 29674, 29675, 29676, 29678, 29679, 29680, 29681, 29683,
+    29684, 29685, 29686, 29687, 57438, 57439, 57440, 57441, 57442, 57443, 57444,
+    57445, 57446, 57447, 57448, 57449, 57450, 57451, 57452, 57453, 57454, 57455,
+    57456, 57457, 57458, 57459, 57460, 57461, 57462, 57463, 57464, 57465, 57466,
+    57467, 57468, 57469, 57470, 57471, 57472, 57473, 57474, 57475, 57476, 57477,
+    57478, 57479, 57480, 57481, 57482, 57483, 57484, 57485, 57486, 57487, 57488,
+    57489, 57490, 57491, 57492, 57493, 57494, 57495, 57496, 57497, 57498, 57499,
+    57500, 57501, 57502, 57503, 57504, 57505, 57506, 57507, 57508, 57509, 57510,
+    57511, 57512, 57513, 57514, 57515, 57516, 57517, 57518, 57519, 57520, 57521,
+    57522, 57523, 57524, 57525, 57526, 57527, 57528, 57529, 57530, 57531, 29688,
+    29689, 29690, 29691, 29692, 29693, 29694, 29695, 29696, 29697, 29698, 29700,
+    29703, 29704, 29707, 29708, 29709, 29710, 29713, 29714, 29715, 29716, 29717,
+    29718, 29719, 29720, 29721, 29724, 29725, 29726, 29727, 29728, 29729, 29731,
+    29732, 29735, 29737, 29739, 29741, 29743, 29745, 29746, 29751, 29752, 29753,
+    29754, 29755, 29757, 29758, 29759, 29760, 29762, 29763, 29764, 29765, 29766,
+    29767, 29768, 29769, 29770, 29771, 29772, 29773, 29774, 29775, 29776, 29777,
+    29778, 29779, 29780, 29782, 29784, 29789, 29792, 29793, 29794, 29795, 29796,
+    29797, 29798, 29799, 29800, 29801, 29802, 29803, 29804, 29806, 29807, 29809,
+    29810, 29811, 29812, 29813, 29816, 29817, 29818, 57532, 57533, 57534, 57535,
+    57536, 57537, 57538, 57539, 57540, 57541, 57542, 57543, 57544, 57545, 57546,
+    57547, 57548, 57549, 57550, 57551, 57552, 57553, 57554, 57555, 57556, 57557,
+    57558, 57559, 57560, 57561, 57562, 57563, 57564, 57565, 57566, 57567, 57568,
+    57569, 57570, 57571, 57572, 57573, 57574, 57575, 57576, 57577, 57578, 57579,
+    57580, 57581, 57582, 57583, 57584, 57585, 57586, 57587, 57588, 57589, 57590,
+    57591, 57592, 57593, 57594, 57595, 57596, 57597, 57598, 57599, 57600, 57601,
+    57602, 57603, 57604, 57605, 57606, 57607, 57608, 57609, 57610, 57611, 57612,
+    57613, 57614, 57615, 57616, 57617, 57618, 57619, 57620, 57621, 57622, 57623,
+    57624, 57625, 29819, 29820, 29821, 29823, 29826, 29828, 29829, 29830, 29832,
+    29833, 29834, 29836, 29837, 29839, 29841, 29842, 29843, 29844, 29845, 29846,
+    29847, 29848, 29849, 29850, 29851, 29853, 29855, 29856, 29857, 29858, 29859,
+    29860, 29861, 29862, 29866, 29867, 29868, 29869, 29870, 29871, 29872, 29873,
+    29874, 29875, 29876, 29877, 29878, 29879, 29880, 29881, 29883, 29884, 29885,
+    29886, 29887, 29888, 29889, 29890, 29891, 29892, 29893, 29894, 29895, 29896,
+    29897, 29898, 29899, 29900, 29901, 29902, 29903, 29904, 29905, 29907, 29908,
+    29909, 29910, 29911, 29912, 29913, 29914, 29915, 29917, 29919, 29921, 29925,
+    29927, 29928, 29929, 29930, 29931, 29932, 29933, 29936, 29937, 29938, 57626,
+    57627, 57628, 57629, 57630, 57631, 57632, 57633, 57634, 57635, 57636, 57637,
+    57638, 57639, 57640, 57641, 57642, 57643, 57644, 57645, 57646, 57647, 57648,
+    57649, 57650, 57651, 57652, 57653, 57654, 57655, 57656, 57657, 57658, 57659,
+    57660, 57661, 57662, 57663, 57664, 57665, 57666, 57667, 57668, 57669, 57670,
+    57671, 57672, 57673, 57674, 57675, 57676, 57677, 57678, 57679, 57680, 57681,
+    57682, 57683, 57684, 57685, 57686, 57687, 57688, 57689, 57690, 57691, 57692,
+    57693, 57694, 57695, 57696, 57697, 57698, 57699, 57700, 57701, 57702, 57703,
+    57704, 57705, 57706, 57707, 57708, 57709, 57710, 57711, 57712, 57713, 57714,
+    57715, 57716, 57717, 57718, 57719, 29939, 29941, 29944, 29945, 29946, 29947,
+    29948, 29949, 29950, 29952, 29953, 29954, 29955, 29957, 29958, 29959, 29960,
+    29961, 29962, 29963, 29964, 29966, 29968, 29970, 29972, 29973, 29974, 29975,
+    29979, 29981, 29982, 29984, 29985, 29986, 29987, 29988, 29990, 29991, 29994,
+    29998, 30004, 30006, 30009, 30012, 30013, 30015, 30017, 30018, 30019, 30020,
+    30022, 30023, 30025, 30026, 30029, 30032, 30033, 30034, 30035, 30037, 30038,
+    30039, 30040, 30045, 30046, 30047, 30048, 30049, 30050, 30051, 30052, 30055,
+    30056, 30057, 30059, 30060, 30061, 30062, 30063, 30064, 30065, 30067, 30069,
+    30070, 30071, 30074, 30075, 30076, 30077, 30078, 30080, 30081, 30082, 30084,
+    30085, 30087, 57720, 57721, 57722, 57723, 57724, 57725, 57726, 57727, 57728,
+    57729, 57730, 57731, 57732, 57733, 57734, 57735, 57736, 57737, 57738, 57739,
+    57740, 57741, 57742, 57743, 57744, 57745, 57746, 57747, 57748, 57749, 57750,
+    57751, 57752, 57753, 57754, 57755, 57756, 57757, 57758, 57759, 57760, 57761,
+    57762, 57763, 57764, 57765, 57766, 57767, 57768, 57769, 57770, 57771, 57772,
+    57773, 57774, 57775, 57776, 57777, 57778, 57779, 57780, 57781, 57782, 57783,
+    57784, 57785, 57786, 57787, 57788, 57789, 57790, 57791, 57792, 57793, 57794,
+    57795, 57796, 57797, 57798, 57799, 57800, 57801, 57802, 57803, 57804, 57805,
+    57806, 57807, 57808, 57809, 57810, 57811, 57812, 57813, 30088, 30089, 30090,
+    30092, 30093, 30094, 30096, 30099, 30101, 30104, 30107, 30108, 30110, 30114,
+    30118, 30119, 30120, 30121, 30122, 30125, 30134, 30135, 30138, 30139, 30143,
+    30144, 30145, 30150, 30155, 30156, 30158, 30159, 30160, 30161, 30163, 30167,
+    30169, 30170, 30172, 30173, 30175, 30176, 30177, 30181, 30185, 30188, 30189,
+    30190, 30191, 30194, 30195, 30197, 30198, 30199, 30200, 30202, 30203, 30205,
+    30206, 30210, 30212, 30214, 30215, 30216, 30217, 30219, 30221, 30222, 30223,
+    30225, 30226, 30227, 30228, 30230, 30234, 30236, 30237, 30238, 30241, 30243,
+    30247, 30248, 30252, 30254, 30255, 30257, 30258, 30262, 30263, 30265, 30266,
+    30267, 30269, 30273, 30274, 30276, 57814, 57815, 57816, 57817, 57818, 57819,
+    57820, 57821, 57822, 57823, 57824, 57825, 57826, 57827, 57828, 57829, 57830,
+    57831, 57832, 57833, 57834, 57835, 57836, 57837, 57838, 57839, 57840, 57841,
+    57842, 57843, 57844, 57845, 57846, 57847, 57848, 57849, 57850, 57851, 57852,
+    57853, 57854, 57855, 57856, 57857, 57858, 57859, 57860, 57861, 57862, 57863,
+    57864, 57865, 57866, 57867, 57868, 57869, 57870, 57871, 57872, 57873, 57874,
+    57875, 57876, 57877, 57878, 57879, 57880, 57881, 57882, 57883, 57884, 57885,
+    57886, 57887, 57888, 57889, 57890, 57891, 57892, 57893, 57894, 57895, 57896,
+    57897, 57898, 57899, 57900, 57901, 57902, 57903, 57904, 57905, 57906, 57907,
+    30277, 30278, 30279, 30280, 30281, 30282, 30283, 30286, 30287, 30288, 30289,
+    30290, 30291, 30293, 30295, 30296, 30297, 30298, 30299, 30301, 30303, 30304,
+    30305, 30306, 30308, 30309, 30310, 30311, 30312, 30313, 30314, 30316, 30317,
+    30318, 30320, 30321, 30322, 30323, 30324, 30325, 30326, 30327, 30329, 30330,
+    30332, 30335, 30336, 30337, 30339, 30341, 30345, 30346, 30348, 30349, 30351,
+    30352, 30354, 30356, 30357, 30359, 30360, 30362, 30363, 30364, 30365, 30366,
+    30367, 30368, 30369, 30370, 30371, 30373, 30374, 30375, 30376, 30377, 30378,
+    30379, 30380, 30381, 30383, 30384, 30387, 30389, 30390, 30391, 30392, 30393,
+    30394, 30395, 30396, 30397, 30398, 30400, 30401, 30403, 21834, 38463, 22467,
+    25384, 21710, 21769, 21696, 30353, 30284, 34108, 30702, 33406, 30861, 29233,
+    38552, 38797, 27688, 23433, 20474, 25353, 26263, 23736, 33018, 26696, 32942,
+    26114, 30414, 20985, 25942, 29100, 32753, 34948, 20658, 22885, 25034, 28595,
+    33453, 25420, 25170, 21485, 21543, 31494, 20843, 30116, 24052, 25300, 36299,
+    38774, 25226, 32793, 22365, 38712, 32610, 29240, 30333, 26575, 30334, 25670,
+    20336, 36133, 25308, 31255, 26001, 29677, 25644, 25203, 33324, 39041, 26495,
+    29256, 25198, 25292, 20276, 29923, 21322, 21150, 32458, 37030, 24110, 26758,
+    27036, 33152, 32465, 26834, 30917, 34444, 38225, 20621, 35876, 33502, 32990,
+    21253, 35090, 21093, 30404, 30407, 30409, 30411, 30412, 30419, 30421, 30425,
+    30426, 30428, 30429, 30430, 30432, 30433, 30434, 30435, 30436, 30438, 30439,
+    30440, 30441, 30442, 30443, 30444, 30445, 30448, 30451, 30453, 30454, 30455,
+    30458, 30459, 30461, 30463, 30464, 30466, 30467, 30469, 30470, 30474, 30476,
+    30478, 30479, 30480, 30481, 30482, 30483, 30484, 30485, 30486, 30487, 30488,
+    30491, 30492, 30493, 30494, 30497, 30499, 30500, 30501, 30503, 30506, 30507,
+    30508, 30510, 30512, 30513, 30514, 30515, 30516, 30521, 30523, 30525, 30526,
+    30527, 30530, 30532, 30533, 30534, 30536, 30537, 30538, 30539, 30540, 30541,
+    30542, 30543, 30546, 30547, 30548, 30549, 30550, 30551, 30552, 30553, 30556,
+    34180, 38649, 20445, 22561, 39281, 23453, 25265, 25253, 26292, 35961, 40077,
+    29190, 26479, 30865, 24754, 21329, 21271, 36744, 32972, 36125, 38049, 20493,
+    29384, 22791, 24811, 28953, 34987, 22868, 33519, 26412, 31528, 23849, 32503,
+    29997, 27893, 36454, 36856, 36924, 40763, 27604, 37145, 31508, 24444, 30887,
+    34006, 34109, 27605, 27609, 27606, 24065, 24199, 30201, 38381, 25949, 24330,
+    24517, 36767, 22721, 33218, 36991, 38491, 38829, 36793, 32534, 36140, 25153,
+    20415, 21464, 21342, 36776, 36777, 36779, 36941, 26631, 24426, 33176, 34920,
+    40150, 24971, 21035, 30250, 24428, 25996, 28626, 28392, 23486, 25672, 20853,
+    20912, 26564, 19993, 31177, 39292, 28851, 30557, 30558, 30559, 30560, 30564,
+    30567, 30569, 30570, 30573, 30574, 30575, 30576, 30577, 30578, 30579, 30580,
+    30581, 30582, 30583, 30584, 30586, 30587, 30588, 30593, 30594, 30595, 30598,
+    30599, 30600, 30601, 30602, 30603, 30607, 30608, 30611, 30612, 30613, 30614,
+    30615, 30616, 30617, 30618, 30619, 30620, 30621, 30622, 30625, 30627, 30628,
+    30630, 30632, 30635, 30637, 30638, 30639, 30641, 30642, 30644, 30646, 30647,
+    30648, 30649, 30650, 30652, 30654, 30656, 30657, 30658, 30659, 30660, 30661,
+    30662, 30663, 30664, 30665, 30666, 30667, 30668, 30670, 30671, 30672, 30673,
+    30674, 30675, 30676, 30677, 30678, 30680, 30681, 30682, 30685, 30686, 30687,
+    30688, 30689, 30692, 30149, 24182, 29627, 33760, 25773, 25320, 38069, 27874,
+    21338, 21187, 25615, 38082, 31636, 20271, 24091, 33334, 33046, 33162, 28196,
+    27850, 39539, 25429, 21340, 21754, 34917, 22496, 19981, 24067, 27493, 31807,
+    37096, 24598, 25830, 29468, 35009, 26448, 25165, 36130, 30572, 36393, 37319,
+    24425, 33756, 34081, 39184, 21442, 34453, 27531, 24813, 24808, 28799, 33485,
+    33329, 20179, 27815, 34255, 25805, 31961, 27133, 26361, 33609, 21397, 31574,
+    20391, 20876, 27979, 23618, 36461, 25554, 21449, 33580, 33590, 26597, 30900,
+    25661, 23519, 23700, 24046, 35815, 25286, 26612, 35962, 25600, 25530, 34633,
+    39307, 35863, 32544, 38130, 20135, 38416, 39076, 26124, 29462, 30694, 30696,
+    30698, 30703, 30704, 30705, 30706, 30708, 30709, 30711, 30713, 30714, 30715,
+    30716, 30723, 30724, 30725, 30726, 30727, 30728, 30730, 30731, 30734, 30735,
+    30736, 30739, 30741, 30745, 30747, 30750, 30752, 30753, 30754, 30756, 30760,
+    30762, 30763, 30766, 30767, 30769, 30770, 30771, 30773, 30774, 30781, 30783,
+    30785, 30786, 30787, 30788, 30790, 30792, 30793, 30794, 30795, 30797, 30799,
+    30801, 30803, 30804, 30808, 30809, 30810, 30811, 30812, 30814, 30815, 30816,
+    30817, 30818, 30819, 30820, 30821, 30822, 30823, 30824, 30825, 30831, 30832,
+    30833, 30834, 30835, 30836, 30837, 30838, 30840, 30841, 30842, 30843, 30845,
+    30846, 30847, 30848, 30849, 30850, 30851, 22330, 23581, 24120, 38271, 20607,
+    32928, 21378, 25950, 30021, 21809, 20513, 36229, 25220, 38046, 26397, 22066,
+    28526, 24034, 21557, 28818, 36710, 25199, 25764, 25507, 24443, 28552, 37108,
+    33251, 36784, 23576, 26216, 24561, 27785, 38472, 36225, 34924, 25745, 31216,
+    22478, 27225, 25104, 21576, 20056, 31243, 24809, 28548, 35802, 25215, 36894,
+    39563, 31204, 21507, 30196, 25345, 21273, 27744, 36831, 24347, 39536, 32827,
+    40831, 20360, 23610, 36196, 32709, 26021, 28861, 20805, 20914, 34411, 23815,
+    23456, 25277, 37228, 30068, 36364, 31264, 24833, 31609, 20167, 32504, 30597,
+    19985, 33261, 21021, 20986, 27249, 21416, 36487, 38148, 38607, 28353, 38500,
+    26970, 30852, 30853, 30854, 30856, 30858, 30859, 30863, 30864, 30866, 30868,
+    30869, 30870, 30873, 30877, 30878, 30880, 30882, 30884, 30886, 30888, 30889,
+    30890, 30891, 30892, 30893, 30894, 30895, 30901, 30902, 30903, 30904, 30906,
+    30907, 30908, 30909, 30911, 30912, 30914, 30915, 30916, 30918, 30919, 30920,
+    30924, 30925, 30926, 30927, 30929, 30930, 30931, 30934, 30935, 30936, 30938,
+    30939, 30940, 30941, 30942, 30943, 30944, 30945, 30946, 30947, 30948, 30949,
+    30950, 30951, 30953, 30954, 30955, 30957, 30958, 30959, 30960, 30961, 30963,
+    30965, 30966, 30968, 30969, 30971, 30972, 30973, 30974, 30975, 30976, 30978,
+    30979, 30980, 30982, 30983, 30984, 30985, 30986, 30987, 30988, 30784, 20648,
+    30679, 25616, 35302, 22788, 25571, 24029, 31359, 26941, 20256, 33337, 21912,
+    20018, 30126, 31383, 24162, 24202, 38383, 21019, 21561, 28810, 25462, 38180,
+    22402, 26149, 26943, 37255, 21767, 28147, 32431, 34850, 25139, 32496, 30133,
+    33576, 30913, 38604, 36766, 24904, 29943, 35789, 27492, 21050, 36176, 27425,
+    32874, 33905, 22257, 21254, 20174, 19995, 20945, 31895, 37259, 31751, 20419,
+    36479, 31713, 31388, 25703, 23828, 20652, 33030, 30209, 31929, 28140, 32736,
+    26449, 23384, 23544, 30923, 25774, 25619, 25514, 25387, 38169, 25645, 36798,
+    31572, 30249, 25171, 22823, 21574, 27513, 20643, 25140, 24102, 27526, 20195,
+    36151, 34955, 24453, 36910, 30989, 30990, 30991, 30992, 30993, 30994, 30996,
+    30997, 30998, 30999, 31000, 31001, 31002, 31003, 31004, 31005, 31007, 31008,
+    31009, 31010, 31011, 31013, 31014, 31015, 31016, 31017, 31018, 31019, 31020,
+    31021, 31022, 31023, 31024, 31025, 31026, 31027, 31029, 31030, 31031, 31032,
+    31033, 31037, 31039, 31042, 31043, 31044, 31045, 31047, 31050, 31051, 31052,
+    31053, 31054, 31055, 31056, 31057, 31058, 31060, 31061, 31064, 31065, 31073,
+    31075, 31076, 31078, 31081, 31082, 31083, 31084, 31086, 31088, 31089, 31090,
+    31091, 31092, 31093, 31094, 31097, 31099, 31100, 31101, 31102, 31103, 31106,
+    31107, 31110, 31111, 31112, 31113, 31115, 31116, 31117, 31118, 31120, 31121,
+    31122, 24608, 32829, 25285, 20025, 21333, 37112, 25528, 32966, 26086, 27694,
+    20294, 24814, 28129, 35806, 24377, 34507, 24403, 25377, 20826, 33633, 26723,
+    20992, 25443, 36424, 20498, 23707, 31095, 23548, 21040, 31291, 24764, 36947,
+    30423, 24503, 24471, 30340, 36460, 28783, 30331, 31561, 30634, 20979, 37011,
+    22564, 20302, 28404, 36842, 25932, 31515, 29380, 28068, 32735, 23265, 25269,
+    24213, 22320, 33922, 31532, 24093, 24351, 36882, 32532, 39072, 25474, 28359,
+    30872, 28857, 20856, 38747, 22443, 30005, 20291, 30008, 24215, 24806, 22880,
+    28096, 27583, 30857, 21500, 38613, 20939, 20993, 25481, 21514, 38035, 35843,
+    36300, 29241, 30879, 34678, 36845, 35853, 21472, 31123, 31124, 31125, 31126,
+    31127, 31128, 31129, 31131, 31132, 31133, 31134, 31135, 31136, 31137, 31138,
+    31139, 31140, 31141, 31142, 31144, 31145, 31146, 31147, 31148, 31149, 31150,
+    31151, 31152, 31153, 31154, 31156, 31157, 31158, 31159, 31160, 31164, 31167,
+    31170, 31172, 31173, 31175, 31176, 31178, 31180, 31182, 31183, 31184, 31187,
+    31188, 31190, 31191, 31193, 31194, 31195, 31196, 31197, 31198, 31200, 31201,
+    31202, 31205, 31208, 31210, 31212, 31214, 31217, 31218, 31219, 31220, 31221,
+    31222, 31223, 31225, 31226, 31228, 31230, 31231, 31233, 31236, 31237, 31239,
+    31240, 31241, 31242, 31244, 31247, 31248, 31249, 31250, 31251, 31253, 31254,
+    31256, 31257, 31259, 31260, 19969, 30447, 21486, 38025, 39030, 40718, 38189,
+    23450, 35746, 20002, 19996, 20908, 33891, 25026, 21160, 26635, 20375, 24683,
+    20923, 27934, 20828, 25238, 26007, 38497, 35910, 36887, 30168, 37117, 30563,
+    27602, 29322, 29420, 35835, 22581, 30585, 36172, 26460, 38208, 32922, 24230,
+    28193, 22930, 31471, 30701, 38203, 27573, 26029, 32526, 22534, 20817, 38431,
+    23545, 22697, 21544, 36466, 25958, 39039, 22244, 38045, 30462, 36929, 25479,
+    21702, 22810, 22842, 22427, 36530, 26421, 36346, 33333, 21057, 24816, 22549,
+    34558, 23784, 40517, 20420, 39069, 35769, 23077, 24694, 21380, 25212, 36943,
+    37122, 39295, 24681, 32780, 20799, 32819, 23572, 39285, 27953, 20108, 31261,
+    31263, 31265, 31266, 31268, 31269, 31270, 31271, 31272, 31273, 31274, 31275,
+    31276, 31277, 31278, 31279, 31280, 31281, 31282, 31284, 31285, 31286, 31288,
+    31290, 31294, 31296, 31297, 31298, 31299, 31300, 31301, 31303, 31304, 31305,
+    31306, 31307, 31308, 31309, 31310, 31311, 31312, 31314, 31315, 31316, 31317,
+    31318, 31320, 31321, 31322, 31323, 31324, 31325, 31326, 31327, 31328, 31329,
+    31330, 31331, 31332, 31333, 31334, 31335, 31336, 31337, 31338, 31339, 31340,
+    31341, 31342, 31343, 31345, 31346, 31347, 31349, 31355, 31356, 31357, 31358,
+    31362, 31365, 31367, 31369, 31370, 31371, 31372, 31374, 31375, 31376, 31379,
+    31380, 31385, 31386, 31387, 31390, 31393, 31394, 36144, 21457, 32602, 31567,
+    20240, 20047, 38400, 27861, 29648, 34281, 24070, 30058, 32763, 27146, 30718,
+    38034, 32321, 20961, 28902, 21453, 36820, 33539, 36137, 29359, 39277, 27867,
+    22346, 33459, 26041, 32938, 25151, 38450, 22952, 20223, 35775, 32442, 25918,
+    33778, 38750, 21857, 39134, 32933, 21290, 35837, 21536, 32954, 24223, 27832,
+    36153, 33452, 37210, 21545, 27675, 20998, 32439, 22367, 28954, 27774, 31881,
+    22859, 20221, 24575, 24868, 31914, 20016, 23553, 26539, 34562, 23792, 38155,
+    39118, 30127, 28925, 36898, 20911, 32541, 35773, 22857, 20964, 20315, 21542,
+    22827, 25975, 32932, 23413, 25206, 25282, 36752, 24133, 27679, 31526, 20239,
+    20440, 26381, 31395, 31396, 31399, 31401, 31402, 31403, 31406, 31407, 31408,
+    31409, 31410, 31412, 31413, 31414, 31415, 31416, 31417, 31418, 31419, 31420,
+    31421, 31422, 31424, 31425, 31426, 31427, 31428, 31429, 31430, 31431, 31432,
+    31433, 31434, 31436, 31437, 31438, 31439, 31440, 31441, 31442, 31443, 31444,
+    31445, 31447, 31448, 31450, 31451, 31452, 31453, 31457, 31458, 31460, 31463,
+    31464, 31465, 31466, 31467, 31468, 31470, 31472, 31473, 31474, 31475, 31476,
+    31477, 31478, 31479, 31480, 31483, 31484, 31486, 31488, 31489, 31490, 31493,
+    31495, 31497, 31500, 31501, 31502, 31504, 31506, 31507, 31510, 31511, 31512,
+    31514, 31516, 31517, 31519, 31521, 31522, 31523, 31527, 31529, 31533, 28014,
+    28074, 31119, 34993, 24343, 29995, 25242, 36741, 20463, 37340, 26023, 33071,
+    33105, 24220, 33104, 36212, 21103, 35206, 36171, 22797, 20613, 20184, 38428,
+    29238, 33145, 36127, 23500, 35747, 38468, 22919, 32538, 21648, 22134, 22030,
+    35813, 25913, 27010, 38041, 30422, 28297, 24178, 29976, 26438, 26577, 31487,
+    32925, 36214, 24863, 31174, 25954, 36195, 20872, 21018, 38050, 32568, 32923,
+    32434, 23703, 28207, 26464, 31705, 30347, 39640, 33167, 32660, 31957, 25630,
+    38224, 31295, 21578, 21733, 27468, 25601, 25096, 40509, 33011, 30105, 21106,
+    38761, 33883, 26684, 34532, 38401, 38548, 38124, 20010, 21508, 32473, 26681,
+    36319, 32789, 26356, 24218, 32697, 31535, 31536, 31538, 31540, 31541, 31542,
+    31543, 31545, 31547, 31549, 31551, 31552, 31553, 31554, 31555, 31556, 31558,
+    31560, 31562, 31565, 31566, 31571, 31573, 31575, 31577, 31580, 31582, 31583,
+    31585, 31587, 31588, 31589, 31590, 31591, 31592, 31593, 31594, 31595, 31596,
+    31597, 31599, 31600, 31603, 31604, 31606, 31608, 31610, 31612, 31613, 31615,
+    31617, 31618, 31619, 31620, 31622, 31623, 31624, 31625, 31626, 31627, 31628,
+    31630, 31631, 31633, 31634, 31635, 31638, 31640, 31641, 31642, 31643, 31646,
+    31647, 31648, 31651, 31652, 31653, 31662, 31663, 31664, 31666, 31667, 31669,
+    31670, 31671, 31673, 31674, 31675, 31676, 31677, 31678, 31679, 31680, 31682,
+    31683, 31684, 22466, 32831, 26775, 24037, 25915, 21151, 24685, 40858, 20379,
+    36524, 20844, 23467, 24339, 24041, 27742, 25329, 36129, 20849, 38057, 21246,
+    27807, 33503, 29399, 22434, 26500, 36141, 22815, 36764, 33735, 21653, 31629,
+    20272, 27837, 23396, 22993, 40723, 21476, 34506, 39592, 35895, 32929, 25925,
+    39038, 22266, 38599, 21038, 29916, 21072, 23521, 25346, 35074, 20054, 25296,
+    24618, 26874, 20851, 23448, 20896, 35266, 31649, 39302, 32592, 24815, 28748,
+    36143, 20809, 24191, 36891, 29808, 35268, 22317, 30789, 24402, 40863, 38394,
+    36712, 39740, 35809, 30328, 26690, 26588, 36330, 36149, 21053, 36746, 28378,
+    26829, 38149, 37101, 22269, 26524, 35065, 36807, 21704, 31685, 31688, 31689,
+    31690, 31691, 31693, 31694, 31695, 31696, 31698, 31700, 31701, 31702, 31703,
+    31704, 31707, 31708, 31710, 31711, 31712, 31714, 31715, 31716, 31719, 31720,
+    31721, 31723, 31724, 31725, 31727, 31728, 31730, 31731, 31732, 31733, 31734,
+    31736, 31737, 31738, 31739, 31741, 31743, 31744, 31745, 31746, 31747, 31748,
+    31749, 31750, 31752, 31753, 31754, 31757, 31758, 31760, 31761, 31762, 31763,
+    31764, 31765, 31767, 31768, 31769, 31770, 31771, 31772, 31773, 31774, 31776,
+    31777, 31778, 31779, 31780, 31781, 31784, 31785, 31787, 31788, 31789, 31790,
+    31791, 31792, 31793, 31794, 31795, 31796, 31797, 31798, 31799, 31801, 31802,
+    31803, 31804, 31805, 31806, 31810, 39608, 23401, 28023, 27686, 20133, 23475,
+    39559, 37219, 25000, 37039, 38889, 21547, 28085, 23506, 20989, 21898, 32597,
+    32752, 25788, 25421, 26097, 25022, 24717, 28938, 27735, 27721, 22831, 26477,
+    33322, 22741, 22158, 35946, 27627, 37085, 22909, 32791, 21495, 28009, 21621,
+    21917, 33655, 33743, 26680, 31166, 21644, 20309, 21512, 30418, 35977, 38402,
+    27827, 28088, 36203, 35088, 40548, 36154, 22079, 40657, 30165, 24456, 29408,
+    24680, 21756, 20136, 27178, 34913, 24658, 36720, 21700, 28888, 34425, 40511,
+    27946, 23439, 24344, 32418, 21897, 20399, 29492, 21564, 21402, 20505, 21518,
+    21628, 20046, 24573, 29786, 22774, 33899, 32993, 34676, 29392, 31946, 28246,
+    31811, 31812, 31813, 31814, 31815, 31816, 31817, 31818, 31819, 31820, 31822,
+    31823, 31824, 31825, 31826, 31827, 31828, 31829, 31830, 31831, 31832, 31833,
+    31834, 31835, 31836, 31837, 31838, 31839, 31840, 31841, 31842, 31843, 31844,
+    31845, 31846, 31847, 31848, 31849, 31850, 31851, 31852, 31853, 31854, 31855,
+    31856, 31857, 31858, 31861, 31862, 31863, 31864, 31865, 31866, 31870, 31871,
+    31872, 31873, 31874, 31875, 31876, 31877, 31878, 31879, 31880, 31882, 31883,
+    31884, 31885, 31886, 31887, 31888, 31891, 31892, 31894, 31897, 31898, 31899,
+    31904, 31905, 31907, 31910, 31911, 31912, 31913, 31915, 31916, 31917, 31919,
+    31920, 31924, 31925, 31926, 31927, 31928, 31930, 31931, 24359, 34382, 21804,
+    25252, 20114, 27818, 25143, 33457, 21719, 21326, 29502, 28369, 30011, 21010,
+    21270, 35805, 27088, 24458, 24576, 28142, 22351, 27426, 29615, 26707, 36824,
+    32531, 25442, 24739, 21796, 30186, 35938, 28949, 28067, 23462, 24187, 33618,
+    24908, 40644, 30970, 34647, 31783, 30343, 20976, 24822, 29004, 26179, 24140,
+    24653, 35854, 28784, 25381, 36745, 24509, 24674, 34516, 22238, 27585, 24724,
+    24935, 21321, 24800, 26214, 36159, 31229, 20250, 28905, 27719, 35763, 35826,
+    32472, 33636, 26127, 23130, 39746, 27985, 28151, 35905, 27963, 20249, 28779,
+    33719, 25110, 24785, 38669, 36135, 31096, 20987, 22334, 22522, 26426, 30072,
+    31293, 31215, 31637, 31935, 31936, 31938, 31939, 31940, 31942, 31945, 31947,
+    31950, 31951, 31952, 31953, 31954, 31955, 31956, 31960, 31962, 31963, 31965,
+    31966, 31969, 31970, 31971, 31972, 31973, 31974, 31975, 31977, 31978, 31979,
+    31980, 31981, 31982, 31984, 31985, 31986, 31987, 31988, 31989, 31990, 31991,
+    31993, 31994, 31996, 31997, 31998, 31999, 32000, 32001, 32002, 32003, 32004,
+    32005, 32006, 32007, 32008, 32009, 32011, 32012, 32013, 32014, 32015, 32016,
+    32017, 32018, 32019, 32020, 32021, 32022, 32023, 32024, 32025, 32026, 32027,
+    32028, 32029, 32030, 32031, 32033, 32035, 32036, 32037, 32038, 32040, 32041,
+    32042, 32044, 32045, 32046, 32048, 32049, 32050, 32051, 32052, 32053, 32054,
+    32908, 39269, 36857, 28608, 35749, 40481, 23020, 32489, 32521, 21513, 26497,
+    26840, 36753, 31821, 38598, 21450, 24613, 30142, 27762, 21363, 23241, 32423,
+    25380, 20960, 33034, 24049, 34015, 25216, 20864, 23395, 20238, 31085, 21058,
+    24760, 27982, 23492, 23490, 35745, 35760, 26082, 24524, 38469, 22931, 32487,
+    32426, 22025, 26551, 22841, 20339, 23478, 21152, 33626, 39050, 36158, 30002,
+    38078, 20551, 31292, 20215, 26550, 39550, 23233, 27516, 30417, 22362, 23574,
+    31546, 38388, 29006, 20860, 32937, 33392, 22904, 32516, 33575, 26816, 26604,
+    30897, 30839, 25315, 25441, 31616, 20461, 21098, 20943, 33616, 27099, 37492,
+    36341, 36145, 35265, 38190, 31661, 20214, 32055, 32056, 32057, 32058, 32059,
+    32060, 32061, 32062, 32063, 32064, 32065, 32066, 32067, 32068, 32069, 32070,
+    32071, 32072, 32073, 32074, 32075, 32076, 32077, 32078, 32079, 32080, 32081,
+    32082, 32083, 32084, 32085, 32086, 32087, 32088, 32089, 32090, 32091, 32092,
+    32093, 32094, 32095, 32096, 32097, 32098, 32099, 32100, 32101, 32102, 32103,
+    32104, 32105, 32106, 32107, 32108, 32109, 32111, 32112, 32113, 32114, 32115,
+    32116, 32117, 32118, 32120, 32121, 32122, 32123, 32124, 32125, 32126, 32127,
+    32128, 32129, 32130, 32131, 32132, 32133, 32134, 32135, 32136, 32137, 32138,
+    32139, 32140, 32141, 32142, 32143, 32144, 32145, 32146, 32147, 32148, 32149,
+    32150, 32151, 32152, 20581, 33328, 21073, 39279, 28176, 28293, 28071, 24314,
+    20725, 23004, 23558, 27974, 27743, 30086, 33931, 26728, 22870, 35762, 21280,
+    37233, 38477, 34121, 26898, 30977, 28966, 33014, 20132, 37066, 27975, 39556,
+    23047, 22204, 25605, 38128, 30699, 20389, 33050, 29409, 35282, 39290, 32564,
+    32478, 21119, 25945, 37237, 36735, 36739, 21483, 31382, 25581, 25509, 30342,
+    31224, 34903, 38454, 25130, 21163, 33410, 26708, 26480, 25463, 30571, 31469,
+    27905, 32467, 35299, 22992, 25106, 34249, 33445, 30028, 20511, 20171, 30117,
+    35819, 23626, 24062, 31563, 26020, 37329, 20170, 27941, 35167, 32039, 38182,
+    20165, 35880, 36827, 38771, 26187, 31105, 36817, 28908, 28024, 32153, 32154,
+    32155, 32156, 32157, 32158, 32159, 32160, 32161, 32162, 32163, 32164, 32165,
+    32167, 32168, 32169, 32170, 32171, 32172, 32173, 32175, 32176, 32177, 32178,
+    32179, 32180, 32181, 32182, 32183, 32184, 32185, 32186, 32187, 32188, 32189,
+    32190, 32191, 32192, 32193, 32194, 32195, 32196, 32197, 32198, 32199, 32200,
+    32201, 32202, 32203, 32204, 32205, 32206, 32207, 32208, 32209, 32210, 32211,
+    32212, 32213, 32214, 32215, 32216, 32217, 32218, 32219, 32220, 32221, 32222,
+    32223, 32224, 32225, 32226, 32227, 32228, 32229, 32230, 32231, 32232, 32233,
+    32234, 32235, 32236, 32237, 32238, 32239, 32240, 32241, 32242, 32243, 32244,
+    32245, 32246, 32247, 32248, 32249, 32250, 23613, 21170, 33606, 20834, 33550,
+    30555, 26230, 40120, 20140, 24778, 31934, 31923, 32463, 20117, 35686, 26223,
+    39048, 38745, 22659, 25964, 38236, 24452, 30153, 38742, 31455, 31454, 20928,
+    28847, 31384, 25578, 31350, 32416, 29590, 38893, 20037, 28792, 20061, 37202,
+    21417, 25937, 26087, 33276, 33285, 21646, 23601, 30106, 38816, 25304, 29401,
+    30141, 23621, 39545, 33738, 23616, 21632, 30697, 20030, 27822, 32858, 25298,
+    25454, 24040, 20855, 36317, 36382, 38191, 20465, 21477, 24807, 28844, 21095,
+    25424, 40515, 23071, 20518, 30519, 21367, 32482, 25733, 25899, 25225, 25496,
+    20500, 29237, 35273, 20915, 35776, 32477, 22343, 33740, 38055, 20891, 21531,
+    23803, 32251, 32252, 32253, 32254, 32255, 32256, 32257, 32258, 32259, 32260,
+    32261, 32262, 32263, 32264, 32265, 32266, 32267, 32268, 32269, 32270, 32271,
+    32272, 32273, 32274, 32275, 32276, 32277, 32278, 32279, 32280, 32281, 32282,
+    32283, 32284, 32285, 32286, 32287, 32288, 32289, 32290, 32291, 32292, 32293,
+    32294, 32295, 32296, 32297, 32298, 32299, 32300, 32301, 32302, 32303, 32304,
+    32305, 32306, 32307, 32308, 32309, 32310, 32311, 32312, 32313, 32314, 32316,
+    32317, 32318, 32319, 32320, 32322, 32323, 32324, 32325, 32326, 32328, 32329,
+    32330, 32331, 32332, 32333, 32334, 32335, 32336, 32337, 32338, 32339, 32340,
+    32341, 32342, 32343, 32344, 32345, 32346, 32347, 32348, 32349, 20426, 31459,
+    27994, 37089, 39567, 21888, 21654, 21345, 21679, 24320, 25577, 26999, 20975,
+    24936, 21002, 22570, 21208, 22350, 30733, 30475, 24247, 24951, 31968, 25179,
+    25239, 20130, 28821, 32771, 25335, 28900, 38752, 22391, 33499, 26607, 26869,
+    30933, 39063, 31185, 22771, 21683, 21487, 28212, 20811, 21051, 23458, 35838,
+    32943, 21827, 22438, 24691, 22353, 21549, 31354, 24656, 23380, 25511, 25248,
+    21475, 25187, 23495, 26543, 21741, 31391, 33510, 37239, 24211, 35044, 22840,
+    22446, 25358, 36328, 33007, 22359, 31607, 20393, 24555, 23485, 27454, 21281,
+    31568, 29378, 26694, 30719, 30518, 26103, 20917, 20111, 30420, 23743, 31397,
+    33909, 22862, 39745, 20608, 32350, 32351, 32352, 32353, 32354, 32355, 32356,
+    32357, 32358, 32359, 32360, 32361, 32362, 32363, 32364, 32365, 32366, 32367,
+    32368, 32369, 32370, 32371, 32372, 32373, 32374, 32375, 32376, 32377, 32378,
+    32379, 32380, 32381, 32382, 32383, 32384, 32385, 32387, 32388, 32389, 32390,
+    32391, 32392, 32393, 32394, 32395, 32396, 32397, 32398, 32399, 32400, 32401,
+    32402, 32403, 32404, 32405, 32406, 32407, 32408, 32409, 32410, 32412, 32413,
+    32414, 32430, 32436, 32443, 32444, 32470, 32484, 32492, 32505, 32522, 32528,
+    32542, 32567, 32569, 32571, 32572, 32573, 32574, 32575, 32576, 32577, 32579,
+    32582, 32583, 32584, 32585, 32586, 32587, 32588, 32589, 32590, 32591, 32594,
+    32595, 39304, 24871, 28291, 22372, 26118, 25414, 22256, 25324, 25193, 24275,
+    38420, 22403, 25289, 21895, 34593, 33098, 36771, 21862, 33713, 26469, 36182,
+    34013, 23146, 26639, 25318, 31726, 38417, 20848, 28572, 35888, 25597, 35272,
+    25042, 32518, 28866, 28389, 29701, 27028, 29436, 24266, 37070, 26391, 28010,
+    25438, 21171, 29282, 32769, 20332, 23013, 37226, 28889, 28061, 21202, 20048,
+    38647, 38253, 34174, 30922, 32047, 20769, 22418, 25794, 32907, 31867, 27882,
+    26865, 26974, 20919, 21400, 26792, 29313, 40654, 31729, 29432, 31163, 28435,
+    29702, 26446, 37324, 40100, 31036, 33673, 33620, 21519, 26647, 20029, 21385,
+    21169, 30782, 21382, 21033, 20616, 20363, 20432, 32598, 32601, 32603, 32604,
+    32605, 32606, 32608, 32611, 32612, 32613, 32614, 32615, 32619, 32620, 32621,
+    32623, 32624, 32627, 32629, 32630, 32631, 32632, 32634, 32635, 32636, 32637,
+    32639, 32640, 32642, 32643, 32644, 32645, 32646, 32647, 32648, 32649, 32651,
+    32653, 32655, 32656, 32657, 32658, 32659, 32661, 32662, 32663, 32664, 32665,
+    32667, 32668, 32672, 32674, 32675, 32677, 32678, 32680, 32681, 32682, 32683,
+    32684, 32685, 32686, 32689, 32691, 32692, 32693, 32694, 32695, 32698, 32699,
+    32702, 32704, 32706, 32707, 32708, 32710, 32711, 32712, 32713, 32715, 32717,
+    32719, 32720, 32721, 32722, 32723, 32726, 32727, 32729, 32730, 32731, 32732,
+    32733, 32734, 32738, 32739, 30178, 31435, 31890, 27813, 38582, 21147, 29827,
+    21737, 20457, 32852, 33714, 36830, 38256, 24265, 24604, 28063, 24088, 25947,
+    33080, 38142, 24651, 28860, 32451, 31918, 20937, 26753, 31921, 33391, 20004,
+    36742, 37327, 26238, 20142, 35845, 25769, 32842, 20698, 30103, 29134, 23525,
+    36797, 28518, 20102, 25730, 38243, 24278, 26009, 21015, 35010, 28872, 21155,
+    29454, 29747, 26519, 30967, 38678, 20020, 37051, 40158, 28107, 20955, 36161,
+    21533, 25294, 29618, 33777, 38646, 40836, 38083, 20278, 32666, 20940, 28789,
+    38517, 23725, 39046, 21478, 20196, 28316, 29705, 27060, 30827, 39311, 30041,
+    21016, 30244, 27969, 26611, 20845, 40857, 32843, 21657, 31548, 31423, 32740,
+    32743, 32744, 32746, 32747, 32748, 32749, 32751, 32754, 32756, 32757, 32758,
+    32759, 32760, 32761, 32762, 32765, 32766, 32767, 32770, 32775, 32776, 32777,
+    32778, 32782, 32783, 32785, 32787, 32794, 32795, 32797, 32798, 32799, 32801,
+    32803, 32804, 32811, 32812, 32813, 32814, 32815, 32816, 32818, 32820, 32825,
+    32826, 32828, 32830, 32832, 32833, 32836, 32837, 32839, 32840, 32841, 32846,
+    32847, 32848, 32849, 32851, 32853, 32854, 32855, 32857, 32859, 32860, 32861,
+    32862, 32863, 32864, 32865, 32866, 32867, 32868, 32869, 32870, 32871, 32872,
+    32875, 32876, 32877, 32878, 32879, 32880, 32882, 32883, 32884, 32885, 32886,
+    32887, 32888, 32889, 32890, 32891, 32892, 32893, 38534, 22404, 25314, 38471,
+    27004, 23044, 25602, 31699, 28431, 38475, 33446, 21346, 39045, 24208, 28809,
+    25523, 21348, 34383, 40065, 40595, 30860, 38706, 36335, 36162, 40575, 28510,
+    31108, 24405, 38470, 25134, 39540, 21525, 38109, 20387, 26053, 23653, 23649,
+    32533, 34385, 27695, 24459, 29575, 28388, 32511, 23782, 25371, 23402, 28390,
+    21365, 20081, 25504, 30053, 25249, 36718, 20262, 20177, 27814, 32438, 35770,
+    33821, 34746, 32599, 36923, 38179, 31657, 39585, 35064, 33853, 27931, 39558,
+    32476, 22920, 40635, 29595, 30721, 34434, 39532, 39554, 22043, 21527, 22475,
+    20080, 40614, 21334, 36808, 33033, 30610, 39314, 34542, 28385, 34067, 26364,
+    24930, 28459, 32894, 32897, 32898, 32901, 32904, 32906, 32909, 32910, 32911,
+    32912, 32913, 32914, 32916, 32917, 32919, 32921, 32926, 32931, 32934, 32935,
+    32936, 32940, 32944, 32947, 32949, 32950, 32952, 32953, 32955, 32965, 32967,
+    32968, 32969, 32970, 32971, 32975, 32976, 32977, 32978, 32979, 32980, 32981,
+    32984, 32991, 32992, 32994, 32995, 32998, 33006, 33013, 33015, 33017, 33019,
+    33022, 33023, 33024, 33025, 33027, 33028, 33029, 33031, 33032, 33035, 33036,
+    33045, 33047, 33049, 33051, 33052, 33053, 33055, 33056, 33057, 33058, 33059,
+    33060, 33061, 33062, 33063, 33064, 33065, 33066, 33067, 33069, 33070, 33072,
+    33075, 33076, 33077, 33079, 33081, 33082, 33083, 33084, 33085, 33087, 35881,
+    33426, 33579, 30450, 27667, 24537, 33725, 29483, 33541, 38170, 27611, 30683,
+    38086, 21359, 33538, 20882, 24125, 35980, 36152, 20040, 29611, 26522, 26757,
+    37238, 38665, 29028, 27809, 30473, 23186, 38209, 27599, 32654, 26151, 23504,
+    22969, 23194, 38376, 38391, 20204, 33804, 33945, 27308, 30431, 38192, 29467,
+    26790, 23391, 30511, 37274, 38753, 31964, 36855, 35868, 24357, 31859, 31192,
+    35269, 27852, 34588, 23494, 24130, 26825, 30496, 32501, 20885, 20813, 21193,
+    23081, 32517, 38754, 33495, 25551, 30596, 34256, 31186, 28218, 24217, 22937,
+    34065, 28781, 27665, 25279, 30399, 25935, 24751, 38397, 26126, 34719, 40483,
+    38125, 21517, 21629, 35884, 25720, 33088, 33089, 33090, 33091, 33092, 33093,
+    33095, 33097, 33101, 33102, 33103, 33106, 33110, 33111, 33112, 33115, 33116,
+    33117, 33118, 33119, 33121, 33122, 33123, 33124, 33126, 33128, 33130, 33131,
+    33132, 33135, 33138, 33139, 33141, 33142, 33143, 33144, 33153, 33155, 33156,
+    33157, 33158, 33159, 33161, 33163, 33164, 33165, 33166, 33168, 33170, 33171,
+    33172, 33173, 33174, 33175, 33177, 33178, 33182, 33183, 33184, 33185, 33186,
+    33188, 33189, 33191, 33193, 33195, 33196, 33197, 33198, 33199, 33200, 33201,
+    33202, 33204, 33205, 33206, 33207, 33208, 33209, 33212, 33213, 33214, 33215,
+    33220, 33221, 33223, 33224, 33225, 33227, 33229, 33230, 33231, 33232, 33233,
+    33234, 33235, 25721, 34321, 27169, 33180, 30952, 25705, 39764, 25273, 26411,
+    33707, 22696, 40664, 27819, 28448, 23518, 38476, 35851, 29279, 26576, 25287,
+    29281, 20137, 22982, 27597, 22675, 26286, 24149, 21215, 24917, 26408, 30446,
+    30566, 29287, 31302, 25343, 21738, 21584, 38048, 37027, 23068, 32435, 27670,
+    20035, 22902, 32784, 22856, 21335, 30007, 38590, 22218, 25376, 33041, 24700,
+    38393, 28118, 21602, 39297, 20869, 23273, 33021, 22958, 38675, 20522, 27877,
+    23612, 25311, 20320, 21311, 33147, 36870, 28346, 34091, 25288, 24180, 30910,
+    25781, 25467, 24565, 23064, 37247, 40479, 23615, 25423, 32834, 23421, 21870,
+    38218, 38221, 28037, 24744, 26592, 29406, 20957, 23425, 33236, 33237, 33238,
+    33239, 33240, 33241, 33242, 33243, 33244, 33245, 33246, 33247, 33248, 33249,
+    33250, 33252, 33253, 33254, 33256, 33257, 33259, 33262, 33263, 33264, 33265,
+    33266, 33269, 33270, 33271, 33272, 33273, 33274, 33277, 33279, 33283, 33287,
+    33288, 33289, 33290, 33291, 33294, 33295, 33297, 33299, 33301, 33302, 33303,
+    33304, 33305, 33306, 33309, 33312, 33316, 33317, 33318, 33319, 33321, 33326,
+    33330, 33338, 33340, 33341, 33343, 33344, 33345, 33346, 33347, 33349, 33350,
+    33352, 33354, 33356, 33357, 33358, 33360, 33361, 33362, 33363, 33364, 33365,
+    33366, 33367, 33369, 33371, 33372, 33373, 33374, 33376, 33377, 33378, 33379,
+    33380, 33381, 33382, 33383, 33385, 25319, 27870, 29275, 25197, 38062, 32445,
+    33043, 27987, 20892, 24324, 22900, 21162, 24594, 22899, 26262, 34384, 30111,
+    25386, 25062, 31983, 35834, 21734, 27431, 40485, 27572, 34261, 21589, 20598,
+    27812, 21866, 36276, 29228, 24085, 24597, 29750, 25293, 25490, 29260, 24472,
+    28227, 27966, 25856, 28504, 30424, 30928, 30460, 30036, 21028, 21467, 20051,
+    24222, 26049, 32810, 32982, 25243, 21638, 21032, 28846, 34957, 36305, 27873,
+    21624, 32986, 22521, 35060, 36180, 38506, 37197, 20329, 27803, 21943, 30406,
+    30768, 25256, 28921, 28558, 24429, 34028, 26842, 30844, 31735, 33192, 26379,
+    40527, 25447, 30896, 22383, 30738, 38713, 25209, 25259, 21128, 29749, 27607,
+    33386, 33387, 33388, 33389, 33393, 33397, 33398, 33399, 33400, 33403, 33404,
+    33408, 33409, 33411, 33413, 33414, 33415, 33417, 33420, 33424, 33427, 33428,
+    33429, 33430, 33434, 33435, 33438, 33440, 33442, 33443, 33447, 33458, 33461,
+    33462, 33466, 33467, 33468, 33471, 33472, 33474, 33475, 33477, 33478, 33481,
+    33488, 33494, 33497, 33498, 33501, 33506, 33511, 33512, 33513, 33514, 33516,
+    33517, 33518, 33520, 33522, 33523, 33525, 33526, 33528, 33530, 33532, 33533,
+    33534, 33535, 33536, 33546, 33547, 33549, 33552, 33554, 33555, 33558, 33560,
+    33561, 33565, 33566, 33567, 33568, 33569, 33570, 33571, 33572, 33573, 33574,
+    33577, 33578, 33582, 33584, 33586, 33591, 33595, 33597, 21860, 33086, 30130,
+    30382, 21305, 30174, 20731, 23617, 35692, 31687, 20559, 29255, 39575, 39128,
+    28418, 29922, 31080, 25735, 30629, 25340, 39057, 36139, 21697, 32856, 20050,
+    22378, 33529, 33805, 24179, 20973, 29942, 35780, 23631, 22369, 27900, 39047,
+    23110, 30772, 39748, 36843, 31893, 21078, 25169, 38138, 20166, 33670, 33889,
+    33769, 33970, 22484, 26420, 22275, 26222, 28006, 35889, 26333, 28689, 26399,
+    27450, 26646, 25114, 22971, 19971, 20932, 28422, 26578, 27791, 20854, 26827,
+    22855, 27495, 30054, 23822, 33040, 40784, 26071, 31048, 31041, 39569, 36215,
+    23682, 20062, 20225, 21551, 22865, 30732, 22120, 27668, 36804, 24323, 27773,
+    27875, 35755, 25488, 33598, 33599, 33601, 33602, 33604, 33605, 33608, 33610,
+    33611, 33612, 33613, 33614, 33619, 33621, 33622, 33623, 33624, 33625, 33629,
+    33634, 33648, 33649, 33650, 33651, 33652, 33653, 33654, 33657, 33658, 33662,
+    33663, 33664, 33665, 33666, 33667, 33668, 33671, 33672, 33674, 33675, 33676,
+    33677, 33679, 33680, 33681, 33684, 33685, 33686, 33687, 33689, 33690, 33693,
+    33695, 33697, 33698, 33699, 33700, 33701, 33702, 33703, 33708, 33709, 33710,
+    33711, 33717, 33723, 33726, 33727, 33730, 33731, 33732, 33734, 33736, 33737,
+    33739, 33741, 33742, 33744, 33745, 33746, 33747, 33749, 33751, 33753, 33754,
+    33755, 33758, 33762, 33763, 33764, 33766, 33767, 33768, 33771, 33772, 33773,
+    24688, 27965, 29301, 25190, 38030, 38085, 21315, 36801, 31614, 20191, 35878,
+    20094, 40660, 38065, 38067, 21069, 28508, 36963, 27973, 35892, 22545, 23884,
+    27424, 27465, 26538, 21595, 33108, 32652, 22681, 34103, 24378, 25250, 27207,
+    38201, 25970, 24708, 26725, 30631, 20052, 20392, 24039, 38808, 25772, 32728,
+    23789, 20431, 31373, 20999, 33540, 19988, 24623, 31363, 38054, 20405, 20146,
+    31206, 29748, 21220, 33465, 25810, 31165, 23517, 27777, 38738, 36731, 27682,
+    20542, 21375, 28165, 25806, 26228, 27696, 24773, 39031, 35831, 24198, 29756,
+    31351, 31179, 19992, 37041, 29699, 27714, 22234, 37195, 27845, 36235, 21306,
+    34502, 26354, 36527, 23624, 39537, 28192, 33774, 33775, 33779, 33780, 33781,
+    33782, 33783, 33786, 33787, 33788, 33790, 33791, 33792, 33794, 33797, 33799,
+    33800, 33801, 33802, 33808, 33810, 33811, 33812, 33813, 33814, 33815, 33817,
+    33818, 33819, 33822, 33823, 33824, 33825, 33826, 33827, 33833, 33834, 33835,
+    33836, 33837, 33838, 33839, 33840, 33842, 33843, 33844, 33845, 33846, 33847,
+    33849, 33850, 33851, 33854, 33855, 33856, 33857, 33858, 33859, 33860, 33861,
+    33863, 33864, 33865, 33866, 33867, 33868, 33869, 33870, 33871, 33872, 33874,
+    33875, 33876, 33877, 33878, 33880, 33885, 33886, 33887, 33888, 33890, 33892,
+    33893, 33894, 33895, 33896, 33898, 33902, 33903, 33904, 33906, 33908, 33911,
+    33913, 33915, 33916, 21462, 23094, 40843, 36259, 21435, 22280, 39079, 26435,
+    37275, 27849, 20840, 30154, 25331, 29356, 21048, 21149, 32570, 28820, 30264,
+    21364, 40522, 27063, 30830, 38592, 35033, 32676, 28982, 29123, 20873, 26579,
+    29924, 22756, 25880, 22199, 35753, 39286, 25200, 32469, 24825, 28909, 22764,
+    20161, 20154, 24525, 38887, 20219, 35748, 20995, 22922, 32427, 25172, 20173,
+    26085, 25102, 33592, 33993, 33635, 34701, 29076, 28342, 23481, 32466, 20887,
+    25545, 26580, 32905, 33593, 34837, 20754, 23418, 22914, 36785, 20083, 27741,
+    20837, 35109, 36719, 38446, 34122, 29790, 38160, 38384, 28070, 33509, 24369,
+    25746, 27922, 33832, 33134, 40131, 22622, 36187, 19977, 21441, 33917, 33918,
+    33919, 33920, 33921, 33923, 33924, 33925, 33926, 33930, 33933, 33935, 33936,
+    33937, 33938, 33939, 33940, 33941, 33942, 33944, 33946, 33947, 33949, 33950,
+    33951, 33952, 33954, 33955, 33956, 33957, 33958, 33959, 33960, 33961, 33962,
+    33963, 33964, 33965, 33966, 33968, 33969, 33971, 33973, 33974, 33975, 33979,
+    33980, 33982, 33984, 33986, 33987, 33989, 33990, 33991, 33992, 33995, 33996,
+    33998, 33999, 34002, 34004, 34005, 34007, 34008, 34009, 34010, 34011, 34012,
+    34014, 34017, 34018, 34020, 34023, 34024, 34025, 34026, 34027, 34029, 34030,
+    34031, 34033, 34034, 34035, 34036, 34037, 34038, 34039, 34040, 34041, 34042,
+    34043, 34045, 34046, 34048, 34049, 34050, 20254, 25955, 26705, 21971, 20007,
+    25620, 39578, 25195, 23234, 29791, 33394, 28073, 26862, 20711, 33678, 30722,
+    26432, 21049, 27801, 32433, 20667, 21861, 29022, 31579, 26194, 29642, 33515,
+    26441, 23665, 21024, 29053, 34923, 38378, 38485, 25797, 36193, 33203, 21892,
+    27733, 25159, 32558, 22674, 20260, 21830, 36175, 26188, 19978, 23578, 35059,
+    26786, 25422, 31245, 28903, 33421, 21242, 38902, 23569, 21736, 37045, 32461,
+    22882, 36170, 34503, 33292, 33293, 36198, 25668, 23556, 24913, 28041, 31038,
+    35774, 30775, 30003, 21627, 20280, 36523, 28145, 23072, 32453, 31070, 27784,
+    23457, 23158, 29978, 32958, 24910, 28183, 22768, 29983, 29989, 29298, 21319,
+    32499, 34051, 34052, 34053, 34054, 34055, 34056, 34057, 34058, 34059, 34061,
+    34062, 34063, 34064, 34066, 34068, 34069, 34070, 34072, 34073, 34075, 34076,
+    34077, 34078, 34080, 34082, 34083, 34084, 34085, 34086, 34087, 34088, 34089,
+    34090, 34093, 34094, 34095, 34096, 34097, 34098, 34099, 34100, 34101, 34102,
+    34110, 34111, 34112, 34113, 34114, 34116, 34117, 34118, 34119, 34123, 34124,
+    34125, 34126, 34127, 34128, 34129, 34130, 34131, 34132, 34133, 34135, 34136,
+    34138, 34139, 34140, 34141, 34143, 34144, 34145, 34146, 34147, 34149, 34150,
+    34151, 34153, 34154, 34155, 34156, 34157, 34158, 34159, 34160, 34161, 34163,
+    34165, 34166, 34167, 34168, 34172, 34173, 34175, 34176, 34177, 30465, 30427,
+    21097, 32988, 22307, 24072, 22833, 29422, 26045, 28287, 35799, 23608, 34417,
+    21313, 30707, 25342, 26102, 20160, 39135, 34432, 23454, 35782, 21490, 30690,
+    20351, 23630, 39542, 22987, 24335, 31034, 22763, 19990, 26623, 20107, 25325,
+    35475, 36893, 21183, 26159, 21980, 22124, 36866, 20181, 20365, 37322, 39280,
+    27663, 24066, 24643, 23460, 35270, 35797, 25910, 25163, 39318, 23432, 23551,
+    25480, 21806, 21463, 30246, 20861, 34092, 26530, 26803, 27530, 25234, 36755,
+    21460, 33298, 28113, 30095, 20070, 36174, 23408, 29087, 34223, 26257, 26329,
+    32626, 34560, 40653, 40736, 23646, 26415, 36848, 26641, 26463, 25101, 31446,
+    22661, 24246, 25968, 28465, 34178, 34179, 34182, 34184, 34185, 34186, 34187,
+    34188, 34189, 34190, 34192, 34193, 34194, 34195, 34196, 34197, 34198, 34199,
+    34200, 34201, 34202, 34205, 34206, 34207, 34208, 34209, 34210, 34211, 34213,
+    34214, 34215, 34217, 34219, 34220, 34221, 34225, 34226, 34227, 34228, 34229,
+    34230, 34232, 34234, 34235, 34236, 34237, 34238, 34239, 34240, 34242, 34243,
+    34244, 34245, 34246, 34247, 34248, 34250, 34251, 34252, 34253, 34254, 34257,
+    34258, 34260, 34262, 34263, 34264, 34265, 34266, 34267, 34269, 34270, 34271,
+    34272, 34273, 34274, 34275, 34277, 34278, 34279, 34280, 34282, 34283, 34284,
+    34285, 34286, 34287, 34288, 34289, 34290, 34291, 34292, 34293, 34294, 34295,
+    34296, 24661, 21047, 32781, 25684, 34928, 29993, 24069, 26643, 25332, 38684,
+    21452, 29245, 35841, 27700, 30561, 31246, 21550, 30636, 39034, 33308, 35828,
+    30805, 26388, 28865, 26031, 25749, 22070, 24605, 31169, 21496, 19997, 27515,
+    32902, 23546, 21987, 22235, 20282, 20284, 39282, 24051, 26494, 32824, 24578,
+    39042, 36865, 23435, 35772, 35829, 25628, 33368, 25822, 22013, 33487, 37221,
+    20439, 32032, 36895, 31903, 20723, 22609, 28335, 23487, 35785, 32899, 37240,
+    33948, 31639, 34429, 38539, 38543, 32485, 39635, 30862, 23681, 31319, 36930,
+    38567, 31071, 23385, 25439, 31499, 34001, 26797, 21766, 32553, 29712, 32034,
+    38145, 25152, 22604, 20182, 23427, 22905, 22612, 34297, 34298, 34300, 34301,
+    34302, 34304, 34305, 34306, 34307, 34308, 34310, 34311, 34312, 34313, 34314,
+    34315, 34316, 34317, 34318, 34319, 34320, 34322, 34323, 34324, 34325, 34327,
+    34328, 34329, 34330, 34331, 34332, 34333, 34334, 34335, 34336, 34337, 34338,
+    34339, 34340, 34341, 34342, 34344, 34346, 34347, 34348, 34349, 34350, 34351,
+    34352, 34353, 34354, 34355, 34356, 34357, 34358, 34359, 34361, 34362, 34363,
+    34365, 34366, 34367, 34368, 34369, 34370, 34371, 34372, 34373, 34374, 34375,
+    34376, 34377, 34378, 34379, 34380, 34386, 34387, 34389, 34390, 34391, 34392,
+    34393, 34395, 34396, 34397, 34399, 34400, 34401, 34403, 34404, 34405, 34406,
+    34407, 34408, 34409, 34410, 29549, 25374, 36427, 36367, 32974, 33492, 25260,
+    21488, 27888, 37214, 22826, 24577, 27760, 22349, 25674, 36138, 30251, 28393,
+    22363, 27264, 30192, 28525, 35885, 35848, 22374, 27631, 34962, 30899, 25506,
+    21497, 28845, 27748, 22616, 25642, 22530, 26848, 33179, 21776, 31958, 20504,
+    36538, 28108, 36255, 28907, 25487, 28059, 28372, 32486, 33796, 26691, 36867,
+    28120, 38518, 35752, 22871, 29305, 34276, 33150, 30140, 35466, 26799, 21076,
+    36386, 38161, 25552, 39064, 36420, 21884, 20307, 26367, 22159, 24789, 28053,
+    21059, 23625, 22825, 28155, 22635, 30000, 29980, 24684, 33300, 33094, 25361,
+    26465, 36834, 30522, 36339, 36148, 38081, 24086, 21381, 21548, 28867, 34413,
+    34415, 34416, 34418, 34419, 34420, 34421, 34422, 34423, 34424, 34435, 34436,
+    34437, 34438, 34439, 34440, 34441, 34446, 34447, 34448, 34449, 34450, 34452,
+    34454, 34455, 34456, 34457, 34458, 34459, 34462, 34463, 34464, 34465, 34466,
+    34469, 34470, 34475, 34477, 34478, 34482, 34483, 34487, 34488, 34489, 34491,
+    34492, 34493, 34494, 34495, 34497, 34498, 34499, 34501, 34504, 34508, 34509,
+    34514, 34515, 34517, 34518, 34519, 34522, 34524, 34525, 34528, 34529, 34530,
+    34531, 34533, 34534, 34535, 34536, 34538, 34539, 34540, 34543, 34549, 34550,
+    34551, 34554, 34555, 34556, 34557, 34559, 34561, 34564, 34565, 34566, 34571,
+    34572, 34574, 34575, 34576, 34577, 34580, 34582, 27712, 24311, 20572, 20141,
+    24237, 25402, 33351, 36890, 26704, 37230, 30643, 21516, 38108, 24420, 31461,
+    26742, 25413, 31570, 32479, 30171, 20599, 25237, 22836, 36879, 20984, 31171,
+    31361, 22270, 24466, 36884, 28034, 23648, 22303, 21520, 20820, 28237, 22242,
+    25512, 39059, 33151, 34581, 35114, 36864, 21534, 23663, 33216, 25302, 25176,
+    33073, 40501, 38464, 39534, 39548, 26925, 22949, 25299, 21822, 25366, 21703,
+    34521, 27964, 23043, 29926, 34972, 27498, 22806, 35916, 24367, 28286, 29609,
+    39037, 20024, 28919, 23436, 30871, 25405, 26202, 30358, 24779, 23451, 23113,
+    19975, 33109, 27754, 29579, 20129, 26505, 32593, 24448, 26106, 26395, 24536,
+    22916, 23041, 34585, 34587, 34589, 34591, 34592, 34596, 34598, 34599, 34600,
+    34602, 34603, 34604, 34605, 34607, 34608, 34610, 34611, 34613, 34614, 34616,
+    34617, 34618, 34620, 34621, 34624, 34625, 34626, 34627, 34628, 34629, 34630,
+    34634, 34635, 34637, 34639, 34640, 34641, 34642, 34644, 34645, 34646, 34648,
+    34650, 34651, 34652, 34653, 34654, 34655, 34657, 34658, 34662, 34663, 34664,
+    34665, 34666, 34667, 34668, 34669, 34671, 34673, 34674, 34675, 34677, 34679,
+    34680, 34681, 34682, 34687, 34688, 34689, 34692, 34694, 34695, 34697, 34698,
+    34700, 34702, 34703, 34704, 34705, 34706, 34708, 34709, 34710, 34712, 34713,
+    34714, 34715, 34716, 34717, 34718, 34720, 34721, 34722, 34723, 34724, 24013,
+    24494, 21361, 38886, 36829, 26693, 22260, 21807, 24799, 20026, 28493, 32500,
+    33479, 33806, 22996, 20255, 20266, 23614, 32428, 26410, 34074, 21619, 30031,
+    32963, 21890, 39759, 20301, 28205, 35859, 23561, 24944, 21355, 30239, 28201,
+    34442, 25991, 38395, 32441, 21563, 31283, 32010, 38382, 21985, 32705, 29934,
+    25373, 34583, 28065, 31389, 25105, 26017, 21351, 25569, 27779, 24043, 21596,
+    38056, 20044, 27745, 35820, 23627, 26080, 33436, 26791, 21566, 21556, 27595,
+    27494, 20116, 25410, 21320, 33310, 20237, 20398, 22366, 25098, 38654, 26212,
+    29289, 21247, 21153, 24735, 35823, 26132, 29081, 26512, 35199, 30802, 30717,
+    26224, 22075, 21560, 38177, 29306, 34725, 34726, 34727, 34729, 34730, 34734,
+    34736, 34737, 34738, 34740, 34742, 34743, 34744, 34745, 34747, 34748, 34750,
+    34751, 34753, 34754, 34755, 34756, 34757, 34759, 34760, 34761, 34764, 34765,
+    34766, 34767, 34768, 34772, 34773, 34774, 34775, 34776, 34777, 34778, 34780,
+    34781, 34782, 34783, 34785, 34786, 34787, 34788, 34790, 34791, 34792, 34793,
+    34795, 34796, 34797, 34799, 34800, 34801, 34802, 34803, 34804, 34805, 34806,
+    34807, 34808, 34810, 34811, 34812, 34813, 34815, 34816, 34817, 34818, 34820,
+    34821, 34822, 34823, 34824, 34825, 34827, 34828, 34829, 34830, 34831, 34832,
+    34833, 34834, 34836, 34839, 34840, 34841, 34842, 34844, 34845, 34846, 34847,
+    34848, 34851, 31232, 24687, 24076, 24713, 33181, 22805, 24796, 29060, 28911,
+    28330, 27728, 29312, 27268, 34989, 24109, 20064, 23219, 21916, 38115, 27927,
+    31995, 38553, 25103, 32454, 30606, 34430, 21283, 38686, 36758, 26247, 23777,
+    20384, 29421, 19979, 21414, 22799, 21523, 25472, 38184, 20808, 20185, 40092,
+    32420, 21688, 36132, 34900, 33335, 38386, 28046, 24358, 23244, 26174, 38505,
+    29616, 29486, 21439, 33146, 39301, 32673, 23466, 38519, 38480, 32447, 30456,
+    21410, 38262, 39321, 31665, 35140, 28248, 20065, 32724, 31077, 35814, 24819,
+    21709, 20139, 39033, 24055, 27233, 20687, 21521, 35937, 33831, 30813, 38660,
+    21066, 21742, 22179, 38144, 28040, 23477, 28102, 26195, 34852, 34853, 34854,
+    34855, 34856, 34857, 34858, 34859, 34860, 34861, 34862, 34863, 34864, 34865,
+    34867, 34868, 34869, 34870, 34871, 34872, 34874, 34875, 34877, 34878, 34879,
+    34881, 34882, 34883, 34886, 34887, 34888, 34889, 34890, 34891, 34894, 34895,
+    34896, 34897, 34898, 34899, 34901, 34902, 34904, 34906, 34907, 34908, 34909,
+    34910, 34911, 34912, 34918, 34919, 34922, 34925, 34927, 34929, 34931, 34932,
+    34933, 34934, 34936, 34937, 34938, 34939, 34940, 34944, 34947, 34950, 34951,
+    34953, 34954, 34956, 34958, 34959, 34960, 34961, 34963, 34964, 34965, 34967,
+    34968, 34969, 34970, 34971, 34973, 34974, 34975, 34976, 34977, 34979, 34981,
+    34982, 34983, 34984, 34985, 34986, 23567, 23389, 26657, 32918, 21880, 31505,
+    25928, 26964, 20123, 27463, 34638, 38795, 21327, 25375, 25658, 37034, 26012,
+    32961, 35856, 20889, 26800, 21368, 34809, 25032, 27844, 27899, 35874, 23633,
+    34218, 33455, 38156, 27427, 36763, 26032, 24571, 24515, 20449, 34885, 26143,
+    33125, 29481, 24826, 20852, 21009, 22411, 24418, 37026, 34892, 37266, 24184,
+    26447, 24615, 22995, 20804, 20982, 33016, 21256, 27769, 38596, 29066, 20241,
+    20462, 32670, 26429, 21957, 38152, 31168, 34966, 32483, 22687, 25100, 38656,
+    34394, 22040, 39035, 24464, 35768, 33988, 37207, 21465, 26093, 24207, 30044,
+    24676, 32110, 23167, 32490, 32493, 36713, 21927, 23459, 24748, 26059, 29572,
+    34988, 34990, 34991, 34992, 34994, 34995, 34996, 34997, 34998, 35000, 35001,
+    35002, 35003, 35005, 35006, 35007, 35008, 35011, 35012, 35015, 35016, 35018,
+    35019, 35020, 35021, 35023, 35024, 35025, 35027, 35030, 35031, 35034, 35035,
+    35036, 35037, 35038, 35040, 35041, 35046, 35047, 35049, 35050, 35051, 35052,
+    35053, 35054, 35055, 35058, 35061, 35062, 35063, 35066, 35067, 35069, 35071,
+    35072, 35073, 35075, 35076, 35077, 35078, 35079, 35080, 35081, 35083, 35084,
+    35085, 35086, 35087, 35089, 35092, 35093, 35094, 35095, 35096, 35100, 35101,
+    35102, 35103, 35104, 35106, 35107, 35108, 35110, 35111, 35112, 35113, 35116,
+    35117, 35118, 35119, 35121, 35122, 35123, 35125, 35127, 36873, 30307, 30505,
+    32474, 38772, 34203, 23398, 31348, 38634, 34880, 21195, 29071, 24490, 26092,
+    35810, 23547, 39535, 24033, 27529, 27739, 35757, 35759, 36874, 36805, 21387,
+    25276, 40486, 40493, 21568, 20011, 33469, 29273, 34460, 23830, 34905, 28079,
+    38597, 21713, 20122, 35766, 28937, 21693, 38409, 28895, 28153, 30416, 20005,
+    30740, 34578, 23721, 24310, 35328, 39068, 38414, 28814, 27839, 22852, 25513,
+    30524, 34893, 28436, 33395, 22576, 29141, 21388, 30746, 38593, 21761, 24422,
+    28976, 23476, 35866, 39564, 27523, 22830, 40495, 31207, 26472, 25196, 20335,
+    30113, 32650, 27915, 38451, 27687, 20208, 30162, 20859, 26679, 28478, 36992,
+    33136, 22934, 29814, 35128, 35129, 35130, 35131, 35132, 35133, 35134, 35135,
+    35136, 35138, 35139, 35141, 35142, 35143, 35144, 35145, 35146, 35147, 35148,
+    35149, 35150, 35151, 35152, 35153, 35154, 35155, 35156, 35157, 35158, 35159,
+    35160, 35161, 35162, 35163, 35164, 35165, 35168, 35169, 35170, 35171, 35172,
+    35173, 35175, 35176, 35177, 35178, 35179, 35180, 35181, 35182, 35183, 35184,
+    35185, 35186, 35187, 35188, 35189, 35190, 35191, 35192, 35193, 35194, 35196,
+    35197, 35198, 35200, 35202, 35204, 35205, 35207, 35208, 35209, 35210, 35211,
+    35212, 35213, 35214, 35215, 35216, 35217, 35218, 35219, 35220, 35221, 35222,
+    35223, 35224, 35225, 35226, 35227, 35228, 35229, 35230, 35231, 35232, 35233,
+    25671, 23591, 36965, 31377, 35875, 23002, 21676, 33280, 33647, 35201, 32768,
+    26928, 22094, 32822, 29239, 37326, 20918, 20063, 39029, 25494, 19994, 21494,
+    26355, 33099, 22812, 28082, 19968, 22777, 21307, 25558, 38129, 20381, 20234,
+    34915, 39056, 22839, 36951, 31227, 20202, 33008, 30097, 27778, 23452, 23016,
+    24413, 26885, 34433, 20506, 24050, 20057, 30691, 20197, 33402, 25233, 26131,
+    37009, 23673, 20159, 24441, 33222, 36920, 32900, 30123, 20134, 35028, 24847,
+    27589, 24518, 20041, 30410, 28322, 35811, 35758, 35850, 35793, 24322, 32764,
+    32716, 32462, 33589, 33643, 22240, 27575, 38899, 38452, 23035, 21535, 38134,
+    28139, 23493, 39278, 23609, 24341, 38544, 35234, 35235, 35236, 35237, 35238,
+    35239, 35240, 35241, 35242, 35243, 35244, 35245, 35246, 35247, 35248, 35249,
+    35250, 35251, 35252, 35253, 35254, 35255, 35256, 35257, 35258, 35259, 35260,
+    35261, 35262, 35263, 35264, 35267, 35277, 35283, 35284, 35285, 35287, 35288,
+    35289, 35291, 35293, 35295, 35296, 35297, 35298, 35300, 35303, 35304, 35305,
+    35306, 35308, 35309, 35310, 35312, 35313, 35314, 35316, 35317, 35318, 35319,
+    35320, 35321, 35322, 35323, 35324, 35325, 35326, 35327, 35329, 35330, 35331,
+    35332, 35333, 35334, 35336, 35337, 35338, 35339, 35340, 35341, 35342, 35343,
+    35344, 35345, 35346, 35347, 35348, 35349, 35350, 35351, 35352, 35353, 35354,
+    35355, 35356, 35357, 21360, 33521, 27185, 23156, 40560, 24212, 32552, 33721,
+    33828, 33829, 33639, 34631, 36814, 36194, 30408, 24433, 39062, 30828, 26144,
+    21727, 25317, 20323, 33219, 30152, 24248, 38605, 36362, 34553, 21647, 27891,
+    28044, 27704, 24703, 21191, 29992, 24189, 20248, 24736, 24551, 23588, 30001,
+    37038, 38080, 29369, 27833, 28216, 37193, 26377, 21451, 21491, 20305, 37321,
+    35825, 21448, 24188, 36802, 28132, 20110, 30402, 27014, 34398, 24858, 33286,
+    20313, 20446, 36926, 40060, 24841, 28189, 28180, 38533, 20104, 23089, 38632,
+    19982, 23679, 31161, 23431, 35821, 32701, 29577, 22495, 33419, 37057, 21505,
+    36935, 21947, 23786, 24481, 24840, 27442, 29425, 32946, 35465, 35358, 35359,
+    35360, 35361, 35362, 35363, 35364, 35365, 35366, 35367, 35368, 35369, 35370,
+    35371, 35372, 35373, 35374, 35375, 35376, 35377, 35378, 35379, 35380, 35381,
+    35382, 35383, 35384, 35385, 35386, 35387, 35388, 35389, 35391, 35392, 35393,
+    35394, 35395, 35396, 35397, 35398, 35399, 35401, 35402, 35403, 35404, 35405,
+    35406, 35407, 35408, 35409, 35410, 35411, 35412, 35413, 35414, 35415, 35416,
+    35417, 35418, 35419, 35420, 35421, 35422, 35423, 35424, 35425, 35426, 35427,
+    35428, 35429, 35430, 35431, 35432, 35433, 35434, 35435, 35436, 35437, 35438,
+    35439, 35440, 35441, 35442, 35443, 35444, 35445, 35446, 35447, 35448, 35450,
+    35451, 35452, 35453, 35454, 35455, 35456, 28020, 23507, 35029, 39044, 35947,
+    39533, 40499, 28170, 20900, 20803, 22435, 34945, 21407, 25588, 36757, 22253,
+    21592, 22278, 29503, 28304, 32536, 36828, 33489, 24895, 24616, 38498, 26352,
+    32422, 36234, 36291, 38053, 23731, 31908, 26376, 24742, 38405, 32792, 20113,
+    37095, 21248, 38504, 20801, 36816, 34164, 37213, 26197, 38901, 23381, 21277,
+    30776, 26434, 26685, 21705, 28798, 23472, 36733, 20877, 22312, 21681, 25874,
+    26242, 36190, 36163, 33039, 33900, 36973, 31967, 20991, 34299, 26531, 26089,
+    28577, 34468, 36481, 22122, 36896, 30338, 28790, 29157, 36131, 25321, 21017,
+    27901, 36156, 24590, 22686, 24974, 26366, 36192, 25166, 21939, 28195, 26413,
+    36711, 35457, 35458, 35459, 35460, 35461, 35462, 35463, 35464, 35467, 35468,
+    35469, 35470, 35471, 35472, 35473, 35474, 35476, 35477, 35478, 35479, 35480,
+    35481, 35482, 35483, 35484, 35485, 35486, 35487, 35488, 35489, 35490, 35491,
+    35492, 35493, 35494, 35495, 35496, 35497, 35498, 35499, 35500, 35501, 35502,
+    35503, 35504, 35505, 35506, 35507, 35508, 35509, 35510, 35511, 35512, 35513,
+    35514, 35515, 35516, 35517, 35518, 35519, 35520, 35521, 35522, 35523, 35524,
+    35525, 35526, 35527, 35528, 35529, 35530, 35531, 35532, 35533, 35534, 35535,
+    35536, 35537, 35538, 35539, 35540, 35541, 35542, 35543, 35544, 35545, 35546,
+    35547, 35548, 35549, 35550, 35551, 35552, 35553, 35554, 35555, 38113, 38392,
+    30504, 26629, 27048, 21643, 20045, 28856, 35784, 25688, 25995, 23429, 31364,
+    20538, 23528, 30651, 27617, 35449, 31896, 27838, 30415, 26025, 36759, 23853,
+    23637, 34360, 26632, 21344, 25112, 31449, 28251, 32509, 27167, 31456, 24432,
+    28467, 24352, 25484, 28072, 26454, 19976, 24080, 36134, 20183, 32960, 30260,
+    38556, 25307, 26157, 25214, 27836, 36213, 29031, 32617, 20806, 32903, 21484,
+    36974, 25240, 21746, 34544, 36761, 32773, 38167, 34071, 36825, 27993, 29645,
+    26015, 30495, 29956, 30759, 33275, 36126, 38024, 20390, 26517, 30137, 35786,
+    38663, 25391, 38215, 38453, 33976, 25379, 30529, 24449, 29424, 20105, 24596,
+    25972, 25327, 27491, 25919, 35556, 35557, 35558, 35559, 35560, 35561, 35562,
+    35563, 35564, 35565, 35566, 35567, 35568, 35569, 35570, 35571, 35572, 35573,
+    35574, 35575, 35576, 35577, 35578, 35579, 35580, 35581, 35582, 35583, 35584,
+    35585, 35586, 35587, 35588, 35589, 35590, 35592, 35593, 35594, 35595, 35596,
+    35597, 35598, 35599, 35600, 35601, 35602, 35603, 35604, 35605, 35606, 35607,
+    35608, 35609, 35610, 35611, 35612, 35613, 35614, 35615, 35616, 35617, 35618,
+    35619, 35620, 35621, 35623, 35624, 35625, 35626, 35627, 35628, 35629, 35630,
+    35631, 35632, 35633, 35634, 35635, 35636, 35637, 35638, 35639, 35640, 35641,
+    35642, 35643, 35644, 35645, 35646, 35647, 35648, 35649, 35650, 35651, 35652,
+    35653, 24103, 30151, 37073, 35777, 33437, 26525, 25903, 21553, 34584, 30693,
+    32930, 33026, 27713, 20043, 32455, 32844, 30452, 26893, 27542, 25191, 20540,
+    20356, 22336, 25351, 27490, 36286, 21482, 26088, 32440, 24535, 25370, 25527,
+    33267, 33268, 32622, 24092, 23769, 21046, 26234, 31209, 31258, 36136, 28825,
+    30164, 28382, 27835, 31378, 20013, 30405, 24544, 38047, 34935, 32456, 31181,
+    32959, 37325, 20210, 20247, 33311, 21608, 24030, 27954, 35788, 31909, 36724,
+    32920, 24090, 21650, 30385, 23449, 26172, 39588, 29664, 26666, 34523, 26417,
+    29482, 35832, 35803, 36880, 31481, 28891, 29038, 25284, 30633, 22065, 20027,
+    33879, 26609, 21161, 34496, 36142, 38136, 31569, 35654, 35655, 35656, 35657,
+    35658, 35659, 35660, 35661, 35662, 35663, 35664, 35665, 35666, 35667, 35668,
+    35669, 35670, 35671, 35672, 35673, 35674, 35675, 35676, 35677, 35678, 35679,
+    35680, 35681, 35682, 35683, 35684, 35685, 35687, 35688, 35689, 35690, 35691,
+    35693, 35694, 35695, 35696, 35697, 35698, 35699, 35700, 35701, 35702, 35703,
+    35704, 35705, 35706, 35707, 35708, 35709, 35710, 35711, 35712, 35713, 35714,
+    35715, 35716, 35717, 35718, 35719, 35720, 35721, 35722, 35723, 35724, 35725,
+    35726, 35727, 35728, 35729, 35730, 35731, 35732, 35733, 35734, 35735, 35736,
+    35737, 35738, 35739, 35740, 35741, 35742, 35743, 35756, 35761, 35771, 35783,
+    35792, 35818, 35849, 35870, 20303, 27880, 31069, 39547, 25235, 29226, 25341,
+    19987, 30742, 36716, 25776, 36186, 31686, 26729, 24196, 35013, 22918, 25758,
+    22766, 29366, 26894, 38181, 36861, 36184, 22368, 32512, 35846, 20934, 25417,
+    25305, 21331, 26700, 29730, 33537, 37196, 21828, 30528, 28796, 27978, 20857,
+    21672, 36164, 23039, 28363, 28100, 23388, 32043, 20180, 31869, 28371, 23376,
+    33258, 28173, 23383, 39683, 26837, 36394, 23447, 32508, 24635, 32437, 37049,
+    36208, 22863, 25549, 31199, 36275, 21330, 26063, 31062, 35781, 38459, 32452,
+    38075, 32386, 22068, 37257, 26368, 32618, 23562, 36981, 26152, 24038, 20304,
+    26590, 20570, 20316, 22352, 24231, 59408, 59409, 59410, 59411, 59412, 35896,
+    35897, 35898, 35899, 35900, 35901, 35902, 35903, 35904, 35906, 35907, 35908,
+    35909, 35912, 35914, 35915, 35917, 35918, 35919, 35920, 35921, 35922, 35923,
+    35924, 35926, 35927, 35928, 35929, 35931, 35932, 35933, 35934, 35935, 35936,
+    35939, 35940, 35941, 35942, 35943, 35944, 35945, 35948, 35949, 35950, 35951,
+    35952, 35953, 35954, 35956, 35957, 35958, 35959, 35963, 35964, 35965, 35966,
+    35967, 35968, 35969, 35971, 35972, 35974, 35975, 35976, 35979, 35981, 35982,
+    35983, 35984, 35985, 35986, 35987, 35989, 35990, 35991, 35993, 35994, 35995,
+    35996, 35997, 35998, 35999, 36000, 36001, 36002, 36003, 36004, 36005, 36006,
+    36007, 36008, 36009, 36010, 36011, 36012, 36013, 20109, 19980, 20800, 19984,
+    24319, 21317, 19989, 20120, 19998, 39730, 23404, 22121, 20008, 31162, 20031,
+    21269, 20039, 22829, 29243, 21358, 27664, 22239, 32996, 39319, 27603, 30590,
+    40727, 20022, 20127, 40720, 20060, 20073, 20115, 33416, 23387, 21868, 22031,
+    20164, 21389, 21405, 21411, 21413, 21422, 38757, 36189, 21274, 21493, 21286,
+    21294, 21310, 36188, 21350, 21347, 20994, 21000, 21006, 21037, 21043, 21055,
+    21056, 21068, 21086, 21089, 21084, 33967, 21117, 21122, 21121, 21136, 21139,
+    20866, 32596, 20155, 20163, 20169, 20162, 20200, 20193, 20203, 20190, 20251,
+    20211, 20258, 20324, 20213, 20261, 20263, 20233, 20267, 20318, 20327, 25912,
+    20314, 20317, 36014, 36015, 36016, 36017, 36018, 36019, 36020, 36021, 36022,
+    36023, 36024, 36025, 36026, 36027, 36028, 36029, 36030, 36031, 36032, 36033,
+    36034, 36035, 36036, 36037, 36038, 36039, 36040, 36041, 36042, 36043, 36044,
+    36045, 36046, 36047, 36048, 36049, 36050, 36051, 36052, 36053, 36054, 36055,
+    36056, 36057, 36058, 36059, 36060, 36061, 36062, 36063, 36064, 36065, 36066,
+    36067, 36068, 36069, 36070, 36071, 36072, 36073, 36074, 36075, 36076, 36077,
+    36078, 36079, 36080, 36081, 36082, 36083, 36084, 36085, 36086, 36087, 36088,
+    36089, 36090, 36091, 36092, 36093, 36094, 36095, 36096, 36097, 36098, 36099,
+    36100, 36101, 36102, 36103, 36104, 36105, 36106, 36107, 36108, 36109, 20319,
+    20311, 20274, 20285, 20342, 20340, 20369, 20361, 20355, 20367, 20350, 20347,
+    20394, 20348, 20396, 20372, 20454, 20456, 20458, 20421, 20442, 20451, 20444,
+    20433, 20447, 20472, 20521, 20556, 20467, 20524, 20495, 20526, 20525, 20478,
+    20508, 20492, 20517, 20520, 20606, 20547, 20565, 20552, 20558, 20588, 20603,
+    20645, 20647, 20649, 20666, 20694, 20742, 20717, 20716, 20710, 20718, 20743,
+    20747, 20189, 27709, 20312, 20325, 20430, 40864, 27718, 31860, 20846, 24061,
+    40649, 39320, 20865, 22804, 21241, 21261, 35335, 21264, 20971, 22809, 20821,
+    20128, 20822, 20147, 34926, 34980, 20149, 33044, 35026, 31104, 23348, 34819,
+    32696, 20907, 20913, 20925, 20924, 36110, 36111, 36112, 36113, 36114, 36115,
+    36116, 36117, 36118, 36119, 36120, 36121, 36122, 36123, 36124, 36128, 36177,
+    36178, 36183, 36191, 36197, 36200, 36201, 36202, 36204, 36206, 36207, 36209,
+    36210, 36216, 36217, 36218, 36219, 36220, 36221, 36222, 36223, 36224, 36226,
+    36227, 36230, 36231, 36232, 36233, 36236, 36237, 36238, 36239, 36240, 36242,
+    36243, 36245, 36246, 36247, 36248, 36249, 36250, 36251, 36252, 36253, 36254,
+    36256, 36257, 36258, 36260, 36261, 36262, 36263, 36264, 36265, 36266, 36267,
+    36268, 36269, 36270, 36271, 36272, 36274, 36278, 36279, 36281, 36283, 36285,
+    36288, 36289, 36290, 36293, 36295, 36296, 36297, 36298, 36301, 36304, 36306,
+    36307, 36308, 20935, 20886, 20898, 20901, 35744, 35750, 35751, 35754, 35764,
+    35765, 35767, 35778, 35779, 35787, 35791, 35790, 35794, 35795, 35796, 35798,
+    35800, 35801, 35804, 35807, 35808, 35812, 35816, 35817, 35822, 35824, 35827,
+    35830, 35833, 35836, 35839, 35840, 35842, 35844, 35847, 35852, 35855, 35857,
+    35858, 35860, 35861, 35862, 35865, 35867, 35864, 35869, 35871, 35872, 35873,
+    35877, 35879, 35882, 35883, 35886, 35887, 35890, 35891, 35893, 35894, 21353,
+    21370, 38429, 38434, 38433, 38449, 38442, 38461, 38460, 38466, 38473, 38484,
+    38495, 38503, 38508, 38514, 38516, 38536, 38541, 38551, 38576, 37015, 37019,
+    37021, 37017, 37036, 37025, 37044, 37043, 37046, 37050, 36309, 36312, 36313,
+    36316, 36320, 36321, 36322, 36325, 36326, 36327, 36329, 36333, 36334, 36336,
+    36337, 36338, 36340, 36342, 36348, 36350, 36351, 36352, 36353, 36354, 36355,
+    36356, 36358, 36359, 36360, 36363, 36365, 36366, 36368, 36369, 36370, 36371,
+    36373, 36374, 36375, 36376, 36377, 36378, 36379, 36380, 36384, 36385, 36388,
+    36389, 36390, 36391, 36392, 36395, 36397, 36400, 36402, 36403, 36404, 36406,
+    36407, 36408, 36411, 36412, 36414, 36415, 36419, 36421, 36422, 36428, 36429,
+    36430, 36431, 36432, 36435, 36436, 36437, 36438, 36439, 36440, 36442, 36443,
+    36444, 36445, 36446, 36447, 36448, 36449, 36450, 36451, 36452, 36453, 36455,
+    36456, 36458, 36459, 36462, 36465, 37048, 37040, 37071, 37061, 37054, 37072,
+    37060, 37063, 37075, 37094, 37090, 37084, 37079, 37083, 37099, 37103, 37118,
+    37124, 37154, 37150, 37155, 37169, 37167, 37177, 37187, 37190, 21005, 22850,
+    21154, 21164, 21165, 21182, 21759, 21200, 21206, 21232, 21471, 29166, 30669,
+    24308, 20981, 20988, 39727, 21430, 24321, 30042, 24047, 22348, 22441, 22433,
+    22654, 22716, 22725, 22737, 22313, 22316, 22314, 22323, 22329, 22318, 22319,
+    22364, 22331, 22338, 22377, 22405, 22379, 22406, 22396, 22395, 22376, 22381,
+    22390, 22387, 22445, 22436, 22412, 22450, 22479, 22439, 22452, 22419, 22432,
+    22485, 22488, 22490, 22489, 22482, 22456, 22516, 22511, 22520, 22500, 22493,
+    36467, 36469, 36471, 36472, 36473, 36474, 36475, 36477, 36478, 36480, 36482,
+    36483, 36484, 36486, 36488, 36489, 36490, 36491, 36492, 36493, 36494, 36497,
+    36498, 36499, 36501, 36502, 36503, 36504, 36505, 36506, 36507, 36509, 36511,
+    36512, 36513, 36514, 36515, 36516, 36517, 36518, 36519, 36520, 36521, 36522,
+    36525, 36526, 36528, 36529, 36531, 36532, 36533, 36534, 36535, 36536, 36537,
+    36539, 36540, 36541, 36542, 36543, 36544, 36545, 36546, 36547, 36548, 36549,
+    36550, 36551, 36552, 36553, 36554, 36555, 36556, 36557, 36559, 36560, 36561,
+    36562, 36563, 36564, 36565, 36566, 36567, 36568, 36569, 36570, 36571, 36572,
+    36573, 36574, 36575, 36576, 36577, 36578, 36579, 36580, 22539, 22541, 22525,
+    22509, 22528, 22558, 22553, 22596, 22560, 22629, 22636, 22657, 22665, 22682,
+    22656, 39336, 40729, 25087, 33401, 33405, 33407, 33423, 33418, 33448, 33412,
+    33422, 33425, 33431, 33433, 33451, 33464, 33470, 33456, 33480, 33482, 33507,
+    33432, 33463, 33454, 33483, 33484, 33473, 33449, 33460, 33441, 33450, 33439,
+    33476, 33486, 33444, 33505, 33545, 33527, 33508, 33551, 33543, 33500, 33524,
+    33490, 33496, 33548, 33531, 33491, 33553, 33562, 33542, 33556, 33557, 33504,
+    33493, 33564, 33617, 33627, 33628, 33544, 33682, 33596, 33588, 33585, 33691,
+    33630, 33583, 33615, 33607, 33603, 33631, 33600, 33559, 33632, 33581, 33594,
+    33587, 33638, 33637, 36581, 36582, 36583, 36584, 36585, 36586, 36587, 36588,
+    36589, 36590, 36591, 36592, 36593, 36594, 36595, 36596, 36597, 36598, 36599,
+    36600, 36601, 36602, 36603, 36604, 36605, 36606, 36607, 36608, 36609, 36610,
+    36611, 36612, 36613, 36614, 36615, 36616, 36617, 36618, 36619, 36620, 36621,
+    36622, 36623, 36624, 36625, 36626, 36627, 36628, 36629, 36630, 36631, 36632,
+    36633, 36634, 36635, 36636, 36637, 36638, 36639, 36640, 36641, 36642, 36643,
+    36644, 36645, 36646, 36647, 36648, 36649, 36650, 36651, 36652, 36653, 36654,
+    36655, 36656, 36657, 36658, 36659, 36660, 36661, 36662, 36663, 36664, 36665,
+    36666, 36667, 36668, 36669, 36670, 36671, 36672, 36673, 36674, 36675, 36676,
+    33640, 33563, 33641, 33644, 33642, 33645, 33646, 33712, 33656, 33715, 33716,
+    33696, 33706, 33683, 33692, 33669, 33660, 33718, 33705, 33661, 33720, 33659,
+    33688, 33694, 33704, 33722, 33724, 33729, 33793, 33765, 33752, 22535, 33816,
+    33803, 33757, 33789, 33750, 33820, 33848, 33809, 33798, 33748, 33759, 33807,
+    33795, 33784, 33785, 33770, 33733, 33728, 33830, 33776, 33761, 33884, 33873,
+    33882, 33881, 33907, 33927, 33928, 33914, 33929, 33912, 33852, 33862, 33897,
+    33910, 33932, 33934, 33841, 33901, 33985, 33997, 34000, 34022, 33981, 34003,
+    33994, 33983, 33978, 34016, 33953, 33977, 33972, 33943, 34021, 34019, 34060,
+    29965, 34104, 34032, 34105, 34079, 34106, 36677, 36678, 36679, 36680, 36681,
+    36682, 36683, 36684, 36685, 36686, 36687, 36688, 36689, 36690, 36691, 36692,
+    36693, 36694, 36695, 36696, 36697, 36698, 36699, 36700, 36701, 36702, 36703,
+    36704, 36705, 36706, 36707, 36708, 36709, 36714, 36736, 36748, 36754, 36765,
+    36768, 36769, 36770, 36772, 36773, 36774, 36775, 36778, 36780, 36781, 36782,
+    36783, 36786, 36787, 36788, 36789, 36791, 36792, 36794, 36795, 36796, 36799,
+    36800, 36803, 36806, 36809, 36810, 36811, 36812, 36813, 36815, 36818, 36822,
+    36823, 36826, 36832, 36833, 36835, 36839, 36844, 36847, 36849, 36850, 36852,
+    36853, 36854, 36858, 36859, 36860, 36862, 36863, 36871, 36872, 36876, 36878,
+    36883, 36885, 36888, 34134, 34107, 34047, 34044, 34137, 34120, 34152, 34148,
+    34142, 34170, 30626, 34115, 34162, 34171, 34212, 34216, 34183, 34191, 34169,
+    34222, 34204, 34181, 34233, 34231, 34224, 34259, 34241, 34268, 34303, 34343,
+    34309, 34345, 34326, 34364, 24318, 24328, 22844, 22849, 32823, 22869, 22874,
+    22872, 21263, 23586, 23589, 23596, 23604, 25164, 25194, 25247, 25275, 25290,
+    25306, 25303, 25326, 25378, 25334, 25401, 25419, 25411, 25517, 25590, 25457,
+    25466, 25486, 25524, 25453, 25516, 25482, 25449, 25518, 25532, 25586, 25592,
+    25568, 25599, 25540, 25566, 25550, 25682, 25542, 25534, 25669, 25665, 25611,
+    25627, 25632, 25612, 25638, 25633, 25694, 25732, 25709, 25750, 36889, 36892,
+    36899, 36900, 36901, 36903, 36904, 36905, 36906, 36907, 36908, 36912, 36913,
+    36914, 36915, 36916, 36919, 36921, 36922, 36925, 36927, 36928, 36931, 36933,
+    36934, 36936, 36937, 36938, 36939, 36940, 36942, 36948, 36949, 36950, 36953,
+    36954, 36956, 36957, 36958, 36959, 36960, 36961, 36964, 36966, 36967, 36969,
+    36970, 36971, 36972, 36975, 36976, 36977, 36978, 36979, 36982, 36983, 36984,
+    36985, 36986, 36987, 36988, 36990, 36993, 36996, 36997, 36998, 36999, 37001,
+    37002, 37004, 37005, 37006, 37007, 37008, 37010, 37012, 37014, 37016, 37018,
+    37020, 37022, 37023, 37024, 37028, 37029, 37031, 37032, 37033, 37035, 37037,
+    37042, 37047, 37052, 37053, 37055, 37056, 25722, 25783, 25784, 25753, 25786,
+    25792, 25808, 25815, 25828, 25826, 25865, 25893, 25902, 24331, 24530, 29977,
+    24337, 21343, 21489, 21501, 21481, 21480, 21499, 21522, 21526, 21510, 21579,
+    21586, 21587, 21588, 21590, 21571, 21537, 21591, 21593, 21539, 21554, 21634,
+    21652, 21623, 21617, 21604, 21658, 21659, 21636, 21622, 21606, 21661, 21712,
+    21677, 21698, 21684, 21714, 21671, 21670, 21715, 21716, 21618, 21667, 21717,
+    21691, 21695, 21708, 21721, 21722, 21724, 21673, 21674, 21668, 21725, 21711,
+    21726, 21787, 21735, 21792, 21757, 21780, 21747, 21794, 21795, 21775, 21777,
+    21799, 21802, 21863, 21903, 21941, 21833, 21869, 21825, 21845, 21823, 21840,
+    21820, 37058, 37059, 37062, 37064, 37065, 37067, 37068, 37069, 37074, 37076,
+    37077, 37078, 37080, 37081, 37082, 37086, 37087, 37088, 37091, 37092, 37093,
+    37097, 37098, 37100, 37102, 37104, 37105, 37106, 37107, 37109, 37110, 37111,
+    37113, 37114, 37115, 37116, 37119, 37120, 37121, 37123, 37125, 37126, 37127,
+    37128, 37129, 37130, 37131, 37132, 37133, 37134, 37135, 37136, 37137, 37138,
+    37139, 37140, 37141, 37142, 37143, 37144, 37146, 37147, 37148, 37149, 37151,
+    37152, 37153, 37156, 37157, 37158, 37159, 37160, 37161, 37162, 37163, 37164,
+    37165, 37166, 37168, 37170, 37171, 37172, 37173, 37174, 37175, 37176, 37178,
+    37179, 37180, 37181, 37182, 37183, 37184, 37185, 37186, 37188, 21815, 21846,
+    21877, 21878, 21879, 21811, 21808, 21852, 21899, 21970, 21891, 21937, 21945,
+    21896, 21889, 21919, 21886, 21974, 21905, 21883, 21983, 21949, 21950, 21908,
+    21913, 21994, 22007, 21961, 22047, 21969, 21995, 21996, 21972, 21990, 21981,
+    21956, 21999, 21989, 22002, 22003, 21964, 21965, 21992, 22005, 21988, 36756,
+    22046, 22024, 22028, 22017, 22052, 22051, 22014, 22016, 22055, 22061, 22104,
+    22073, 22103, 22060, 22093, 22114, 22105, 22108, 22092, 22100, 22150, 22116,
+    22129, 22123, 22139, 22140, 22149, 22163, 22191, 22228, 22231, 22237, 22241,
+    22261, 22251, 22265, 22271, 22276, 22282, 22281, 22300, 24079, 24089, 24084,
+    24081, 24113, 24123, 24124, 37189, 37191, 37192, 37201, 37203, 37204, 37205,
+    37206, 37208, 37209, 37211, 37212, 37215, 37216, 37222, 37223, 37224, 37227,
+    37229, 37235, 37242, 37243, 37244, 37248, 37249, 37250, 37251, 37252, 37254,
+    37256, 37258, 37262, 37263, 37267, 37268, 37269, 37270, 37271, 37272, 37273,
+    37276, 37277, 37278, 37279, 37280, 37281, 37284, 37285, 37286, 37287, 37288,
+    37289, 37291, 37292, 37296, 37297, 37298, 37299, 37302, 37303, 37304, 37305,
+    37307, 37308, 37309, 37310, 37311, 37312, 37313, 37314, 37315, 37316, 37317,
+    37318, 37320, 37323, 37328, 37330, 37331, 37332, 37333, 37334, 37335, 37336,
+    37337, 37338, 37339, 37341, 37342, 37343, 37344, 37345, 37346, 37347, 37348,
+    37349, 24119, 24132, 24148, 24155, 24158, 24161, 23692, 23674, 23693, 23696,
+    23702, 23688, 23704, 23705, 23697, 23706, 23708, 23733, 23714, 23741, 23724,
+    23723, 23729, 23715, 23745, 23735, 23748, 23762, 23780, 23755, 23781, 23810,
+    23811, 23847, 23846, 23854, 23844, 23838, 23814, 23835, 23896, 23870, 23860,
+    23869, 23916, 23899, 23919, 23901, 23915, 23883, 23882, 23913, 23924, 23938,
+    23961, 23965, 35955, 23991, 24005, 24435, 24439, 24450, 24455, 24457, 24460,
+    24469, 24473, 24476, 24488, 24493, 24501, 24508, 34914, 24417, 29357, 29360,
+    29364, 29367, 29368, 29379, 29377, 29390, 29389, 29394, 29416, 29423, 29417,
+    29426, 29428, 29431, 29441, 29427, 29443, 29434, 37350, 37351, 37352, 37353,
+    37354, 37355, 37356, 37357, 37358, 37359, 37360, 37361, 37362, 37363, 37364,
+    37365, 37366, 37367, 37368, 37369, 37370, 37371, 37372, 37373, 37374, 37375,
+    37376, 37377, 37378, 37379, 37380, 37381, 37382, 37383, 37384, 37385, 37386,
+    37387, 37388, 37389, 37390, 37391, 37392, 37393, 37394, 37395, 37396, 37397,
+    37398, 37399, 37400, 37401, 37402, 37403, 37404, 37405, 37406, 37407, 37408,
+    37409, 37410, 37411, 37412, 37413, 37414, 37415, 37416, 37417, 37418, 37419,
+    37420, 37421, 37422, 37423, 37424, 37425, 37426, 37427, 37428, 37429, 37430,
+    37431, 37432, 37433, 37434, 37435, 37436, 37437, 37438, 37439, 37440, 37441,
+    37442, 37443, 37444, 37445, 29435, 29463, 29459, 29473, 29450, 29470, 29469,
+    29461, 29474, 29497, 29477, 29484, 29496, 29489, 29520, 29517, 29527, 29536,
+    29548, 29551, 29566, 33307, 22821, 39143, 22820, 22786, 39267, 39271, 39272,
+    39273, 39274, 39275, 39276, 39284, 39287, 39293, 39296, 39300, 39303, 39306,
+    39309, 39312, 39313, 39315, 39316, 39317, 24192, 24209, 24203, 24214, 24229,
+    24224, 24249, 24245, 24254, 24243, 36179, 24274, 24273, 24283, 24296, 24298,
+    33210, 24516, 24521, 24534, 24527, 24579, 24558, 24580, 24545, 24548, 24574,
+    24581, 24582, 24554, 24557, 24568, 24601, 24629, 24614, 24603, 24591, 24589,
+    24617, 24619, 24586, 24639, 24609, 24696, 24697, 24699, 24698, 24642, 37446,
+    37447, 37448, 37449, 37450, 37451, 37452, 37453, 37454, 37455, 37456, 37457,
+    37458, 37459, 37460, 37461, 37462, 37463, 37464, 37465, 37466, 37467, 37468,
+    37469, 37470, 37471, 37472, 37473, 37474, 37475, 37476, 37477, 37478, 37479,
+    37480, 37481, 37482, 37483, 37484, 37485, 37486, 37487, 37488, 37489, 37490,
+    37491, 37493, 37494, 37495, 37496, 37497, 37498, 37499, 37500, 37501, 37502,
+    37503, 37504, 37505, 37506, 37507, 37508, 37509, 37510, 37511, 37512, 37513,
+    37514, 37515, 37516, 37517, 37519, 37520, 37521, 37522, 37523, 37524, 37525,
+    37526, 37527, 37528, 37529, 37530, 37531, 37532, 37533, 37534, 37535, 37536,
+    37537, 37538, 37539, 37540, 37541, 37542, 37543, 24682, 24701, 24726, 24730,
+    24749, 24733, 24707, 24722, 24716, 24731, 24812, 24763, 24753, 24797, 24792,
+    24774, 24794, 24756, 24864, 24870, 24853, 24867, 24820, 24832, 24846, 24875,
+    24906, 24949, 25004, 24980, 24999, 25015, 25044, 25077, 24541, 38579, 38377,
+    38379, 38385, 38387, 38389, 38390, 38396, 38398, 38403, 38404, 38406, 38408,
+    38410, 38411, 38412, 38413, 38415, 38418, 38421, 38422, 38423, 38425, 38426,
+    20012, 29247, 25109, 27701, 27732, 27740, 27722, 27811, 27781, 27792, 27796,
+    27788, 27752, 27753, 27764, 27766, 27782, 27817, 27856, 27860, 27821, 27895,
+    27896, 27889, 27863, 27826, 27872, 27862, 27898, 27883, 27886, 27825, 27859,
+    27887, 27902, 37544, 37545, 37546, 37547, 37548, 37549, 37551, 37552, 37553,
+    37554, 37555, 37556, 37557, 37558, 37559, 37560, 37561, 37562, 37563, 37564,
+    37565, 37566, 37567, 37568, 37569, 37570, 37571, 37572, 37573, 37574, 37575,
+    37577, 37578, 37579, 37580, 37581, 37582, 37583, 37584, 37585, 37586, 37587,
+    37588, 37589, 37590, 37591, 37592, 37593, 37594, 37595, 37596, 37597, 37598,
+    37599, 37600, 37601, 37602, 37603, 37604, 37605, 37606, 37607, 37608, 37609,
+    37610, 37611, 37612, 37613, 37614, 37615, 37616, 37617, 37618, 37619, 37620,
+    37621, 37622, 37623, 37624, 37625, 37626, 37627, 37628, 37629, 37630, 37631,
+    37632, 37633, 37634, 37635, 37636, 37637, 37638, 37639, 37640, 37641, 27961,
+    27943, 27916, 27971, 27976, 27911, 27908, 27929, 27918, 27947, 27981, 27950,
+    27957, 27930, 27983, 27986, 27988, 27955, 28049, 28015, 28062, 28064, 27998,
+    28051, 28052, 27996, 28000, 28028, 28003, 28186, 28103, 28101, 28126, 28174,
+    28095, 28128, 28177, 28134, 28125, 28121, 28182, 28075, 28172, 28078, 28203,
+    28270, 28238, 28267, 28338, 28255, 28294, 28243, 28244, 28210, 28197, 28228,
+    28383, 28337, 28312, 28384, 28461, 28386, 28325, 28327, 28349, 28347, 28343,
+    28375, 28340, 28367, 28303, 28354, 28319, 28514, 28486, 28487, 28452, 28437,
+    28409, 28463, 28470, 28491, 28532, 28458, 28425, 28457, 28553, 28557, 28556,
+    28536, 28530, 28540, 28538, 28625, 37642, 37643, 37644, 37645, 37646, 37647,
+    37648, 37649, 37650, 37651, 37652, 37653, 37654, 37655, 37656, 37657, 37658,
+    37659, 37660, 37661, 37662, 37663, 37664, 37665, 37666, 37667, 37668, 37669,
+    37670, 37671, 37672, 37673, 37674, 37675, 37676, 37677, 37678, 37679, 37680,
+    37681, 37682, 37683, 37684, 37685, 37686, 37687, 37688, 37689, 37690, 37691,
+    37692, 37693, 37695, 37696, 37697, 37698, 37699, 37700, 37701, 37702, 37703,
+    37704, 37705, 37706, 37707, 37708, 37709, 37710, 37711, 37712, 37713, 37714,
+    37715, 37716, 37717, 37718, 37719, 37720, 37721, 37722, 37723, 37724, 37725,
+    37726, 37727, 37728, 37729, 37730, 37731, 37732, 37733, 37734, 37735, 37736,
+    37737, 37739, 28617, 28583, 28601, 28598, 28610, 28641, 28654, 28638, 28640,
+    28655, 28698, 28707, 28699, 28729, 28725, 28751, 28766, 23424, 23428, 23445,
+    23443, 23461, 23480, 29999, 39582, 25652, 23524, 23534, 35120, 23536, 36423,
+    35591, 36790, 36819, 36821, 36837, 36846, 36836, 36841, 36838, 36851, 36840,
+    36869, 36868, 36875, 36902, 36881, 36877, 36886, 36897, 36917, 36918, 36909,
+    36911, 36932, 36945, 36946, 36944, 36968, 36952, 36962, 36955, 26297, 36980,
+    36989, 36994, 37000, 36995, 37003, 24400, 24407, 24406, 24408, 23611, 21675,
+    23632, 23641, 23409, 23651, 23654, 32700, 24362, 24361, 24365, 33396, 24380,
+    39739, 23662, 22913, 22915, 22925, 22953, 22954, 22947, 37740, 37741, 37742,
+    37743, 37744, 37745, 37746, 37747, 37748, 37749, 37750, 37751, 37752, 37753,
+    37754, 37755, 37756, 37757, 37758, 37759, 37760, 37761, 37762, 37763, 37764,
+    37765, 37766, 37767, 37768, 37769, 37770, 37771, 37772, 37773, 37774, 37776,
+    37777, 37778, 37779, 37780, 37781, 37782, 37783, 37784, 37785, 37786, 37787,
+    37788, 37789, 37790, 37791, 37792, 37793, 37794, 37795, 37796, 37797, 37798,
+    37799, 37800, 37801, 37802, 37803, 37804, 37805, 37806, 37807, 37808, 37809,
+    37810, 37811, 37812, 37813, 37814, 37815, 37816, 37817, 37818, 37819, 37820,
+    37821, 37822, 37823, 37824, 37825, 37826, 37827, 37828, 37829, 37830, 37831,
+    37832, 37833, 37835, 37836, 37837, 22935, 22986, 22955, 22942, 22948, 22994,
+    22962, 22959, 22999, 22974, 23045, 23046, 23005, 23048, 23011, 23000, 23033,
+    23052, 23049, 23090, 23092, 23057, 23075, 23059, 23104, 23143, 23114, 23125,
+    23100, 23138, 23157, 33004, 23210, 23195, 23159, 23162, 23230, 23275, 23218,
+    23250, 23252, 23224, 23264, 23267, 23281, 23254, 23270, 23256, 23260, 23305,
+    23319, 23318, 23346, 23351, 23360, 23573, 23580, 23386, 23397, 23411, 23377,
+    23379, 23394, 39541, 39543, 39544, 39546, 39551, 39549, 39552, 39553, 39557,
+    39560, 39562, 39568, 39570, 39571, 39574, 39576, 39579, 39580, 39581, 39583,
+    39584, 39586, 39587, 39589, 39591, 32415, 32417, 32419, 32421, 32424, 32425,
+    37838, 37839, 37840, 37841, 37842, 37843, 37844, 37845, 37847, 37848, 37849,
+    37850, 37851, 37852, 37853, 37854, 37855, 37856, 37857, 37858, 37859, 37860,
+    37861, 37862, 37863, 37864, 37865, 37866, 37867, 37868, 37869, 37870, 37871,
+    37872, 37873, 37874, 37875, 37876, 37877, 37878, 37879, 37880, 37881, 37882,
+    37883, 37884, 37885, 37886, 37887, 37888, 37889, 37890, 37891, 37892, 37893,
+    37894, 37895, 37896, 37897, 37898, 37899, 37900, 37901, 37902, 37903, 37904,
+    37905, 37906, 37907, 37908, 37909, 37910, 37911, 37912, 37913, 37914, 37915,
+    37916, 37917, 37918, 37919, 37920, 37921, 37922, 37923, 37924, 37925, 37926,
+    37927, 37928, 37929, 37930, 37931, 37932, 37933, 37934, 32429, 32432, 32446,
+    32448, 32449, 32450, 32457, 32459, 32460, 32464, 32468, 32471, 32475, 32480,
+    32481, 32488, 32491, 32494, 32495, 32497, 32498, 32525, 32502, 32506, 32507,
+    32510, 32513, 32514, 32515, 32519, 32520, 32523, 32524, 32527, 32529, 32530,
+    32535, 32537, 32540, 32539, 32543, 32545, 32546, 32547, 32548, 32549, 32550,
+    32551, 32554, 32555, 32556, 32557, 32559, 32560, 32561, 32562, 32563, 32565,
+    24186, 30079, 24027, 30014, 37013, 29582, 29585, 29614, 29602, 29599, 29647,
+    29634, 29649, 29623, 29619, 29632, 29641, 29640, 29669, 29657, 39036, 29706,
+    29673, 29671, 29662, 29626, 29682, 29711, 29738, 29787, 29734, 29733, 29736,
+    29744, 29742, 29740, 37935, 37936, 37937, 37938, 37939, 37940, 37941, 37942,
+    37943, 37944, 37945, 37946, 37947, 37948, 37949, 37951, 37952, 37953, 37954,
+    37955, 37956, 37957, 37958, 37959, 37960, 37961, 37962, 37963, 37964, 37965,
+    37966, 37967, 37968, 37969, 37970, 37971, 37972, 37973, 37974, 37975, 37976,
+    37977, 37978, 37979, 37980, 37981, 37982, 37983, 37984, 37985, 37986, 37987,
+    37988, 37989, 37990, 37991, 37992, 37993, 37994, 37996, 37997, 37998, 37999,
+    38000, 38001, 38002, 38003, 38004, 38005, 38006, 38007, 38008, 38009, 38010,
+    38011, 38012, 38013, 38014, 38015, 38016, 38017, 38018, 38019, 38020, 38033,
+    38038, 38040, 38087, 38095, 38099, 38100, 38106, 38118, 38139, 38172, 38176,
+    29723, 29722, 29761, 29788, 29783, 29781, 29785, 29815, 29805, 29822, 29852,
+    29838, 29824, 29825, 29831, 29835, 29854, 29864, 29865, 29840, 29863, 29906,
+    29882, 38890, 38891, 38892, 26444, 26451, 26462, 26440, 26473, 26533, 26503,
+    26474, 26483, 26520, 26535, 26485, 26536, 26526, 26541, 26507, 26487, 26492,
+    26608, 26633, 26584, 26634, 26601, 26544, 26636, 26585, 26549, 26586, 26547,
+    26589, 26624, 26563, 26552, 26594, 26638, 26561, 26621, 26674, 26675, 26720,
+    26721, 26702, 26722, 26692, 26724, 26755, 26653, 26709, 26726, 26689, 26727,
+    26688, 26686, 26698, 26697, 26665, 26805, 26767, 26740, 26743, 26771, 26731,
+    26818, 26990, 26876, 26911, 26912, 26873, 38183, 38195, 38205, 38211, 38216,
+    38219, 38229, 38234, 38240, 38254, 38260, 38261, 38263, 38264, 38265, 38266,
+    38267, 38268, 38269, 38270, 38272, 38273, 38274, 38275, 38276, 38277, 38278,
+    38279, 38280, 38281, 38282, 38283, 38284, 38285, 38286, 38287, 38288, 38289,
+    38290, 38291, 38292, 38293, 38294, 38295, 38296, 38297, 38298, 38299, 38300,
+    38301, 38302, 38303, 38304, 38305, 38306, 38307, 38308, 38309, 38310, 38311,
+    38312, 38313, 38314, 38315, 38316, 38317, 38318, 38319, 38320, 38321, 38322,
+    38323, 38324, 38325, 38326, 38327, 38328, 38329, 38330, 38331, 38332, 38333,
+    38334, 38335, 38336, 38337, 38338, 38339, 38340, 38341, 38342, 38343, 38344,
+    38345, 38346, 38347, 26916, 26864, 26891, 26881, 26967, 26851, 26896, 26993,
+    26937, 26976, 26946, 26973, 27012, 26987, 27008, 27032, 27000, 26932, 27084,
+    27015, 27016, 27086, 27017, 26982, 26979, 27001, 27035, 27047, 27067, 27051,
+    27053, 27092, 27057, 27073, 27082, 27103, 27029, 27104, 27021, 27135, 27183,
+    27117, 27159, 27160, 27237, 27122, 27204, 27198, 27296, 27216, 27227, 27189,
+    27278, 27257, 27197, 27176, 27224, 27260, 27281, 27280, 27305, 27287, 27307,
+    29495, 29522, 27521, 27522, 27527, 27524, 27538, 27539, 27533, 27546, 27547,
+    27553, 27562, 36715, 36717, 36721, 36722, 36723, 36725, 36726, 36728, 36727,
+    36729, 36730, 36732, 36734, 36737, 36738, 36740, 36743, 36747, 38348, 38349,
+    38350, 38351, 38352, 38353, 38354, 38355, 38356, 38357, 38358, 38359, 38360,
+    38361, 38362, 38363, 38364, 38365, 38366, 38367, 38368, 38369, 38370, 38371,
+    38372, 38373, 38374, 38375, 38380, 38399, 38407, 38419, 38424, 38427, 38430,
+    38432, 38435, 38436, 38437, 38438, 38439, 38440, 38441, 38443, 38444, 38445,
+    38447, 38448, 38455, 38456, 38457, 38458, 38462, 38465, 38467, 38474, 38478,
+    38479, 38481, 38482, 38483, 38486, 38487, 38488, 38489, 38490, 38492, 38493,
+    38494, 38496, 38499, 38501, 38502, 38507, 38509, 38510, 38511, 38512, 38513,
+    38515, 38520, 38521, 38522, 38523, 38524, 38525, 38526, 38527, 38528, 38529,
+    38530, 38531, 38532, 38535, 38537, 38538, 36749, 36750, 36751, 36760, 36762,
+    36558, 25099, 25111, 25115, 25119, 25122, 25121, 25125, 25124, 25132, 33255,
+    29935, 29940, 29951, 29967, 29969, 29971, 25908, 26094, 26095, 26096, 26122,
+    26137, 26482, 26115, 26133, 26112, 28805, 26359, 26141, 26164, 26161, 26166,
+    26165, 32774, 26207, 26196, 26177, 26191, 26198, 26209, 26199, 26231, 26244,
+    26252, 26279, 26269, 26302, 26331, 26332, 26342, 26345, 36146, 36147, 36150,
+    36155, 36157, 36160, 36165, 36166, 36168, 36169, 36167, 36173, 36181, 36185,
+    35271, 35274, 35275, 35276, 35278, 35279, 35280, 35281, 29294, 29343, 29277,
+    29286, 29295, 29310, 29311, 29316, 29323, 29325, 29327, 29330, 25352, 25394,
+    25520, 38540, 38542, 38545, 38546, 38547, 38549, 38550, 38554, 38555, 38557,
+    38558, 38559, 38560, 38561, 38562, 38563, 38564, 38565, 38566, 38568, 38569,
+    38570, 38571, 38572, 38573, 38574, 38575, 38577, 38578, 38580, 38581, 38583,
+    38584, 38586, 38587, 38591, 38594, 38595, 38600, 38602, 38603, 38608, 38609,
+    38611, 38612, 38614, 38615, 38616, 38617, 38618, 38619, 38620, 38621, 38622,
+    38623, 38625, 38626, 38627, 38628, 38629, 38630, 38631, 38635, 38636, 38637,
+    38638, 38640, 38641, 38642, 38644, 38645, 38648, 38650, 38651, 38652, 38653,
+    38655, 38658, 38659, 38661, 38666, 38667, 38668, 38672, 38673, 38674, 38676,
+    38677, 38679, 38680, 38681, 38682, 38683, 38685, 38687, 38688, 25663, 25816,
+    32772, 27626, 27635, 27645, 27637, 27641, 27653, 27655, 27654, 27661, 27669,
+    27672, 27673, 27674, 27681, 27689, 27684, 27690, 27698, 25909, 25941, 25963,
+    29261, 29266, 29270, 29232, 34402, 21014, 32927, 32924, 32915, 32956, 26378,
+    32957, 32945, 32939, 32941, 32948, 32951, 32999, 33000, 33001, 33002, 32987,
+    32962, 32964, 32985, 32973, 32983, 26384, 32989, 33003, 33009, 33012, 33005,
+    33037, 33038, 33010, 33020, 26389, 33042, 35930, 33078, 33054, 33068, 33048,
+    33074, 33096, 33100, 33107, 33140, 33113, 33114, 33137, 33120, 33129, 33148,
+    33149, 33133, 33127, 22605, 23221, 33160, 33154, 33169, 28373, 33187, 33194,
+    33228, 26406, 33226, 33211, 38689, 38690, 38691, 38692, 38693, 38694, 38695,
+    38696, 38697, 38699, 38700, 38702, 38703, 38705, 38707, 38708, 38709, 38710,
+    38711, 38714, 38715, 38716, 38717, 38719, 38720, 38721, 38722, 38723, 38724,
+    38725, 38726, 38727, 38728, 38729, 38730, 38731, 38732, 38733, 38734, 38735,
+    38736, 38737, 38740, 38741, 38743, 38744, 38746, 38748, 38749, 38751, 38755,
+    38756, 38758, 38759, 38760, 38762, 38763, 38764, 38765, 38766, 38767, 38768,
+    38769, 38770, 38773, 38775, 38776, 38777, 38778, 38779, 38781, 38782, 38783,
+    38784, 38785, 38786, 38787, 38788, 38790, 38791, 38792, 38793, 38794, 38796,
+    38798, 38799, 38800, 38803, 38805, 38806, 38807, 38809, 38810, 38811, 38812,
+    38813, 33217, 33190, 27428, 27447, 27449, 27459, 27462, 27481, 39121, 39122,
+    39123, 39125, 39129, 39130, 27571, 24384, 27586, 35315, 26000, 40785, 26003,
+    26044, 26054, 26052, 26051, 26060, 26062, 26066, 26070, 28800, 28828, 28822,
+    28829, 28859, 28864, 28855, 28843, 28849, 28904, 28874, 28944, 28947, 28950,
+    28975, 28977, 29043, 29020, 29032, 28997, 29042, 29002, 29048, 29050, 29080,
+    29107, 29109, 29096, 29088, 29152, 29140, 29159, 29177, 29213, 29224, 28780,
+    28952, 29030, 29113, 25150, 25149, 25155, 25160, 25161, 31035, 31040, 31046,
+    31049, 31067, 31068, 31059, 31066, 31074, 31063, 31072, 31087, 31079, 31098,
+    31109, 31114, 31130, 31143, 31155, 24529, 24528, 38814, 38815, 38817, 38818,
+    38820, 38821, 38822, 38823, 38824, 38825, 38826, 38828, 38830, 38832, 38833,
+    38835, 38837, 38838, 38839, 38840, 38841, 38842, 38843, 38844, 38845, 38846,
+    38847, 38848, 38849, 38850, 38851, 38852, 38853, 38854, 38855, 38856, 38857,
+    38858, 38859, 38860, 38861, 38862, 38863, 38864, 38865, 38866, 38867, 38868,
+    38869, 38870, 38871, 38872, 38873, 38874, 38875, 38876, 38877, 38878, 38879,
+    38880, 38881, 38882, 38883, 38884, 38885, 38888, 38894, 38895, 38896, 38897,
+    38898, 38900, 38903, 38904, 38905, 38906, 38907, 38908, 38909, 38910, 38911,
+    38912, 38913, 38914, 38915, 38916, 38917, 38918, 38919, 38920, 38921, 38922,
+    38923, 38924, 38925, 38926, 24636, 24669, 24666, 24679, 24641, 24665, 24675,
+    24747, 24838, 24845, 24925, 25001, 24989, 25035, 25041, 25094, 32896, 32895,
+    27795, 27894, 28156, 30710, 30712, 30720, 30729, 30743, 30744, 30737, 26027,
+    30765, 30748, 30749, 30777, 30778, 30779, 30751, 30780, 30757, 30764, 30755,
+    30761, 30798, 30829, 30806, 30807, 30758, 30800, 30791, 30796, 30826, 30875,
+    30867, 30874, 30855, 30876, 30881, 30883, 30898, 30905, 30885, 30932, 30937,
+    30921, 30956, 30962, 30981, 30964, 30995, 31012, 31006, 31028, 40859, 40697,
+    40699, 40700, 30449, 30468, 30477, 30457, 30471, 30472, 30490, 30498, 30489,
+    30509, 30502, 30517, 30520, 30544, 30545, 30535, 30531, 30554, 30568, 38927,
+    38928, 38929, 38930, 38931, 38932, 38933, 38934, 38935, 38936, 38937, 38938,
+    38939, 38940, 38941, 38942, 38943, 38944, 38945, 38946, 38947, 38948, 38949,
+    38950, 38951, 38952, 38953, 38954, 38955, 38956, 38957, 38958, 38959, 38960,
+    38961, 38962, 38963, 38964, 38965, 38966, 38967, 38968, 38969, 38970, 38971,
+    38972, 38973, 38974, 38975, 38976, 38977, 38978, 38979, 38980, 38981, 38982,
+    38983, 38984, 38985, 38986, 38987, 38988, 38989, 38990, 38991, 38992, 38993,
+    38994, 38995, 38996, 38997, 38998, 38999, 39000, 39001, 39002, 39003, 39004,
+    39005, 39006, 39007, 39008, 39009, 39010, 39011, 39012, 39013, 39014, 39015,
+    39016, 39017, 39018, 39019, 39020, 39021, 39022, 30562, 30565, 30591, 30605,
+    30589, 30592, 30604, 30609, 30623, 30624, 30640, 30645, 30653, 30010, 30016,
+    30030, 30027, 30024, 30043, 30066, 30073, 30083, 32600, 32609, 32607, 35400,
+    32616, 32628, 32625, 32633, 32641, 32638, 30413, 30437, 34866, 38021, 38022,
+    38023, 38027, 38026, 38028, 38029, 38031, 38032, 38036, 38039, 38037, 38042,
+    38043, 38044, 38051, 38052, 38059, 38058, 38061, 38060, 38063, 38064, 38066,
+    38068, 38070, 38071, 38072, 38073, 38074, 38076, 38077, 38079, 38084, 38088,
+    38089, 38090, 38091, 38092, 38093, 38094, 38096, 38097, 38098, 38101, 38102,
+    38103, 38105, 38104, 38107, 38110, 38111, 38112, 38114, 38116, 38117, 38119,
+    38120, 38122, 39023, 39024, 39025, 39026, 39027, 39028, 39051, 39054, 39058,
+    39061, 39065, 39075, 39080, 39081, 39082, 39083, 39084, 39085, 39086, 39087,
+    39088, 39089, 39090, 39091, 39092, 39093, 39094, 39095, 39096, 39097, 39098,
+    39099, 39100, 39101, 39102, 39103, 39104, 39105, 39106, 39107, 39108, 39109,
+    39110, 39111, 39112, 39113, 39114, 39115, 39116, 39117, 39119, 39120, 39124,
+    39126, 39127, 39131, 39132, 39133, 39136, 39137, 39138, 39139, 39140, 39141,
+    39142, 39145, 39146, 39147, 39148, 39149, 39150, 39151, 39152, 39153, 39154,
+    39155, 39156, 39157, 39158, 39159, 39160, 39161, 39162, 39163, 39164, 39165,
+    39166, 39167, 39168, 39169, 39170, 39171, 39172, 39173, 39174, 39175, 38121,
+    38123, 38126, 38127, 38131, 38132, 38133, 38135, 38137, 38140, 38141, 38143,
+    38147, 38146, 38150, 38151, 38153, 38154, 38157, 38158, 38159, 38162, 38163,
+    38164, 38165, 38166, 38168, 38171, 38173, 38174, 38175, 38178, 38186, 38187,
+    38185, 38188, 38193, 38194, 38196, 38198, 38199, 38200, 38204, 38206, 38207,
+    38210, 38197, 38212, 38213, 38214, 38217, 38220, 38222, 38223, 38226, 38227,
+    38228, 38230, 38231, 38232, 38233, 38235, 38238, 38239, 38237, 38241, 38242,
+    38244, 38245, 38246, 38247, 38248, 38249, 38250, 38251, 38252, 38255, 38257,
+    38258, 38259, 38202, 30695, 30700, 38601, 31189, 31213, 31203, 31211, 31238,
+    23879, 31235, 31234, 31262, 31252, 39176, 39177, 39178, 39179, 39180, 39182,
+    39183, 39185, 39186, 39187, 39188, 39189, 39190, 39191, 39192, 39193, 39194,
+    39195, 39196, 39197, 39198, 39199, 39200, 39201, 39202, 39203, 39204, 39205,
+    39206, 39207, 39208, 39209, 39210, 39211, 39212, 39213, 39215, 39216, 39217,
+    39218, 39219, 39220, 39221, 39222, 39223, 39224, 39225, 39226, 39227, 39228,
+    39229, 39230, 39231, 39232, 39233, 39234, 39235, 39236, 39237, 39238, 39239,
+    39240, 39241, 39242, 39243, 39244, 39245, 39246, 39247, 39248, 39249, 39250,
+    39251, 39254, 39255, 39256, 39257, 39258, 39259, 39260, 39261, 39262, 39263,
+    39264, 39265, 39266, 39268, 39270, 39283, 39288, 39289, 39291, 39294, 39298,
+    39299, 39305, 31289, 31287, 31313, 40655, 39333, 31344, 30344, 30350, 30355,
+    30361, 30372, 29918, 29920, 29996, 40480, 40482, 40488, 40489, 40490, 40491,
+    40492, 40498, 40497, 40502, 40504, 40503, 40505, 40506, 40510, 40513, 40514,
+    40516, 40518, 40519, 40520, 40521, 40523, 40524, 40526, 40529, 40533, 40535,
+    40538, 40539, 40540, 40542, 40547, 40550, 40551, 40552, 40553, 40554, 40555,
+    40556, 40561, 40557, 40563, 30098, 30100, 30102, 30112, 30109, 30124, 30115,
+    30131, 30132, 30136, 30148, 30129, 30128, 30147, 30146, 30166, 30157, 30179,
+    30184, 30182, 30180, 30187, 30183, 30211, 30193, 30204, 30207, 30224, 30208,
+    30213, 30220, 30231, 30218, 30245, 30232, 30229, 30233, 39308, 39310, 39322,
+    39323, 39324, 39325, 39326, 39327, 39328, 39329, 39330, 39331, 39332, 39334,
+    39335, 39337, 39338, 39339, 39340, 39341, 39342, 39343, 39344, 39345, 39346,
+    39347, 39348, 39349, 39350, 39351, 39352, 39353, 39354, 39355, 39356, 39357,
+    39358, 39359, 39360, 39361, 39362, 39363, 39364, 39365, 39366, 39367, 39368,
+    39369, 39370, 39371, 39372, 39373, 39374, 39375, 39376, 39377, 39378, 39379,
+    39380, 39381, 39382, 39383, 39384, 39385, 39386, 39387, 39388, 39389, 39390,
+    39391, 39392, 39393, 39394, 39395, 39396, 39397, 39398, 39399, 39400, 39401,
+    39402, 39403, 39404, 39405, 39406, 39407, 39408, 39409, 39410, 39411, 39412,
+    39413, 39414, 39415, 39416, 39417, 30235, 30268, 30242, 30240, 30272, 30253,
+    30256, 30271, 30261, 30275, 30270, 30259, 30285, 30302, 30292, 30300, 30294,
+    30315, 30319, 32714, 31462, 31352, 31353, 31360, 31366, 31368, 31381, 31398,
+    31392, 31404, 31400, 31405, 31411, 34916, 34921, 34930, 34941, 34943, 34946,
+    34978, 35014, 34999, 35004, 35017, 35042, 35022, 35043, 35045, 35057, 35098,
+    35068, 35048, 35070, 35056, 35105, 35097, 35091, 35099, 35082, 35124, 35115,
+    35126, 35137, 35174, 35195, 30091, 32997, 30386, 30388, 30684, 32786, 32788,
+    32790, 32796, 32800, 32802, 32805, 32806, 32807, 32809, 32808, 32817, 32779,
+    32821, 32835, 32838, 32845, 32850, 32873, 32881, 35203, 39032, 39040, 39043,
+    39418, 39419, 39420, 39421, 39422, 39423, 39424, 39425, 39426, 39427, 39428,
+    39429, 39430, 39431, 39432, 39433, 39434, 39435, 39436, 39437, 39438, 39439,
+    39440, 39441, 39442, 39443, 39444, 39445, 39446, 39447, 39448, 39449, 39450,
+    39451, 39452, 39453, 39454, 39455, 39456, 39457, 39458, 39459, 39460, 39461,
+    39462, 39463, 39464, 39465, 39466, 39467, 39468, 39469, 39470, 39471, 39472,
+    39473, 39474, 39475, 39476, 39477, 39478, 39479, 39480, 39481, 39482, 39483,
+    39484, 39485, 39486, 39487, 39488, 39489, 39490, 39491, 39492, 39493, 39494,
+    39495, 39496, 39497, 39498, 39499, 39500, 39501, 39502, 39503, 39504, 39505,
+    39506, 39507, 39508, 39509, 39510, 39511, 39512, 39513, 39049, 39052, 39053,
+    39055, 39060, 39066, 39067, 39070, 39071, 39073, 39074, 39077, 39078, 34381,
+    34388, 34412, 34414, 34431, 34426, 34428, 34427, 34472, 34445, 34443, 34476,
+    34461, 34471, 34467, 34474, 34451, 34473, 34486, 34500, 34485, 34510, 34480,
+    34490, 34481, 34479, 34505, 34511, 34484, 34537, 34545, 34546, 34541, 34547,
+    34512, 34579, 34526, 34548, 34527, 34520, 34513, 34563, 34567, 34552, 34568,
+    34570, 34573, 34569, 34595, 34619, 34590, 34597, 34606, 34586, 34622, 34632,
+    34612, 34609, 34601, 34615, 34623, 34690, 34594, 34685, 34686, 34683, 34656,
+    34672, 34636, 34670, 34699, 34643, 34659, 34684, 34660, 34649, 34661, 34707,
+    34735, 34728, 34770, 39514, 39515, 39516, 39517, 39518, 39519, 39520, 39521,
+    39522, 39523, 39524, 39525, 39526, 39527, 39528, 39529, 39530, 39531, 39538,
+    39555, 39561, 39565, 39566, 39572, 39573, 39577, 39590, 39593, 39594, 39595,
+    39596, 39597, 39598, 39599, 39602, 39603, 39604, 39605, 39609, 39611, 39613,
+    39614, 39615, 39619, 39620, 39622, 39623, 39624, 39625, 39626, 39629, 39630,
+    39631, 39632, 39634, 39636, 39637, 39638, 39639, 39641, 39642, 39643, 39644,
+    39645, 39646, 39648, 39650, 39651, 39652, 39653, 39655, 39656, 39657, 39658,
+    39660, 39662, 39664, 39665, 39666, 39667, 39668, 39669, 39670, 39671, 39672,
+    39674, 39676, 39677, 39678, 39679, 39680, 39681, 39682, 39684, 39685, 39686,
+    34758, 34696, 34693, 34733, 34711, 34691, 34731, 34789, 34732, 34741, 34739,
+    34763, 34771, 34749, 34769, 34752, 34762, 34779, 34794, 34784, 34798, 34838,
+    34835, 34814, 34826, 34843, 34849, 34873, 34876, 32566, 32578, 32580, 32581,
+    33296, 31482, 31485, 31496, 31491, 31492, 31509, 31498, 31531, 31503, 31559,
+    31544, 31530, 31513, 31534, 31537, 31520, 31525, 31524, 31539, 31550, 31518,
+    31576, 31578, 31557, 31605, 31564, 31581, 31584, 31598, 31611, 31586, 31602,
+    31601, 31632, 31654, 31655, 31672, 31660, 31645, 31656, 31621, 31658, 31644,
+    31650, 31659, 31668, 31697, 31681, 31692, 31709, 31706, 31717, 31718, 31722,
+    31756, 31742, 31740, 31759, 31766, 31755, 39687, 39689, 39690, 39691, 39692,
+    39693, 39694, 39696, 39697, 39698, 39700, 39701, 39702, 39703, 39704, 39705,
+    39706, 39707, 39708, 39709, 39710, 39712, 39713, 39714, 39716, 39717, 39718,
+    39719, 39720, 39721, 39722, 39723, 39724, 39725, 39726, 39728, 39729, 39731,
+    39732, 39733, 39734, 39735, 39736, 39737, 39738, 39741, 39742, 39743, 39744,
+    39750, 39754, 39755, 39756, 39758, 39760, 39762, 39763, 39765, 39766, 39767,
+    39768, 39769, 39770, 39771, 39772, 39773, 39774, 39775, 39776, 39777, 39778,
+    39779, 39780, 39781, 39782, 39783, 39784, 39785, 39786, 39787, 39788, 39789,
+    39790, 39791, 39792, 39793, 39794, 39795, 39796, 39797, 39798, 39799, 39800,
+    39801, 39802, 39803, 31775, 31786, 31782, 31800, 31809, 31808, 33278, 33281,
+    33282, 33284, 33260, 34884, 33313, 33314, 33315, 33325, 33327, 33320, 33323,
+    33336, 33339, 33331, 33332, 33342, 33348, 33353, 33355, 33359, 33370, 33375,
+    33384, 34942, 34949, 34952, 35032, 35039, 35166, 32669, 32671, 32679, 32687,
+    32688, 32690, 31868, 25929, 31889, 31901, 31900, 31902, 31906, 31922, 31932,
+    31933, 31937, 31943, 31948, 31949, 31944, 31941, 31959, 31976, 33390, 26280,
+    32703, 32718, 32725, 32741, 32737, 32742, 32745, 32750, 32755, 31992, 32119,
+    32166, 32174, 32327, 32411, 40632, 40628, 36211, 36228, 36244, 36241, 36273,
+    36199, 36205, 35911, 35913, 37194, 37200, 37198, 37199, 37220, 39804, 39805,
+    39806, 39807, 39808, 39809, 39810, 39811, 39812, 39813, 39814, 39815, 39816,
+    39817, 39818, 39819, 39820, 39821, 39822, 39823, 39824, 39825, 39826, 39827,
+    39828, 39829, 39830, 39831, 39832, 39833, 39834, 39835, 39836, 39837, 39838,
+    39839, 39840, 39841, 39842, 39843, 39844, 39845, 39846, 39847, 39848, 39849,
+    39850, 39851, 39852, 39853, 39854, 39855, 39856, 39857, 39858, 39859, 39860,
+    39861, 39862, 39863, 39864, 39865, 39866, 39867, 39868, 39869, 39870, 39871,
+    39872, 39873, 39874, 39875, 39876, 39877, 39878, 39879, 39880, 39881, 39882,
+    39883, 39884, 39885, 39886, 39887, 39888, 39889, 39890, 39891, 39892, 39893,
+    39894, 39895, 39896, 39897, 39898, 39899, 37218, 37217, 37232, 37225, 37231,
+    37245, 37246, 37234, 37236, 37241, 37260, 37253, 37264, 37261, 37265, 37282,
+    37283, 37290, 37293, 37294, 37295, 37301, 37300, 37306, 35925, 40574, 36280,
+    36331, 36357, 36441, 36457, 36277, 36287, 36284, 36282, 36292, 36310, 36311,
+    36314, 36318, 36302, 36303, 36315, 36294, 36332, 36343, 36344, 36323, 36345,
+    36347, 36324, 36361, 36349, 36372, 36381, 36383, 36396, 36398, 36387, 36399,
+    36410, 36416, 36409, 36405, 36413, 36401, 36425, 36417, 36418, 36433, 36434,
+    36426, 36464, 36470, 36476, 36463, 36468, 36485, 36495, 36500, 36496, 36508,
+    36510, 35960, 35970, 35978, 35973, 35992, 35988, 26011, 35286, 35294, 35290,
+    35292, 39900, 39901, 39902, 39903, 39904, 39905, 39906, 39907, 39908, 39909,
+    39910, 39911, 39912, 39913, 39914, 39915, 39916, 39917, 39918, 39919, 39920,
+    39921, 39922, 39923, 39924, 39925, 39926, 39927, 39928, 39929, 39930, 39931,
+    39932, 39933, 39934, 39935, 39936, 39937, 39938, 39939, 39940, 39941, 39942,
+    39943, 39944, 39945, 39946, 39947, 39948, 39949, 39950, 39951, 39952, 39953,
+    39954, 39955, 39956, 39957, 39958, 39959, 39960, 39961, 39962, 39963, 39964,
+    39965, 39966, 39967, 39968, 39969, 39970, 39971, 39972, 39973, 39974, 39975,
+    39976, 39977, 39978, 39979, 39980, 39981, 39982, 39983, 39984, 39985, 39986,
+    39987, 39988, 39989, 39990, 39991, 39992, 39993, 39994, 39995, 35301, 35307,
+    35311, 35390, 35622, 38739, 38633, 38643, 38639, 38662, 38657, 38664, 38671,
+    38670, 38698, 38701, 38704, 38718, 40832, 40835, 40837, 40838, 40839, 40840,
+    40841, 40842, 40844, 40702, 40715, 40717, 38585, 38588, 38589, 38606, 38610,
+    30655, 38624, 37518, 37550, 37576, 37694, 37738, 37834, 37775, 37950, 37995,
+    40063, 40066, 40069, 40070, 40071, 40072, 31267, 40075, 40078, 40080, 40081,
+    40082, 40084, 40085, 40090, 40091, 40094, 40095, 40096, 40097, 40098, 40099,
+    40101, 40102, 40103, 40104, 40105, 40107, 40109, 40110, 40112, 40113, 40114,
+    40115, 40116, 40117, 40118, 40119, 40122, 40123, 40124, 40125, 40132, 40133,
+    40134, 40135, 40138, 40139, 39996, 39997, 39998, 39999, 40000, 40001, 40002,
+    40003, 40004, 40005, 40006, 40007, 40008, 40009, 40010, 40011, 40012, 40013,
+    40014, 40015, 40016, 40017, 40018, 40019, 40020, 40021, 40022, 40023, 40024,
+    40025, 40026, 40027, 40028, 40029, 40030, 40031, 40032, 40033, 40034, 40035,
+    40036, 40037, 40038, 40039, 40040, 40041, 40042, 40043, 40044, 40045, 40046,
+    40047, 40048, 40049, 40050, 40051, 40052, 40053, 40054, 40055, 40056, 40057,
+    40058, 40059, 40061, 40062, 40064, 40067, 40068, 40073, 40074, 40076, 40079,
+    40083, 40086, 40087, 40088, 40089, 40093, 40106, 40108, 40111, 40121, 40126,
+    40127, 40128, 40129, 40130, 40136, 40137, 40145, 40146, 40154, 40155, 40160,
+    40161, 40140, 40141, 40142, 40143, 40144, 40147, 40148, 40149, 40151, 40152,
+    40153, 40156, 40157, 40159, 40162, 38780, 38789, 38801, 38802, 38804, 38831,
+    38827, 38819, 38834, 38836, 39601, 39600, 39607, 40536, 39606, 39610, 39612,
+    39617, 39616, 39621, 39618, 39627, 39628, 39633, 39749, 39747, 39751, 39753,
+    39752, 39757, 39761, 39144, 39181, 39214, 39253, 39252, 39647, 39649, 39654,
+    39663, 39659, 39675, 39661, 39673, 39688, 39695, 39699, 39711, 39715, 40637,
+    40638, 32315, 40578, 40583, 40584, 40587, 40594, 37846, 40605, 40607, 40667,
+    40668, 40669, 40672, 40671, 40674, 40681, 40679, 40677, 40682, 40687, 40738,
+    40748, 40751, 40761, 40759, 40765, 40766, 40772, 40163, 40164, 40165, 40166,
+    40167, 40168, 40169, 40170, 40171, 40172, 40173, 40174, 40175, 40176, 40177,
+    40178, 40179, 40180, 40181, 40182, 40183, 40184, 40185, 40186, 40187, 40188,
+    40189, 40190, 40191, 40192, 40193, 40194, 40195, 40196, 40197, 40198, 40199,
+    40200, 40201, 40202, 40203, 40204, 40205, 40206, 40207, 40208, 40209, 40210,
+    40211, 40212, 40213, 40214, 40215, 40216, 40217, 40218, 40219, 40220, 40221,
+    40222, 40223, 40224, 40225, 40226, 40227, 40228, 40229, 40230, 40231, 40232,
+    40233, 40234, 40235, 40236, 40237, 40238, 40239, 40240, 40241, 40242, 40243,
+    40244, 40245, 40246, 40247, 40248, 40249, 40250, 40251, 40252, 40253, 40254,
+    40255, 40256, 40257, 40258, 57908, 57909, 57910, 57911, 57912, 57913, 57914,
+    57915, 57916, 57917, 57918, 57919, 57920, 57921, 57922, 57923, 57924, 57925,
+    57926, 57927, 57928, 57929, 57930, 57931, 57932, 57933, 57934, 57935, 57936,
+    57937, 57938, 57939, 57940, 57941, 57942, 57943, 57944, 57945, 57946, 57947,
+    57948, 57949, 57950, 57951, 57952, 57953, 57954, 57955, 57956, 57957, 57958,
+    57959, 57960, 57961, 57962, 57963, 57964, 57965, 57966, 57967, 57968, 57969,
+    57970, 57971, 57972, 57973, 57974, 57975, 57976, 57977, 57978, 57979, 57980,
+    57981, 57982, 57983, 57984, 57985, 57986, 57987, 57988, 57989, 57990, 57991,
+    57992, 57993, 57994, 57995, 57996, 57997, 57998, 57999, 58000, 58001, 40259,
+    40260, 40261, 40262, 40263, 40264, 40265, 40266, 40267, 40268, 40269, 40270,
+    40271, 40272, 40273, 40274, 40275, 40276, 40277, 40278, 40279, 40280, 40281,
+    40282, 40283, 40284, 40285, 40286, 40287, 40288, 40289, 40290, 40291, 40292,
+    40293, 40294, 40295, 40296, 40297, 40298, 40299, 40300, 40301, 40302, 40303,
+    40304, 40305, 40306, 40307, 40308, 40309, 40310, 40311, 40312, 40313, 40314,
+    40315, 40316, 40317, 40318, 40319, 40320, 40321, 40322, 40323, 40324, 40325,
+    40326, 40327, 40328, 40329, 40330, 40331, 40332, 40333, 40334, 40335, 40336,
+    40337, 40338, 40339, 40340, 40341, 40342, 40343, 40344, 40345, 40346, 40347,
+    40348, 40349, 40350, 40351, 40352, 40353, 40354, 58002, 58003, 58004, 58005,
+    58006, 58007, 58008, 58009, 58010, 58011, 58012, 58013, 58014, 58015, 58016,
+    58017, 58018, 58019, 58020, 58021, 58022, 58023, 58024, 58025, 58026, 58027,
+    58028, 58029, 58030, 58031, 58032, 58033, 58034, 58035, 58036, 58037, 58038,
+    58039, 58040, 58041, 58042, 58043, 58044, 58045, 58046, 58047, 58048, 58049,
+    58050, 58051, 58052, 58053, 58054, 58055, 58056, 58057, 58058, 58059, 58060,
+    58061, 58062, 58063, 58064, 58065, 58066, 58067, 58068, 58069, 58070, 58071,
+    58072, 58073, 58074, 58075, 58076, 58077, 58078, 58079, 58080, 58081, 58082,
+    58083, 58084, 58085, 58086, 58087, 58088, 58089, 58090, 58091, 58092, 58093,
+    58094, 58095, 40355, 40356, 40357, 40358, 40359, 40360, 40361, 40362, 40363,
+    40364, 40365, 40366, 40367, 40368, 40369, 40370, 40371, 40372, 40373, 40374,
+    40375, 40376, 40377, 40378, 40379, 40380, 40381, 40382, 40383, 40384, 40385,
+    40386, 40387, 40388, 40389, 40390, 40391, 40392, 40393, 40394, 40395, 40396,
+    40397, 40398, 40399, 40400, 40401, 40402, 40403, 40404, 40405, 40406, 40407,
+    40408, 40409, 40410, 40411, 40412, 40413, 40414, 40415, 40416, 40417, 40418,
+    40419, 40420, 40421, 40422, 40423, 40424, 40425, 40426, 40427, 40428, 40429,
+    40430, 40431, 40432, 40433, 40434, 40435, 40436, 40437, 40438, 40439, 40440,
+    40441, 40442, 40443, 40444, 40445, 40446, 40447, 40448, 40449, 40450, 58096,
+    58097, 58098, 58099, 58100, 58101, 58102, 58103, 58104, 58105, 58106, 58107,
+    58108, 58109, 58110, 58111, 58112, 58113, 58114, 58115, 58116, 58117, 58118,
+    58119, 58120, 58121, 58122, 58123, 58124, 58125, 58126, 58127, 58128, 58129,
+    58130, 58131, 58132, 58133, 58134, 58135, 58136, 58137, 58138, 58139, 58140,
+    58141, 58142, 58143, 58144, 58145, 58146, 58147, 58148, 58149, 58150, 58151,
+    58152, 58153, 58154, 58155, 58156, 58157, 58158, 58159, 58160, 58161, 58162,
+    58163, 58164, 58165, 58166, 58167, 58168, 58169, 58170, 58171, 58172, 58173,
+    58174, 58175, 58176, 58177, 58178, 58179, 58180, 58181, 58182, 58183, 58184,
+    58185, 58186, 58187, 58188, 58189, 40451, 40452, 40453, 40454, 40455, 40456,
+    40457, 40458, 40459, 40460, 40461, 40462, 40463, 40464, 40465, 40466, 40467,
+    40468, 40469, 40470, 40471, 40472, 40473, 40474, 40475, 40476, 40477, 40478,
+    40484, 40487, 40494, 40496, 40500, 40507, 40508, 40512, 40525, 40528, 40530,
+    40531, 40532, 40534, 40537, 40541, 40543, 40544, 40545, 40546, 40549, 40558,
+    40559, 40562, 40564, 40565, 40566, 40567, 40568, 40569, 40570, 40571, 40572,
+    40573, 40576, 40577, 40579, 40580, 40581, 40582, 40585, 40586, 40588, 40589,
+    40590, 40591, 40592, 40593, 40596, 40597, 40598, 40599, 40600, 40601, 40602,
+    40603, 40604, 40606, 40608, 40609, 40610, 40611, 40612, 40613, 40615, 40616,
+    40617, 40618, 58190, 58191, 58192, 58193, 58194, 58195, 58196, 58197, 58198,
+    58199, 58200, 58201, 58202, 58203, 58204, 58205, 58206, 58207, 58208, 58209,
+    58210, 58211, 58212, 58213, 58214, 58215, 58216, 58217, 58218, 58219, 58220,
+    58221, 58222, 58223, 58224, 58225, 58226, 58227, 58228, 58229, 58230, 58231,
+    58232, 58233, 58234, 58235, 58236, 58237, 58238, 58239, 58240, 58241, 58242,
+    58243, 58244, 58245, 58246, 58247, 58248, 58249, 58250, 58251, 58252, 58253,
+    58254, 58255, 58256, 58257, 58258, 58259, 58260, 58261, 58262, 58263, 58264,
+    58265, 58266, 58267, 58268, 58269, 58270, 58271, 58272, 58273, 58274, 58275,
+    58276, 58277, 58278, 58279, 58280, 58281, 58282, 58283, 40619, 40620, 40621,
+    40622, 40623, 40624, 40625, 40626, 40627, 40629, 40630, 40631, 40633, 40634,
+    40636, 40639, 40640, 40641, 40642, 40643, 40645, 40646, 40647, 40648, 40650,
+    40651, 40652, 40656, 40658, 40659, 40661, 40662, 40663, 40665, 40666, 40670,
+    40673, 40675, 40676, 40678, 40680, 40683, 40684, 40685, 40686, 40688, 40689,
+    40690, 40691, 40692, 40693, 40694, 40695, 40696, 40698, 40701, 40703, 40704,
+    40705, 40706, 40707, 40708, 40709, 40710, 40711, 40712, 40713, 40714, 40716,
+    40719, 40721, 40722, 40724, 40725, 40726, 40728, 40730, 40731, 40732, 40733,
+    40734, 40735, 40737, 40739, 40740, 40741, 40742, 40743, 40744, 40745, 40746,
+    40747, 40749, 40750, 40752, 40753, 58284, 58285, 58286, 58287, 58288, 58289,
+    58290, 58291, 58292, 58293, 58294, 58295, 58296, 58297, 58298, 58299, 58300,
+    58301, 58302, 58303, 58304, 58305, 58306, 58307, 58308, 58309, 58310, 58311,
+    58312, 58313, 58314, 58315, 58316, 58317, 58318, 58319, 58320, 58321, 58322,
+    58323, 58324, 58325, 58326, 58327, 58328, 58329, 58330, 58331, 58332, 58333,
+    58334, 58335, 58336, 58337, 58338, 58339, 58340, 58341, 58342, 58343, 58344,
+    58345, 58346, 58347, 58348, 58349, 58350, 58351, 58352, 58353, 58354, 58355,
+    58356, 58357, 58358, 58359, 58360, 58361, 58362, 58363, 58364, 58365, 58366,
+    58367, 58368, 58369, 58370, 58371, 58372, 58373, 58374, 58375, 58376, 58377,
+    40754, 40755, 40756, 40757, 40758, 40760, 40762, 40764, 40767, 40768, 40769,
+    40770, 40771, 40773, 40774, 40775, 40776, 40777, 40778, 40779, 40780, 40781,
+    40782, 40783, 40786, 40787, 40788, 40789, 40790, 40791, 40792, 40793, 40794,
+    40795, 40796, 40797, 40798, 40799, 40800, 40801, 40802, 40803, 40804, 40805,
+    40806, 40807, 40808, 40809, 40810, 40811, 40812, 40813, 40814, 40815, 40816,
+    40817, 40818, 40819, 40820, 40821, 40822, 40823, 40824, 40825, 40826, 40827,
+    40828, 40829, 40830, 40833, 40834, 40845, 40846, 40847, 40848, 40849, 40850,
+    40851, 40852, 40853, 40854, 40855, 40856, 40860, 40861, 40862, 40865, 40866,
+    40867, 40868, 40869, 63788, 63865, 63893, 63975, 63985, 58378, 58379, 58380,
+    58381, 58382, 58383, 58384, 58385, 58386, 58387, 58388, 58389, 58390, 58391,
+    58392, 58393, 58394, 58395, 58396, 58397, 58398, 58399, 58400, 58401, 58402,
+    58403, 58404, 58405, 58406, 58407, 58408, 58409, 58410, 58411, 58412, 58413,
+    58414, 58415, 58416, 58417, 58418, 58419, 58420, 58421, 58422, 58423, 58424,
+    58425, 58426, 58427, 58428, 58429, 58430, 58431, 58432, 58433, 58434, 58435,
+    58436, 58437, 58438, 58439, 58440, 58441, 58442, 58443, 58444, 58445, 58446,
+    58447, 58448, 58449, 58450, 58451, 58452, 58453, 58454, 58455, 58456, 58457,
+    58458, 58459, 58460, 58461, 58462, 58463, 58464, 58465, 58466, 58467, 58468,
+    58469, 58470, 58471, 64012, 64013, 64014, 64015, 64017, 64019, 64020, 64024,
+    64031, 64032, 64033, 64035, 64036, 64039, 64040, 64041, 11905, 59414, 59415,
+    59416, 11908, 13427, 13383, 11912, 11915, 59422, 13726, 13850, 13838, 11916,
+    11927, 14702, 14616, 59430, 14799, 14815, 14963, 14800, 59435, 59436, 15182,
+    15470, 15584, 11943, 59441, 59442, 11946, 16470, 16735, 11950, 17207, 11955,
+    11958, 11959, 59451, 17329, 17324, 11963, 17373, 17622, 18017, 17996, 59459,
+    18211, 18217, 18300, 18317, 11978, 18759, 18810, 18813, 18818, 18819, 18821,
+    18822, 18847, 18843, 18871, 18870, 59476, 59477, 19619, 19615, 19616, 19617,
+    19575, 19618, 19731, 19732, 19733, 19734, 19735, 19736, 19737, 19886, 59492,
+    58472, 58473, 58474, 58475, 58476, 58477, 58478, 58479, 58480, 58481, 58482,
+    58483, 58484, 58485, 58486, 58487, 58488, 58489, 58490, 58491, 58492, 58493,
+    58494, 58495, 58496, 58497, 58498, 58499, 58500, 58501, 58502, 58503, 58504,
+    58505, 58506, 58507, 58508, 58509, 58510, 58511, 58512, 58513, 58514, 58515,
+    58516, 58517, 58518, 58519, 58520, 58521, 58522, 58523, 58524, 58525, 58526,
+    58527, 58528, 58529, 58530, 58531, 58532, 58533, 58534, 58535, 58536, 58537,
+    58538, 58539, 58540, 58541, 58542, 58543, 58544, 58545, 58546, 58547, 58548,
+    58549, 58550, 58551, 58552, 58553, 58554, 58555, 58556, 58557, 58558, 58559,
+    58560, 58561, 58562, 58563, 58564, 58565,
diff --git a/fusl/src/locale/hkscs.h b/fusl/src/locale/hkscs.h
index d356517..19265e2 100644
--- a/fusl/src/locale/hkscs.h
+++ b/fusl/src/locale/hkscs.h
@@ -1,390 +1,455 @@
-17392,19506,17923,17830,17784,29287,19831,17843,31921,19682,31941,15253,18230,
-18244,19527,19520,17087,13847,29522,28299,28882,19543,41809,18255,17882,19589,
-31852,19719,19108,18081,27427,29221,23124,6755,15878,16225,26189,22267,0,
-32149,22813,35769,15860,38708,31727,23515,7518,23204,13861,40624,23249,23479,
-23804,26478,34195,39237,29793,29853,14453,7507,13982,24609,16108,22750,15093,
-31484,40855,16737,35085,12778,2698,12894,17162,33924,40854,37935,18736,34323,
-22678,38730,37400,31184,31282,26208,27177,34973,29772,31685,26498,31276,21071,
-36934,13542,29636,23993,29894,40903,22451,18735,21580,16689,13966,22552,31346,
-31589,35727,18094,28296,16769,23961,31662,9404,40904,9409,9417,9420,40905,
-34052,13755,16564,40906,17633,44543,25281,28782,40907,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12736,12737,12738,12739,12740,268,12741,
-209,205,12742,12743,203,8168,12744,202,12745,12746,12747,12748,270,12749,
-12750,256,193,461,192,274,201,282,200,332,211,465,210,56320,7870,56324,7872,
-202,257,225,462,224,593,275,233,283,232,299,237,464,236,333,243,466,242,363,
-250,468,249,470,472,474,476,252,56328,7871,56332,7873,234,609,9178,9179,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41897,4421,0,25866,0,0,20029,28381,
-40270,37343,0,0,30517,25745,20250,20264,20392,20822,20852,20892,20964,21153,
-21160,21307,21326,21457,21464,22242,22768,22788,22791,22834,22836,23398,23454,
-23455,23706,24198,24635,25993,26622,26628,26725,27982,28860,30005,32420,32428,
-32442,32455,32463,32479,32518,32567,33402,33487,33647,35270,35774,35810,36710,
-36711,36718,29713,31996,32205,26950,31433,21031,0,0,0,0,37260,30904,37214,
-32956,0,36107,33014,2535,0,0,32927,40647,19661,40393,40460,19518,40438,28686,
-40458,41267,13761,0,28314,33342,29977,0,18705,39532,39567,40857,31111,33900,
-7626,1488,10982,20004,20097,20096,20103,20159,20203,20279,13388,20413,15944,
-20483,20616,13437,13459,13477,20870,22789,20955,20988,20997,20105,21113,21136,
-21287,13767,21417,13649,21424,13651,21442,21539,13677,13682,13953,21651,21667,
-21684,21689,21712,21743,21784,21795,21800,13720,21823,13733,13759,21975,13765,
-32132,21797,0,3138,3349,20779,21904,11462,14828,833,36422,19896,38117,16467,
-32958,30586,11320,14900,18389,33117,27122,19946,25821,3452,4020,3285,4340,
-25741,36478,3734,3083,3940,11433,33366,17619,0,3398,39501,33001,18420,
-20135,11458,39602,14951,38388,16365,13574,21191,38868,30920,11588,40302,38933,
-0,17369,24741,25780,21731,11596,11210,4215,14843,4207,26330,26390,31136,25834,
-20562,3139,36456,8609,35660,1841,0,18443,425,16378,22643,11661,0,17864,1276,
-24727,3916,3478,21881,16571,17338,0,19124,10854,4253,33194,39157,3484,25465,
-14846,10101,36288,22177,25724,15939,0,42497,3593,10959,11465,0,4296,14786,
-14738,14854,33435,13688,24137,8391,22098,3889,11442,38688,13500,27709,20027,0,
-0,30068,11915,8712,42587,36045,3706,3124,26652,32659,4303,10243,10553,13819,
-20963,3724,3981,3754,16275,3888,3399,4431,3660,0,3755,2985,3400,4288,4413,
-16377,9878,25650,4013,13300,30265,11214,3454,3455,11345,11349,14872,3736,4295,
-3886,42546,27472,36050,36249,36042,38314,21708,33476,21945,0,40643,39974,
-39606,30558,11758,28992,33133,33004,23580,25970,33076,14231,21343,32957,37302,
-3834,3599,3703,3835,13789,19947,13833,3286,22191,10165,4297,3600,3704,4216,
-4424,33287,5205,3705,20048,11684,23124,4125,4126,4341,4342,22428,3601,30356,
-33485,4021,3707,20862,14083,4022,4480,21208,41661,18906,6202,16759,33404,
-22681,21096,13850,22333,31666,23400,18432,19244,40743,18919,39967,39821,23412,
-12605,22011,13810,22153,20008,22786,7105,63608,38737,134,20059,20155,13630,
-23587,24401,24516,14586,25164,25909,27514,27701,27706,28780,29227,20012,29357,
-18665,32594,31035,31993,32595,25194,13505,0,25419,32770,32896,26130,26961,
-21341,34916,35265,30898,35744,36125,38021,38264,38271,38376,
-36367,38886,39029,39118,39134,39267,38928,40060,40479,40644,27503,63751,20023,
-135,38429,25143,38050,0,20539,28158,40051,40870,15817,34959,16718,28791,23797,
-19232,20941,13657,23856,24866,35378,36775,37366,29073,26393,29626,12929,41223,
-15499,6528,19216,30948,29698,20910,34575,16393,27235,41658,16931,34319,2671,
-31274,39239,35562,38741,28749,21284,8318,37876,30425,35299,40871,30685,20131,
-20464,20668,20015,20247,40872,21556,32139,22674,22736,7606,24210,24217,24514,
-10002,25995,13305,26905,27203,15459,27903,0,29184,17669,29580,16091,18963,
-23317,29881,35715,23716,22165,31379,31724,31939,32364,33528,34199,40873,34960,
-40874,36537,40875,36815,34143,39392,37409,40876,36281,5183,16497,17058,23066,
-0,0,0,39016,26475,17014,22333,0,34262,18811,33471,28941,19585,28020,23931,
-27413,28606,40877,40878,23446,40879,26343,32347,28247,31178,15752,17603,12886,
-10134,17306,17718,0,23765,15130,35577,23672,15634,13649,23928,40882,29015,
-17752,16620,7715,19575,14712,13386,420,27713,35532,20404,569,22975,33132,
-38998,39162,24379,2975,0,8641,35181,16642,18107,36985,16135,40883,41397,16632,
-14294,18167,27718,16764,34482,29695,17773,14548,21658,17761,17691,19849,19579,
-19830,17898,16328,19215,13921,17630,17597,16877,23870,23880,23894,15868,14351,
-23972,23993,14368,14392,24130,24253,24357,24451,14600,14612,14655,14669,24791,
-24893,23781,14729,25015,25017,25039,14776,25132,25232,25317,25368,14840,22193,
-14851,25570,25595,25607,25690,14923,25792,23829,22049,40863,14999,25990,15037,
-26111,26195,15090,26258,15138,
-26390,15170,26532,26624,15192,26698,26756,15218,15217,15227,26889,26947,29276,
-26980,27039,27013,15292,27094,15325,27237,27252,27249,27266,15340,27289,15346,
-27307,27317,27348,27382,27521,27585,27626,27765,27818,15563,27906,27910,27942,
-28033,15599,28068,28081,28181,28184,28201,28294,35264,28347,28386,28378,40831,
-28392,28393,28452,28468,15686,16193,28545,28606,15722,15733,29111,23705,15754,
-28716,15761,28752,28756,28783,28799,28809,805,17345,13809,3800,16087,22462,
-28371,28990,22496,13902,27042,35817,23412,31305,22753,38105,31333,31357,22956,
-31419,31408,31426,31427,29137,25741,16842,31450,31453,31466,16879,21682,23553,
-31499,31573,31529,21262,23806,31650,31599,33692,23476,27775,31696,33825,31634,
-0,23840,15789,23653,33938,31738,0,31797,23745,31812,31875,18562,31910,26237,
-17784,31945,31943,31974,31860,31987,31989,0,32359,17693,28228,32093,28374,
-29837,32137,32171,28981,32179,0,16471,24617,32228,15635,32245,6137,32229,
-33645,0,24865,24922,32366,32402,17195,37996,32295,32576,32577,32583,31030,
-25296,39393,32663,25425,32675,5729,104,17756,14182,17667,33594,32762,25737,0,
-32776,32797,0,32815,41095,27843,32827,32828,32865,10004,18825,26150,15843,
-26344,26405,32935,35400,33031,33050,22704,9974,27775,25752,20408,25831,5258,
-33304,6238,27219,19045,19093,17530,33321,2829,27218,15742,20473,5373,34018,
-33634,27402,18855,13616,6003,15864,33450,26907,63892,16859,34123,33488,33562,
-3606,6068,14017,12669,13658,33403,33506,33560,16011,28067,27397,27543,13774,
-15807,33565,21996,33669,17675,28069,33708,
-0,33747,13438,28372,27223,34138,13462,28226,12015,33880,23524,33905,15827,
-17636,27303,33866,15541,31064,0,27542,28279,28227,34014,0,33681,17568,33939,
-34020,23697,16960,23744,17731,34100,23282,28313,17703,34163,17686,26559,34326,
-34341,34363,34241,28808,34306,5506,28877,63922,17770,34344,13896,6306,21495,
-29594,34430,34673,41208,34798,11303,34737,34778,34831,22113,34412,26710,17935,
-34885,34886,30176,15801,30180,34910,34972,18011,34996,34997,25537,35013,30583,
-30479,35207,35210,0,0,35239,35260,35365,35303,31012,31421,35484,30611,37374,
-35472,31321,31465,31546,16271,18195,31544,29052,35596,35615,21552,21861,35647,
-35660,35661,35497,19066,35728,35739,35503,5855,17941,34895,35995,32084,32143,
-63956,14117,32083,36054,32152,32189,36114,36099,6416,36059,28764,36113,19657,
-16080,0,36265,32770,4116,18826,15228,33212,28940,31463,36525,36534,36547,
-37588,36633,36653,33637,33810,36773,37635,41631,2640,36787,18730,35294,34109,
-15803,24312,12898,36857,40980,34492,34049,8997,14720,28375,36919,34108,31422,
-36961,34156,34315,37032,34579,37060,34534,37038,0,37223,15088,37289,37316,
-31916,35123,7817,37390,27807,37441,37474,21945,0,35526,15515,35596,21979,3377,
-37676,37739,35553,35819,28815,23235,35554,35557,18789,37444,35820,35897,35839,
-37747,37979,36540,38277,38310,37926,38304,28662,17081,9850,34520,4732,15918,
-18911,27676,38523,38550,16748,38563,28373,25050,38582,30965,35552,38589,21452,
-18849,27832,628,25616,37039,37093,19153,6421,13066,38705,34370,38710,18959,
-17725,17797,19177,28789,23361,38683,
-0,37333,38743,23370,37355,38751,37925,20688,12471,12476,38793,38815,38833,
-38846,38848,38866,38880,21612,38894,29724,37939,0,38901,37917,31098,19153,
-38964,38963,38987,39014,15118,29045,15697,1584,16732,22278,39114,39095,39112,
-39111,19199,27943,5843,21936,39137,39142,39148,37752,39225,18985,19314,38999,
-39173,39413,39436,39483,39440,39512,22309,14020,37041,39893,39648,39650,39685,
-39668,19470,39700,39725,34304,20532,39732,27048,14531,12413,39760,39744,40254,
-23109,6243,39822,16971,39938,39935,39948,40552,40404,40887,41362,41387,41185,
-41251,41439,40318,40323,41268,40462,26760,40388,8539,41363,41504,6459,41523,
-40249,41145,41652,40592,40597,40606,40610,19764,40618,40623,17252,40641,15200,
-14821,15645,20274,14270,35883,40706,40712,19350,37924,28066,40727,0,40761,
-22175,22154,40773,39352,37003,38898,33919,40802,40809,31452,40846,29206,19390,
-18805,18875,29047,18936,17224,19025,29598,35802,6394,31135,35198,36406,37737,
-37875,35396,37612,37761,37835,35180,17593,29207,16107,30578,31299,28880,17523,
-17400,29054,6127,28835,6334,13721,16071,6277,21551,6136,14114,5883,6201,14049,
-6004,6353,24395,14115,5824,22363,18981,5118,4776,5062,5302,34051,13990,0,
-33877,18836,29029,15921,21852,16123,28754,17652,14062,39325,28454,26617,14131,
-15381,15847,22636,6434,26640,16471,14143,16609,16523,16655,27681,21707,22174,
-26289,22162,4063,2984,3597,37830,35603,37788,20216,20779,14361,17462,20156,
-1125,895,20299,20362,22097,23144,427,971,14745,778,1044,13365,20265,704,36531,
-629,35546,524,20120,20685,
-20749,20386,20227,18958,16010,20290,20526,20588,20609,20428,20453,20568,20732,
-0,0,0,0,28278,13717,15929,16063,28018,6276,16009,20904,20931,1504,17629,1187,
-1170,1169,36218,35484,1806,21081,21156,2163,21217,0,18042,29068,17292,3104,
-18860,4324,27089,3613,0,16094,29849,29716,29782,29592,19342,19132,16525,21456,
-13700,29199,16585,21940,837,21709,3014,22301,37469,38644,37734,22493,22413,
-22399,13886,22731,23193,35398,5882,5999,5904,23084,22968,37519,23166,23247,
-23058,22854,6643,6241,17045,14069,27909,29763,23073,24195,23169,35799,1043,
-37856,29836,4867,28933,18802,37896,35323,37821,14240,23582,23710,24158,24136,
-6550,6524,15086,24269,23375,6403,6404,14081,6304,14045,5886,14035,33066,35399,
-7610,13426,35240,24332,24334,6439,6059,23147,5947,23364,34324,30205,34912,
-24702,10336,9771,24539,16056,9647,9662,37000,28531,25024,62,70,9755,24985,
-24984,24693,11419,11527,18132,37197,25713,18021,11114,14889,11042,13392,39146,
-11896,25399,42075,25782,25393,25553,18915,11623,25252,11425,25659,25963,26994,
-15348,12430,12973,18825,12971,21773,13024,6361,37951,26318,12937,12723,15072,
-16784,21892,35618,21903,5884,21851,21541,30958,12547,6186,12852,13412,12815,
-12674,17097,26254,27940,26219,19347,26160,30832,7659,26211,13010,13025,26142,
-22642,14545,14394,14268,15257,14242,13310,29904,15254,26511,17962,26806,26654,
-15300,27326,14435,14293,17543,27187,27218,27337,27397,6418,25873,26776,27212,
-15319,27258,27479,16320,15514,37792,37618,35818,35531,37513,32798,35292,37991,
-28069,28427,
-18924,0,16255,15759,28164,16444,23101,28170,22599,27940,30786,28987,17178,
-17014,28913,29264,29319,29332,18319,18213,20857,19108,1515,29818,16120,13919,
-19018,18711,24545,16134,16049,19167,35875,16181,24743,16115,29900,29756,37767,
-29751,17567,28138,17745,30083,16227,19673,19718,16216,30037,30323,42438,15129,
-29800,35532,18859,18830,15099,15821,19022,16127,18885,18675,37370,22322,37698,
-35555,6244,20703,21025,20967,30584,12850,30478,30479,30587,18071,14209,14942,
-18672,29752,29851,16063,19130,19143,16584,19094,25006,37639,21889,30750,30861,
-30856,30930,29648,31065,30529,22243,16654,0,33942,31141,27181,16122,31290,
-31220,16750,5862,16690,37429,31217,3404,18828,665,15802,5998,13719,21867,
-13680,13994,468,3085,31458,23129,9973,23215,23196,23053,603,30960,23082,23494,
-31486,16889,31837,31853,16913,23475,24252,24230,31949,18937,6064,31886,31868,
-31918,27314,32220,32263,32211,32590,25185,24924,31560,32151,24194,17002,27509,
-2326,26582,78,13775,22468,25618,25592,18786,32733,31527,2092,23273,23875,
-31500,24078,39398,34373,39523,27164,13375,14818,18935,26029,39455,26016,33920,
-28967,27857,17642,33079,17410,32966,33033,33090,26548,39107,27202,33378,33381,
-27217,33875,28071,34320,29211,23174,16767,6208,23339,6305,23268,6360,34464,
-63932,15759,34861,29730,23042,34926,20293,34951,35007,35046,35173,35149,22147,
-35156,30597,30596,35829,35801,35740,35321,16045,33955,18165,18127,14322,35389,
-35356,37960,24397,37419,17028,26068,28969,28868,6213,40301,35999,36073,32220,
-22938,30659,23024,17262,14036,36394,36519,19465,
-36656,36682,17140,27736,28603,8993,18587,28537,28299,6106,39913,14005,18735,
-37051,0,21873,18694,37307,37892,35403,16482,35580,37927,35869,35899,34021,
-35371,38297,38311,38295,38294,36148,29765,16066,18687,19010,17386,16103,12837,
-38543,36583,36454,36453,16076,18925,19064,16366,29714,29803,16124,38721,37040,
-26695,18973,37011,22495,0,37736,35209,35878,35631,25534,37562,23313,35689,
-18748,29689,16923,38811,38769,39224,3878,24001,35781,19122,38943,38106,37622,
-38359,37349,17600,35664,19047,35684,39132,35397,16128,37418,18725,33812,39227,
-39245,31494,15869,39323,19311,39338,39516,35685,22728,27279,39457,23294,39471,
-39153,19344,39240,39356,19389,19351,37757,22642,4866,22562,18872,5352,30788,
-10015,15800,26821,15741,37976,14631,24912,10113,10603,24839,40015,40019,40059,
-39989,39952,39807,39887,40493,39839,41461,41214,40225,19630,16644,40472,19632,
-40204,41396,41197,41203,39215,40357,33981,28178,28639,27522,34300,17715,28068,
-28292,28144,33824,34286,28160,14295,24676,31202,13724,13888,18733,18910,15714,
-37851,37566,37704,703,30905,37495,37965,20452,13376,36964,21853,30781,30804,
-30902,30795,5975,12745,18753,13978,20338,28634,28633,0,28702,21524,16821,
-22459,22771,22410,40214,22487,28980,13487,16812,29163,27712,20375,0,6069,
-35401,24844,23246,23051,17084,17544,14124,19323,35324,37819,37816,6358,3869,
-33906,27840,5139,17146,11302,17345,22932,15799,26433,32168,24923,24740,18873,
-18827,35322,37605,29666,16105,29876,35683,6303,16097,19123,27352,29683,29691,
-16086,19006,19092,6105,19046,935,5156,18917,29768,
-18710,28837,18806,37508,29670,37727,1278,37681,35534,35350,37766,35815,21973,
-18741,35458,29035,18755,3327,22180,1562,3051,3256,21762,31172,6138,32254,5826,
-19024,6226,17710,37889,14090,35520,18861,22960,6335,6275,29828,23201,14050,
-15707,14000,37471,23161,35457,6242,37748,15565,2740,19094,14730,20724,15721,
-15692,5020,29045,17147,33304,28175,37092,17643,27991,32335,28775,27823,15574,
-16365,15917,28162,28428,15727,1013,30033,14012,13512,18048,16090,18545,22980,
-37486,18750,36673,35868,27584,22546,22472,14038,5202,28926,17250,19057,12259,
-4784,9149,26809,26983,5016,13541,31732,14047,35459,14294,13306,19615,27162,
-13997,27831,33854,17631,17614,27942,27985,27778,28638,28439,28937,33597,5946,
-33773,27776,28755,6107,22921,23170,6067,23137,23153,6405,16892,14125,23023,
-5948,14023,29070,37776,26266,17061,23150,23083,17043,27179,16121,30518,17499,
-17098,28957,16985,35297,20400,27944,23746,17614,32333,17341,27148,16982,4868,
-28838,28979,17385,15781,27871,63525,19023,32357,23019,23855,15859,24412,19037,
-6111,32164,33830,21637,15098,13056,532,22398,2261,1561,16357,8094,41654,28675,
-37211,23920,29583,31955,35417,37920,20424,32743,29389,29456,31476,29496,29497,
-22262,29505,29512,16041,31512,36972,29173,18674,29665,33270,16074,30476,16081,
-27810,22269,29721,29726,29727,16098,16112,16116,16122,29907,16142,16211,30018,
-30061,30066,30093,16252,30152,30172,16320,30285,16343,30324,16348,30330,20316,
-29064,22051,35200,22633,16413,30531,16441,26465,16453,13787,30616,16490,16495,
-23646,30654,30667,22770,30744,28857,30748,
-16552,30777,30791,30801,30822,33864,21813,31027,26627,31026,16643,16649,31121,
-31129,36795,31238,36796,16743,31377,16818,31420,33401,16836,31439,31451,16847,
-20001,31586,31596,31611,31762,31771,16992,17018,31867,31900,17036,31928,17044,
-31981,36755,28864,3279,32207,32212,32208,32253,32686,32692,29343,17303,32800,
-32805,31545,32814,32817,32852,15820,22452,28832,32951,33001,17389,33036,29482,
-33038,33042,30048,33044,17409,15161,33110,33113,33114,17427,22586,33148,33156,
-17445,33171,17453,33189,22511,33217,33252,33364,17551,33446,33398,33482,33496,
-33535,17584,33623,38505,27018,33797,28917,33892,24803,33928,17668,33982,34017,
-34040,34064,34104,34130,17723,34159,34160,34272,17783,34418,34450,34482,34543,
-38469,34699,17926,17943,34990,35071,35108,35143,35217,31079,35369,35384,35476,
-35508,35921,36052,36082,36124,18328,22623,36291,18413,20206,36410,21976,22356,
-36465,22005,36528,18487,36558,36578,36580,36589,36594,36791,36801,36810,36812,
-36915,39364,18605,39136,37395,18718,37416,37464,37483,37553,37550,37567,37603,
-37611,37619,37620,37629,37699,37764,37805,18757,18769,40639,37911,21249,37917,
-37933,37950,18794,37972,38009,38189,38306,18855,38388,38451,18917,26528,18980,
-38720,18997,38834,38850,22100,19172,24808,39097,19225,39153,22596,39182,39193,
-20916,39196,39223,39234,39261,39266,19312,39365,19357,39484,39695,31363,39785,
-39809,39901,39921,39924,19565,39968,14191,7106,40265,39994,40702,22096,40339,
-40381,40384,40444,38134,36790,40571,40620,40625,40637,40646,38108,40674,40689,
-40696,31432,40772,148,695,928,26906,38083,22956,
-1239,22592,38081,14265,1493,1557,1654,5818,22359,29043,2754,2765,3007,21610,
-63547,3019,21662,3067,3131,3155,3173,3196,24807,3213,22138,3253,3293,3309,
-3439,3506,3528,26965,39983,34725,3588,3598,3799,3984,3885,3699,23584,4028,
-24075,4188,4175,4214,26398,4219,4232,4246,13895,4287,4307,4399,4411,21348,
-33965,4835,4981,4918,35713,5495,5657,6083,6087,20088,28859,6189,6506,6701,
-6725,7210,7280,7340,7880,25283,7893,7957,29080,26709,8261,27113,14024,8828,
-9175,9210,10026,10353,10575,33533,10599,10643,10965,35237,10984,36768,11022,
-38840,11071,38983,39613,11340,0,11400,11447,23528,11528,11538,11703,11669,
-11842,12148,12236,12339,12390,13087,13278,24497,26184,26303,31353,13671,13811,
-0,18874,0,13850,14102,0,838,22709,26382,26904,15015,30295,24546,15889,16057,
-30206,8346,18640,19128,16665,35482,17134,17165,16443,17204,17302,19013,1482,
-20946,1553,22943,7848,15294,15615,17412,17622,22408,18036,14747,18223,34280,
-39369,14178,8643,35678,35662,0,18450,18683,18965,29193,19136,3192,22885,20133,
-20358,1913,36570,20524,21135,22335,29041,21145,21529,16202,19111,21948,21574,
-21614,27474,0,13427,21823,30258,21854,18200,21858,21862,22471,18751,22621,
-20582,13563,13260,0,22787,18300,35144,23214,23433,23558,7568,22433,29009,0,
-24834,31762,36950,25010,20378,35682,25602,25674,23899,27639,0,25732,6428,
-35562,18934,25736,16367,25874,19392,26047,26293,10011,37989,22497,24981,23079,
-63693,0,22201,17697,26364,20074,18740,38486,28047,27837,13848,35191,
-26521,26734,25617,26718,0,26823,31554,37056,2577,26918,0,26937,31301,0,27130,
-39462,27181,13919,25705,33,31107,27188,27483,23852,13593,0,27549,18128,27812,
-30011,34917,28078,22710,14108,9613,28747,29133,15444,29312,29317,37505,8570,
-29323,37680,29414,18896,27705,38047,29776,3832,34855,35061,10534,33907,6065,
-28344,18986,6176,14756,14009,0,0,17727,26294,40109,39076,35139,30668,30808,
-22230,16607,5642,14753,14127,33000,5061,29101,33638,31197,37288,0,19639,28847,
-35243,31229,31242,31499,32102,16762,31555,31102,32777,28597,41695,27139,33560,
-21410,28167,37823,26678,38749,33135,32803,27061,5101,12847,32840,23941,35888,
-32899,22293,38947,35145,23979,18824,26046,27093,21458,19109,16257,15377,26422,
-32912,33012,33070,8097,33103,33161,33199,33306,33542,33583,33674,13770,33896,
-34474,18682,25574,35158,30728,37461,35256,17394,35303,17375,35304,35654,35796,
-23032,35849,0,36805,37100,0,37136,37180,15863,37214,19146,36816,29327,22155,
-38119,38377,38320,38328,38706,39121,39241,39274,39363,39464,39694,40282,40347,
-32415,40696,40739,19620,38215,41619,29090,41727,19857,36882,42443,19868,3228,
-36798,21953,36794,9392,36793,19091,17673,32383,28502,27313,20202,13540,35628,
-30877,14138,36480,6133,32804,35692,35737,31294,26287,15851,30293,15543,22069,
-22870,20122,24193,25176,22207,3693,36366,23405,16008,19614,25566,0,6134,6267,
-25904,22061,23626,21530,21265,15814,40344,19581,22050,22046,32585,24280,22901,
-15680,34672,19996,4074,3401,14010,33047,40286,36120,30267,40005,30286,30649,
-37701,21554,
-33096,33527,22053,33074,33816,32957,21994,31074,22083,21526,3741,13774,22021,
-22001,26353,33506,13869,30004,22000,21946,21655,21874,3137,3222,24272,20808,
-3702,11362,3746,40619,32090,21982,4213,25245,38765,21652,36045,29174,37238,
-25596,25529,25598,21865,11075,40050,11955,20890,13535,3495,20903,21581,21790,
-21779,30310,36397,26762,30129,32950,34820,34694,35015,33206,33820,4289,17644,
-29444,18182,23440,33547,26771,22139,9972,32047,16803,32115,28368,29366,37232,
-4569,37384,15612,42665,3756,3833,29286,7330,18254,20418,32761,4075,16634,
-40029,25887,11680,18675,18400,40316,4076,3594,0,30115,4077,0,24648,4487,29091,
-32398,40272,19994,19972,13687,23309,27826,21351,13996,14812,21373,13989,17944,
-22682,19310,33325,21579,22442,23189,2425,0,14930,9317,29556,40620,19721,39917,
-15614,40752,19547,20393,38302,40926,33884,15798,29362,26547,14112,25390,32037,
-16119,15916,14890,36872,21196,15988,13946,17897,1166,30272,23280,3766,30842,
-32558,22695,16575,22140,39819,23924,30292,42036,40581,19681,0,14331,24857,
-12506,17394,0,22109,4777,22439,18787,40454,21044,28846,13741,0,40316,31830,
-39737,22494,5996,23635,25811,38096,25397,29028,34477,3368,27938,19170,3441,0,
-20990,7951,23950,38659,7633,40577,36940,31519,39682,23761,31651,25192,25397,
-39679,31695,39722,31870,0,31810,31878,39957,31740,39689,0,39963,18750,40794,
-21875,23491,20477,40600,20466,21088,15878,21201,22375,20566,22967,24082,38856,
-40363,36700,21609,38836,39232,38842,21292,24880,26924,21466,39946,40194,19515,
-38465,27008,20646,
-30022,5997,39386,21107,0,37209,38529,37212,0,37201,36503,25471,27939,27338,
-22033,37262,30074,25221,1020,29519,31856,23585,15613,0,18713,30422,39837,
-20010,3284,33726,34882,0,23626,27072,0,22394,21023,24053,20174,27697,498,
-20281,21660,21722,21146,36226,13822,0,13811,0,27474,37244,40869,39831,38958,
-39092,39610,40616,40580,29050,31508,0,27642,34840,32632,0,22048,42570,36471,
-40787,0,36308,36431,40476,36353,25218,33661,36392,36469,31443,19063,31294,
-30936,27882,35431,30215,35418,40742,27854,34774,30147,41650,30803,63552,36108,
-29410,29553,35629,29442,29937,36075,19131,34351,24506,34976,17591,0,6203,
-28165,0,35454,9499,0,24829,30311,39639,40260,37742,39823,34805,0,0,36087,
-29484,38689,39856,13782,29362,19463,31825,39242,24921,24921,19460,40598,24957,
-0,22367,24943,25254,25145,0,14940,25058,21418,13301,25444,26626,13778,23895,
-35778,36826,36409,0,20697,7494,30982,21298,38456,3899,16485,0,30718,0,31938,
-24346,31962,31277,32870,32867,32077,29957,29938,35220,33306,26380,32866,29830,
-32859,29936,33027,30500,35209,26572,30035,28369,34729,34766,33224,34700,35401,
-36013,35651,30507,29944,34010,13877,27058,36262,0,35241,0,28089,34753,16401,
-29927,15835,29046,24740,24988,15569,0,24695,0,32625,35629,0,24809,19326,21024,
-15384,15559,24279,30294,21809,6468,4862,39171,28124,28845,23745,25005,35343,
-13943,238,26694,20238,17762,23327,25420,40784,40614,25195,1351,37595,1503,
-16325,34124,17077,29679,20917,13897,18754,35300,37700,6619,
-33518,15560,30780,26436,25311,18739,35242,672,27571,4869,20395,9453,20488,
-27945,31364,13824,19121,9491,0,894,24484,896,839,28379,1055,0,20737,13434,
-20750,39020,14147,33814,18852,1159,20832,13236,20842,3071,8444,741,9520,1422,
-12851,6531,23426,34685,1459,15513,20914,20920,40244,20937,20943,20945,15580,
-20947,19110,20915,20962,21314,20973,33741,26942,14125,24443,21003,21030,21052,
-21173,21079,21140,21177,21189,31765,34114,21216,34317,27411,0,35550,21833,
-28377,16256,2388,16364,21299,0,3042,27851,5926,26651,29653,24650,16042,14540,
-5864,29149,17570,21357,21364,34475,21374,0,5526,5651,30694,21395,35483,21408,
-21419,21422,29607,22386,16217,29596,21441,21445,27721,20041,22526,21465,15019,
-2959,21472,16363,11683,21494,3191,21523,28793,21803,26199,27995,21613,27475,
-3444,21853,21647,21668,18342,5901,3805,15796,3405,35260,9880,21831,19693,
-21551,29719,21894,21929,0,6359,16442,17746,17461,26291,4276,22071,26317,12938,
-26276,26285,22093,22095,30961,22257,38791,21502,22272,22255,22253,35686,13859,
-4687,22342,16805,27758,28811,22338,14001,27774,22502,5142,22531,5204,17251,
-22566,19445,22620,22698,13665,22752,22748,4668,22779,23551,22339,41296,17016,
-37843,13729,22815,26790,14019,28249,5694,23076,21843,5778,34053,22985,3406,
-27777,27946,6108,23001,6139,6066,28070,28017,6184,5845,23033,28229,23211,
-23139,14054,18857,0,14088,23190,29797,23251,28577,9556,15749,6417,14130,5816,
-24195,21200,23414,25992,23420,31246,16388,18525,516,23509,24928,6708,22988,
-1445,23539,
-23453,19728,23557,6980,23571,29646,23572,7333,27432,23625,18653,23685,23785,
-23791,23947,7673,7735,23824,23832,23878,7844,23738,24023,33532,14381,18689,
-8265,8563,33415,14390,15298,24110,27274,0,24186,17596,3283,21414,20151,0,
-21416,6001,24073,24308,33922,24313,24315,14496,24316,26686,37915,24333,449,
-63636,15070,18606,4922,24378,26760,9168,0,9329,24419,38845,28270,24434,37696,
-35382,24487,23990,15711,21072,8042,28920,9832,37334,670,35369,24625,26245,
-6263,14691,15815,13881,22416,10164,31089,15936,24734,0,24755,18818,18831,
-31315,29860,20705,23200,24932,33828,24898,63654,28370,24961,20980,1622,24967,
-23466,16311,10335,25043,35741,39261,25040,14642,10624,10433,24611,24924,25886,
-25483,280,25285,6000,25301,11789,25452,18911,14871,25656,25592,5006,6140,0,
-28554,11830,38932,16524,22301,25825,25829,38011,14950,25658,14935,25933,28438,
-18984,18979,25989,25965,25951,12414,26037,18752,19255,26065,16600,6185,26080,
-26083,24543,13312,26136,12791,12792,26180,12708,12709,26187,3701,26215,20966,
-26227,0,7741,12849,34292,12744,21267,30661,10487,39332,26370,17308,18977,
-15147,27130,14274,0,26471,26466,16845,37101,26583,17641,26658,28240,37436,
-26625,13286,28064,26717,13423,27105,27147,35551,26995,26819,13773,26881,26880,
-15666,14849,13884,15232,26540,26977,35402,17148,26934,27032,15265,969,33635,
-20624,27129,13913,8490,27205,14083,27293,15347,26545,27336,37276,15373,27421,
-2339,24798,27445,27508,10189,28341,15067,949,6488,14144,21537,15194,27617,
-16124,27612,27703,9355,18673,27473,
-27738,33318,27769,15804,17605,15805,16804,18700,18688,15561,14053,15595,3378,
-39811,12793,9361,32655,26679,27941,28065,28139,28054,27996,28284,28420,18815,
-16517,28274,34099,28532,20935,0,0,33838,35617,0,15919,29779,16258,31180,28239,
-23185,12363,28664,14093,28573,15920,28410,5271,16445,17749,37872,28484,28508,
-15694,28532,37232,15675,28575,16708,28627,16529,16725,16441,16368,16308,16703,
-20959,16726,16727,16704,25053,28747,28798,28839,28801,28876,28885,28886,28895,
-16644,15848,29108,29078,17015,28971,28997,23176,29002,0,23708,17253,29007,
-37730,17089,28972,17498,18983,18978,29114,35816,28861,29198,37954,29205,22801,
-37955,29220,37697,22021,29230,29248,18804,26813,29269,29271,15957,12356,26637,
-28477,29314,0,29483,18467,34859,18669,34820,29480,29486,29647,29610,3130,
-27182,29641,29769,16866,5863,18980,26147,14021,18871,18829,18939,29687,29717,
-26883,18982,29753,1475,16087,0,10413,29792,36530,29767,29668,29814,33721,
-29804,14128,29812,37873,27180,29826,18771,19084,16735,19065,35727,23366,35843,
-6302,29896,6536,29966,0,29982,36569,6731,23511,36524,37765,30029,30026,30055,
-30062,20354,16132,19731,30094,29789,30110,30132,30210,30252,30289,30287,30319,
-30326,25589,30352,33263,14328,26897,26894,30369,30373,30391,30412,28575,33890,
-20637,20861,7708,30494,30502,30528,25775,21024,30552,12972,30639,35172,35176,
-5825,30708,0,4982,18962,26826,30895,30919,30931,38565,31022,21984,30935,31028,
-30897,30220,36792,34948,35627,24707,9756,31110,35072,26882,31104,22615,31133,
-31545,31036,31145,28202,28966,
-16040,31174,37133,31188,1312,17503,21007,47234,248,16384,43296,1102,0,0,2868,
-1,0,0,0,0,0,0,0,3072,64,0,0,0,1024,88,60,0,0,23680,56493,48115,17353,60910,
-4004,49446,30363,61426,64478,63482,12815,44868,61438,65277,24593,176,8448,
-33049,4128,43144,8544,9321,17408,50313,0,16387,53,33859,20785,26771,514,0,0,0,
-0,0,16384,256,44160,33380,35904,37025,20484,54368,53760,6186,26781,38709,
-55375,8440,33476,10268,30082,660,16440,41376,4293,19825,3524,47512,23390,
-17153,39327,30723,57888,2079,393,16585,775,39437,21136,20433,892,8450,49184,
-4974,46467,62939,30693,20368,39447,5942,12,47726,12041,21600,7680,26744,28706,
-40534,62245,46990,2839,59119,6007,7003,4289,36248,6162,53174,12545,6770,11355,
-49334,57888,23747,7042,56032,34254,16598,21673,53259,18447,16452,2320,16596,
-15278,7780,11076,2071,33414,6198,35232,40167,2139,900,55810,60560,34779,49029,
-44450,36509,39069,9504,70,40774,58239,51669,62596,19926,58118,6326,2322,0,
-1024,0,32,0,512,0,0,0,0,8192,0,0,0,0,0,0,8,36352,28280,16223,56702,63293,
-39932,44796,65490,27535,59377,47807,28334,61207,42972,46654,30645,37577,42455,
-19126,39790,33209,26445,21758,39921,65122,21103,14039,49150,17705,63873,26045,
-17062,57,16896,36704,37888,16448,45010,53719,219,39072,31666,20998,38944,
-51222,2365,0,1,0,2561,2226,128,0,34820,5152,19472,0,4,17569,16,321,
-2048,61504,20447,22582,62961,32949,26613,16512,20480,16718,33992,23040,55392,
-11009,20481,5793,16580,28402,44049,14624,49348,1800,2316,38552,39876,7184,
-27800,10886,422,4422,58733,50379,37568,8464,4630,29341,27124,5902,41514,62593,
-123,41992,36875,11280,14796,330,5872,2571,3136,59933,17420,17678,2,
+17392, 19506, 17923, 17830, 17784, 29287, 19831, 17843, 31921, 19682, 31941,
+    15253, 18230, 18244, 19527, 19520, 17087, 13847, 29522, 28299, 28882, 19543,
+    41809, 18255, 17882, 19589, 31852, 19719, 19108, 18081, 27427, 29221, 23124,
+    6755, 15878, 16225, 26189, 22267, 0, 32149, 22813, 35769, 15860, 38708,
+    31727, 23515, 7518, 23204, 13861, 40624, 23249, 23479, 23804, 26478, 34195,
+    39237, 29793, 29853, 14453, 7507, 13982, 24609, 16108, 22750, 15093, 31484,
+    40855, 16737, 35085, 12778, 2698, 12894, 17162, 33924, 40854, 37935, 18736,
+    34323, 22678, 38730, 37400, 31184, 31282, 26208, 27177, 34973, 29772, 31685,
+    26498, 31276, 21071, 36934, 13542, 29636, 23993, 29894, 40903, 22451, 18735,
+    21580, 16689, 13966, 22552, 31346, 31589, 35727, 18094, 28296, 16769, 23961,
+    31662, 9404, 40904, 9409, 9417, 9420, 40905, 34052, 13755, 16564, 40906,
+    17633, 44543, 25281, 28782, 40907, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 12736, 12737, 12738,
+    12739, 12740, 268, 12741, 209, 205, 12742, 12743, 203, 8168, 12744, 202,
+    12745, 12746, 12747, 12748, 270, 12749, 12750, 256, 193, 461, 192, 274, 201,
+    282, 200, 332, 211, 465, 210, 56320, 7870, 56324, 7872, 202, 257, 225, 462,
+    224, 593, 275, 233, 283, 232, 299, 237, 464, 236, 333, 243, 466, 242, 363,
+    250, 468, 249, 470, 472, 474, 476, 252, 56328, 7871, 56332, 7873, 234, 609,
+    9178, 9179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 41897, 4421, 0, 25866, 0, 0, 20029,
+    28381, 40270, 37343, 0, 0, 30517, 25745, 20250, 20264, 20392, 20822, 20852,
+    20892, 20964, 21153, 21160, 21307, 21326, 21457, 21464, 22242, 22768, 22788,
+    22791, 22834, 22836, 23398, 23454, 23455, 23706, 24198, 24635, 25993, 26622,
+    26628, 26725, 27982, 28860, 30005, 32420, 32428, 32442, 32455, 32463, 32479,
+    32518, 32567, 33402, 33487, 33647, 35270, 35774, 35810, 36710, 36711, 36718,
+    29713, 31996, 32205, 26950, 31433, 21031, 0, 0, 0, 0, 37260, 30904, 37214,
+    32956, 0, 36107, 33014, 2535, 0, 0, 32927, 40647, 19661, 40393, 40460,
+    19518, 40438, 28686, 40458, 41267, 13761, 0, 28314, 33342, 29977, 0, 18705,
+    39532, 39567, 40857, 31111, 33900, 7626, 1488, 10982, 20004, 20097, 20096,
+    20103, 20159, 20203, 20279, 13388, 20413, 15944, 20483, 20616, 13437, 13459,
+    13477, 20870, 22789, 20955, 20988, 20997, 20105, 21113, 21136, 21287, 13767,
+    21417, 13649, 21424, 13651, 21442, 21539, 13677, 13682, 13953, 21651, 21667,
+    21684, 21689, 21712, 21743, 21784, 21795, 21800, 13720, 21823, 13733, 13759,
+    21975, 13765, 32132, 21797, 0, 3138, 3349, 20779, 21904, 11462, 14828, 833,
+    36422, 19896, 38117, 16467, 32958, 30586, 11320, 14900, 18389, 33117, 27122,
+    19946, 25821, 3452, 4020, 3285, 4340, 25741, 36478, 3734, 3083, 3940, 11433,
+    33366, 17619, 0, 3398, 39501, 33001, 18420, 20135, 11458, 39602, 14951,
+    38388, 16365, 13574, 21191, 38868, 30920, 11588, 40302, 38933, 0, 17369,
+    24741, 25780, 21731, 11596, 11210, 4215, 14843, 4207, 26330, 26390, 31136,
+    25834, 20562, 3139, 36456, 8609, 35660, 1841, 0, 18443, 425, 16378, 22643,
+    11661, 0, 17864, 1276, 24727, 3916, 3478, 21881, 16571, 17338, 0, 19124,
+    10854, 4253, 33194, 39157, 3484, 25465, 14846, 10101, 36288, 22177, 25724,
+    15939, 0, 42497, 3593, 10959, 11465, 0, 4296, 14786, 14738, 14854, 33435,
+    13688, 24137, 8391, 22098, 3889, 11442, 38688, 13500, 27709, 20027, 0, 0,
+    30068, 11915, 8712, 42587, 36045, 3706, 3124, 26652, 32659, 4303, 10243,
+    10553, 13819, 20963, 3724, 3981, 3754, 16275, 3888, 3399, 4431, 3660, 0,
+    3755, 2985, 3400, 4288, 4413, 16377, 9878, 25650, 4013, 13300, 30265, 11214,
+    3454, 3455, 11345, 11349, 14872, 3736, 4295, 3886, 42546, 27472, 36050,
+    36249, 36042, 38314, 21708, 33476, 21945, 0, 40643, 39974, 39606, 30558,
+    11758, 28992, 33133, 33004, 23580, 25970, 33076, 14231, 21343, 32957, 37302,
+    3834, 3599, 3703, 3835, 13789, 19947, 13833, 3286, 22191, 10165, 4297, 3600,
+    3704, 4216, 4424, 33287, 5205, 3705, 20048, 11684, 23124, 4125, 4126, 4341,
+    4342, 22428, 3601, 30356, 33485, 4021, 3707, 20862, 14083, 4022, 4480,
+    21208, 41661, 18906, 6202, 16759, 33404, 22681, 21096, 13850, 22333, 31666,
+    23400, 18432, 19244, 40743, 18919, 39967, 39821, 23412, 12605, 22011, 13810,
+    22153, 20008, 22786, 7105, 63608, 38737, 134, 20059, 20155, 13630, 23587,
+    24401, 24516, 14586, 25164, 25909, 27514, 27701, 27706, 28780, 29227, 20012,
+    29357, 18665, 32594, 31035, 31993, 32595, 25194, 13505, 0, 25419, 32770,
+    32896, 26130, 26961, 21341, 34916, 35265, 30898, 35744, 36125, 38021, 38264,
+    38271, 38376, 36367, 38886, 39029, 39118, 39134, 39267, 38928, 40060, 40479,
+    40644, 27503, 63751, 20023, 135, 38429, 25143, 38050, 0, 20539, 28158,
+    40051, 40870, 15817, 34959, 16718, 28791, 23797, 19232, 20941, 13657, 23856,
+    24866, 35378, 36775, 37366, 29073, 26393, 29626, 12929, 41223, 15499, 6528,
+    19216, 30948, 29698, 20910, 34575, 16393, 27235, 41658, 16931, 34319, 2671,
+    31274, 39239, 35562, 38741, 28749, 21284, 8318, 37876, 30425, 35299, 40871,
+    30685, 20131, 20464, 20668, 20015, 20247, 40872, 21556, 32139, 22674, 22736,
+    7606, 24210, 24217, 24514, 10002, 25995, 13305, 26905, 27203, 15459, 27903,
+    0, 29184, 17669, 29580, 16091, 18963, 23317, 29881, 35715, 23716, 22165,
+    31379, 31724, 31939, 32364, 33528, 34199, 40873, 34960, 40874, 36537, 40875,
+    36815, 34143, 39392, 37409, 40876, 36281, 5183, 16497, 17058, 23066, 0, 0,
+    0, 39016, 26475, 17014, 22333, 0, 34262, 18811, 33471, 28941, 19585, 28020,
+    23931, 27413, 28606, 40877, 40878, 23446, 40879, 26343, 32347, 28247, 31178,
+    15752, 17603, 12886, 10134, 17306, 17718, 0, 23765, 15130, 35577, 23672,
+    15634, 13649, 23928, 40882, 29015, 17752, 16620, 7715, 19575, 14712, 13386,
+    420, 27713, 35532, 20404, 569, 22975, 33132, 38998, 39162, 24379, 2975, 0,
+    8641, 35181, 16642, 18107, 36985, 16135, 40883, 41397, 16632, 14294, 18167,
+    27718, 16764, 34482, 29695, 17773, 14548, 21658, 17761, 17691, 19849, 19579,
+    19830, 17898, 16328, 19215, 13921, 17630, 17597, 16877, 23870, 23880, 23894,
+    15868, 14351, 23972, 23993, 14368, 14392, 24130, 24253, 24357, 24451, 14600,
+    14612, 14655, 14669, 24791, 24893, 23781, 14729, 25015, 25017, 25039, 14776,
+    25132, 25232, 25317, 25368, 14840, 22193, 14851, 25570, 25595, 25607, 25690,
+    14923, 25792, 23829, 22049, 40863, 14999, 25990, 15037, 26111, 26195, 15090,
+    26258, 15138, 26390, 15170, 26532, 26624, 15192, 26698, 26756, 15218, 15217,
+    15227, 26889, 26947, 29276, 26980, 27039, 27013, 15292, 27094, 15325, 27237,
+    27252, 27249, 27266, 15340, 27289, 15346, 27307, 27317, 27348, 27382, 27521,
+    27585, 27626, 27765, 27818, 15563, 27906, 27910, 27942, 28033, 15599, 28068,
+    28081, 28181, 28184, 28201, 28294, 35264, 28347, 28386, 28378, 40831, 28392,
+    28393, 28452, 28468, 15686, 16193, 28545, 28606, 15722, 15733, 29111, 23705,
+    15754, 28716, 15761, 28752, 28756, 28783, 28799, 28809, 805, 17345, 13809,
+    3800, 16087, 22462, 28371, 28990, 22496, 13902, 27042, 35817, 23412, 31305,
+    22753, 38105, 31333, 31357, 22956, 31419, 31408, 31426, 31427, 29137, 25741,
+    16842, 31450, 31453, 31466, 16879, 21682, 23553, 31499, 31573, 31529, 21262,
+    23806, 31650, 31599, 33692, 23476, 27775, 31696, 33825, 31634, 0, 23840,
+    15789, 23653, 33938, 31738, 0, 31797, 23745, 31812, 31875, 18562, 31910,
+    26237, 17784, 31945, 31943, 31974, 31860, 31987, 31989, 0, 32359, 17693,
+    28228, 32093, 28374, 29837, 32137, 32171, 28981, 32179, 0, 16471, 24617,
+    32228, 15635, 32245, 6137, 32229, 33645, 0, 24865, 24922, 32366, 32402,
+    17195, 37996, 32295, 32576, 32577, 32583, 31030, 25296, 39393, 32663, 25425,
+    32675, 5729, 104, 17756, 14182, 17667, 33594, 32762, 25737, 0, 32776, 32797,
+    0, 32815, 41095, 27843, 32827, 32828, 32865, 10004, 18825, 26150, 15843,
+    26344, 26405, 32935, 35400, 33031, 33050, 22704, 9974, 27775, 25752, 20408,
+    25831, 5258, 33304, 6238, 27219, 19045, 19093, 17530, 33321, 2829, 27218,
+    15742, 20473, 5373, 34018, 33634, 27402, 18855, 13616, 6003, 15864, 33450,
+    26907, 63892, 16859, 34123, 33488, 33562, 3606, 6068, 14017, 12669, 13658,
+    33403, 33506, 33560, 16011, 28067, 27397, 27543, 13774, 15807, 33565, 21996,
+    33669, 17675, 28069, 33708, 0, 33747, 13438, 28372, 27223, 34138, 13462,
+    28226, 12015, 33880, 23524, 33905, 15827, 17636, 27303, 33866, 15541, 31064,
+    0, 27542, 28279, 28227, 34014, 0, 33681, 17568, 33939, 34020, 23697, 16960,
+    23744, 17731, 34100, 23282, 28313, 17703, 34163, 17686, 26559, 34326, 34341,
+    34363, 34241, 28808, 34306, 5506, 28877, 63922, 17770, 34344, 13896, 6306,
+    21495, 29594, 34430, 34673, 41208, 34798, 11303, 34737, 34778, 34831, 22113,
+    34412, 26710, 17935, 34885, 34886, 30176, 15801, 30180, 34910, 34972, 18011,
+    34996, 34997, 25537, 35013, 30583, 30479, 35207, 35210, 0, 0, 35239, 35260,
+    35365, 35303, 31012, 31421, 35484, 30611, 37374, 35472, 31321, 31465, 31546,
+    16271, 18195, 31544, 29052, 35596, 35615, 21552, 21861, 35647, 35660, 35661,
+    35497, 19066, 35728, 35739, 35503, 5855, 17941, 34895, 35995, 32084, 32143,
+    63956, 14117, 32083, 36054, 32152, 32189, 36114, 36099, 6416, 36059, 28764,
+    36113, 19657, 16080, 0, 36265, 32770, 4116, 18826, 15228, 33212, 28940,
+    31463, 36525, 36534, 36547, 37588, 36633, 36653, 33637, 33810, 36773, 37635,
+    41631, 2640, 36787, 18730, 35294, 34109, 15803, 24312, 12898, 36857, 40980,
+    34492, 34049, 8997, 14720, 28375, 36919, 34108, 31422, 36961, 34156, 34315,
+    37032, 34579, 37060, 34534, 37038, 0, 37223, 15088, 37289, 37316, 31916,
+    35123, 7817, 37390, 27807, 37441, 37474, 21945, 0, 35526, 15515, 35596,
+    21979, 3377, 37676, 37739, 35553, 35819, 28815, 23235, 35554, 35557, 18789,
+    37444, 35820, 35897, 35839, 37747, 37979, 36540, 38277, 38310, 37926, 38304,
+    28662, 17081, 9850, 34520, 4732, 15918, 18911, 27676, 38523, 38550, 16748,
+    38563, 28373, 25050, 38582, 30965, 35552, 38589, 21452, 18849, 27832, 628,
+    25616, 37039, 37093, 19153, 6421, 13066, 38705, 34370, 38710, 18959, 17725,
+    17797, 19177, 28789, 23361, 38683, 0, 37333, 38743, 23370, 37355, 38751,
+    37925, 20688, 12471, 12476, 38793, 38815, 38833, 38846, 38848, 38866, 38880,
+    21612, 38894, 29724, 37939, 0, 38901, 37917, 31098, 19153, 38964, 38963,
+    38987, 39014, 15118, 29045, 15697, 1584, 16732, 22278, 39114, 39095, 39112,
+    39111, 19199, 27943, 5843, 21936, 39137, 39142, 39148, 37752, 39225, 18985,
+    19314, 38999, 39173, 39413, 39436, 39483, 39440, 39512, 22309, 14020, 37041,
+    39893, 39648, 39650, 39685, 39668, 19470, 39700, 39725, 34304, 20532, 39732,
+    27048, 14531, 12413, 39760, 39744, 40254, 23109, 6243, 39822, 16971, 39938,
+    39935, 39948, 40552, 40404, 40887, 41362, 41387, 41185, 41251, 41439, 40318,
+    40323, 41268, 40462, 26760, 40388, 8539, 41363, 41504, 6459, 41523, 40249,
+    41145, 41652, 40592, 40597, 40606, 40610, 19764, 40618, 40623, 17252, 40641,
+    15200, 14821, 15645, 20274, 14270, 35883, 40706, 40712, 19350, 37924, 28066,
+    40727, 0, 40761, 22175, 22154, 40773, 39352, 37003, 38898, 33919, 40802,
+    40809, 31452, 40846, 29206, 19390, 18805, 18875, 29047, 18936, 17224, 19025,
+    29598, 35802, 6394, 31135, 35198, 36406, 37737, 37875, 35396, 37612, 37761,
+    37835, 35180, 17593, 29207, 16107, 30578, 31299, 28880, 17523, 17400, 29054,
+    6127, 28835, 6334, 13721, 16071, 6277, 21551, 6136, 14114, 5883, 6201,
+    14049, 6004, 6353, 24395, 14115, 5824, 22363, 18981, 5118, 4776, 5062, 5302,
+    34051, 13990, 0, 33877, 18836, 29029, 15921, 21852, 16123, 28754, 17652,
+    14062, 39325, 28454, 26617, 14131, 15381, 15847, 22636, 6434, 26640, 16471,
+    14143, 16609, 16523, 16655, 27681, 21707, 22174, 26289, 22162, 4063, 2984,
+    3597, 37830, 35603, 37788, 20216, 20779, 14361, 17462, 20156, 1125, 895,
+    20299, 20362, 22097, 23144, 427, 971, 14745, 778, 1044, 13365, 20265, 704,
+    36531, 629, 35546, 524, 20120, 20685, 20749, 20386, 20227, 18958, 16010,
+    20290, 20526, 20588, 20609, 20428, 20453, 20568, 20732, 0, 0, 0, 0, 28278,
+    13717, 15929, 16063, 28018, 6276, 16009, 20904, 20931, 1504, 17629, 1187,
+    1170, 1169, 36218, 35484, 1806, 21081, 21156, 2163, 21217, 0, 18042, 29068,
+    17292, 3104, 18860, 4324, 27089, 3613, 0, 16094, 29849, 29716, 29782, 29592,
+    19342, 19132, 16525, 21456, 13700, 29199, 16585, 21940, 837, 21709, 3014,
+    22301, 37469, 38644, 37734, 22493, 22413, 22399, 13886, 22731, 23193, 35398,
+    5882, 5999, 5904, 23084, 22968, 37519, 23166, 23247, 23058, 22854, 6643,
+    6241, 17045, 14069, 27909, 29763, 23073, 24195, 23169, 35799, 1043, 37856,
+    29836, 4867, 28933, 18802, 37896, 35323, 37821, 14240, 23582, 23710, 24158,
+    24136, 6550, 6524, 15086, 24269, 23375, 6403, 6404, 14081, 6304, 14045,
+    5886, 14035, 33066, 35399, 7610, 13426, 35240, 24332, 24334, 6439, 6059,
+    23147, 5947, 23364, 34324, 30205, 34912, 24702, 10336, 9771, 24539, 16056,
+    9647, 9662, 37000, 28531, 25024, 62, 70, 9755, 24985, 24984, 24693, 11419,
+    11527, 18132, 37197, 25713, 18021, 11114, 14889, 11042, 13392, 39146, 11896,
+    25399, 42075, 25782, 25393, 25553, 18915, 11623, 25252, 11425, 25659, 25963,
+    26994, 15348, 12430, 12973, 18825, 12971, 21773, 13024, 6361, 37951, 26318,
+    12937, 12723, 15072, 16784, 21892, 35618, 21903, 5884, 21851, 21541, 30958,
+    12547, 6186, 12852, 13412, 12815, 12674, 17097, 26254, 27940, 26219, 19347,
+    26160, 30832, 7659, 26211, 13010, 13025, 26142, 22642, 14545, 14394, 14268,
+    15257, 14242, 13310, 29904, 15254, 26511, 17962, 26806, 26654, 15300, 27326,
+    14435, 14293, 17543, 27187, 27218, 27337, 27397, 6418, 25873, 26776, 27212,
+    15319, 27258, 27479, 16320, 15514, 37792, 37618, 35818, 35531, 37513, 32798,
+    35292, 37991, 28069, 28427, 18924, 0, 16255, 15759, 28164, 16444, 23101,
+    28170, 22599, 27940, 30786, 28987, 17178, 17014, 28913, 29264, 29319, 29332,
+    18319, 18213, 20857, 19108, 1515, 29818, 16120, 13919, 19018, 18711, 24545,
+    16134, 16049, 19167, 35875, 16181, 24743, 16115, 29900, 29756, 37767, 29751,
+    17567, 28138, 17745, 30083, 16227, 19673, 19718, 16216, 30037, 30323, 42438,
+    15129, 29800, 35532, 18859, 18830, 15099, 15821, 19022, 16127, 18885, 18675,
+    37370, 22322, 37698, 35555, 6244, 20703, 21025, 20967, 30584, 12850, 30478,
+    30479, 30587, 18071, 14209, 14942, 18672, 29752, 29851, 16063, 19130, 19143,
+    16584, 19094, 25006, 37639, 21889, 30750, 30861, 30856, 30930, 29648, 31065,
+    30529, 22243, 16654, 0, 33942, 31141, 27181, 16122, 31290, 31220, 16750,
+    5862, 16690, 37429, 31217, 3404, 18828, 665, 15802, 5998, 13719, 21867,
+    13680, 13994, 468, 3085, 31458, 23129, 9973, 23215, 23196, 23053, 603,
+    30960, 23082, 23494, 31486, 16889, 31837, 31853, 16913, 23475, 24252, 24230,
+    31949, 18937, 6064, 31886, 31868, 31918, 27314, 32220, 32263, 32211, 32590,
+    25185, 24924, 31560, 32151, 24194, 17002, 27509, 2326, 26582, 78, 13775,
+    22468, 25618, 25592, 18786, 32733, 31527, 2092, 23273, 23875, 31500, 24078,
+    39398, 34373, 39523, 27164, 13375, 14818, 18935, 26029, 39455, 26016, 33920,
+    28967, 27857, 17642, 33079, 17410, 32966, 33033, 33090, 26548, 39107, 27202,
+    33378, 33381, 27217, 33875, 28071, 34320, 29211, 23174, 16767, 6208, 23339,
+    6305, 23268, 6360, 34464, 63932, 15759, 34861, 29730, 23042, 34926, 20293,
+    34951, 35007, 35046, 35173, 35149, 22147, 35156, 30597, 30596, 35829, 35801,
+    35740, 35321, 16045, 33955, 18165, 18127, 14322, 35389, 35356, 37960, 24397,
+    37419, 17028, 26068, 28969, 28868, 6213, 40301, 35999, 36073, 32220, 22938,
+    30659, 23024, 17262, 14036, 36394, 36519, 19465, 36656, 36682, 17140, 27736,
+    28603, 8993, 18587, 28537, 28299, 6106, 39913, 14005, 18735, 37051, 0,
+    21873, 18694, 37307, 37892, 35403, 16482, 35580, 37927, 35869, 35899, 34021,
+    35371, 38297, 38311, 38295, 38294, 36148, 29765, 16066, 18687, 19010, 17386,
+    16103, 12837, 38543, 36583, 36454, 36453, 16076, 18925, 19064, 16366, 29714,
+    29803, 16124, 38721, 37040, 26695, 18973, 37011, 22495, 0, 37736, 35209,
+    35878, 35631, 25534, 37562, 23313, 35689, 18748, 29689, 16923, 38811, 38769,
+    39224, 3878, 24001, 35781, 19122, 38943, 38106, 37622, 38359, 37349, 17600,
+    35664, 19047, 35684, 39132, 35397, 16128, 37418, 18725, 33812, 39227, 39245,
+    31494, 15869, 39323, 19311, 39338, 39516, 35685, 22728, 27279, 39457, 23294,
+    39471, 39153, 19344, 39240, 39356, 19389, 19351, 37757, 22642, 4866, 22562,
+    18872, 5352, 30788, 10015, 15800, 26821, 15741, 37976, 14631, 24912, 10113,
+    10603, 24839, 40015, 40019, 40059, 39989, 39952, 39807, 39887, 40493, 39839,
+    41461, 41214, 40225, 19630, 16644, 40472, 19632, 40204, 41396, 41197, 41203,
+    39215, 40357, 33981, 28178, 28639, 27522, 34300, 17715, 28068, 28292, 28144,
+    33824, 34286, 28160, 14295, 24676, 31202, 13724, 13888, 18733, 18910, 15714,
+    37851, 37566, 37704, 703, 30905, 37495, 37965, 20452, 13376, 36964, 21853,
+    30781, 30804, 30902, 30795, 5975, 12745, 18753, 13978, 20338, 28634, 28633,
+    0, 28702, 21524, 16821, 22459, 22771, 22410, 40214, 22487, 28980, 13487,
+    16812, 29163, 27712, 20375, 0, 6069, 35401, 24844, 23246, 23051, 17084,
+    17544, 14124, 19323, 35324, 37819, 37816, 6358, 3869, 33906, 27840, 5139,
+    17146, 11302, 17345, 22932, 15799, 26433, 32168, 24923, 24740, 18873, 18827,
+    35322, 37605, 29666, 16105, 29876, 35683, 6303, 16097, 19123, 27352, 29683,
+    29691, 16086, 19006, 19092, 6105, 19046, 935, 5156, 18917, 29768, 18710,
+    28837, 18806, 37508, 29670, 37727, 1278, 37681, 35534, 35350, 37766, 35815,
+    21973, 18741, 35458, 29035, 18755, 3327, 22180, 1562, 3051, 3256, 21762,
+    31172, 6138, 32254, 5826, 19024, 6226, 17710, 37889, 14090, 35520, 18861,
+    22960, 6335, 6275, 29828, 23201, 14050, 15707, 14000, 37471, 23161, 35457,
+    6242, 37748, 15565, 2740, 19094, 14730, 20724, 15721, 15692, 5020, 29045,
+    17147, 33304, 28175, 37092, 17643, 27991, 32335, 28775, 27823, 15574, 16365,
+    15917, 28162, 28428, 15727, 1013, 30033, 14012, 13512, 18048, 16090, 18545,
+    22980, 37486, 18750, 36673, 35868, 27584, 22546, 22472, 14038, 5202, 28926,
+    17250, 19057, 12259, 4784, 9149, 26809, 26983, 5016, 13541, 31732, 14047,
+    35459, 14294, 13306, 19615, 27162, 13997, 27831, 33854, 17631, 17614, 27942,
+    27985, 27778, 28638, 28439, 28937, 33597, 5946, 33773, 27776, 28755, 6107,
+    22921, 23170, 6067, 23137, 23153, 6405, 16892, 14125, 23023, 5948, 14023,
+    29070, 37776, 26266, 17061, 23150, 23083, 17043, 27179, 16121, 30518, 17499,
+    17098, 28957, 16985, 35297, 20400, 27944, 23746, 17614, 32333, 17341, 27148,
+    16982, 4868, 28838, 28979, 17385, 15781, 27871, 63525, 19023, 32357, 23019,
+    23855, 15859, 24412, 19037, 6111, 32164, 33830, 21637, 15098, 13056, 532,
+    22398, 2261, 1561, 16357, 8094, 41654, 28675, 37211, 23920, 29583, 31955,
+    35417, 37920, 20424, 32743, 29389, 29456, 31476, 29496, 29497, 22262, 29505,
+    29512, 16041, 31512, 36972, 29173, 18674, 29665, 33270, 16074, 30476, 16081,
+    27810, 22269, 29721, 29726, 29727, 16098, 16112, 16116, 16122, 29907, 16142,
+    16211, 30018, 30061, 30066, 30093, 16252, 30152, 30172, 16320, 30285, 16343,
+    30324, 16348, 30330, 20316, 29064, 22051, 35200, 22633, 16413, 30531, 16441,
+    26465, 16453, 13787, 30616, 16490, 16495, 23646, 30654, 30667, 22770, 30744,
+    28857, 30748, 16552, 30777, 30791, 30801, 30822, 33864, 21813, 31027, 26627,
+    31026, 16643, 16649, 31121, 31129, 36795, 31238, 36796, 16743, 31377, 16818,
+    31420, 33401, 16836, 31439, 31451, 16847, 20001, 31586, 31596, 31611, 31762,
+    31771, 16992, 17018, 31867, 31900, 17036, 31928, 17044, 31981, 36755, 28864,
+    3279, 32207, 32212, 32208, 32253, 32686, 32692, 29343, 17303, 32800, 32805,
+    31545, 32814, 32817, 32852, 15820, 22452, 28832, 32951, 33001, 17389, 33036,
+    29482, 33038, 33042, 30048, 33044, 17409, 15161, 33110, 33113, 33114, 17427,
+    22586, 33148, 33156, 17445, 33171, 17453, 33189, 22511, 33217, 33252, 33364,
+    17551, 33446, 33398, 33482, 33496, 33535, 17584, 33623, 38505, 27018, 33797,
+    28917, 33892, 24803, 33928, 17668, 33982, 34017, 34040, 34064, 34104, 34130,
+    17723, 34159, 34160, 34272, 17783, 34418, 34450, 34482, 34543, 38469, 34699,
+    17926, 17943, 34990, 35071, 35108, 35143, 35217, 31079, 35369, 35384, 35476,
+    35508, 35921, 36052, 36082, 36124, 18328, 22623, 36291, 18413, 20206, 36410,
+    21976, 22356, 36465, 22005, 36528, 18487, 36558, 36578, 36580, 36589, 36594,
+    36791, 36801, 36810, 36812, 36915, 39364, 18605, 39136, 37395, 18718, 37416,
+    37464, 37483, 37553, 37550, 37567, 37603, 37611, 37619, 37620, 37629, 37699,
+    37764, 37805, 18757, 18769, 40639, 37911, 21249, 37917, 37933, 37950, 18794,
+    37972, 38009, 38189, 38306, 18855, 38388, 38451, 18917, 26528, 18980, 38720,
+    18997, 38834, 38850, 22100, 19172, 24808, 39097, 19225, 39153, 22596, 39182,
+    39193, 20916, 39196, 39223, 39234, 39261, 39266, 19312, 39365, 19357, 39484,
+    39695, 31363, 39785, 39809, 39901, 39921, 39924, 19565, 39968, 14191, 7106,
+    40265, 39994, 40702, 22096, 40339, 40381, 40384, 40444, 38134, 36790, 40571,
+    40620, 40625, 40637, 40646, 38108, 40674, 40689, 40696, 31432, 40772, 148,
+    695, 928, 26906, 38083, 22956, 1239, 22592, 38081, 14265, 1493, 1557, 1654,
+    5818, 22359, 29043, 2754, 2765, 3007, 21610, 63547, 3019, 21662, 3067, 3131,
+    3155, 3173, 3196, 24807, 3213, 22138, 3253, 3293, 3309, 3439, 3506, 3528,
+    26965, 39983, 34725, 3588, 3598, 3799, 3984, 3885, 3699, 23584, 4028, 24075,
+    4188, 4175, 4214, 26398, 4219, 4232, 4246, 13895, 4287, 4307, 4399, 4411,
+    21348, 33965, 4835, 4981, 4918, 35713, 5495, 5657, 6083, 6087, 20088, 28859,
+    6189, 6506, 6701, 6725, 7210, 7280, 7340, 7880, 25283, 7893, 7957, 29080,
+    26709, 8261, 27113, 14024, 8828, 9175, 9210, 10026, 10353, 10575, 33533,
+    10599, 10643, 10965, 35237, 10984, 36768, 11022, 38840, 11071, 38983, 39613,
+    11340, 0, 11400, 11447, 23528, 11528, 11538, 11703, 11669, 11842, 12148,
+    12236, 12339, 12390, 13087, 13278, 24497, 26184, 26303, 31353, 13671, 13811,
+    0, 18874, 0, 13850, 14102, 0, 838, 22709, 26382, 26904, 15015, 30295, 24546,
+    15889, 16057, 30206, 8346, 18640, 19128, 16665, 35482, 17134, 17165, 16443,
+    17204, 17302, 19013, 1482, 20946, 1553, 22943, 7848, 15294, 15615, 17412,
+    17622, 22408, 18036, 14747, 18223, 34280, 39369, 14178, 8643, 35678, 35662,
+    0, 18450, 18683, 18965, 29193, 19136, 3192, 22885, 20133, 20358, 1913,
+    36570, 20524, 21135, 22335, 29041, 21145, 21529, 16202, 19111, 21948, 21574,
+    21614, 27474, 0, 13427, 21823, 30258, 21854, 18200, 21858, 21862, 22471,
+    18751, 22621, 20582, 13563, 13260, 0, 22787, 18300, 35144, 23214, 23433,
+    23558, 7568, 22433, 29009, 0, 24834, 31762, 36950, 25010, 20378, 35682,
+    25602, 25674, 23899, 27639, 0, 25732, 6428, 35562, 18934, 25736, 16367,
+    25874, 19392, 26047, 26293, 10011, 37989, 22497, 24981, 23079, 63693, 0,
+    22201, 17697, 26364, 20074, 18740, 38486, 28047, 27837, 13848, 35191, 26521,
+    26734, 25617, 26718, 0, 26823, 31554, 37056, 2577, 26918, 0, 26937, 31301,
+    0, 27130, 39462, 27181, 13919, 25705, 33, 31107, 27188, 27483, 23852, 13593,
+    0, 27549, 18128, 27812, 30011, 34917, 28078, 22710, 14108, 9613, 28747,
+    29133, 15444, 29312, 29317, 37505, 8570, 29323, 37680, 29414, 18896, 27705,
+    38047, 29776, 3832, 34855, 35061, 10534, 33907, 6065, 28344, 18986, 6176,
+    14756, 14009, 0, 0, 17727, 26294, 40109, 39076, 35139, 30668, 30808, 22230,
+    16607, 5642, 14753, 14127, 33000, 5061, 29101, 33638, 31197, 37288, 0,
+    19639, 28847, 35243, 31229, 31242, 31499, 32102, 16762, 31555, 31102, 32777,
+    28597, 41695, 27139, 33560, 21410, 28167, 37823, 26678, 38749, 33135, 32803,
+    27061, 5101, 12847, 32840, 23941, 35888, 32899, 22293, 38947, 35145, 23979,
+    18824, 26046, 27093, 21458, 19109, 16257, 15377, 26422, 32912, 33012, 33070,
+    8097, 33103, 33161, 33199, 33306, 33542, 33583, 33674, 13770, 33896, 34474,
+    18682, 25574, 35158, 30728, 37461, 35256, 17394, 35303, 17375, 35304, 35654,
+    35796, 23032, 35849, 0, 36805, 37100, 0, 37136, 37180, 15863, 37214, 19146,
+    36816, 29327, 22155, 38119, 38377, 38320, 38328, 38706, 39121, 39241, 39274,
+    39363, 39464, 39694, 40282, 40347, 32415, 40696, 40739, 19620, 38215, 41619,
+    29090, 41727, 19857, 36882, 42443, 19868, 3228, 36798, 21953, 36794, 9392,
+    36793, 19091, 17673, 32383, 28502, 27313, 20202, 13540, 35628, 30877, 14138,
+    36480, 6133, 32804, 35692, 35737, 31294, 26287, 15851, 30293, 15543, 22069,
+    22870, 20122, 24193, 25176, 22207, 3693, 36366, 23405, 16008, 19614, 25566,
+    0, 6134, 6267, 25904, 22061, 23626, 21530, 21265, 15814, 40344, 19581,
+    22050, 22046, 32585, 24280, 22901, 15680, 34672, 19996, 4074, 3401, 14010,
+    33047, 40286, 36120, 30267, 40005, 30286, 30649, 37701, 21554, 33096, 33527,
+    22053, 33074, 33816, 32957, 21994, 31074, 22083, 21526, 3741, 13774, 22021,
+    22001, 26353, 33506, 13869, 30004, 22000, 21946, 21655, 21874, 3137, 3222,
+    24272, 20808, 3702, 11362, 3746, 40619, 32090, 21982, 4213, 25245, 38765,
+    21652, 36045, 29174, 37238, 25596, 25529, 25598, 21865, 11075, 40050, 11955,
+    20890, 13535, 3495, 20903, 21581, 21790, 21779, 30310, 36397, 26762, 30129,
+    32950, 34820, 34694, 35015, 33206, 33820, 4289, 17644, 29444, 18182, 23440,
+    33547, 26771, 22139, 9972, 32047, 16803, 32115, 28368, 29366, 37232, 4569,
+    37384, 15612, 42665, 3756, 3833, 29286, 7330, 18254, 20418, 32761, 4075,
+    16634, 40029, 25887, 11680, 18675, 18400, 40316, 4076, 3594, 0, 30115, 4077,
+    0, 24648, 4487, 29091, 32398, 40272, 19994, 19972, 13687, 23309, 27826,
+    21351, 13996, 14812, 21373, 13989, 17944, 22682, 19310, 33325, 21579, 22442,
+    23189, 2425, 0, 14930, 9317, 29556, 40620, 19721, 39917, 15614, 40752,
+    19547, 20393, 38302, 40926, 33884, 15798, 29362, 26547, 14112, 25390, 32037,
+    16119, 15916, 14890, 36872, 21196, 15988, 13946, 17897, 1166, 30272, 23280,
+    3766, 30842, 32558, 22695, 16575, 22140, 39819, 23924, 30292, 42036, 40581,
+    19681, 0, 14331, 24857, 12506, 17394, 0, 22109, 4777, 22439, 18787, 40454,
+    21044, 28846, 13741, 0, 40316, 31830, 39737, 22494, 5996, 23635, 25811,
+    38096, 25397, 29028, 34477, 3368, 27938, 19170, 3441, 0, 20990, 7951, 23950,
+    38659, 7633, 40577, 36940, 31519, 39682, 23761, 31651, 25192, 25397, 39679,
+    31695, 39722, 31870, 0, 31810, 31878, 39957, 31740, 39689, 0, 39963, 18750,
+    40794, 21875, 23491, 20477, 40600, 20466, 21088, 15878, 21201, 22375, 20566,
+    22967, 24082, 38856, 40363, 36700, 21609, 38836, 39232, 38842, 21292, 24880,
+    26924, 21466, 39946, 40194, 19515, 38465, 27008, 20646, 30022, 5997, 39386,
+    21107, 0, 37209, 38529, 37212, 0, 37201, 36503, 25471, 27939, 27338, 22033,
+    37262, 30074, 25221, 1020, 29519, 31856, 23585, 15613, 0, 18713, 30422,
+    39837, 20010, 3284, 33726, 34882, 0, 23626, 27072, 0, 22394, 21023, 24053,
+    20174, 27697, 498, 20281, 21660, 21722, 21146, 36226, 13822, 0, 13811, 0,
+    27474, 37244, 40869, 39831, 38958, 39092, 39610, 40616, 40580, 29050, 31508,
+    0, 27642, 34840, 32632, 0, 22048, 42570, 36471, 40787, 0, 36308, 36431,
+    40476, 36353, 25218, 33661, 36392, 36469, 31443, 19063, 31294, 30936, 27882,
+    35431, 30215, 35418, 40742, 27854, 34774, 30147, 41650, 30803, 63552, 36108,
+    29410, 29553, 35629, 29442, 29937, 36075, 19131, 34351, 24506, 34976, 17591,
+    0, 6203, 28165, 0, 35454, 9499, 0, 24829, 30311, 39639, 40260, 37742, 39823,
+    34805, 0, 0, 36087, 29484, 38689, 39856, 13782, 29362, 19463, 31825, 39242,
+    24921, 24921, 19460, 40598, 24957, 0, 22367, 24943, 25254, 25145, 0, 14940,
+    25058, 21418, 13301, 25444, 26626, 13778, 23895, 35778, 36826, 36409, 0,
+    20697, 7494, 30982, 21298, 38456, 3899, 16485, 0, 30718, 0, 31938, 24346,
+    31962, 31277, 32870, 32867, 32077, 29957, 29938, 35220, 33306, 26380, 32866,
+    29830, 32859, 29936, 33027, 30500, 35209, 26572, 30035, 28369, 34729, 34766,
+    33224, 34700, 35401, 36013, 35651, 30507, 29944, 34010, 13877, 27058, 36262,
+    0, 35241, 0, 28089, 34753, 16401, 29927, 15835, 29046, 24740, 24988, 15569,
+    0, 24695, 0, 32625, 35629, 0, 24809, 19326, 21024, 15384, 15559, 24279,
+    30294, 21809, 6468, 4862, 39171, 28124, 28845, 23745, 25005, 35343, 13943,
+    238, 26694, 20238, 17762, 23327, 25420, 40784, 40614, 25195, 1351, 37595,
+    1503, 16325, 34124, 17077, 29679, 20917, 13897, 18754, 35300, 37700, 6619,
+    33518, 15560, 30780, 26436, 25311, 18739, 35242, 672, 27571, 4869, 20395,
+    9453, 20488, 27945, 31364, 13824, 19121, 9491, 0, 894, 24484, 896, 839,
+    28379, 1055, 0, 20737, 13434, 20750, 39020, 14147, 33814, 18852, 1159,
+    20832, 13236, 20842, 3071, 8444, 741, 9520, 1422, 12851, 6531, 23426, 34685,
+    1459, 15513, 20914, 20920, 40244, 20937, 20943, 20945, 15580, 20947, 19110,
+    20915, 20962, 21314, 20973, 33741, 26942, 14125, 24443, 21003, 21030, 21052,
+    21173, 21079, 21140, 21177, 21189, 31765, 34114, 21216, 34317, 27411, 0,
+    35550, 21833, 28377, 16256, 2388, 16364, 21299, 0, 3042, 27851, 5926, 26651,
+    29653, 24650, 16042, 14540, 5864, 29149, 17570, 21357, 21364, 34475, 21374,
+    0, 5526, 5651, 30694, 21395, 35483, 21408, 21419, 21422, 29607, 22386,
+    16217, 29596, 21441, 21445, 27721, 20041, 22526, 21465, 15019, 2959, 21472,
+    16363, 11683, 21494, 3191, 21523, 28793, 21803, 26199, 27995, 21613, 27475,
+    3444, 21853, 21647, 21668, 18342, 5901, 3805, 15796, 3405, 35260, 9880,
+    21831, 19693, 21551, 29719, 21894, 21929, 0, 6359, 16442, 17746, 17461,
+    26291, 4276, 22071, 26317, 12938, 26276, 26285, 22093, 22095, 30961, 22257,
+    38791, 21502, 22272, 22255, 22253, 35686, 13859, 4687, 22342, 16805, 27758,
+    28811, 22338, 14001, 27774, 22502, 5142, 22531, 5204, 17251, 22566, 19445,
+    22620, 22698, 13665, 22752, 22748, 4668, 22779, 23551, 22339, 41296, 17016,
+    37843, 13729, 22815, 26790, 14019, 28249, 5694, 23076, 21843, 5778, 34053,
+    22985, 3406, 27777, 27946, 6108, 23001, 6139, 6066, 28070, 28017, 6184,
+    5845, 23033, 28229, 23211, 23139, 14054, 18857, 0, 14088, 23190, 29797,
+    23251, 28577, 9556, 15749, 6417, 14130, 5816, 24195, 21200, 23414, 25992,
+    23420, 31246, 16388, 18525, 516, 23509, 24928, 6708, 22988, 1445, 23539,
+    23453, 19728, 23557, 6980, 23571, 29646, 23572, 7333, 27432, 23625, 18653,
+    23685, 23785, 23791, 23947, 7673, 7735, 23824, 23832, 23878, 7844, 23738,
+    24023, 33532, 14381, 18689, 8265, 8563, 33415, 14390, 15298, 24110, 27274,
+    0, 24186, 17596, 3283, 21414, 20151, 0, 21416, 6001, 24073, 24308, 33922,
+    24313, 24315, 14496, 24316, 26686, 37915, 24333, 449, 63636, 15070, 18606,
+    4922, 24378, 26760, 9168, 0, 9329, 24419, 38845, 28270, 24434, 37696, 35382,
+    24487, 23990, 15711, 21072, 8042, 28920, 9832, 37334, 670, 35369, 24625,
+    26245, 6263, 14691, 15815, 13881, 22416, 10164, 31089, 15936, 24734, 0,
+    24755, 18818, 18831, 31315, 29860, 20705, 23200, 24932, 33828, 24898, 63654,
+    28370, 24961, 20980, 1622, 24967, 23466, 16311, 10335, 25043, 35741, 39261,
+    25040, 14642, 10624, 10433, 24611, 24924, 25886, 25483, 280, 25285, 6000,
+    25301, 11789, 25452, 18911, 14871, 25656, 25592, 5006, 6140, 0, 28554,
+    11830, 38932, 16524, 22301, 25825, 25829, 38011, 14950, 25658, 14935, 25933,
+    28438, 18984, 18979, 25989, 25965, 25951, 12414, 26037, 18752, 19255, 26065,
+    16600, 6185, 26080, 26083, 24543, 13312, 26136, 12791, 12792, 26180, 12708,
+    12709, 26187, 3701, 26215, 20966, 26227, 0, 7741, 12849, 34292, 12744,
+    21267, 30661, 10487, 39332, 26370, 17308, 18977, 15147, 27130, 14274, 0,
+    26471, 26466, 16845, 37101, 26583, 17641, 26658, 28240, 37436, 26625, 13286,
+    28064, 26717, 13423, 27105, 27147, 35551, 26995, 26819, 13773, 26881, 26880,
+    15666, 14849, 13884, 15232, 26540, 26977, 35402, 17148, 26934, 27032, 15265,
+    969, 33635, 20624, 27129, 13913, 8490, 27205, 14083, 27293, 15347, 26545,
+    27336, 37276, 15373, 27421, 2339, 24798, 27445, 27508, 10189, 28341, 15067,
+    949, 6488, 14144, 21537, 15194, 27617, 16124, 27612, 27703, 9355, 18673,
+    27473, 27738, 33318, 27769, 15804, 17605, 15805, 16804, 18700, 18688, 15561,
+    14053, 15595, 3378, 39811, 12793, 9361, 32655, 26679, 27941, 28065, 28139,
+    28054, 27996, 28284, 28420, 18815, 16517, 28274, 34099, 28532, 20935, 0, 0,
+    33838, 35617, 0, 15919, 29779, 16258, 31180, 28239, 23185, 12363, 28664,
+    14093, 28573, 15920, 28410, 5271, 16445, 17749, 37872, 28484, 28508, 15694,
+    28532, 37232, 15675, 28575, 16708, 28627, 16529, 16725, 16441, 16368, 16308,
+    16703, 20959, 16726, 16727, 16704, 25053, 28747, 28798, 28839, 28801, 28876,
+    28885, 28886, 28895, 16644, 15848, 29108, 29078, 17015, 28971, 28997, 23176,
+    29002, 0, 23708, 17253, 29007, 37730, 17089, 28972, 17498, 18983, 18978,
+    29114, 35816, 28861, 29198, 37954, 29205, 22801, 37955, 29220, 37697, 22021,
+    29230, 29248, 18804, 26813, 29269, 29271, 15957, 12356, 26637, 28477, 29314,
+    0, 29483, 18467, 34859, 18669, 34820, 29480, 29486, 29647, 29610, 3130,
+    27182, 29641, 29769, 16866, 5863, 18980, 26147, 14021, 18871, 18829, 18939,
+    29687, 29717, 26883, 18982, 29753, 1475, 16087, 0, 10413, 29792, 36530,
+    29767, 29668, 29814, 33721, 29804, 14128, 29812, 37873, 27180, 29826, 18771,
+    19084, 16735, 19065, 35727, 23366, 35843, 6302, 29896, 6536, 29966, 0,
+    29982, 36569, 6731, 23511, 36524, 37765, 30029, 30026, 30055, 30062, 20354,
+    16132, 19731, 30094, 29789, 30110, 30132, 30210, 30252, 30289, 30287, 30319,
+    30326, 25589, 30352, 33263, 14328, 26897, 26894, 30369, 30373, 30391, 30412,
+    28575, 33890, 20637, 20861, 7708, 30494, 30502, 30528, 25775, 21024, 30552,
+    12972, 30639, 35172, 35176, 5825, 30708, 0, 4982, 18962, 26826, 30895,
+    30919, 30931, 38565, 31022, 21984, 30935, 31028, 30897, 30220, 36792, 34948,
+    35627, 24707, 9756, 31110, 35072, 26882, 31104, 22615, 31133, 31545, 31036,
+    31145, 28202, 28966, 16040, 31174, 37133, 31188, 1312, 17503, 21007, 47234,
+    248, 16384, 43296, 1102, 0, 0, 2868, 1, 0, 0, 0, 0, 0, 0, 0, 3072, 64, 0, 0,
+    0, 1024, 88, 60, 0, 0, 23680, 56493, 48115, 17353, 60910, 4004, 49446,
+    30363, 61426, 64478, 63482, 12815, 44868, 61438, 65277, 24593, 176, 8448,
+    33049, 4128, 43144, 8544, 9321, 17408, 50313, 0, 16387, 53, 33859, 20785,
+    26771, 514, 0, 0, 0, 0, 0, 16384, 256, 44160, 33380, 35904, 37025, 20484,
+    54368, 53760, 6186, 26781, 38709, 55375, 8440, 33476, 10268, 30082, 660,
+    16440, 41376, 4293, 19825, 3524, 47512, 23390, 17153, 39327, 30723, 57888,
+    2079, 393, 16585, 775, 39437, 21136, 20433, 892, 8450, 49184, 4974, 46467,
+    62939, 30693, 20368, 39447, 5942, 12, 47726, 12041, 21600, 7680, 26744,
+    28706, 40534, 62245, 46990, 2839, 59119, 6007, 7003, 4289, 36248, 6162,
+    53174, 12545, 6770, 11355, 49334, 57888, 23747, 7042, 56032, 34254, 16598,
+    21673, 53259, 18447, 16452, 2320, 16596, 15278, 7780, 11076, 2071, 33414,
+    6198, 35232, 40167, 2139, 900, 55810, 60560, 34779, 49029, 44450, 36509,
+    39069, 9504, 70, 40774, 58239, 51669, 62596, 19926, 58118, 6326, 2322, 0,
+    1024, 0, 32, 0, 512, 0, 0, 0, 0, 8192, 0, 0, 0, 0, 0, 0, 8, 36352, 28280,
+    16223, 56702, 63293, 39932, 44796, 65490, 27535, 59377, 47807, 28334, 61207,
+    42972, 46654, 30645, 37577, 42455, 19126, 39790, 33209, 26445, 21758, 39921,
+    65122, 21103, 14039, 49150, 17705, 63873, 26045, 17062, 57, 16896, 36704,
+    37888, 16448, 45010, 53719, 219, 39072, 31666, 20998, 38944, 51222, 2365, 0,
+    1, 0, 2561, 2226, 128, 0, 34820, 5152, 19472, 0, 4, 17569, 16, 321, 2048,
+    61504, 20447, 22582, 62961, 32949, 26613, 16512, 20480, 16718, 33992, 23040,
+    55392, 11009, 20481, 5793, 16580, 28402, 44049, 14624, 49348, 1800, 2316,
+    38552, 39876, 7184, 27800, 10886, 422, 4422, 58733, 50379, 37568, 8464,
+    4630, 29341, 27124, 5902, 41514, 62593, 123, 41992, 36875, 11280, 14796,
+    330, 5872, 2571, 3136, 59933, 17420, 17678, 2,
diff --git a/fusl/src/locale/iconv.c b/fusl/src/locale/iconv.c
index 37b4982..147197b 100644
--- a/fusl/src/locale/iconv.c
+++ b/fusl/src/locale/iconv.c
@@ -7,22 +7,22 @@
 #include <stdint.h>
 #include "locale_impl.h"
 
-#define UTF_32BE    0300
-#define UTF_16LE    0301
-#define UTF_16BE    0302
-#define UTF_32LE    0303
-#define UCS2BE      0304
-#define UCS2LE      0305
-#define WCHAR_T     0306
-#define US_ASCII    0307
-#define UTF_8       0310
-#define EUC_JP      0320
-#define SHIFT_JIS   0321
-#define GB18030     0330
-#define GBK         0331
-#define GB2312      0332
-#define BIG5        0340
-#define EUC_KR      0350
+#define UTF_32BE 0300
+#define UTF_16LE 0301
+#define UTF_16BE 0302
+#define UTF_32LE 0303
+#define UCS2BE 0304
+#define UCS2LE 0305
+#define WCHAR_T 0306
+#define US_ASCII 0307
+#define UTF_8 0310
+#define EUC_JP 0320
+#define SHIFT_JIS 0321
+#define GB18030 0330
+#define GBK 0331
+#define GB2312 0332
+#define BIG5 0340
+#define EUC_KR 0350
 
 /* Definitions of charmaps. Each charmap consists of:
  * 1. Empty-string-terminated list of null-terminated aliases.
@@ -30,24 +30,24 @@
  * 3. Character table (size determined by field 2). */
 
 static const unsigned char charmaps[] =
-"utf8\0char\0\0\310"
-"wchart\0\0\306"
-"ucs2\0ucs2be\0\0\304"
-"ucs2le\0\0\305"
-"utf16\0utf16be\0\0\302"
-"utf16le\0\0\301"
-"ucs4\0ucs4be\0utf32\0utf32be\0\0\300"
-"ucs4le\0utf32le\0\0\303"
-"ascii\0usascii\0iso646\0iso646us\0\0\307"
-"eucjp\0\0\320"
-"shiftjis\0sjis\0\0\321"
-"gb18030\0\0\330"
-"gbk\0\0\331"
-"gb2312\0\0\332"
-"big5\0bigfive\0cp950\0big5hkscs\0\0\340"
-"euckr\0ksc5601\0ksx1001\0cp949\0\0\350"
+    "utf8\0char\0\0\310"
+    "wchart\0\0\306"
+    "ucs2\0ucs2be\0\0\304"
+    "ucs2le\0\0\305"
+    "utf16\0utf16be\0\0\302"
+    "utf16le\0\0\301"
+    "ucs4\0ucs4be\0utf32\0utf32be\0\0\300"
+    "ucs4le\0utf32le\0\0\303"
+    "ascii\0usascii\0iso646\0iso646us\0\0\307"
+    "eucjp\0\0\320"
+    "shiftjis\0sjis\0\0\321"
+    "gb18030\0\0\330"
+    "gbk\0\0\331"
+    "gb2312\0\0\332"
+    "big5\0bigfive\0cp950\0big5hkscs\0\0\340"
+    "euckr\0ksc5601\0ksx1001\0cp949\0\0\350"
 #include "codepages.h"
-;
+    ;
 
 static const unsigned short legacy_chars[] = {
 #include "legacychars.h"
@@ -73,383 +73,449 @@
 #include "ksc.h"
 };
 
-static int fuzzycmp(const unsigned char *a, const unsigned char *b)
-{
-	for (; *a && *b; a++, b++) {
-		while (*a && (*a|32U)-'a'>26 && *a-'0'>10U) a++;
-		if ((*a|32U) != *b) return 1;
-	}
-	return *a != *b;
+static int fuzzycmp(const unsigned char* a, const unsigned char* b) {
+  for (; *a && *b; a++, b++) {
+    while (*a && (*a | 32U) - 'a' > 26 && *a - '0' > 10U)
+      a++;
+    if ((*a | 32U) != *b)
+      return 1;
+  }
+  return *a != *b;
 }
 
-static size_t find_charmap(const void *name)
-{
-	const unsigned char *s;
-	if (!*(char *)name) name=charmaps; /* "utf8" */
-	for (s=charmaps; *s; ) {
-		if (!fuzzycmp(name, s)) {
-			for (; *s; s+=strlen((void *)s)+1);
-			return s+1-charmaps;
-		}
-		s += strlen((void *)s)+1;
-		if (!*s) {
-			if (s[1] > 0200) s+=2;
-			else s+=2+(128U-s[1])/4*5;
-		}
-	}
-	return -1;
+static size_t find_charmap(const void* name) {
+  const unsigned char* s;
+  if (!*(char*)name)
+    name = charmaps; /* "utf8" */
+  for (s = charmaps; *s;) {
+    if (!fuzzycmp(name, s)) {
+      for (; *s; s += strlen((void*)s) + 1)
+        ;
+      return s + 1 - charmaps;
+    }
+    s += strlen((void*)s) + 1;
+    if (!*s) {
+      if (s[1] > 0200)
+        s += 2;
+      else
+        s += 2 + (128U - s[1]) / 4 * 5;
+    }
+  }
+  return -1;
 }
 
-iconv_t iconv_open(const char *to, const char *from)
-{
-	size_t f, t;
+iconv_t iconv_open(const char* to, const char* from) {
+  size_t f, t;
 
-	if ((t = find_charmap(to))==-1
-	 || (f = find_charmap(from))==-1
-	 || (charmaps[t] >= 0320)) {
-		errno = EINVAL;
-		return (iconv_t)-1;
-	}
+  if ((t = find_charmap(to)) == -1 || (f = find_charmap(from)) == -1 ||
+      (charmaps[t] >= 0320)) {
+    errno = EINVAL;
+    return (iconv_t)-1;
+  }
 
-	return (void *)(f<<16 | t);
+  return (void*)(f << 16 | t);
 }
 
-int iconv_close(iconv_t cd)
-{
-	return 0;
+int iconv_close(iconv_t cd) {
+  return 0;
 }
 
-static unsigned get_16(const unsigned char *s, int e)
-{
-	e &= 1;
-	return s[e]<<8 | s[1-e];
+static unsigned get_16(const unsigned char* s, int e) {
+  e &= 1;
+  return s[e] << 8 | s[1 - e];
 }
 
-static void put_16(unsigned char *s, unsigned c, int e)
-{
-	e &= 1;
-	s[e] = c>>8;
-	s[1-e] = c;
+static void put_16(unsigned char* s, unsigned c, int e) {
+  e &= 1;
+  s[e] = c >> 8;
+  s[1 - e] = c;
 }
 
-static unsigned get_32(const unsigned char *s, int e)
-{
-	e &= 3;
-	return ((unsigned)s[e])<<24 | s[e^1]<<16 | s[e^2]<<8 | s[e^3];
+static unsigned get_32(const unsigned char* s, int e) {
+  e &= 3;
+  return ((unsigned)s[e]) << 24 | s[e ^ 1] << 16 | s[e ^ 2] << 8 | s[e ^ 3];
 }
 
-static void put_32(unsigned char *s, unsigned c, int e)
-{
-	e &= 3;
-	s[e^0] = c>>24;
-	s[e^1] = c>>16;
-	s[e^2] = c>>8;
-	s[e^3] = c;
+static void put_32(unsigned char* s, unsigned c, int e) {
+  e &= 3;
+  s[e ^ 0] = c >> 24;
+  s[e ^ 1] = c >> 16;
+  s[e ^ 2] = c >> 8;
+  s[e ^ 3] = c;
 }
 
 /* Adapt as needed */
 #define mbrtowc_utf8 mbrtowc
 #define wctomb_utf8 wctomb
 
-size_t iconv(iconv_t cd0, char **restrict in, size_t *restrict inb, char **restrict out, size_t *restrict outb)
-{
-	size_t x=0;
-	unsigned long cd = (unsigned long)cd0;
-	unsigned to = cd & 0xffff;
-	unsigned from = cd >> 16;
-	const unsigned char *map = charmaps+from+1;
-	const unsigned char *tomap = charmaps+to+1;
-	mbstate_t st = {0};
-	wchar_t wc;
-	unsigned c, d;
-	size_t k, l;
-	int err;
-	unsigned char type = map[-1];
-	unsigned char totype = tomap[-1];
-	locale_t *ploc = &CURRENT_LOCALE, loc = *ploc;
+size_t iconv(iconv_t cd0,
+             char** restrict in,
+             size_t* restrict inb,
+             char** restrict out,
+             size_t* restrict outb) {
+  size_t x = 0;
+  unsigned long cd = (unsigned long)cd0;
+  unsigned to = cd & 0xffff;
+  unsigned from = cd >> 16;
+  const unsigned char* map = charmaps + from + 1;
+  const unsigned char* tomap = charmaps + to + 1;
+  mbstate_t st = {0};
+  wchar_t wc;
+  unsigned c, d;
+  size_t k, l;
+  int err;
+  unsigned char type = map[-1];
+  unsigned char totype = tomap[-1];
+  locale_t *ploc = &CURRENT_LOCALE, loc = *ploc;
 
-	if (!in || !*in || !*inb) return 0;
+  if (!in || !*in || !*inb)
+    return 0;
 
-	*ploc = UTF8_LOCALE;
+  *ploc = UTF8_LOCALE;
 
-	for (; *inb; *in+=l, *inb-=l) {
-		c = *(unsigned char *)*in;
-		l = 1;
+  for (; *inb; *in += l, *inb -= l) {
+    c = *(unsigned char*)*in;
+    l = 1;
 
-		if (c >= 128 || type-UTF_32BE < 7U) switch (type) {
-		case UTF_8:
-			l = mbrtowc_utf8(&wc, *in, *inb, &st);
-			if (!l) l++;
-			else if (l == (size_t)-1) goto ilseq;
-			else if (l == (size_t)-2) goto starved;
-			c = wc;
-			break;
-		case US_ASCII:
-			goto ilseq;
-		case WCHAR_T:
-			l = sizeof(wchar_t);
-			if (*inb < l) goto starved;
-			c = *(wchar_t *)*in;
-			if (0) {
-		case UTF_32BE:
-		case UTF_32LE:
-			l = 4;
-			if (*inb < 4) goto starved;
-			c = get_32((void *)*in, type);
-			}
-			if (c-0xd800u < 0x800u || c >= 0x110000u) goto ilseq;
-			break;
-		case UCS2BE:
-		case UCS2LE:
-		case UTF_16BE:
-		case UTF_16LE:
-			l = 2;
-			if (*inb < 2) goto starved;
-			c = get_16((void *)*in, type);
-			if ((unsigned)(c-0xdc00) < 0x400) goto ilseq;
-			if ((unsigned)(c-0xd800) < 0x400) {
-				if (type-UCS2BE < 2U) goto ilseq;
-				l = 4;
-				if (*inb < 4) goto starved;
-				d = get_16((void *)(*in + 2), type);
-				if ((unsigned)(d-0xdc00) >= 0x400) goto ilseq;
-				c = ((c-0xd7c0)<<10) + (d-0xdc00);
-			}
-			break;
-		case SHIFT_JIS:
-			if (c-0xa1 <= 0xdf-0xa1) {
-				c += 0xff61-0xa1;
-				break;
-			}
-			l = 2;
-			if (*inb < 2) goto starved;
-			d = *((unsigned char *)*in + 1);
-			if (c-129 <= 159-129) c -= 129;
-			else if (c-224 <= 239-224) c -= 193;
-			else goto ilseq;
-			c *= 2;
-			if (d-64 <= 158-64) {
-				if (d==127) goto ilseq;
-				if (d>127) d--;
-				d -= 64;
-			} else if (d-159 <= 252-159) {
-				c++;
-				d -= 159;
-			}
-			c = jis0208[c][d];
-			if (!c) goto ilseq;
-			break;
-		case EUC_JP:
-			l = 2;
-			if (*inb < 2) goto starved;
-			d = *((unsigned char *)*in + 1);
-			if (c==0x8e) {
-				c = d;
-				if (c-0xa1 > 0xdf-0xa1) goto ilseq;
-				c += 0xff61 - 0xa1;
-				break;
-			}
-			c -= 0xa1;
-			d -= 0xa1;
-			if (c >= 84 || d >= 94) goto ilseq;
-			c = jis0208[c][d];
-			if (!c) goto ilseq;
-			break;
-		case GB2312:
-			if (c < 0xa1) goto ilseq;
-		case GBK:
-		case GB18030:
-			c -= 0x81;
-			if (c >= 126) goto ilseq;
-			l = 2;
-			if (*inb < 2) goto starved;
-			d = *((unsigned char *)*in + 1);
-			if (d < 0xa1 && type == GB2312) goto ilseq;
-			if (d-0x40>=191 || d==127) {
-				if (d-'0'>9 || type != GB18030)
-					goto ilseq;
-				l = 4;
-				if (*inb < 4) goto starved;
-				c = (10*c + d-'0') * 1260;
-				d = *((unsigned char *)*in + 2);
-				if (d-0x81>126) goto ilseq;
-				c += 10*(d-0x81);
-				d = *((unsigned char *)*in + 3);
-				if (d-'0'>9) goto ilseq;
-				c += d-'0';
-				c += 128;
-				for (d=0; d<=c; ) {
-					k = 0;
-					for (int i=0; i<126; i++)
-						for (int j=0; j<190; j++)
-							if (gb18030[i][j]-d <= c-d)
-								k++;
-					d = c+1;
-					c += k;
-				}
-				break;
-			}
-			d -= 0x40;
-			if (d>63) d--;
-			c = gb18030[c][d];
-			break;
-		case BIG5:
-			l = 2;
-			if (*inb < 2) goto starved;
-			d = *((unsigned char *)*in + 1);
-			if (d-0x40>=0xff-0x40 || d-0x7f<0xa1-0x7f) goto ilseq;
-			d -= 0x40;
-			if (d > 0x3e) d -= 0x22;
-			if (c-0xa1>=0xfa-0xa1) {
-				if (c-0x87>=0xff-0x87) goto ilseq;
-				if (c < 0xa1) c -= 0x87;
-				else c -= 0x87 + (0xfa-0xa1);
-				c = (hkscs[4867+(c*157+d)/16]>>(c*157+d)%16)%2<<17
-					| hkscs[c*157+d];
-				/* A few HKSCS characters map to pairs of UCS
-				 * characters. These are mapped to surrogate
-				 * range in the hkscs table then hard-coded
-				 * here. Ugly, yes. */
-				if (c/256 == 0xdc) {
-					if (totype-0300U > 8) k = 2;
-					else k = "\10\4\4\10\4\4\10\2\4"[totype-0300];
-					if (k > *outb) goto toobig;
-					x += iconv((iconv_t)(uintptr_t)to,
-						&(char *){&"\303\212\314\204"
-						"\303\212\314\214"
-						"\303\252\314\204"
-						"\303\252\314\214"
-						[c%256]}, &(size_t){4},
-						out, outb);
-					continue;
-				}
-				if (!c) goto ilseq;
-				break;
-			}
-			c -= 0xa1;
-			c = big5[c][d]|(c==0x27&&(d==0x3a||d==0x3c||d==0x42))<<17;
-			if (!c) goto ilseq;
-			break;
-		case EUC_KR:
-			l = 2;
-			if (*inb < 2) goto starved;
-			d = *((unsigned char *)*in + 1);
-			c -= 0xa1;
-			d -= 0xa1;
-			if (c >= 93 || d >= 94) {
-				c += (0xa1-0x81);
-				d += 0xa1;
-				if (c >= 93 || (c>=0xc6-0x81 && d>0x52))
-					goto ilseq;
-				if (d-'A'<26) d = d-'A';
-				else if (d-'a'<26) d = d-'a'+26;
-				else if (d-0x81<0xff-0x81) d = d-0x81+52;
-				else goto ilseq;
-				if (c < 0x20) c = 178*c + d;
-				else c = 178*0x20 + 84*(c-0x20) + d;
-				c += 0xac00;
-				for (d=0xac00; d<=c; ) {
-					k = 0;
-					for (int i=0; i<93; i++)
-						for (int j=0; j<94; j++)
-							if (ksc[i][j]-d <= c-d)
-								k++;
-					d = c+1;
-					c += k;
-				}
-				break;
-			}
-			c = ksc[c][d];
-			if (!c) goto ilseq;
-			break;
-		default:
-			if (c < 128+type) break;
-			c -= 128+type;
-			c = legacy_chars[ (map[c*5/4]>>(2*c%8)) |
-				((map[c*5/4+1]<<(8-2*c%8)) & 1023) ];
-			if (!c) c = *(unsigned char *)*in;
-			if (c==1) goto ilseq;
-		}
+    if (c >= 128 || type - UTF_32BE < 7U)
+      switch (type) {
+        case UTF_8:
+          l = mbrtowc_utf8(&wc, *in, *inb, &st);
+          if (!l)
+            l++;
+          else if (l == (size_t)-1)
+            goto ilseq;
+          else if (l == (size_t)-2)
+            goto starved;
+          c = wc;
+          break;
+        case US_ASCII:
+          goto ilseq;
+        case WCHAR_T:
+          l = sizeof(wchar_t);
+          if (*inb < l)
+            goto starved;
+          c = *(wchar_t*)*in;
+          if (0) {
+            case UTF_32BE:
+            case UTF_32LE:
+              l = 4;
+              if (*inb < 4)
+                goto starved;
+              c = get_32((void*)*in, type);
+          }
+          if (c - 0xd800u < 0x800u || c >= 0x110000u)
+            goto ilseq;
+          break;
+        case UCS2BE:
+        case UCS2LE:
+        case UTF_16BE:
+        case UTF_16LE:
+          l = 2;
+          if (*inb < 2)
+            goto starved;
+          c = get_16((void*)*in, type);
+          if ((unsigned)(c - 0xdc00) < 0x400)
+            goto ilseq;
+          if ((unsigned)(c - 0xd800) < 0x400) {
+            if (type - UCS2BE < 2U)
+              goto ilseq;
+            l = 4;
+            if (*inb < 4)
+              goto starved;
+            d = get_16((void*)(*in + 2), type);
+            if ((unsigned)(d - 0xdc00) >= 0x400)
+              goto ilseq;
+            c = ((c - 0xd7c0) << 10) + (d - 0xdc00);
+          }
+          break;
+        case SHIFT_JIS:
+          if (c - 0xa1 <= 0xdf - 0xa1) {
+            c += 0xff61 - 0xa1;
+            break;
+          }
+          l = 2;
+          if (*inb < 2)
+            goto starved;
+          d = *((unsigned char*)*in + 1);
+          if (c - 129 <= 159 - 129)
+            c -= 129;
+          else if (c - 224 <= 239 - 224)
+            c -= 193;
+          else
+            goto ilseq;
+          c *= 2;
+          if (d - 64 <= 158 - 64) {
+            if (d == 127)
+              goto ilseq;
+            if (d > 127)
+              d--;
+            d -= 64;
+          } else if (d - 159 <= 252 - 159) {
+            c++;
+            d -= 159;
+          }
+          c = jis0208[c][d];
+          if (!c)
+            goto ilseq;
+          break;
+        case EUC_JP:
+          l = 2;
+          if (*inb < 2)
+            goto starved;
+          d = *((unsigned char*)*in + 1);
+          if (c == 0x8e) {
+            c = d;
+            if (c - 0xa1 > 0xdf - 0xa1)
+              goto ilseq;
+            c += 0xff61 - 0xa1;
+            break;
+          }
+          c -= 0xa1;
+          d -= 0xa1;
+          if (c >= 84 || d >= 94)
+            goto ilseq;
+          c = jis0208[c][d];
+          if (!c)
+            goto ilseq;
+          break;
+        case GB2312:
+          if (c < 0xa1)
+            goto ilseq;
+        case GBK:
+        case GB18030:
+          c -= 0x81;
+          if (c >= 126)
+            goto ilseq;
+          l = 2;
+          if (*inb < 2)
+            goto starved;
+          d = *((unsigned char*)*in + 1);
+          if (d < 0xa1 && type == GB2312)
+            goto ilseq;
+          if (d - 0x40 >= 191 || d == 127) {
+            if (d - '0' > 9 || type != GB18030)
+              goto ilseq;
+            l = 4;
+            if (*inb < 4)
+              goto starved;
+            c = (10 * c + d - '0') * 1260;
+            d = *((unsigned char*)*in + 2);
+            if (d - 0x81 > 126)
+              goto ilseq;
+            c += 10 * (d - 0x81);
+            d = *((unsigned char*)*in + 3);
+            if (d - '0' > 9)
+              goto ilseq;
+            c += d - '0';
+            c += 128;
+            for (d = 0; d <= c;) {
+              k = 0;
+              for (int i = 0; i < 126; i++)
+                for (int j = 0; j < 190; j++)
+                  if (gb18030[i][j] - d <= c - d)
+                    k++;
+              d = c + 1;
+              c += k;
+            }
+            break;
+          }
+          d -= 0x40;
+          if (d > 63)
+            d--;
+          c = gb18030[c][d];
+          break;
+        case BIG5:
+          l = 2;
+          if (*inb < 2)
+            goto starved;
+          d = *((unsigned char*)*in + 1);
+          if (d - 0x40 >= 0xff - 0x40 || d - 0x7f < 0xa1 - 0x7f)
+            goto ilseq;
+          d -= 0x40;
+          if (d > 0x3e)
+            d -= 0x22;
+          if (c - 0xa1 >= 0xfa - 0xa1) {
+            if (c - 0x87 >= 0xff - 0x87)
+              goto ilseq;
+            if (c < 0xa1)
+              c -= 0x87;
+            else
+              c -= 0x87 + (0xfa - 0xa1);
+            c = (hkscs[4867 + (c * 157 + d) / 16] >> (c * 157 + d) % 16) % 2
+                    << 17 |
+                hkscs[c * 157 + d];
+            /* A few HKSCS characters map to pairs of UCS
+             * characters. These are mapped to surrogate
+             * range in the hkscs table then hard-coded
+             * here. Ugly, yes. */
+            if (c / 256 == 0xdc) {
+              if (totype - 0300U > 8)
+                k = 2;
+              else
+                k = "\10\4\4\10\4\4\10\2\4"[totype - 0300];
+              if (k > *outb)
+                goto toobig;
+              x += iconv((iconv_t)(uintptr_t)to,
+                         &(char*){&"\303\212\314\204"
+                                   "\303\212\314\214"
+                                   "\303\252\314\204"
+                                   "\303\252\314\214"[c % 256]},
+                         &(size_t){4}, out, outb);
+              continue;
+            }
+            if (!c)
+              goto ilseq;
+            break;
+          }
+          c -= 0xa1;
+          c = big5[c][d] |
+              (c == 0x27 && (d == 0x3a || d == 0x3c || d == 0x42)) << 17;
+          if (!c)
+            goto ilseq;
+          break;
+        case EUC_KR:
+          l = 2;
+          if (*inb < 2)
+            goto starved;
+          d = *((unsigned char*)*in + 1);
+          c -= 0xa1;
+          d -= 0xa1;
+          if (c >= 93 || d >= 94) {
+            c += (0xa1 - 0x81);
+            d += 0xa1;
+            if (c >= 93 || (c >= 0xc6 - 0x81 && d > 0x52))
+              goto ilseq;
+            if (d - 'A' < 26)
+              d = d - 'A';
+            else if (d - 'a' < 26)
+              d = d - 'a' + 26;
+            else if (d - 0x81 < 0xff - 0x81)
+              d = d - 0x81 + 52;
+            else
+              goto ilseq;
+            if (c < 0x20)
+              c = 178 * c + d;
+            else
+              c = 178 * 0x20 + 84 * (c - 0x20) + d;
+            c += 0xac00;
+            for (d = 0xac00; d <= c;) {
+              k = 0;
+              for (int i = 0; i < 93; i++)
+                for (int j = 0; j < 94; j++)
+                  if (ksc[i][j] - d <= c - d)
+                    k++;
+              d = c + 1;
+              c += k;
+            }
+            break;
+          }
+          c = ksc[c][d];
+          if (!c)
+            goto ilseq;
+          break;
+        default:
+          if (c < 128 + type)
+            break;
+          c -= 128 + type;
+          c = legacy_chars[(map[c * 5 / 4] >> (2 * c % 8)) |
+                           ((map[c * 5 / 4 + 1] << (8 - 2 * c % 8)) & 1023)];
+          if (!c)
+            c = *(unsigned char*)*in;
+          if (c == 1)
+            goto ilseq;
+      }
 
-		switch (totype) {
-		case WCHAR_T:
-			if (*outb < sizeof(wchar_t)) goto toobig;
-			*(wchar_t *)*out = c;
-			*out += sizeof(wchar_t);
-			*outb -= sizeof(wchar_t);
-			break;
-		case UTF_8:
-			if (*outb < 4) {
-				char tmp[4];
-				k = wctomb_utf8(tmp, c);
-				if (*outb < k) goto toobig;
-				memcpy(*out, tmp, k);
-			} else k = wctomb_utf8(*out, c);
-			*out += k;
-			*outb -= k;
-			break;
-		case US_ASCII:
-			if (c > 0x7f) subst: x++, c='*';
-		default:
-			if (*outb < 1) goto toobig;
-			if (c < 128+totype) {
-			revout:
-				*(*out)++ = c;
-				*outb -= 1;
-				break;
-			}
-			d = c;
-			for (c=0; c<128-totype; c++) {
-				if (d == legacy_chars[ (tomap[c*5/4]>>(2*c%8)) |
-					((tomap[c*5/4+1]<<(8-2*c%8)) & 1023) ]) {
-					c += 128;
-					goto revout;
-				}
-			}
-			goto subst;
-		case UCS2BE:
-		case UCS2LE:
-		case UTF_16BE:
-		case UTF_16LE:
-			if (c < 0x10000 || type-UCS2BE < 2U) {
-				if (c >= 0x10000) c = 0xFFFD;
-				if (*outb < 2) goto toobig;
-				put_16((void *)*out, c, totype);
-				*out += 2;
-				*outb -= 2;
-				break;
-			}
-			if (*outb < 4) goto toobig;
-			c -= 0x10000;
-			put_16((void *)*out, (c>>10)|0xd800, totype);
-			put_16((void *)(*out + 2), (c&0x3ff)|0xdc00, totype);
-			*out += 4;
-			*outb -= 4;
-			break;
-		case UTF_32BE:
-		case UTF_32LE:
-			if (*outb < 4) goto toobig;
-			put_32((void *)*out, c, totype);
-			*out += 4;
-			*outb -= 4;
-			break;
-		}
-	}
-	*ploc = loc;
-	return x;
+    switch (totype) {
+      case WCHAR_T:
+        if (*outb < sizeof(wchar_t))
+          goto toobig;
+        *(wchar_t*)*out = c;
+        *out += sizeof(wchar_t);
+        *outb -= sizeof(wchar_t);
+        break;
+      case UTF_8:
+        if (*outb < 4) {
+          char tmp[4];
+          k = wctomb_utf8(tmp, c);
+          if (*outb < k)
+            goto toobig;
+          memcpy(*out, tmp, k);
+        } else
+          k = wctomb_utf8(*out, c);
+        *out += k;
+        *outb -= k;
+        break;
+      case US_ASCII:
+        if (c > 0x7f)
+        subst:
+        x++, c = '*';
+      default:
+        if (*outb < 1)
+          goto toobig;
+        if (c < 128 + totype) {
+        revout:
+          *(*out)++ = c;
+          *outb -= 1;
+          break;
+        }
+        d = c;
+        for (c = 0; c < 128 - totype; c++) {
+          if (d == legacy_chars[(tomap[c * 5 / 4] >> (2 * c % 8)) |
+                                ((tomap[c * 5 / 4 + 1] << (8 - 2 * c % 8)) &
+                                 1023)]) {
+            c += 128;
+            goto revout;
+          }
+        }
+        goto subst;
+      case UCS2BE:
+      case UCS2LE:
+      case UTF_16BE:
+      case UTF_16LE:
+        if (c < 0x10000 || type - UCS2BE < 2U) {
+          if (c >= 0x10000)
+            c = 0xFFFD;
+          if (*outb < 2)
+            goto toobig;
+          put_16((void*)*out, c, totype);
+          *out += 2;
+          *outb -= 2;
+          break;
+        }
+        if (*outb < 4)
+          goto toobig;
+        c -= 0x10000;
+        put_16((void*)*out, (c >> 10) | 0xd800, totype);
+        put_16((void*)(*out + 2), (c & 0x3ff) | 0xdc00, totype);
+        *out += 4;
+        *outb -= 4;
+        break;
+      case UTF_32BE:
+      case UTF_32LE:
+        if (*outb < 4)
+          goto toobig;
+        put_32((void*)*out, c, totype);
+        *out += 4;
+        *outb -= 4;
+        break;
+    }
+  }
+  *ploc = loc;
+  return x;
 ilseq:
-	err = EILSEQ;
-	x = -1;
-	goto end;
+  err = EILSEQ;
+  x = -1;
+  goto end;
 toobig:
-	err = E2BIG;
-	x = -1;
-	goto end;
+  err = E2BIG;
+  x = -1;
+  goto end;
 starved:
-	err = EINVAL;
-	x = -1;
+  err = EINVAL;
+  x = -1;
 end:
-	errno = err;
-	*ploc = loc;
-	return x;
+  errno = err;
+  *ploc = loc;
+  return x;
 }
diff --git a/fusl/src/locale/jis0208.h b/fusl/src/locale/jis0208.h
index f465b9d..d0c656c 100644
--- a/fusl/src/locale/jis0208.h
+++ b/fusl/src/locale/jis0208.h
@@ -1,550 +1,660 @@
-12288,12289,12290,65292,65294,12539,65306,65307,65311,65281,12443,12444,180,
-65344,168,65342,65507,65343,12541,12542,12445,12446,12291,20189,12293,12294,
-12295,12540,8213,8208,65295,92,12316,8214,65372,8230,8229,8216,8217,8220,8221,
-65288,65289,12308,12309,65339,65341,65371,65373,12296,12297,12298,12299,12300,
-12301,12302,12303,12304,12305,65291,8722,177,215,247,65309,8800,65308,65310,
-8806,8807,8734,8756,9794,9792,176,8242,8243,8451,65509,65284,162,163,65285,
-65283,65286,65290,65312,167,9734,9733,9675,9679,9678,9671,9670,9633,9632,9651,
-9650,9661,9660,8251,12306,8594,8592,8593,8595,12307,0,0,0,0,0,0,0,0,0,0,0,
-8712,8715,8838,8839,8834,8835,8746,8745,0,0,0,0,0,0,0,0,8743,8744,172,8658,
-8660,8704,8707,0,0,0,0,0,0,0,0,0,0,0,8736,8869,8978,8706,8711,8801,8786,8810,
-8811,8730,8765,8733,8757,8747,8748,0,0,0,0,0,0,0,8491,8240,9839,9837,9834,
-8224,8225,182,0,0,0,0,9711,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65296,65297,65298,
-65299,65300,65301,65302,65303,65304,65305,0,0,0,0,0,0,0,65313,65314,65315,
-65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,65326,65327,65328,
-65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,0,0,0,0,0,0,65345,
-65346,65347,65348,65349,65350,65351,65352,65353,65354,65355,65356,65357,65358,
-65359,65360,65361,65362,65363,65364,65365,65366,65367,65368,65369,65370,0,0,0,
-0,12353,12354,12355,12356,12357,12358,12359,12360,12361,12362,12363,12364,
-12365,12366,12367,12368,12369,12370,12371,12372,12373,12374,12375,12376,12377,
-12378,12379,12380,12381,12382,12383,12384,12385,12386,12387,12388,12389,12390,
-12391,12392,12393,12394,12395,12396,12397,12398,12399,12400,12401,12402,12403,
-12404,12405,12406,12407,12408,12409,12410,12411,12412,12413,12414,12415,12416,
-12417,12418,12419,12420,12421,12422,12423,12424,12425,12426,12427,12428,12429,
-12430,12431,12432,12433,12434,12435,0,0,0,0,0,0,0,0,0,0,0,12449,12450,12451,
-12452,12453,12454,12455,12456,12457,12458,12459,12460,12461,12462,12463,12464,
-12465,12466,12467,12468,12469,12470,12471,12472,12473,12474,12475,12476,12477,
-12478,12479,12480,12481,12482,12483,12484,12485,12486,12487,12488,12489,12490,
-12491,12492,12493,12494,12495,12496,12497,12498,12499,12500,12501,12502,12503,
-12504,12505,12506,12507,12508,12509,12510,12511,12512,12513,12514,12515,12516,
-12517,12518,12519,12520,12521,12522,12523,12524,12525,12526,12527,12528,12529,
-12530,12531,12532,12533,12534,0,0,0,0,0,0,0,0,913,914,915,916,917,918,919,920,
-921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,0,0,0,0,0,0,0,
-0,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,964,
-965,966,967,968,969,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,
-1051,1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,
-1066,1067,1068,1069,1070,1071,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1072,1073,1074,
-1075,1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,
-1089,1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,0,
-0,0,0,0,0,0,0,0,0,0,0,0,9472,9474,9484,9488,9496,9492,9500,9516,9508,9524,
-9532,9473,9475,9487,9491,9499,9495,9507,9523,9515,9531,9547,9504,9519,9512,
-9527,9535,9501,9520,9509,9528,9538,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20124,
-21782,23043,38463,21696,24859,25384,23030,36898,33909,33564,31312,24746,25569,
-28197,26093,33894,33446,39925,26771,22311,26017,25201,23451,22992,34427,39156,
-32098,32190,39822,25110,31903,34999,23433,24245,25353,26263,26696,38343,38797,
-26447,20197,20234,20301,20381,20553,22258,22839,22996,23041,23561,24799,24847,
-24944,26131,26885,28858,30031,30064,31227,32173,32239,32963,33806,34915,35586,
-36949,36986,21307,20117,20133,22495,32946,37057,30959,19968,22769,28322,36920,
-31282,33576,33419,39983,20801,21360,21693,21729,22240,23035,24341,39154,28139,
-32996,34093,38498,38512,38560,38907,21515,21491,23431,28879,32701,36802,38632,
-21359,40284,31418,19985,30867,33276,28198,22040,21764,27421,34074,39995,23013,
-21417,28006,29916,38287,22082,20113,36939,38642,33615,39180,21473,21942,23344,
-24433,26144,26355,26628,27704,27891,27945,29787,30408,31310,38964,33521,34907,
-35424,37613,28082,30123,30410,39365,24742,35585,36234,38322,27022,21421,20870,
-22290,22576,22852,23476,24310,24616,25513,25588,27839,28436,28814,28948,29017,
-29141,29503,32257,33398,33489,34199,36960,37467,40219,22633,26044,27738,29989,
-20985,22830,22885,24448,24540,25276,26106,27178,27431,27572,29579,32705,35158,
-40236,40206,40644,23713,27798,33659,20740,23627,25014,33222,26742,29281,20057,
-20474,21368,24681,28201,31311,38899,19979,21270,20206,20309,20285,20385,20339,
-21152,21487,22025,22799,23233,23478,23521,31185,26247,26524,26550,27468,27827,
-28779,29634,31117,31166,31292,31623,33457,33499,33540,33655,33775,33747,34662,
-35506,22057,36008,36838,36942,38686,34442,20420,23784,25105,29273,30011,33253,
-33469,34558,36032,38597,39187,39381,20171,20250,35299,22238,22602,22730,24315,
-24555,24618,24724,24674,25040,25106,25296,25913,39745,26214,26800,28023,28784,
-30028,30342,32117,33445,34809,38283,38542,35997,20977,21182,22806,21683,23475,
-23830,24936,27010,28079,30861,33995,34903,35442,37799,39608,28012,39336,34521,
-22435,26623,34510,37390,21123,22151,21508,24275,25313,25785,26684,26680,27579,
-29554,30906,31339,35226,35282,36203,36611,37101,38307,38548,38761,23398,23731,
-27005,38989,38990,25499,31520,27179,27263,26806,39949,28511,21106,21917,24688,
-25324,27963,28167,28369,33883,35088,36676,19988,39993,21494,26907,27194,38788,
-26666,20828,31427,33970,37340,37772,22107,40232,26658,33541,33841,31909,21000,
-33477,29926,20094,20355,20896,23506,21002,21208,21223,24059,21914,22570,23014,
-23436,23448,23515,24178,24185,24739,24863,24931,25022,25563,25954,26577,26707,
-26874,27454,27475,27735,28450,28567,28485,29872,29976,30435,30475,31487,31649,
-31777,32233,32566,32752,32925,33382,33694,35251,35532,36011,36996,37969,38291,
-38289,38306,38501,38867,39208,33304,20024,21547,23736,24012,29609,30284,30524,
-23721,32747,36107,38593,38929,38996,39000,20225,20238,21361,21916,22120,22522,
-22855,23305,23492,23696,24076,24190,24524,25582,26426,26071,26082,26399,26827,
-26820,27231,24112,27589,27671,27773,30079,31048,23395,31232,32000,24509,35215,
-35352,36020,36215,36556,36637,39138,39438,39740,20096,20605,20736,22931,23452,
-25135,25216,25836,27450,29344,30097,31047,32681,34811,35516,35696,25516,33738,
-38816,21513,21507,21931,26708,27224,35440,30759,26485,40653,21364,23458,33050,
-34384,36870,19992,20037,20167,20241,21450,21560,23470,24339,24613,25937,26429,
-27714,27762,27875,28792,29699,31350,31406,31496,32026,31998,32102,26087,29275,
-21435,23621,24040,25298,25312,25369,28192,34394,35377,36317,37624,28417,31142,
-39770,20136,20139,20140,20379,20384,20689,20807,31478,20849,20982,21332,21281,
-21375,21483,21932,22659,23777,24375,24394,24623,24656,24685,25375,25945,27211,
-27841,29378,29421,30703,33016,33029,33288,34126,37111,37857,38911,39255,39514,
-20208,20957,23597,26241,26989,23616,26354,26997,29577,26704,31873,20677,21220,
-22343,24062,37670,26020,27427,27453,29748,31105,31165,31563,32202,33465,33740,
-34943,35167,35641,36817,37329,21535,37504,20061,20534,21477,21306,29399,29590,
-30697,33510,36527,39366,39368,39378,20855,24858,34398,21936,31354,20598,23507,
-36935,38533,20018,27355,37351,23633,23624,25496,31391,27795,38772,36705,31402,
-29066,38536,31874,26647,32368,26705,37740,21234,21531,34219,35347,32676,36557,
-37089,21350,34952,31041,20418,20670,21009,20804,21843,22317,29674,22411,22865,
-24418,24452,24693,24950,24935,25001,25522,25658,25964,26223,26690,28179,30054,
-31293,31995,32076,32153,32331,32619,33550,33610,34509,35336,35427,35686,36605,
-38938,40335,33464,36814,39912,21127,25119,25731,28608,38553,26689,20625,27424,
-27770,28500,31348,32080,34880,35363,26376,20214,20537,20518,20581,20860,21048,
-21091,21927,22287,22533,23244,24314,25010,25080,25331,25458,26908,27177,29309,
-29356,29486,30740,30831,32121,30476,32937,35211,35609,36066,36562,36963,37749,
-38522,38997,39443,40568,20803,21407,21427,24187,24358,28187,28304,29572,29694,
-32067,33335,35328,35578,38480,20046,20491,21476,21628,22266,22993,23396,24049,
-24235,24359,25144,25925,26543,28246,29392,31946,34996,32929,32993,33776,34382,
-35463,36328,37431,38599,39015,40723,20116,20114,20237,21320,21577,21566,23087,
-24460,24481,24735,26791,27278,29786,30849,35486,35492,35703,37264,20062,39881,
-20132,20348,20399,20505,20502,20809,20844,21151,21177,21246,21402,21475,21521,
-21518,21897,22353,22434,22909,23380,23389,23439,24037,24039,24055,24184,24195,
-24218,24247,24344,24658,24908,25239,25304,25511,25915,26114,26179,26356,26477,
-26657,26775,27083,27743,27946,28009,28207,28317,30002,30343,30828,31295,31968,
-32005,32024,32094,32177,32789,32771,32943,32945,33108,33167,33322,33618,34892,
-34913,35611,36002,36092,37066,37237,37489,30783,37628,38308,38477,38917,39321,
-39640,40251,21083,21163,21495,21512,22741,25335,28640,35946,36703,40633,20811,
-21051,21578,22269,31296,37239,40288,40658,29508,28425,33136,29969,24573,24794,
-39592,29403,36796,27492,38915,20170,22256,22372,22718,23130,24680,25031,26127,
-26118,26681,26801,28151,30165,32058,33390,39746,20123,20304,21449,21766,23919,
-24038,24046,26619,27801,29811,30722,35408,37782,35039,22352,24231,25387,20661,
-20652,20877,26368,21705,22622,22971,23472,24425,25165,25505,26685,27507,28168,
-28797,37319,29312,30741,30758,31085,25998,32048,33756,35009,36617,38555,21092,
-22312,26448,32618,36001,20916,22338,38442,22586,27018,32948,21682,23822,22524,
-30869,40442,20316,21066,21643,25662,26152,26388,26613,31364,31574,32034,37679,
-26716,39853,31545,21273,20874,21047,23519,25334,25774,25830,26413,27578,34217,
-38609,30352,39894,25420,37638,39851,30399,26194,19977,20632,21442,23665,24808,
-25746,25955,26719,29158,29642,29987,31639,32386,34453,35715,36059,37240,39184,
-26028,26283,27531,20181,20180,20282,20351,21050,21496,21490,21987,22235,22763,
-22987,22985,23039,23376,23629,24066,24107,24535,24605,25351,25903,23388,26031,
-26045,26088,26525,27490,27515,27663,29509,31049,31169,31992,32025,32043,32930,
-33026,33267,35222,35422,35433,35430,35468,35566,36039,36060,38604,39164,27503,
-20107,20284,20365,20816,23383,23546,24904,25345,26178,27425,28363,27835,29246,
-29885,30164,30913,31034,32780,32819,33258,33940,36766,27728,40575,24335,35672,
-40235,31482,36600,23437,38635,19971,21489,22519,22833,23241,23460,24713,28287,
-28422,30142,36074,23455,34048,31712,20594,26612,33437,23649,34122,32286,33294,
-20889,23556,25448,36198,26012,29038,31038,32023,32773,35613,36554,36974,34503,
-37034,20511,21242,23610,26451,28796,29237,37196,37320,37675,33509,23490,24369,
-24825,20027,21462,23432,25163,26417,27530,29417,29664,31278,33131,36259,37202,
-39318,20754,21463,21610,23551,25480,27193,32172,38656,22234,21454,21608,23447,
-23601,24030,20462,24833,25342,27954,31168,31179,32066,32333,32722,33261,33311,
-33936,34886,35186,35728,36468,36655,36913,37195,37228,38598,37276,20160,20303,
-20805,21313,24467,25102,26580,27713,28171,29539,32294,37325,37507,21460,22809,
-23487,28113,31069,32302,31899,22654,29087,20986,34899,36848,20426,23803,26149,
-30636,31459,33308,39423,20934,24490,26092,26991,27529,28147,28310,28516,30462,
-32020,24033,36981,37255,38918,20966,21021,25152,26257,26329,28186,24246,32210,
-32626,26360,34223,34295,35576,21161,21465,22899,24207,24464,24661,37604,38500,
-20663,20767,21213,21280,21319,21484,21736,21830,21809,22039,22888,22974,23100,
-23477,23558,23567,23569,23578,24196,24202,24288,24432,25215,25220,25307,25484,
-25463,26119,26124,26157,26230,26494,26786,27167,27189,27836,28040,28169,28248,
-28988,28966,29031,30151,30465,30813,30977,31077,31216,31456,31505,31911,32057,
-32918,33750,33931,34121,34909,35059,35359,35388,35412,35443,35937,36062,37284,
-37478,37758,37912,38556,38808,19978,19976,19998,20055,20887,21104,22478,22580,
-22732,23330,24120,24773,25854,26465,26454,27972,29366,30067,31331,33976,35698,
-37304,37664,22065,22516,39166,25325,26893,27542,29165,32340,32887,33394,35302,
-39135,34645,36785,23611,20280,20449,20405,21767,23072,23517,23529,24515,24910,
-25391,26032,26187,26862,27035,28024,28145,30003,30137,30495,31070,31206,32051,
-33251,33455,34218,35242,35386,36523,36763,36914,37341,38663,20154,20161,20995,
-22645,22764,23563,29978,23613,33102,35338,36805,38499,38765,31525,35535,38920,
-37218,22259,21416,36887,21561,22402,24101,25512,27700,28810,30561,31883,32736,
-34928,36930,37204,37648,37656,38543,29790,39620,23815,23913,25968,26530,36264,
-38619,25454,26441,26905,33733,38935,38592,35070,28548,25722,23544,19990,28716,
-30045,26159,20932,21046,21218,22995,24449,24615,25104,25919,25972,26143,26228,
-26866,26646,27491,28165,29298,29983,30427,31934,32854,22768,35069,35199,35488,
-35475,35531,36893,37266,38738,38745,25993,31246,33030,38587,24109,24796,25114,
-26021,26132,26512,30707,31309,31821,32318,33034,36012,36196,36321,36447,30889,
-20999,25305,25509,25666,25240,35373,31363,31680,35500,38634,32118,33292,34633,
-20185,20808,21315,21344,23459,23554,23574,24029,25126,25159,25776,26643,26676,
-27849,27973,27927,26579,28508,29006,29053,26059,31359,31661,32218,32330,32680,
-33146,33307,33337,34214,35438,36046,36341,36984,36983,37549,37521,38275,39854,
-21069,21892,28472,28982,20840,31109,32341,33203,31950,22092,22609,23720,25514,
-26366,26365,26970,29401,30095,30094,30990,31062,31199,31895,32032,32068,34311,
-35380,38459,36961,40736,20711,21109,21452,21474,20489,21930,22766,22863,29245,
-23435,23652,21277,24803,24819,25436,25475,25407,25531,25805,26089,26361,24035,
-27085,27133,28437,29157,20105,30185,30456,31379,31967,32207,32156,32865,33609,
-33624,33900,33980,34299,35013,36208,36865,36973,37783,38684,39442,20687,22679,
-24974,33235,34101,36104,36896,20419,20596,21063,21363,24687,25417,26463,28204,
-36275,36895,20439,23646,36042,26063,32154,21330,34966,20854,25539,23384,23403,
-23562,25613,26449,36956,20182,22810,22826,27760,35409,21822,22549,22949,24816,
-25171,26561,33333,26965,38464,39364,39464,20307,22534,23550,32784,23729,24111,
-24453,24608,24907,25140,26367,27888,28382,32974,33151,33492,34955,36024,36864,
-36910,38538,40667,39899,20195,21488,22823,31532,37261,38988,40441,28381,28711,
-21331,21828,23429,25176,25246,25299,27810,28655,29730,35351,37944,28609,35582,
-33592,20967,34552,21482,21481,20294,36948,36784,22890,33073,24061,31466,36799,
-26842,35895,29432,40008,27197,35504,20025,21336,22022,22374,25285,25506,26086,
-27470,28129,28251,28845,30701,31471,31658,32187,32829,32966,34507,35477,37723,
-22243,22727,24382,26029,26262,27264,27573,30007,35527,20516,30693,22320,24347,
-24677,26234,27744,30196,31258,32622,33268,34584,36933,39347,31689,30044,31481,
-31569,33988,36880,31209,31378,33590,23265,30528,20013,20210,23449,24544,25277,
-26172,26609,27880,34411,34935,35387,37198,37619,39376,27159,28710,29482,33511,
-33879,36015,19969,20806,20939,21899,23541,24086,24115,24193,24340,24373,24427,
-24500,25074,25361,26274,26397,28526,29266,30010,30522,32884,33081,33144,34678,
-35519,35548,36229,36339,37530,38263,38914,40165,21189,25431,30452,26389,27784,
-29645,36035,37806,38515,27941,22684,26894,27084,36861,37786,30171,36890,22618,
-26626,25524,27131,20291,28460,26584,36795,34086,32180,37716,26943,28528,22378,
-22775,23340,32044,29226,21514,37347,40372,20141,20302,20572,20597,21059,35998,
-21576,22564,23450,24093,24213,24237,24311,24351,24716,25269,25402,25552,26799,
-27712,30855,31118,31243,32224,33351,35330,35558,36420,36883,37048,37165,37336,
-40718,27877,25688,25826,25973,28404,30340,31515,36969,37841,28346,21746,24505,
-25764,36685,36845,37444,20856,22635,22825,23637,24215,28155,32399,29980,36028,
-36578,39003,28857,20253,27583,28593,30000,38651,20814,21520,22581,22615,22956,
-23648,24466,26007,26460,28193,30331,33759,36077,36884,37117,37709,30757,30778,
-21162,24230,22303,22900,24594,20498,20826,20908,20941,20992,21776,22612,22616,
-22871,23445,23798,23947,24764,25237,25645,26481,26691,26812,26847,30423,28120,
-28271,28059,28783,29128,24403,30168,31095,31561,31572,31570,31958,32113,21040,
-33891,34153,34276,35342,35588,35910,36367,36867,36879,37913,38518,38957,39472,
-38360,20685,21205,21516,22530,23566,24999,25758,27934,30643,31461,33012,33796,
-36947,37509,23776,40199,21311,24471,24499,28060,29305,30563,31167,31716,27602,
-29420,35501,26627,27233,20984,31361,26932,23626,40182,33515,23493,37193,28702,
-22136,23663,24775,25958,27788,35930,36929,38931,21585,26311,37389,22856,37027,
-20869,20045,20970,34201,35598,28760,25466,37707,26978,39348,32260,30071,21335,
-26976,36575,38627,27741,20108,23612,24336,36841,21250,36049,32905,34425,24319,
-26085,20083,20837,22914,23615,38894,20219,22922,24525,35469,28641,31152,31074,
-23527,33905,29483,29105,24180,24565,25467,25754,29123,31896,20035,24316,20043,
-22492,22178,24745,28611,32013,33021,33075,33215,36786,35223,34468,24052,25226,
-25773,35207,26487,27874,27966,29750,30772,23110,32629,33453,39340,20467,24259,
-25309,25490,25943,26479,30403,29260,32972,32954,36649,37197,20493,22521,23186,
-26757,26995,29028,29437,36023,22770,36064,38506,36889,34687,31204,30695,33833,
-20271,21093,21338,25293,26575,27850,30333,31636,31893,33334,34180,36843,26333,
-28448,29190,32283,33707,39361,40614,20989,31665,30834,31672,32903,31560,27368,
-24161,32908,30033,30048,20843,37474,28300,30330,37271,39658,20240,32624,25244,
-31567,38309,40169,22138,22617,34532,38588,20276,21028,21322,21453,21467,24070,
-25644,26001,26495,27710,27726,29256,29359,29677,30036,32321,33324,34281,36009,
-31684,37318,29033,38930,39151,25405,26217,30058,30436,30928,34115,34542,21290,
-21329,21542,22915,24199,24444,24754,25161,25209,25259,26000,27604,27852,30130,
-30382,30865,31192,32203,32631,32933,34987,35513,36027,36991,38750,39131,27147,
-31800,20633,23614,24494,26503,27608,29749,30473,32654,40763,26570,31255,21305,
-30091,39661,24422,33181,33777,32920,24380,24517,30050,31558,36924,26727,23019,
-23195,32016,30334,35628,20469,24426,27161,27703,28418,29922,31080,34920,35413,
-35961,24287,25551,30149,31186,33495,37672,37618,33948,34541,39981,21697,24428,
-25996,27996,28693,36007,36051,38971,25935,29942,19981,20184,22496,22827,23142,
-23500,20904,24067,24220,24598,25206,25975,26023,26222,28014,29238,31526,33104,
-33178,33433,35676,36000,36070,36212,38428,38468,20398,25771,27494,33310,33889,
-34154,37096,23553,26963,39080,33914,34135,20239,21103,24489,24133,26381,31119,
-33145,35079,35206,28149,24343,25173,27832,20175,29289,39826,20998,21563,22132,
-22707,24996,25198,28954,22894,31881,31966,32027,38640,25991,32862,19993,20341,
-20853,22592,24163,24179,24330,26564,20006,34109,38281,38491,31859,38913,20731,
-22721,30294,30887,21029,30629,34065,31622,20559,22793,29255,31687,32232,36794,
-36820,36941,20415,21193,23081,24321,38829,20445,33303,37610,22275,25429,27497,
-29995,35036,36628,31298,21215,22675,24917,25098,26286,27597,31807,33769,20515,
-20472,21253,21574,22577,22857,23453,23792,23791,23849,24214,25265,25447,25918,
-26041,26379,27861,27873,28921,30770,32299,32990,33459,33804,34028,34562,35090,
-35370,35914,37030,37586,39165,40179,40300,20047,20129,20621,21078,22346,22952,
-24125,24536,24537,25151,26292,26395,26576,26834,20882,32033,32938,33192,35584,
-35980,36031,37502,38450,21536,38956,21271,20693,21340,22696,25778,26420,29287,
-30566,31302,37350,21187,27809,27526,22528,24140,22868,26412,32763,20961,30406,
-25705,30952,39764,40635,22475,22969,26151,26522,27598,21737,27097,24149,33180,
-26517,39850,26622,40018,26717,20134,20451,21448,25273,26411,27819,36804,20397,
-32365,40639,19975,24930,28288,28459,34067,21619,26410,39749,24051,31637,23724,
-23494,34588,28234,34001,31252,33032,22937,31885,27665,30496,21209,22818,28961,
-29279,30683,38695,40289,26891,23167,23064,20901,21517,21629,26126,30431,36855,
-37528,40180,23018,29277,28357,20813,26825,32191,32236,38754,40634,25720,27169,
-33538,22916,23391,27611,29467,30450,32178,32791,33945,20786,26408,40665,30446,
-26466,21247,39173,23588,25147,31870,36016,21839,24758,32011,38272,21249,20063,
-20918,22812,29242,32822,37326,24357,30690,21380,24441,32004,34220,35379,36493,
-38742,26611,34222,37971,24841,24840,27833,30290,35565,36664,21807,20305,20778,
-21191,21451,23461,24189,24736,24962,25558,26377,26586,28263,28044,29494,29495,
-30001,31056,35029,35480,36938,37009,37109,38596,34701,22805,20104,20313,19982,
-35465,36671,38928,20653,24188,22934,23481,24248,25562,25594,25793,26332,26954,
-27096,27915,28342,29076,29992,31407,32650,32768,33865,33993,35201,35617,36362,
-36965,38525,39178,24958,25233,27442,27779,28020,32716,32764,28096,32645,34746,
-35064,26469,33713,38972,38647,27931,32097,33853,37226,20081,21365,23888,27396,
-28651,34253,34349,35239,21033,21519,23653,26446,26792,29702,29827,30178,35023,
-35041,37324,38626,38520,24459,29575,31435,33870,25504,30053,21129,27969,28316,
-29705,30041,30827,31890,38534,31452,40845,20406,24942,26053,34396,20102,20142,
-20698,20001,20940,23534,26009,26753,28092,29471,30274,30637,31260,31975,33391,
-35538,36988,37327,38517,38936,21147,32209,20523,21400,26519,28107,29136,29747,
-33256,36650,38563,40023,40607,29792,22593,28057,32047,39006,20196,20278,20363,
-20919,21169,23994,24604,29618,31036,33491,37428,38583,38646,38666,40599,40802,
-26278,27508,21015,21155,28872,35010,24265,24651,24976,28451,29001,31806,32244,
-32879,34030,36899,37676,21570,39791,27347,28809,36034,36335,38706,21172,23105,
-24266,24324,26391,27004,27028,28010,28431,29282,29436,31725,32769,32894,34635,
-37070,20845,40595,31108,32907,37682,35542,20525,21644,35441,27498,36036,33031,
-24785,26528,40434,20121,20120,39952,35435,34241,34152,26880,28286,30871,33109,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,24332,19984,19989,20010,20017,20022,20028,20031,20034,20054,20056,
-20098,20101,35947,20106,33298,24333,20110,20126,20127,20128,20130,20144,20147,
-20150,20174,20173,20164,20166,20162,20183,20190,20205,20191,20215,20233,20314,
-20272,20315,20317,20311,20295,20342,20360,20367,20376,20347,20329,20336,20369,
-20335,20358,20374,20760,20436,20447,20430,20440,20443,20433,20442,20432,20452,
-20453,20506,20520,20500,20522,20517,20485,20252,20470,20513,20521,20524,20478,
-20463,20497,20486,20547,20551,26371,20565,20560,20552,20570,20566,20588,20600,
-20608,20634,20613,20660,20658,20681,20682,20659,20674,20694,20702,20709,20717,
-20707,20718,20729,20725,20745,20737,20738,20758,20757,20756,20762,20769,20794,
-20791,20796,20795,20799,20800,20818,20812,20820,20834,31480,20841,20842,20846,
-20864,20866,22232,20876,20873,20879,20881,20883,20885,20886,20900,20902,20898,
-20905,20906,20907,20915,20913,20914,20912,20917,20925,20933,20937,20955,20960,
-34389,20969,20973,20976,20981,20990,20996,21003,21012,21006,21031,21034,21038,
-21043,21049,21071,21060,21067,21068,21086,21076,21098,21108,21097,21107,21119,
-21117,21133,21140,21138,21105,21128,21137,36776,36775,21164,21165,21180,21173,
-21185,21197,21207,21214,21219,21222,39149,21216,21235,21237,21240,21241,21254,
-21256,30008,21261,21264,21263,21269,21274,21283,21295,21297,21299,21304,21312,
-21318,21317,19991,21321,21325,20950,21342,21353,21358,22808,21371,21367,21378,
-21398,21408,21414,21413,21422,21424,21430,21443,31762,38617,21471,26364,29166,
-21486,21480,21485,21498,21505,21565,21568,21548,21549,21564,21550,21558,21545,
-21533,21582,21647,21621,21646,21599,21617,21623,21616,21650,21627,21632,21622,
-21636,21648,21638,21703,21666,21688,21669,21676,21700,21704,21672,21675,21698,
-21668,21694,21692,21720,21733,21734,21775,21780,21757,21742,21741,21754,21730,
-21817,21824,21859,21836,21806,21852,21829,21846,21847,21816,21811,21853,21913,
-21888,21679,21898,21919,21883,21886,21912,21918,21934,21884,21891,21929,21895,
-21928,21978,21957,21983,21956,21980,21988,21972,22036,22007,22038,22014,22013,
-22043,22009,22094,22096,29151,22068,22070,22066,22072,22123,22116,22063,22124,
-22122,22150,22144,22154,22176,22164,22159,22181,22190,22198,22196,22210,22204,
-22209,22211,22208,22216,22222,22225,22227,22231,22254,22265,22272,22271,22276,
-22281,22280,22283,22285,22291,22296,22294,21959,22300,22310,22327,22328,22350,
-22331,22336,22351,22377,22464,22408,22369,22399,22409,22419,22432,22451,22436,
-22442,22448,22467,22470,22484,22482,22483,22538,22486,22499,22539,22553,22557,
-22642,22561,22626,22603,22640,27584,22610,22589,22649,22661,22713,22687,22699,
-22714,22750,22715,22712,22702,22725,22739,22737,22743,22745,22744,22757,22748,
-22756,22751,22767,22778,22777,22779,22780,22781,22786,22794,22800,22811,26790,
-22821,22828,22829,22834,22840,22846,31442,22869,22864,22862,22874,22872,22882,
-22880,22887,22892,22889,22904,22913,22941,20318,20395,22947,22962,22982,23016,
-23004,22925,23001,23002,23077,23071,23057,23068,23049,23066,23104,23148,23113,
-23093,23094,23138,23146,23194,23228,23230,23243,23234,23229,23267,23255,23270,
-23273,23254,23290,23291,23308,23307,23318,23346,23248,23338,23350,23358,23363,
-23365,23360,23377,23381,23386,23387,23397,23401,23408,23411,23413,23416,25992,
-23418,23424,23427,23462,23480,23491,23495,23497,23508,23504,23524,23526,23522,
-23518,23525,23531,23536,23542,23539,23557,23559,23560,23565,23571,23584,23586,
-23592,23608,23609,23617,23622,23630,23635,23632,23631,23409,23660,23662,20066,
-23670,23673,23692,23697,23700,22939,23723,23739,23734,23740,23735,23749,23742,
-23751,23769,23785,23805,23802,23789,23948,23786,23819,23829,23831,23900,23839,
-23835,23825,23828,23842,23834,23833,23832,23884,23890,23886,23883,23916,23923,
-23926,23943,23940,23938,23970,23965,23980,23982,23997,23952,23991,23996,24009,
-24013,24019,24018,24022,24027,24043,24050,24053,24075,24090,24089,24081,24091,
-24118,24119,24132,24131,24128,24142,24151,24148,24159,24162,24164,24135,24181,
-24182,24186,40636,24191,24224,24257,24258,24264,24272,24271,24278,24291,24285,
-24282,24283,24290,24289,24296,24297,24300,24305,24307,24304,24308,24312,24318,
-24323,24329,24413,24412,24331,24337,24342,24361,24365,24376,24385,24392,24396,
-24398,24367,24401,24406,24407,24409,24417,24429,24435,24439,24451,24450,24447,
-24458,24456,24465,24455,24478,24473,24472,24480,24488,24493,24508,24534,24571,
-24548,24568,24561,24541,24755,24575,24609,24672,24601,24592,24617,24590,24625,
-24603,24597,24619,24614,24591,24634,24666,24641,24682,24695,24671,24650,24646,
-24653,24675,24643,24676,24642,24684,24683,24665,24705,24717,24807,24707,24730,
-24708,24731,24726,24727,24722,24743,24715,24801,24760,24800,24787,24756,24560,
-24765,24774,24757,24792,24909,24853,24838,24822,24823,24832,24820,24826,24835,
-24865,24827,24817,24845,24846,24903,24894,24872,24871,24906,24895,24892,24876,
-24884,24893,24898,24900,24947,24951,24920,24921,24922,24939,24948,24943,24933,
-24945,24927,24925,24915,24949,24985,24982,24967,25004,24980,24986,24970,24977,
-25003,25006,25036,25034,25033,25079,25032,25027,25030,25018,25035,32633,25037,
-25062,25059,25078,25082,25076,25087,25085,25084,25086,25088,25096,25097,25101,
-25100,25108,25115,25118,25121,25130,25134,25136,25138,25139,25153,25166,25182,
-25187,25179,25184,25192,25212,25218,25225,25214,25234,25235,25238,25300,25219,
-25236,25303,25297,25275,25295,25343,25286,25812,25288,25308,25292,25290,25282,
-25287,25243,25289,25356,25326,25329,25383,25346,25352,25327,25333,25424,25406,
-25421,25628,25423,25494,25486,25472,25515,25462,25507,25487,25481,25503,25525,
-25451,25449,25534,25577,25536,25542,25571,25545,25554,25590,25540,25622,25652,
-25606,25619,25638,25654,25885,25623,25640,25615,25703,25711,25718,25678,25898,
-25749,25747,25765,25769,25736,25788,25818,25810,25797,25799,25787,25816,25794,
-25841,25831,33289,25824,25825,25260,25827,25839,25900,25846,25844,25842,25850,
-25856,25853,25880,25884,25861,25892,25891,25899,25908,25909,25911,25910,25912,
-30027,25928,25942,25941,25933,25944,25950,25949,25970,25976,25986,25987,35722,
-26011,26015,26027,26039,26051,26054,26049,26052,26060,26066,26075,26073,26080,
-26081,26097,26482,26122,26115,26107,26483,26165,26166,26164,26140,26191,26180,
-26185,26177,26206,26205,26212,26215,26216,26207,26210,26224,26243,26248,26254,
-26249,26244,26264,26269,26305,26297,26313,26302,26300,26308,26296,26326,26330,
-26336,26175,26342,26345,26352,26357,26359,26383,26390,26398,26406,26407,38712,
-26414,26431,26422,26433,26424,26423,26438,26462,26464,26457,26467,26468,26505,
-26480,26537,26492,26474,26508,26507,26534,26529,26501,26551,26607,26548,26604,
-26547,26601,26552,26596,26590,26589,26594,26606,26553,26574,26566,26599,27292,
-26654,26694,26665,26688,26701,26674,26702,26803,26667,26713,26723,26743,26751,
-26783,26767,26797,26772,26781,26779,26755,27310,26809,26740,26805,26784,26810,
-26895,26765,26750,26881,26826,26888,26840,26914,26918,26849,26892,26829,26836,
-26855,26837,26934,26898,26884,26839,26851,26917,26873,26848,26863,26920,26922,
-26906,26915,26913,26822,27001,26999,26972,27000,26987,26964,27006,26990,26937,
-26996,26941,26969,26928,26977,26974,26973,27009,26986,27058,27054,27088,27071,
-27073,27091,27070,27086,23528,27082,27101,27067,27075,27047,27182,27025,27040,
-27036,27029,27060,27102,27112,27138,27163,27135,27402,27129,27122,27111,27141,
-27057,27166,27117,27156,27115,27146,27154,27329,27171,27155,27204,27148,27250,
-27190,27256,27207,27234,27225,27238,27208,27192,27170,27280,27277,27296,27268,
-27298,27299,27287,34327,27323,27331,27330,27320,27315,27308,27358,27345,27359,
-27306,27354,27370,27387,27397,34326,27386,27410,27414,39729,27423,27448,27447,
-30428,27449,39150,27463,27459,27465,27472,27481,27476,27483,27487,27489,27512,
-27513,27519,27520,27524,27523,27533,27544,27541,27550,27556,27562,27563,27567,
-27570,27569,27571,27575,27580,27590,27595,27603,27615,27628,27627,27635,27631,
-40638,27656,27667,27668,27675,27684,27683,27742,27733,27746,27754,27778,27789,
-27802,27777,27803,27774,27752,27763,27794,27792,27844,27889,27859,27837,27863,
-27845,27869,27822,27825,27838,27834,27867,27887,27865,27882,27935,34893,27958,
-27947,27965,27960,27929,27957,27955,27922,27916,28003,28051,28004,27994,28025,
-27993,28046,28053,28644,28037,28153,28181,28170,28085,28103,28134,28088,28102,
-28140,28126,28108,28136,28114,28101,28154,28121,28132,28117,28138,28142,28205,
-28270,28206,28185,28274,28255,28222,28195,28267,28203,28278,28237,28191,28227,
-28218,28238,28196,28415,28189,28216,28290,28330,28312,28361,28343,28371,28349,
-28335,28356,28338,28372,28373,28303,28325,28354,28319,28481,28433,28748,28396,
-28408,28414,28479,28402,28465,28399,28466,28364,28478,28435,28407,28550,28538,
-28536,28545,28544,28527,28507,28659,28525,28546,28540,28504,28558,28561,28610,
-28518,28595,28579,28577,28580,28601,28614,28586,28639,28629,28652,28628,28632,
-28657,28654,28635,28681,28683,28666,28689,28673,28687,28670,28699,28698,28532,
-28701,28696,28703,28720,28734,28722,28753,28771,28825,28818,28847,28913,28844,
-28856,28851,28846,28895,28875,28893,28889,28937,28925,28956,28953,29029,29013,
-29064,29030,29026,29004,29014,29036,29071,29179,29060,29077,29096,29100,29143,
-29113,29118,29138,29129,29140,29134,29152,29164,29159,29173,29180,29177,29183,
-29197,29200,29211,29224,29229,29228,29232,29234,29243,29244,29247,29248,29254,
-29259,29272,29300,29310,29314,29313,29319,29330,29334,29346,29351,29369,29362,
-29379,29382,29380,29390,29394,29410,29408,29409,29433,29431,20495,29463,29450,
-29468,29462,29469,29492,29487,29481,29477,29502,29518,29519,40664,29527,29546,
-29544,29552,29560,29557,29563,29562,29640,29619,29646,29627,29632,29669,29678,
-29662,29858,29701,29807,29733,29688,29746,29754,29781,29759,29791,29785,29761,
-29788,29801,29808,29795,29802,29814,29822,29835,29854,29863,29898,29903,29908,
-29681,29920,29923,29927,29929,29934,29938,29936,29937,29944,29943,29956,29955,
-29957,29964,29966,29965,29973,29971,29982,29990,29996,30012,30020,30029,30026,
-30025,30043,30022,30042,30057,30052,30055,30059,30061,30072,30070,30086,30087,
-30068,30090,30089,30082,30100,30106,30109,30117,30115,30146,30131,30147,30133,
-30141,30136,30140,30129,30157,30154,30162,30169,30179,30174,30206,30207,30204,
-30209,30192,30202,30194,30195,30219,30221,30217,30239,30247,30240,30241,30242,
-30244,30260,30256,30267,30279,30280,30278,30300,30296,30305,30306,30312,30313,
-30314,30311,30316,30320,30322,30326,30328,30332,30336,30339,30344,30347,30350,
-30358,30355,30361,30362,30384,30388,30392,30393,30394,30402,30413,30422,30418,
-30430,30433,30437,30439,30442,34351,30459,30472,30471,30468,30505,30500,30494,
-30501,30502,30491,30519,30520,30535,30554,30568,30571,30555,30565,30591,30590,
-30585,30606,30603,30609,30624,30622,30640,30646,30649,30655,30652,30653,30651,
-30663,30669,30679,30682,30684,30691,30702,30716,30732,30738,31014,30752,31018,
-30789,30862,30836,30854,30844,30874,30860,30883,30901,30890,30895,30929,30918,
-30923,30932,30910,30908,30917,30922,30956,30951,30938,30973,30964,30983,30994,
-30993,31001,31020,31019,31040,31072,31063,31071,31066,31061,31059,31098,31103,
-31114,31133,31143,40779,31146,31150,31155,31161,31162,31177,31189,31207,31212,
-31201,31203,31240,31245,31256,31257,31264,31263,31104,31281,31291,31294,31287,
-31299,31319,31305,31329,31330,31337,40861,31344,31353,31357,31368,31383,31381,
-31384,31382,31401,31432,31408,31414,31429,31428,31423,36995,31431,31434,31437,
-31439,31445,31443,31449,31450,31453,31457,31458,31462,31469,31472,31490,31503,
-31498,31494,31539,31512,31513,31518,31541,31528,31542,31568,31610,31492,31565,
-31499,31564,31557,31605,31589,31604,31591,31600,31601,31596,31598,31645,31640,
-31647,31629,31644,31642,31627,31634,31631,31581,31641,31691,31681,31692,31695,
-31668,31686,31709,31721,31761,31764,31718,31717,31840,31744,31751,31763,31731,
-31735,31767,31757,31734,31779,31783,31786,31775,31799,31787,31805,31820,31811,
-31828,31823,31808,31824,31832,31839,31844,31830,31845,31852,31861,31875,31888,
-31908,31917,31906,31915,31905,31912,31923,31922,31921,31918,31929,31933,31936,
-31941,31938,31960,31954,31964,31970,39739,31983,31986,31988,31990,31994,32006,
-32002,32028,32021,32010,32069,32075,32046,32050,32063,32053,32070,32115,32086,
-32078,32114,32104,32110,32079,32099,32147,32137,32091,32143,32125,32155,32186,
-32174,32163,32181,32199,32189,32171,32317,32162,32175,32220,32184,32159,32176,
-32216,32221,32228,32222,32251,32242,32225,32261,32266,32291,32289,32274,32305,
-32287,32265,32267,32290,32326,32358,32315,32309,32313,32323,32311,32306,32314,
-32359,32349,32342,32350,32345,32346,32377,32362,32361,32380,32379,32387,32213,
-32381,36782,32383,32392,32393,32396,32402,32400,32403,32404,32406,32398,32411,
-32412,32568,32570,32581,32588,32589,32590,32592,32593,32597,32596,32600,32607,
-32608,32616,32617,32615,32632,32642,32646,32643,32648,32647,32652,32660,32670,
-32669,32666,32675,32687,32690,32697,32686,32694,32696,35697,32709,32710,32714,
-32725,32724,32737,32742,32745,32755,32761,39132,32774,32772,32779,32786,32792,
-32793,32796,32801,32808,32831,32827,32842,32838,32850,32856,32858,32863,32866,
-32872,32883,32882,32880,32886,32889,32893,32895,32900,32902,32901,32923,32915,
-32922,32941,20880,32940,32987,32997,32985,32989,32964,32986,32982,33033,33007,
-33009,33051,33065,33059,33071,33099,38539,33094,33086,33107,33105,33020,33137,
-33134,33125,33126,33140,33155,33160,33162,33152,33154,33184,33173,33188,33187,
-33119,33171,33193,33200,33205,33214,33208,33213,33216,33218,33210,33225,33229,
-33233,33241,33240,33224,33242,33247,33248,33255,33274,33275,33278,33281,33282,
-33285,33287,33290,33293,33296,33302,33321,33323,33336,33331,33344,33369,33368,
-33373,33370,33375,33380,33378,33384,33386,33387,33326,33393,33399,33400,33406,
-33421,33426,33451,33439,33467,33452,33505,33507,33503,33490,33524,33523,33530,
-33683,33539,33531,33529,33502,33542,33500,33545,33497,33589,33588,33558,33586,
-33585,33600,33593,33616,33605,33583,33579,33559,33560,33669,33690,33706,33695,
-33698,33686,33571,33678,33671,33674,33660,33717,33651,33653,33696,33673,33704,
-33780,33811,33771,33742,33789,33795,33752,33803,33729,33783,33799,33760,33778,
-33805,33826,33824,33725,33848,34054,33787,33901,33834,33852,34138,33924,33911,
-33899,33965,33902,33922,33897,33862,33836,33903,33913,33845,33994,33890,33977,
-33983,33951,34009,33997,33979,34010,34000,33985,33990,34006,33953,34081,34047,
-34036,34071,34072,34092,34079,34069,34068,34044,34112,34147,34136,34120,34113,
-34306,34123,34133,34176,34212,34184,34193,34186,34216,34157,34196,34203,34282,
-34183,34204,34167,34174,34192,34249,34234,34255,34233,34256,34261,34269,34277,
-34268,34297,34314,34323,34315,34302,34298,34310,34338,34330,34352,34367,34381,
-20053,34388,34399,34407,34417,34451,34467,34473,34474,34443,34444,34486,34479,
-34500,34502,34480,34505,34851,34475,34516,34526,34537,34540,34527,34523,34543,
-34578,34566,34568,34560,34563,34555,34577,34569,34573,34553,34570,34612,34623,
-34615,34619,34597,34601,34586,34656,34655,34680,34636,34638,34676,34647,34664,
-34670,34649,34643,34659,34666,34821,34722,34719,34690,34735,34763,34749,34752,
-34768,38614,34731,34756,34739,34759,34758,34747,34799,34802,34784,34831,34829,
-34814,34806,34807,34830,34770,34833,34838,34837,34850,34849,34865,34870,34873,
-34855,34875,34884,34882,34898,34905,34910,34914,34923,34945,34942,34974,34933,
-34941,34997,34930,34946,34967,34962,34990,34969,34978,34957,34980,34992,35007,
-34993,35011,35012,35028,35032,35033,35037,35065,35074,35068,35060,35048,35058,
-35076,35084,35082,35091,35139,35102,35109,35114,35115,35137,35140,35131,35126,
-35128,35148,35101,35168,35166,35174,35172,35181,35178,35183,35188,35191,35198,
-35203,35208,35210,35219,35224,35233,35241,35238,35244,35247,35250,35258,35261,
-35263,35264,35290,35292,35293,35303,35316,35320,35331,35350,35344,35340,35355,
-35357,35365,35382,35393,35419,35410,35398,35400,35452,35437,35436,35426,35461,
-35458,35460,35496,35489,35473,35493,35494,35482,35491,35524,35533,35522,35546,
-35563,35571,35559,35556,35569,35604,35552,35554,35575,35550,35547,35596,35591,
-35610,35553,35606,35600,35607,35616,35635,38827,35622,35627,35646,35624,35649,
-35660,35663,35662,35657,35670,35675,35674,35691,35679,35692,35695,35700,35709,
-35712,35724,35726,35730,35731,35734,35737,35738,35898,35905,35903,35912,35916,
-35918,35920,35925,35938,35948,35960,35962,35970,35977,35973,35978,35981,35982,
-35988,35964,35992,25117,36013,36010,36029,36018,36019,36014,36022,36040,36033,
-36068,36067,36058,36093,36090,36091,36100,36101,36106,36103,36111,36109,36112,
-40782,36115,36045,36116,36118,36199,36205,36209,36211,36225,36249,36290,36286,
-36282,36303,36314,36310,36300,36315,36299,36330,36331,36319,36323,36348,36360,
-36361,36351,36381,36382,36368,36383,36418,36405,36400,36404,36426,36423,36425,
-36428,36432,36424,36441,36452,36448,36394,36451,36437,36470,36466,36476,36481,
-36487,36485,36484,36491,36490,36499,36497,36500,36505,36522,36513,36524,36528,
-36550,36529,36542,36549,36552,36555,36571,36579,36604,36603,36587,36606,36618,
-36613,36629,36626,36633,36627,36636,36639,36635,36620,36646,36659,36667,36665,
-36677,36674,36670,36684,36681,36678,36686,36695,36700,36706,36707,36708,36764,
-36767,36771,36781,36783,36791,36826,36837,36834,36842,36847,36999,36852,36869,
-36857,36858,36881,36885,36897,36877,36894,36886,36875,36903,36918,36917,36921,
-36856,36943,36944,36945,36946,36878,36937,36926,36950,36952,36958,36968,36975,
-36982,38568,36978,36994,36989,36993,36992,37002,37001,37007,37032,37039,37041,
-37045,37090,37092,25160,37083,37122,37138,37145,37170,37168,37194,37206,37208,
-37219,37221,37225,37235,37234,37259,37257,37250,37282,37291,37295,37290,37301,
-37300,37306,37312,37313,37321,37323,37328,37334,37343,37345,37339,37372,37365,
-37366,37406,37375,37396,37420,37397,37393,37470,37463,37445,37449,37476,37448,
-37525,37439,37451,37456,37532,37526,37523,37531,37466,37583,37561,37559,37609,
-37647,37626,37700,37678,37657,37666,37658,37667,37690,37685,37691,37724,37728,
-37756,37742,37718,37808,37804,37805,37780,37817,37846,37847,37864,37861,37848,
-37827,37853,37840,37832,37860,37914,37908,37907,37891,37895,37904,37942,37931,
-37941,37921,37946,37953,37970,37956,37979,37984,37986,37982,37994,37417,38000,
-38005,38007,38013,37978,38012,38014,38017,38015,38274,38279,38282,38292,38294,
-38296,38297,38304,38312,38311,38317,38332,38331,38329,38334,38346,28662,38339,
-38349,38348,38357,38356,38358,38364,38369,38373,38370,38433,38440,38446,38447,
-38466,38476,38479,38475,38519,38492,38494,38493,38495,38502,38514,38508,38541,
-38552,38549,38551,38570,38567,38577,38578,38576,38580,38582,38584,38585,38606,
-38603,38601,38605,35149,38620,38669,38613,38649,38660,38662,38664,38675,38670,
-38673,38671,38678,38681,38692,38698,38704,38713,38717,38718,38724,38726,38728,
-38722,38729,38748,38752,38756,38758,38760,21202,38763,38769,38777,38789,38780,
-38785,38778,38790,38795,38799,38800,38812,38824,38822,38819,38835,38836,38851,
-38854,38856,38859,38876,38893,40783,38898,31455,38902,38901,38927,38924,38968,
-38948,38945,38967,38973,38982,38991,38987,39019,39023,39024,39025,39028,39027,
-39082,39087,39089,39094,39108,39107,39110,39145,39147,39171,39177,39186,39188,
-39192,39201,39197,39198,39204,39200,39212,39214,39229,39230,39234,39241,39237,
-39248,39243,39249,39250,39244,39253,39319,39320,39333,39341,39342,39356,39391,
-39387,39389,39384,39377,39405,39406,39409,39410,39419,39416,39425,39439,39429,
-39394,39449,39467,39479,39493,39490,39488,39491,39486,39509,39501,39515,39511,
-39519,39522,39525,39524,39529,39531,39530,39597,39600,39612,39616,39631,39633,
-39635,39636,39646,39647,39650,39651,39654,39663,39659,39662,39668,39665,39671,
-39675,39686,39704,39706,39711,39714,39715,39717,39719,39720,39721,39722,39726,
-39727,39730,39748,39747,39759,39757,39758,39761,39768,39796,39827,39811,39825,
-39830,39831,39839,39840,39848,39860,39872,39882,39865,39878,39887,39889,39890,
-39907,39906,39908,39892,39905,39994,39922,39921,39920,39957,39956,39945,39955,
-39948,39942,39944,39954,39946,39940,39982,39963,39973,39972,39969,39984,40007,
-39986,40006,39998,40026,40032,40039,40054,40056,40167,40172,40176,40201,40200,
-40171,40195,40198,40234,40230,40367,40227,40223,40260,40213,40210,40257,40255,
-40254,40262,40264,40285,40286,40292,40273,40272,40281,40306,40329,40327,40363,
-40303,40314,40346,40356,40361,40370,40388,40385,40379,40376,40378,40390,40399,
-40386,40409,40403,40440,40422,40429,40431,40445,40474,40475,40478,40565,40569,
-40573,40577,40584,40587,40588,40594,40597,40593,40605,40613,40617,40632,40618,
-40621,38753,40652,40654,40655,40656,40660,40668,40670,40669,40672,40677,40680,
-40687,40692,40694,40695,40697,40699,40700,40701,40711,40712,30391,40725,40737,
-40748,40766,40778,40786,40788,40803,40799,40800,40801,40806,40807,40812,40810,
-40823,40818,40822,40853,40860,40864,22575,27079,36953,29796,20956,29081,
+12288, 12289, 12290, 65292, 65294, 12539, 65306, 65307, 65311, 65281, 12443,
+    12444, 180, 65344, 168, 65342, 65507, 65343, 12541, 12542, 12445, 12446,
+    12291, 20189, 12293, 12294, 12295, 12540, 8213, 8208, 65295, 92, 12316,
+    8214, 65372, 8230, 8229, 8216, 8217, 8220, 8221, 65288, 65289, 12308, 12309,
+    65339, 65341, 65371, 65373, 12296, 12297, 12298, 12299, 12300, 12301, 12302,
+    12303, 12304, 12305, 65291, 8722, 177, 215, 247, 65309, 8800, 65308, 65310,
+    8806, 8807, 8734, 8756, 9794, 9792, 176, 8242, 8243, 8451, 65509, 65284,
+    162, 163, 65285, 65283, 65286, 65290, 65312, 167, 9734, 9733, 9675, 9679,
+    9678, 9671, 9670, 9633, 9632, 9651, 9650, 9661, 9660, 8251, 12306, 8594,
+    8592, 8593, 8595, 12307, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8712, 8715, 8838,
+    8839, 8834, 8835, 8746, 8745, 0, 0, 0, 0, 0, 0, 0, 0, 8743, 8744, 172, 8658,
+    8660, 8704, 8707, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8736, 8869, 8978, 8706,
+    8711, 8801, 8786, 8810, 8811, 8730, 8765, 8733, 8757, 8747, 8748, 0, 0, 0,
+    0, 0, 0, 0, 8491, 8240, 9839, 9837, 9834, 8224, 8225, 182, 0, 0, 0, 0, 9711,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65296, 65297, 65298, 65299,
+    65300, 65301, 65302, 65303, 65304, 65305, 0, 0, 0, 0, 0, 0, 0, 65313, 65314,
+    65315, 65316, 65317, 65318, 65319, 65320, 65321, 65322, 65323, 65324, 65325,
+    65326, 65327, 65328, 65329, 65330, 65331, 65332, 65333, 65334, 65335, 65336,
+    65337, 65338, 0, 0, 0, 0, 0, 0, 65345, 65346, 65347, 65348, 65349, 65350,
+    65351, 65352, 65353, 65354, 65355, 65356, 65357, 65358, 65359, 65360, 65361,
+    65362, 65363, 65364, 65365, 65366, 65367, 65368, 65369, 65370, 0, 0, 0, 0,
+    12353, 12354, 12355, 12356, 12357, 12358, 12359, 12360, 12361, 12362, 12363,
+    12364, 12365, 12366, 12367, 12368, 12369, 12370, 12371, 12372, 12373, 12374,
+    12375, 12376, 12377, 12378, 12379, 12380, 12381, 12382, 12383, 12384, 12385,
+    12386, 12387, 12388, 12389, 12390, 12391, 12392, 12393, 12394, 12395, 12396,
+    12397, 12398, 12399, 12400, 12401, 12402, 12403, 12404, 12405, 12406, 12407,
+    12408, 12409, 12410, 12411, 12412, 12413, 12414, 12415, 12416, 12417, 12418,
+    12419, 12420, 12421, 12422, 12423, 12424, 12425, 12426, 12427, 12428, 12429,
+    12430, 12431, 12432, 12433, 12434, 12435, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    12449, 12450, 12451, 12452, 12453, 12454, 12455, 12456, 12457, 12458, 12459,
+    12460, 12461, 12462, 12463, 12464, 12465, 12466, 12467, 12468, 12469, 12470,
+    12471, 12472, 12473, 12474, 12475, 12476, 12477, 12478, 12479, 12480, 12481,
+    12482, 12483, 12484, 12485, 12486, 12487, 12488, 12489, 12490, 12491, 12492,
+    12493, 12494, 12495, 12496, 12497, 12498, 12499, 12500, 12501, 12502, 12503,
+    12504, 12505, 12506, 12507, 12508, 12509, 12510, 12511, 12512, 12513, 12514,
+    12515, 12516, 12517, 12518, 12519, 12520, 12521, 12522, 12523, 12524, 12525,
+    12526, 12527, 12528, 12529, 12530, 12531, 12532, 12533, 12534, 0, 0, 0, 0,
+    0, 0, 0, 0, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925,
+    926, 927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 0, 0, 0, 0, 0, 0, 0,
+    0, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957, 958,
+    959, 960, 961, 963, 964, 965, 966, 967, 968, 969, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 1040, 1041, 1042, 1043, 1044, 1045, 1025, 1046, 1047, 1048,
+    1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060,
+    1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1072, 1073, 1074, 1075, 1076, 1077,
+    1105, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087, 1088,
+    1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099, 1100,
+    1101, 1102, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9472, 9474, 9484,
+    9488, 9496, 9492, 9500, 9516, 9508, 9524, 9532, 9473, 9475, 9487, 9491,
+    9499, 9495, 9507, 9523, 9515, 9531, 9547, 9504, 9519, 9512, 9527, 9535,
+    9501, 9520, 9509, 9528, 9538, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 20124, 21782, 23043, 38463, 21696, 24859, 25384, 23030,
+    36898, 33909, 33564, 31312, 24746, 25569, 28197, 26093, 33894, 33446, 39925,
+    26771, 22311, 26017, 25201, 23451, 22992, 34427, 39156, 32098, 32190, 39822,
+    25110, 31903, 34999, 23433, 24245, 25353, 26263, 26696, 38343, 38797, 26447,
+    20197, 20234, 20301, 20381, 20553, 22258, 22839, 22996, 23041, 23561, 24799,
+    24847, 24944, 26131, 26885, 28858, 30031, 30064, 31227, 32173, 32239, 32963,
+    33806, 34915, 35586, 36949, 36986, 21307, 20117, 20133, 22495, 32946, 37057,
+    30959, 19968, 22769, 28322, 36920, 31282, 33576, 33419, 39983, 20801, 21360,
+    21693, 21729, 22240, 23035, 24341, 39154, 28139, 32996, 34093, 38498, 38512,
+    38560, 38907, 21515, 21491, 23431, 28879, 32701, 36802, 38632, 21359, 40284,
+    31418, 19985, 30867, 33276, 28198, 22040, 21764, 27421, 34074, 39995, 23013,
+    21417, 28006, 29916, 38287, 22082, 20113, 36939, 38642, 33615, 39180, 21473,
+    21942, 23344, 24433, 26144, 26355, 26628, 27704, 27891, 27945, 29787, 30408,
+    31310, 38964, 33521, 34907, 35424, 37613, 28082, 30123, 30410, 39365, 24742,
+    35585, 36234, 38322, 27022, 21421, 20870, 22290, 22576, 22852, 23476, 24310,
+    24616, 25513, 25588, 27839, 28436, 28814, 28948, 29017, 29141, 29503, 32257,
+    33398, 33489, 34199, 36960, 37467, 40219, 22633, 26044, 27738, 29989, 20985,
+    22830, 22885, 24448, 24540, 25276, 26106, 27178, 27431, 27572, 29579, 32705,
+    35158, 40236, 40206, 40644, 23713, 27798, 33659, 20740, 23627, 25014, 33222,
+    26742, 29281, 20057, 20474, 21368, 24681, 28201, 31311, 38899, 19979, 21270,
+    20206, 20309, 20285, 20385, 20339, 21152, 21487, 22025, 22799, 23233, 23478,
+    23521, 31185, 26247, 26524, 26550, 27468, 27827, 28779, 29634, 31117, 31166,
+    31292, 31623, 33457, 33499, 33540, 33655, 33775, 33747, 34662, 35506, 22057,
+    36008, 36838, 36942, 38686, 34442, 20420, 23784, 25105, 29273, 30011, 33253,
+    33469, 34558, 36032, 38597, 39187, 39381, 20171, 20250, 35299, 22238, 22602,
+    22730, 24315, 24555, 24618, 24724, 24674, 25040, 25106, 25296, 25913, 39745,
+    26214, 26800, 28023, 28784, 30028, 30342, 32117, 33445, 34809, 38283, 38542,
+    35997, 20977, 21182, 22806, 21683, 23475, 23830, 24936, 27010, 28079, 30861,
+    33995, 34903, 35442, 37799, 39608, 28012, 39336, 34521, 22435, 26623, 34510,
+    37390, 21123, 22151, 21508, 24275, 25313, 25785, 26684, 26680, 27579, 29554,
+    30906, 31339, 35226, 35282, 36203, 36611, 37101, 38307, 38548, 38761, 23398,
+    23731, 27005, 38989, 38990, 25499, 31520, 27179, 27263, 26806, 39949, 28511,
+    21106, 21917, 24688, 25324, 27963, 28167, 28369, 33883, 35088, 36676, 19988,
+    39993, 21494, 26907, 27194, 38788, 26666, 20828, 31427, 33970, 37340, 37772,
+    22107, 40232, 26658, 33541, 33841, 31909, 21000, 33477, 29926, 20094, 20355,
+    20896, 23506, 21002, 21208, 21223, 24059, 21914, 22570, 23014, 23436, 23448,
+    23515, 24178, 24185, 24739, 24863, 24931, 25022, 25563, 25954, 26577, 26707,
+    26874, 27454, 27475, 27735, 28450, 28567, 28485, 29872, 29976, 30435, 30475,
+    31487, 31649, 31777, 32233, 32566, 32752, 32925, 33382, 33694, 35251, 35532,
+    36011, 36996, 37969, 38291, 38289, 38306, 38501, 38867, 39208, 33304, 20024,
+    21547, 23736, 24012, 29609, 30284, 30524, 23721, 32747, 36107, 38593, 38929,
+    38996, 39000, 20225, 20238, 21361, 21916, 22120, 22522, 22855, 23305, 23492,
+    23696, 24076, 24190, 24524, 25582, 26426, 26071, 26082, 26399, 26827, 26820,
+    27231, 24112, 27589, 27671, 27773, 30079, 31048, 23395, 31232, 32000, 24509,
+    35215, 35352, 36020, 36215, 36556, 36637, 39138, 39438, 39740, 20096, 20605,
+    20736, 22931, 23452, 25135, 25216, 25836, 27450, 29344, 30097, 31047, 32681,
+    34811, 35516, 35696, 25516, 33738, 38816, 21513, 21507, 21931, 26708, 27224,
+    35440, 30759, 26485, 40653, 21364, 23458, 33050, 34384, 36870, 19992, 20037,
+    20167, 20241, 21450, 21560, 23470, 24339, 24613, 25937, 26429, 27714, 27762,
+    27875, 28792, 29699, 31350, 31406, 31496, 32026, 31998, 32102, 26087, 29275,
+    21435, 23621, 24040, 25298, 25312, 25369, 28192, 34394, 35377, 36317, 37624,
+    28417, 31142, 39770, 20136, 20139, 20140, 20379, 20384, 20689, 20807, 31478,
+    20849, 20982, 21332, 21281, 21375, 21483, 21932, 22659, 23777, 24375, 24394,
+    24623, 24656, 24685, 25375, 25945, 27211, 27841, 29378, 29421, 30703, 33016,
+    33029, 33288, 34126, 37111, 37857, 38911, 39255, 39514, 20208, 20957, 23597,
+    26241, 26989, 23616, 26354, 26997, 29577, 26704, 31873, 20677, 21220, 22343,
+    24062, 37670, 26020, 27427, 27453, 29748, 31105, 31165, 31563, 32202, 33465,
+    33740, 34943, 35167, 35641, 36817, 37329, 21535, 37504, 20061, 20534, 21477,
+    21306, 29399, 29590, 30697, 33510, 36527, 39366, 39368, 39378, 20855, 24858,
+    34398, 21936, 31354, 20598, 23507, 36935, 38533, 20018, 27355, 37351, 23633,
+    23624, 25496, 31391, 27795, 38772, 36705, 31402, 29066, 38536, 31874, 26647,
+    32368, 26705, 37740, 21234, 21531, 34219, 35347, 32676, 36557, 37089, 21350,
+    34952, 31041, 20418, 20670, 21009, 20804, 21843, 22317, 29674, 22411, 22865,
+    24418, 24452, 24693, 24950, 24935, 25001, 25522, 25658, 25964, 26223, 26690,
+    28179, 30054, 31293, 31995, 32076, 32153, 32331, 32619, 33550, 33610, 34509,
+    35336, 35427, 35686, 36605, 38938, 40335, 33464, 36814, 39912, 21127, 25119,
+    25731, 28608, 38553, 26689, 20625, 27424, 27770, 28500, 31348, 32080, 34880,
+    35363, 26376, 20214, 20537, 20518, 20581, 20860, 21048, 21091, 21927, 22287,
+    22533, 23244, 24314, 25010, 25080, 25331, 25458, 26908, 27177, 29309, 29356,
+    29486, 30740, 30831, 32121, 30476, 32937, 35211, 35609, 36066, 36562, 36963,
+    37749, 38522, 38997, 39443, 40568, 20803, 21407, 21427, 24187, 24358, 28187,
+    28304, 29572, 29694, 32067, 33335, 35328, 35578, 38480, 20046, 20491, 21476,
+    21628, 22266, 22993, 23396, 24049, 24235, 24359, 25144, 25925, 26543, 28246,
+    29392, 31946, 34996, 32929, 32993, 33776, 34382, 35463, 36328, 37431, 38599,
+    39015, 40723, 20116, 20114, 20237, 21320, 21577, 21566, 23087, 24460, 24481,
+    24735, 26791, 27278, 29786, 30849, 35486, 35492, 35703, 37264, 20062, 39881,
+    20132, 20348, 20399, 20505, 20502, 20809, 20844, 21151, 21177, 21246, 21402,
+    21475, 21521, 21518, 21897, 22353, 22434, 22909, 23380, 23389, 23439, 24037,
+    24039, 24055, 24184, 24195, 24218, 24247, 24344, 24658, 24908, 25239, 25304,
+    25511, 25915, 26114, 26179, 26356, 26477, 26657, 26775, 27083, 27743, 27946,
+    28009, 28207, 28317, 30002, 30343, 30828, 31295, 31968, 32005, 32024, 32094,
+    32177, 32789, 32771, 32943, 32945, 33108, 33167, 33322, 33618, 34892, 34913,
+    35611, 36002, 36092, 37066, 37237, 37489, 30783, 37628, 38308, 38477, 38917,
+    39321, 39640, 40251, 21083, 21163, 21495, 21512, 22741, 25335, 28640, 35946,
+    36703, 40633, 20811, 21051, 21578, 22269, 31296, 37239, 40288, 40658, 29508,
+    28425, 33136, 29969, 24573, 24794, 39592, 29403, 36796, 27492, 38915, 20170,
+    22256, 22372, 22718, 23130, 24680, 25031, 26127, 26118, 26681, 26801, 28151,
+    30165, 32058, 33390, 39746, 20123, 20304, 21449, 21766, 23919, 24038, 24046,
+    26619, 27801, 29811, 30722, 35408, 37782, 35039, 22352, 24231, 25387, 20661,
+    20652, 20877, 26368, 21705, 22622, 22971, 23472, 24425, 25165, 25505, 26685,
+    27507, 28168, 28797, 37319, 29312, 30741, 30758, 31085, 25998, 32048, 33756,
+    35009, 36617, 38555, 21092, 22312, 26448, 32618, 36001, 20916, 22338, 38442,
+    22586, 27018, 32948, 21682, 23822, 22524, 30869, 40442, 20316, 21066, 21643,
+    25662, 26152, 26388, 26613, 31364, 31574, 32034, 37679, 26716, 39853, 31545,
+    21273, 20874, 21047, 23519, 25334, 25774, 25830, 26413, 27578, 34217, 38609,
+    30352, 39894, 25420, 37638, 39851, 30399, 26194, 19977, 20632, 21442, 23665,
+    24808, 25746, 25955, 26719, 29158, 29642, 29987, 31639, 32386, 34453, 35715,
+    36059, 37240, 39184, 26028, 26283, 27531, 20181, 20180, 20282, 20351, 21050,
+    21496, 21490, 21987, 22235, 22763, 22987, 22985, 23039, 23376, 23629, 24066,
+    24107, 24535, 24605, 25351, 25903, 23388, 26031, 26045, 26088, 26525, 27490,
+    27515, 27663, 29509, 31049, 31169, 31992, 32025, 32043, 32930, 33026, 33267,
+    35222, 35422, 35433, 35430, 35468, 35566, 36039, 36060, 38604, 39164, 27503,
+    20107, 20284, 20365, 20816, 23383, 23546, 24904, 25345, 26178, 27425, 28363,
+    27835, 29246, 29885, 30164, 30913, 31034, 32780, 32819, 33258, 33940, 36766,
+    27728, 40575, 24335, 35672, 40235, 31482, 36600, 23437, 38635, 19971, 21489,
+    22519, 22833, 23241, 23460, 24713, 28287, 28422, 30142, 36074, 23455, 34048,
+    31712, 20594, 26612, 33437, 23649, 34122, 32286, 33294, 20889, 23556, 25448,
+    36198, 26012, 29038, 31038, 32023, 32773, 35613, 36554, 36974, 34503, 37034,
+    20511, 21242, 23610, 26451, 28796, 29237, 37196, 37320, 37675, 33509, 23490,
+    24369, 24825, 20027, 21462, 23432, 25163, 26417, 27530, 29417, 29664, 31278,
+    33131, 36259, 37202, 39318, 20754, 21463, 21610, 23551, 25480, 27193, 32172,
+    38656, 22234, 21454, 21608, 23447, 23601, 24030, 20462, 24833, 25342, 27954,
+    31168, 31179, 32066, 32333, 32722, 33261, 33311, 33936, 34886, 35186, 35728,
+    36468, 36655, 36913, 37195, 37228, 38598, 37276, 20160, 20303, 20805, 21313,
+    24467, 25102, 26580, 27713, 28171, 29539, 32294, 37325, 37507, 21460, 22809,
+    23487, 28113, 31069, 32302, 31899, 22654, 29087, 20986, 34899, 36848, 20426,
+    23803, 26149, 30636, 31459, 33308, 39423, 20934, 24490, 26092, 26991, 27529,
+    28147, 28310, 28516, 30462, 32020, 24033, 36981, 37255, 38918, 20966, 21021,
+    25152, 26257, 26329, 28186, 24246, 32210, 32626, 26360, 34223, 34295, 35576,
+    21161, 21465, 22899, 24207, 24464, 24661, 37604, 38500, 20663, 20767, 21213,
+    21280, 21319, 21484, 21736, 21830, 21809, 22039, 22888, 22974, 23100, 23477,
+    23558, 23567, 23569, 23578, 24196, 24202, 24288, 24432, 25215, 25220, 25307,
+    25484, 25463, 26119, 26124, 26157, 26230, 26494, 26786, 27167, 27189, 27836,
+    28040, 28169, 28248, 28988, 28966, 29031, 30151, 30465, 30813, 30977, 31077,
+    31216, 31456, 31505, 31911, 32057, 32918, 33750, 33931, 34121, 34909, 35059,
+    35359, 35388, 35412, 35443, 35937, 36062, 37284, 37478, 37758, 37912, 38556,
+    38808, 19978, 19976, 19998, 20055, 20887, 21104, 22478, 22580, 22732, 23330,
+    24120, 24773, 25854, 26465, 26454, 27972, 29366, 30067, 31331, 33976, 35698,
+    37304, 37664, 22065, 22516, 39166, 25325, 26893, 27542, 29165, 32340, 32887,
+    33394, 35302, 39135, 34645, 36785, 23611, 20280, 20449, 20405, 21767, 23072,
+    23517, 23529, 24515, 24910, 25391, 26032, 26187, 26862, 27035, 28024, 28145,
+    30003, 30137, 30495, 31070, 31206, 32051, 33251, 33455, 34218, 35242, 35386,
+    36523, 36763, 36914, 37341, 38663, 20154, 20161, 20995, 22645, 22764, 23563,
+    29978, 23613, 33102, 35338, 36805, 38499, 38765, 31525, 35535, 38920, 37218,
+    22259, 21416, 36887, 21561, 22402, 24101, 25512, 27700, 28810, 30561, 31883,
+    32736, 34928, 36930, 37204, 37648, 37656, 38543, 29790, 39620, 23815, 23913,
+    25968, 26530, 36264, 38619, 25454, 26441, 26905, 33733, 38935, 38592, 35070,
+    28548, 25722, 23544, 19990, 28716, 30045, 26159, 20932, 21046, 21218, 22995,
+    24449, 24615, 25104, 25919, 25972, 26143, 26228, 26866, 26646, 27491, 28165,
+    29298, 29983, 30427, 31934, 32854, 22768, 35069, 35199, 35488, 35475, 35531,
+    36893, 37266, 38738, 38745, 25993, 31246, 33030, 38587, 24109, 24796, 25114,
+    26021, 26132, 26512, 30707, 31309, 31821, 32318, 33034, 36012, 36196, 36321,
+    36447, 30889, 20999, 25305, 25509, 25666, 25240, 35373, 31363, 31680, 35500,
+    38634, 32118, 33292, 34633, 20185, 20808, 21315, 21344, 23459, 23554, 23574,
+    24029, 25126, 25159, 25776, 26643, 26676, 27849, 27973, 27927, 26579, 28508,
+    29006, 29053, 26059, 31359, 31661, 32218, 32330, 32680, 33146, 33307, 33337,
+    34214, 35438, 36046, 36341, 36984, 36983, 37549, 37521, 38275, 39854, 21069,
+    21892, 28472, 28982, 20840, 31109, 32341, 33203, 31950, 22092, 22609, 23720,
+    25514, 26366, 26365, 26970, 29401, 30095, 30094, 30990, 31062, 31199, 31895,
+    32032, 32068, 34311, 35380, 38459, 36961, 40736, 20711, 21109, 21452, 21474,
+    20489, 21930, 22766, 22863, 29245, 23435, 23652, 21277, 24803, 24819, 25436,
+    25475, 25407, 25531, 25805, 26089, 26361, 24035, 27085, 27133, 28437, 29157,
+    20105, 30185, 30456, 31379, 31967, 32207, 32156, 32865, 33609, 33624, 33900,
+    33980, 34299, 35013, 36208, 36865, 36973, 37783, 38684, 39442, 20687, 22679,
+    24974, 33235, 34101, 36104, 36896, 20419, 20596, 21063, 21363, 24687, 25417,
+    26463, 28204, 36275, 36895, 20439, 23646, 36042, 26063, 32154, 21330, 34966,
+    20854, 25539, 23384, 23403, 23562, 25613, 26449, 36956, 20182, 22810, 22826,
+    27760, 35409, 21822, 22549, 22949, 24816, 25171, 26561, 33333, 26965, 38464,
+    39364, 39464, 20307, 22534, 23550, 32784, 23729, 24111, 24453, 24608, 24907,
+    25140, 26367, 27888, 28382, 32974, 33151, 33492, 34955, 36024, 36864, 36910,
+    38538, 40667, 39899, 20195, 21488, 22823, 31532, 37261, 38988, 40441, 28381,
+    28711, 21331, 21828, 23429, 25176, 25246, 25299, 27810, 28655, 29730, 35351,
+    37944, 28609, 35582, 33592, 20967, 34552, 21482, 21481, 20294, 36948, 36784,
+    22890, 33073, 24061, 31466, 36799, 26842, 35895, 29432, 40008, 27197, 35504,
+    20025, 21336, 22022, 22374, 25285, 25506, 26086, 27470, 28129, 28251, 28845,
+    30701, 31471, 31658, 32187, 32829, 32966, 34507, 35477, 37723, 22243, 22727,
+    24382, 26029, 26262, 27264, 27573, 30007, 35527, 20516, 30693, 22320, 24347,
+    24677, 26234, 27744, 30196, 31258, 32622, 33268, 34584, 36933, 39347, 31689,
+    30044, 31481, 31569, 33988, 36880, 31209, 31378, 33590, 23265, 30528, 20013,
+    20210, 23449, 24544, 25277, 26172, 26609, 27880, 34411, 34935, 35387, 37198,
+    37619, 39376, 27159, 28710, 29482, 33511, 33879, 36015, 19969, 20806, 20939,
+    21899, 23541, 24086, 24115, 24193, 24340, 24373, 24427, 24500, 25074, 25361,
+    26274, 26397, 28526, 29266, 30010, 30522, 32884, 33081, 33144, 34678, 35519,
+    35548, 36229, 36339, 37530, 38263, 38914, 40165, 21189, 25431, 30452, 26389,
+    27784, 29645, 36035, 37806, 38515, 27941, 22684, 26894, 27084, 36861, 37786,
+    30171, 36890, 22618, 26626, 25524, 27131, 20291, 28460, 26584, 36795, 34086,
+    32180, 37716, 26943, 28528, 22378, 22775, 23340, 32044, 29226, 21514, 37347,
+    40372, 20141, 20302, 20572, 20597, 21059, 35998, 21576, 22564, 23450, 24093,
+    24213, 24237, 24311, 24351, 24716, 25269, 25402, 25552, 26799, 27712, 30855,
+    31118, 31243, 32224, 33351, 35330, 35558, 36420, 36883, 37048, 37165, 37336,
+    40718, 27877, 25688, 25826, 25973, 28404, 30340, 31515, 36969, 37841, 28346,
+    21746, 24505, 25764, 36685, 36845, 37444, 20856, 22635, 22825, 23637, 24215,
+    28155, 32399, 29980, 36028, 36578, 39003, 28857, 20253, 27583, 28593, 30000,
+    38651, 20814, 21520, 22581, 22615, 22956, 23648, 24466, 26007, 26460, 28193,
+    30331, 33759, 36077, 36884, 37117, 37709, 30757, 30778, 21162, 24230, 22303,
+    22900, 24594, 20498, 20826, 20908, 20941, 20992, 21776, 22612, 22616, 22871,
+    23445, 23798, 23947, 24764, 25237, 25645, 26481, 26691, 26812, 26847, 30423,
+    28120, 28271, 28059, 28783, 29128, 24403, 30168, 31095, 31561, 31572, 31570,
+    31958, 32113, 21040, 33891, 34153, 34276, 35342, 35588, 35910, 36367, 36867,
+    36879, 37913, 38518, 38957, 39472, 38360, 20685, 21205, 21516, 22530, 23566,
+    24999, 25758, 27934, 30643, 31461, 33012, 33796, 36947, 37509, 23776, 40199,
+    21311, 24471, 24499, 28060, 29305, 30563, 31167, 31716, 27602, 29420, 35501,
+    26627, 27233, 20984, 31361, 26932, 23626, 40182, 33515, 23493, 37193, 28702,
+    22136, 23663, 24775, 25958, 27788, 35930, 36929, 38931, 21585, 26311, 37389,
+    22856, 37027, 20869, 20045, 20970, 34201, 35598, 28760, 25466, 37707, 26978,
+    39348, 32260, 30071, 21335, 26976, 36575, 38627, 27741, 20108, 23612, 24336,
+    36841, 21250, 36049, 32905, 34425, 24319, 26085, 20083, 20837, 22914, 23615,
+    38894, 20219, 22922, 24525, 35469, 28641, 31152, 31074, 23527, 33905, 29483,
+    29105, 24180, 24565, 25467, 25754, 29123, 31896, 20035, 24316, 20043, 22492,
+    22178, 24745, 28611, 32013, 33021, 33075, 33215, 36786, 35223, 34468, 24052,
+    25226, 25773, 35207, 26487, 27874, 27966, 29750, 30772, 23110, 32629, 33453,
+    39340, 20467, 24259, 25309, 25490, 25943, 26479, 30403, 29260, 32972, 32954,
+    36649, 37197, 20493, 22521, 23186, 26757, 26995, 29028, 29437, 36023, 22770,
+    36064, 38506, 36889, 34687, 31204, 30695, 33833, 20271, 21093, 21338, 25293,
+    26575, 27850, 30333, 31636, 31893, 33334, 34180, 36843, 26333, 28448, 29190,
+    32283, 33707, 39361, 40614, 20989, 31665, 30834, 31672, 32903, 31560, 27368,
+    24161, 32908, 30033, 30048, 20843, 37474, 28300, 30330, 37271, 39658, 20240,
+    32624, 25244, 31567, 38309, 40169, 22138, 22617, 34532, 38588, 20276, 21028,
+    21322, 21453, 21467, 24070, 25644, 26001, 26495, 27710, 27726, 29256, 29359,
+    29677, 30036, 32321, 33324, 34281, 36009, 31684, 37318, 29033, 38930, 39151,
+    25405, 26217, 30058, 30436, 30928, 34115, 34542, 21290, 21329, 21542, 22915,
+    24199, 24444, 24754, 25161, 25209, 25259, 26000, 27604, 27852, 30130, 30382,
+    30865, 31192, 32203, 32631, 32933, 34987, 35513, 36027, 36991, 38750, 39131,
+    27147, 31800, 20633, 23614, 24494, 26503, 27608, 29749, 30473, 32654, 40763,
+    26570, 31255, 21305, 30091, 39661, 24422, 33181, 33777, 32920, 24380, 24517,
+    30050, 31558, 36924, 26727, 23019, 23195, 32016, 30334, 35628, 20469, 24426,
+    27161, 27703, 28418, 29922, 31080, 34920, 35413, 35961, 24287, 25551, 30149,
+    31186, 33495, 37672, 37618, 33948, 34541, 39981, 21697, 24428, 25996, 27996,
+    28693, 36007, 36051, 38971, 25935, 29942, 19981, 20184, 22496, 22827, 23142,
+    23500, 20904, 24067, 24220, 24598, 25206, 25975, 26023, 26222, 28014, 29238,
+    31526, 33104, 33178, 33433, 35676, 36000, 36070, 36212, 38428, 38468, 20398,
+    25771, 27494, 33310, 33889, 34154, 37096, 23553, 26963, 39080, 33914, 34135,
+    20239, 21103, 24489, 24133, 26381, 31119, 33145, 35079, 35206, 28149, 24343,
+    25173, 27832, 20175, 29289, 39826, 20998, 21563, 22132, 22707, 24996, 25198,
+    28954, 22894, 31881, 31966, 32027, 38640, 25991, 32862, 19993, 20341, 20853,
+    22592, 24163, 24179, 24330, 26564, 20006, 34109, 38281, 38491, 31859, 38913,
+    20731, 22721, 30294, 30887, 21029, 30629, 34065, 31622, 20559, 22793, 29255,
+    31687, 32232, 36794, 36820, 36941, 20415, 21193, 23081, 24321, 38829, 20445,
+    33303, 37610, 22275, 25429, 27497, 29995, 35036, 36628, 31298, 21215, 22675,
+    24917, 25098, 26286, 27597, 31807, 33769, 20515, 20472, 21253, 21574, 22577,
+    22857, 23453, 23792, 23791, 23849, 24214, 25265, 25447, 25918, 26041, 26379,
+    27861, 27873, 28921, 30770, 32299, 32990, 33459, 33804, 34028, 34562, 35090,
+    35370, 35914, 37030, 37586, 39165, 40179, 40300, 20047, 20129, 20621, 21078,
+    22346, 22952, 24125, 24536, 24537, 25151, 26292, 26395, 26576, 26834, 20882,
+    32033, 32938, 33192, 35584, 35980, 36031, 37502, 38450, 21536, 38956, 21271,
+    20693, 21340, 22696, 25778, 26420, 29287, 30566, 31302, 37350, 21187, 27809,
+    27526, 22528, 24140, 22868, 26412, 32763, 20961, 30406, 25705, 30952, 39764,
+    40635, 22475, 22969, 26151, 26522, 27598, 21737, 27097, 24149, 33180, 26517,
+    39850, 26622, 40018, 26717, 20134, 20451, 21448, 25273, 26411, 27819, 36804,
+    20397, 32365, 40639, 19975, 24930, 28288, 28459, 34067, 21619, 26410, 39749,
+    24051, 31637, 23724, 23494, 34588, 28234, 34001, 31252, 33032, 22937, 31885,
+    27665, 30496, 21209, 22818, 28961, 29279, 30683, 38695, 40289, 26891, 23167,
+    23064, 20901, 21517, 21629, 26126, 30431, 36855, 37528, 40180, 23018, 29277,
+    28357, 20813, 26825, 32191, 32236, 38754, 40634, 25720, 27169, 33538, 22916,
+    23391, 27611, 29467, 30450, 32178, 32791, 33945, 20786, 26408, 40665, 30446,
+    26466, 21247, 39173, 23588, 25147, 31870, 36016, 21839, 24758, 32011, 38272,
+    21249, 20063, 20918, 22812, 29242, 32822, 37326, 24357, 30690, 21380, 24441,
+    32004, 34220, 35379, 36493, 38742, 26611, 34222, 37971, 24841, 24840, 27833,
+    30290, 35565, 36664, 21807, 20305, 20778, 21191, 21451, 23461, 24189, 24736,
+    24962, 25558, 26377, 26586, 28263, 28044, 29494, 29495, 30001, 31056, 35029,
+    35480, 36938, 37009, 37109, 38596, 34701, 22805, 20104, 20313, 19982, 35465,
+    36671, 38928, 20653, 24188, 22934, 23481, 24248, 25562, 25594, 25793, 26332,
+    26954, 27096, 27915, 28342, 29076, 29992, 31407, 32650, 32768, 33865, 33993,
+    35201, 35617, 36362, 36965, 38525, 39178, 24958, 25233, 27442, 27779, 28020,
+    32716, 32764, 28096, 32645, 34746, 35064, 26469, 33713, 38972, 38647, 27931,
+    32097, 33853, 37226, 20081, 21365, 23888, 27396, 28651, 34253, 34349, 35239,
+    21033, 21519, 23653, 26446, 26792, 29702, 29827, 30178, 35023, 35041, 37324,
+    38626, 38520, 24459, 29575, 31435, 33870, 25504, 30053, 21129, 27969, 28316,
+    29705, 30041, 30827, 31890, 38534, 31452, 40845, 20406, 24942, 26053, 34396,
+    20102, 20142, 20698, 20001, 20940, 23534, 26009, 26753, 28092, 29471, 30274,
+    30637, 31260, 31975, 33391, 35538, 36988, 37327, 38517, 38936, 21147, 32209,
+    20523, 21400, 26519, 28107, 29136, 29747, 33256, 36650, 38563, 40023, 40607,
+    29792, 22593, 28057, 32047, 39006, 20196, 20278, 20363, 20919, 21169, 23994,
+    24604, 29618, 31036, 33491, 37428, 38583, 38646, 38666, 40599, 40802, 26278,
+    27508, 21015, 21155, 28872, 35010, 24265, 24651, 24976, 28451, 29001, 31806,
+    32244, 32879, 34030, 36899, 37676, 21570, 39791, 27347, 28809, 36034, 36335,
+    38706, 21172, 23105, 24266, 24324, 26391, 27004, 27028, 28010, 28431, 29282,
+    29436, 31725, 32769, 32894, 34635, 37070, 20845, 40595, 31108, 32907, 37682,
+    35542, 20525, 21644, 35441, 27498, 36036, 33031, 24785, 26528, 40434, 20121,
+    20120, 39952, 35435, 34241, 34152, 26880, 28286, 30871, 33109, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24332, 19984, 19989, 20010, 20017,
+    20022, 20028, 20031, 20034, 20054, 20056, 20098, 20101, 35947, 20106, 33298,
+    24333, 20110, 20126, 20127, 20128, 20130, 20144, 20147, 20150, 20174, 20173,
+    20164, 20166, 20162, 20183, 20190, 20205, 20191, 20215, 20233, 20314, 20272,
+    20315, 20317, 20311, 20295, 20342, 20360, 20367, 20376, 20347, 20329, 20336,
+    20369, 20335, 20358, 20374, 20760, 20436, 20447, 20430, 20440, 20443, 20433,
+    20442, 20432, 20452, 20453, 20506, 20520, 20500, 20522, 20517, 20485, 20252,
+    20470, 20513, 20521, 20524, 20478, 20463, 20497, 20486, 20547, 20551, 26371,
+    20565, 20560, 20552, 20570, 20566, 20588, 20600, 20608, 20634, 20613, 20660,
+    20658, 20681, 20682, 20659, 20674, 20694, 20702, 20709, 20717, 20707, 20718,
+    20729, 20725, 20745, 20737, 20738, 20758, 20757, 20756, 20762, 20769, 20794,
+    20791, 20796, 20795, 20799, 20800, 20818, 20812, 20820, 20834, 31480, 20841,
+    20842, 20846, 20864, 20866, 22232, 20876, 20873, 20879, 20881, 20883, 20885,
+    20886, 20900, 20902, 20898, 20905, 20906, 20907, 20915, 20913, 20914, 20912,
+    20917, 20925, 20933, 20937, 20955, 20960, 34389, 20969, 20973, 20976, 20981,
+    20990, 20996, 21003, 21012, 21006, 21031, 21034, 21038, 21043, 21049, 21071,
+    21060, 21067, 21068, 21086, 21076, 21098, 21108, 21097, 21107, 21119, 21117,
+    21133, 21140, 21138, 21105, 21128, 21137, 36776, 36775, 21164, 21165, 21180,
+    21173, 21185, 21197, 21207, 21214, 21219, 21222, 39149, 21216, 21235, 21237,
+    21240, 21241, 21254, 21256, 30008, 21261, 21264, 21263, 21269, 21274, 21283,
+    21295, 21297, 21299, 21304, 21312, 21318, 21317, 19991, 21321, 21325, 20950,
+    21342, 21353, 21358, 22808, 21371, 21367, 21378, 21398, 21408, 21414, 21413,
+    21422, 21424, 21430, 21443, 31762, 38617, 21471, 26364, 29166, 21486, 21480,
+    21485, 21498, 21505, 21565, 21568, 21548, 21549, 21564, 21550, 21558, 21545,
+    21533, 21582, 21647, 21621, 21646, 21599, 21617, 21623, 21616, 21650, 21627,
+    21632, 21622, 21636, 21648, 21638, 21703, 21666, 21688, 21669, 21676, 21700,
+    21704, 21672, 21675, 21698, 21668, 21694, 21692, 21720, 21733, 21734, 21775,
+    21780, 21757, 21742, 21741, 21754, 21730, 21817, 21824, 21859, 21836, 21806,
+    21852, 21829, 21846, 21847, 21816, 21811, 21853, 21913, 21888, 21679, 21898,
+    21919, 21883, 21886, 21912, 21918, 21934, 21884, 21891, 21929, 21895, 21928,
+    21978, 21957, 21983, 21956, 21980, 21988, 21972, 22036, 22007, 22038, 22014,
+    22013, 22043, 22009, 22094, 22096, 29151, 22068, 22070, 22066, 22072, 22123,
+    22116, 22063, 22124, 22122, 22150, 22144, 22154, 22176, 22164, 22159, 22181,
+    22190, 22198, 22196, 22210, 22204, 22209, 22211, 22208, 22216, 22222, 22225,
+    22227, 22231, 22254, 22265, 22272, 22271, 22276, 22281, 22280, 22283, 22285,
+    22291, 22296, 22294, 21959, 22300, 22310, 22327, 22328, 22350, 22331, 22336,
+    22351, 22377, 22464, 22408, 22369, 22399, 22409, 22419, 22432, 22451, 22436,
+    22442, 22448, 22467, 22470, 22484, 22482, 22483, 22538, 22486, 22499, 22539,
+    22553, 22557, 22642, 22561, 22626, 22603, 22640, 27584, 22610, 22589, 22649,
+    22661, 22713, 22687, 22699, 22714, 22750, 22715, 22712, 22702, 22725, 22739,
+    22737, 22743, 22745, 22744, 22757, 22748, 22756, 22751, 22767, 22778, 22777,
+    22779, 22780, 22781, 22786, 22794, 22800, 22811, 26790, 22821, 22828, 22829,
+    22834, 22840, 22846, 31442, 22869, 22864, 22862, 22874, 22872, 22882, 22880,
+    22887, 22892, 22889, 22904, 22913, 22941, 20318, 20395, 22947, 22962, 22982,
+    23016, 23004, 22925, 23001, 23002, 23077, 23071, 23057, 23068, 23049, 23066,
+    23104, 23148, 23113, 23093, 23094, 23138, 23146, 23194, 23228, 23230, 23243,
+    23234, 23229, 23267, 23255, 23270, 23273, 23254, 23290, 23291, 23308, 23307,
+    23318, 23346, 23248, 23338, 23350, 23358, 23363, 23365, 23360, 23377, 23381,
+    23386, 23387, 23397, 23401, 23408, 23411, 23413, 23416, 25992, 23418, 23424,
+    23427, 23462, 23480, 23491, 23495, 23497, 23508, 23504, 23524, 23526, 23522,
+    23518, 23525, 23531, 23536, 23542, 23539, 23557, 23559, 23560, 23565, 23571,
+    23584, 23586, 23592, 23608, 23609, 23617, 23622, 23630, 23635, 23632, 23631,
+    23409, 23660, 23662, 20066, 23670, 23673, 23692, 23697, 23700, 22939, 23723,
+    23739, 23734, 23740, 23735, 23749, 23742, 23751, 23769, 23785, 23805, 23802,
+    23789, 23948, 23786, 23819, 23829, 23831, 23900, 23839, 23835, 23825, 23828,
+    23842, 23834, 23833, 23832, 23884, 23890, 23886, 23883, 23916, 23923, 23926,
+    23943, 23940, 23938, 23970, 23965, 23980, 23982, 23997, 23952, 23991, 23996,
+    24009, 24013, 24019, 24018, 24022, 24027, 24043, 24050, 24053, 24075, 24090,
+    24089, 24081, 24091, 24118, 24119, 24132, 24131, 24128, 24142, 24151, 24148,
+    24159, 24162, 24164, 24135, 24181, 24182, 24186, 40636, 24191, 24224, 24257,
+    24258, 24264, 24272, 24271, 24278, 24291, 24285, 24282, 24283, 24290, 24289,
+    24296, 24297, 24300, 24305, 24307, 24304, 24308, 24312, 24318, 24323, 24329,
+    24413, 24412, 24331, 24337, 24342, 24361, 24365, 24376, 24385, 24392, 24396,
+    24398, 24367, 24401, 24406, 24407, 24409, 24417, 24429, 24435, 24439, 24451,
+    24450, 24447, 24458, 24456, 24465, 24455, 24478, 24473, 24472, 24480, 24488,
+    24493, 24508, 24534, 24571, 24548, 24568, 24561, 24541, 24755, 24575, 24609,
+    24672, 24601, 24592, 24617, 24590, 24625, 24603, 24597, 24619, 24614, 24591,
+    24634, 24666, 24641, 24682, 24695, 24671, 24650, 24646, 24653, 24675, 24643,
+    24676, 24642, 24684, 24683, 24665, 24705, 24717, 24807, 24707, 24730, 24708,
+    24731, 24726, 24727, 24722, 24743, 24715, 24801, 24760, 24800, 24787, 24756,
+    24560, 24765, 24774, 24757, 24792, 24909, 24853, 24838, 24822, 24823, 24832,
+    24820, 24826, 24835, 24865, 24827, 24817, 24845, 24846, 24903, 24894, 24872,
+    24871, 24906, 24895, 24892, 24876, 24884, 24893, 24898, 24900, 24947, 24951,
+    24920, 24921, 24922, 24939, 24948, 24943, 24933, 24945, 24927, 24925, 24915,
+    24949, 24985, 24982, 24967, 25004, 24980, 24986, 24970, 24977, 25003, 25006,
+    25036, 25034, 25033, 25079, 25032, 25027, 25030, 25018, 25035, 32633, 25037,
+    25062, 25059, 25078, 25082, 25076, 25087, 25085, 25084, 25086, 25088, 25096,
+    25097, 25101, 25100, 25108, 25115, 25118, 25121, 25130, 25134, 25136, 25138,
+    25139, 25153, 25166, 25182, 25187, 25179, 25184, 25192, 25212, 25218, 25225,
+    25214, 25234, 25235, 25238, 25300, 25219, 25236, 25303, 25297, 25275, 25295,
+    25343, 25286, 25812, 25288, 25308, 25292, 25290, 25282, 25287, 25243, 25289,
+    25356, 25326, 25329, 25383, 25346, 25352, 25327, 25333, 25424, 25406, 25421,
+    25628, 25423, 25494, 25486, 25472, 25515, 25462, 25507, 25487, 25481, 25503,
+    25525, 25451, 25449, 25534, 25577, 25536, 25542, 25571, 25545, 25554, 25590,
+    25540, 25622, 25652, 25606, 25619, 25638, 25654, 25885, 25623, 25640, 25615,
+    25703, 25711, 25718, 25678, 25898, 25749, 25747, 25765, 25769, 25736, 25788,
+    25818, 25810, 25797, 25799, 25787, 25816, 25794, 25841, 25831, 33289, 25824,
+    25825, 25260, 25827, 25839, 25900, 25846, 25844, 25842, 25850, 25856, 25853,
+    25880, 25884, 25861, 25892, 25891, 25899, 25908, 25909, 25911, 25910, 25912,
+    30027, 25928, 25942, 25941, 25933, 25944, 25950, 25949, 25970, 25976, 25986,
+    25987, 35722, 26011, 26015, 26027, 26039, 26051, 26054, 26049, 26052, 26060,
+    26066, 26075, 26073, 26080, 26081, 26097, 26482, 26122, 26115, 26107, 26483,
+    26165, 26166, 26164, 26140, 26191, 26180, 26185, 26177, 26206, 26205, 26212,
+    26215, 26216, 26207, 26210, 26224, 26243, 26248, 26254, 26249, 26244, 26264,
+    26269, 26305, 26297, 26313, 26302, 26300, 26308, 26296, 26326, 26330, 26336,
+    26175, 26342, 26345, 26352, 26357, 26359, 26383, 26390, 26398, 26406, 26407,
+    38712, 26414, 26431, 26422, 26433, 26424, 26423, 26438, 26462, 26464, 26457,
+    26467, 26468, 26505, 26480, 26537, 26492, 26474, 26508, 26507, 26534, 26529,
+    26501, 26551, 26607, 26548, 26604, 26547, 26601, 26552, 26596, 26590, 26589,
+    26594, 26606, 26553, 26574, 26566, 26599, 27292, 26654, 26694, 26665, 26688,
+    26701, 26674, 26702, 26803, 26667, 26713, 26723, 26743, 26751, 26783, 26767,
+    26797, 26772, 26781, 26779, 26755, 27310, 26809, 26740, 26805, 26784, 26810,
+    26895, 26765, 26750, 26881, 26826, 26888, 26840, 26914, 26918, 26849, 26892,
+    26829, 26836, 26855, 26837, 26934, 26898, 26884, 26839, 26851, 26917, 26873,
+    26848, 26863, 26920, 26922, 26906, 26915, 26913, 26822, 27001, 26999, 26972,
+    27000, 26987, 26964, 27006, 26990, 26937, 26996, 26941, 26969, 26928, 26977,
+    26974, 26973, 27009, 26986, 27058, 27054, 27088, 27071, 27073, 27091, 27070,
+    27086, 23528, 27082, 27101, 27067, 27075, 27047, 27182, 27025, 27040, 27036,
+    27029, 27060, 27102, 27112, 27138, 27163, 27135, 27402, 27129, 27122, 27111,
+    27141, 27057, 27166, 27117, 27156, 27115, 27146, 27154, 27329, 27171, 27155,
+    27204, 27148, 27250, 27190, 27256, 27207, 27234, 27225, 27238, 27208, 27192,
+    27170, 27280, 27277, 27296, 27268, 27298, 27299, 27287, 34327, 27323, 27331,
+    27330, 27320, 27315, 27308, 27358, 27345, 27359, 27306, 27354, 27370, 27387,
+    27397, 34326, 27386, 27410, 27414, 39729, 27423, 27448, 27447, 30428, 27449,
+    39150, 27463, 27459, 27465, 27472, 27481, 27476, 27483, 27487, 27489, 27512,
+    27513, 27519, 27520, 27524, 27523, 27533, 27544, 27541, 27550, 27556, 27562,
+    27563, 27567, 27570, 27569, 27571, 27575, 27580, 27590, 27595, 27603, 27615,
+    27628, 27627, 27635, 27631, 40638, 27656, 27667, 27668, 27675, 27684, 27683,
+    27742, 27733, 27746, 27754, 27778, 27789, 27802, 27777, 27803, 27774, 27752,
+    27763, 27794, 27792, 27844, 27889, 27859, 27837, 27863, 27845, 27869, 27822,
+    27825, 27838, 27834, 27867, 27887, 27865, 27882, 27935, 34893, 27958, 27947,
+    27965, 27960, 27929, 27957, 27955, 27922, 27916, 28003, 28051, 28004, 27994,
+    28025, 27993, 28046, 28053, 28644, 28037, 28153, 28181, 28170, 28085, 28103,
+    28134, 28088, 28102, 28140, 28126, 28108, 28136, 28114, 28101, 28154, 28121,
+    28132, 28117, 28138, 28142, 28205, 28270, 28206, 28185, 28274, 28255, 28222,
+    28195, 28267, 28203, 28278, 28237, 28191, 28227, 28218, 28238, 28196, 28415,
+    28189, 28216, 28290, 28330, 28312, 28361, 28343, 28371, 28349, 28335, 28356,
+    28338, 28372, 28373, 28303, 28325, 28354, 28319, 28481, 28433, 28748, 28396,
+    28408, 28414, 28479, 28402, 28465, 28399, 28466, 28364, 28478, 28435, 28407,
+    28550, 28538, 28536, 28545, 28544, 28527, 28507, 28659, 28525, 28546, 28540,
+    28504, 28558, 28561, 28610, 28518, 28595, 28579, 28577, 28580, 28601, 28614,
+    28586, 28639, 28629, 28652, 28628, 28632, 28657, 28654, 28635, 28681, 28683,
+    28666, 28689, 28673, 28687, 28670, 28699, 28698, 28532, 28701, 28696, 28703,
+    28720, 28734, 28722, 28753, 28771, 28825, 28818, 28847, 28913, 28844, 28856,
+    28851, 28846, 28895, 28875, 28893, 28889, 28937, 28925, 28956, 28953, 29029,
+    29013, 29064, 29030, 29026, 29004, 29014, 29036, 29071, 29179, 29060, 29077,
+    29096, 29100, 29143, 29113, 29118, 29138, 29129, 29140, 29134, 29152, 29164,
+    29159, 29173, 29180, 29177, 29183, 29197, 29200, 29211, 29224, 29229, 29228,
+    29232, 29234, 29243, 29244, 29247, 29248, 29254, 29259, 29272, 29300, 29310,
+    29314, 29313, 29319, 29330, 29334, 29346, 29351, 29369, 29362, 29379, 29382,
+    29380, 29390, 29394, 29410, 29408, 29409, 29433, 29431, 20495, 29463, 29450,
+    29468, 29462, 29469, 29492, 29487, 29481, 29477, 29502, 29518, 29519, 40664,
+    29527, 29546, 29544, 29552, 29560, 29557, 29563, 29562, 29640, 29619, 29646,
+    29627, 29632, 29669, 29678, 29662, 29858, 29701, 29807, 29733, 29688, 29746,
+    29754, 29781, 29759, 29791, 29785, 29761, 29788, 29801, 29808, 29795, 29802,
+    29814, 29822, 29835, 29854, 29863, 29898, 29903, 29908, 29681, 29920, 29923,
+    29927, 29929, 29934, 29938, 29936, 29937, 29944, 29943, 29956, 29955, 29957,
+    29964, 29966, 29965, 29973, 29971, 29982, 29990, 29996, 30012, 30020, 30029,
+    30026, 30025, 30043, 30022, 30042, 30057, 30052, 30055, 30059, 30061, 30072,
+    30070, 30086, 30087, 30068, 30090, 30089, 30082, 30100, 30106, 30109, 30117,
+    30115, 30146, 30131, 30147, 30133, 30141, 30136, 30140, 30129, 30157, 30154,
+    30162, 30169, 30179, 30174, 30206, 30207, 30204, 30209, 30192, 30202, 30194,
+    30195, 30219, 30221, 30217, 30239, 30247, 30240, 30241, 30242, 30244, 30260,
+    30256, 30267, 30279, 30280, 30278, 30300, 30296, 30305, 30306, 30312, 30313,
+    30314, 30311, 30316, 30320, 30322, 30326, 30328, 30332, 30336, 30339, 30344,
+    30347, 30350, 30358, 30355, 30361, 30362, 30384, 30388, 30392, 30393, 30394,
+    30402, 30413, 30422, 30418, 30430, 30433, 30437, 30439, 30442, 34351, 30459,
+    30472, 30471, 30468, 30505, 30500, 30494, 30501, 30502, 30491, 30519, 30520,
+    30535, 30554, 30568, 30571, 30555, 30565, 30591, 30590, 30585, 30606, 30603,
+    30609, 30624, 30622, 30640, 30646, 30649, 30655, 30652, 30653, 30651, 30663,
+    30669, 30679, 30682, 30684, 30691, 30702, 30716, 30732, 30738, 31014, 30752,
+    31018, 30789, 30862, 30836, 30854, 30844, 30874, 30860, 30883, 30901, 30890,
+    30895, 30929, 30918, 30923, 30932, 30910, 30908, 30917, 30922, 30956, 30951,
+    30938, 30973, 30964, 30983, 30994, 30993, 31001, 31020, 31019, 31040, 31072,
+    31063, 31071, 31066, 31061, 31059, 31098, 31103, 31114, 31133, 31143, 40779,
+    31146, 31150, 31155, 31161, 31162, 31177, 31189, 31207, 31212, 31201, 31203,
+    31240, 31245, 31256, 31257, 31264, 31263, 31104, 31281, 31291, 31294, 31287,
+    31299, 31319, 31305, 31329, 31330, 31337, 40861, 31344, 31353, 31357, 31368,
+    31383, 31381, 31384, 31382, 31401, 31432, 31408, 31414, 31429, 31428, 31423,
+    36995, 31431, 31434, 31437, 31439, 31445, 31443, 31449, 31450, 31453, 31457,
+    31458, 31462, 31469, 31472, 31490, 31503, 31498, 31494, 31539, 31512, 31513,
+    31518, 31541, 31528, 31542, 31568, 31610, 31492, 31565, 31499, 31564, 31557,
+    31605, 31589, 31604, 31591, 31600, 31601, 31596, 31598, 31645, 31640, 31647,
+    31629, 31644, 31642, 31627, 31634, 31631, 31581, 31641, 31691, 31681, 31692,
+    31695, 31668, 31686, 31709, 31721, 31761, 31764, 31718, 31717, 31840, 31744,
+    31751, 31763, 31731, 31735, 31767, 31757, 31734, 31779, 31783, 31786, 31775,
+    31799, 31787, 31805, 31820, 31811, 31828, 31823, 31808, 31824, 31832, 31839,
+    31844, 31830, 31845, 31852, 31861, 31875, 31888, 31908, 31917, 31906, 31915,
+    31905, 31912, 31923, 31922, 31921, 31918, 31929, 31933, 31936, 31941, 31938,
+    31960, 31954, 31964, 31970, 39739, 31983, 31986, 31988, 31990, 31994, 32006,
+    32002, 32028, 32021, 32010, 32069, 32075, 32046, 32050, 32063, 32053, 32070,
+    32115, 32086, 32078, 32114, 32104, 32110, 32079, 32099, 32147, 32137, 32091,
+    32143, 32125, 32155, 32186, 32174, 32163, 32181, 32199, 32189, 32171, 32317,
+    32162, 32175, 32220, 32184, 32159, 32176, 32216, 32221, 32228, 32222, 32251,
+    32242, 32225, 32261, 32266, 32291, 32289, 32274, 32305, 32287, 32265, 32267,
+    32290, 32326, 32358, 32315, 32309, 32313, 32323, 32311, 32306, 32314, 32359,
+    32349, 32342, 32350, 32345, 32346, 32377, 32362, 32361, 32380, 32379, 32387,
+    32213, 32381, 36782, 32383, 32392, 32393, 32396, 32402, 32400, 32403, 32404,
+    32406, 32398, 32411, 32412, 32568, 32570, 32581, 32588, 32589, 32590, 32592,
+    32593, 32597, 32596, 32600, 32607, 32608, 32616, 32617, 32615, 32632, 32642,
+    32646, 32643, 32648, 32647, 32652, 32660, 32670, 32669, 32666, 32675, 32687,
+    32690, 32697, 32686, 32694, 32696, 35697, 32709, 32710, 32714, 32725, 32724,
+    32737, 32742, 32745, 32755, 32761, 39132, 32774, 32772, 32779, 32786, 32792,
+    32793, 32796, 32801, 32808, 32831, 32827, 32842, 32838, 32850, 32856, 32858,
+    32863, 32866, 32872, 32883, 32882, 32880, 32886, 32889, 32893, 32895, 32900,
+    32902, 32901, 32923, 32915, 32922, 32941, 20880, 32940, 32987, 32997, 32985,
+    32989, 32964, 32986, 32982, 33033, 33007, 33009, 33051, 33065, 33059, 33071,
+    33099, 38539, 33094, 33086, 33107, 33105, 33020, 33137, 33134, 33125, 33126,
+    33140, 33155, 33160, 33162, 33152, 33154, 33184, 33173, 33188, 33187, 33119,
+    33171, 33193, 33200, 33205, 33214, 33208, 33213, 33216, 33218, 33210, 33225,
+    33229, 33233, 33241, 33240, 33224, 33242, 33247, 33248, 33255, 33274, 33275,
+    33278, 33281, 33282, 33285, 33287, 33290, 33293, 33296, 33302, 33321, 33323,
+    33336, 33331, 33344, 33369, 33368, 33373, 33370, 33375, 33380, 33378, 33384,
+    33386, 33387, 33326, 33393, 33399, 33400, 33406, 33421, 33426, 33451, 33439,
+    33467, 33452, 33505, 33507, 33503, 33490, 33524, 33523, 33530, 33683, 33539,
+    33531, 33529, 33502, 33542, 33500, 33545, 33497, 33589, 33588, 33558, 33586,
+    33585, 33600, 33593, 33616, 33605, 33583, 33579, 33559, 33560, 33669, 33690,
+    33706, 33695, 33698, 33686, 33571, 33678, 33671, 33674, 33660, 33717, 33651,
+    33653, 33696, 33673, 33704, 33780, 33811, 33771, 33742, 33789, 33795, 33752,
+    33803, 33729, 33783, 33799, 33760, 33778, 33805, 33826, 33824, 33725, 33848,
+    34054, 33787, 33901, 33834, 33852, 34138, 33924, 33911, 33899, 33965, 33902,
+    33922, 33897, 33862, 33836, 33903, 33913, 33845, 33994, 33890, 33977, 33983,
+    33951, 34009, 33997, 33979, 34010, 34000, 33985, 33990, 34006, 33953, 34081,
+    34047, 34036, 34071, 34072, 34092, 34079, 34069, 34068, 34044, 34112, 34147,
+    34136, 34120, 34113, 34306, 34123, 34133, 34176, 34212, 34184, 34193, 34186,
+    34216, 34157, 34196, 34203, 34282, 34183, 34204, 34167, 34174, 34192, 34249,
+    34234, 34255, 34233, 34256, 34261, 34269, 34277, 34268, 34297, 34314, 34323,
+    34315, 34302, 34298, 34310, 34338, 34330, 34352, 34367, 34381, 20053, 34388,
+    34399, 34407, 34417, 34451, 34467, 34473, 34474, 34443, 34444, 34486, 34479,
+    34500, 34502, 34480, 34505, 34851, 34475, 34516, 34526, 34537, 34540, 34527,
+    34523, 34543, 34578, 34566, 34568, 34560, 34563, 34555, 34577, 34569, 34573,
+    34553, 34570, 34612, 34623, 34615, 34619, 34597, 34601, 34586, 34656, 34655,
+    34680, 34636, 34638, 34676, 34647, 34664, 34670, 34649, 34643, 34659, 34666,
+    34821, 34722, 34719, 34690, 34735, 34763, 34749, 34752, 34768, 38614, 34731,
+    34756, 34739, 34759, 34758, 34747, 34799, 34802, 34784, 34831, 34829, 34814,
+    34806, 34807, 34830, 34770, 34833, 34838, 34837, 34850, 34849, 34865, 34870,
+    34873, 34855, 34875, 34884, 34882, 34898, 34905, 34910, 34914, 34923, 34945,
+    34942, 34974, 34933, 34941, 34997, 34930, 34946, 34967, 34962, 34990, 34969,
+    34978, 34957, 34980, 34992, 35007, 34993, 35011, 35012, 35028, 35032, 35033,
+    35037, 35065, 35074, 35068, 35060, 35048, 35058, 35076, 35084, 35082, 35091,
+    35139, 35102, 35109, 35114, 35115, 35137, 35140, 35131, 35126, 35128, 35148,
+    35101, 35168, 35166, 35174, 35172, 35181, 35178, 35183, 35188, 35191, 35198,
+    35203, 35208, 35210, 35219, 35224, 35233, 35241, 35238, 35244, 35247, 35250,
+    35258, 35261, 35263, 35264, 35290, 35292, 35293, 35303, 35316, 35320, 35331,
+    35350, 35344, 35340, 35355, 35357, 35365, 35382, 35393, 35419, 35410, 35398,
+    35400, 35452, 35437, 35436, 35426, 35461, 35458, 35460, 35496, 35489, 35473,
+    35493, 35494, 35482, 35491, 35524, 35533, 35522, 35546, 35563, 35571, 35559,
+    35556, 35569, 35604, 35552, 35554, 35575, 35550, 35547, 35596, 35591, 35610,
+    35553, 35606, 35600, 35607, 35616, 35635, 38827, 35622, 35627, 35646, 35624,
+    35649, 35660, 35663, 35662, 35657, 35670, 35675, 35674, 35691, 35679, 35692,
+    35695, 35700, 35709, 35712, 35724, 35726, 35730, 35731, 35734, 35737, 35738,
+    35898, 35905, 35903, 35912, 35916, 35918, 35920, 35925, 35938, 35948, 35960,
+    35962, 35970, 35977, 35973, 35978, 35981, 35982, 35988, 35964, 35992, 25117,
+    36013, 36010, 36029, 36018, 36019, 36014, 36022, 36040, 36033, 36068, 36067,
+    36058, 36093, 36090, 36091, 36100, 36101, 36106, 36103, 36111, 36109, 36112,
+    40782, 36115, 36045, 36116, 36118, 36199, 36205, 36209, 36211, 36225, 36249,
+    36290, 36286, 36282, 36303, 36314, 36310, 36300, 36315, 36299, 36330, 36331,
+    36319, 36323, 36348, 36360, 36361, 36351, 36381, 36382, 36368, 36383, 36418,
+    36405, 36400, 36404, 36426, 36423, 36425, 36428, 36432, 36424, 36441, 36452,
+    36448, 36394, 36451, 36437, 36470, 36466, 36476, 36481, 36487, 36485, 36484,
+    36491, 36490, 36499, 36497, 36500, 36505, 36522, 36513, 36524, 36528, 36550,
+    36529, 36542, 36549, 36552, 36555, 36571, 36579, 36604, 36603, 36587, 36606,
+    36618, 36613, 36629, 36626, 36633, 36627, 36636, 36639, 36635, 36620, 36646,
+    36659, 36667, 36665, 36677, 36674, 36670, 36684, 36681, 36678, 36686, 36695,
+    36700, 36706, 36707, 36708, 36764, 36767, 36771, 36781, 36783, 36791, 36826,
+    36837, 36834, 36842, 36847, 36999, 36852, 36869, 36857, 36858, 36881, 36885,
+    36897, 36877, 36894, 36886, 36875, 36903, 36918, 36917, 36921, 36856, 36943,
+    36944, 36945, 36946, 36878, 36937, 36926, 36950, 36952, 36958, 36968, 36975,
+    36982, 38568, 36978, 36994, 36989, 36993, 36992, 37002, 37001, 37007, 37032,
+    37039, 37041, 37045, 37090, 37092, 25160, 37083, 37122, 37138, 37145, 37170,
+    37168, 37194, 37206, 37208, 37219, 37221, 37225, 37235, 37234, 37259, 37257,
+    37250, 37282, 37291, 37295, 37290, 37301, 37300, 37306, 37312, 37313, 37321,
+    37323, 37328, 37334, 37343, 37345, 37339, 37372, 37365, 37366, 37406, 37375,
+    37396, 37420, 37397, 37393, 37470, 37463, 37445, 37449, 37476, 37448, 37525,
+    37439, 37451, 37456, 37532, 37526, 37523, 37531, 37466, 37583, 37561, 37559,
+    37609, 37647, 37626, 37700, 37678, 37657, 37666, 37658, 37667, 37690, 37685,
+    37691, 37724, 37728, 37756, 37742, 37718, 37808, 37804, 37805, 37780, 37817,
+    37846, 37847, 37864, 37861, 37848, 37827, 37853, 37840, 37832, 37860, 37914,
+    37908, 37907, 37891, 37895, 37904, 37942, 37931, 37941, 37921, 37946, 37953,
+    37970, 37956, 37979, 37984, 37986, 37982, 37994, 37417, 38000, 38005, 38007,
+    38013, 37978, 38012, 38014, 38017, 38015, 38274, 38279, 38282, 38292, 38294,
+    38296, 38297, 38304, 38312, 38311, 38317, 38332, 38331, 38329, 38334, 38346,
+    28662, 38339, 38349, 38348, 38357, 38356, 38358, 38364, 38369, 38373, 38370,
+    38433, 38440, 38446, 38447, 38466, 38476, 38479, 38475, 38519, 38492, 38494,
+    38493, 38495, 38502, 38514, 38508, 38541, 38552, 38549, 38551, 38570, 38567,
+    38577, 38578, 38576, 38580, 38582, 38584, 38585, 38606, 38603, 38601, 38605,
+    35149, 38620, 38669, 38613, 38649, 38660, 38662, 38664, 38675, 38670, 38673,
+    38671, 38678, 38681, 38692, 38698, 38704, 38713, 38717, 38718, 38724, 38726,
+    38728, 38722, 38729, 38748, 38752, 38756, 38758, 38760, 21202, 38763, 38769,
+    38777, 38789, 38780, 38785, 38778, 38790, 38795, 38799, 38800, 38812, 38824,
+    38822, 38819, 38835, 38836, 38851, 38854, 38856, 38859, 38876, 38893, 40783,
+    38898, 31455, 38902, 38901, 38927, 38924, 38968, 38948, 38945, 38967, 38973,
+    38982, 38991, 38987, 39019, 39023, 39024, 39025, 39028, 39027, 39082, 39087,
+    39089, 39094, 39108, 39107, 39110, 39145, 39147, 39171, 39177, 39186, 39188,
+    39192, 39201, 39197, 39198, 39204, 39200, 39212, 39214, 39229, 39230, 39234,
+    39241, 39237, 39248, 39243, 39249, 39250, 39244, 39253, 39319, 39320, 39333,
+    39341, 39342, 39356, 39391, 39387, 39389, 39384, 39377, 39405, 39406, 39409,
+    39410, 39419, 39416, 39425, 39439, 39429, 39394, 39449, 39467, 39479, 39493,
+    39490, 39488, 39491, 39486, 39509, 39501, 39515, 39511, 39519, 39522, 39525,
+    39524, 39529, 39531, 39530, 39597, 39600, 39612, 39616, 39631, 39633, 39635,
+    39636, 39646, 39647, 39650, 39651, 39654, 39663, 39659, 39662, 39668, 39665,
+    39671, 39675, 39686, 39704, 39706, 39711, 39714, 39715, 39717, 39719, 39720,
+    39721, 39722, 39726, 39727, 39730, 39748, 39747, 39759, 39757, 39758, 39761,
+    39768, 39796, 39827, 39811, 39825, 39830, 39831, 39839, 39840, 39848, 39860,
+    39872, 39882, 39865, 39878, 39887, 39889, 39890, 39907, 39906, 39908, 39892,
+    39905, 39994, 39922, 39921, 39920, 39957, 39956, 39945, 39955, 39948, 39942,
+    39944, 39954, 39946, 39940, 39982, 39963, 39973, 39972, 39969, 39984, 40007,
+    39986, 40006, 39998, 40026, 40032, 40039, 40054, 40056, 40167, 40172, 40176,
+    40201, 40200, 40171, 40195, 40198, 40234, 40230, 40367, 40227, 40223, 40260,
+    40213, 40210, 40257, 40255, 40254, 40262, 40264, 40285, 40286, 40292, 40273,
+    40272, 40281, 40306, 40329, 40327, 40363, 40303, 40314, 40346, 40356, 40361,
+    40370, 40388, 40385, 40379, 40376, 40378, 40390, 40399, 40386, 40409, 40403,
+    40440, 40422, 40429, 40431, 40445, 40474, 40475, 40478, 40565, 40569, 40573,
+    40577, 40584, 40587, 40588, 40594, 40597, 40593, 40605, 40613, 40617, 40632,
+    40618, 40621, 38753, 40652, 40654, 40655, 40656, 40660, 40668, 40670, 40669,
+    40672, 40677, 40680, 40687, 40692, 40694, 40695, 40697, 40699, 40700, 40701,
+    40711, 40712, 30391, 40725, 40737, 40748, 40766, 40778, 40786, 40788, 40803,
+    40799, 40800, 40801, 40806, 40807, 40812, 40810, 40823, 40818, 40822, 40853,
+    40860, 40864, 22575, 27079, 36953, 29796, 20956, 29081,
diff --git a/fusl/src/locale/ksc.h b/fusl/src/locale/ksc.h
index 8f6eca4..f37d698 100644
--- a/fusl/src/locale/ksc.h
+++ b/fusl/src/locale/ksc.h
@@ -1,640 +1,763 @@
-12288,12289,12290,183,8229,8230,168,12291,173,8213,8741,65340,8764,8216,8217,
-8220,8221,12308,12309,12296,12297,12298,12299,12300,12301,12302,12303,12304,
-12305,177,215,247,8800,8804,8805,8734,8756,176,8242,8243,8451,8491,65504,
-65505,65509,9794,9792,8736,8869,8978,8706,8711,8801,8786,167,8251,9734,9733,
-9675,9679,9678,9671,9670,9633,9632,9651,9650,9661,9660,8594,8592,8593,8595,
-8596,12307,8810,8811,8730,8765,8733,8757,8747,8748,8712,8715,8838,8839,8834,
-8835,8746,8745,8743,8744,65506,8658,8660,8704,8707,180,65374,711,728,733,730,
-729,184,731,161,191,720,8750,8721,8719,164,8457,8240,9665,9664,9655,9654,9828,
-9824,9825,9829,9831,9827,8857,9672,9635,9680,9681,9618,9636,9637,9640,9639,
-9638,9641,9832,9743,9742,9756,9758,182,8224,8225,8597,8599,8601,8598,8600,
-9837,9833,9834,9836,12927,12828,8470,13255,8482,13250,13272,8481,8364,174,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,65281,65282,65283,65284,65285,65286,
-65287,65288,65289,65290,65291,65292,65293,65294,65295,65296,65297,65298,65299,
-65300,65301,65302,65303,65304,65305,65306,65307,65308,65309,65310,65311,65312,
-65313,65314,65315,65316,65317,65318,65319,65320,65321,65322,65323,65324,65325,
-65326,65327,65328,65329,65330,65331,65332,65333,65334,65335,65336,65337,65338,
-65339,65510,65341,65342,65343,65344,65345,65346,65347,65348,65349,65350,65351,
-65352,65353,65354,65355,65356,65357,65358,65359,65360,65361,65362,65363,65364,
-65365,65366,65367,65368,65369,65370,65371,65372,65373,65507,12593,12594,12595,
-12596,12597,12598,12599,12600,12601,12602,12603,12604,12605,12606,12607,12608,
-12609,12610,12611,12612,12613,12614,12615,12616,12617,12618,12619,12620,12621,
-12622,12623,12624,12625,12626,12627,12628,12629,12630,12631,12632,12633,12634,
-12635,12636,12637,12638,12639,12640,12641,12642,12643,12644,12645,12646,12647,
-12648,12649,12650,12651,12652,12653,12654,12655,12656,12657,12658,12659,12660,
-12661,12662,12663,12664,12665,12666,12667,12668,12669,12670,12671,12672,12673,
-12674,12675,12676,12677,12678,12679,12680,12681,12682,12683,12684,12685,12686,
-8560,8561,8562,8563,8564,8565,8566,8567,8568,8569,0,0,0,0,0,8544,8545,8546,
-8547,8548,8549,8550,8551,8552,8553,0,0,0,0,0,0,0,913,914,915,916,917,918,919,
-920,921,922,923,924,925,926,927,928,929,931,932,933,934,935,936,937,0,0,0,0,0,
-0,0,0,945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,963,
-964,965,966,967,968,969,0,0,0,0,0,0,9472,9474,9484,9488,9496,9492,9500,9516,
-9508,9524,9532,9473,9475,9487,9491,9499,9495,9507,9523,9515,9531,9547,9504,
-9519,9512,9527,9535,9501,9520,9509,9528,9538,9490,9489,9498,9497,9494,9493,
-9486,9485,9502,9503,9505,9506,9510,9511,9513,9514,9517,9518,9521,9522,9525,
-9526,9529,9530,9533,9534,9536,9537,9539,9540,9541,9542,9543,9544,9545,9546,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13205,13206,13207,8467,
-13208,13252,13219,13220,13221,13222,13209,13210,13211,13212,13213,13214,13215,
-13216,13217,13218,13258,13197,13198,13199,13263,13192,13193,13256,13223,13224,
-13232,13233,13234,13235,13236,13237,13238,13239,13240,13241,13184,13185,13186,
-13187,13188,13242,13243,13244,13245,13246,13247,13200,13201,13202,13203,13204,
-8486,13248,13249,13194,13195,13196,13270,13253,13229,13230,13231,13275,13225,
-13226,13227,13228,13277,13264,13267,13251,13257,13276,13254,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,198,208,170,294,0,306,0,319,321,216,338,186,222,358,330,0,12896,
-12897,12898,12899,12900,12901,12902,12903,12904,12905,12906,12907,12908,12909,
-12910,12911,12912,12913,12914,12915,12916,12917,12918,12919,12920,12921,12922,
-12923,9424,9425,9426,9427,9428,9429,9430,9431,9432,9433,9434,9435,9436,9437,
-9438,9439,9440,9441,9442,9443,9444,9445,9446,9447,9448,9449,9312,9313,9314,
-9315,9316,9317,9318,9319,9320,9321,9322,9323,9324,9325,9326,189,8531,8532,188,
-190,8539,8540,8541,8542,230,273,240,295,305,307,312,320,322,248,339,223,254,
-359,331,329,12800,12801,12802,12803,12804,12805,12806,12807,12808,12809,12810,
-12811,12812,12813,12814,12815,12816,12817,12818,12819,12820,12821,12822,12823,
-12824,12825,12826,12827,9372,9373,9374,9375,9376,9377,9378,9379,9380,9381,
-9382,9383,9384,9385,9386,9387,9388,9389,9390,9391,9392,9393,9394,9395,9396,
-9397,9332,9333,9334,9335,9336,9337,9338,9339,9340,9341,9342,9343,9344,9345,
-9346,185,178,179,8308,8319,8321,8322,8323,8324,12353,12354,12355,12356,12357,
-12358,12359,12360,12361,12362,12363,12364,12365,12366,12367,12368,12369,12370,
-12371,12372,12373,12374,12375,12376,12377,12378,12379,12380,12381,12382,12383,
-12384,12385,12386,12387,12388,12389,12390,12391,12392,12393,12394,12395,12396,
-12397,12398,12399,12400,12401,12402,12403,12404,12405,12406,12407,12408,12409,
-12410,12411,12412,12413,12414,12415,12416,12417,12418,12419,12420,12421,12422,
-12423,12424,12425,12426,12427,12428,12429,12430,12431,12432,12433,12434,12435,
-0,0,0,0,0,0,0,0,0,0,0,12449,12450,12451,12452,12453,12454,12455,12456,12457,
-12458,12459,12460,12461,12462,12463,12464,12465,12466,12467,12468,12469,12470,
-12471,12472,12473,12474,12475,12476,12477,12478,12479,12480,12481,12482,12483,
-12484,12485,12486,12487,12488,12489,12490,12491,12492,12493,12494,12495,12496,
-12497,12498,12499,12500,12501,12502,12503,12504,12505,12506,12507,12508,12509,
-12510,12511,12512,12513,12514,12515,12516,12517,12518,12519,12520,12521,12522,
-12523,12524,12525,12526,12527,12528,12529,12530,12531,12532,12533,12534,0,0,0,
-0,0,0,0,0,1040,1041,1042,1043,1044,1045,1025,1046,1047,1048,1049,1050,1051,
-1052,1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,
-1067,1068,1069,1070,1071,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1072,1073,1074,1075,
-1076,1077,1105,1078,1079,1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,
-1090,1091,1092,1093,1094,1095,1096,1097,1098,1099,1100,1101,1102,1103,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,44032,44033,44036,44039,44040,44041,44042,
-44048,44049,44050,44051,44052,44053,44054,44055,44057,44058,44059,44060,44061,
-44064,44068,44076,44077,44079,44080,44081,44088,44089,44092,44096,44107,44109,
-44116,44120,44124,44144,44145,44148,44151,44152,44154,44160,44161,44163,44164,
-44165,44166,44169,44170,44171,44172,44176,44180,44188,44189,44191,44192,44193,
-44200,44201,44202,44204,44207,44208,44216,44217,44219,44220,44221,44225,44228,
-44232,44236,44245,44247,44256,44257,44260,44263,44264,44266,44268,44271,44272,
-44273,44275,44277,44278,44284,44285,44288,44292,44294,44300,44301,44303,44305,
-44312,44316,44320,44329,44332,44333,44340,44341,44344,44348,44356,44357,44359,
-44361,44368,44372,44376,44385,44387,44396,44397,44400,44403,44404,44405,44406,
-44411,44412,44413,44415,44417,44418,44424,44425,44428,44432,44444,44445,44452,
-44471,44480,44481,44484,44488,44496,44497,44499,44508,44512,44516,44536,44537,
-44540,44543,44544,44545,44552,44553,44555,44557,44564,44592,44593,44596,44599,
-44600,44602,44608,44609,44611,44613,44614,44618,44620,44621,44622,44624,44628,
-44630,44636,44637,44639,44640,44641,44645,44648,44649,44652,44656,44664,44665,
-44667,44668,44669,44676,44677,44684,44732,44733,44734,44736,44740,44748,44749,
-44751,44752,44753,44760,44761,44764,44776,44779,44781,44788,44792,44796,44807,
-44808,44813,44816,44844,44845,44848,44850,44852,44860,44861,44863,44865,44866,
-44867,44872,44873,44880,44892,44893,44900,44901,44921,44928,44932,44936,44944,
-44945,44949,44956,44984,44985,44988,44992,44999,45000,45001,45003,45005,45006,
-45012,45020,45032,45033,45040,45041,45044,45048,45056,45057,45060,45068,45072,
-45076,45084,45085,45096,45124,45125,45128,45130,45132,45134,45139,45140,45141,
-45143,45145,45149,45180,45181,45184,45188,45196,45197,45199,45201,45208,45209,
-45210,45212,45215,45216,45217,45218,45224,45225,45227,45228,45229,45230,45231,
-45233,45235,45236,45237,45240,45244,45252,45253,45255,45256,45257,45264,45265,
-45268,45272,45280,45285,45320,45321,45323,45324,45328,45330,45331,45336,45337,
-45339,45340,45341,45347,45348,45349,45352,45356,45364,45365,45367,45368,45369,
-45376,45377,45380,45384,45392,45393,45396,45397,45400,45404,45408,45432,45433,
-45436,45440,45442,45448,45449,45451,45453,45458,45459,45460,45464,45468,45480,
-45516,45520,45524,45532,45533,45535,45544,45545,45548,45552,45561,45563,45565,
-45572,45573,45576,45579,45580,45588,45589,45591,45593,45600,45620,45628,45656,
-45660,45664,45672,45673,45684,45685,45692,45700,45701,45705,45712,45713,45716,
-45720,45721,45722,45728,45729,45731,45733,45734,45738,45740,45744,45748,45768,
-45769,45772,45776,45778,45784,45785,45787,45789,45794,45796,45797,45798,45800,
-45803,45804,45805,45806,45807,45811,45812,45813,45815,45816,45817,45818,45819,
-45823,45824,45825,45828,45832,45840,45841,45843,45844,45845,45852,45908,45909,
-45910,45912,45915,45916,45918,45919,45924,45925,45927,45929,45931,45934,45936,
-45937,45940,45944,45952,45953,45955,45956,45957,45964,45968,45972,45984,45985,
-45992,45996,46020,46021,46024,46027,46028,46030,46032,46036,46037,46039,46041,
-46043,46045,46048,46052,46056,46076,46096,46104,46108,46112,46120,46121,46123,
-46132,46160,46161,46164,46168,46176,46177,46179,46181,46188,46208,46216,46237,
-46244,46248,46252,46261,46263,46265,46272,46276,46280,46288,46293,46300,46301,
-46304,46307,46308,46310,46316,46317,46319,46321,46328,46356,46357,46360,46363,
-46364,46372,46373,46375,46376,46377,46378,46384,46385,46388,46392,46400,46401,
-46403,46404,46405,46411,46412,46413,46416,46420,46428,46429,46431,46432,46433,
-46496,46497,46500,46504,46506,46507,46512,46513,46515,46516,46517,46523,46524,
-46525,46528,46532,46540,46541,46543,46544,46545,46552,46572,46608,46609,46612,
-46616,46629,46636,46644,46664,46692,46696,46748,46749,46752,46756,46763,46764,
-46769,46804,46832,46836,46840,46848,46849,46853,46888,46889,46892,46895,46896,
-46904,46905,46907,46916,46920,46924,46932,46933,46944,46948,46952,46960,46961,
-46963,46965,46972,46973,46976,46980,46988,46989,46991,46992,46993,46994,46998,
-46999,47000,47001,47004,47008,47016,47017,47019,47020,47021,47028,47029,47032,
-47047,47049,47084,47085,47088,47092,47100,47101,47103,47104,47105,47111,47112,
-47113,47116,47120,47128,47129,47131,47133,47140,47141,47144,47148,47156,47157,
-47159,47160,47161,47168,47172,47185,47187,47196,47197,47200,47204,47212,47213,
-47215,47217,47224,47228,47245,47272,47280,47284,47288,47296,47297,47299,47301,
-47308,47312,47316,47325,47327,47329,47336,47337,47340,47344,47352,47353,47355,
-47357,47364,47384,47392,47420,47421,47424,47428,47436,47439,47441,47448,47449,
-47452,47456,47464,47465,47467,47469,47476,47477,47480,47484,47492,47493,47495,
-47497,47498,47501,47502,47532,47533,47536,47540,47548,47549,47551,47553,47560,
-47561,47564,47566,47567,47568,47569,47570,47576,47577,47579,47581,47582,47585,
-47587,47588,47589,47592,47596,47604,47605,47607,47608,47609,47610,47616,47617,
-47624,47637,47672,47673,47676,47680,47682,47688,47689,47691,47693,47694,47699,
-47700,47701,47704,47708,47716,47717,47719,47720,47721,47728,47729,47732,47736,
-47747,47748,47749,47751,47756,47784,47785,47787,47788,47792,47794,47800,47801,
-47803,47805,47812,47816,47832,47833,47868,47872,47876,47885,47887,47889,47896,
-47900,47904,47913,47915,47924,47925,47926,47928,47931,47932,47933,47934,47940,
-47941,47943,47945,47949,47951,47952,47956,47960,47969,47971,47980,48008,48012,
-48016,48036,48040,48044,48052,48055,48064,48068,48072,48080,48083,48120,48121,
-48124,48127,48128,48130,48136,48137,48139,48140,48141,48143,48145,48148,48149,
-48150,48151,48152,48155,48156,48157,48158,48159,48164,48165,48167,48169,48173,
-48176,48177,48180,48184,48192,48193,48195,48196,48197,48201,48204,48205,48208,
-48221,48260,48261,48264,48267,48268,48270,48276,48277,48279,48281,48282,48288,
-48289,48292,48295,48296,48304,48305,48307,48308,48309,48316,48317,48320,48324,
-48333,48335,48336,48337,48341,48344,48348,48372,48373,48374,48376,48380,48388,
-48389,48391,48393,48400,48404,48420,48428,48448,48456,48457,48460,48464,48472,
-48473,48484,48488,48512,48513,48516,48519,48520,48521,48522,48528,48529,48531,
-48533,48537,48538,48540,48548,48560,48568,48596,48597,48600,48604,48617,48624,
-48628,48632,48640,48643,48645,48652,48653,48656,48660,48668,48669,48671,48708,
-48709,48712,48716,48718,48724,48725,48727,48729,48730,48731,48736,48737,48740,
-48744,48746,48752,48753,48755,48756,48757,48763,48764,48765,48768,48772,48780,
-48781,48783,48784,48785,48792,48793,48808,48848,48849,48852,48855,48856,48864,
-48867,48868,48869,48876,48897,48904,48905,48920,48921,48923,48924,48925,48960,
-48961,48964,48968,48976,48977,48981,49044,49072,49093,49100,49101,49104,49108,
-49116,49119,49121,49212,49233,49240,49244,49248,49256,49257,49296,49297,49300,
-49304,49312,49313,49315,49317,49324,49325,49327,49328,49331,49332,49333,49334,
-49340,49341,49343,49344,49345,49349,49352,49353,49356,49360,49368,49369,49371,
-49372,49373,49380,49381,49384,49388,49396,49397,49399,49401,49408,49412,49416,
-49424,49429,49436,49437,49438,49439,49440,49443,49444,49446,49447,49452,49453,
-49455,49456,49457,49462,49464,49465,49468,49472,49480,49481,49483,49484,49485,
-49492,49493,49496,49500,49508,49509,49511,49512,49513,49520,49524,49528,49541,
-49548,49549,49550,49552,49556,49558,49564,49565,49567,49569,49573,49576,49577,
-49580,49584,49597,49604,49608,49612,49620,49623,49624,49632,49636,49640,49648,
-49649,49651,49660,49661,49664,49668,49676,49677,49679,49681,49688,49689,49692,
-49695,49696,49704,49705,49707,49709,49711,49713,49714,49716,49736,49744,49745,
-49748,49752,49760,49765,49772,49773,49776,49780,49788,49789,49791,49793,49800,
-49801,49808,49816,49819,49821,49828,49829,49832,49836,49837,49844,49845,49847,
-49849,49884,49885,49888,49891,49892,49899,49900,49901,49903,49905,49910,49912,
-49913,49915,49916,49920,49928,49929,49932,49933,49939,49940,49941,49944,49948,
-49956,49957,49960,49961,49989,50024,50025,50028,50032,50034,50040,50041,50044,
-50045,50052,50056,50060,50112,50136,50137,50140,50143,50144,50146,50152,50153,
-50157,50164,50165,50168,50184,50192,50212,50220,50224,50228,50236,50237,50248,
-50276,50277,50280,50284,50292,50293,50297,50304,50324,50332,50360,50364,50409,
-50416,50417,50420,50424,50426,50431,50432,50433,50444,50448,50452,50460,50472,
-50473,50476,50480,50488,50489,50491,50493,50500,50501,50504,50505,50506,50508,
-50509,50510,50515,50516,50517,50519,50520,50521,50525,50526,50528,50529,50532,
-50536,50544,50545,50547,50548,50549,50556,50557,50560,50564,50567,50572,50573,
-50575,50577,50581,50583,50584,50588,50592,50601,50612,50613,50616,50617,50619,
-50620,50621,50622,50628,50629,50630,50631,50632,50633,50634,50636,50638,50640,
-50641,50644,50648,50656,50657,50659,50661,50668,50669,50670,50672,50676,50678,
-50679,50684,50685,50686,50687,50688,50689,50693,50694,50695,50696,50700,50704,
-50712,50713,50715,50716,50724,50725,50728,50732,50733,50734,50736,50739,50740,
-50741,50743,50745,50747,50752,50753,50756,50760,50768,50769,50771,50772,50773,
-50780,50781,50784,50796,50799,50801,50808,50809,50812,50816,50824,50825,50827,
-50829,50836,50837,50840,50844,50852,50853,50855,50857,50864,50865,50868,50872,
-50873,50874,50880,50881,50883,50885,50892,50893,50896,50900,50908,50909,50912,
-50913,50920,50921,50924,50928,50936,50937,50941,50948,50949,50952,50956,50964,
-50965,50967,50969,50976,50977,50980,50984,50992,50993,50995,50997,50999,51004,
-51005,51008,51012,51018,51020,51021,51023,51025,51026,51027,51028,51029,51030,
-51031,51032,51036,51040,51048,51051,51060,51061,51064,51068,51069,51070,51075,
-51076,51077,51079,51080,51081,51082,51086,51088,51089,51092,51094,51095,51096,
-51098,51104,51105,51107,51108,51109,51110,51116,51117,51120,51124,51132,51133,
-51135,51136,51137,51144,51145,51148,51150,51152,51160,51165,51172,51176,51180,
-51200,51201,51204,51208,51210,51216,51217,51219,51221,51222,51228,51229,51232,
-51236,51244,51245,51247,51249,51256,51260,51264,51272,51273,51276,51277,51284,
-51312,51313,51316,51320,51322,51328,51329,51331,51333,51334,51335,51339,51340,
-51341,51348,51357,51359,51361,51368,51388,51389,51396,51400,51404,51412,51413,
-51415,51417,51424,51425,51428,51445,51452,51453,51456,51460,51461,51462,51468,
-51469,51471,51473,51480,51500,51508,51536,51537,51540,51544,51552,51553,51555,
-51564,51568,51572,51580,51592,51593,51596,51600,51608,51609,51611,51613,51648,
-51649,51652,51655,51656,51658,51664,51665,51667,51669,51670,51673,51674,51676,
-51677,51680,51682,51684,51687,51692,51693,51695,51696,51697,51704,51705,51708,
-51712,51720,51721,51723,51724,51725,51732,51736,51753,51788,51789,51792,51796,
-51804,51805,51807,51808,51809,51816,51837,51844,51864,51900,51901,51904,51908,
-51916,51917,51919,51921,51923,51928,51929,51936,51948,51956,51976,51984,51988,
-51992,52000,52001,52033,52040,52041,52044,52048,52056,52057,52061,52068,52088,
-52089,52124,52152,52180,52196,52199,52201,52236,52237,52240,52244,52252,52253,
-52257,52258,52263,52264,52265,52268,52270,52272,52280,52281,52283,52284,52285,
-52286,52292,52293,52296,52300,52308,52309,52311,52312,52313,52320,52324,52326,
-52328,52336,52341,52376,52377,52380,52384,52392,52393,52395,52396,52397,52404,
-52405,52408,52412,52420,52421,52423,52425,52432,52436,52452,52460,52464,52481,
-52488,52489,52492,52496,52504,52505,52507,52509,52516,52520,52524,52537,52572,
-52576,52580,52588,52589,52591,52593,52600,52616,52628,52629,52632,52636,52644,
-52645,52647,52649,52656,52676,52684,52688,52712,52716,52720,52728,52729,52731,
-52733,52740,52744,52748,52756,52761,52768,52769,52772,52776,52784,52785,52787,
-52789,52824,52825,52828,52831,52832,52833,52840,52841,52843,52845,52852,52853,
-52856,52860,52868,52869,52871,52873,52880,52881,52884,52888,52896,52897,52899,
-52900,52901,52908,52909,52929,52964,52965,52968,52971,52972,52980,52981,52983,
-52984,52985,52992,52993,52996,53000,53008,53009,53011,53013,53020,53024,53028,
-53036,53037,53039,53040,53041,53048,53076,53077,53080,53084,53092,53093,53095,
-53097,53104,53105,53108,53112,53120,53125,53132,53153,53160,53168,53188,53216,
-53217,53220,53224,53232,53233,53235,53237,53244,53248,53252,53265,53272,53293,
-53300,53301,53304,53308,53316,53317,53319,53321,53328,53332,53336,53344,53356,
-53357,53360,53364,53372,53373,53377,53412,53413,53416,53420,53428,53429,53431,
-53433,53440,53441,53444,53448,53449,53456,53457,53459,53460,53461,53468,53469,
-53472,53476,53484,53485,53487,53488,53489,53496,53517,53552,53553,53556,53560,
-53562,53568,53569,53571,53572,53573,53580,53581,53584,53588,53596,53597,53599,
-53601,53608,53612,53628,53636,53640,53664,53665,53668,53672,53680,53681,53683,
-53685,53690,53692,53696,53720,53748,53752,53767,53769,53776,53804,53805,53808,
-53812,53820,53821,53823,53825,53832,53852,53860,53888,53889,53892,53896,53904,
-53905,53909,53916,53920,53924,53932,53937,53944,53945,53948,53951,53952,53954,
-53960,53961,53963,53972,53976,53980,53988,53989,54000,54001,54004,54008,54016,
-54017,54019,54021,54028,54029,54030,54032,54036,54038,54044,54045,54047,54048,
-54049,54053,54056,54057,54060,54064,54072,54073,54075,54076,54077,54084,54085,
-54140,54141,54144,54148,54156,54157,54159,54160,54161,54168,54169,54172,54176,
-54184,54185,54187,54189,54196,54200,54204,54212,54213,54216,54217,54224,54232,
-54241,54243,54252,54253,54256,54260,54268,54269,54271,54273,54280,54301,54336,
-54340,54364,54368,54372,54381,54383,54392,54393,54396,54399,54400,54402,54408,
-54409,54411,54413,54420,54441,54476,54480,54484,54492,54495,54504,54508,54512,
-54520,54523,54525,54532,54536,54540,54548,54549,54551,54588,54589,54592,54596,
-54604,54605,54607,54609,54616,54617,54620,54624,54629,54632,54633,54635,54637,
-54644,54645,54648,54652,54660,54661,54663,54664,54665,54672,54693,54728,54729,
-54732,54736,54738,54744,54745,54747,54749,54756,54757,54760,54764,54772,54773,
-54775,54777,54784,54785,54788,54792,54800,54801,54803,54804,54805,54812,54816,
-54820,54829,54840,54841,54844,54848,54853,54856,54857,54859,54861,54865,54868,
-54869,54872,54876,54887,54889,54896,54897,54900,54915,54917,54924,54925,54928,
-54932,54941,54943,54945,54952,54956,54960,54969,54971,54980,54981,54984,54988,
-54993,54996,54999,55001,55008,55012,55016,55024,55029,55036,55037,55040,55044,
-55057,55064,55065,55068,55072,55080,55081,55083,55085,55092,55093,55096,55100,
-55108,55111,55113,55120,55121,55124,55126,55127,55128,55129,55136,55137,55139,
-55141,55145,55148,55152,55156,55164,55165,55169,55176,55177,55180,55184,55192,
-55193,55195,55197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20285,20339,20551,20729,
-21152,21487,21621,21733,22025,23233,23478,26247,26550,26551,26607,27468,29634,
-30146,31292,33499,33540,34903,34952,35382,36040,36303,36603,36838,39381,21051,
-21364,21508,24682,24932,27580,29647,33050,35258,35282,38307,20355,21002,22718,
-22904,23014,24178,24185,25031,25536,26438,26604,26751,28567,30286,30475,30965,
-31240,31487,31777,32925,33390,33393,35563,38291,20075,21917,26359,28212,30883,
-31469,33883,35088,34638,38824,21208,22350,22570,23884,24863,25022,25121,25954,
-26577,27204,28187,29976,30131,30435,30640,32058,37039,37969,37970,40853,21283,
-23724,30002,32987,37440,38296,21083,22536,23004,23713,23831,24247,24378,24394,
-24951,27743,30074,30086,31968,32115,32177,32652,33108,33313,34193,35137,35611,
-37628,38477,40007,20171,20215,20491,20977,22607,24887,24894,24936,25913,27114,
-28433,30117,30342,30422,31623,33445,33995,63744,37799,38283,21888,23458,22353,
-63745,31923,32697,37301,20520,21435,23621,24040,25298,25454,25818,25831,28192,
-28844,31067,36317,36382,63746,36989,37445,37624,20094,20214,20581,24062,24314,
-24838,26967,33137,34388,36423,37749,39467,20062,20625,26480,26688,20745,21133,
-21138,27298,30652,37392,40660,21163,24623,36850,20552,25001,25581,25802,26684,
-27268,28608,33160,35233,38548,22533,29309,29356,29956,32121,32365,32937,35211,
-35700,36963,40273,25225,27770,28500,32080,32570,35363,20860,24906,31645,35609,
-37463,37772,20140,20435,20510,20670,20742,21185,21197,21375,22384,22659,24218,
-24465,24950,25004,25806,25964,26223,26299,26356,26775,28039,28805,28913,29855,
-29861,29898,30169,30828,30956,31455,31478,32069,32147,32789,32831,33051,33686,
-35686,36629,36885,37857,38915,38968,39514,39912,20418,21843,22586,22865,23395,
-23622,24760,25106,26690,26800,26856,28330,30028,30328,30926,31293,31995,32363,
-32380,35336,35489,35903,38542,40388,21476,21481,21578,21617,22266,22993,23396,
-23611,24235,25335,25911,25925,25970,26272,26543,27073,27837,30204,30352,30590,
-31295,32660,32771,32929,33167,33510,33533,33776,34241,34865,34996,35493,63747,
-36764,37678,38599,39015,39640,40723,21741,26011,26354,26767,31296,35895,40288,
-22256,22372,23825,26118,26801,26829,28414,29736,34974,39908,27752,63748,39592,
-20379,20844,20849,21151,23380,24037,24656,24685,25329,25511,25915,29657,31354,
-34467,36002,38799,20018,23521,25096,26524,29916,31185,33747,35463,35506,36328,
-36942,37707,38982,24275,27112,34303,37101,63749,20896,23448,23532,24931,26874,
-27454,28748,29743,29912,31649,32592,33733,35264,36011,38364,39208,21038,24669,
-25324,36866,20362,20809,21281,22745,24291,26336,27960,28826,29378,29654,31568,
-33009,37979,21350,25499,32619,20054,20608,22602,22750,24618,24871,25296,27088,
-39745,23439,32024,32945,36703,20132,20689,21676,21932,23308,23968,24039,25898,
-25934,26657,27211,29409,30350,30703,32094,32761,33184,34126,34527,36611,36686,
-37066,39171,39509,39851,19992,20037,20061,20167,20465,20855,21246,21312,21475,
-21477,21646,22036,22389,22434,23495,23943,24272,25084,25304,25937,26552,26601,
-27083,27472,27590,27628,27714,28317,28792,29399,29590,29699,30655,30697,31350,
-32127,32777,33276,33285,33290,33503,34914,35635,36092,36544,36881,37041,37476,
-37558,39378,39493,40169,40407,40860,22283,23616,33738,38816,38827,40628,21531,
-31384,32676,35033,36557,37089,22528,23624,25496,31391,23470,24339,31353,31406,
-33422,36524,20518,21048,21240,21367,22280,25331,25458,27402,28099,30519,21413,
-29527,34152,36470,38357,26426,27331,28528,35437,36556,39243,63750,26231,27512,
-36020,39740,63751,21483,22317,22862,25542,27131,29674,30789,31418,31429,31998,
-33909,35215,36211,36917,38312,21243,22343,30023,31584,33740,37406,63752,27224,
-20811,21067,21127,25119,26840,26997,38553,20677,21156,21220,25027,26020,26681,
-27135,29822,31563,33465,33771,35250,35641,36817,39241,63753,20170,22935,25810,
-26129,27278,29748,31105,31165,33449,34942,34943,35167,63754,37670,20235,21450,
-24613,25201,27762,32026,32102,20120,20834,30684,32943,20225,20238,20854,20864,
-21980,22120,22331,22522,22524,22804,22855,22931,23492,23696,23822,24049,24190,
-24524,25216,26071,26083,26398,26399,26462,26827,26820,27231,27450,27683,27773,
-27778,28103,29592,29734,29738,29826,29859,30072,30079,30849,30959,31041,31047,
-31048,31098,31637,32000,32186,32648,32774,32813,32908,35352,35663,35912,36215,
-37665,37668,39138,39249,39438,39439,39525,40594,32202,20342,21513,25326,26708,
-37329,21931,20794,63755,63756,23068,25062,63757,25295,25343,63758,63759,63760,
-63761,63762,63763,37027,63764,63765,63766,63767,63768,35582,63769,63770,63771,
-63772,26262,63773,29014,63774,63775,38627,63776,25423,25466,21335,63777,26511,
-26976,28275,63778,30007,63779,63780,63781,32013,63782,63783,34930,22218,23064,
-63784,63785,63786,63787,63788,20035,63789,20839,22856,26608,32784,63790,22899,
-24180,25754,31178,24565,24684,25288,25467,23527,23511,21162,63791,22900,24361,
-24594,63792,63793,63794,29785,63795,63796,63797,63798,63799,63800,39377,63801,
-63802,63803,63804,63805,63806,63807,63808,63809,63810,63811,28611,63812,63813,
-33215,36786,24817,63814,63815,33126,63816,63817,23615,63818,63819,63820,63821,
-63822,63823,63824,63825,23273,35365,26491,32016,63826,63827,63828,63829,63830,
-63831,33021,63832,63833,23612,27877,21311,28346,22810,33590,20025,20150,20294,
-21934,22296,22727,24406,26039,26086,27264,27573,28237,30701,31471,31774,32222,
-34507,34962,37170,37723,25787,28606,29562,30136,36948,21846,22349,25018,25812,
-26311,28129,28251,28525,28601,30192,32835,33213,34113,35203,35527,35674,37663,
-27795,30035,31572,36367,36957,21776,22530,22616,24162,25095,25758,26848,30070,
-31958,34739,40680,20195,22408,22382,22823,23565,23729,24118,24453,25140,25825,
-29619,33274,34955,36024,38538,40667,23429,24503,24755,20498,20992,21040,22294,
-22581,22615,23566,23648,23798,23947,24230,24466,24764,25361,25481,25623,26691,
-26873,27330,28120,28193,28372,28644,29182,30428,30585,31153,31291,33796,35241,
-36077,36339,36424,36867,36884,36947,37117,37709,38518,38876,27602,28678,29272,
-29346,29544,30563,31167,31716,32411,35712,22697,24775,25958,26109,26302,27788,
-28958,29129,35930,38931,20077,31361,20189,20908,20941,21205,21516,24999,26481,
-26704,26847,27934,28540,30140,30643,31461,33012,33891,37509,20828,26007,26460,
-26515,30168,31431,33651,63834,35910,36887,38957,23663,33216,33434,36929,36975,
-37389,24471,23965,27225,29128,30331,31561,34276,35588,37159,39472,21895,25078,
-63835,30313,32645,34367,34746,35064,37007,63836,27931,28889,29662,32097,33853,
-63837,37226,39409,63838,20098,21365,27396,27410,28734,29211,34349,40478,21068,
-36771,23888,25829,25900,27414,28651,31811,32412,34253,35172,35261,25289,33240,
-34847,24266,26391,28010,29436,29701,29807,34690,37086,20358,23821,24480,33802,
-20919,25504,30053,20142,20486,20841,20937,26753,27153,31918,31921,31975,33391,
-35538,36635,37327,20406,20791,21237,21570,24300,24942,25150,26053,27354,28670,
-31018,34268,34851,38317,39522,39530,40599,40654,21147,26310,27511,28701,31019,
-36706,38722,24976,25088,25891,28451,29001,29833,32244,32879,34030,36646,36899,
-37706,20925,21015,21155,27916,28872,35010,24265,25986,27566,28610,31806,29557,
-20196,20278,22265,63839,23738,23994,24604,29618,31533,32666,32718,32838,36894,
-37428,38646,38728,38936,40801,20363,28583,31150,37300,38583,21214,63840,25736,
-25796,27347,28510,28696,29200,30439,32769,34310,34396,36335,36613,38706,39791,
-40442,40565,30860,31103,32160,33737,37636,40575,40595,35542,22751,24324,26407,
-28711,29903,31840,32894,20769,28712,29282,30922,36034,36058,36084,38647,20102,
-20698,23534,24278,26009,29134,30274,30637,32842,34044,36988,39719,40845,22744,
-23105,23650,27155,28122,28431,30267,32047,32311,34078,35128,37860,38475,21129,
-26066,26611,27060,27969,28316,28687,29705,29792,30041,30244,30827,35628,39006,
-20845,25134,38520,20374,20523,23833,28138,32184,36650,24459,24900,26647,63841,
-38534,21202,32907,20956,20940,26974,31260,32190,33777,38517,20442,21033,21400,
-21519,21774,23653,24743,26446,26792,28012,29313,29432,29702,29827,63842,30178,
-31852,32633,32696,33673,35023,35041,37324,37328,38626,39881,21533,28542,29136,
-29848,34298,36522,38563,40023,40607,26519,28107,29747,33256,38678,30764,31435,
-31520,31890,25705,29802,30194,30908,30952,39340,39764,40635,23518,24149,28448,
-33180,33707,37000,19975,21325,23081,24018,24398,24930,25405,26217,26364,28415,
-28459,28771,30622,33836,34067,34875,36627,39237,39995,21788,25273,26411,27819,
-33545,35178,38778,20129,22916,24536,24537,26395,32178,32596,33426,33579,33725,
-36638,37017,22475,22969,23186,23504,26151,26522,26757,27599,29028,32629,36023,
-36067,36993,39749,33032,35978,38476,39488,40613,23391,27667,29467,30450,30431,
-33804,20906,35219,20813,20885,21193,26825,27796,30468,30496,32191,32236,38754,
-40629,28357,34065,20901,21517,21629,26126,26269,26919,28319,30399,30609,33559,
-33986,34719,37225,37528,40180,34946,20398,20882,21215,22982,24125,24917,25720,
-25721,26286,26576,27169,27597,27611,29279,29281,29761,30520,30683,32791,33468,
-33541,35584,35624,35980,26408,27792,29287,30446,30566,31302,40361,27519,27794,
-22818,26406,33945,21359,22675,22937,24287,25551,26164,26483,28218,29483,31447,
-33495,37672,21209,24043,25006,25035,25098,25287,25771,26080,26969,27494,27595,
-28961,29687,30045,32326,33310,33538,34154,35491,36031,38695,40289,22696,40664,
-20497,21006,21563,21839,25991,27766,32010,32011,32862,34442,38272,38639,21247,
-27797,29289,21619,23194,23614,23883,24396,24494,26410,26806,26979,28220,28228,
-30473,31859,32654,34183,35598,36855,38753,40692,23735,24758,24845,25003,25935,
-26107,26108,27665,27887,29599,29641,32225,38292,23494,34588,35600,21085,21338,
-25293,25615,25778,26420,27192,27850,29632,29854,31636,31893,32283,33162,33334,
-34180,36843,38649,39361,20276,21322,21453,21467,25292,25644,25856,26001,27075,
-27886,28504,29677,30036,30242,30436,30460,30928,30971,31020,32070,33324,34784,
-36820,38930,39151,21187,25300,25765,28196,28497,30332,36299,37297,37474,39662,
-39747,20515,20621,22346,22952,23592,24135,24439,25151,25918,26041,26049,26121,
-26507,27036,28354,30917,32033,32938,33152,33323,33459,33953,34444,35370,35607,
-37030,38450,40848,20493,20467,63843,22521,24472,25308,25490,26479,28227,28953,
-30403,32972,32986,35060,35061,35097,36064,36649,37197,38506,20271,20336,24091,
-26575,26658,30333,30334,39748,24161,27146,29033,29140,30058,63844,32321,34115,
-34281,39132,20240,31567,32624,38309,20961,24070,26805,27710,27726,27867,29359,
-31684,33539,27861,29754,20731,21128,22721,25816,27287,29863,30294,30887,34327,
-38370,38713,63845,21342,24321,35722,36776,36783,37002,21029,30629,40009,40712,
-19993,20482,20853,23643,24183,26142,26170,26564,26821,28851,29953,30149,31177,
-31453,36647,39200,39432,20445,22561,22577,23542,26222,27493,27921,28282,28541,
-29668,29995,33769,35036,35091,35676,36628,20239,20693,21264,21340,23443,24489,
-26381,31119,33145,33583,34068,35079,35206,36665,36667,39333,39954,26412,20086,
-20472,22857,23553,23791,23792,25447,26834,28925,29090,29739,32299,34028,34562,
-36898,37586,40179,19981,20184,20463,20613,21078,21103,21542,21648,22496,22827,
-23142,23386,23413,23500,24220,63846,25206,25975,26023,28014,28325,29238,31526,
-31807,32566,33104,33105,33178,33344,33433,33705,35331,36000,36070,36091,36212,
-36282,37096,37340,38428,38468,39385,40167,21271,20998,21545,22132,22707,22868,
-22894,24575,24996,25198,26128,27774,28954,30406,31881,31966,32027,33452,36033,
-38640,63847,20315,24343,24447,25282,23849,26379,26842,30844,32323,40300,19989,
-20633,21269,21290,21329,22915,23138,24199,24754,24970,25161,25209,26000,26503,
-27047,27604,27606,27607,27608,27832,63848,29749,30202,30738,30865,31189,31192,
-31875,32203,32737,32933,33086,33218,33778,34586,35048,35513,35692,36027,37145,
-38750,39131,40763,22188,23338,24428,25996,27315,27567,27996,28657,28693,29277,
-29613,36007,36051,38971,24977,27703,32856,39425,20045,20107,20123,20181,20282,
-20284,20351,20447,20735,21490,21496,21766,21987,22235,22763,22882,23057,23531,
-23546,23556,24051,24107,24473,24605,25448,26012,26031,26614,26619,26797,27515,
-27801,27863,28195,28681,29509,30722,31038,31040,31072,31169,31721,32023,32114,
-32902,33293,33678,34001,34503,35039,35408,35422,35613,36060,36198,36781,37034,
-39164,39391,40605,21066,63849,26388,63850,20632,21034,23665,25955,27733,29642,
-29987,30109,31639,33948,37240,38704,20087,25746,27578,29022,34217,19977,63851,
-26441,26862,28183,33439,34072,34923,25591,28545,37394,39087,19978,20663,20687,
-20767,21830,21930,22039,23360,23577,23776,24120,24202,24224,24258,24819,26705,
-27233,28248,29245,29248,29376,30456,31077,31665,32724,35059,35316,35443,35937,
-36062,38684,22622,29885,36093,21959,63852,31329,32034,33394,29298,29983,29989,
-63853,31513,22661,22779,23996,24207,24246,24464,24661,25234,25471,25933,26257,
-26329,26360,26646,26866,29312,29790,31598,32110,32214,32626,32997,33298,34223,
-35199,35475,36893,37604,40653,40736,22805,22893,24109,24796,26132,26227,26512,
-27728,28101,28511,30707,30889,33990,37323,37675,20185,20682,20808,21892,23307,
-23459,25159,25982,26059,28210,29053,29697,29764,29831,29887,30316,31146,32218,
-32341,32680,33146,33203,33337,34330,34796,35445,36323,36984,37521,37925,39245,
-39854,21352,23633,26964,27844,27945,28203,33292,34203,35131,35373,35498,38634,
-40807,21089,26297,27570,32406,34814,36109,38275,38493,25885,28041,29166,63854,
-22478,22995,23468,24615,24826,25104,26143,26207,29481,29689,30427,30465,31596,
-32854,32882,33125,35488,37266,19990,21218,27506,27927,31237,31545,32048,63855,
-36016,21484,22063,22609,23477,23567,23569,24034,25152,25475,25620,26157,26803,
-27836,28040,28335,28703,28836,29138,29990,30095,30094,30233,31505,31712,31787,
-32032,32057,34092,34157,34311,35380,36877,36961,37045,37559,38902,39479,20439,
-23660,26463,28049,31903,32396,35606,36118,36895,23403,24061,25613,33984,36956,
-39137,29575,23435,24730,26494,28126,35359,35494,36865,38924,21047,63856,28753,
-30862,37782,34928,37335,20462,21463,22013,22234,22402,22781,23234,23432,23723,
-23744,24101,24833,25101,25163,25480,25628,25910,25976,27193,27530,27700,27929,
-28465,29159,29417,29560,29703,29874,30246,30561,31168,31319,31466,31929,32143,
-32172,32353,32670,33065,33585,33936,34010,34282,34966,35504,35728,36664,36930,
-36995,37228,37526,37561,38539,38567,38568,38614,38656,38920,39318,39635,39706,
-21460,22654,22809,23408,23487,28113,28506,29087,29729,29881,32901,33789,24033,
-24455,24490,24642,26092,26642,26991,27219,27529,27957,28147,29667,30462,30636,
-31565,32020,33059,33308,33600,34036,34147,35426,35524,37255,37662,38918,39348,
-25100,34899,36848,37477,23815,23847,23913,29791,33181,34664,28629,25342,32722,
-35126,35186,19998,20056,20711,21213,21319,25215,26119,32361,34821,38494,20365,
-21273,22070,22987,23204,23608,23630,23629,24066,24337,24643,26045,26159,26178,
-26558,26612,29468,30690,31034,32709,33940,33997,35222,35430,35433,35553,35925,
-35962,22516,23508,24335,24687,25325,26893,27542,28252,29060,31698,34645,35672,
-36606,39135,39166,20280,20353,20449,21627,23072,23480,24892,26032,26216,29180,
-30003,31070,32051,33102,33251,33688,34218,34254,34563,35338,36523,36763,63857,
-36805,22833,23460,23526,24713,23529,23563,24515,27777,63858,28145,28683,29978,
-33455,35574,20160,21313,63859,38617,27663,20126,20420,20818,21854,23077,23784,
-25105,29273,33469,33706,34558,34905,35357,38463,38597,39187,40201,40285,22538,
-23731,23997,24132,24801,24853,25569,27138,28197,37122,37716,38990,39952,40823,
-23433,23736,25353,26191,26696,30524,38593,38797,38996,39839,26017,35585,36555,
-38332,21813,23721,24022,24245,26263,30284,33780,38343,22739,25276,29390,40232,
-20208,22830,24591,26171,27523,31207,40230,21395,21696,22467,23830,24859,26326,
-28079,30861,33406,38552,38724,21380,25212,25494,28082,32266,33099,38989,27387,
-32588,40367,40474,20063,20539,20918,22812,24825,25590,26928,29242,32822,63860,
-37326,24369,63861,63862,32004,33509,33903,33979,34277,36493,63863,20335,63864,
-63865,22756,23363,24665,25562,25880,25965,26264,63866,26954,27171,27915,28673,
-29036,30162,30221,31155,31344,63867,32650,63868,35140,63869,35731,37312,38525,
-63870,39178,22276,24481,26044,28417,30208,31142,35486,39341,39770,40812,20740,
-25014,25233,27277,33222,20547,22576,24422,28937,35328,35578,23420,34326,20474,
-20796,22196,22852,25513,28153,23978,26989,20870,20104,20313,63871,63872,63873,
-22914,63874,63875,27487,27741,63876,29877,30998,63877,33287,33349,33593,36671,
-36701,63878,39192,63879,63880,63881,20134,63882,22495,24441,26131,63883,63884,
-30123,32377,35695,63885,36870,39515,22181,22567,23032,23071,23476,63886,24310,
-63887,63888,25424,25403,63889,26941,27783,27839,28046,28051,28149,28436,63890,
-28895,28982,29017,63891,29123,29141,63892,30799,30831,63893,31605,32227,63894,
-32303,63895,34893,36575,63896,63897,63898,37467,63899,40182,63900,63901,63902,
-24709,28037,63903,29105,63904,63905,38321,21421,63906,63907,63908,26579,63909,
-28814,28976,29744,33398,33490,63910,38331,39653,40573,26308,63911,29121,33865,
-63912,63913,22603,63914,63915,23992,24433,63916,26144,26254,27001,27054,27704,
-27891,28214,28481,28634,28699,28719,29008,29151,29552,63917,29787,63918,29908,
-30408,31310,32403,63919,63920,33521,35424,36814,63921,37704,63922,38681,63923,
-63924,20034,20522,63925,21000,21473,26355,27757,28618,29450,30591,31330,33454,
-34269,34306,63926,35028,35427,35709,35947,63927,37555,63928,38675,38928,20116,
-20237,20425,20658,21320,21566,21555,21978,22626,22714,22887,23067,23524,24735,
-63929,25034,25942,26111,26212,26791,27738,28595,28879,29100,29522,31613,34568,
-35492,39986,40711,23627,27779,29508,29577,37434,28331,29797,30239,31337,32277,
-34314,20800,22725,25793,29934,29973,30320,32705,37013,38605,39252,28198,29926,
-31401,31402,33253,34521,34680,35355,23113,23436,23451,26785,26880,28003,29609,
-29715,29740,30871,32233,32747,33048,33109,33694,35916,38446,38929,26352,24448,
-26106,26505,27754,29579,20525,23043,27498,30702,22806,23916,24013,29477,30031,
-63930,63931,20709,20985,22575,22829,22934,23002,23525,63932,63933,23970,25303,
-25622,25747,25854,63934,26332,63935,27208,63936,29183,29796,63937,31368,31407,
-32327,32350,32768,33136,63938,34799,35201,35616,36953,63939,36992,39250,24958,
-27442,28020,32287,35109,36785,20433,20653,20887,21191,22471,22665,23481,24248,
-24898,27029,28044,28263,28342,29076,29794,29992,29996,32883,33592,33993,36362,
-37780,37854,63940,20110,20305,20598,20778,21448,21451,21491,23431,23507,23588,
-24858,24962,26100,29275,29591,29760,30402,31056,31121,31161,32006,32701,33419,
-34261,34398,36802,36935,37109,37354,38533,38632,38633,21206,24423,26093,26161,
-26671,29020,31286,37057,38922,20113,63941,27218,27550,28560,29065,32792,33464,
-34131,36939,38549,38642,38907,34074,39729,20112,29066,38596,20803,21407,21729,
-22291,22290,22435,23195,23236,23491,24616,24895,25588,27781,27961,28274,28304,
-29232,29503,29783,33489,34945,36677,36960,63942,38498,39000,40219,26376,36234,
-37470,20301,20553,20702,21361,22285,22996,23041,23561,24944,26256,28205,29234,
-29771,32239,32963,33806,33894,34111,34655,34907,35096,35586,36949,38859,39759,
-20083,20369,20754,20842,63943,21807,21929,23418,23461,24188,24189,24254,24736,
-24799,24840,24841,25540,25912,26377,63944,26580,26586,63945,26977,26978,27833,
-27943,63946,28216,63947,28641,29494,29495,63948,29788,30001,63949,30290,63950,
-63951,32173,33278,33848,35029,35480,35547,35565,36400,36418,36938,36926,36986,
-37193,37321,37742,63952,63953,22537,63954,27603,32905,32946,63955,63956,20801,
-22891,23609,63957,63958,28516,29607,32996,36103,63959,37399,38287,63960,63961,
-63962,63963,32895,25102,28700,32104,34701,63964,22432,24681,24903,27575,35518,
-37504,38577,20057,21535,28139,34093,38512,38899,39150,25558,27875,37009,20957,
-25033,33210,40441,20381,20506,20736,23452,24847,25087,25836,26885,27589,30097,
-30691,32681,33380,34191,34811,34915,35516,35696,37291,20108,20197,20234,63965,
-63966,22839,23016,63967,24050,24347,24411,24609,63968,63969,63970,63971,29246,
-29669,63972,30064,30157,63973,31227,63974,32780,32819,32900,33505,33617,63975,
-63976,36029,36019,36999,63977,63978,39156,39180,63979,63980,28727,30410,32714,
-32716,32764,35610,20154,20161,20995,21360,63981,21693,22240,23035,23493,24341,
-24525,28270,63982,63983,32106,33589,63984,34451,35469,63985,38765,38775,63986,
-63987,19968,20314,20350,22777,26085,28322,36920,37808,39353,20219,22764,22922,
-23001,24641,63988,63989,31252,63990,33615,36035,20837,21316,63991,63992,63993,
-20173,21097,23381,33471,20180,21050,21672,22985,23039,23376,23383,23388,24675,
-24904,28363,28825,29038,29574,29943,30133,30913,32043,32773,33258,33576,34071,
-34249,35566,36039,38604,20316,21242,22204,26027,26152,28796,28856,29237,32189,
-33421,37196,38592,40306,23409,26855,27544,28538,30430,23697,26283,28507,31668,
-31786,34870,38620,19976,20183,21280,22580,22715,22767,22892,23559,24115,24196,
-24373,25484,26290,26454,27167,27299,27404,28479,29254,63994,29520,29835,31456,
-31911,33144,33247,33255,33674,33900,34083,34196,34255,35037,36115,37292,38263,
-38556,20877,21705,22312,23472,25165,26448,26685,26771,28221,28371,28797,32289,
-35009,36001,36617,40779,40782,29229,31631,35533,37658,20295,20302,20786,21632,
-22992,24213,25269,26485,26990,27159,27822,28186,29401,29482,30141,31672,32053,
-33511,33785,33879,34295,35419,36015,36487,36889,37048,38606,40799,21219,21514,
-23265,23490,25688,25973,28404,29380,63995,30340,31309,31515,31821,32318,32735,
-33659,35627,36042,36196,36321,36447,36842,36857,36969,37841,20291,20346,20659,
-20840,20856,21069,21098,22625,22652,22880,23560,23637,24283,24731,25136,26643,
-27583,27656,28593,29006,29728,30000,30008,30033,30322,31564,31627,31661,31686,
-32399,35438,36670,36681,37439,37523,37666,37931,38651,39002,39019,39198,20999,
-25130,25240,27993,30308,31434,31680,32118,21344,23742,24215,28472,28857,31896,
-38673,39822,40670,25509,25722,34678,19969,20117,20141,20572,20597,21576,22979,
-23450,24128,24237,24311,24449,24773,25402,25919,25972,26060,26230,26232,26622,
-26984,27273,27491,27712,28096,28136,28191,28254,28702,28833,29582,29693,30010,
-30555,30855,31118,31243,31357,31934,32142,33351,35330,35562,35998,37165,37194,
-37336,37478,37580,37664,38662,38742,38748,38914,40718,21046,21137,21884,22564,
-24093,24351,24716,25552,26799,28639,31085,31532,33229,34234,35069,35576,36420,
-37261,38500,38555,38717,38988,40778,20430,20806,20939,21161,22066,24340,24427,
-25514,25805,26089,26177,26362,26361,26397,26781,26839,27133,28437,28526,29031,
-29157,29226,29866,30522,31062,31066,31199,31264,31381,31895,31967,32068,32368,
-32903,34299,34468,35412,35519,36249,36481,36896,36973,37347,38459,38613,40165,
-26063,31751,36275,37827,23384,23562,21330,25305,29469,20519,23447,24478,24752,
-24939,26837,28121,29742,31278,32066,32156,32305,33131,36394,36405,37758,37912,
-20304,22352,24038,24231,25387,32618,20027,20303,20367,20570,23005,32964,21610,
-21608,22014,22863,23449,24030,24282,26205,26417,26609,26666,27880,27954,28234,
-28557,28855,29664,30087,31820,32002,32044,32162,33311,34523,35387,35461,36208,
-36490,36659,36913,37198,37202,37956,39376,31481,31909,20426,20737,20934,22472,
-23535,23803,26201,27197,27994,28310,28652,28940,30063,31459,34850,36897,36981,
-38603,39423,33537,20013,20210,34886,37325,21373,27355,26987,27713,33914,22686,
-24974,26366,25327,28893,29969,30151,32338,33976,35657,36104,20043,21482,21675,
-22320,22336,24535,25345,25351,25711,25903,26088,26234,26525,26547,27490,27744,
-27802,28460,30693,30757,31049,31063,32025,32930,33026,33267,33437,33463,34584,
-35468,63996,36100,36286,36978,30452,31257,31287,32340,32887,21767,21972,22645,
-25391,25634,26185,26187,26733,27035,27524,27941,28337,29645,29800,29857,30043,
-30137,30433,30494,30603,31206,32265,32285,33275,34095,34967,35386,36049,36587,
-36784,36914,37805,38499,38515,38663,20356,21489,23018,23241,24089,26702,29894,
-30142,31209,31378,33187,34541,36074,36300,36845,26015,26389,63997,22519,28503,
-32221,36655,37878,38598,24501,25074,28548,19988,20376,20511,21449,21983,23919,
-24046,27425,27492,30923,31642,63998,36425,36554,36974,25417,25662,30528,31364,
-37679,38015,40810,25776,28591,29158,29864,29914,31428,31762,32386,31922,32408,
-35738,36106,38013,39184,39244,21049,23519,25830,26413,32046,20717,21443,22649,
-24920,24921,25082,26028,31449,35730,35734,20489,20513,21109,21809,23100,24288,
-24432,24884,25950,26124,26166,26274,27085,28356,28466,29462,30241,31379,33081,
-33369,33750,33980,20661,22512,23488,23528,24425,25505,30758,32181,33756,34081,
-37319,37365,20874,26613,31574,36012,20932,22971,24765,34389,20508,63999,21076,
-23610,24957,25114,25299,25842,26021,28364,30240,33034,36448,38495,38587,20191,
-21315,21912,22825,24029,25797,27849,28154,29588,31359,33307,34214,36068,36368,
-36983,37351,38369,38433,38854,20984,21746,21894,24505,25764,28552,32180,36639,
-36685,37941,20681,23574,27838,28155,29979,30651,31805,31844,35449,35522,22558,
-22974,24086,25463,29266,30090,30571,35548,36028,36626,24307,26228,28152,32893,
-33729,35531,38737,39894,64000,21059,26367,28053,28399,32224,35558,36910,36958,
-39636,21021,21119,21736,24980,25220,25307,26786,26898,26970,27189,28818,28966,
-30813,30977,30990,31186,31245,32918,33400,33493,33609,34121,35970,36229,37218,
-37259,37294,20419,22225,29165,30679,34560,35320,23544,24534,26449,37032,21474,
-22618,23541,24740,24961,25696,32317,32880,34085,37507,25774,20652,23828,26368,
-22684,25277,25512,26894,27000,27166,28267,30394,31179,33467,33833,35535,36264,
-36861,37138,37195,37276,37648,37656,37786,38619,39478,39949,19985,30044,31069,
-31482,31569,31689,32302,33988,36441,36468,36600,36880,26149,26943,29763,20986,
-26414,40668,20805,24544,27798,34802,34909,34935,24756,33205,33795,36101,21462,
-21561,22068,23094,23601,28810,32736,32858,33030,33261,36259,37257,39519,40434,
-20596,20164,21408,24827,28204,23652,20360,20516,21988,23769,24159,24677,26772,
-27835,28100,29118,30164,30196,30305,31258,31305,32199,32251,32622,33268,34473,
-36636,38601,39347,40786,21063,21189,39149,35242,19971,26578,28422,20405,23522,
-26517,27784,28024,29723,30759,37341,37756,34756,31204,31281,24555,20182,21668,
-21822,22702,22949,24816,25171,25302,26422,26965,33333,38464,39345,39389,20524,
-21331,21828,22396,64001,25176,64002,25826,26219,26589,28609,28655,29730,29752,
-35351,37944,21585,22022,22374,24392,24986,27470,28760,28845,32187,35477,22890,
-33067,25506,30472,32829,36010,22612,25645,27067,23445,24081,28271,64003,34153,
-20812,21488,22826,24608,24907,27526,27760,27888,31518,32974,33492,36294,37040,
-39089,64004,25799,28580,25745,25860,20814,21520,22303,35342,24927,26742,64005,
-30171,31570,32113,36890,22534,27084,33151,35114,36864,38969,20600,22871,22956,
-25237,36879,39722,24925,29305,38358,22369,23110,24052,25226,25773,25850,26487,
-27874,27966,29228,29750,30772,32631,33453,36315,38935,21028,22338,26495,29256,
-29923,36009,36774,37393,38442,20843,21485,25420,20329,21764,24726,25943,27803,
-28031,29260,29437,31255,35207,35997,24429,28558,28921,33192,24846,20415,20559,
-25153,29255,31687,32232,32745,36941,38829,39449,36022,22378,24179,26544,33805,
-35413,21536,23318,24163,24290,24330,25987,32954,34109,38281,38491,20296,21253,
-21261,21263,21638,21754,22275,24067,24598,25243,25265,25429,64006,27873,28006,
-30129,30770,32990,33071,33502,33889,33970,34957,35090,36875,37610,39165,39825,
-24133,26292,26333,28689,29190,64007,20469,21117,24426,24915,26451,27161,28418,
-29922,31080,34920,35961,39111,39108,39491,21697,31263,26963,35575,35914,39080,
-39342,24444,25259,30130,30382,34987,36991,38466,21305,24380,24517,27852,29644,
-30050,30091,31558,33534,39325,20047,36924,19979,20309,21414,22799,24264,26160,
-27827,29781,33655,34662,36032,36944,38686,39957,22737,23416,34384,35604,40372,
-23506,24680,24717,26097,27735,28450,28579,28698,32597,32752,38289,38290,38480,
-38867,21106,36676,20989,21547,21688,21859,21898,27323,28085,32216,33382,37532,
-38519,40569,21512,21704,30418,34532,38308,38356,38492,20130,20233,23022,23270,
-24055,24658,25239,26477,26689,27782,28207,32568,32923,33322,64008,64009,38917,
-20133,20565,21683,22419,22874,23401,23475,25032,26999,28023,28707,34809,35299,
-35442,35559,36994,39405,39608,21182,26680,20502,24184,26447,33607,34892,20139,
-21521,22190,29670,37141,38911,39177,39255,39321,22099,22687,34395,35377,25010,
-27382,29563,36562,27463,38570,39511,22869,29184,36203,38761,20436,23796,24358,
-25080,26203,27883,28843,29572,29625,29694,30505,30541,32067,32098,32291,33335,
-34898,64010,36066,37449,39023,23377,31348,34880,38913,23244,20448,21332,22846,
-23805,25406,28025,29433,33029,33031,33698,37583,38960,20136,20804,21009,22411,
-24418,27842,28366,28677,28752,28847,29074,29673,29801,33610,34722,34913,36872,
-37026,37795,39336,20846,24407,24800,24935,26291,34137,36426,37295,38795,20046,
-20114,21628,22741,22778,22909,23733,24359,25142,25160,26122,26215,27627,28009,
-28111,28246,28408,28564,28640,28649,28765,29392,29733,29786,29920,30355,31068,
-31946,32286,32993,33446,33899,33983,34382,34399,34676,35703,35946,37804,38912,
-39013,24785,25110,37239,23130,26127,28151,28222,29759,39746,24573,24794,31503,
-21700,24344,27742,27859,27946,28888,32005,34425,35340,40251,21270,21644,23301,
-27194,28779,30069,31117,31166,33457,33775,35441,35649,36008,38772,64011,25844,
-25899,30906,30907,31339,20024,21914,22864,23462,24187,24739,25563,27489,26213,
-26707,28185,29029,29872,32008,36996,39529,39973,27963,28369,29502,35905,38346,
-20976,24140,24488,24653,24822,24880,24908,26179,26180,27045,27841,28255,28361,
-28514,29004,29852,30343,31681,31783,33618,34647,36945,38541,40643,21295,22238,
-24315,24458,24674,24724,25079,26214,26371,27292,28142,28590,28784,29546,32362,
-33214,33588,34516,35496,36036,21123,29554,23446,27243,37892,21742,22150,23389,
-25928,25989,26313,26783,28045,28102,29243,32948,37237,39501,20399,20505,21402,
-21518,21564,21897,21957,24127,24460,26429,29030,29661,36869,21211,21235,22628,
-22734,28932,29071,29179,34224,35347,26248,34216,21927,26244,29002,33841,21321,
-21913,27585,24409,24509,25582,26249,28999,35569,36637,40638,20241,25658,28875,
-30054,34407,24676,35662,40440,20807,20982,21256,27958,33016,40657,26133,27427,
-28824,30165,21507,23673,32007,35350,27424,27453,27462,21560,24688,27965,32725,
-33288,20694,20958,21916,22123,22221,23020,23305,24076,24985,24984,25137,26206,
-26342,29081,29113,29114,29351,31143,31232,32690,35440,
+12288, 12289, 12290, 183, 8229, 8230, 168, 12291, 173, 8213, 8741, 65340, 8764,
+    8216, 8217, 8220, 8221, 12308, 12309, 12296, 12297, 12298, 12299, 12300,
+    12301, 12302, 12303, 12304, 12305, 177, 215, 247, 8800, 8804, 8805, 8734,
+    8756, 176, 8242, 8243, 8451, 8491, 65504, 65505, 65509, 9794, 9792, 8736,
+    8869, 8978, 8706, 8711, 8801, 8786, 167, 8251, 9734, 9733, 9675, 9679, 9678,
+    9671, 9670, 9633, 9632, 9651, 9650, 9661, 9660, 8594, 8592, 8593, 8595,
+    8596, 12307, 8810, 8811, 8730, 8765, 8733, 8757, 8747, 8748, 8712, 8715,
+    8838, 8839, 8834, 8835, 8746, 8745, 8743, 8744, 65506, 8658, 8660, 8704,
+    8707, 180, 65374, 711, 728, 733, 730, 729, 184, 731, 161, 191, 720, 8750,
+    8721, 8719, 164, 8457, 8240, 9665, 9664, 9655, 9654, 9828, 9824, 9825, 9829,
+    9831, 9827, 8857, 9672, 9635, 9680, 9681, 9618, 9636, 9637, 9640, 9639,
+    9638, 9641, 9832, 9743, 9742, 9756, 9758, 182, 8224, 8225, 8597, 8599, 8601,
+    8598, 8600, 9837, 9833, 9834, 9836, 12927, 12828, 8470, 13255, 8482, 13250,
+    13272, 8481, 8364, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 65281, 65282, 65283, 65284, 65285, 65286, 65287, 65288,
+    65289, 65290, 65291, 65292, 65293, 65294, 65295, 65296, 65297, 65298, 65299,
+    65300, 65301, 65302, 65303, 65304, 65305, 65306, 65307, 65308, 65309, 65310,
+    65311, 65312, 65313, 65314, 65315, 65316, 65317, 65318, 65319, 65320, 65321,
+    65322, 65323, 65324, 65325, 65326, 65327, 65328, 65329, 65330, 65331, 65332,
+    65333, 65334, 65335, 65336, 65337, 65338, 65339, 65510, 65341, 65342, 65343,
+    65344, 65345, 65346, 65347, 65348, 65349, 65350, 65351, 65352, 65353, 65354,
+    65355, 65356, 65357, 65358, 65359, 65360, 65361, 65362, 65363, 65364, 65365,
+    65366, 65367, 65368, 65369, 65370, 65371, 65372, 65373, 65507, 12593, 12594,
+    12595, 12596, 12597, 12598, 12599, 12600, 12601, 12602, 12603, 12604, 12605,
+    12606, 12607, 12608, 12609, 12610, 12611, 12612, 12613, 12614, 12615, 12616,
+    12617, 12618, 12619, 12620, 12621, 12622, 12623, 12624, 12625, 12626, 12627,
+    12628, 12629, 12630, 12631, 12632, 12633, 12634, 12635, 12636, 12637, 12638,
+    12639, 12640, 12641, 12642, 12643, 12644, 12645, 12646, 12647, 12648, 12649,
+    12650, 12651, 12652, 12653, 12654, 12655, 12656, 12657, 12658, 12659, 12660,
+    12661, 12662, 12663, 12664, 12665, 12666, 12667, 12668, 12669, 12670, 12671,
+    12672, 12673, 12674, 12675, 12676, 12677, 12678, 12679, 12680, 12681, 12682,
+    12683, 12684, 12685, 12686, 8560, 8561, 8562, 8563, 8564, 8565, 8566, 8567,
+    8568, 8569, 0, 0, 0, 0, 0, 8544, 8545, 8546, 8547, 8548, 8549, 8550, 8551,
+    8552, 8553, 0, 0, 0, 0, 0, 0, 0, 913, 914, 915, 916, 917, 918, 919, 920,
+    921, 922, 923, 924, 925, 926, 927, 928, 929, 931, 932, 933, 934, 935, 936,
+    937, 0, 0, 0, 0, 0, 0, 0, 0, 945, 946, 947, 948, 949, 950, 951, 952, 953,
+    954, 955, 956, 957, 958, 959, 960, 961, 963, 964, 965, 966, 967, 968, 969,
+    0, 0, 0, 0, 0, 0, 9472, 9474, 9484, 9488, 9496, 9492, 9500, 9516, 9508,
+    9524, 9532, 9473, 9475, 9487, 9491, 9499, 9495, 9507, 9523, 9515, 9531,
+    9547, 9504, 9519, 9512, 9527, 9535, 9501, 9520, 9509, 9528, 9538, 9490,
+    9489, 9498, 9497, 9494, 9493, 9486, 9485, 9502, 9503, 9505, 9506, 9510,
+    9511, 9513, 9514, 9517, 9518, 9521, 9522, 9525, 9526, 9529, 9530, 9533,
+    9534, 9536, 9537, 9539, 9540, 9541, 9542, 9543, 9544, 9545, 9546, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 13205,
+    13206, 13207, 8467, 13208, 13252, 13219, 13220, 13221, 13222, 13209, 13210,
+    13211, 13212, 13213, 13214, 13215, 13216, 13217, 13218, 13258, 13197, 13198,
+    13199, 13263, 13192, 13193, 13256, 13223, 13224, 13232, 13233, 13234, 13235,
+    13236, 13237, 13238, 13239, 13240, 13241, 13184, 13185, 13186, 13187, 13188,
+    13242, 13243, 13244, 13245, 13246, 13247, 13200, 13201, 13202, 13203, 13204,
+    8486, 13248, 13249, 13194, 13195, 13196, 13270, 13253, 13229, 13230, 13231,
+    13275, 13225, 13226, 13227, 13228, 13277, 13264, 13267, 13251, 13257, 13276,
+    13254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 198, 208, 170, 294, 0,
+    306, 0, 319, 321, 216, 338, 186, 222, 358, 330, 0, 12896, 12897, 12898,
+    12899, 12900, 12901, 12902, 12903, 12904, 12905, 12906, 12907, 12908, 12909,
+    12910, 12911, 12912, 12913, 12914, 12915, 12916, 12917, 12918, 12919, 12920,
+    12921, 12922, 12923, 9424, 9425, 9426, 9427, 9428, 9429, 9430, 9431, 9432,
+    9433, 9434, 9435, 9436, 9437, 9438, 9439, 9440, 9441, 9442, 9443, 9444,
+    9445, 9446, 9447, 9448, 9449, 9312, 9313, 9314, 9315, 9316, 9317, 9318,
+    9319, 9320, 9321, 9322, 9323, 9324, 9325, 9326, 189, 8531, 8532, 188, 190,
+    8539, 8540, 8541, 8542, 230, 273, 240, 295, 305, 307, 312, 320, 322, 248,
+    339, 223, 254, 359, 331, 329, 12800, 12801, 12802, 12803, 12804, 12805,
+    12806, 12807, 12808, 12809, 12810, 12811, 12812, 12813, 12814, 12815, 12816,
+    12817, 12818, 12819, 12820, 12821, 12822, 12823, 12824, 12825, 12826, 12827,
+    9372, 9373, 9374, 9375, 9376, 9377, 9378, 9379, 9380, 9381, 9382, 9383,
+    9384, 9385, 9386, 9387, 9388, 9389, 9390, 9391, 9392, 9393, 9394, 9395,
+    9396, 9397, 9332, 9333, 9334, 9335, 9336, 9337, 9338, 9339, 9340, 9341,
+    9342, 9343, 9344, 9345, 9346, 185, 178, 179, 8308, 8319, 8321, 8322, 8323,
+    8324, 12353, 12354, 12355, 12356, 12357, 12358, 12359, 12360, 12361, 12362,
+    12363, 12364, 12365, 12366, 12367, 12368, 12369, 12370, 12371, 12372, 12373,
+    12374, 12375, 12376, 12377, 12378, 12379, 12380, 12381, 12382, 12383, 12384,
+    12385, 12386, 12387, 12388, 12389, 12390, 12391, 12392, 12393, 12394, 12395,
+    12396, 12397, 12398, 12399, 12400, 12401, 12402, 12403, 12404, 12405, 12406,
+    12407, 12408, 12409, 12410, 12411, 12412, 12413, 12414, 12415, 12416, 12417,
+    12418, 12419, 12420, 12421, 12422, 12423, 12424, 12425, 12426, 12427, 12428,
+    12429, 12430, 12431, 12432, 12433, 12434, 12435, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 12449, 12450, 12451, 12452, 12453, 12454, 12455, 12456, 12457, 12458,
+    12459, 12460, 12461, 12462, 12463, 12464, 12465, 12466, 12467, 12468, 12469,
+    12470, 12471, 12472, 12473, 12474, 12475, 12476, 12477, 12478, 12479, 12480,
+    12481, 12482, 12483, 12484, 12485, 12486, 12487, 12488, 12489, 12490, 12491,
+    12492, 12493, 12494, 12495, 12496, 12497, 12498, 12499, 12500, 12501, 12502,
+    12503, 12504, 12505, 12506, 12507, 12508, 12509, 12510, 12511, 12512, 12513,
+    12514, 12515, 12516, 12517, 12518, 12519, 12520, 12521, 12522, 12523, 12524,
+    12525, 12526, 12527, 12528, 12529, 12530, 12531, 12532, 12533, 12534, 0, 0,
+    0, 0, 0, 0, 0, 0, 1040, 1041, 1042, 1043, 1044, 1045, 1025, 1046, 1047,
+    1048, 1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059,
+    1060, 1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1072, 1073, 1074, 1075, 1076,
+    1077, 1105, 1078, 1079, 1080, 1081, 1082, 1083, 1084, 1085, 1086, 1087,
+    1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096, 1097, 1098, 1099,
+    1100, 1101, 1102, 1103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 44032, 44033, 44036, 44039, 44040, 44041, 44042, 44048, 44049,
+    44050, 44051, 44052, 44053, 44054, 44055, 44057, 44058, 44059, 44060, 44061,
+    44064, 44068, 44076, 44077, 44079, 44080, 44081, 44088, 44089, 44092, 44096,
+    44107, 44109, 44116, 44120, 44124, 44144, 44145, 44148, 44151, 44152, 44154,
+    44160, 44161, 44163, 44164, 44165, 44166, 44169, 44170, 44171, 44172, 44176,
+    44180, 44188, 44189, 44191, 44192, 44193, 44200, 44201, 44202, 44204, 44207,
+    44208, 44216, 44217, 44219, 44220, 44221, 44225, 44228, 44232, 44236, 44245,
+    44247, 44256, 44257, 44260, 44263, 44264, 44266, 44268, 44271, 44272, 44273,
+    44275, 44277, 44278, 44284, 44285, 44288, 44292, 44294, 44300, 44301, 44303,
+    44305, 44312, 44316, 44320, 44329, 44332, 44333, 44340, 44341, 44344, 44348,
+    44356, 44357, 44359, 44361, 44368, 44372, 44376, 44385, 44387, 44396, 44397,
+    44400, 44403, 44404, 44405, 44406, 44411, 44412, 44413, 44415, 44417, 44418,
+    44424, 44425, 44428, 44432, 44444, 44445, 44452, 44471, 44480, 44481, 44484,
+    44488, 44496, 44497, 44499, 44508, 44512, 44516, 44536, 44537, 44540, 44543,
+    44544, 44545, 44552, 44553, 44555, 44557, 44564, 44592, 44593, 44596, 44599,
+    44600, 44602, 44608, 44609, 44611, 44613, 44614, 44618, 44620, 44621, 44622,
+    44624, 44628, 44630, 44636, 44637, 44639, 44640, 44641, 44645, 44648, 44649,
+    44652, 44656, 44664, 44665, 44667, 44668, 44669, 44676, 44677, 44684, 44732,
+    44733, 44734, 44736, 44740, 44748, 44749, 44751, 44752, 44753, 44760, 44761,
+    44764, 44776, 44779, 44781, 44788, 44792, 44796, 44807, 44808, 44813, 44816,
+    44844, 44845, 44848, 44850, 44852, 44860, 44861, 44863, 44865, 44866, 44867,
+    44872, 44873, 44880, 44892, 44893, 44900, 44901, 44921, 44928, 44932, 44936,
+    44944, 44945, 44949, 44956, 44984, 44985, 44988, 44992, 44999, 45000, 45001,
+    45003, 45005, 45006, 45012, 45020, 45032, 45033, 45040, 45041, 45044, 45048,
+    45056, 45057, 45060, 45068, 45072, 45076, 45084, 45085, 45096, 45124, 45125,
+    45128, 45130, 45132, 45134, 45139, 45140, 45141, 45143, 45145, 45149, 45180,
+    45181, 45184, 45188, 45196, 45197, 45199, 45201, 45208, 45209, 45210, 45212,
+    45215, 45216, 45217, 45218, 45224, 45225, 45227, 45228, 45229, 45230, 45231,
+    45233, 45235, 45236, 45237, 45240, 45244, 45252, 45253, 45255, 45256, 45257,
+    45264, 45265, 45268, 45272, 45280, 45285, 45320, 45321, 45323, 45324, 45328,
+    45330, 45331, 45336, 45337, 45339, 45340, 45341, 45347, 45348, 45349, 45352,
+    45356, 45364, 45365, 45367, 45368, 45369, 45376, 45377, 45380, 45384, 45392,
+    45393, 45396, 45397, 45400, 45404, 45408, 45432, 45433, 45436, 45440, 45442,
+    45448, 45449, 45451, 45453, 45458, 45459, 45460, 45464, 45468, 45480, 45516,
+    45520, 45524, 45532, 45533, 45535, 45544, 45545, 45548, 45552, 45561, 45563,
+    45565, 45572, 45573, 45576, 45579, 45580, 45588, 45589, 45591, 45593, 45600,
+    45620, 45628, 45656, 45660, 45664, 45672, 45673, 45684, 45685, 45692, 45700,
+    45701, 45705, 45712, 45713, 45716, 45720, 45721, 45722, 45728, 45729, 45731,
+    45733, 45734, 45738, 45740, 45744, 45748, 45768, 45769, 45772, 45776, 45778,
+    45784, 45785, 45787, 45789, 45794, 45796, 45797, 45798, 45800, 45803, 45804,
+    45805, 45806, 45807, 45811, 45812, 45813, 45815, 45816, 45817, 45818, 45819,
+    45823, 45824, 45825, 45828, 45832, 45840, 45841, 45843, 45844, 45845, 45852,
+    45908, 45909, 45910, 45912, 45915, 45916, 45918, 45919, 45924, 45925, 45927,
+    45929, 45931, 45934, 45936, 45937, 45940, 45944, 45952, 45953, 45955, 45956,
+    45957, 45964, 45968, 45972, 45984, 45985, 45992, 45996, 46020, 46021, 46024,
+    46027, 46028, 46030, 46032, 46036, 46037, 46039, 46041, 46043, 46045, 46048,
+    46052, 46056, 46076, 46096, 46104, 46108, 46112, 46120, 46121, 46123, 46132,
+    46160, 46161, 46164, 46168, 46176, 46177, 46179, 46181, 46188, 46208, 46216,
+    46237, 46244, 46248, 46252, 46261, 46263, 46265, 46272, 46276, 46280, 46288,
+    46293, 46300, 46301, 46304, 46307, 46308, 46310, 46316, 46317, 46319, 46321,
+    46328, 46356, 46357, 46360, 46363, 46364, 46372, 46373, 46375, 46376, 46377,
+    46378, 46384, 46385, 46388, 46392, 46400, 46401, 46403, 46404, 46405, 46411,
+    46412, 46413, 46416, 46420, 46428, 46429, 46431, 46432, 46433, 46496, 46497,
+    46500, 46504, 46506, 46507, 46512, 46513, 46515, 46516, 46517, 46523, 46524,
+    46525, 46528, 46532, 46540, 46541, 46543, 46544, 46545, 46552, 46572, 46608,
+    46609, 46612, 46616, 46629, 46636, 46644, 46664, 46692, 46696, 46748, 46749,
+    46752, 46756, 46763, 46764, 46769, 46804, 46832, 46836, 46840, 46848, 46849,
+    46853, 46888, 46889, 46892, 46895, 46896, 46904, 46905, 46907, 46916, 46920,
+    46924, 46932, 46933, 46944, 46948, 46952, 46960, 46961, 46963, 46965, 46972,
+    46973, 46976, 46980, 46988, 46989, 46991, 46992, 46993, 46994, 46998, 46999,
+    47000, 47001, 47004, 47008, 47016, 47017, 47019, 47020, 47021, 47028, 47029,
+    47032, 47047, 47049, 47084, 47085, 47088, 47092, 47100, 47101, 47103, 47104,
+    47105, 47111, 47112, 47113, 47116, 47120, 47128, 47129, 47131, 47133, 47140,
+    47141, 47144, 47148, 47156, 47157, 47159, 47160, 47161, 47168, 47172, 47185,
+    47187, 47196, 47197, 47200, 47204, 47212, 47213, 47215, 47217, 47224, 47228,
+    47245, 47272, 47280, 47284, 47288, 47296, 47297, 47299, 47301, 47308, 47312,
+    47316, 47325, 47327, 47329, 47336, 47337, 47340, 47344, 47352, 47353, 47355,
+    47357, 47364, 47384, 47392, 47420, 47421, 47424, 47428, 47436, 47439, 47441,
+    47448, 47449, 47452, 47456, 47464, 47465, 47467, 47469, 47476, 47477, 47480,
+    47484, 47492, 47493, 47495, 47497, 47498, 47501, 47502, 47532, 47533, 47536,
+    47540, 47548, 47549, 47551, 47553, 47560, 47561, 47564, 47566, 47567, 47568,
+    47569, 47570, 47576, 47577, 47579, 47581, 47582, 47585, 47587, 47588, 47589,
+    47592, 47596, 47604, 47605, 47607, 47608, 47609, 47610, 47616, 47617, 47624,
+    47637, 47672, 47673, 47676, 47680, 47682, 47688, 47689, 47691, 47693, 47694,
+    47699, 47700, 47701, 47704, 47708, 47716, 47717, 47719, 47720, 47721, 47728,
+    47729, 47732, 47736, 47747, 47748, 47749, 47751, 47756, 47784, 47785, 47787,
+    47788, 47792, 47794, 47800, 47801, 47803, 47805, 47812, 47816, 47832, 47833,
+    47868, 47872, 47876, 47885, 47887, 47889, 47896, 47900, 47904, 47913, 47915,
+    47924, 47925, 47926, 47928, 47931, 47932, 47933, 47934, 47940, 47941, 47943,
+    47945, 47949, 47951, 47952, 47956, 47960, 47969, 47971, 47980, 48008, 48012,
+    48016, 48036, 48040, 48044, 48052, 48055, 48064, 48068, 48072, 48080, 48083,
+    48120, 48121, 48124, 48127, 48128, 48130, 48136, 48137, 48139, 48140, 48141,
+    48143, 48145, 48148, 48149, 48150, 48151, 48152, 48155, 48156, 48157, 48158,
+    48159, 48164, 48165, 48167, 48169, 48173, 48176, 48177, 48180, 48184, 48192,
+    48193, 48195, 48196, 48197, 48201, 48204, 48205, 48208, 48221, 48260, 48261,
+    48264, 48267, 48268, 48270, 48276, 48277, 48279, 48281, 48282, 48288, 48289,
+    48292, 48295, 48296, 48304, 48305, 48307, 48308, 48309, 48316, 48317, 48320,
+    48324, 48333, 48335, 48336, 48337, 48341, 48344, 48348, 48372, 48373, 48374,
+    48376, 48380, 48388, 48389, 48391, 48393, 48400, 48404, 48420, 48428, 48448,
+    48456, 48457, 48460, 48464, 48472, 48473, 48484, 48488, 48512, 48513, 48516,
+    48519, 48520, 48521, 48522, 48528, 48529, 48531, 48533, 48537, 48538, 48540,
+    48548, 48560, 48568, 48596, 48597, 48600, 48604, 48617, 48624, 48628, 48632,
+    48640, 48643, 48645, 48652, 48653, 48656, 48660, 48668, 48669, 48671, 48708,
+    48709, 48712, 48716, 48718, 48724, 48725, 48727, 48729, 48730, 48731, 48736,
+    48737, 48740, 48744, 48746, 48752, 48753, 48755, 48756, 48757, 48763, 48764,
+    48765, 48768, 48772, 48780, 48781, 48783, 48784, 48785, 48792, 48793, 48808,
+    48848, 48849, 48852, 48855, 48856, 48864, 48867, 48868, 48869, 48876, 48897,
+    48904, 48905, 48920, 48921, 48923, 48924, 48925, 48960, 48961, 48964, 48968,
+    48976, 48977, 48981, 49044, 49072, 49093, 49100, 49101, 49104, 49108, 49116,
+    49119, 49121, 49212, 49233, 49240, 49244, 49248, 49256, 49257, 49296, 49297,
+    49300, 49304, 49312, 49313, 49315, 49317, 49324, 49325, 49327, 49328, 49331,
+    49332, 49333, 49334, 49340, 49341, 49343, 49344, 49345, 49349, 49352, 49353,
+    49356, 49360, 49368, 49369, 49371, 49372, 49373, 49380, 49381, 49384, 49388,
+    49396, 49397, 49399, 49401, 49408, 49412, 49416, 49424, 49429, 49436, 49437,
+    49438, 49439, 49440, 49443, 49444, 49446, 49447, 49452, 49453, 49455, 49456,
+    49457, 49462, 49464, 49465, 49468, 49472, 49480, 49481, 49483, 49484, 49485,
+    49492, 49493, 49496, 49500, 49508, 49509, 49511, 49512, 49513, 49520, 49524,
+    49528, 49541, 49548, 49549, 49550, 49552, 49556, 49558, 49564, 49565, 49567,
+    49569, 49573, 49576, 49577, 49580, 49584, 49597, 49604, 49608, 49612, 49620,
+    49623, 49624, 49632, 49636, 49640, 49648, 49649, 49651, 49660, 49661, 49664,
+    49668, 49676, 49677, 49679, 49681, 49688, 49689, 49692, 49695, 49696, 49704,
+    49705, 49707, 49709, 49711, 49713, 49714, 49716, 49736, 49744, 49745, 49748,
+    49752, 49760, 49765, 49772, 49773, 49776, 49780, 49788, 49789, 49791, 49793,
+    49800, 49801, 49808, 49816, 49819, 49821, 49828, 49829, 49832, 49836, 49837,
+    49844, 49845, 49847, 49849, 49884, 49885, 49888, 49891, 49892, 49899, 49900,
+    49901, 49903, 49905, 49910, 49912, 49913, 49915, 49916, 49920, 49928, 49929,
+    49932, 49933, 49939, 49940, 49941, 49944, 49948, 49956, 49957, 49960, 49961,
+    49989, 50024, 50025, 50028, 50032, 50034, 50040, 50041, 50044, 50045, 50052,
+    50056, 50060, 50112, 50136, 50137, 50140, 50143, 50144, 50146, 50152, 50153,
+    50157, 50164, 50165, 50168, 50184, 50192, 50212, 50220, 50224, 50228, 50236,
+    50237, 50248, 50276, 50277, 50280, 50284, 50292, 50293, 50297, 50304, 50324,
+    50332, 50360, 50364, 50409, 50416, 50417, 50420, 50424, 50426, 50431, 50432,
+    50433, 50444, 50448, 50452, 50460, 50472, 50473, 50476, 50480, 50488, 50489,
+    50491, 50493, 50500, 50501, 50504, 50505, 50506, 50508, 50509, 50510, 50515,
+    50516, 50517, 50519, 50520, 50521, 50525, 50526, 50528, 50529, 50532, 50536,
+    50544, 50545, 50547, 50548, 50549, 50556, 50557, 50560, 50564, 50567, 50572,
+    50573, 50575, 50577, 50581, 50583, 50584, 50588, 50592, 50601, 50612, 50613,
+    50616, 50617, 50619, 50620, 50621, 50622, 50628, 50629, 50630, 50631, 50632,
+    50633, 50634, 50636, 50638, 50640, 50641, 50644, 50648, 50656, 50657, 50659,
+    50661, 50668, 50669, 50670, 50672, 50676, 50678, 50679, 50684, 50685, 50686,
+    50687, 50688, 50689, 50693, 50694, 50695, 50696, 50700, 50704, 50712, 50713,
+    50715, 50716, 50724, 50725, 50728, 50732, 50733, 50734, 50736, 50739, 50740,
+    50741, 50743, 50745, 50747, 50752, 50753, 50756, 50760, 50768, 50769, 50771,
+    50772, 50773, 50780, 50781, 50784, 50796, 50799, 50801, 50808, 50809, 50812,
+    50816, 50824, 50825, 50827, 50829, 50836, 50837, 50840, 50844, 50852, 50853,
+    50855, 50857, 50864, 50865, 50868, 50872, 50873, 50874, 50880, 50881, 50883,
+    50885, 50892, 50893, 50896, 50900, 50908, 50909, 50912, 50913, 50920, 50921,
+    50924, 50928, 50936, 50937, 50941, 50948, 50949, 50952, 50956, 50964, 50965,
+    50967, 50969, 50976, 50977, 50980, 50984, 50992, 50993, 50995, 50997, 50999,
+    51004, 51005, 51008, 51012, 51018, 51020, 51021, 51023, 51025, 51026, 51027,
+    51028, 51029, 51030, 51031, 51032, 51036, 51040, 51048, 51051, 51060, 51061,
+    51064, 51068, 51069, 51070, 51075, 51076, 51077, 51079, 51080, 51081, 51082,
+    51086, 51088, 51089, 51092, 51094, 51095, 51096, 51098, 51104, 51105, 51107,
+    51108, 51109, 51110, 51116, 51117, 51120, 51124, 51132, 51133, 51135, 51136,
+    51137, 51144, 51145, 51148, 51150, 51152, 51160, 51165, 51172, 51176, 51180,
+    51200, 51201, 51204, 51208, 51210, 51216, 51217, 51219, 51221, 51222, 51228,
+    51229, 51232, 51236, 51244, 51245, 51247, 51249, 51256, 51260, 51264, 51272,
+    51273, 51276, 51277, 51284, 51312, 51313, 51316, 51320, 51322, 51328, 51329,
+    51331, 51333, 51334, 51335, 51339, 51340, 51341, 51348, 51357, 51359, 51361,
+    51368, 51388, 51389, 51396, 51400, 51404, 51412, 51413, 51415, 51417, 51424,
+    51425, 51428, 51445, 51452, 51453, 51456, 51460, 51461, 51462, 51468, 51469,
+    51471, 51473, 51480, 51500, 51508, 51536, 51537, 51540, 51544, 51552, 51553,
+    51555, 51564, 51568, 51572, 51580, 51592, 51593, 51596, 51600, 51608, 51609,
+    51611, 51613, 51648, 51649, 51652, 51655, 51656, 51658, 51664, 51665, 51667,
+    51669, 51670, 51673, 51674, 51676, 51677, 51680, 51682, 51684, 51687, 51692,
+    51693, 51695, 51696, 51697, 51704, 51705, 51708, 51712, 51720, 51721, 51723,
+    51724, 51725, 51732, 51736, 51753, 51788, 51789, 51792, 51796, 51804, 51805,
+    51807, 51808, 51809, 51816, 51837, 51844, 51864, 51900, 51901, 51904, 51908,
+    51916, 51917, 51919, 51921, 51923, 51928, 51929, 51936, 51948, 51956, 51976,
+    51984, 51988, 51992, 52000, 52001, 52033, 52040, 52041, 52044, 52048, 52056,
+    52057, 52061, 52068, 52088, 52089, 52124, 52152, 52180, 52196, 52199, 52201,
+    52236, 52237, 52240, 52244, 52252, 52253, 52257, 52258, 52263, 52264, 52265,
+    52268, 52270, 52272, 52280, 52281, 52283, 52284, 52285, 52286, 52292, 52293,
+    52296, 52300, 52308, 52309, 52311, 52312, 52313, 52320, 52324, 52326, 52328,
+    52336, 52341, 52376, 52377, 52380, 52384, 52392, 52393, 52395, 52396, 52397,
+    52404, 52405, 52408, 52412, 52420, 52421, 52423, 52425, 52432, 52436, 52452,
+    52460, 52464, 52481, 52488, 52489, 52492, 52496, 52504, 52505, 52507, 52509,
+    52516, 52520, 52524, 52537, 52572, 52576, 52580, 52588, 52589, 52591, 52593,
+    52600, 52616, 52628, 52629, 52632, 52636, 52644, 52645, 52647, 52649, 52656,
+    52676, 52684, 52688, 52712, 52716, 52720, 52728, 52729, 52731, 52733, 52740,
+    52744, 52748, 52756, 52761, 52768, 52769, 52772, 52776, 52784, 52785, 52787,
+    52789, 52824, 52825, 52828, 52831, 52832, 52833, 52840, 52841, 52843, 52845,
+    52852, 52853, 52856, 52860, 52868, 52869, 52871, 52873, 52880, 52881, 52884,
+    52888, 52896, 52897, 52899, 52900, 52901, 52908, 52909, 52929, 52964, 52965,
+    52968, 52971, 52972, 52980, 52981, 52983, 52984, 52985, 52992, 52993, 52996,
+    53000, 53008, 53009, 53011, 53013, 53020, 53024, 53028, 53036, 53037, 53039,
+    53040, 53041, 53048, 53076, 53077, 53080, 53084, 53092, 53093, 53095, 53097,
+    53104, 53105, 53108, 53112, 53120, 53125, 53132, 53153, 53160, 53168, 53188,
+    53216, 53217, 53220, 53224, 53232, 53233, 53235, 53237, 53244, 53248, 53252,
+    53265, 53272, 53293, 53300, 53301, 53304, 53308, 53316, 53317, 53319, 53321,
+    53328, 53332, 53336, 53344, 53356, 53357, 53360, 53364, 53372, 53373, 53377,
+    53412, 53413, 53416, 53420, 53428, 53429, 53431, 53433, 53440, 53441, 53444,
+    53448, 53449, 53456, 53457, 53459, 53460, 53461, 53468, 53469, 53472, 53476,
+    53484, 53485, 53487, 53488, 53489, 53496, 53517, 53552, 53553, 53556, 53560,
+    53562, 53568, 53569, 53571, 53572, 53573, 53580, 53581, 53584, 53588, 53596,
+    53597, 53599, 53601, 53608, 53612, 53628, 53636, 53640, 53664, 53665, 53668,
+    53672, 53680, 53681, 53683, 53685, 53690, 53692, 53696, 53720, 53748, 53752,
+    53767, 53769, 53776, 53804, 53805, 53808, 53812, 53820, 53821, 53823, 53825,
+    53832, 53852, 53860, 53888, 53889, 53892, 53896, 53904, 53905, 53909, 53916,
+    53920, 53924, 53932, 53937, 53944, 53945, 53948, 53951, 53952, 53954, 53960,
+    53961, 53963, 53972, 53976, 53980, 53988, 53989, 54000, 54001, 54004, 54008,
+    54016, 54017, 54019, 54021, 54028, 54029, 54030, 54032, 54036, 54038, 54044,
+    54045, 54047, 54048, 54049, 54053, 54056, 54057, 54060, 54064, 54072, 54073,
+    54075, 54076, 54077, 54084, 54085, 54140, 54141, 54144, 54148, 54156, 54157,
+    54159, 54160, 54161, 54168, 54169, 54172, 54176, 54184, 54185, 54187, 54189,
+    54196, 54200, 54204, 54212, 54213, 54216, 54217, 54224, 54232, 54241, 54243,
+    54252, 54253, 54256, 54260, 54268, 54269, 54271, 54273, 54280, 54301, 54336,
+    54340, 54364, 54368, 54372, 54381, 54383, 54392, 54393, 54396, 54399, 54400,
+    54402, 54408, 54409, 54411, 54413, 54420, 54441, 54476, 54480, 54484, 54492,
+    54495, 54504, 54508, 54512, 54520, 54523, 54525, 54532, 54536, 54540, 54548,
+    54549, 54551, 54588, 54589, 54592, 54596, 54604, 54605, 54607, 54609, 54616,
+    54617, 54620, 54624, 54629, 54632, 54633, 54635, 54637, 54644, 54645, 54648,
+    54652, 54660, 54661, 54663, 54664, 54665, 54672, 54693, 54728, 54729, 54732,
+    54736, 54738, 54744, 54745, 54747, 54749, 54756, 54757, 54760, 54764, 54772,
+    54773, 54775, 54777, 54784, 54785, 54788, 54792, 54800, 54801, 54803, 54804,
+    54805, 54812, 54816, 54820, 54829, 54840, 54841, 54844, 54848, 54853, 54856,
+    54857, 54859, 54861, 54865, 54868, 54869, 54872, 54876, 54887, 54889, 54896,
+    54897, 54900, 54915, 54917, 54924, 54925, 54928, 54932, 54941, 54943, 54945,
+    54952, 54956, 54960, 54969, 54971, 54980, 54981, 54984, 54988, 54993, 54996,
+    54999, 55001, 55008, 55012, 55016, 55024, 55029, 55036, 55037, 55040, 55044,
+    55057, 55064, 55065, 55068, 55072, 55080, 55081, 55083, 55085, 55092, 55093,
+    55096, 55100, 55108, 55111, 55113, 55120, 55121, 55124, 55126, 55127, 55128,
+    55129, 55136, 55137, 55139, 55141, 55145, 55148, 55152, 55156, 55164, 55165,
+    55169, 55176, 55177, 55180, 55184, 55192, 55193, 55195, 55197, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20285, 20339, 20551, 20729,
+    21152, 21487, 21621, 21733, 22025, 23233, 23478, 26247, 26550, 26551, 26607,
+    27468, 29634, 30146, 31292, 33499, 33540, 34903, 34952, 35382, 36040, 36303,
+    36603, 36838, 39381, 21051, 21364, 21508, 24682, 24932, 27580, 29647, 33050,
+    35258, 35282, 38307, 20355, 21002, 22718, 22904, 23014, 24178, 24185, 25031,
+    25536, 26438, 26604, 26751, 28567, 30286, 30475, 30965, 31240, 31487, 31777,
+    32925, 33390, 33393, 35563, 38291, 20075, 21917, 26359, 28212, 30883, 31469,
+    33883, 35088, 34638, 38824, 21208, 22350, 22570, 23884, 24863, 25022, 25121,
+    25954, 26577, 27204, 28187, 29976, 30131, 30435, 30640, 32058, 37039, 37969,
+    37970, 40853, 21283, 23724, 30002, 32987, 37440, 38296, 21083, 22536, 23004,
+    23713, 23831, 24247, 24378, 24394, 24951, 27743, 30074, 30086, 31968, 32115,
+    32177, 32652, 33108, 33313, 34193, 35137, 35611, 37628, 38477, 40007, 20171,
+    20215, 20491, 20977, 22607, 24887, 24894, 24936, 25913, 27114, 28433, 30117,
+    30342, 30422, 31623, 33445, 33995, 63744, 37799, 38283, 21888, 23458, 22353,
+    63745, 31923, 32697, 37301, 20520, 21435, 23621, 24040, 25298, 25454, 25818,
+    25831, 28192, 28844, 31067, 36317, 36382, 63746, 36989, 37445, 37624, 20094,
+    20214, 20581, 24062, 24314, 24838, 26967, 33137, 34388, 36423, 37749, 39467,
+    20062, 20625, 26480, 26688, 20745, 21133, 21138, 27298, 30652, 37392, 40660,
+    21163, 24623, 36850, 20552, 25001, 25581, 25802, 26684, 27268, 28608, 33160,
+    35233, 38548, 22533, 29309, 29356, 29956, 32121, 32365, 32937, 35211, 35700,
+    36963, 40273, 25225, 27770, 28500, 32080, 32570, 35363, 20860, 24906, 31645,
+    35609, 37463, 37772, 20140, 20435, 20510, 20670, 20742, 21185, 21197, 21375,
+    22384, 22659, 24218, 24465, 24950, 25004, 25806, 25964, 26223, 26299, 26356,
+    26775, 28039, 28805, 28913, 29855, 29861, 29898, 30169, 30828, 30956, 31455,
+    31478, 32069, 32147, 32789, 32831, 33051, 33686, 35686, 36629, 36885, 37857,
+    38915, 38968, 39514, 39912, 20418, 21843, 22586, 22865, 23395, 23622, 24760,
+    25106, 26690, 26800, 26856, 28330, 30028, 30328, 30926, 31293, 31995, 32363,
+    32380, 35336, 35489, 35903, 38542, 40388, 21476, 21481, 21578, 21617, 22266,
+    22993, 23396, 23611, 24235, 25335, 25911, 25925, 25970, 26272, 26543, 27073,
+    27837, 30204, 30352, 30590, 31295, 32660, 32771, 32929, 33167, 33510, 33533,
+    33776, 34241, 34865, 34996, 35493, 63747, 36764, 37678, 38599, 39015, 39640,
+    40723, 21741, 26011, 26354, 26767, 31296, 35895, 40288, 22256, 22372, 23825,
+    26118, 26801, 26829, 28414, 29736, 34974, 39908, 27752, 63748, 39592, 20379,
+    20844, 20849, 21151, 23380, 24037, 24656, 24685, 25329, 25511, 25915, 29657,
+    31354, 34467, 36002, 38799, 20018, 23521, 25096, 26524, 29916, 31185, 33747,
+    35463, 35506, 36328, 36942, 37707, 38982, 24275, 27112, 34303, 37101, 63749,
+    20896, 23448, 23532, 24931, 26874, 27454, 28748, 29743, 29912, 31649, 32592,
+    33733, 35264, 36011, 38364, 39208, 21038, 24669, 25324, 36866, 20362, 20809,
+    21281, 22745, 24291, 26336, 27960, 28826, 29378, 29654, 31568, 33009, 37979,
+    21350, 25499, 32619, 20054, 20608, 22602, 22750, 24618, 24871, 25296, 27088,
+    39745, 23439, 32024, 32945, 36703, 20132, 20689, 21676, 21932, 23308, 23968,
+    24039, 25898, 25934, 26657, 27211, 29409, 30350, 30703, 32094, 32761, 33184,
+    34126, 34527, 36611, 36686, 37066, 39171, 39509, 39851, 19992, 20037, 20061,
+    20167, 20465, 20855, 21246, 21312, 21475, 21477, 21646, 22036, 22389, 22434,
+    23495, 23943, 24272, 25084, 25304, 25937, 26552, 26601, 27083, 27472, 27590,
+    27628, 27714, 28317, 28792, 29399, 29590, 29699, 30655, 30697, 31350, 32127,
+    32777, 33276, 33285, 33290, 33503, 34914, 35635, 36092, 36544, 36881, 37041,
+    37476, 37558, 39378, 39493, 40169, 40407, 40860, 22283, 23616, 33738, 38816,
+    38827, 40628, 21531, 31384, 32676, 35033, 36557, 37089, 22528, 23624, 25496,
+    31391, 23470, 24339, 31353, 31406, 33422, 36524, 20518, 21048, 21240, 21367,
+    22280, 25331, 25458, 27402, 28099, 30519, 21413, 29527, 34152, 36470, 38357,
+    26426, 27331, 28528, 35437, 36556, 39243, 63750, 26231, 27512, 36020, 39740,
+    63751, 21483, 22317, 22862, 25542, 27131, 29674, 30789, 31418, 31429, 31998,
+    33909, 35215, 36211, 36917, 38312, 21243, 22343, 30023, 31584, 33740, 37406,
+    63752, 27224, 20811, 21067, 21127, 25119, 26840, 26997, 38553, 20677, 21156,
+    21220, 25027, 26020, 26681, 27135, 29822, 31563, 33465, 33771, 35250, 35641,
+    36817, 39241, 63753, 20170, 22935, 25810, 26129, 27278, 29748, 31105, 31165,
+    33449, 34942, 34943, 35167, 63754, 37670, 20235, 21450, 24613, 25201, 27762,
+    32026, 32102, 20120, 20834, 30684, 32943, 20225, 20238, 20854, 20864, 21980,
+    22120, 22331, 22522, 22524, 22804, 22855, 22931, 23492, 23696, 23822, 24049,
+    24190, 24524, 25216, 26071, 26083, 26398, 26399, 26462, 26827, 26820, 27231,
+    27450, 27683, 27773, 27778, 28103, 29592, 29734, 29738, 29826, 29859, 30072,
+    30079, 30849, 30959, 31041, 31047, 31048, 31098, 31637, 32000, 32186, 32648,
+    32774, 32813, 32908, 35352, 35663, 35912, 36215, 37665, 37668, 39138, 39249,
+    39438, 39439, 39525, 40594, 32202, 20342, 21513, 25326, 26708, 37329, 21931,
+    20794, 63755, 63756, 23068, 25062, 63757, 25295, 25343, 63758, 63759, 63760,
+    63761, 63762, 63763, 37027, 63764, 63765, 63766, 63767, 63768, 35582, 63769,
+    63770, 63771, 63772, 26262, 63773, 29014, 63774, 63775, 38627, 63776, 25423,
+    25466, 21335, 63777, 26511, 26976, 28275, 63778, 30007, 63779, 63780, 63781,
+    32013, 63782, 63783, 34930, 22218, 23064, 63784, 63785, 63786, 63787, 63788,
+    20035, 63789, 20839, 22856, 26608, 32784, 63790, 22899, 24180, 25754, 31178,
+    24565, 24684, 25288, 25467, 23527, 23511, 21162, 63791, 22900, 24361, 24594,
+    63792, 63793, 63794, 29785, 63795, 63796, 63797, 63798, 63799, 63800, 39377,
+    63801, 63802, 63803, 63804, 63805, 63806, 63807, 63808, 63809, 63810, 63811,
+    28611, 63812, 63813, 33215, 36786, 24817, 63814, 63815, 33126, 63816, 63817,
+    23615, 63818, 63819, 63820, 63821, 63822, 63823, 63824, 63825, 23273, 35365,
+    26491, 32016, 63826, 63827, 63828, 63829, 63830, 63831, 33021, 63832, 63833,
+    23612, 27877, 21311, 28346, 22810, 33590, 20025, 20150, 20294, 21934, 22296,
+    22727, 24406, 26039, 26086, 27264, 27573, 28237, 30701, 31471, 31774, 32222,
+    34507, 34962, 37170, 37723, 25787, 28606, 29562, 30136, 36948, 21846, 22349,
+    25018, 25812, 26311, 28129, 28251, 28525, 28601, 30192, 32835, 33213, 34113,
+    35203, 35527, 35674, 37663, 27795, 30035, 31572, 36367, 36957, 21776, 22530,
+    22616, 24162, 25095, 25758, 26848, 30070, 31958, 34739, 40680, 20195, 22408,
+    22382, 22823, 23565, 23729, 24118, 24453, 25140, 25825, 29619, 33274, 34955,
+    36024, 38538, 40667, 23429, 24503, 24755, 20498, 20992, 21040, 22294, 22581,
+    22615, 23566, 23648, 23798, 23947, 24230, 24466, 24764, 25361, 25481, 25623,
+    26691, 26873, 27330, 28120, 28193, 28372, 28644, 29182, 30428, 30585, 31153,
+    31291, 33796, 35241, 36077, 36339, 36424, 36867, 36884, 36947, 37117, 37709,
+    38518, 38876, 27602, 28678, 29272, 29346, 29544, 30563, 31167, 31716, 32411,
+    35712, 22697, 24775, 25958, 26109, 26302, 27788, 28958, 29129, 35930, 38931,
+    20077, 31361, 20189, 20908, 20941, 21205, 21516, 24999, 26481, 26704, 26847,
+    27934, 28540, 30140, 30643, 31461, 33012, 33891, 37509, 20828, 26007, 26460,
+    26515, 30168, 31431, 33651, 63834, 35910, 36887, 38957, 23663, 33216, 33434,
+    36929, 36975, 37389, 24471, 23965, 27225, 29128, 30331, 31561, 34276, 35588,
+    37159, 39472, 21895, 25078, 63835, 30313, 32645, 34367, 34746, 35064, 37007,
+    63836, 27931, 28889, 29662, 32097, 33853, 63837, 37226, 39409, 63838, 20098,
+    21365, 27396, 27410, 28734, 29211, 34349, 40478, 21068, 36771, 23888, 25829,
+    25900, 27414, 28651, 31811, 32412, 34253, 35172, 35261, 25289, 33240, 34847,
+    24266, 26391, 28010, 29436, 29701, 29807, 34690, 37086, 20358, 23821, 24480,
+    33802, 20919, 25504, 30053, 20142, 20486, 20841, 20937, 26753, 27153, 31918,
+    31921, 31975, 33391, 35538, 36635, 37327, 20406, 20791, 21237, 21570, 24300,
+    24942, 25150, 26053, 27354, 28670, 31018, 34268, 34851, 38317, 39522, 39530,
+    40599, 40654, 21147, 26310, 27511, 28701, 31019, 36706, 38722, 24976, 25088,
+    25891, 28451, 29001, 29833, 32244, 32879, 34030, 36646, 36899, 37706, 20925,
+    21015, 21155, 27916, 28872, 35010, 24265, 25986, 27566, 28610, 31806, 29557,
+    20196, 20278, 22265, 63839, 23738, 23994, 24604, 29618, 31533, 32666, 32718,
+    32838, 36894, 37428, 38646, 38728, 38936, 40801, 20363, 28583, 31150, 37300,
+    38583, 21214, 63840, 25736, 25796, 27347, 28510, 28696, 29200, 30439, 32769,
+    34310, 34396, 36335, 36613, 38706, 39791, 40442, 40565, 30860, 31103, 32160,
+    33737, 37636, 40575, 40595, 35542, 22751, 24324, 26407, 28711, 29903, 31840,
+    32894, 20769, 28712, 29282, 30922, 36034, 36058, 36084, 38647, 20102, 20698,
+    23534, 24278, 26009, 29134, 30274, 30637, 32842, 34044, 36988, 39719, 40845,
+    22744, 23105, 23650, 27155, 28122, 28431, 30267, 32047, 32311, 34078, 35128,
+    37860, 38475, 21129, 26066, 26611, 27060, 27969, 28316, 28687, 29705, 29792,
+    30041, 30244, 30827, 35628, 39006, 20845, 25134, 38520, 20374, 20523, 23833,
+    28138, 32184, 36650, 24459, 24900, 26647, 63841, 38534, 21202, 32907, 20956,
+    20940, 26974, 31260, 32190, 33777, 38517, 20442, 21033, 21400, 21519, 21774,
+    23653, 24743, 26446, 26792, 28012, 29313, 29432, 29702, 29827, 63842, 30178,
+    31852, 32633, 32696, 33673, 35023, 35041, 37324, 37328, 38626, 39881, 21533,
+    28542, 29136, 29848, 34298, 36522, 38563, 40023, 40607, 26519, 28107, 29747,
+    33256, 38678, 30764, 31435, 31520, 31890, 25705, 29802, 30194, 30908, 30952,
+    39340, 39764, 40635, 23518, 24149, 28448, 33180, 33707, 37000, 19975, 21325,
+    23081, 24018, 24398, 24930, 25405, 26217, 26364, 28415, 28459, 28771, 30622,
+    33836, 34067, 34875, 36627, 39237, 39995, 21788, 25273, 26411, 27819, 33545,
+    35178, 38778, 20129, 22916, 24536, 24537, 26395, 32178, 32596, 33426, 33579,
+    33725, 36638, 37017, 22475, 22969, 23186, 23504, 26151, 26522, 26757, 27599,
+    29028, 32629, 36023, 36067, 36993, 39749, 33032, 35978, 38476, 39488, 40613,
+    23391, 27667, 29467, 30450, 30431, 33804, 20906, 35219, 20813, 20885, 21193,
+    26825, 27796, 30468, 30496, 32191, 32236, 38754, 40629, 28357, 34065, 20901,
+    21517, 21629, 26126, 26269, 26919, 28319, 30399, 30609, 33559, 33986, 34719,
+    37225, 37528, 40180, 34946, 20398, 20882, 21215, 22982, 24125, 24917, 25720,
+    25721, 26286, 26576, 27169, 27597, 27611, 29279, 29281, 29761, 30520, 30683,
+    32791, 33468, 33541, 35584, 35624, 35980, 26408, 27792, 29287, 30446, 30566,
+    31302, 40361, 27519, 27794, 22818, 26406, 33945, 21359, 22675, 22937, 24287,
+    25551, 26164, 26483, 28218, 29483, 31447, 33495, 37672, 21209, 24043, 25006,
+    25035, 25098, 25287, 25771, 26080, 26969, 27494, 27595, 28961, 29687, 30045,
+    32326, 33310, 33538, 34154, 35491, 36031, 38695, 40289, 22696, 40664, 20497,
+    21006, 21563, 21839, 25991, 27766, 32010, 32011, 32862, 34442, 38272, 38639,
+    21247, 27797, 29289, 21619, 23194, 23614, 23883, 24396, 24494, 26410, 26806,
+    26979, 28220, 28228, 30473, 31859, 32654, 34183, 35598, 36855, 38753, 40692,
+    23735, 24758, 24845, 25003, 25935, 26107, 26108, 27665, 27887, 29599, 29641,
+    32225, 38292, 23494, 34588, 35600, 21085, 21338, 25293, 25615, 25778, 26420,
+    27192, 27850, 29632, 29854, 31636, 31893, 32283, 33162, 33334, 34180, 36843,
+    38649, 39361, 20276, 21322, 21453, 21467, 25292, 25644, 25856, 26001, 27075,
+    27886, 28504, 29677, 30036, 30242, 30436, 30460, 30928, 30971, 31020, 32070,
+    33324, 34784, 36820, 38930, 39151, 21187, 25300, 25765, 28196, 28497, 30332,
+    36299, 37297, 37474, 39662, 39747, 20515, 20621, 22346, 22952, 23592, 24135,
+    24439, 25151, 25918, 26041, 26049, 26121, 26507, 27036, 28354, 30917, 32033,
+    32938, 33152, 33323, 33459, 33953, 34444, 35370, 35607, 37030, 38450, 40848,
+    20493, 20467, 63843, 22521, 24472, 25308, 25490, 26479, 28227, 28953, 30403,
+    32972, 32986, 35060, 35061, 35097, 36064, 36649, 37197, 38506, 20271, 20336,
+    24091, 26575, 26658, 30333, 30334, 39748, 24161, 27146, 29033, 29140, 30058,
+    63844, 32321, 34115, 34281, 39132, 20240, 31567, 32624, 38309, 20961, 24070,
+    26805, 27710, 27726, 27867, 29359, 31684, 33539, 27861, 29754, 20731, 21128,
+    22721, 25816, 27287, 29863, 30294, 30887, 34327, 38370, 38713, 63845, 21342,
+    24321, 35722, 36776, 36783, 37002, 21029, 30629, 40009, 40712, 19993, 20482,
+    20853, 23643, 24183, 26142, 26170, 26564, 26821, 28851, 29953, 30149, 31177,
+    31453, 36647, 39200, 39432, 20445, 22561, 22577, 23542, 26222, 27493, 27921,
+    28282, 28541, 29668, 29995, 33769, 35036, 35091, 35676, 36628, 20239, 20693,
+    21264, 21340, 23443, 24489, 26381, 31119, 33145, 33583, 34068, 35079, 35206,
+    36665, 36667, 39333, 39954, 26412, 20086, 20472, 22857, 23553, 23791, 23792,
+    25447, 26834, 28925, 29090, 29739, 32299, 34028, 34562, 36898, 37586, 40179,
+    19981, 20184, 20463, 20613, 21078, 21103, 21542, 21648, 22496, 22827, 23142,
+    23386, 23413, 23500, 24220, 63846, 25206, 25975, 26023, 28014, 28325, 29238,
+    31526, 31807, 32566, 33104, 33105, 33178, 33344, 33433, 33705, 35331, 36000,
+    36070, 36091, 36212, 36282, 37096, 37340, 38428, 38468, 39385, 40167, 21271,
+    20998, 21545, 22132, 22707, 22868, 22894, 24575, 24996, 25198, 26128, 27774,
+    28954, 30406, 31881, 31966, 32027, 33452, 36033, 38640, 63847, 20315, 24343,
+    24447, 25282, 23849, 26379, 26842, 30844, 32323, 40300, 19989, 20633, 21269,
+    21290, 21329, 22915, 23138, 24199, 24754, 24970, 25161, 25209, 26000, 26503,
+    27047, 27604, 27606, 27607, 27608, 27832, 63848, 29749, 30202, 30738, 30865,
+    31189, 31192, 31875, 32203, 32737, 32933, 33086, 33218, 33778, 34586, 35048,
+    35513, 35692, 36027, 37145, 38750, 39131, 40763, 22188, 23338, 24428, 25996,
+    27315, 27567, 27996, 28657, 28693, 29277, 29613, 36007, 36051, 38971, 24977,
+    27703, 32856, 39425, 20045, 20107, 20123, 20181, 20282, 20284, 20351, 20447,
+    20735, 21490, 21496, 21766, 21987, 22235, 22763, 22882, 23057, 23531, 23546,
+    23556, 24051, 24107, 24473, 24605, 25448, 26012, 26031, 26614, 26619, 26797,
+    27515, 27801, 27863, 28195, 28681, 29509, 30722, 31038, 31040, 31072, 31169,
+    31721, 32023, 32114, 32902, 33293, 33678, 34001, 34503, 35039, 35408, 35422,
+    35613, 36060, 36198, 36781, 37034, 39164, 39391, 40605, 21066, 63849, 26388,
+    63850, 20632, 21034, 23665, 25955, 27733, 29642, 29987, 30109, 31639, 33948,
+    37240, 38704, 20087, 25746, 27578, 29022, 34217, 19977, 63851, 26441, 26862,
+    28183, 33439, 34072, 34923, 25591, 28545, 37394, 39087, 19978, 20663, 20687,
+    20767, 21830, 21930, 22039, 23360, 23577, 23776, 24120, 24202, 24224, 24258,
+    24819, 26705, 27233, 28248, 29245, 29248, 29376, 30456, 31077, 31665, 32724,
+    35059, 35316, 35443, 35937, 36062, 38684, 22622, 29885, 36093, 21959, 63852,
+    31329, 32034, 33394, 29298, 29983, 29989, 63853, 31513, 22661, 22779, 23996,
+    24207, 24246, 24464, 24661, 25234, 25471, 25933, 26257, 26329, 26360, 26646,
+    26866, 29312, 29790, 31598, 32110, 32214, 32626, 32997, 33298, 34223, 35199,
+    35475, 36893, 37604, 40653, 40736, 22805, 22893, 24109, 24796, 26132, 26227,
+    26512, 27728, 28101, 28511, 30707, 30889, 33990, 37323, 37675, 20185, 20682,
+    20808, 21892, 23307, 23459, 25159, 25982, 26059, 28210, 29053, 29697, 29764,
+    29831, 29887, 30316, 31146, 32218, 32341, 32680, 33146, 33203, 33337, 34330,
+    34796, 35445, 36323, 36984, 37521, 37925, 39245, 39854, 21352, 23633, 26964,
+    27844, 27945, 28203, 33292, 34203, 35131, 35373, 35498, 38634, 40807, 21089,
+    26297, 27570, 32406, 34814, 36109, 38275, 38493, 25885, 28041, 29166, 63854,
+    22478, 22995, 23468, 24615, 24826, 25104, 26143, 26207, 29481, 29689, 30427,
+    30465, 31596, 32854, 32882, 33125, 35488, 37266, 19990, 21218, 27506, 27927,
+    31237, 31545, 32048, 63855, 36016, 21484, 22063, 22609, 23477, 23567, 23569,
+    24034, 25152, 25475, 25620, 26157, 26803, 27836, 28040, 28335, 28703, 28836,
+    29138, 29990, 30095, 30094, 30233, 31505, 31712, 31787, 32032, 32057, 34092,
+    34157, 34311, 35380, 36877, 36961, 37045, 37559, 38902, 39479, 20439, 23660,
+    26463, 28049, 31903, 32396, 35606, 36118, 36895, 23403, 24061, 25613, 33984,
+    36956, 39137, 29575, 23435, 24730, 26494, 28126, 35359, 35494, 36865, 38924,
+    21047, 63856, 28753, 30862, 37782, 34928, 37335, 20462, 21463, 22013, 22234,
+    22402, 22781, 23234, 23432, 23723, 23744, 24101, 24833, 25101, 25163, 25480,
+    25628, 25910, 25976, 27193, 27530, 27700, 27929, 28465, 29159, 29417, 29560,
+    29703, 29874, 30246, 30561, 31168, 31319, 31466, 31929, 32143, 32172, 32353,
+    32670, 33065, 33585, 33936, 34010, 34282, 34966, 35504, 35728, 36664, 36930,
+    36995, 37228, 37526, 37561, 38539, 38567, 38568, 38614, 38656, 38920, 39318,
+    39635, 39706, 21460, 22654, 22809, 23408, 23487, 28113, 28506, 29087, 29729,
+    29881, 32901, 33789, 24033, 24455, 24490, 24642, 26092, 26642, 26991, 27219,
+    27529, 27957, 28147, 29667, 30462, 30636, 31565, 32020, 33059, 33308, 33600,
+    34036, 34147, 35426, 35524, 37255, 37662, 38918, 39348, 25100, 34899, 36848,
+    37477, 23815, 23847, 23913, 29791, 33181, 34664, 28629, 25342, 32722, 35126,
+    35186, 19998, 20056, 20711, 21213, 21319, 25215, 26119, 32361, 34821, 38494,
+    20365, 21273, 22070, 22987, 23204, 23608, 23630, 23629, 24066, 24337, 24643,
+    26045, 26159, 26178, 26558, 26612, 29468, 30690, 31034, 32709, 33940, 33997,
+    35222, 35430, 35433, 35553, 35925, 35962, 22516, 23508, 24335, 24687, 25325,
+    26893, 27542, 28252, 29060, 31698, 34645, 35672, 36606, 39135, 39166, 20280,
+    20353, 20449, 21627, 23072, 23480, 24892, 26032, 26216, 29180, 30003, 31070,
+    32051, 33102, 33251, 33688, 34218, 34254, 34563, 35338, 36523, 36763, 63857,
+    36805, 22833, 23460, 23526, 24713, 23529, 23563, 24515, 27777, 63858, 28145,
+    28683, 29978, 33455, 35574, 20160, 21313, 63859, 38617, 27663, 20126, 20420,
+    20818, 21854, 23077, 23784, 25105, 29273, 33469, 33706, 34558, 34905, 35357,
+    38463, 38597, 39187, 40201, 40285, 22538, 23731, 23997, 24132, 24801, 24853,
+    25569, 27138, 28197, 37122, 37716, 38990, 39952, 40823, 23433, 23736, 25353,
+    26191, 26696, 30524, 38593, 38797, 38996, 39839, 26017, 35585, 36555, 38332,
+    21813, 23721, 24022, 24245, 26263, 30284, 33780, 38343, 22739, 25276, 29390,
+    40232, 20208, 22830, 24591, 26171, 27523, 31207, 40230, 21395, 21696, 22467,
+    23830, 24859, 26326, 28079, 30861, 33406, 38552, 38724, 21380, 25212, 25494,
+    28082, 32266, 33099, 38989, 27387, 32588, 40367, 40474, 20063, 20539, 20918,
+    22812, 24825, 25590, 26928, 29242, 32822, 63860, 37326, 24369, 63861, 63862,
+    32004, 33509, 33903, 33979, 34277, 36493, 63863, 20335, 63864, 63865, 22756,
+    23363, 24665, 25562, 25880, 25965, 26264, 63866, 26954, 27171, 27915, 28673,
+    29036, 30162, 30221, 31155, 31344, 63867, 32650, 63868, 35140, 63869, 35731,
+    37312, 38525, 63870, 39178, 22276, 24481, 26044, 28417, 30208, 31142, 35486,
+    39341, 39770, 40812, 20740, 25014, 25233, 27277, 33222, 20547, 22576, 24422,
+    28937, 35328, 35578, 23420, 34326, 20474, 20796, 22196, 22852, 25513, 28153,
+    23978, 26989, 20870, 20104, 20313, 63871, 63872, 63873, 22914, 63874, 63875,
+    27487, 27741, 63876, 29877, 30998, 63877, 33287, 33349, 33593, 36671, 36701,
+    63878, 39192, 63879, 63880, 63881, 20134, 63882, 22495, 24441, 26131, 63883,
+    63884, 30123, 32377, 35695, 63885, 36870, 39515, 22181, 22567, 23032, 23071,
+    23476, 63886, 24310, 63887, 63888, 25424, 25403, 63889, 26941, 27783, 27839,
+    28046, 28051, 28149, 28436, 63890, 28895, 28982, 29017, 63891, 29123, 29141,
+    63892, 30799, 30831, 63893, 31605, 32227, 63894, 32303, 63895, 34893, 36575,
+    63896, 63897, 63898, 37467, 63899, 40182, 63900, 63901, 63902, 24709, 28037,
+    63903, 29105, 63904, 63905, 38321, 21421, 63906, 63907, 63908, 26579, 63909,
+    28814, 28976, 29744, 33398, 33490, 63910, 38331, 39653, 40573, 26308, 63911,
+    29121, 33865, 63912, 63913, 22603, 63914, 63915, 23992, 24433, 63916, 26144,
+    26254, 27001, 27054, 27704, 27891, 28214, 28481, 28634, 28699, 28719, 29008,
+    29151, 29552, 63917, 29787, 63918, 29908, 30408, 31310, 32403, 63919, 63920,
+    33521, 35424, 36814, 63921, 37704, 63922, 38681, 63923, 63924, 20034, 20522,
+    63925, 21000, 21473, 26355, 27757, 28618, 29450, 30591, 31330, 33454, 34269,
+    34306, 63926, 35028, 35427, 35709, 35947, 63927, 37555, 63928, 38675, 38928,
+    20116, 20237, 20425, 20658, 21320, 21566, 21555, 21978, 22626, 22714, 22887,
+    23067, 23524, 24735, 63929, 25034, 25942, 26111, 26212, 26791, 27738, 28595,
+    28879, 29100, 29522, 31613, 34568, 35492, 39986, 40711, 23627, 27779, 29508,
+    29577, 37434, 28331, 29797, 30239, 31337, 32277, 34314, 20800, 22725, 25793,
+    29934, 29973, 30320, 32705, 37013, 38605, 39252, 28198, 29926, 31401, 31402,
+    33253, 34521, 34680, 35355, 23113, 23436, 23451, 26785, 26880, 28003, 29609,
+    29715, 29740, 30871, 32233, 32747, 33048, 33109, 33694, 35916, 38446, 38929,
+    26352, 24448, 26106, 26505, 27754, 29579, 20525, 23043, 27498, 30702, 22806,
+    23916, 24013, 29477, 30031, 63930, 63931, 20709, 20985, 22575, 22829, 22934,
+    23002, 23525, 63932, 63933, 23970, 25303, 25622, 25747, 25854, 63934, 26332,
+    63935, 27208, 63936, 29183, 29796, 63937, 31368, 31407, 32327, 32350, 32768,
+    33136, 63938, 34799, 35201, 35616, 36953, 63939, 36992, 39250, 24958, 27442,
+    28020, 32287, 35109, 36785, 20433, 20653, 20887, 21191, 22471, 22665, 23481,
+    24248, 24898, 27029, 28044, 28263, 28342, 29076, 29794, 29992, 29996, 32883,
+    33592, 33993, 36362, 37780, 37854, 63940, 20110, 20305, 20598, 20778, 21448,
+    21451, 21491, 23431, 23507, 23588, 24858, 24962, 26100, 29275, 29591, 29760,
+    30402, 31056, 31121, 31161, 32006, 32701, 33419, 34261, 34398, 36802, 36935,
+    37109, 37354, 38533, 38632, 38633, 21206, 24423, 26093, 26161, 26671, 29020,
+    31286, 37057, 38922, 20113, 63941, 27218, 27550, 28560, 29065, 32792, 33464,
+    34131, 36939, 38549, 38642, 38907, 34074, 39729, 20112, 29066, 38596, 20803,
+    21407, 21729, 22291, 22290, 22435, 23195, 23236, 23491, 24616, 24895, 25588,
+    27781, 27961, 28274, 28304, 29232, 29503, 29783, 33489, 34945, 36677, 36960,
+    63942, 38498, 39000, 40219, 26376, 36234, 37470, 20301, 20553, 20702, 21361,
+    22285, 22996, 23041, 23561, 24944, 26256, 28205, 29234, 29771, 32239, 32963,
+    33806, 33894, 34111, 34655, 34907, 35096, 35586, 36949, 38859, 39759, 20083,
+    20369, 20754, 20842, 63943, 21807, 21929, 23418, 23461, 24188, 24189, 24254,
+    24736, 24799, 24840, 24841, 25540, 25912, 26377, 63944, 26580, 26586, 63945,
+    26977, 26978, 27833, 27943, 63946, 28216, 63947, 28641, 29494, 29495, 63948,
+    29788, 30001, 63949, 30290, 63950, 63951, 32173, 33278, 33848, 35029, 35480,
+    35547, 35565, 36400, 36418, 36938, 36926, 36986, 37193, 37321, 37742, 63952,
+    63953, 22537, 63954, 27603, 32905, 32946, 63955, 63956, 20801, 22891, 23609,
+    63957, 63958, 28516, 29607, 32996, 36103, 63959, 37399, 38287, 63960, 63961,
+    63962, 63963, 32895, 25102, 28700, 32104, 34701, 63964, 22432, 24681, 24903,
+    27575, 35518, 37504, 38577, 20057, 21535, 28139, 34093, 38512, 38899, 39150,
+    25558, 27875, 37009, 20957, 25033, 33210, 40441, 20381, 20506, 20736, 23452,
+    24847, 25087, 25836, 26885, 27589, 30097, 30691, 32681, 33380, 34191, 34811,
+    34915, 35516, 35696, 37291, 20108, 20197, 20234, 63965, 63966, 22839, 23016,
+    63967, 24050, 24347, 24411, 24609, 63968, 63969, 63970, 63971, 29246, 29669,
+    63972, 30064, 30157, 63973, 31227, 63974, 32780, 32819, 32900, 33505, 33617,
+    63975, 63976, 36029, 36019, 36999, 63977, 63978, 39156, 39180, 63979, 63980,
+    28727, 30410, 32714, 32716, 32764, 35610, 20154, 20161, 20995, 21360, 63981,
+    21693, 22240, 23035, 23493, 24341, 24525, 28270, 63982, 63983, 32106, 33589,
+    63984, 34451, 35469, 63985, 38765, 38775, 63986, 63987, 19968, 20314, 20350,
+    22777, 26085, 28322, 36920, 37808, 39353, 20219, 22764, 22922, 23001, 24641,
+    63988, 63989, 31252, 63990, 33615, 36035, 20837, 21316, 63991, 63992, 63993,
+    20173, 21097, 23381, 33471, 20180, 21050, 21672, 22985, 23039, 23376, 23383,
+    23388, 24675, 24904, 28363, 28825, 29038, 29574, 29943, 30133, 30913, 32043,
+    32773, 33258, 33576, 34071, 34249, 35566, 36039, 38604, 20316, 21242, 22204,
+    26027, 26152, 28796, 28856, 29237, 32189, 33421, 37196, 38592, 40306, 23409,
+    26855, 27544, 28538, 30430, 23697, 26283, 28507, 31668, 31786, 34870, 38620,
+    19976, 20183, 21280, 22580, 22715, 22767, 22892, 23559, 24115, 24196, 24373,
+    25484, 26290, 26454, 27167, 27299, 27404, 28479, 29254, 63994, 29520, 29835,
+    31456, 31911, 33144, 33247, 33255, 33674, 33900, 34083, 34196, 34255, 35037,
+    36115, 37292, 38263, 38556, 20877, 21705, 22312, 23472, 25165, 26448, 26685,
+    26771, 28221, 28371, 28797, 32289, 35009, 36001, 36617, 40779, 40782, 29229,
+    31631, 35533, 37658, 20295, 20302, 20786, 21632, 22992, 24213, 25269, 26485,
+    26990, 27159, 27822, 28186, 29401, 29482, 30141, 31672, 32053, 33511, 33785,
+    33879, 34295, 35419, 36015, 36487, 36889, 37048, 38606, 40799, 21219, 21514,
+    23265, 23490, 25688, 25973, 28404, 29380, 63995, 30340, 31309, 31515, 31821,
+    32318, 32735, 33659, 35627, 36042, 36196, 36321, 36447, 36842, 36857, 36969,
+    37841, 20291, 20346, 20659, 20840, 20856, 21069, 21098, 22625, 22652, 22880,
+    23560, 23637, 24283, 24731, 25136, 26643, 27583, 27656, 28593, 29006, 29728,
+    30000, 30008, 30033, 30322, 31564, 31627, 31661, 31686, 32399, 35438, 36670,
+    36681, 37439, 37523, 37666, 37931, 38651, 39002, 39019, 39198, 20999, 25130,
+    25240, 27993, 30308, 31434, 31680, 32118, 21344, 23742, 24215, 28472, 28857,
+    31896, 38673, 39822, 40670, 25509, 25722, 34678, 19969, 20117, 20141, 20572,
+    20597, 21576, 22979, 23450, 24128, 24237, 24311, 24449, 24773, 25402, 25919,
+    25972, 26060, 26230, 26232, 26622, 26984, 27273, 27491, 27712, 28096, 28136,
+    28191, 28254, 28702, 28833, 29582, 29693, 30010, 30555, 30855, 31118, 31243,
+    31357, 31934, 32142, 33351, 35330, 35562, 35998, 37165, 37194, 37336, 37478,
+    37580, 37664, 38662, 38742, 38748, 38914, 40718, 21046, 21137, 21884, 22564,
+    24093, 24351, 24716, 25552, 26799, 28639, 31085, 31532, 33229, 34234, 35069,
+    35576, 36420, 37261, 38500, 38555, 38717, 38988, 40778, 20430, 20806, 20939,
+    21161, 22066, 24340, 24427, 25514, 25805, 26089, 26177, 26362, 26361, 26397,
+    26781, 26839, 27133, 28437, 28526, 29031, 29157, 29226, 29866, 30522, 31062,
+    31066, 31199, 31264, 31381, 31895, 31967, 32068, 32368, 32903, 34299, 34468,
+    35412, 35519, 36249, 36481, 36896, 36973, 37347, 38459, 38613, 40165, 26063,
+    31751, 36275, 37827, 23384, 23562, 21330, 25305, 29469, 20519, 23447, 24478,
+    24752, 24939, 26837, 28121, 29742, 31278, 32066, 32156, 32305, 33131, 36394,
+    36405, 37758, 37912, 20304, 22352, 24038, 24231, 25387, 32618, 20027, 20303,
+    20367, 20570, 23005, 32964, 21610, 21608, 22014, 22863, 23449, 24030, 24282,
+    26205, 26417, 26609, 26666, 27880, 27954, 28234, 28557, 28855, 29664, 30087,
+    31820, 32002, 32044, 32162, 33311, 34523, 35387, 35461, 36208, 36490, 36659,
+    36913, 37198, 37202, 37956, 39376, 31481, 31909, 20426, 20737, 20934, 22472,
+    23535, 23803, 26201, 27197, 27994, 28310, 28652, 28940, 30063, 31459, 34850,
+    36897, 36981, 38603, 39423, 33537, 20013, 20210, 34886, 37325, 21373, 27355,
+    26987, 27713, 33914, 22686, 24974, 26366, 25327, 28893, 29969, 30151, 32338,
+    33976, 35657, 36104, 20043, 21482, 21675, 22320, 22336, 24535, 25345, 25351,
+    25711, 25903, 26088, 26234, 26525, 26547, 27490, 27744, 27802, 28460, 30693,
+    30757, 31049, 31063, 32025, 32930, 33026, 33267, 33437, 33463, 34584, 35468,
+    63996, 36100, 36286, 36978, 30452, 31257, 31287, 32340, 32887, 21767, 21972,
+    22645, 25391, 25634, 26185, 26187, 26733, 27035, 27524, 27941, 28337, 29645,
+    29800, 29857, 30043, 30137, 30433, 30494, 30603, 31206, 32265, 32285, 33275,
+    34095, 34967, 35386, 36049, 36587, 36784, 36914, 37805, 38499, 38515, 38663,
+    20356, 21489, 23018, 23241, 24089, 26702, 29894, 30142, 31209, 31378, 33187,
+    34541, 36074, 36300, 36845, 26015, 26389, 63997, 22519, 28503, 32221, 36655,
+    37878, 38598, 24501, 25074, 28548, 19988, 20376, 20511, 21449, 21983, 23919,
+    24046, 27425, 27492, 30923, 31642, 63998, 36425, 36554, 36974, 25417, 25662,
+    30528, 31364, 37679, 38015, 40810, 25776, 28591, 29158, 29864, 29914, 31428,
+    31762, 32386, 31922, 32408, 35738, 36106, 38013, 39184, 39244, 21049, 23519,
+    25830, 26413, 32046, 20717, 21443, 22649, 24920, 24921, 25082, 26028, 31449,
+    35730, 35734, 20489, 20513, 21109, 21809, 23100, 24288, 24432, 24884, 25950,
+    26124, 26166, 26274, 27085, 28356, 28466, 29462, 30241, 31379, 33081, 33369,
+    33750, 33980, 20661, 22512, 23488, 23528, 24425, 25505, 30758, 32181, 33756,
+    34081, 37319, 37365, 20874, 26613, 31574, 36012, 20932, 22971, 24765, 34389,
+    20508, 63999, 21076, 23610, 24957, 25114, 25299, 25842, 26021, 28364, 30240,
+    33034, 36448, 38495, 38587, 20191, 21315, 21912, 22825, 24029, 25797, 27849,
+    28154, 29588, 31359, 33307, 34214, 36068, 36368, 36983, 37351, 38369, 38433,
+    38854, 20984, 21746, 21894, 24505, 25764, 28552, 32180, 36639, 36685, 37941,
+    20681, 23574, 27838, 28155, 29979, 30651, 31805, 31844, 35449, 35522, 22558,
+    22974, 24086, 25463, 29266, 30090, 30571, 35548, 36028, 36626, 24307, 26228,
+    28152, 32893, 33729, 35531, 38737, 39894, 64000, 21059, 26367, 28053, 28399,
+    32224, 35558, 36910, 36958, 39636, 21021, 21119, 21736, 24980, 25220, 25307,
+    26786, 26898, 26970, 27189, 28818, 28966, 30813, 30977, 30990, 31186, 31245,
+    32918, 33400, 33493, 33609, 34121, 35970, 36229, 37218, 37259, 37294, 20419,
+    22225, 29165, 30679, 34560, 35320, 23544, 24534, 26449, 37032, 21474, 22618,
+    23541, 24740, 24961, 25696, 32317, 32880, 34085, 37507, 25774, 20652, 23828,
+    26368, 22684, 25277, 25512, 26894, 27000, 27166, 28267, 30394, 31179, 33467,
+    33833, 35535, 36264, 36861, 37138, 37195, 37276, 37648, 37656, 37786, 38619,
+    39478, 39949, 19985, 30044, 31069, 31482, 31569, 31689, 32302, 33988, 36441,
+    36468, 36600, 36880, 26149, 26943, 29763, 20986, 26414, 40668, 20805, 24544,
+    27798, 34802, 34909, 34935, 24756, 33205, 33795, 36101, 21462, 21561, 22068,
+    23094, 23601, 28810, 32736, 32858, 33030, 33261, 36259, 37257, 39519, 40434,
+    20596, 20164, 21408, 24827, 28204, 23652, 20360, 20516, 21988, 23769, 24159,
+    24677, 26772, 27835, 28100, 29118, 30164, 30196, 30305, 31258, 31305, 32199,
+    32251, 32622, 33268, 34473, 36636, 38601, 39347, 40786, 21063, 21189, 39149,
+    35242, 19971, 26578, 28422, 20405, 23522, 26517, 27784, 28024, 29723, 30759,
+    37341, 37756, 34756, 31204, 31281, 24555, 20182, 21668, 21822, 22702, 22949,
+    24816, 25171, 25302, 26422, 26965, 33333, 38464, 39345, 39389, 20524, 21331,
+    21828, 22396, 64001, 25176, 64002, 25826, 26219, 26589, 28609, 28655, 29730,
+    29752, 35351, 37944, 21585, 22022, 22374, 24392, 24986, 27470, 28760, 28845,
+    32187, 35477, 22890, 33067, 25506, 30472, 32829, 36010, 22612, 25645, 27067,
+    23445, 24081, 28271, 64003, 34153, 20812, 21488, 22826, 24608, 24907, 27526,
+    27760, 27888, 31518, 32974, 33492, 36294, 37040, 39089, 64004, 25799, 28580,
+    25745, 25860, 20814, 21520, 22303, 35342, 24927, 26742, 64005, 30171, 31570,
+    32113, 36890, 22534, 27084, 33151, 35114, 36864, 38969, 20600, 22871, 22956,
+    25237, 36879, 39722, 24925, 29305, 38358, 22369, 23110, 24052, 25226, 25773,
+    25850, 26487, 27874, 27966, 29228, 29750, 30772, 32631, 33453, 36315, 38935,
+    21028, 22338, 26495, 29256, 29923, 36009, 36774, 37393, 38442, 20843, 21485,
+    25420, 20329, 21764, 24726, 25943, 27803, 28031, 29260, 29437, 31255, 35207,
+    35997, 24429, 28558, 28921, 33192, 24846, 20415, 20559, 25153, 29255, 31687,
+    32232, 32745, 36941, 38829, 39449, 36022, 22378, 24179, 26544, 33805, 35413,
+    21536, 23318, 24163, 24290, 24330, 25987, 32954, 34109, 38281, 38491, 20296,
+    21253, 21261, 21263, 21638, 21754, 22275, 24067, 24598, 25243, 25265, 25429,
+    64006, 27873, 28006, 30129, 30770, 32990, 33071, 33502, 33889, 33970, 34957,
+    35090, 36875, 37610, 39165, 39825, 24133, 26292, 26333, 28689, 29190, 64007,
+    20469, 21117, 24426, 24915, 26451, 27161, 28418, 29922, 31080, 34920, 35961,
+    39111, 39108, 39491, 21697, 31263, 26963, 35575, 35914, 39080, 39342, 24444,
+    25259, 30130, 30382, 34987, 36991, 38466, 21305, 24380, 24517, 27852, 29644,
+    30050, 30091, 31558, 33534, 39325, 20047, 36924, 19979, 20309, 21414, 22799,
+    24264, 26160, 27827, 29781, 33655, 34662, 36032, 36944, 38686, 39957, 22737,
+    23416, 34384, 35604, 40372, 23506, 24680, 24717, 26097, 27735, 28450, 28579,
+    28698, 32597, 32752, 38289, 38290, 38480, 38867, 21106, 36676, 20989, 21547,
+    21688, 21859, 21898, 27323, 28085, 32216, 33382, 37532, 38519, 40569, 21512,
+    21704, 30418, 34532, 38308, 38356, 38492, 20130, 20233, 23022, 23270, 24055,
+    24658, 25239, 26477, 26689, 27782, 28207, 32568, 32923, 33322, 64008, 64009,
+    38917, 20133, 20565, 21683, 22419, 22874, 23401, 23475, 25032, 26999, 28023,
+    28707, 34809, 35299, 35442, 35559, 36994, 39405, 39608, 21182, 26680, 20502,
+    24184, 26447, 33607, 34892, 20139, 21521, 22190, 29670, 37141, 38911, 39177,
+    39255, 39321, 22099, 22687, 34395, 35377, 25010, 27382, 29563, 36562, 27463,
+    38570, 39511, 22869, 29184, 36203, 38761, 20436, 23796, 24358, 25080, 26203,
+    27883, 28843, 29572, 29625, 29694, 30505, 30541, 32067, 32098, 32291, 33335,
+    34898, 64010, 36066, 37449, 39023, 23377, 31348, 34880, 38913, 23244, 20448,
+    21332, 22846, 23805, 25406, 28025, 29433, 33029, 33031, 33698, 37583, 38960,
+    20136, 20804, 21009, 22411, 24418, 27842, 28366, 28677, 28752, 28847, 29074,
+    29673, 29801, 33610, 34722, 34913, 36872, 37026, 37795, 39336, 20846, 24407,
+    24800, 24935, 26291, 34137, 36426, 37295, 38795, 20046, 20114, 21628, 22741,
+    22778, 22909, 23733, 24359, 25142, 25160, 26122, 26215, 27627, 28009, 28111,
+    28246, 28408, 28564, 28640, 28649, 28765, 29392, 29733, 29786, 29920, 30355,
+    31068, 31946, 32286, 32993, 33446, 33899, 33983, 34382, 34399, 34676, 35703,
+    35946, 37804, 38912, 39013, 24785, 25110, 37239, 23130, 26127, 28151, 28222,
+    29759, 39746, 24573, 24794, 31503, 21700, 24344, 27742, 27859, 27946, 28888,
+    32005, 34425, 35340, 40251, 21270, 21644, 23301, 27194, 28779, 30069, 31117,
+    31166, 33457, 33775, 35441, 35649, 36008, 38772, 64011, 25844, 25899, 30906,
+    30907, 31339, 20024, 21914, 22864, 23462, 24187, 24739, 25563, 27489, 26213,
+    26707, 28185, 29029, 29872, 32008, 36996, 39529, 39973, 27963, 28369, 29502,
+    35905, 38346, 20976, 24140, 24488, 24653, 24822, 24880, 24908, 26179, 26180,
+    27045, 27841, 28255, 28361, 28514, 29004, 29852, 30343, 31681, 31783, 33618,
+    34647, 36945, 38541, 40643, 21295, 22238, 24315, 24458, 24674, 24724, 25079,
+    26214, 26371, 27292, 28142, 28590, 28784, 29546, 32362, 33214, 33588, 34516,
+    35496, 36036, 21123, 29554, 23446, 27243, 37892, 21742, 22150, 23389, 25928,
+    25989, 26313, 26783, 28045, 28102, 29243, 32948, 37237, 39501, 20399, 20505,
+    21402, 21518, 21564, 21897, 21957, 24127, 24460, 26429, 29030, 29661, 36869,
+    21211, 21235, 22628, 22734, 28932, 29071, 29179, 34224, 35347, 26248, 34216,
+    21927, 26244, 29002, 33841, 21321, 21913, 27585, 24409, 24509, 25582, 26249,
+    28999, 35569, 36637, 40638, 20241, 25658, 28875, 30054, 34407, 24676, 35662,
+    40440, 20807, 20982, 21256, 27958, 33016, 40657, 26133, 27427, 28824, 30165,
+    21507, 23673, 32007, 35350, 27424, 27453, 27462, 21560, 24688, 27965, 32725,
+    33288, 20694, 20958, 21916, 22123, 22221, 23020, 23305, 24076, 24985, 24984,
+    25137, 26206, 26342, 29081, 29113, 29114, 29351, 31143, 31232, 32690, 35440,
diff --git a/fusl/src/locale/langinfo.c b/fusl/src/locale/langinfo.c
index b2c8569..28e034a 100644
--- a/fusl/src/locale/langinfo.c
+++ b/fusl/src/locale/langinfo.c
@@ -4,66 +4,109 @@
 #include "libc.h"
 
 static const char c_time[] =
-	"Sun\0" "Mon\0" "Tue\0" "Wed\0" "Thu\0" "Fri\0" "Sat\0"
-	"Sunday\0" "Monday\0" "Tuesday\0" "Wednesday\0"
-	"Thursday\0" "Friday\0" "Saturday\0"
-	"Jan\0" "Feb\0" "Mar\0" "Apr\0" "May\0" "Jun\0"
-	"Jul\0" "Aug\0" "Sep\0" "Oct\0" "Nov\0" "Dec\0"
-	"January\0"   "February\0" "March\0"    "April\0"
-	"May\0"       "June\0"     "July\0"     "August\0"
-	"September\0" "October\0"  "November\0" "December\0"
-	"AM\0" "PM\0"
-	"%a %b %e %T %Y\0"
-	"%m/%d/%y\0"
-	"%H:%M:%S\0"
-	"%I:%M:%S %p\0"
-	"\0"
-	"\0"
-	"%m/%d/%y\0"
-	"0123456789\0"
-	"%a %b %e %T %Y\0"
-	"%H:%M:%S";
+    "Sun\0"
+    "Mon\0"
+    "Tue\0"
+    "Wed\0"
+    "Thu\0"
+    "Fri\0"
+    "Sat\0"
+    "Sunday\0"
+    "Monday\0"
+    "Tuesday\0"
+    "Wednesday\0"
+    "Thursday\0"
+    "Friday\0"
+    "Saturday\0"
+    "Jan\0"
+    "Feb\0"
+    "Mar\0"
+    "Apr\0"
+    "May\0"
+    "Jun\0"
+    "Jul\0"
+    "Aug\0"
+    "Sep\0"
+    "Oct\0"
+    "Nov\0"
+    "Dec\0"
+    "January\0"
+    "February\0"
+    "March\0"
+    "April\0"
+    "May\0"
+    "June\0"
+    "July\0"
+    "August\0"
+    "September\0"
+    "October\0"
+    "November\0"
+    "December\0"
+    "AM\0"
+    "PM\0"
+    "%a %b %e %T %Y\0"
+    "%m/%d/%y\0"
+    "%H:%M:%S\0"
+    "%I:%M:%S %p\0"
+    "\0"
+    "\0"
+    "%m/%d/%y\0"
+    "0123456789\0"
+    "%a %b %e %T %Y\0"
+    "%H:%M:%S";
 
-static const char c_messages[] = "^[yY]\0" "^[nN]\0" "yes\0" "no";
-static const char c_numeric[] = ".\0" "";
+static const char c_messages[] =
+    "^[yY]\0"
+    "^[nN]\0"
+    "yes\0"
+    "no";
+static const char c_numeric[] =
+    ".\0"
+    "";
 
-char *__nl_langinfo_l(nl_item item, locale_t loc)
-{
-	int cat = item >> 16;
-	int idx = item & 65535;
-	const char *str;
+char* __nl_langinfo_l(nl_item item, locale_t loc) {
+  int cat = item >> 16;
+  int idx = item & 65535;
+  const char* str;
 
-	if (item == CODESET) return MB_CUR_MAX==1 ? "ASCII" : "UTF-8";
-	
-	switch (cat) {
-	case LC_NUMERIC:
-		if (idx > 1) return "";
-		str = c_numeric;
-		break;
-	case LC_TIME:
-		if (idx > 0x31) return "";
-		str = c_time;
-		break;
-	case LC_MONETARY:
-		if (idx > 0) return "";
-		str = "";
-		break;
-	case LC_MESSAGES:
-		if (idx > 3) return "";
-		str = c_messages;
-		break;
-	default:
-		return "";
-	}
+  if (item == CODESET)
+    return MB_CUR_MAX == 1 ? "ASCII" : "UTF-8";
 
-	for (; idx; idx--, str++) for (; *str; str++);
-	if (cat != LC_NUMERIC && *str) str = LCTRANS(str, cat, loc);
-	return (char *)str;
+  switch (cat) {
+    case LC_NUMERIC:
+      if (idx > 1)
+        return "";
+      str = c_numeric;
+      break;
+    case LC_TIME:
+      if (idx > 0x31)
+        return "";
+      str = c_time;
+      break;
+    case LC_MONETARY:
+      if (idx > 0)
+        return "";
+      str = "";
+      break;
+    case LC_MESSAGES:
+      if (idx > 3)
+        return "";
+      str = c_messages;
+      break;
+    default:
+      return "";
+  }
+
+  for (; idx; idx--, str++)
+    for (; *str; str++)
+      ;
+  if (cat != LC_NUMERIC && *str)
+    str = LCTRANS(str, cat, loc);
+  return (char*)str;
 }
 
-char *__nl_langinfo(nl_item item)
-{
-	return __nl_langinfo_l(item, CURRENT_LOCALE);
+char* __nl_langinfo(nl_item item) {
+  return __nl_langinfo_l(item, CURRENT_LOCALE);
 }
 
 weak_alias(__nl_langinfo, nl_langinfo);
diff --git a/fusl/src/locale/legacychars.h b/fusl/src/locale/legacychars.h
index 914ad0d..599b9ba 100644
--- a/fusl/src/locale/legacychars.h
+++ b/fusl/src/locale/legacychars.h
@@ -1,41 +1,51 @@
-0,1,160,167,168,169,175,176,178,183,184,198,215,216,230,247,248,162,163,165,
-196,197,198,199,201,214,215,216,220,224,226,228,229,230,231,232,233,234,235,
-236,238,239,242,244,246,248,249,251,252,255,256,257,258,259,260,261,262,263,
-264,265,266,267,268,269,270,271,272,273,274,275,278,279,280,281,282,283,284,
-285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,302,303,304,305,
-308,309,310,311,312,313,314,315,316,317,318,321,322,323,324,325,326,327,328,
-330,331,332,333,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,
-351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,
-370,371,372,373,374,375,376,377,378,379,380,381,382,402,416,417,431,432,536,
-537,538,539,710,711,728,729,731,732,733,768,769,771,777,803,890,900,901,902,
-904,905,906,908,910,911,912,913,914,915,916,917,918,919,920,921,922,923,924,
-925,926,927,928,929,931,932,933,934,935,936,937,938,939,940,941,942,943,944,
-945,946,947,948,949,950,951,952,953,954,955,956,957,958,959,960,961,962,963,
-964,965,966,967,968,969,970,
-971,972,973,974,1025,1026,1027,1028,1029,1030,1031,1032,1033,1034,1035,1036,
-1038,1039,1040,1041,1042,1043,1044,1045,1046,1047,1048,1049,1050,1051,1052,
-1053,1054,1055,1056,1057,1058,1059,1060,1061,1062,1063,1064,1065,1066,1067,
-1068,1069,1070,1071,1072,1073,1074,1075,1076,1077,1078,1079,1080,1081,1082,
-1083,1084,1085,1086,1087,1088,1089,1090,1091,1092,1093,1094,1095,1096,1097,
-1098,1099,1100,1101,1102,1103,1105,1106,1107,1108,1109,1110,1111,1112,1113,
-1114,1115,1116,1118,1119,1168,1169,1456,1457,1458,1459,1460,1461,1462,1463,
-1464,1465,1467,1468,1469,1470,1471,1472,1473,1474,1475,1488,1489,1490,1491,
-1492,1493,1494,1495,1496,1497,1498,1499,1500,1501,1502,1503,1504,1505,1506,
-1507,1508,1509,1510,1511,1512,1513,1514,1520,1521,1522,1523,1524,1548,1563,
-1567,1569,1570,1571,1572,1573,1574,1575,1576,1577,1578,1579,1580,1581,1582,
-1583,1584,1585,1586,1587,1588,1589,1590,1591,1592,1593,1594,1600,1601,1602,
-1603,1604,1605,1606,1607,1608,1609,1610,1611,1612,1613,1614,1615,1616,1617,
-1618,1657,1662,1670,1672,1681,1688,1705,1711,1722,1726,1729,1746,3585,3586,
-3587,3588,3589,3590,3591,3592,3593,3594,3595,3596,3597,3598,3599,3600,3601,
-3602,3603,3604,3605,3606,3607,3608,3609,3610,3611,3612,3613,3614,3615,3616,
-3617,3618,3619,3620,3621,3622,3623,3624,3625,3626,3627,3628,3629,3630,3631,
-3632,3633,3634,3635,3636,3637,3638,3639,3640,3641,3642,3647,3648,3649,3650,
-3651,3652,3653,3654,3655,3656,3657,3658,3659,3660,3661,3662,3663,3664,3665,
-3666,3667,3668,3669,3670,3671,3672,3673,3674,3675,7682,7683,7690,7691,7710,
-7711,7744,7745,7766,7767,7776,7777,7786,7787,7808,7809,7810,7811,7812,7813,
-7922,7923,8204,8205,8206,8207,8211,8212,8213,8215,8216,8217,8218,8220,8221,
-8222,8224,8225,8226,8230,8240,8249,8250,8362,8363,8364,8367,8359,8470,8482,
-8729,8730,8776,8804,8805,8992,8993,9472,9474,9484,9488,9492,9496,9500,9508,
-9516,9524,9532,9552,9553,9554,9555,9556,9557,9558,9559,9560,9561,9562,9563,
-9564,9565,9566,9567,9568,9569,9570,9571,9572,9573,9574,9575,9576,9577,9578,
-9579,9580,9600,9604,9608,9612,9616,9617,9618,9619,9632,
+0, 1, 160, 167, 168, 169, 175, 176, 178, 183, 184, 198, 215, 216, 230, 247, 248,
+    162, 163, 165, 196, 197, 198, 199, 201, 214, 215, 216, 220, 224, 226, 228,
+    229, 230, 231, 232, 233, 234, 235, 236, 238, 239, 242, 244, 246, 248, 249,
+    251, 252, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267,
+    268, 269, 270, 271, 272, 273, 274, 275, 278, 279, 280, 281, 282, 283, 284,
+    285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299,
+    302, 303, 304, 305, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318,
+    321, 322, 323, 324, 325, 326, 327, 328, 330, 331, 332, 333, 336, 337, 338,
+    339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353,
+    354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368,
+    369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 402,
+    416, 417, 431, 432, 536, 537, 538, 539, 710, 711, 728, 729, 731, 732, 733,
+    768, 769, 771, 777, 803, 890, 900, 901, 902, 904, 905, 906, 908, 910, 911,
+    912, 913, 914, 915, 916, 917, 918, 919, 920, 921, 922, 923, 924, 925, 926,
+    927, 928, 929, 931, 932, 933, 934, 935, 936, 937, 938, 939, 940, 941, 942,
+    943, 944, 945, 946, 947, 948, 949, 950, 951, 952, 953, 954, 955, 956, 957,
+    958, 959, 960, 961, 962, 963, 964, 965, 966, 967, 968, 969, 970, 971, 972,
+    973, 974, 1025, 1026, 1027, 1028, 1029, 1030, 1031, 1032, 1033, 1034, 1035,
+    1036, 1038, 1039, 1040, 1041, 1042, 1043, 1044, 1045, 1046, 1047, 1048,
+    1049, 1050, 1051, 1052, 1053, 1054, 1055, 1056, 1057, 1058, 1059, 1060,
+    1061, 1062, 1063, 1064, 1065, 1066, 1067, 1068, 1069, 1070, 1071, 1072,
+    1073, 1074, 1075, 1076, 1077, 1078, 1079, 1080, 1081, 1082, 1083, 1084,
+    1085, 1086, 1087, 1088, 1089, 1090, 1091, 1092, 1093, 1094, 1095, 1096,
+    1097, 1098, 1099, 1100, 1101, 1102, 1103, 1105, 1106, 1107, 1108, 1109,
+    1110, 1111, 1112, 1113, 1114, 1115, 1116, 1118, 1119, 1168, 1169, 1456,
+    1457, 1458, 1459, 1460, 1461, 1462, 1463, 1464, 1465, 1467, 1468, 1469,
+    1470, 1471, 1472, 1473, 1474, 1475, 1488, 1489, 1490, 1491, 1492, 1493,
+    1494, 1495, 1496, 1497, 1498, 1499, 1500, 1501, 1502, 1503, 1504, 1505,
+    1506, 1507, 1508, 1509, 1510, 1511, 1512, 1513, 1514, 1520, 1521, 1522,
+    1523, 1524, 1548, 1563, 1567, 1569, 1570, 1571, 1572, 1573, 1574, 1575,
+    1576, 1577, 1578, 1579, 1580, 1581, 1582, 1583, 1584, 1585, 1586, 1587,
+    1588, 1589, 1590, 1591, 1592, 1593, 1594, 1600, 1601, 1602, 1603, 1604,
+    1605, 1606, 1607, 1608, 1609, 1610, 1611, 1612, 1613, 1614, 1615, 1616,
+    1617, 1618, 1657, 1662, 1670, 1672, 1681, 1688, 1705, 1711, 1722, 1726,
+    1729, 1746, 3585, 3586, 3587, 3588, 3589, 3590, 3591, 3592, 3593, 3594,
+    3595, 3596, 3597, 3598, 3599, 3600, 3601, 3602, 3603, 3604, 3605, 3606,
+    3607, 3608, 3609, 3610, 3611, 3612, 3613, 3614, 3615, 3616, 3617, 3618,
+    3619, 3620, 3621, 3622, 3623, 3624, 3625, 3626, 3627, 3628, 3629, 3630,
+    3631, 3632, 3633, 3634, 3635, 3636, 3637, 3638, 3639, 3640, 3641, 3642,
+    3647, 3648, 3649, 3650, 3651, 3652, 3653, 3654, 3655, 3656, 3657, 3658,
+    3659, 3660, 3661, 3662, 3663, 3664, 3665, 3666, 3667, 3668, 3669, 3670,
+    3671, 3672, 3673, 3674, 3675, 7682, 7683, 7690, 7691, 7710, 7711, 7744,
+    7745, 7766, 7767, 7776, 7777, 7786, 7787, 7808, 7809, 7810, 7811, 7812,
+    7813, 7922, 7923, 8204, 8205, 8206, 8207, 8211, 8212, 8213, 8215, 8216,
+    8217, 8218, 8220, 8221, 8222, 8224, 8225, 8226, 8230, 8240, 8249, 8250,
+    8362, 8363, 8364, 8367, 8359, 8470, 8482, 8729, 8730, 8776, 8804, 8805,
+    8992, 8993, 9472, 9474, 9484, 9488, 9492, 9496, 9500, 9508, 9516, 9524,
+    9532, 9552, 9553, 9554, 9555, 9556, 9557, 9558, 9559, 9560, 9561, 9562,
+    9563, 9564, 9565, 9566, 9567, 9568, 9569, 9570, 9571, 9572, 9573, 9574,
+    9575, 9576, 9577, 9578, 9579, 9580, 9600, 9604, 9608, 9612, 9616, 9617,
+    9618, 9619, 9632,
diff --git a/fusl/src/locale/locale_map.c b/fusl/src/locale/locale_map.c
index db6fae5..3240a61 100644
--- a/fusl/src/locale/locale_map.c
+++ b/fusl/src/locale/locale_map.c
@@ -4,113 +4,113 @@
 #include "libc.h"
 #include "atomic.h"
 
-const char *__lctrans_impl(const char *msg, const struct __locale_map *lm)
-{
-	const char *trans = 0;
-	if (lm) trans = __mo_lookup(lm->map, lm->map_size, msg);
-	return trans ? trans : msg;
+const char* __lctrans_impl(const char* msg, const struct __locale_map* lm) {
+  const char* trans = 0;
+  if (lm)
+    trans = __mo_lookup(lm->map, lm->map_size, msg);
+  return trans ? trans : msg;
 }
 
-const unsigned char *__map_file(const char *, size_t *);
-int __munmap(void *, size_t);
-char *__strchrnul(const char *, int);
+const unsigned char* __map_file(const char*, size_t*);
+int __munmap(void*, size_t);
+char* __strchrnul(const char*, int);
 
 static const char envvars[][12] = {
-	"LC_CTYPE",
-	"LC_NUMERIC",
-	"LC_TIME",
-	"LC_COLLATE",
-	"LC_MONETARY",
-	"LC_MESSAGES",
+    "LC_CTYPE",   "LC_NUMERIC",  "LC_TIME",
+    "LC_COLLATE", "LC_MONETARY", "LC_MESSAGES",
 };
 
-const struct __locale_map *__get_locale(int cat, const char *val)
-{
-	static int lock[2];
-	static void *volatile loc_head;
-	const struct __locale_map *p;
-	struct __locale_map *new = 0;
-	const char *path = 0, *z;
-	char buf[256];
-	size_t l, n;
+const struct __locale_map* __get_locale(int cat, const char* val) {
+  static int lock[2];
+  static void* volatile loc_head;
+  const struct __locale_map* p;
+  struct __locale_map* new = 0;
+  const char *path = 0, *z;
+  char buf[256];
+  size_t l, n;
 
-	if (!*val) {
-		((val = getenv("LC_ALL")) && *val) ||
-		((val = getenv(envvars[cat])) && *val) ||
-		((val = getenv("LANG")) && *val) ||
-		(val = "C.UTF-8");
-	}
+  if (!*val) {
+    ((val = getenv("LC_ALL")) && *val) ||
+        ((val = getenv(envvars[cat])) && *val) ||
+        ((val = getenv("LANG")) && *val) || (val = "C.UTF-8");
+  }
 
-	/* Limit name length and forbid leading dot or any slashes. */
-	for (n=0; n<LOCALE_NAME_MAX && val[n] && val[n]!='/'; n++);
-	if (val[0]=='.' || val[n]) val = "C.UTF-8";
-	int builtin = (val[0]=='C' && !val[1])
-		|| !strcmp(val, "C.UTF-8")
-		|| !strcmp(val, "POSIX");
+  /* Limit name length and forbid leading dot or any slashes. */
+  for (n = 0; n < LOCALE_NAME_MAX && val[n] && val[n] != '/'; n++)
+    ;
+  if (val[0] == '.' || val[n])
+    val = "C.UTF-8";
+  int builtin = (val[0] == 'C' && !val[1]) || !strcmp(val, "C.UTF-8") ||
+                !strcmp(val, "POSIX");
 
-	if (builtin) {
-		if (cat == LC_CTYPE && val[1]=='.')
-			return (void *)&__c_dot_utf8;
-		return 0;
-	}
+  if (builtin) {
+    if (cat == LC_CTYPE && val[1] == '.')
+      return (void*)&__c_dot_utf8;
+    return 0;
+  }
 
-	for (p=loc_head; p; p=p->next)
-		if (!strcmp(val, p->name)) return p;
+  for (p = loc_head; p; p = p->next)
+    if (!strcmp(val, p->name))
+      return p;
 
-	LOCK(lock);
+  LOCK(lock);
 
-	for (p=loc_head; p; p=p->next)
-		if (!strcmp(val, p->name)) {
-			UNLOCK(lock);
-			return p;
-		}
+  for (p = loc_head; p; p = p->next)
+    if (!strcmp(val, p->name)) {
+      UNLOCK(lock);
+      return p;
+    }
 
-	if (!libc.secure) path = getenv("MUSL_LOCPATH");
-	/* FIXME: add a default path? */
+  if (!libc.secure)
+    path = getenv("MUSL_LOCPATH");
+  /* FIXME: add a default path? */
 
-	if (path) for (; *path; path=z+!!*z) {
-		z = __strchrnul(path, ':');
-		l = z - path - !!*z;
-		if (l >= sizeof buf - n - 2) continue;
-		memcpy(buf, path, l);
-		buf[l] = '/';
-		memcpy(buf+l+1, val, n);
-		buf[l+1+n] = 0;
-		size_t map_size;
-		const void *map = __map_file(buf, &map_size);
-		if (map) {
-			new = malloc(sizeof *new);
-			if (!new) {
-				__munmap((void *)map, map_size);
-				break;
-			}
-			new->map = map;
-			new->map_size = map_size;
-			memcpy(new->name, val, n);
-			new->name[n] = 0;
-			new->next = loc_head;
-			loc_head = new;
-			break;
-		}
-	}
+  if (path)
+    for (; *path; path = z + !!*z) {
+      z = __strchrnul(path, ':');
+      l = z - path - !!*z;
+      if (l >= sizeof buf - n - 2)
+        continue;
+      memcpy(buf, path, l);
+      buf[l] = '/';
+      memcpy(buf + l + 1, val, n);
+      buf[l + 1 + n] = 0;
+      size_t map_size;
+      const void* map = __map_file(buf, &map_size);
+      if (map) {
+        new = malloc(sizeof *new);
+        if (!new) {
+          __munmap((void*)map, map_size);
+          break;
+        }
+        new->map = map;
+        new->map_size = map_size;
+        memcpy(new->name, val, n);
+        new->name[n] = 0;
+        new->next = loc_head;
+        loc_head = new;
+        break;
+      }
+    }
 
-	/* If no locale definition was found, make a locale map
-	 * object anyway to store the name, which is kept for the
-	 * sake of being able to do message translations at the
-	 * application level. */
-	if (!new && (new = malloc(sizeof *new))) {
-		new->map = __c_dot_utf8.map;
-		new->map_size = __c_dot_utf8.map_size;
-		memcpy(new->name, val, n);
-		new->name[n] = 0;
-		new->next = loc_head;
-		loc_head = new;
-	}
+  /* If no locale definition was found, make a locale map
+   * object anyway to store the name, which is kept for the
+   * sake of being able to do message translations at the
+   * application level. */
+  if (!new && (new = malloc(sizeof *new))) {
+    new->map = __c_dot_utf8.map;
+    new->map_size = __c_dot_utf8.map_size;
+    memcpy(new->name, val, n);
+    new->name[n] = 0;
+    new->next = loc_head;
+    loc_head = new;
+  }
 
-	/* For LC_CTYPE, never return a null pointer unless the
-	 * requested name was "C" or "POSIX". */
-	if (!new && cat == LC_CTYPE) new = (void *)&__c_dot_utf8;
+  /* For LC_CTYPE, never return a null pointer unless the
+   * requested name was "C" or "POSIX". */
+  if (!new&& cat == LC_CTYPE)
+    new = (void*)&__c_dot_utf8;
 
-	UNLOCK(lock);
-	return new;
+  UNLOCK(lock);
+  return new;
 }
diff --git a/fusl/src/locale/localeconv.c b/fusl/src/locale/localeconv.c
index 4cbb9dc..97163b4 100644
--- a/fusl/src/locale/localeconv.c
+++ b/fusl/src/locale/localeconv.c
@@ -2,33 +2,32 @@
 #include <limits.h>
 
 static const struct lconv posix_lconv = {
-	.decimal_point = ".",
-	.thousands_sep = "",
-	.grouping = "",
-	.int_curr_symbol = "",
-	.currency_symbol = "",
-	.mon_decimal_point = "",
-	.mon_thousands_sep = "",
-	.mon_grouping = "",
-	.positive_sign = "",
-	.negative_sign = "",
-	.int_frac_digits = CHAR_MAX,
-	.frac_digits = CHAR_MAX,
-	.p_cs_precedes = CHAR_MAX,
-	.p_sep_by_space = CHAR_MAX,
-	.n_cs_precedes = CHAR_MAX,
-	.n_sep_by_space = CHAR_MAX,
-	.p_sign_posn = CHAR_MAX,
-	.n_sign_posn = CHAR_MAX,
-	.int_p_cs_precedes = CHAR_MAX,
-	.int_p_sep_by_space = CHAR_MAX,
-	.int_n_cs_precedes = CHAR_MAX,
-	.int_n_sep_by_space = CHAR_MAX,
-	.int_p_sign_posn = CHAR_MAX,
-	.int_n_sign_posn = CHAR_MAX,
+    .decimal_point = ".",
+    .thousands_sep = "",
+    .grouping = "",
+    .int_curr_symbol = "",
+    .currency_symbol = "",
+    .mon_decimal_point = "",
+    .mon_thousands_sep = "",
+    .mon_grouping = "",
+    .positive_sign = "",
+    .negative_sign = "",
+    .int_frac_digits = CHAR_MAX,
+    .frac_digits = CHAR_MAX,
+    .p_cs_precedes = CHAR_MAX,
+    .p_sep_by_space = CHAR_MAX,
+    .n_cs_precedes = CHAR_MAX,
+    .n_sep_by_space = CHAR_MAX,
+    .p_sign_posn = CHAR_MAX,
+    .n_sign_posn = CHAR_MAX,
+    .int_p_cs_precedes = CHAR_MAX,
+    .int_p_sep_by_space = CHAR_MAX,
+    .int_n_cs_precedes = CHAR_MAX,
+    .int_n_sep_by_space = CHAR_MAX,
+    .int_p_sign_posn = CHAR_MAX,
+    .int_n_sign_posn = CHAR_MAX,
 };
 
-struct lconv *localeconv(void)
-{
-	return (void *)&posix_lconv;
+struct lconv* localeconv(void) {
+  return (void*)&posix_lconv;
 }
diff --git a/fusl/src/locale/newlocale.c b/fusl/src/locale/newlocale.c
index f50bbe9..10b78cd 100644
--- a/fusl/src/locale/newlocale.c
+++ b/fusl/src/locale/newlocale.c
@@ -3,47 +3,47 @@
 #include "locale_impl.h"
 #include "libc.h"
 
-int __loc_is_allocated(locale_t loc)
-{
-	return loc && loc != C_LOCALE && loc != UTF8_LOCALE;
+int __loc_is_allocated(locale_t loc) {
+  return loc && loc != C_LOCALE && loc != UTF8_LOCALE;
 }
 
-locale_t __newlocale(int mask, const char *name, locale_t loc)
-{
-	int i, j;
-	struct __locale_struct tmp;
-	const struct __locale_map *lm;
+locale_t __newlocale(int mask, const char* name, locale_t loc) {
+  int i, j;
+  struct __locale_struct tmp;
+  const struct __locale_map* lm;
 
-	/* For locales with allocated storage, modify in-place. */
-	if (__loc_is_allocated(loc)) {
-		for (i=0; i<LC_ALL; i++)
-			if (mask & (1<<i))
-				loc->cat[i] = __get_locale(i, name);
-		return loc;
-	}
+  /* For locales with allocated storage, modify in-place. */
+  if (__loc_is_allocated(loc)) {
+    for (i = 0; i < LC_ALL; i++)
+      if (mask & (1 << i))
+        loc->cat[i] = __get_locale(i, name);
+    return loc;
+  }
 
-	/* Otherwise, build a temporary locale object, which will only
-	 * be instantiated in allocated storage if it does not match
-	 * one of the built-in static locales. This makes the common
-	 * usage case for newlocale, getting a C locale with predictable
-	 * behavior, very fast, and more importantly, fail-safe. */
-	for (j=i=0; i<LC_ALL; i++) {
-		if (loc && !(mask & (1<<i)))
-			lm = loc->cat[i];
-		else
-			lm = __get_locale(i, mask & (1<<i) ? name : "");
-		if (lm) j++;
-		tmp.cat[i] = lm;
-	}
+  /* Otherwise, build a temporary locale object, which will only
+   * be instantiated in allocated storage if it does not match
+   * one of the built-in static locales. This makes the common
+   * usage case for newlocale, getting a C locale with predictable
+   * behavior, very fast, and more importantly, fail-safe. */
+  for (j = i = 0; i < LC_ALL; i++) {
+    if (loc && !(mask & (1 << i)))
+      lm = loc->cat[i];
+    else
+      lm = __get_locale(i, mask & (1 << i) ? name : "");
+    if (lm)
+      j++;
+    tmp.cat[i] = lm;
+  }
 
-	if (!j)
-		return C_LOCALE;
-	if (j==1 && tmp.cat[LC_CTYPE]==&__c_dot_utf8)
-		return UTF8_LOCALE;
+  if (!j)
+    return C_LOCALE;
+  if (j == 1 && tmp.cat[LC_CTYPE] == &__c_dot_utf8)
+    return UTF8_LOCALE;
 
-	if ((loc = malloc(sizeof *loc))) *loc = tmp;
+  if ((loc = malloc(sizeof *loc)))
+    *loc = tmp;
 
-	return loc;
+  return loc;
 }
 
 weak_alias(__newlocale, newlocale);
diff --git a/fusl/src/locale/pleval.c b/fusl/src/locale/pleval.c
index d60058d..5781d3e 100644
--- a/fusl/src/locale/pleval.c
+++ b/fusl/src/locale/pleval.c
@@ -23,135 +23,164 @@
 */
 
 struct st {
-	unsigned long r;
-	unsigned long n;
-	int op;
+  unsigned long r;
+  unsigned long n;
+  int op;
 };
 
-static const char *skipspace(const char *s)
-{
-	while (isspace(*s)) s++;
-	return s;
+static const char* skipspace(const char* s) {
+  while (isspace(*s))
+    s++;
+  return s;
 }
 
-static const char *evalexpr(struct st *st, const char *s, int d);
+static const char* evalexpr(struct st* st, const char* s, int d);
 
-static const char *evalprim(struct st *st, const char *s, int d)
-{
-	char *e;
-	if (--d < 0) return "";
-	s = skipspace(s);
-	if (isdigit(*s)) {
-		st->r = strtoul(s, &e, 10);
-		if (e == s || st->r == -1) return "";
-		return skipspace(e);
-	}
-	if (*s == 'n') {
-		st->r = st->n;
-		return skipspace(s+1);
-	}
-	if (*s == '(') {
-		s = evalexpr(st, s+1, d);
-		if (*s != ')') return "";
-		return skipspace(s+1);
-	}
-	if (*s == '!') {
-		s = evalprim(st, s+1, d);
-		st->r = !st->r;
-		return s;
-	}
-	return "";
+static const char* evalprim(struct st* st, const char* s, int d) {
+  char* e;
+  if (--d < 0)
+    return "";
+  s = skipspace(s);
+  if (isdigit(*s)) {
+    st->r = strtoul(s, &e, 10);
+    if (e == s || st->r == -1)
+      return "";
+    return skipspace(e);
+  }
+  if (*s == 'n') {
+    st->r = st->n;
+    return skipspace(s + 1);
+  }
+  if (*s == '(') {
+    s = evalexpr(st, s + 1, d);
+    if (*s != ')')
+      return "";
+    return skipspace(s + 1);
+  }
+  if (*s == '!') {
+    s = evalprim(st, s + 1, d);
+    st->r = !st->r;
+    return s;
+  }
+  return "";
 }
 
-static int binop(struct st *st, int op, unsigned long left)
-{
-	unsigned long a = left, b = st->r;
-	switch (op) {
-	case 0: st->r = a||b; return 0;
-	case 1: st->r = a&&b; return 0;
-	case 2: st->r = a==b; return 0;
-	case 3: st->r = a!=b; return 0;
-	case 4: st->r = a>=b; return 0;
-	case 5: st->r = a<=b; return 0;
-	case 6: st->r = a>b; return 0;
-	case 7: st->r = a<b; return 0;
-	case 8: st->r = a+b; return 0;
-	case 9: st->r = a-b; return 0;
-	case 10: st->r = a*b; return 0;
-	case 11: if (b) {st->r = a%b; return 0;} return 1;
-	case 12: if (b) {st->r = a/b; return 0;} return 1;
-	}
-	return 1;
+static int binop(struct st* st, int op, unsigned long left) {
+  unsigned long a = left, b = st->r;
+  switch (op) {
+    case 0:
+      st->r = a || b;
+      return 0;
+    case 1:
+      st->r = a && b;
+      return 0;
+    case 2:
+      st->r = a == b;
+      return 0;
+    case 3:
+      st->r = a != b;
+      return 0;
+    case 4:
+      st->r = a >= b;
+      return 0;
+    case 5:
+      st->r = a <= b;
+      return 0;
+    case 6:
+      st->r = a > b;
+      return 0;
+    case 7:
+      st->r = a < b;
+      return 0;
+    case 8:
+      st->r = a + b;
+      return 0;
+    case 9:
+      st->r = a - b;
+      return 0;
+    case 10:
+      st->r = a * b;
+      return 0;
+    case 11:
+      if (b) {
+        st->r = a % b;
+        return 0;
+      }
+      return 1;
+    case 12:
+      if (b) {
+        st->r = a / b;
+        return 0;
+      }
+      return 1;
+  }
+  return 1;
 }
 
-static const char *parseop(struct st *st, const char *s)
-{
-	static const char opch[11] = "|&=!><+-*%/";
-	static const char opch2[6] = "|&====";
-	int i;
-	for (i=0; i<11; i++)
-		if (*s == opch[i]) {
-			/* note: >,< are accepted with or without = */
-			if (i<6 && s[1] == opch2[i]) {
-				st->op = i;
-				return s+2;
-			}
-			if (i>=4) {
-				st->op = i+2;
-				return s+1;
-			}
-			break;
-		}
-	st->op = 13;
-	return s;
+static const char* parseop(struct st* st, const char* s) {
+  static const char opch[11] = "|&=!><+-*%/";
+  static const char opch2[6] = "|&====";
+  int i;
+  for (i = 0; i < 11; i++)
+    if (*s == opch[i]) {
+      /* note: >,< are accepted with or without = */
+      if (i < 6 && s[1] == opch2[i]) {
+        st->op = i;
+        return s + 2;
+      }
+      if (i >= 4) {
+        st->op = i + 2;
+        return s + 1;
+      }
+      break;
+    }
+  st->op = 13;
+  return s;
 }
 
-static const char *evalbinop(struct st *st, const char *s, int minprec, int d)
-{
-	static const char prec[14] = {1,2,3,3,4,4,4,4,5,5,6,6,6,0};
-	unsigned long left;
-	int op;
-	d--;
-	s = evalprim(st, s, d);
-	s = parseop(st, s);
-	for (;;) {
-		/*
-		st->r (left hand side value) and st->op are now set,
-		get the right hand side or back out if op has low prec,
-		if op was missing then prec[op]==0
-		*/
-		op = st->op;
-		if (prec[op] <= minprec)
-			return s;
-		left = st->r;
-		s = evalbinop(st, s, prec[op], d);
-		if (binop(st, op, left))
-			return "";
-	}
+static const char* evalbinop(struct st* st, const char* s, int minprec, int d) {
+  static const char prec[14] = {1, 2, 3, 3, 4, 4, 4, 4, 5, 5, 6, 6, 6, 0};
+  unsigned long left;
+  int op;
+  d--;
+  s = evalprim(st, s, d);
+  s = parseop(st, s);
+  for (;;) {
+    /*
+    st->r (left hand side value) and st->op are now set,
+    get the right hand side or back out if op has low prec,
+    if op was missing then prec[op]==0
+    */
+    op = st->op;
+    if (prec[op] <= minprec)
+      return s;
+    left = st->r;
+    s = evalbinop(st, s, prec[op], d);
+    if (binop(st, op, left))
+      return "";
+  }
 }
 
-static const char *evalexpr(struct st *st, const char *s, int d)
-{
-	unsigned long a, b;
-	if (--d < 0)
-		return "";
-	s = evalbinop(st, s, 0, d);
-	if (*s != '?')
-		return s;
-	a = st->r;
-	s = evalexpr(st, s+1, d);
-	if (*s != ':')
-		return "";
-	b = st->r;
-	s = evalexpr(st, s+1, d);
-	st->r = a ? b : st->r;
-	return s;
+static const char* evalexpr(struct st* st, const char* s, int d) {
+  unsigned long a, b;
+  if (--d < 0)
+    return "";
+  s = evalbinop(st, s, 0, d);
+  if (*s != '?')
+    return s;
+  a = st->r;
+  s = evalexpr(st, s + 1, d);
+  if (*s != ':')
+    return "";
+  b = st->r;
+  s = evalexpr(st, s + 1, d);
+  st->r = a ? b : st->r;
+  return s;
 }
 
-unsigned long __pleval(const char *s, unsigned long n)
-{
-	struct st st;
-	st.n = n;
-	s = evalexpr(&st, s, 100);
-	return *s == ';' ? st.r : -1;
+unsigned long __pleval(const char* s, unsigned long n) {
+  struct st st;
+  st.n = n;
+  s = evalexpr(&st, s, 100);
+  return *s == ';' ? st.r : -1;
 }
diff --git a/fusl/src/locale/setlocale.c b/fusl/src/locale/setlocale.c
index 8dae5a4..d567fe3 100644
--- a/fusl/src/locale/setlocale.c
+++ b/fusl/src/locale/setlocale.c
@@ -5,66 +5,67 @@
 #include "libc.h"
 #include "atomic.h"
 
-static char buf[LC_ALL*(LOCALE_NAME_MAX+1)];
+static char buf[LC_ALL * (LOCALE_NAME_MAX + 1)];
 
-static char *setlocale_one_unlocked(int cat, const char *name)
-{
-	const struct __locale_map *lm;
+static char* setlocale_one_unlocked(int cat, const char* name) {
+  const struct __locale_map* lm;
 
-	if (name) libc.global_locale.cat[cat] = lm = __get_locale(cat, name);
-	else lm = libc.global_locale.cat[cat];
+  if (name)
+    libc.global_locale.cat[cat] = lm = __get_locale(cat, name);
+  else
+    lm = libc.global_locale.cat[cat];
 
-	return lm ? (char *)lm->name : "C";
+  return lm ? (char*)lm->name : "C";
 }
 
-char *__strchrnul(const char *, int);
+char* __strchrnul(const char*, int);
 
-char *setlocale(int cat, const char *name)
-{
-	static volatile int lock[2];
+char* setlocale(int cat, const char* name) {
+  static volatile int lock[2];
 
-	if ((unsigned)cat > LC_ALL) return 0;
+  if ((unsigned)cat > LC_ALL)
+    return 0;
 
-	LOCK(lock);
+  LOCK(lock);
 
-	/* For LC_ALL, setlocale is required to return a string which
-	 * encodes the current setting for all categories. The format of
-	 * this string is unspecified, and only the following code, which
-	 * performs both the serialization and deserialization, depends
-	 * on the format, so it can easily be changed if needed. */
-	if (cat == LC_ALL) {
-		int i;
-		if (name) {
-			char part[LOCALE_NAME_MAX+1] = "C.UTF-8";
-			const char *p = name;
-			for (i=0; i<LC_ALL; i++) {
-				const char *z = __strchrnul(p, ';');
-				if (z-p <= LOCALE_NAME_MAX) {
-					memcpy(part, p, z-p);
-					part[z-p] = 0;
-					if (*z) p = z+1;
-				}
-				setlocale_one_unlocked(i, part);
-			}
-		}
-		char *s = buf;
-		for (i=0; i<LC_ALL; i++) {
-			const struct __locale_map *lm =
-				libc.global_locale.cat[i];
-			const char *part = lm ? lm->name : "C";
-			size_t l = strlen(part);
-			memcpy(s, part, l);
-			s[l] = ';';
-			s += l+1;
-		}
-		*--s = 0;
-		UNLOCK(lock);
-		return buf;
-	}
+  /* For LC_ALL, setlocale is required to return a string which
+   * encodes the current setting for all categories. The format of
+   * this string is unspecified, and only the following code, which
+   * performs both the serialization and deserialization, depends
+   * on the format, so it can easily be changed if needed. */
+  if (cat == LC_ALL) {
+    int i;
+    if (name) {
+      char part[LOCALE_NAME_MAX + 1] = "C.UTF-8";
+      const char* p = name;
+      for (i = 0; i < LC_ALL; i++) {
+        const char* z = __strchrnul(p, ';');
+        if (z - p <= LOCALE_NAME_MAX) {
+          memcpy(part, p, z - p);
+          part[z - p] = 0;
+          if (*z)
+            p = z + 1;
+        }
+        setlocale_one_unlocked(i, part);
+      }
+    }
+    char* s = buf;
+    for (i = 0; i < LC_ALL; i++) {
+      const struct __locale_map* lm = libc.global_locale.cat[i];
+      const char* part = lm ? lm->name : "C";
+      size_t l = strlen(part);
+      memcpy(s, part, l);
+      s[l] = ';';
+      s += l + 1;
+    }
+    *--s = 0;
+    UNLOCK(lock);
+    return buf;
+  }
 
-	char *ret = setlocale_one_unlocked(cat, name);
+  char* ret = setlocale_one_unlocked(cat, name);
 
-	UNLOCK(lock);
+  UNLOCK(lock);
 
-	return ret;
+  return ret;
 }
diff --git a/fusl/src/locale/strcoll.c b/fusl/src/locale/strcoll.c
index 84f199f..bd58113 100644
--- a/fusl/src/locale/strcoll.c
+++ b/fusl/src/locale/strcoll.c
@@ -3,14 +3,12 @@
 #include "locale_impl.h"
 #include "libc.h"
 
-int __strcoll_l(const char *l, const char *r, locale_t loc)
-{
-	return strcmp(l, r);
+int __strcoll_l(const char* l, const char* r, locale_t loc) {
+  return strcmp(l, r);
 }
 
-int strcoll(const char *l, const char *r)
-{
-	return __strcoll_l(l, r, CURRENT_LOCALE);
+int strcoll(const char* l, const char* r) {
+  return __strcoll_l(l, r, CURRENT_LOCALE);
 }
 
 weak_alias(__strcoll_l, strcoll_l);
diff --git a/fusl/src/locale/strfmon.c b/fusl/src/locale/strfmon.c
index 7cf2136..664616c 100644
--- a/fusl/src/locale/strfmon.c
+++ b/fusl/src/locale/strfmon.c
@@ -5,97 +5,105 @@
 #include <errno.h>
 #include "locale_impl.h"
 
-static ssize_t vstrfmon_l(char *s, size_t n, locale_t loc, const char *fmt, va_list ap)
-{
-	size_t l;
-	double x;
-	int fill, nogrp, negpar, nosym, left, intl;
-	int lp, rp, w, fw;
-	char *s0=s;
-	for (; n && *fmt; ) {
-		if (*fmt != '%') {
-		literal:
-			*s++ = *fmt++;
-			n--;
-			continue;
-		}
-		fmt++;
-		if (*fmt == '%') goto literal;
+static ssize_t vstrfmon_l(char* s,
+                          size_t n,
+                          locale_t loc,
+                          const char* fmt,
+                          va_list ap) {
+  size_t l;
+  double x;
+  int fill, nogrp, negpar, nosym, left, intl;
+  int lp, rp, w, fw;
+  char* s0 = s;
+  for (; n && *fmt;) {
+    if (*fmt != '%') {
+    literal:
+      *s++ = *fmt++;
+      n--;
+      continue;
+    }
+    fmt++;
+    if (*fmt == '%')
+      goto literal;
 
-		fill = ' ';
-		nogrp = 0;
-		negpar = 0;
-		nosym = 0;
-		left = 0;
-		for (; ; fmt++) {
-			switch (*fmt) {
-			case '=':
-				fill = *++fmt;
-				continue;
-			case '^':
-				nogrp = 1;
-				continue;
-			case '(':
-				negpar = 1;
-			case '+':
-				continue;
-			case '!':
-				nosym = 1;
-				continue;
-			case '-':
-				left = 1;
-				continue;
-			}
-			break;
-		}
+    fill = ' ';
+    nogrp = 0;
+    negpar = 0;
+    nosym = 0;
+    left = 0;
+    for (;; fmt++) {
+      switch (*fmt) {
+        case '=':
+          fill = *++fmt;
+          continue;
+        case '^':
+          nogrp = 1;
+          continue;
+        case '(':
+          negpar = 1;
+        case '+':
+          continue;
+        case '!':
+          nosym = 1;
+          continue;
+        case '-':
+          left = 1;
+          continue;
+      }
+      break;
+    }
 
-		for (fw=0; isdigit(*fmt); fmt++)
-			fw = 10*fw + (*fmt-'0');
-		lp = 0;
-		rp = 2;
-		if (*fmt=='#') for (lp=0, fmt++; isdigit(*fmt); fmt++)
-			lp = 10*lp + (*fmt-'0');
-		if (*fmt=='.') for (rp=0, fmt++; isdigit(*fmt); fmt++)
-			rp = 10*rp + (*fmt-'0');
+    for (fw = 0; isdigit(*fmt); fmt++)
+      fw = 10 * fw + (*fmt - '0');
+    lp = 0;
+    rp = 2;
+    if (*fmt == '#')
+      for (lp = 0, fmt++; isdigit(*fmt); fmt++)
+        lp = 10 * lp + (*fmt - '0');
+    if (*fmt == '.')
+      for (rp = 0, fmt++; isdigit(*fmt); fmt++)
+        rp = 10 * rp + (*fmt - '0');
 
-		intl = *fmt++ == 'i';
+    intl = *fmt++ == 'i';
 
-		w = lp + 1 + rp;
-		if (!left && fw>w) w = fw;
+    w = lp + 1 + rp;
+    if (!left && fw > w)
+      w = fw;
 
-		x = va_arg(ap, double);
-		l = snprintf(s, n, "%*.*f", w, rp, x);
-		if (l >= n) {
-			errno = E2BIG;
-			return -1;
-		}
-		s += l;
-		n -= l;
-	}
-	return s-s0;
+    x = va_arg(ap, double);
+    l = snprintf(s, n, "%*.*f", w, rp, x);
+    if (l >= n) {
+      errno = E2BIG;
+      return -1;
+    }
+    s += l;
+    n -= l;
+  }
+  return s - s0;
 }
 
-ssize_t strfmon_l(char *restrict s, size_t n, locale_t loc, const char *restrict fmt, ...)
-{
-	va_list ap;
-	ssize_t ret;
+ssize_t strfmon_l(char* restrict s,
+                  size_t n,
+                  locale_t loc,
+                  const char* restrict fmt,
+                  ...) {
+  va_list ap;
+  ssize_t ret;
 
-	va_start(ap, fmt);
-	ret = vstrfmon_l(s, n, loc, fmt, ap);
-	va_end(ap);
+  va_start(ap, fmt);
+  ret = vstrfmon_l(s, n, loc, fmt, ap);
+  va_end(ap);
 
-	return ret;
+  return ret;
 }
 
+ssize_t strfmon(char* restrict s, size_t n, const char* restrict fmt, ...) {
+  va_list ap;
+  ssize_t ret;
 
-ssize_t strfmon(char *restrict s, size_t n, const char *restrict fmt, ...)
-{
-	va_list ap;
-	ssize_t ret;
+  va_start(ap, fmt);
+  ret = vstrfmon_l(s, n, CURRENT_LOCALE, fmt, ap);
+  va_end(ap);
 
-	va_start(ap, fmt);
-	ret = vstrfmon_l(s, n, CURRENT_LOCALE, fmt, ap);
-	va_end(ap);
-
-	return ret;
+  return ret;
 }
diff --git a/fusl/src/locale/strxfrm.c b/fusl/src/locale/strxfrm.c
index 14b76a6..27f624b 100644
--- a/fusl/src/locale/strxfrm.c
+++ b/fusl/src/locale/strxfrm.c
@@ -4,16 +4,18 @@
 #include "libc.h"
 
 /* collate only by code points */
-size_t __strxfrm_l(char *restrict dest, const char *restrict src, size_t n, locale_t loc)
-{
-	size_t l = strlen(src);
-	if (n > l) strcpy(dest, src);
-	return l;
+size_t __strxfrm_l(char* restrict dest,
+                   const char* restrict src,
+                   size_t n,
+                   locale_t loc) {
+  size_t l = strlen(src);
+  if (n > l)
+    strcpy(dest, src);
+  return l;
 }
 
-size_t strxfrm(char *restrict dest, const char *restrict src, size_t n)
-{
-	return __strxfrm_l(dest, src, n, CURRENT_LOCALE);
+size_t strxfrm(char* restrict dest, const char* restrict src, size_t n) {
+  return __strxfrm_l(dest, src, n, CURRENT_LOCALE);
 }
 
 weak_alias(__strxfrm_l, strxfrm_l);
diff --git a/fusl/src/locale/textdomain.c b/fusl/src/locale/textdomain.c
index c501501..c901f8e 100644
--- a/fusl/src/locale/textdomain.c
+++ b/fusl/src/locale/textdomain.c
@@ -6,39 +6,37 @@
 #include "libc.h"
 #include "atomic.h"
 
-static char *current_domain;
+static char* current_domain;
 
-char *__gettextdomain()
-{
-	return current_domain ? current_domain : "messages";
+char* __gettextdomain() {
+  return current_domain ? current_domain : "messages";
 }
 
-char *textdomain(const char *domainname)
-{
-	if (!domainname) return __gettextdomain();
+char* textdomain(const char* domainname) {
+  if (!domainname)
+    return __gettextdomain();
 
-	size_t domlen = strlen(domainname);
-	if (domlen > NAME_MAX) {
-		errno = EINVAL;
-		return 0;
-	}
+  size_t domlen = strlen(domainname);
+  if (domlen > NAME_MAX) {
+    errno = EINVAL;
+    return 0;
+  }
 
-	if (!current_domain) {
-		current_domain = malloc(NAME_MAX+1);
-		if (!current_domain) return 0;
-	}
+  if (!current_domain) {
+    current_domain = malloc(NAME_MAX + 1);
+    if (!current_domain)
+      return 0;
+  }
 
-	memcpy(current_domain, domainname, domlen+1);
+  memcpy(current_domain, domainname, domlen + 1);
 
-	return current_domain;
+  return current_domain;
 }
 
-char *gettext(const char *msgid)
-{
-	return dgettext(0, msgid);
+char* gettext(const char* msgid) {
+  return dgettext(0, msgid);
 }
 
-char *ngettext(const char *msgid1, const char *msgid2, unsigned long int n)
-{
-	return dngettext(0, msgid1, msgid2, n);
+char* ngettext(const char* msgid1, const char* msgid2, unsigned long int n) {
+  return dngettext(0, msgid1, msgid2, n);
 }
diff --git a/fusl/src/locale/uselocale.c b/fusl/src/locale/uselocale.c
index 0fc5ecb..6699b73 100644
--- a/fusl/src/locale/uselocale.c
+++ b/fusl/src/locale/uselocale.c
@@ -2,15 +2,15 @@
 #include "pthread_impl.h"
 #include "libc.h"
 
-locale_t __uselocale(locale_t new)
-{
-	pthread_t self = __pthread_self();
-	locale_t old = self->locale;
-	locale_t global = &libc.global_locale;
+locale_t __uselocale(locale_t new) {
+  pthread_t self = __pthread_self();
+  locale_t old = self->locale;
+  locale_t global = &libc.global_locale;
 
-	if (new) self->locale = new == LC_GLOBAL_LOCALE ? global : new;
+  if (new)
+    self->locale = new == LC_GLOBAL_LOCALE ? global : new;
 
-	return old == global ? LC_GLOBAL_LOCALE : old;
+  return old == global ? LC_GLOBAL_LOCALE : old;
 }
 
 weak_alias(__uselocale, uselocale);
diff --git a/fusl/src/locale/wcscoll.c b/fusl/src/locale/wcscoll.c
index 14bb8b9..b6f5453 100644
--- a/fusl/src/locale/wcscoll.c
+++ b/fusl/src/locale/wcscoll.c
@@ -4,14 +4,12 @@
 #include "libc.h"
 
 /* FIXME: stub */
-int __wcscoll_l(const wchar_t *l, const wchar_t *r, locale_t locale)
-{
-	return wcscmp(l, r);
+int __wcscoll_l(const wchar_t* l, const wchar_t* r, locale_t locale) {
+  return wcscmp(l, r);
 }
 
-int wcscoll(const wchar_t *l, const wchar_t *r)
-{
-	return __wcscoll_l(l, r, CURRENT_LOCALE);
+int wcscoll(const wchar_t* l, const wchar_t* r) {
+  return __wcscoll_l(l, r, CURRENT_LOCALE);
 }
 
 weak_alias(__wcscoll_l, wcscoll_l);
diff --git a/fusl/src/locale/wcsxfrm.c b/fusl/src/locale/wcsxfrm.c
index 0a0b776..7495c1f 100644
--- a/fusl/src/locale/wcsxfrm.c
+++ b/fusl/src/locale/wcsxfrm.c
@@ -4,21 +4,22 @@
 #include "libc.h"
 
 /* collate only by code points */
-size_t __wcsxfrm_l(wchar_t *restrict dest, const wchar_t *restrict src, size_t n, locale_t loc)
-{
-	size_t l = wcslen(src);
-	if (l < n) {
-		wmemcpy(dest, src, l+1);
-	} else if (n) {
-		wmemcpy(dest, src, n-1);
-		dest[n-1] = 0;
-	}
-	return l;
+size_t __wcsxfrm_l(wchar_t* restrict dest,
+                   const wchar_t* restrict src,
+                   size_t n,
+                   locale_t loc) {
+  size_t l = wcslen(src);
+  if (l < n) {
+    wmemcpy(dest, src, l + 1);
+  } else if (n) {
+    wmemcpy(dest, src, n - 1);
+    dest[n - 1] = 0;
+  }
+  return l;
 }
 
-size_t wcsxfrm(wchar_t *restrict dest, const wchar_t *restrict src, size_t n)
-{
-	return __wcsxfrm_l(dest, src, n, CURRENT_LOCALE);
+size_t wcsxfrm(wchar_t* restrict dest, const wchar_t* restrict src, size_t n) {
+  return __wcsxfrm_l(dest, src, n, CURRENT_LOCALE);
 }
 
 weak_alias(__wcsxfrm_l, wcsxfrm_l);
diff --git a/fusl/src/malloc/__brk.c b/fusl/src/malloc/__brk.c
index 4c9119b..a7bc918 100644
--- a/fusl/src/malloc/__brk.c
+++ b/fusl/src/malloc/__brk.c
@@ -1,7 +1,6 @@
 #include <stdint.h>
 #include "syscall.h"
 
-uintptr_t __brk(uintptr_t newbrk)
-{
-	return __syscall(SYS_brk, newbrk);
+uintptr_t __brk(uintptr_t newbrk) {
+  return __syscall(SYS_brk, newbrk);
 }
diff --git a/fusl/src/malloc/aligned_alloc.c b/fusl/src/malloc/aligned_alloc.c
index cc0a801..1832623 100644
--- a/fusl/src/malloc/aligned_alloc.c
+++ b/fusl/src/malloc/aligned_alloc.c
@@ -1,8 +1,7 @@
 #include <stdlib.h>
 
-void *__memalign(size_t, size_t);
+void* __memalign(size_t, size_t);
 
-void *aligned_alloc(size_t align, size_t len)
-{
-	return __memalign(align, len);
+void* aligned_alloc(size_t align, size_t len) {
+  return __memalign(align, len);
 }
diff --git a/fusl/src/malloc/calloc.c b/fusl/src/malloc/calloc.c
index 436c0b0..fc4c762 100644
--- a/fusl/src/malloc/calloc.c
+++ b/fusl/src/malloc/calloc.c
@@ -1,13 +1,12 @@
 #include <stdlib.h>
 #include <errno.h>
 
-void *__malloc0(size_t);
+void* __malloc0(size_t);
 
-void *calloc(size_t m, size_t n)
-{
-	if (n && m > (size_t)-1/n) {
-		errno = ENOMEM;
-		return 0;
-	}
-	return __malloc0(n * m);
+void* calloc(size_t m, size_t n) {
+  if (n && m > (size_t)-1 / n) {
+    errno = ENOMEM;
+    return 0;
+  }
+  return __malloc0(n * m);
 }
diff --git a/fusl/src/malloc/expand_heap.c b/fusl/src/malloc/expand_heap.c
index d8c0be7..61e7989 100644
--- a/fusl/src/malloc/expand_heap.c
+++ b/fusl/src/malloc/expand_heap.c
@@ -11,23 +11,24 @@
  * (the current stack). It is used to defend against
  * buggy brk implementations that can cross the stack. */
 
-static int traverses_stack_p(uintptr_t old, uintptr_t new)
-{
-	const uintptr_t len = 8<<20;
-	uintptr_t a, b;
+static int traverses_stack_p(uintptr_t old, uintptr_t new) {
+  const uintptr_t len = 8 << 20;
+  uintptr_t a, b;
 
-	b = (uintptr_t)libc.auxv;
-	a = b > len ? b-len : 0;
-	if (new>a && old<b) return 1;
+  b = (uintptr_t)libc.auxv;
+  a = b > len ? b - len : 0;
+  if (new > a && old < b)
+    return 1;
 
-	b = (uintptr_t)&b;
-	a = b > len ? b-len : 0;
-	if (new>a && old<b) return 1;
+  b = (uintptr_t)&b;
+  a = b > len ? b - len : 0;
+  if (new > a && old < b)
+    return 1;
 
-	return 0;
+  return 0;
 }
 
-void *__mmap(void *, size_t, int, int, int, off_t);
+void* __mmap(void*, size_t, int, int, int, off_t);
 
 /* Expand the heap in-place if brk can be used, or otherwise via mmap,
  * using an exponential lower bound on growth by mmap to make
@@ -37,36 +38,37 @@
  * and mmap minimum size rules. The caller is responsible for locking
  * to prevent concurrent calls. */
 
-void *__expand_heap(size_t *pn)
-{
-	static uintptr_t brk;
-	static unsigned mmap_step;
-	size_t n = *pn;
+void* __expand_heap(size_t* pn) {
+  static uintptr_t brk;
+  static unsigned mmap_step;
+  size_t n = *pn;
 
-	if (n > SIZE_MAX/2 - PAGE_SIZE) {
-		errno = ENOMEM;
-		return 0;
-	}
-	n += -n & PAGE_SIZE-1;
+  if (n > SIZE_MAX / 2 - PAGE_SIZE) {
+    errno = ENOMEM;
+    return 0;
+  }
+  n += -n & PAGE_SIZE - 1;
 
-	if (!brk) {
-		brk = __syscall(SYS_brk, 0);
-		brk += -brk & PAGE_SIZE-1;
-	}
+  if (!brk) {
+    brk = __syscall(SYS_brk, 0);
+    brk += -brk & PAGE_SIZE - 1;
+  }
 
-	if (n < SIZE_MAX-brk && !traverses_stack_p(brk, brk+n)
-	    && __syscall(SYS_brk, brk+n)==brk+n) {
-		*pn = n;
-		brk += n;
-		return (void *)(brk-n);
-	}
+  if (n < SIZE_MAX - brk && !traverses_stack_p(brk, brk + n) &&
+      __syscall(SYS_brk, brk + n) == brk + n) {
+    *pn = n;
+    brk += n;
+    return (void*)(brk - n);
+  }
 
-	size_t min = (size_t)PAGE_SIZE << mmap_step/2;
-	if (n < min) n = min;
-	void *area = __mmap(0, n, PROT_READ|PROT_WRITE,
-		MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
-	if (area == MAP_FAILED) return 0;
-	*pn = n;
-	mmap_step++;
-	return area;
+  size_t min = (size_t)PAGE_SIZE << mmap_step / 2;
+  if (n < min)
+    n = min;
+  void* area =
+      __mmap(0, n, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+  if (area == MAP_FAILED)
+    return 0;
+  *pn = n;
+  mmap_step++;
+  return area;
 }
diff --git a/fusl/src/malloc/lite_malloc.c b/fusl/src/malloc/lite_malloc.c
index a7e4a9f..6564351 100644
--- a/fusl/src/malloc/lite_malloc.c
+++ b/fusl/src/malloc/lite_malloc.c
@@ -6,44 +6,45 @@
 
 #define ALIGN 16
 
-void *__expand_heap(size_t *);
+void* __expand_heap(size_t*);
 
-static void *__simple_malloc(size_t n)
-{
-	static char *cur, *end;
-	static volatile int lock[2];
-	size_t align=1, pad;
-	void *p;
+static void* __simple_malloc(size_t n) {
+  static char *cur, *end;
+  static volatile int lock[2];
+  size_t align = 1, pad;
+  void* p;
 
-	if (!n) n++;
-	while (align<n && align<ALIGN)
-		align += align;
+  if (!n)
+    n++;
+  while (align < n && align < ALIGN)
+    align += align;
 
-	LOCK(lock);
+  LOCK(lock);
 
-	pad = -(uintptr_t)cur & align-1;
+  pad = -(uintptr_t)cur & align - 1;
 
-	if (n <= SIZE_MAX/2 + ALIGN) n += pad;
+  if (n <= SIZE_MAX / 2 + ALIGN)
+    n += pad;
 
-	if (n > end-cur) {
-		size_t m = n;
-		char *new = __expand_heap(&m);
-		if (!new) {
-			UNLOCK(lock);
-			return 0;
-		}
-		if (new != end) {
-			cur = new;
-			n -= pad;
-			pad = 0;
-		}
-		end = new + m;
-	}
+  if (n > end - cur) {
+    size_t m = n;
+    char* new = __expand_heap(&m);
+    if (!new) {
+      UNLOCK(lock);
+      return 0;
+    }
+    if (new != end) {
+      cur = new;
+      n -= pad;
+      pad = 0;
+    }
+    end = new + m;
+  }
 
-	p = cur + pad;
-	cur += n;
-	UNLOCK(lock);
-	return p;
+  p = cur + pad;
+  cur += n;
+  UNLOCK(lock);
+  return p;
 }
 
 weak_alias(__simple_malloc, malloc);
diff --git a/fusl/src/malloc/malloc.c b/fusl/src/malloc/malloc.c
index d87b998..ccf1f61 100644
--- a/fusl/src/malloc/malloc.c
+++ b/fusl/src/malloc/malloc.c
@@ -13,117 +13,124 @@
 #define inline inline __attribute__((always_inline))
 #endif
 
-void *__mmap(void *, size_t, int, int, int, off_t);
-int __munmap(void *, size_t);
-void *__mremap(void *, size_t, size_t, int, ...);
-int __madvise(void *, size_t, int);
+void* __mmap(void*, size_t, int, int, int, off_t);
+int __munmap(void*, size_t);
+void* __mremap(void*, size_t, size_t, int, ...);
+int __madvise(void*, size_t, int);
 
 struct chunk {
-	size_t psize, csize;
-	struct chunk *next, *prev;
+  size_t psize, csize;
+  struct chunk *next, *prev;
 };
 
 struct bin {
-	volatile int lock[2];
-	struct chunk *head;
-	struct chunk *tail;
+  volatile int lock[2];
+  struct chunk* head;
+  struct chunk* tail;
 };
 
 static struct {
-	volatile uint64_t binmap;
-	struct bin bins[64];
-	volatile int free_lock[2];
+  volatile uint64_t binmap;
+  struct bin bins[64];
+  volatile int free_lock[2];
 } mal;
 
-
-#define SIZE_ALIGN (4*sizeof(size_t))
+#define SIZE_ALIGN (4 * sizeof(size_t))
 #define SIZE_MASK (-SIZE_ALIGN)
-#define OVERHEAD (2*sizeof(size_t))
-#define MMAP_THRESHOLD (0x1c00*SIZE_ALIGN)
+#define OVERHEAD (2 * sizeof(size_t))
+#define MMAP_THRESHOLD (0x1c00 * SIZE_ALIGN)
 #define DONTCARE 16
 #define RECLAIM 163840
 
 #define CHUNK_SIZE(c) ((c)->csize & -2)
 #define CHUNK_PSIZE(c) ((c)->psize & -2)
-#define PREV_CHUNK(c) ((struct chunk *)((char *)(c) - CHUNK_PSIZE(c)))
-#define NEXT_CHUNK(c) ((struct chunk *)((char *)(c) + CHUNK_SIZE(c)))
-#define MEM_TO_CHUNK(p) (struct chunk *)((char *)(p) - OVERHEAD)
-#define CHUNK_TO_MEM(c) (void *)((char *)(c) + OVERHEAD)
+#define PREV_CHUNK(c) ((struct chunk*)((char*)(c)-CHUNK_PSIZE(c)))
+#define NEXT_CHUNK(c) ((struct chunk*)((char*)(c) + CHUNK_SIZE(c)))
+#define MEM_TO_CHUNK(p) (struct chunk*)((char*)(p)-OVERHEAD)
+#define CHUNK_TO_MEM(c) (void*)((char*)(c) + OVERHEAD)
 #define BIN_TO_CHUNK(i) (MEM_TO_CHUNK(&mal.bins[i].head))
 
-#define C_INUSE  ((size_t)1)
+#define C_INUSE ((size_t)1)
 
 #define IS_MMAPPED(c) !((c)->csize & (C_INUSE))
 
-
 /* Synchronization tools */
 
-static inline void lock(volatile int *lk)
-{
-	if (libc.threads_minus_1)
-		while(a_swap(lk, 1)) __wait(lk, lk+1, 1, 1);
+static inline void lock(volatile int* lk) {
+  if (libc.threads_minus_1)
+    while (a_swap(lk, 1))
+      __wait(lk, lk + 1, 1, 1);
 }
 
-static inline void unlock(volatile int *lk)
-{
-	if (lk[0]) {
-		a_store(lk, 0);
-		if (lk[1]) __wake(lk, 1, 1);
-	}
+static inline void unlock(volatile int* lk) {
+  if (lk[0]) {
+    a_store(lk, 0);
+    if (lk[1])
+      __wake(lk, 1, 1);
+  }
 }
 
-static inline void lock_bin(int i)
-{
-	lock(mal.bins[i].lock);
-	if (!mal.bins[i].head)
-		mal.bins[i].head = mal.bins[i].tail = BIN_TO_CHUNK(i);
+static inline void lock_bin(int i) {
+  lock(mal.bins[i].lock);
+  if (!mal.bins[i].head)
+    mal.bins[i].head = mal.bins[i].tail = BIN_TO_CHUNK(i);
 }
 
-static inline void unlock_bin(int i)
-{
-	unlock(mal.bins[i].lock);
+static inline void unlock_bin(int i) {
+  unlock(mal.bins[i].lock);
 }
 
-static int first_set(uint64_t x)
-{
+static int first_set(uint64_t x) {
 #if 1
-	return a_ctz_64(x);
+  return a_ctz_64(x);
 #else
-	static const char debruijn64[64] = {
-		0, 1, 2, 53, 3, 7, 54, 27, 4, 38, 41, 8, 34, 55, 48, 28,
-		62, 5, 39, 46, 44, 42, 22, 9, 24, 35, 59, 56, 49, 18, 29, 11,
-		63, 52, 6, 26, 37, 40, 33, 47, 61, 45, 43, 21, 23, 58, 17, 10,
-		51, 25, 36, 32, 60, 20, 57, 16, 50, 31, 19, 15, 30, 14, 13, 12
-	};
-	static const char debruijn32[32] = {
-		0, 1, 23, 2, 29, 24, 19, 3, 30, 27, 25, 11, 20, 8, 4, 13,
-		31, 22, 28, 18, 26, 10, 7, 12, 21, 17, 9, 6, 16, 5, 15, 14
-	};
-	if (sizeof(long) < 8) {
-		uint32_t y = x;
-		if (!y) {
-			y = x>>32;
-			return 32 + debruijn32[(y&-y)*0x076be629 >> 27];
-		}
-		return debruijn32[(y&-y)*0x076be629 >> 27];
-	}
-	return debruijn64[(x&-x)*0x022fdd63cc95386dull >> 58];
+  static const char debruijn64[64] = {
+      0,  1,  2,  53, 3,  7,  54, 27, 4,  38, 41, 8,  34, 55, 48, 28,
+      62, 5,  39, 46, 44, 42, 22, 9,  24, 35, 59, 56, 49, 18, 29, 11,
+      63, 52, 6,  26, 37, 40, 33, 47, 61, 45, 43, 21, 23, 58, 17, 10,
+      51, 25, 36, 32, 60, 20, 57, 16, 50, 31, 19, 15, 30, 14, 13, 12};
+  static const char debruijn32[32] = {
+      0,  1,  23, 2,  29, 24, 19, 3,  30, 27, 25, 11, 20, 8, 4,  13,
+      31, 22, 28, 18, 26, 10, 7,  12, 21, 17, 9,  6,  16, 5, 15, 14};
+  if (sizeof(long) < 8) {
+    uint32_t y = x;
+    if (!y) {
+      y = x >> 32;
+      return 32 + debruijn32[(y & -y) * 0x076be629 >> 27];
+    }
+    return debruijn32[(y & -y) * 0x076be629 >> 27];
+  }
+  return debruijn64[(x & -x) * 0x022fdd63cc95386dull >> 58];
 #endif
 }
 
-static int bin_index(size_t x)
-{
-	x = x / SIZE_ALIGN - 1;
-	if (x <= 32) return x;
-	if (x > 0x1c00) return 63;
-	return ((union { float v; uint32_t r; }){(int)x}.r>>21) - 496;
+static int bin_index(size_t x) {
+  x = x / SIZE_ALIGN - 1;
+  if (x <= 32)
+    return x;
+  if (x > 0x1c00)
+    return 63;
+  return ((union {
+            float v;
+            uint32_t r;
+          }){(int)x}
+              .r >>
+          21) -
+         496;
 }
 
-static int bin_index_up(size_t x)
-{
-	x = x / SIZE_ALIGN - 1;
-	if (x <= 32) return x;
-	return (((union { float v; uint32_t r; }){(int)x}.r+0x1fffff)>>21) - 496;
+static int bin_index_up(size_t x) {
+  x = x / SIZE_ALIGN - 1;
+  if (x <= 32)
+    return x;
+  return (((union {
+             float v;
+             uint32_t r;
+           }){(int)x}
+               .r +
+           0x1fffff) >>
+          21) -
+         496;
 }
 
 #if 0
@@ -147,375 +154,382 @@
 }
 #endif
 
-void *__expand_heap(size_t *);
+void* __expand_heap(size_t*);
 
-static struct chunk *expand_heap(size_t n)
-{
-	static int heap_lock[2];
-	static void *end;
-	void *p;
-	struct chunk *w;
+static struct chunk* expand_heap(size_t n) {
+  static int heap_lock[2];
+  static void* end;
+  void* p;
+  struct chunk* w;
 
-	/* The argument n already accounts for the caller's chunk
-	 * overhead needs, but if the heap can't be extended in-place,
-	 * we need room for an extra zero-sized sentinel chunk. */
-	n += SIZE_ALIGN;
+  /* The argument n already accounts for the caller's chunk
+   * overhead needs, but if the heap can't be extended in-place,
+   * we need room for an extra zero-sized sentinel chunk. */
+  n += SIZE_ALIGN;
 
-	lock(heap_lock);
+  lock(heap_lock);
 
-	p = __expand_heap(&n);
-	if (!p) {
-		unlock(heap_lock);
-		return 0;
-	}
+  p = __expand_heap(&n);
+  if (!p) {
+    unlock(heap_lock);
+    return 0;
+  }
 
-	/* If not just expanding existing space, we need to make a
-	 * new sentinel chunk below the allocated space. */
-	if (p != end) {
-		/* Valid/safe because of the prologue increment. */
-		n -= SIZE_ALIGN;
-		p = (char *)p + SIZE_ALIGN;
-		w = MEM_TO_CHUNK(p);
-		w->psize = 0 | C_INUSE;
-	}
+  /* If not just expanding existing space, we need to make a
+   * new sentinel chunk below the allocated space. */
+  if (p != end) {
+    /* Valid/safe because of the prologue increment. */
+    n -= SIZE_ALIGN;
+    p = (char*)p + SIZE_ALIGN;
+    w = MEM_TO_CHUNK(p);
+    w->psize = 0 | C_INUSE;
+  }
 
-	/* Record new heap end and fill in footer. */
-	end = (char *)p + n;
-	w = MEM_TO_CHUNK(end);
-	w->psize = n | C_INUSE;
-	w->csize = 0 | C_INUSE;
+  /* Record new heap end and fill in footer. */
+  end = (char*)p + n;
+  w = MEM_TO_CHUNK(end);
+  w->psize = n | C_INUSE;
+  w->csize = 0 | C_INUSE;
 
-	/* Fill in header, which may be new or may be replacing a
-	 * zero-size sentinel header at the old end-of-heap. */
-	w = MEM_TO_CHUNK(p);
-	w->csize = n | C_INUSE;
+  /* Fill in header, which may be new or may be replacing a
+   * zero-size sentinel header at the old end-of-heap. */
+  w = MEM_TO_CHUNK(p);
+  w->csize = n | C_INUSE;
 
-	unlock(heap_lock);
+  unlock(heap_lock);
 
-	return w;
+  return w;
 }
 
-static int adjust_size(size_t *n)
-{
-	/* Result of pointer difference must fit in ptrdiff_t. */
-	if (*n-1 > PTRDIFF_MAX - SIZE_ALIGN - PAGE_SIZE) {
-		if (*n) {
-			errno = ENOMEM;
-			return -1;
-		} else {
-			*n = SIZE_ALIGN;
-			return 0;
-		}
-	}
-	*n = (*n + OVERHEAD + SIZE_ALIGN - 1) & SIZE_MASK;
-	return 0;
+static int adjust_size(size_t* n) {
+  /* Result of pointer difference must fit in ptrdiff_t. */
+  if (*n - 1 > PTRDIFF_MAX - SIZE_ALIGN - PAGE_SIZE) {
+    if (*n) {
+      errno = ENOMEM;
+      return -1;
+    } else {
+      *n = SIZE_ALIGN;
+      return 0;
+    }
+  }
+  *n = (*n + OVERHEAD + SIZE_ALIGN - 1) & SIZE_MASK;
+  return 0;
 }
 
-static void unbin(struct chunk *c, int i)
-{
-	if (c->prev == c->next)
-		a_and_64(&mal.binmap, ~(1ULL<<i));
-	c->prev->next = c->next;
-	c->next->prev = c->prev;
-	c->csize |= C_INUSE;
-	NEXT_CHUNK(c)->psize |= C_INUSE;
+static void unbin(struct chunk* c, int i) {
+  if (c->prev == c->next)
+    a_and_64(&mal.binmap, ~(1ULL << i));
+  c->prev->next = c->next;
+  c->next->prev = c->prev;
+  c->csize |= C_INUSE;
+  NEXT_CHUNK(c)->psize |= C_INUSE;
 }
 
-static int alloc_fwd(struct chunk *c)
-{
-	int i;
-	size_t k;
-	while (!((k=c->csize) & C_INUSE)) {
-		i = bin_index(k);
-		lock_bin(i);
-		if (c->csize == k) {
-			unbin(c, i);
-			unlock_bin(i);
-			return 1;
-		}
-		unlock_bin(i);
-	}
-	return 0;
+static int alloc_fwd(struct chunk* c) {
+  int i;
+  size_t k;
+  while (!((k = c->csize) & C_INUSE)) {
+    i = bin_index(k);
+    lock_bin(i);
+    if (c->csize == k) {
+      unbin(c, i);
+      unlock_bin(i);
+      return 1;
+    }
+    unlock_bin(i);
+  }
+  return 0;
 }
 
-static int alloc_rev(struct chunk *c)
-{
-	int i;
-	size_t k;
-	while (!((k=c->psize) & C_INUSE)) {
-		i = bin_index(k);
-		lock_bin(i);
-		if (c->psize == k) {
-			unbin(PREV_CHUNK(c), i);
-			unlock_bin(i);
-			return 1;
-		}
-		unlock_bin(i);
-	}
-	return 0;
+static int alloc_rev(struct chunk* c) {
+  int i;
+  size_t k;
+  while (!((k = c->psize) & C_INUSE)) {
+    i = bin_index(k);
+    lock_bin(i);
+    if (c->psize == k) {
+      unbin(PREV_CHUNK(c), i);
+      unlock_bin(i);
+      return 1;
+    }
+    unlock_bin(i);
+  }
+  return 0;
 }
 
-
 /* pretrim - trims a chunk _prior_ to removing it from its bin.
  * Must be called with i as the ideal bin for size n, j the bin
  * for the _free_ chunk self, and bin j locked. */
-static int pretrim(struct chunk *self, size_t n, int i, int j)
-{
-	size_t n1;
-	struct chunk *next, *split;
+static int pretrim(struct chunk* self, size_t n, int i, int j) {
+  size_t n1;
+  struct chunk *next, *split;
 
-	/* We cannot pretrim if it would require re-binning. */
-	if (j < 40) return 0;
-	if (j < i+3) {
-		if (j != 63) return 0;
-		n1 = CHUNK_SIZE(self);
-		if (n1-n <= MMAP_THRESHOLD) return 0;
-	} else {
-		n1 = CHUNK_SIZE(self);
-	}
-	if (bin_index(n1-n) != j) return 0;
+  /* We cannot pretrim if it would require re-binning. */
+  if (j < 40)
+    return 0;
+  if (j < i + 3) {
+    if (j != 63)
+      return 0;
+    n1 = CHUNK_SIZE(self);
+    if (n1 - n <= MMAP_THRESHOLD)
+      return 0;
+  } else {
+    n1 = CHUNK_SIZE(self);
+  }
+  if (bin_index(n1 - n) != j)
+    return 0;
 
-	next = NEXT_CHUNK(self);
-	split = (void *)((char *)self + n);
+  next = NEXT_CHUNK(self);
+  split = (void*)((char*)self + n);
 
-	split->prev = self->prev;
-	split->next = self->next;
-	split->prev->next = split;
-	split->next->prev = split;
-	split->psize = n | C_INUSE;
-	split->csize = n1-n;
-	next->psize = n1-n;
-	self->csize = n | C_INUSE;
-	return 1;
+  split->prev = self->prev;
+  split->next = self->next;
+  split->prev->next = split;
+  split->next->prev = split;
+  split->psize = n | C_INUSE;
+  split->csize = n1 - n;
+  next->psize = n1 - n;
+  self->csize = n | C_INUSE;
+  return 1;
 }
 
-static void trim(struct chunk *self, size_t n)
-{
-	size_t n1 = CHUNK_SIZE(self);
-	struct chunk *next, *split;
+static void trim(struct chunk* self, size_t n) {
+  size_t n1 = CHUNK_SIZE(self);
+  struct chunk *next, *split;
 
-	if (n >= n1 - DONTCARE) return;
+  if (n >= n1 - DONTCARE)
+    return;
 
-	next = NEXT_CHUNK(self);
-	split = (void *)((char *)self + n);
+  next = NEXT_CHUNK(self);
+  split = (void*)((char*)self + n);
 
-	split->psize = n | C_INUSE;
-	split->csize = n1-n | C_INUSE;
-	next->psize = n1-n | C_INUSE;
-	self->csize = n | C_INUSE;
+  split->psize = n | C_INUSE;
+  split->csize = n1 - n | C_INUSE;
+  next->psize = n1 - n | C_INUSE;
+  self->csize = n | C_INUSE;
 
-	free(CHUNK_TO_MEM(split));
+  free(CHUNK_TO_MEM(split));
 }
 
-void *malloc(size_t n)
-{
-	struct chunk *c;
-	int i, j;
+void* malloc(size_t n) {
+  struct chunk* c;
+  int i, j;
 
-	if (adjust_size(&n) < 0) return 0;
+  if (adjust_size(&n) < 0)
+    return 0;
 
-	if (n > MMAP_THRESHOLD) {
-		size_t len = n + OVERHEAD + PAGE_SIZE - 1 & -PAGE_SIZE;
-		char *base = __mmap(0, len, PROT_READ|PROT_WRITE,
-			MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
-		if (base == (void *)-1) return 0;
-		c = (void *)(base + SIZE_ALIGN - OVERHEAD);
-		c->csize = len - (SIZE_ALIGN - OVERHEAD);
-		c->psize = SIZE_ALIGN - OVERHEAD;
-		return CHUNK_TO_MEM(c);
-	}
+  if (n > MMAP_THRESHOLD) {
+    size_t len = n + OVERHEAD + PAGE_SIZE - 1 & -PAGE_SIZE;
+    char* base = __mmap(0, len, PROT_READ | PROT_WRITE,
+                        MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+    if (base == (void*)-1)
+      return 0;
+    c = (void*)(base + SIZE_ALIGN - OVERHEAD);
+    c->csize = len - (SIZE_ALIGN - OVERHEAD);
+    c->psize = SIZE_ALIGN - OVERHEAD;
+    return CHUNK_TO_MEM(c);
+  }
 
-	i = bin_index_up(n);
-	for (;;) {
-		uint64_t mask = mal.binmap & -(1ULL<<i);
-		if (!mask) {
-			c = expand_heap(n);
-			if (!c) return 0;
-			if (alloc_rev(c)) {
-				struct chunk *x = c;
-				c = PREV_CHUNK(c);
-				NEXT_CHUNK(x)->psize = c->csize =
-					x->csize + CHUNK_SIZE(c);
-			}
-			break;
-		}
-		j = first_set(mask);
-		lock_bin(j);
-		c = mal.bins[j].head;
-		if (c != BIN_TO_CHUNK(j)) {
-			if (!pretrim(c, n, i, j)) unbin(c, j);
-			unlock_bin(j);
-			break;
-		}
-		unlock_bin(j);
-	}
+  i = bin_index_up(n);
+  for (;;) {
+    uint64_t mask = mal.binmap & -(1ULL << i);
+    if (!mask) {
+      c = expand_heap(n);
+      if (!c)
+        return 0;
+      if (alloc_rev(c)) {
+        struct chunk* x = c;
+        c = PREV_CHUNK(c);
+        NEXT_CHUNK(x)->psize = c->csize = x->csize + CHUNK_SIZE(c);
+      }
+      break;
+    }
+    j = first_set(mask);
+    lock_bin(j);
+    c = mal.bins[j].head;
+    if (c != BIN_TO_CHUNK(j)) {
+      if (!pretrim(c, n, i, j))
+        unbin(c, j);
+      unlock_bin(j);
+      break;
+    }
+    unlock_bin(j);
+  }
 
-	/* Now patch up in case we over-allocated */
-	trim(c, n);
+  /* Now patch up in case we over-allocated */
+  trim(c, n);
 
-	return CHUNK_TO_MEM(c);
+  return CHUNK_TO_MEM(c);
 }
 
-void *__malloc0(size_t n)
-{
-	void *p = malloc(n);
-	if (p && !IS_MMAPPED(MEM_TO_CHUNK(p))) {
-		size_t *z;
-		n = (n + sizeof *z - 1)/sizeof *z;
-		for (z=p; n; n--, z++) if (*z) *z=0;
-	}
-	return p;
+void* __malloc0(size_t n) {
+  void* p = malloc(n);
+  if (p && !IS_MMAPPED(MEM_TO_CHUNK(p))) {
+    size_t* z;
+    n = (n + sizeof *z - 1) / sizeof *z;
+    for (z = p; n; n--, z++)
+      if (*z)
+        *z = 0;
+  }
+  return p;
 }
 
-void *realloc(void *p, size_t n)
-{
-	struct chunk *self, *next;
-	size_t n0, n1;
-	void *new;
+void* realloc(void* p, size_t n) {
+  struct chunk *self, *next;
+  size_t n0, n1;
+  void* new;
 
-	if (!p) return malloc(n);
+  if (!p)
+    return malloc(n);
 
-	if (adjust_size(&n) < 0) return 0;
+  if (adjust_size(&n) < 0)
+    return 0;
 
-	self = MEM_TO_CHUNK(p);
-	n1 = n0 = CHUNK_SIZE(self);
+  self = MEM_TO_CHUNK(p);
+  n1 = n0 = CHUNK_SIZE(self);
 
-	if (IS_MMAPPED(self)) {
-		size_t extra = self->psize;
-		char *base = (char *)self - extra;
-		size_t oldlen = n0 + extra;
-		size_t newlen = n + extra;
-		/* Crash on realloc of freed chunk */
-		if (extra & 1) a_crash();
-		if (newlen < PAGE_SIZE && (new = malloc(n))) {
-			memcpy(new, p, n-OVERHEAD);
-			free(p);
-			return new;
-		}
-		newlen = (newlen + PAGE_SIZE-1) & -PAGE_SIZE;
-		if (oldlen == newlen) return p;
-		base = __mremap(base, oldlen, newlen, MREMAP_MAYMOVE);
-		if (base == (void *)-1)
-			return newlen < oldlen ? p : 0;
-		self = (void *)(base + extra);
-		self->csize = newlen - extra;
-		return CHUNK_TO_MEM(self);
-	}
+  if (IS_MMAPPED(self)) {
+    size_t extra = self->psize;
+    char* base = (char*)self - extra;
+    size_t oldlen = n0 + extra;
+    size_t newlen = n + extra;
+    /* Crash on realloc of freed chunk */
+    if (extra & 1)
+      a_crash();
+    if (newlen < PAGE_SIZE && (new = malloc(n))) {
+      memcpy(new, p, n - OVERHEAD);
+      free(p);
+      return new;
+    }
+    newlen = (newlen + PAGE_SIZE - 1) & -PAGE_SIZE;
+    if (oldlen == newlen)
+      return p;
+    base = __mremap(base, oldlen, newlen, MREMAP_MAYMOVE);
+    if (base == (void*)-1)
+      return newlen < oldlen ? p : 0;
+    self = (void*)(base + extra);
+    self->csize = newlen - extra;
+    return CHUNK_TO_MEM(self);
+  }
 
-	next = NEXT_CHUNK(self);
+  next = NEXT_CHUNK(self);
 
-	/* Crash on corrupted footer (likely from buffer overflow) */
-	if (next->psize != self->csize) a_crash();
+  /* Crash on corrupted footer (likely from buffer overflow) */
+  if (next->psize != self->csize)
+    a_crash();
 
-	/* Merge adjacent chunks if we need more space. This is not
-	 * a waste of time even if we fail to get enough space, because our
-	 * subsequent call to free would otherwise have to do the merge. */
-	if (n > n1 && alloc_fwd(next)) {
-		n1 += CHUNK_SIZE(next);
-		next = NEXT_CHUNK(next);
-	}
-	/* FIXME: find what's wrong here and reenable it..? */
-	if (0 && n > n1 && alloc_rev(self)) {
-		self = PREV_CHUNK(self);
-		n1 += CHUNK_SIZE(self);
-	}
-	self->csize = n1 | C_INUSE;
-	next->psize = n1 | C_INUSE;
+  /* Merge adjacent chunks if we need more space. This is not
+   * a waste of time even if we fail to get enough space, because our
+   * subsequent call to free would otherwise have to do the merge. */
+  if (n > n1 && alloc_fwd(next)) {
+    n1 += CHUNK_SIZE(next);
+    next = NEXT_CHUNK(next);
+  }
+  /* FIXME: find what's wrong here and reenable it..? */
+  if (0 && n > n1 && alloc_rev(self)) {
+    self = PREV_CHUNK(self);
+    n1 += CHUNK_SIZE(self);
+  }
+  self->csize = n1 | C_INUSE;
+  next->psize = n1 | C_INUSE;
 
-	/* If we got enough space, split off the excess and return */
-	if (n <= n1) {
-		//memmove(CHUNK_TO_MEM(self), p, n0-OVERHEAD);
-		trim(self, n);
-		return CHUNK_TO_MEM(self);
-	}
+  /* If we got enough space, split off the excess and return */
+  if (n <= n1) {
+    // memmove(CHUNK_TO_MEM(self), p, n0-OVERHEAD);
+    trim(self, n);
+    return CHUNK_TO_MEM(self);
+  }
 
-	/* As a last resort, allocate a new chunk and copy to it. */
-	new = malloc(n-OVERHEAD);
-	if (!new) return 0;
-	memcpy(new, p, n0-OVERHEAD);
-	free(CHUNK_TO_MEM(self));
-	return new;
+  /* As a last resort, allocate a new chunk and copy to it. */
+  new = malloc(n - OVERHEAD);
+  if (!new)
+    return 0;
+  memcpy(new, p, n0 - OVERHEAD);
+  free(CHUNK_TO_MEM(self));
+  return new;
 }
 
-void free(void *p)
-{
-	struct chunk *self = MEM_TO_CHUNK(p);
-	struct chunk *next;
-	size_t final_size, new_size, size;
-	int reclaim=0;
-	int i;
+void free(void* p) {
+  struct chunk* self = MEM_TO_CHUNK(p);
+  struct chunk* next;
+  size_t final_size, new_size, size;
+  int reclaim = 0;
+  int i;
 
-	if (!p) return;
+  if (!p)
+    return;
 
-	if (IS_MMAPPED(self)) {
-		size_t extra = self->psize;
-		char *base = (char *)self - extra;
-		size_t len = CHUNK_SIZE(self) + extra;
-		/* Crash on double free */
-		if (extra & 1) a_crash();
-		__munmap(base, len);
-		return;
-	}
+  if (IS_MMAPPED(self)) {
+    size_t extra = self->psize;
+    char* base = (char*)self - extra;
+    size_t len = CHUNK_SIZE(self) + extra;
+    /* Crash on double free */
+    if (extra & 1)
+      a_crash();
+    __munmap(base, len);
+    return;
+  }
 
-	final_size = new_size = CHUNK_SIZE(self);
-	next = NEXT_CHUNK(self);
+  final_size = new_size = CHUNK_SIZE(self);
+  next = NEXT_CHUNK(self);
 
-	/* Crash on corrupted footer (likely from buffer overflow) */
-	if (next->psize != self->csize) a_crash();
+  /* Crash on corrupted footer (likely from buffer overflow) */
+  if (next->psize != self->csize)
+    a_crash();
 
-	for (;;) {
-		if (self->psize & next->csize & C_INUSE) {
-			self->csize = final_size | C_INUSE;
-			next->psize = final_size | C_INUSE;
-			i = bin_index(final_size);
-			lock_bin(i);
-			lock(mal.free_lock);
-			if (self->psize & next->csize & C_INUSE)
-				break;
-			unlock(mal.free_lock);
-			unlock_bin(i);
-		}
+  for (;;) {
+    if (self->psize & next->csize & C_INUSE) {
+      self->csize = final_size | C_INUSE;
+      next->psize = final_size | C_INUSE;
+      i = bin_index(final_size);
+      lock_bin(i);
+      lock(mal.free_lock);
+      if (self->psize & next->csize & C_INUSE)
+        break;
+      unlock(mal.free_lock);
+      unlock_bin(i);
+    }
 
-		if (alloc_rev(self)) {
-			self = PREV_CHUNK(self);
-			size = CHUNK_SIZE(self);
-			final_size += size;
-			if (new_size+size > RECLAIM && (new_size+size^size) > size)
-				reclaim = 1;
-		}
+    if (alloc_rev(self)) {
+      self = PREV_CHUNK(self);
+      size = CHUNK_SIZE(self);
+      final_size += size;
+      if (new_size + size > RECLAIM && (new_size + size ^ size) > size)
+        reclaim = 1;
+    }
 
-		if (alloc_fwd(next)) {
-			size = CHUNK_SIZE(next);
-			final_size += size;
-			if (new_size+size > RECLAIM && (new_size+size^size) > size)
-				reclaim = 1;
-			next = NEXT_CHUNK(next);
-		}
-	}
+    if (alloc_fwd(next)) {
+      size = CHUNK_SIZE(next);
+      final_size += size;
+      if (new_size + size > RECLAIM && (new_size + size ^ size) > size)
+        reclaim = 1;
+      next = NEXT_CHUNK(next);
+    }
+  }
 
-	if (!(mal.binmap & 1ULL<<i))
-		a_or_64(&mal.binmap, 1ULL<<i);
+  if (!(mal.binmap & 1ULL << i))
+    a_or_64(&mal.binmap, 1ULL << i);
 
-	self->csize = final_size;
-	next->psize = final_size;
-	unlock(mal.free_lock);
+  self->csize = final_size;
+  next->psize = final_size;
+  unlock(mal.free_lock);
 
-	self->next = BIN_TO_CHUNK(i);
-	self->prev = mal.bins[i].tail;
-	self->next->prev = self;
-	self->prev->next = self;
+  self->next = BIN_TO_CHUNK(i);
+  self->prev = mal.bins[i].tail;
+  self->next->prev = self;
+  self->prev->next = self;
 
-	/* Replace middle of large chunks with fresh zero pages */
-	if (reclaim) {
-		uintptr_t a = (uintptr_t)self + SIZE_ALIGN+PAGE_SIZE-1 & -PAGE_SIZE;
-		uintptr_t b = (uintptr_t)next - SIZE_ALIGN & -PAGE_SIZE;
+  /* Replace middle of large chunks with fresh zero pages */
+  if (reclaim) {
+    uintptr_t a = (uintptr_t)self + SIZE_ALIGN + PAGE_SIZE - 1 & -PAGE_SIZE;
+    uintptr_t b = (uintptr_t)next - SIZE_ALIGN & -PAGE_SIZE;
 #if 1
-		__madvise((void *)a, b-a, MADV_DONTNEED);
+    __madvise((void*)a, b - a, MADV_DONTNEED);
 #else
-		__mmap((void *)a, b-a, PROT_READ|PROT_WRITE,
-			MAP_PRIVATE|MAP_ANONYMOUS|MAP_FIXED, -1, 0);
+    __mmap((void*)a, b - a, PROT_READ | PROT_WRITE,
+           MAP_PRIVATE | MAP_ANONYMOUS | MAP_FIXED, -1, 0);
 #endif
-	}
+  }
 
-	unlock_bin(i);
+  unlock_bin(i);
 }
diff --git a/fusl/src/malloc/malloc_usable_size.c b/fusl/src/malloc/malloc_usable_size.c
index 6743ea7..bc5bf21 100644
--- a/fusl/src/malloc/malloc_usable_size.c
+++ b/fusl/src/malloc/malloc_usable_size.c
@@ -1,17 +1,16 @@
 #include <malloc.h>
 
-void *(*const __realloc_dep)(void *, size_t) = realloc;
+void* (*const __realloc_dep)(void*, size_t) = realloc;
 
 struct chunk {
-	size_t psize, csize;
-	struct chunk *next, *prev;
+  size_t psize, csize;
+  struct chunk *next, *prev;
 };
 
-#define OVERHEAD (2*sizeof(size_t))
+#define OVERHEAD (2 * sizeof(size_t))
 #define CHUNK_SIZE(c) ((c)->csize & -2)
-#define MEM_TO_CHUNK(p) (struct chunk *)((char *)(p) - OVERHEAD)
+#define MEM_TO_CHUNK(p) (struct chunk*)((char*)(p)-OVERHEAD)
 
-size_t malloc_usable_size(void *p)
-{
-	return p ? CHUNK_SIZE(MEM_TO_CHUNK(p)) - OVERHEAD : 0;
+size_t malloc_usable_size(void* p) {
+  return p ? CHUNK_SIZE(MEM_TO_CHUNK(p)) - OVERHEAD : 0;
 }
diff --git a/fusl/src/malloc/memalign.c b/fusl/src/malloc/memalign.c
index 112dd9d..2444706 100644
--- a/fusl/src/malloc/memalign.c
+++ b/fusl/src/malloc/memalign.c
@@ -7,51 +7,51 @@
  * systems, but it's only guaranteed to work with the native implementation
  * used in this library. */
 
-void *__memalign(size_t align, size_t len)
-{
-	unsigned char *mem, *new, *end;
-	size_t header, footer;
+void* __memalign(size_t align, size_t len) {
+  unsigned char *mem, *new, *end;
+  size_t header, footer;
 
-	if ((align & -align) != align) {
-		errno = EINVAL;
-		return NULL;
-	}
+  if ((align & -align) != align) {
+    errno = EINVAL;
+    return NULL;
+  }
 
-	if (len > SIZE_MAX - align) {
-		errno = ENOMEM;
-		return NULL;
-	}
+  if (len > SIZE_MAX - align) {
+    errno = ENOMEM;
+    return NULL;
+  }
 
-	if (align <= 4*sizeof(size_t)) {
-		if (!(mem = malloc(len)))
-			return NULL;
-		return mem;
-	}
+  if (align <= 4 * sizeof(size_t)) {
+    if (!(mem = malloc(len)))
+      return NULL;
+    return mem;
+  }
 
-	if (!(mem = malloc(len + align-1)))
-		return NULL;
+  if (!(mem = malloc(len + align - 1)))
+    return NULL;
 
-	new = (void *)((uintptr_t)mem + align-1 & -align);
-	if (new == mem) return mem;
+  new = (void*)((uintptr_t)mem + align - 1 & -align);
+  if (new == mem)
+    return mem;
 
-	header = ((size_t *)mem)[-1];
+  header = ((size_t*)mem)[-1];
 
-	if (!(header & 7)) {
-		((size_t *)new)[-2] = ((size_t *)mem)[-2] + (new-mem);
-		((size_t *)new)[-1] = ((size_t *)mem)[-1] - (new-mem);
-		return new;
-	}
+  if (!(header & 7)) {
+    ((size_t*)new)[-2] = ((size_t*)mem)[-2] + (new - mem);
+    ((size_t*)new)[-1] = ((size_t*)mem)[-1] - (new - mem);
+    return new;
+  }
 
-	end = mem + (header & -8);
-	footer = ((size_t *)end)[-2];
+  end = mem + (header & -8);
+  footer = ((size_t*)end)[-2];
 
-	((size_t *)mem)[-1] = (header&7) | new-mem;
-	((size_t *)new)[-2] = (footer&7) | new-mem;
-	((size_t *)new)[-1] = (header&7) | end-new;
-	((size_t *)end)[-2] = (footer&7) | end-new;
+  ((size_t*)mem)[-1] = (header & 7) | new - mem;
+  ((size_t*)new)[-2] = (footer & 7) | new - mem;
+  ((size_t*)new)[-1] = (header & 7) | end - new;
+  ((size_t*)end)[-2] = (footer & 7) | end - new;
 
-	free(mem);
-	return new;
+  free(mem);
+  return new;
 }
 
 weak_alias(__memalign, memalign);
diff --git a/fusl/src/malloc/posix_memalign.c b/fusl/src/malloc/posix_memalign.c
index cf67db6..f49e2e2 100644
--- a/fusl/src/malloc/posix_memalign.c
+++ b/fusl/src/malloc/posix_memalign.c
@@ -1,13 +1,14 @@
 #include <stdlib.h>
 #include <errno.h>
 
-void *__memalign(size_t, size_t);
+void* __memalign(size_t, size_t);
 
-int posix_memalign(void **res, size_t align, size_t len)
-{
-	if (align < sizeof(void *)) return EINVAL;
-	void *mem = __memalign(align, len);
-	if (!mem) return errno;
-	*res = mem;
-	return 0;
+int posix_memalign(void** res, size_t align, size_t len) {
+  if (align < sizeof(void*))
+    return EINVAL;
+  void* mem = __memalign(align, len);
+  if (!mem)
+    return errno;
+  *res = mem;
+  return 0;
 }
diff --git a/fusl/src/math/__cos.c b/fusl/src/math/__cos.c
index 46cefb3..f7a1af3 100644
--- a/fusl/src/math/__cos.c
+++ b/fusl/src/math/__cos.c
@@ -50,22 +50,21 @@
 
 #include "libm.h"
 
-static const double
-C1  =  4.16666666666666019037e-02, /* 0x3FA55555, 0x5555554C */
-C2  = -1.38888888888741095749e-03, /* 0xBF56C16C, 0x16C15177 */
-C3  =  2.48015872894767294178e-05, /* 0x3EFA01A0, 0x19CB1590 */
-C4  = -2.75573143513906633035e-07, /* 0xBE927E4F, 0x809C52AD */
-C5  =  2.08757232129817482790e-09, /* 0x3E21EE9E, 0xBDB4B1C4 */
-C6  = -1.13596475577881948265e-11; /* 0xBDA8FAE9, 0xBE8838D4 */
+static const double C1 =
+                        4.16666666666666019037e-02, /* 0x3FA55555, 0x5555554C */
+    C2 = -1.38888888888741095749e-03,               /* 0xBF56C16C, 0x16C15177 */
+    C3 = 2.48015872894767294178e-05,                /* 0x3EFA01A0, 0x19CB1590 */
+    C4 = -2.75573143513906633035e-07,               /* 0xBE927E4F, 0x809C52AD */
+    C5 = 2.08757232129817482790e-09,                /* 0x3E21EE9E, 0xBDB4B1C4 */
+    C6 = -1.13596475577881948265e-11;               /* 0xBDA8FAE9, 0xBE8838D4 */
 
-double __cos(double x, double y)
-{
-	double_t hz,z,r,w;
+double __cos(double x, double y) {
+  double_t hz, z, r, w;
 
-	z  = x*x;
-	w  = z*z;
-	r  = z*(C1+z*(C2+z*C3)) + w*w*(C4+z*(C5+z*C6));
-	hz = 0.5*z;
-	w  = 1.0-hz;
-	return w + (((1.0-w)-hz) + (z*r-x*y));
+  z = x * x;
+  w = z * z;
+  r = z * (C1 + z * (C2 + z * C3)) + w * w * (C4 + z * (C5 + z * C6));
+  hz = 0.5 * z;
+  w = 1.0 - hz;
+  return w + (((1.0 - w) - hz) + (z * r - x * y));
 }
diff --git a/fusl/src/math/__cosdf.c b/fusl/src/math/__cosdf.c
index 2124989..7a97e76 100644
--- a/fusl/src/math/__cosdf.c
+++ b/fusl/src/math/__cosdf.c
@@ -17,19 +17,17 @@
 #include "libm.h"
 
 /* |cos(x) - c(x)| < 2**-34.1 (~[-5.37e-11, 5.295e-11]). */
-static const double
-C0  = -0x1ffffffd0c5e81.0p-54, /* -0.499999997251031003120 */
-C1  =  0x155553e1053a42.0p-57, /*  0.0416666233237390631894 */
-C2  = -0x16c087e80f1e27.0p-62, /* -0.00138867637746099294692 */
-C3  =  0x199342e0ee5069.0p-68; /*  0.0000243904487962774090654 */
+static const double C0 = -0x1ffffffd0c5e81.0p-54, /* -0.499999997251031003120 */
+    C1 = 0x155553e1053a42.0p-57,  /*  0.0416666233237390631894 */
+    C2 = -0x16c087e80f1e27.0p-62, /* -0.00138867637746099294692 */
+    C3 = 0x199342e0ee5069.0p-68;  /*  0.0000243904487962774090654 */
 
-float __cosdf(double x)
-{
-	double_t r, w, z;
+float __cosdf(double x) {
+  double_t r, w, z;
 
-	/* Try to optimize for parallel evaluation as in __tandf.c. */
-	z = x*x;
-	w = z*z;
-	r = C2+z*C3;
-	return ((1.0+z*C0) + w*C1) + (w*z)*r;
+  /* Try to optimize for parallel evaluation as in __tandf.c. */
+  z = x * x;
+  w = z * z;
+  r = C2 + z * C3;
+  return ((1.0 + z * C0) + w * C1) + (w * z) * r;
 }
diff --git a/fusl/src/math/__cosl.c b/fusl/src/math/__cosl.c
index fa522dd..b9aee53 100644
--- a/fusl/src/math/__cosl.c
+++ b/fusl/src/math/__cosl.c
@@ -12,7 +12,6 @@
  * ====================================================
  */
 
-
 #include "libm.h"
 
 #if (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
@@ -43,16 +42,16 @@
  * almost for free from the complications needed to search for the best
  * higher coefficients.
  */
-static const long double
-C1 =  0.0416666666666666666136L;        /*  0xaaaaaaaaaaaaaa9b.0p-68 */
-static const double
-C2 = -0.0013888888888888874,            /* -0x16c16c16c16c10.0p-62 */
-C3 =  0.000024801587301571716,          /*  0x1a01a01a018e22.0p-68 */
-C4 = -0.00000027557319215507120,        /* -0x127e4fb7602f22.0p-74 */
-C5 =  0.0000000020876754400407278,      /*  0x11eed8caaeccf1.0p-81 */
-C6 = -1.1470297442401303e-11,           /* -0x19393412bd1529.0p-89 */
-C7 =  4.7383039476436467e-14;           /*  0x1aac9d9af5c43e.0p-97 */
-#define POLY(z) (z*(C1+z*(C2+z*(C3+z*(C4+z*(C5+z*(C6+z*C7)))))))
+static const long double C1 =
+    0.0416666666666666666136L;                   /*  0xaaaaaaaaaaaaaa9b.0p-68 */
+static const double C2 = -0.0013888888888888874, /* -0x16c16c16c16c10.0p-62 */
+    C3 = 0.000024801587301571716,                /*  0x1a01a01a018e22.0p-68 */
+    C4 = -0.00000027557319215507120,             /* -0x127e4fb7602f22.0p-74 */
+    C5 = 0.0000000020876754400407278,            /*  0x11eed8caaeccf1.0p-81 */
+    C6 = -1.1470297442401303e-11,                /* -0x19393412bd1529.0p-89 */
+    C7 = 4.7383039476436467e-14;                 /*  0x1aac9d9af5c43e.0p-97 */
+#define POLY(z) \
+  (z * (C1 + z * (C2 + z * (C3 + z * (C4 + z * (C5 + z * (C6 + z * C7)))))))
 #elif LDBL_MANT_DIG == 113
 /*
  * ld128 version of __cos.c.  See __cos.c for most comments.
@@ -66,31 +65,37 @@
  * that is 1 ulp below 0.5, but we want it to be precisely 0.5.  See
  * above for more details.
  */
-static const long double
-C1 =  0.04166666666666666666666666666666658424671L,
-C2 = -0.001388888888888888888888888888863490893732L,
-C3 =  0.00002480158730158730158730158600795304914210L,
-C4 = -0.2755731922398589065255474947078934284324e-6L,
-C5 =  0.2087675698786809897659225313136400793948e-8L,
-C6 = -0.1147074559772972315817149986812031204775e-10L,
-C7 =  0.4779477332386808976875457937252120293400e-13L;
-static const double
-C8 = -0.1561920696721507929516718307820958119868e-15,
-C9 =  0.4110317413744594971475941557607804508039e-18,
-C10 = -0.8896592467191938803288521958313920156409e-21,
-C11 =  0.1601061435794535138244346256065192782581e-23;
-#define POLY(z) (z*(C1+z*(C2+z*(C3+z*(C4+z*(C5+z*(C6+z*(C7+ \
-	z*(C8+z*(C9+z*(C10+z*C11)))))))))))
+static const long double C1 = 0.04166666666666666666666666666666658424671L,
+                         C2 = -0.001388888888888888888888888888863490893732L,
+                         C3 = 0.00002480158730158730158730158600795304914210L,
+                         C4 = -0.2755731922398589065255474947078934284324e-6L,
+                         C5 = 0.2087675698786809897659225313136400793948e-8L,
+                         C6 = -0.1147074559772972315817149986812031204775e-10L,
+                         C7 = 0.4779477332386808976875457937252120293400e-13L;
+static const double C8 = -0.1561920696721507929516718307820958119868e-15,
+                    C9 = 0.4110317413744594971475941557607804508039e-18,
+                    C10 = -0.8896592467191938803288521958313920156409e-21,
+                    C11 = 0.1601061435794535138244346256065192782581e-23;
+#define POLY(z)                             \
+  (z *                                      \
+   (C1 +                                    \
+    z * (C2 +                               \
+         z * (C3 +                          \
+              z * (C4 +                     \
+                   z * (C5 +                \
+                        z * (C6 +           \
+                             z * (C7 +      \
+                                  z * (C8 + \
+                                       z * (C9 + z * (C10 + z * C11)))))))))))
 #endif
 
-long double __cosl(long double x, long double y)
-{
-	long double hz,z,r,w;
+long double __cosl(long double x, long double y) {
+  long double hz, z, r, w;
 
-	z  = x*x;
-	r  = POLY(z);
-	hz = 0.5*z;
-	w  = 1.0-hz;
-	return w + (((1.0-w)-hz) + (z*r-x*y));
+  z = x * x;
+  r = POLY(z);
+  hz = 0.5 * z;
+  w = 1.0 - hz;
+  return w + (((1.0 - w) - hz) + (z * r - x * y));
 }
 #endif
diff --git a/fusl/src/math/__expo2.c b/fusl/src/math/__expo2.c
index 740ac68..af66724 100644
--- a/fusl/src/math/__expo2.c
+++ b/fusl/src/math/__expo2.c
@@ -1,16 +1,16 @@
 #include "libm.h"
 
-/* k is such that k*ln2 has minimal relative error and x - kln2 > log(DBL_MIN) */
+/* k is such that k*ln2 has minimal relative error and x - kln2 > log(DBL_MIN)
+ */
 static const int k = 2043;
 static const double kln2 = 0x1.62066151add8bp+10;
 
 /* exp(x)/2 for x >= log(DBL_MAX), slightly better than 0.5*exp(x/2)*exp(x/2) */
-double __expo2(double x)
-{
-	double scale;
+double __expo2(double x) {
+  double scale;
 
-	/* note that k is odd and scale*scale overflows */
-	INSERT_WORDS(scale, (uint32_t)(0x3ff + k/2) << 20, 0);
-	/* exp(x - k ln2) * 2**(k-1) */
-	return exp(x - kln2) * scale * scale;
+  /* note that k is odd and scale*scale overflows */
+  INSERT_WORDS(scale, (uint32_t)(0x3ff + k / 2) << 20, 0);
+  /* exp(x - k ln2) * 2**(k-1) */
+  return exp(x - kln2) * scale * scale;
 }
diff --git a/fusl/src/math/__expo2f.c b/fusl/src/math/__expo2f.c
index 5163e41..f71e8b5 100644
--- a/fusl/src/math/__expo2f.c
+++ b/fusl/src/math/__expo2f.c
@@ -1,16 +1,17 @@
 #include "libm.h"
 
-/* k is such that k*ln2 has minimal relative error and x - kln2 > log(FLT_MIN) */
+/* k is such that k*ln2 has minimal relative error and x - kln2 > log(FLT_MIN)
+ */
 static const int k = 235;
 static const float kln2 = 0x1.45c778p+7f;
 
-/* expf(x)/2 for x >= log(FLT_MAX), slightly better than 0.5f*expf(x/2)*expf(x/2) */
-float __expo2f(float x)
-{
-	float scale;
+/* expf(x)/2 for x >= log(FLT_MAX), slightly better than
+ * 0.5f*expf(x/2)*expf(x/2) */
+float __expo2f(float x) {
+  float scale;
 
-	/* note that k is odd and scale*scale overflows */
-	SET_FLOAT_WORD(scale, (uint32_t)(0x7f + k/2) << 23);
-	/* exp(x - k ln2) * 2**(k-1) */
-	return expf(x - kln2) * scale * scale;
+  /* note that k is odd and scale*scale overflows */
+  SET_FLOAT_WORD(scale, (uint32_t)(0x7f + k / 2) << 23);
+  /* exp(x - k ln2) * 2**(k-1) */
+  return expf(x - kln2) * scale * scale;
 }
diff --git a/fusl/src/math/__fpclassify.c b/fusl/src/math/__fpclassify.c
index f7c0e2d..17ee9db 100644
--- a/fusl/src/math/__fpclassify.c
+++ b/fusl/src/math/__fpclassify.c
@@ -1,11 +1,15 @@
 #include <math.h>
 #include <stdint.h>
 
-int __fpclassify(double x)
-{
-	union {double f; uint64_t i;} u = {x};
-	int e = u.i>>52 & 0x7ff;
-	if (!e) return u.i<<1 ? FP_SUBNORMAL : FP_ZERO;
-	if (e==0x7ff) return u.i<<12 ? FP_NAN : FP_INFINITE;
-	return FP_NORMAL;
+int __fpclassify(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  int e = u.i >> 52 & 0x7ff;
+  if (!e)
+    return u.i << 1 ? FP_SUBNORMAL : FP_ZERO;
+  if (e == 0x7ff)
+    return u.i << 12 ? FP_NAN : FP_INFINITE;
+  return FP_NORMAL;
 }
diff --git a/fusl/src/math/__fpclassifyf.c b/fusl/src/math/__fpclassifyf.c
index fd00eb1..842a0f1 100644
--- a/fusl/src/math/__fpclassifyf.c
+++ b/fusl/src/math/__fpclassifyf.c
@@ -1,11 +1,15 @@
 #include <math.h>
 #include <stdint.h>
 
-int __fpclassifyf(float x)
-{
-	union {float f; uint32_t i;} u = {x};
-	int e = u.i>>23 & 0xff;
-	if (!e) return u.i<<1 ? FP_SUBNORMAL : FP_ZERO;
-	if (e==0xff) return u.i<<9 ? FP_NAN : FP_INFINITE;
-	return FP_NORMAL;
+int __fpclassifyf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  int e = u.i >> 23 & 0xff;
+  if (!e)
+    return u.i << 1 ? FP_SUBNORMAL : FP_ZERO;
+  if (e == 0xff)
+    return u.i << 9 ? FP_NAN : FP_INFINITE;
+  return FP_NORMAL;
 }
diff --git a/fusl/src/math/__fpclassifyl.c b/fusl/src/math/__fpclassifyl.c
index 481c0b9..30d54ac 100644
--- a/fusl/src/math/__fpclassifyl.c
+++ b/fusl/src/math/__fpclassifyl.c
@@ -1,34 +1,31 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-int __fpclassifyl(long double x)
-{
-	return __fpclassify(x);
+int __fpclassifyl(long double x) {
+  return __fpclassify(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
-int __fpclassifyl(long double x)
-{
-	union ldshape u = {x};
-	int e = u.i.se & 0x7fff;
-	int msb = u.i.m>>63;
-	if (!e && !msb)
-		return u.i.m ? FP_SUBNORMAL : FP_ZERO;
-	if (!msb)
-		return FP_NAN;
-	if (e == 0x7fff)
-		return u.i.m << 1 ? FP_NAN : FP_INFINITE;
-	return FP_NORMAL;
+int __fpclassifyl(long double x) {
+  union ldshape u = {x};
+  int e = u.i.se & 0x7fff;
+  int msb = u.i.m >> 63;
+  if (!e && !msb)
+    return u.i.m ? FP_SUBNORMAL : FP_ZERO;
+  if (!msb)
+    return FP_NAN;
+  if (e == 0x7fff)
+    return u.i.m << 1 ? FP_NAN : FP_INFINITE;
+  return FP_NORMAL;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
-int __fpclassifyl(long double x)
-{
-	union ldshape u = {x};
-	int e = u.i.se & 0x7fff;
-	u.i.se = 0;
-	if (!e)
-		return u.i2.lo | u.i2.hi ? FP_SUBNORMAL : FP_ZERO;
-	if (e == 0x7fff)
-		return u.i2.lo | u.i2.hi ? FP_NAN : FP_INFINITE;
-	return FP_NORMAL;
+int __fpclassifyl(long double x) {
+  union ldshape u = {x};
+  int e = u.i.se & 0x7fff;
+  u.i.se = 0;
+  if (!e)
+    return u.i2.lo | u.i2.hi ? FP_SUBNORMAL : FP_ZERO;
+  if (e == 0x7fff)
+    return u.i2.lo | u.i2.hi ? FP_NAN : FP_INFINITE;
+  return FP_NORMAL;
 }
 #endif
diff --git a/fusl/src/math/__invtrigl.c b/fusl/src/math/__invtrigl.c
index ef7f4e1..f9e05cf 100644
--- a/fusl/src/math/__invtrigl.c
+++ b/fusl/src/math/__invtrigl.c
@@ -2,62 +2,72 @@
 #include "__invtrigl.h"
 
 #if LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
-static const long double
-pS0 =  1.66666666666666666631e-01L,
-pS1 = -4.16313987993683104320e-01L,
-pS2 =  3.69068046323246813704e-01L,
-pS3 = -1.36213932016738603108e-01L,
-pS4 =  1.78324189708471965733e-02L,
-pS5 = -2.19216428382605211588e-04L,
-pS6 = -7.10526623669075243183e-06L,
-qS1 = -2.94788392796209867269e+00L,
-qS2 =  3.27309890266528636716e+00L,
-qS3 = -1.68285799854822427013e+00L,
-qS4 =  3.90699412641738801874e-01L,
-qS5 = -3.14365703596053263322e-02L;
+static const long double pS0 = 1.66666666666666666631e-01L,
+                         pS1 = -4.16313987993683104320e-01L,
+                         pS2 = 3.69068046323246813704e-01L,
+                         pS3 = -1.36213932016738603108e-01L,
+                         pS4 = 1.78324189708471965733e-02L,
+                         pS5 = -2.19216428382605211588e-04L,
+                         pS6 = -7.10526623669075243183e-06L,
+                         qS1 = -2.94788392796209867269e+00L,
+                         qS2 = 3.27309890266528636716e+00L,
+                         qS3 = -1.68285799854822427013e+00L,
+                         qS4 = 3.90699412641738801874e-01L,
+                         qS5 = -3.14365703596053263322e-02L;
 
 const long double pio2_hi = 1.57079632679489661926L;
 const long double pio2_lo = -2.50827880633416601173e-20L;
 
 /* used in asinl() and acosl() */
 /* R(x^2) is a rational approximation of (asin(x)-x)/x^3 with Remez algorithm */
-long double __invtrigl_R(long double z)
-{
-	long double p, q;
-	p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*(pS5+z*pS6))))));
-	q = 1.0+z*(qS1+z*(qS2+z*(qS3+z*(qS4+z*qS5))));
-	return p/q;
+long double __invtrigl_R(long double z) {
+  long double p, q;
+  p = z * (pS0 +
+           z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * (pS5 + z * pS6))))));
+  q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * (qS4 + z * qS5))));
+  return p / q;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
-static const long double
-pS0 =  1.66666666666666666666666666666700314e-01L,
-pS1 = -7.32816946414566252574527475428622708e-01L,
-pS2 =  1.34215708714992334609030036562143589e+00L,
-pS3 = -1.32483151677116409805070261790752040e+00L,
-pS4 =  7.61206183613632558824485341162121989e-01L,
-pS5 = -2.56165783329023486777386833928147375e-01L,
-pS6 =  4.80718586374448793411019434585413855e-02L,
-pS7 = -4.42523267167024279410230886239774718e-03L,
-pS8 =  1.44551535183911458253205638280410064e-04L,
-pS9 = -2.10558957916600254061591040482706179e-07L,
-qS1 = -4.84690167848739751544716485245697428e+00L,
-qS2 =  9.96619113536172610135016921140206980e+00L,
-qS3 = -1.13177895428973036660836798461641458e+01L,
-qS4 =  7.74004374389488266169304117714658761e+00L,
-qS5 = -3.25871986053534084709023539900339905e+00L,
-qS6 =  8.27830318881232209752469022352928864e-01L,
-qS7 = -1.18768052702942805423330715206348004e-01L,
-qS8 =  8.32600764660522313269101537926539470e-03L,
-qS9 = -1.99407384882605586705979504567947007e-04L;
+static const long double pS0 = 1.66666666666666666666666666666700314e-01L,
+                         pS1 = -7.32816946414566252574527475428622708e-01L,
+                         pS2 = 1.34215708714992334609030036562143589e+00L,
+                         pS3 = -1.32483151677116409805070261790752040e+00L,
+                         pS4 = 7.61206183613632558824485341162121989e-01L,
+                         pS5 = -2.56165783329023486777386833928147375e-01L,
+                         pS6 = 4.80718586374448793411019434585413855e-02L,
+                         pS7 = -4.42523267167024279410230886239774718e-03L,
+                         pS8 = 1.44551535183911458253205638280410064e-04L,
+                         pS9 = -2.10558957916600254061591040482706179e-07L,
+                         qS1 = -4.84690167848739751544716485245697428e+00L,
+                         qS2 = 9.96619113536172610135016921140206980e+00L,
+                         qS3 = -1.13177895428973036660836798461641458e+01L,
+                         qS4 = 7.74004374389488266169304117714658761e+00L,
+                         qS5 = -3.25871986053534084709023539900339905e+00L,
+                         qS6 = 8.27830318881232209752469022352928864e-01L,
+                         qS7 = -1.18768052702942805423330715206348004e-01L,
+                         qS8 = 8.32600764660522313269101537926539470e-03L,
+                         qS9 = -1.99407384882605586705979504567947007e-04L;
 
 const long double pio2_hi = 1.57079632679489661923132169163975140L;
 const long double pio2_lo = 4.33590506506189051239852201302167613e-35L;
 
-long double __invtrigl_R(long double z)
-{
-	long double p, q;
-	p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*(pS5+z*(pS6+z*(pS7+z*(pS8+z*pS9)))))))));
-	q = 1.0+z*(qS1+z*(qS2+z*(qS3+z*(qS4+z*(qS5+z*(pS6+z*(pS7+z*(pS8+z*pS9))))))));
-	return p/q;
+long double __invtrigl_R(long double z) {
+  long double p, q;
+  p = z * (pS0 +
+           z * (pS1 +
+                z * (pS2 +
+                     z * (pS3 +
+                          z * (pS4 +
+                               z * (pS5 +
+                                    z * (pS6 +
+                                         z * (pS7 + z * (pS8 + z * pS9)))))))));
+  q = 1.0 +
+      z * (qS1 +
+           z * (qS2 +
+                z * (qS3 +
+                     z * (qS4 +
+                          z * (qS5 +
+                               z * (pS6 + z * (pS7 + z * (pS8 + z * pS9))))))));
+  return p / q;
 }
 #endif
diff --git a/fusl/src/math/__polevll.c b/fusl/src/math/__polevll.c
index ce1a840..093b4bc 100644
--- a/fusl/src/math/__polevll.c
+++ b/fusl/src/math/__polevll.c
@@ -62,32 +62,30 @@
  * Polynomial evaluator:
  *  P[0] x^n  +  P[1] x^(n-1)  +  ...  +  P[n]
  */
-long double __polevll(long double x, const long double *P, int n)
-{
-	long double y;
+long double __polevll(long double x, const long double* P, int n) {
+  long double y;
 
-	y = *P++;
-	do {
-		y = y * x + *P++;
-	} while (--n);
+  y = *P++;
+  do {
+    y = y * x + *P++;
+  } while (--n);
 
-	return y;
+  return y;
 }
 
 /*
  * Polynomial evaluator:
  *  x^n  +  P[0] x^(n-1)  +  P[1] x^(n-2)  +  ...  +  P[n]
  */
-long double __p1evll(long double x, const long double *P, int n)
-{
-	long double y;
+long double __p1evll(long double x, const long double* P, int n) {
+  long double y;
 
-	n -= 1;
-	y = x + *P++;
-	do {
-		y = y * x + *P++;
-	} while (--n);
+  n -= 1;
+  y = x + *P++;
+  do {
+    y = y * x + *P++;
+  } while (--n);
 
-	return y;
+  return y;
 }
 #endif
diff --git a/fusl/src/math/__rem_pio2.c b/fusl/src/math/__rem_pio2.c
index d403f81..025ce4e 100644
--- a/fusl/src/math/__rem_pio2.c
+++ b/fusl/src/math/__rem_pio2.c
@@ -19,9 +19,9 @@
 
 #include "libm.h"
 
-#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1
+#if FLT_EVAL_METHOD == 0 || FLT_EVAL_METHOD == 1
 #define EPS DBL_EPSILON
-#elif FLT_EVAL_METHOD==2
+#elif FLT_EVAL_METHOD == 2
 #define EPS LDBL_EPSILON
 #endif
 
@@ -34,144 +34,146 @@
  * pio2_3:   third  33 bit of pi/2
  * pio2_3t:  pi/2 - (pio2_1+pio2_2+pio2_3)
  */
-static const double
-toint   = 1.5/EPS,
-invpio2 = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */
-pio2_1  = 1.57079632673412561417e+00, /* 0x3FF921FB, 0x54400000 */
-pio2_1t = 6.07710050650619224932e-11, /* 0x3DD0B461, 0x1A626331 */
-pio2_2  = 6.07710050630396597660e-11, /* 0x3DD0B461, 0x1A600000 */
-pio2_2t = 2.02226624879595063154e-21, /* 0x3BA3198A, 0x2E037073 */
-pio2_3  = 2.02226624871116645580e-21, /* 0x3BA3198A, 0x2E000000 */
-pio2_3t = 8.47842766036889956997e-32; /* 0x397B839A, 0x252049C1 */
+static const double toint = 1.5 / EPS,
+                    invpio2 =
+                        6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */
+    pio2_1 = 1.57079632673412561417e+00,            /* 0x3FF921FB, 0x54400000 */
+    pio2_1t = 6.07710050650619224932e-11,           /* 0x3DD0B461, 0x1A626331 */
+    pio2_2 = 6.07710050630396597660e-11,            /* 0x3DD0B461, 0x1A600000 */
+    pio2_2t = 2.02226624879595063154e-21,           /* 0x3BA3198A, 0x2E037073 */
+    pio2_3 = 2.02226624871116645580e-21,            /* 0x3BA3198A, 0x2E000000 */
+    pio2_3t = 8.47842766036889956997e-32;           /* 0x397B839A, 0x252049C1 */
 
 /* caller must handle the case when reduction is not needed: |x| ~<= pi/4 */
-int __rem_pio2(double x, double *y)
-{
-	union {double f; uint64_t i;} u = {x};
-	double_t z,w,t,r,fn;
-	double tx[3],ty[2];
-	uint32_t ix;
-	int sign, n, ex, ey, i;
+int __rem_pio2(double x, double* y) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  double_t z, w, t, r, fn;
+  double tx[3], ty[2];
+  uint32_t ix;
+  int sign, n, ex, ey, i;
 
-	sign = u.i>>63;
-	ix = u.i>>32 & 0x7fffffff;
-	if (ix <= 0x400f6a7a) {  /* |x| ~<= 5pi/4 */
-		if ((ix & 0xfffff) == 0x921fb)  /* |x| ~= pi/2 or 2pi/2 */
-			goto medium;  /* cancellation -- use medium case */
-		if (ix <= 0x4002d97c) {  /* |x| ~<= 3pi/4 */
-			if (!sign) {
-				z = x - pio2_1;  /* one round good to 85 bits */
-				y[0] = z - pio2_1t;
-				y[1] = (z-y[0]) - pio2_1t;
-				return 1;
-			} else {
-				z = x + pio2_1;
-				y[0] = z + pio2_1t;
-				y[1] = (z-y[0]) + pio2_1t;
-				return -1;
-			}
-		} else {
-			if (!sign) {
-				z = x - 2*pio2_1;
-				y[0] = z - 2*pio2_1t;
-				y[1] = (z-y[0]) - 2*pio2_1t;
-				return 2;
-			} else {
-				z = x + 2*pio2_1;
-				y[0] = z + 2*pio2_1t;
-				y[1] = (z-y[0]) + 2*pio2_1t;
-				return -2;
-			}
-		}
-	}
-	if (ix <= 0x401c463b) {  /* |x| ~<= 9pi/4 */
-		if (ix <= 0x4015fdbc) {  /* |x| ~<= 7pi/4 */
-			if (ix == 0x4012d97c)  /* |x| ~= 3pi/2 */
-				goto medium;
-			if (!sign) {
-				z = x - 3*pio2_1;
-				y[0] = z - 3*pio2_1t;
-				y[1] = (z-y[0]) - 3*pio2_1t;
-				return 3;
-			} else {
-				z = x + 3*pio2_1;
-				y[0] = z + 3*pio2_1t;
-				y[1] = (z-y[0]) + 3*pio2_1t;
-				return -3;
-			}
-		} else {
-			if (ix == 0x401921fb)  /* |x| ~= 4pi/2 */
-				goto medium;
-			if (!sign) {
-				z = x - 4*pio2_1;
-				y[0] = z - 4*pio2_1t;
-				y[1] = (z-y[0]) - 4*pio2_1t;
-				return 4;
-			} else {
-				z = x + 4*pio2_1;
-				y[0] = z + 4*pio2_1t;
-				y[1] = (z-y[0]) + 4*pio2_1t;
-				return -4;
-			}
-		}
-	}
-	if (ix < 0x413921fb) {  /* |x| ~< 2^20*(pi/2), medium size */
-medium:
-		/* rint(x/(pi/2)), Assume round-to-nearest. */
-		fn = (double_t)x*invpio2 + toint - toint;
-		n = (int32_t)fn;
-		r = x - fn*pio2_1;
-		w = fn*pio2_1t;  /* 1st round, good to 85 bits */
-		y[0] = r - w;
-		u.f = y[0];
-		ey = u.i>>52 & 0x7ff;
-		ex = ix>>20;
-		if (ex - ey > 16) { /* 2nd round, good to 118 bits */
-			t = r;
-			w = fn*pio2_2;
-			r = t - w;
-			w = fn*pio2_2t - ((t-r)-w);
-			y[0] = r - w;
-			u.f = y[0];
-			ey = u.i>>52 & 0x7ff;
-			if (ex - ey > 49) {  /* 3rd round, good to 151 bits, covers all cases */
-				t = r;
-				w = fn*pio2_3;
-				r = t - w;
-				w = fn*pio2_3t - ((t-r)-w);
-				y[0] = r - w;
-			}
-		}
-		y[1] = (r - y[0]) - w;
-		return n;
-	}
-	/*
-	 * all other (large) arguments
-	 */
-	if (ix >= 0x7ff00000) {  /* x is inf or NaN */
-		y[0] = y[1] = x - x;
-		return 0;
-	}
-	/* set z = scalbn(|x|,-ilogb(x)+23) */
-	u.f = x;
-	u.i &= (uint64_t)-1>>12;
-	u.i |= (uint64_t)(0x3ff + 23)<<52;
-	z = u.f;
-	for (i=0; i < 2; i++) {
-		tx[i] = (double)(int32_t)z;
-		z     = (z-tx[i])*0x1p24;
-	}
-	tx[i] = z;
-	/* skip zero terms, first term is non-zero */
-	while (tx[i] == 0.0)
-		i--;
-	n = __rem_pio2_large(tx,ty,(int)(ix>>20)-(0x3ff+23),i+1,1);
-	if (sign) {
-		y[0] = -ty[0];
-		y[1] = -ty[1];
-		return -n;
-	}
-	y[0] = ty[0];
-	y[1] = ty[1];
-	return n;
+  sign = u.i >> 63;
+  ix = u.i >> 32 & 0x7fffffff;
+  if (ix <= 0x400f6a7a) {          /* |x| ~<= 5pi/4 */
+    if ((ix & 0xfffff) == 0x921fb) /* |x| ~= pi/2 or 2pi/2 */
+      goto medium;                 /* cancellation -- use medium case */
+    if (ix <= 0x4002d97c) {        /* |x| ~<= 3pi/4 */
+      if (!sign) {
+        z = x - pio2_1; /* one round good to 85 bits */
+        y[0] = z - pio2_1t;
+        y[1] = (z - y[0]) - pio2_1t;
+        return 1;
+      } else {
+        z = x + pio2_1;
+        y[0] = z + pio2_1t;
+        y[1] = (z - y[0]) + pio2_1t;
+        return -1;
+      }
+    } else {
+      if (!sign) {
+        z = x - 2 * pio2_1;
+        y[0] = z - 2 * pio2_1t;
+        y[1] = (z - y[0]) - 2 * pio2_1t;
+        return 2;
+      } else {
+        z = x + 2 * pio2_1;
+        y[0] = z + 2 * pio2_1t;
+        y[1] = (z - y[0]) + 2 * pio2_1t;
+        return -2;
+      }
+    }
+  }
+  if (ix <= 0x401c463b) {   /* |x| ~<= 9pi/4 */
+    if (ix <= 0x4015fdbc) { /* |x| ~<= 7pi/4 */
+      if (ix == 0x4012d97c) /* |x| ~= 3pi/2 */
+        goto medium;
+      if (!sign) {
+        z = x - 3 * pio2_1;
+        y[0] = z - 3 * pio2_1t;
+        y[1] = (z - y[0]) - 3 * pio2_1t;
+        return 3;
+      } else {
+        z = x + 3 * pio2_1;
+        y[0] = z + 3 * pio2_1t;
+        y[1] = (z - y[0]) + 3 * pio2_1t;
+        return -3;
+      }
+    } else {
+      if (ix == 0x401921fb) /* |x| ~= 4pi/2 */
+        goto medium;
+      if (!sign) {
+        z = x - 4 * pio2_1;
+        y[0] = z - 4 * pio2_1t;
+        y[1] = (z - y[0]) - 4 * pio2_1t;
+        return 4;
+      } else {
+        z = x + 4 * pio2_1;
+        y[0] = z + 4 * pio2_1t;
+        y[1] = (z - y[0]) + 4 * pio2_1t;
+        return -4;
+      }
+    }
+  }
+  if (ix < 0x413921fb) { /* |x| ~< 2^20*(pi/2), medium size */
+  medium:
+    /* rint(x/(pi/2)), Assume round-to-nearest. */
+    fn = (double_t)x * invpio2 + toint - toint;
+    n = (int32_t)fn;
+    r = x - fn * pio2_1;
+    w = fn * pio2_1t; /* 1st round, good to 85 bits */
+    y[0] = r - w;
+    u.f = y[0];
+    ey = u.i >> 52 & 0x7ff;
+    ex = ix >> 20;
+    if (ex - ey > 16) { /* 2nd round, good to 118 bits */
+      t = r;
+      w = fn * pio2_2;
+      r = t - w;
+      w = fn * pio2_2t - ((t - r) - w);
+      y[0] = r - w;
+      u.f = y[0];
+      ey = u.i >> 52 & 0x7ff;
+      if (ex - ey > 49) { /* 3rd round, good to 151 bits, covers all cases */
+        t = r;
+        w = fn * pio2_3;
+        r = t - w;
+        w = fn * pio2_3t - ((t - r) - w);
+        y[0] = r - w;
+      }
+    }
+    y[1] = (r - y[0]) - w;
+    return n;
+  }
+  /*
+   * all other (large) arguments
+   */
+  if (ix >= 0x7ff00000) { /* x is inf or NaN */
+    y[0] = y[1] = x - x;
+    return 0;
+  }
+  /* set z = scalbn(|x|,-ilogb(x)+23) */
+  u.f = x;
+  u.i &= (uint64_t)-1 >> 12;
+  u.i |= (uint64_t)(0x3ff + 23) << 52;
+  z = u.f;
+  for (i = 0; i < 2; i++) {
+    tx[i] = (double)(int32_t)z;
+    z = (z - tx[i]) * 0x1p24;
+  }
+  tx[i] = z;
+  /* skip zero terms, first term is non-zero */
+  while (tx[i] == 0.0)
+    i--;
+  n = __rem_pio2_large(tx, ty, (int)(ix >> 20) - (0x3ff + 23), i + 1, 1);
+  if (sign) {
+    y[0] = -ty[0];
+    y[1] = -ty[1];
+    return -n;
+  }
+  y[0] = ty[0];
+  y[1] = ty[1];
+  return n;
 }
diff --git a/fusl/src/math/__rem_pio2_large.c b/fusl/src/math/__rem_pio2_large.c
index 958f28c..9381d0e 100644
--- a/fusl/src/math/__rem_pio2_large.c
+++ b/fusl/src/math/__rem_pio2_large.c
@@ -124,7 +124,7 @@
 
 #include "libm.h"
 
-static const int init_jk[] = {3,4,4,6}; /* initial value for jk */
+static const int init_jk[] = {3, 4, 4, 6}; /* initial value for jk */
 
 /*
  * Table of constants for 2/pi, 396 Hex digits (476 decimal) of 2/pi
@@ -139,304 +139,302 @@
  *     For quad precision (e0 <= 16360, jk = 6), this is 686.
  */
 static const int32_t ipio2[] = {
-0xA2F983, 0x6E4E44, 0x1529FC, 0x2757D1, 0xF534DD, 0xC0DB62,
-0x95993C, 0x439041, 0xFE5163, 0xABDEBB, 0xC561B7, 0x246E3A,
-0x424DD2, 0xE00649, 0x2EEA09, 0xD1921C, 0xFE1DEB, 0x1CB129,
-0xA73EE8, 0x8235F5, 0x2EBB44, 0x84E99C, 0x7026B4, 0x5F7E41,
-0x3991D6, 0x398353, 0x39F49C, 0x845F8B, 0xBDF928, 0x3B1FF8,
-0x97FFDE, 0x05980F, 0xEF2F11, 0x8B5A0A, 0x6D1F6D, 0x367ECF,
-0x27CB09, 0xB74F46, 0x3F669E, 0x5FEA2D, 0x7527BA, 0xC7EBE5,
-0xF17B3D, 0x0739F7, 0x8A5292, 0xEA6BFB, 0x5FB11F, 0x8D5D08,
-0x560330, 0x46FC7B, 0x6BABF0, 0xCFBC20, 0x9AF436, 0x1DA9E3,
-0x91615E, 0xE61B08, 0x659985, 0x5F14A0, 0x68408D, 0xFFD880,
-0x4D7327, 0x310606, 0x1556CA, 0x73A8C9, 0x60E27B, 0xC08C6B,
+    0xA2F983, 0x6E4E44, 0x1529FC, 0x2757D1, 0xF534DD, 0xC0DB62, 0x95993C,
+    0x439041, 0xFE5163, 0xABDEBB, 0xC561B7, 0x246E3A, 0x424DD2, 0xE00649,
+    0x2EEA09, 0xD1921C, 0xFE1DEB, 0x1CB129, 0xA73EE8, 0x8235F5, 0x2EBB44,
+    0x84E99C, 0x7026B4, 0x5F7E41, 0x3991D6, 0x398353, 0x39F49C, 0x845F8B,
+    0xBDF928, 0x3B1FF8, 0x97FFDE, 0x05980F, 0xEF2F11, 0x8B5A0A, 0x6D1F6D,
+    0x367ECF, 0x27CB09, 0xB74F46, 0x3F669E, 0x5FEA2D, 0x7527BA, 0xC7EBE5,
+    0xF17B3D, 0x0739F7, 0x8A5292, 0xEA6BFB, 0x5FB11F, 0x8D5D08, 0x560330,
+    0x46FC7B, 0x6BABF0, 0xCFBC20, 0x9AF436, 0x1DA9E3, 0x91615E, 0xE61B08,
+    0x659985, 0x5F14A0, 0x68408D, 0xFFD880, 0x4D7327, 0x310606, 0x1556CA,
+    0x73A8C9, 0x60E27B, 0xC08C6B,
 
 #if LDBL_MAX_EXP > 1024
-0x47C419, 0xC367CD, 0xDCE809, 0x2A8359, 0xC4768B, 0x961CA6,
-0xDDAF44, 0xD15719, 0x053EA5, 0xFF0705, 0x3F7E33, 0xE832C2,
-0xDE4F98, 0x327DBB, 0xC33D26, 0xEF6B1E, 0x5EF89F, 0x3A1F35,
-0xCAF27F, 0x1D87F1, 0x21907C, 0x7C246A, 0xFA6ED5, 0x772D30,
-0x433B15, 0xC614B5, 0x9D19C3, 0xC2C4AD, 0x414D2C, 0x5D000C,
-0x467D86, 0x2D71E3, 0x9AC69B, 0x006233, 0x7CD2B4, 0x97A7B4,
-0xD55537, 0xF63ED7, 0x1810A3, 0xFC764D, 0x2A9D64, 0xABD770,
-0xF87C63, 0x57B07A, 0xE71517, 0x5649C0, 0xD9D63B, 0x3884A7,
-0xCB2324, 0x778AD6, 0x23545A, 0xB91F00, 0x1B0AF1, 0xDFCE19,
-0xFF319F, 0x6A1E66, 0x615799, 0x47FBAC, 0xD87F7E, 0xB76522,
-0x89E832, 0x60BFE6, 0xCDC4EF, 0x09366C, 0xD43F5D, 0xD7DE16,
-0xDE3B58, 0x929BDE, 0x2822D2, 0xE88628, 0x4D58E2, 0x32CAC6,
-0x16E308, 0xCB7DE0, 0x50C017, 0xA71DF3, 0x5BE018, 0x34132E,
-0x621283, 0x014883, 0x5B8EF5, 0x7FB0AD, 0xF2E91E, 0x434A48,
-0xD36710, 0xD8DDAA, 0x425FAE, 0xCE616A, 0xA4280A, 0xB499D3,
-0xF2A606, 0x7F775C, 0x83C2A3, 0x883C61, 0x78738A, 0x5A8CAF,
-0xBDD76F, 0x63A62D, 0xCBBFF4, 0xEF818D, 0x67C126, 0x45CA55,
-0x36D9CA, 0xD2A828, 0x8D61C2, 0x77C912, 0x142604, 0x9B4612,
-0xC459C4, 0x44C5C8, 0x91B24D, 0xF31700, 0xAD43D4, 0xE54929,
-0x10D5FD, 0xFCBE00, 0xCC941E, 0xEECE70, 0xF53E13, 0x80F1EC,
-0xC3E7B3, 0x28F8C7, 0x940593, 0x3E71C1, 0xB3092E, 0xF3450B,
-0x9C1288, 0x7B20AB, 0x9FB52E, 0xC29247, 0x2F327B, 0x6D550C,
-0x90A772, 0x1FE76B, 0x96CB31, 0x4A1679, 0xE27941, 0x89DFF4,
-0x9794E8, 0x84E6E2, 0x973199, 0x6BED88, 0x365F5F, 0x0EFDBB,
-0xB49A48, 0x6CA467, 0x427271, 0x325D8D, 0xB8159F, 0x09E5BC,
-0x25318D, 0x3974F7, 0x1C0530, 0x010C0D, 0x68084B, 0x58EE2C,
-0x90AA47, 0x02E774, 0x24D6BD, 0xA67DF7, 0x72486E, 0xEF169F,
-0xA6948E, 0xF691B4, 0x5153D1, 0xF20ACF, 0x339820, 0x7E4BF5,
-0x6863B2, 0x5F3EDD, 0x035D40, 0x7F8985, 0x295255, 0xC06437,
-0x10D86D, 0x324832, 0x754C5B, 0xD4714E, 0x6E5445, 0xC1090B,
-0x69F52A, 0xD56614, 0x9D0727, 0x50045D, 0xDB3BB4, 0xC576EA,
-0x17F987, 0x7D6B49, 0xBA271D, 0x296996, 0xACCCC6, 0x5414AD,
-0x6AE290, 0x89D988, 0x50722C, 0xBEA404, 0x940777, 0x7030F3,
-0x27FC00, 0xA871EA, 0x49C266, 0x3DE064, 0x83DD97, 0x973FA3,
-0xFD9443, 0x8C860D, 0xDE4131, 0x9D3992, 0x8C70DD, 0xE7B717,
-0x3BDF08, 0x2B3715, 0xA0805C, 0x93805A, 0x921110, 0xD8E80F,
-0xAF806C, 0x4BFFDB, 0x0F9038, 0x761859, 0x15A562, 0xBBCB61,
-0xB989C7, 0xBD4010, 0x04F2D2, 0x277549, 0xF6B6EB, 0xBB22DB,
-0xAA140A, 0x2F2689, 0x768364, 0x333B09, 0x1A940E, 0xAA3A51,
-0xC2A31D, 0xAEEDAF, 0x12265C, 0x4DC26D, 0x9C7A2D, 0x9756C0,
-0x833F03, 0xF6F009, 0x8C402B, 0x99316D, 0x07B439, 0x15200C,
-0x5BC3D8, 0xC492F5, 0x4BADC6, 0xA5CA4E, 0xCD37A7, 0x36A9E6,
-0x9492AB, 0x6842DD, 0xDE6319, 0xEF8C76, 0x528B68, 0x37DBFC,
-0xABA1AE, 0x3115DF, 0xA1AE00, 0xDAFB0C, 0x664D64, 0xB705ED,
-0x306529, 0xBF5657, 0x3AFF47, 0xB9F96A, 0xF3BE75, 0xDF9328,
-0x3080AB, 0xF68C66, 0x15CB04, 0x0622FA, 0x1DE4D9, 0xA4B33D,
-0x8F1B57, 0x09CD36, 0xE9424E, 0xA4BE13, 0xB52333, 0x1AAAF0,
-0xA8654F, 0xA5C1D2, 0x0F3F0B, 0xCD785B, 0x76F923, 0x048B7B,
-0x721789, 0x53A6C6, 0xE26E6F, 0x00EBEF, 0x584A9B, 0xB7DAC4,
-0xBA66AA, 0xCFCF76, 0x1D02D1, 0x2DF1B1, 0xC1998C, 0x77ADC3,
-0xDA4886, 0xA05DF7, 0xF480C6, 0x2FF0AC, 0x9AECDD, 0xBC5C3F,
-0x6DDED0, 0x1FC790, 0xB6DB2A, 0x3A25A3, 0x9AAF00, 0x9353AD,
-0x0457B6, 0xB42D29, 0x7E804B, 0xA707DA, 0x0EAA76, 0xA1597B,
-0x2A1216, 0x2DB7DC, 0xFDE5FA, 0xFEDB89, 0xFDBE89, 0x6C76E4,
-0xFCA906, 0x70803E, 0x156E85, 0xFF87FD, 0x073E28, 0x336761,
-0x86182A, 0xEABD4D, 0xAFE7B3, 0x6E6D8F, 0x396795, 0x5BBF31,
-0x48D784, 0x16DF30, 0x432DC7, 0x356125, 0xCE70C9, 0xB8CB30,
-0xFD6CBF, 0xA200A4, 0xE46C05, 0xA0DD5A, 0x476F21, 0xD21262,
-0x845CB9, 0x496170, 0xE0566B, 0x015299, 0x375550, 0xB7D51E,
-0xC4F133, 0x5F6E13, 0xE4305D, 0xA92E85, 0xC3B21D, 0x3632A1,
-0xA4B708, 0xD4B1EA, 0x21F716, 0xE4698F, 0x77FF27, 0x80030C,
-0x2D408D, 0xA0CD4F, 0x99A520, 0xD3A2B3, 0x0A5D2F, 0x42F9B4,
-0xCBDA11, 0xD0BE7D, 0xC1DB9B, 0xBD17AB, 0x81A2CA, 0x5C6A08,
-0x17552E, 0x550027, 0xF0147F, 0x8607E1, 0x640B14, 0x8D4196,
-0xDEBE87, 0x2AFDDA, 0xB6256B, 0x34897B, 0xFEF305, 0x9EBFB9,
-0x4F6A68, 0xA82A4A, 0x5AC44F, 0xBCF82D, 0x985AD7, 0x95C7F4,
-0x8D4D0D, 0xA63A20, 0x5F57A4, 0xB13F14, 0x953880, 0x0120CC,
-0x86DD71, 0xB6DEC9, 0xF560BF, 0x11654D, 0x6B0701, 0xACB08C,
-0xD0C0B2, 0x485551, 0x0EFB1E, 0xC37295, 0x3B06A3, 0x3540C0,
-0x7BDC06, 0xCC45E0, 0xFA294E, 0xC8CAD6, 0x41F3E8, 0xDE647C,
-0xD8649B, 0x31BED9, 0xC397A4, 0xD45877, 0xC5E369, 0x13DAF0,
-0x3C3ABA, 0x461846, 0x5F7555, 0xF5BDD2, 0xC6926E, 0x5D2EAC,
-0xED440E, 0x423E1C, 0x87C461, 0xE9FD29, 0xF3D6E7, 0xCA7C22,
-0x35916F, 0xC5E008, 0x8DD7FF, 0xE26A6E, 0xC6FDB0, 0xC10893,
-0x745D7C, 0xB2AD6B, 0x9D6ECD, 0x7B723E, 0x6A11C6, 0xA9CFF7,
-0xDF7329, 0xBAC9B5, 0x5100B7, 0x0DB2E2, 0x24BA74, 0x607DE5,
-0x8AD874, 0x2C150D, 0x0C1881, 0x94667E, 0x162901, 0x767A9F,
-0xBEFDFD, 0xEF4556, 0x367ED9, 0x13D9EC, 0xB9BA8B, 0xFC97C4,
-0x27A831, 0xC36EF1, 0x36C594, 0x56A8D8, 0xB5A8B4, 0x0ECCCF,
-0x2D8912, 0x34576F, 0x89562C, 0xE3CE99, 0xB920D6, 0xAA5E6B,
-0x9C2A3E, 0xCC5F11, 0x4A0BFD, 0xFBF4E1, 0x6D3B8E, 0x2C86E2,
-0x84D4E9, 0xA9B4FC, 0xD1EEEF, 0xC9352E, 0x61392F, 0x442138,
-0xC8D91B, 0x0AFC81, 0x6A4AFB, 0xD81C2F, 0x84B453, 0x8C994E,
-0xCC2254, 0xDC552A, 0xD6C6C0, 0x96190B, 0xB8701A, 0x649569,
-0x605A26, 0xEE523F, 0x0F117F, 0x11B5F4, 0xF5CBFC, 0x2DBC34,
-0xEEBC34, 0xCC5DE8, 0x605EDD, 0x9B8E67, 0xEF3392, 0xB817C9,
-0x9B5861, 0xBC57E1, 0xC68351, 0x103ED8, 0x4871DD, 0xDD1C2D,
-0xA118AF, 0x462C21, 0xD7F359, 0x987AD9, 0xC0549E, 0xFA864F,
-0xFC0656, 0xAE79E5, 0x362289, 0x22AD38, 0xDC9367, 0xAAE855,
-0x382682, 0x9BE7CA, 0xA40D51, 0xB13399, 0x0ED7A9, 0x480569,
-0xF0B265, 0xA7887F, 0x974C88, 0x36D1F9, 0xB39221, 0x4A827B,
-0x21CF98, 0xDC9F40, 0x5547DC, 0x3A74E1, 0x42EB67, 0xDF9DFE,
-0x5FD45E, 0xA4677B, 0x7AACBA, 0xA2F655, 0x23882B, 0x55BA41,
-0x086E59, 0x862A21, 0x834739, 0xE6E389, 0xD49EE5, 0x40FB49,
-0xE956FF, 0xCA0F1C, 0x8A59C5, 0x2BFA94, 0xC5C1D3, 0xCFC50F,
-0xAE5ADB, 0x86C547, 0x624385, 0x3B8621, 0x94792C, 0x876110,
-0x7B4C2A, 0x1A2C80, 0x12BF43, 0x902688, 0x893C78, 0xE4C4A8,
-0x7BDBE5, 0xC23AC4, 0xEAF426, 0x8A67F7, 0xBF920D, 0x2BA365,
-0xB1933D, 0x0B7CBD, 0xDC51A4, 0x63DD27, 0xDDE169, 0x19949A,
-0x9529A8, 0x28CE68, 0xB4ED09, 0x209F44, 0xCA984E, 0x638270,
-0x237C7E, 0x32B90F, 0x8EF5A7, 0xE75614, 0x08F121, 0x2A9DB5,
-0x4D7E6F, 0x5119A5, 0xABF9B5, 0xD6DF82, 0x61DD96, 0x023616,
-0x9F3AC4, 0xA1A283, 0x6DED72, 0x7A8D39, 0xA9B882, 0x5C326B,
-0x5B2746, 0xED3400, 0x7700D2, 0x55F4FC, 0x4D5901, 0x8071E0,
+    0x47C419, 0xC367CD, 0xDCE809, 0x2A8359, 0xC4768B, 0x961CA6, 0xDDAF44,
+    0xD15719, 0x053EA5, 0xFF0705, 0x3F7E33, 0xE832C2, 0xDE4F98, 0x327DBB,
+    0xC33D26, 0xEF6B1E, 0x5EF89F, 0x3A1F35, 0xCAF27F, 0x1D87F1, 0x21907C,
+    0x7C246A, 0xFA6ED5, 0x772D30, 0x433B15, 0xC614B5, 0x9D19C3, 0xC2C4AD,
+    0x414D2C, 0x5D000C, 0x467D86, 0x2D71E3, 0x9AC69B, 0x006233, 0x7CD2B4,
+    0x97A7B4, 0xD55537, 0xF63ED7, 0x1810A3, 0xFC764D, 0x2A9D64, 0xABD770,
+    0xF87C63, 0x57B07A, 0xE71517, 0x5649C0, 0xD9D63B, 0x3884A7, 0xCB2324,
+    0x778AD6, 0x23545A, 0xB91F00, 0x1B0AF1, 0xDFCE19, 0xFF319F, 0x6A1E66,
+    0x615799, 0x47FBAC, 0xD87F7E, 0xB76522, 0x89E832, 0x60BFE6, 0xCDC4EF,
+    0x09366C, 0xD43F5D, 0xD7DE16, 0xDE3B58, 0x929BDE, 0x2822D2, 0xE88628,
+    0x4D58E2, 0x32CAC6, 0x16E308, 0xCB7DE0, 0x50C017, 0xA71DF3, 0x5BE018,
+    0x34132E, 0x621283, 0x014883, 0x5B8EF5, 0x7FB0AD, 0xF2E91E, 0x434A48,
+    0xD36710, 0xD8DDAA, 0x425FAE, 0xCE616A, 0xA4280A, 0xB499D3, 0xF2A606,
+    0x7F775C, 0x83C2A3, 0x883C61, 0x78738A, 0x5A8CAF, 0xBDD76F, 0x63A62D,
+    0xCBBFF4, 0xEF818D, 0x67C126, 0x45CA55, 0x36D9CA, 0xD2A828, 0x8D61C2,
+    0x77C912, 0x142604, 0x9B4612, 0xC459C4, 0x44C5C8, 0x91B24D, 0xF31700,
+    0xAD43D4, 0xE54929, 0x10D5FD, 0xFCBE00, 0xCC941E, 0xEECE70, 0xF53E13,
+    0x80F1EC, 0xC3E7B3, 0x28F8C7, 0x940593, 0x3E71C1, 0xB3092E, 0xF3450B,
+    0x9C1288, 0x7B20AB, 0x9FB52E, 0xC29247, 0x2F327B, 0x6D550C, 0x90A772,
+    0x1FE76B, 0x96CB31, 0x4A1679, 0xE27941, 0x89DFF4, 0x9794E8, 0x84E6E2,
+    0x973199, 0x6BED88, 0x365F5F, 0x0EFDBB, 0xB49A48, 0x6CA467, 0x427271,
+    0x325D8D, 0xB8159F, 0x09E5BC, 0x25318D, 0x3974F7, 0x1C0530, 0x010C0D,
+    0x68084B, 0x58EE2C, 0x90AA47, 0x02E774, 0x24D6BD, 0xA67DF7, 0x72486E,
+    0xEF169F, 0xA6948E, 0xF691B4, 0x5153D1, 0xF20ACF, 0x339820, 0x7E4BF5,
+    0x6863B2, 0x5F3EDD, 0x035D40, 0x7F8985, 0x295255, 0xC06437, 0x10D86D,
+    0x324832, 0x754C5B, 0xD4714E, 0x6E5445, 0xC1090B, 0x69F52A, 0xD56614,
+    0x9D0727, 0x50045D, 0xDB3BB4, 0xC576EA, 0x17F987, 0x7D6B49, 0xBA271D,
+    0x296996, 0xACCCC6, 0x5414AD, 0x6AE290, 0x89D988, 0x50722C, 0xBEA404,
+    0x940777, 0x7030F3, 0x27FC00, 0xA871EA, 0x49C266, 0x3DE064, 0x83DD97,
+    0x973FA3, 0xFD9443, 0x8C860D, 0xDE4131, 0x9D3992, 0x8C70DD, 0xE7B717,
+    0x3BDF08, 0x2B3715, 0xA0805C, 0x93805A, 0x921110, 0xD8E80F, 0xAF806C,
+    0x4BFFDB, 0x0F9038, 0x761859, 0x15A562, 0xBBCB61, 0xB989C7, 0xBD4010,
+    0x04F2D2, 0x277549, 0xF6B6EB, 0xBB22DB, 0xAA140A, 0x2F2689, 0x768364,
+    0x333B09, 0x1A940E, 0xAA3A51, 0xC2A31D, 0xAEEDAF, 0x12265C, 0x4DC26D,
+    0x9C7A2D, 0x9756C0, 0x833F03, 0xF6F009, 0x8C402B, 0x99316D, 0x07B439,
+    0x15200C, 0x5BC3D8, 0xC492F5, 0x4BADC6, 0xA5CA4E, 0xCD37A7, 0x36A9E6,
+    0x9492AB, 0x6842DD, 0xDE6319, 0xEF8C76, 0x528B68, 0x37DBFC, 0xABA1AE,
+    0x3115DF, 0xA1AE00, 0xDAFB0C, 0x664D64, 0xB705ED, 0x306529, 0xBF5657,
+    0x3AFF47, 0xB9F96A, 0xF3BE75, 0xDF9328, 0x3080AB, 0xF68C66, 0x15CB04,
+    0x0622FA, 0x1DE4D9, 0xA4B33D, 0x8F1B57, 0x09CD36, 0xE9424E, 0xA4BE13,
+    0xB52333, 0x1AAAF0, 0xA8654F, 0xA5C1D2, 0x0F3F0B, 0xCD785B, 0x76F923,
+    0x048B7B, 0x721789, 0x53A6C6, 0xE26E6F, 0x00EBEF, 0x584A9B, 0xB7DAC4,
+    0xBA66AA, 0xCFCF76, 0x1D02D1, 0x2DF1B1, 0xC1998C, 0x77ADC3, 0xDA4886,
+    0xA05DF7, 0xF480C6, 0x2FF0AC, 0x9AECDD, 0xBC5C3F, 0x6DDED0, 0x1FC790,
+    0xB6DB2A, 0x3A25A3, 0x9AAF00, 0x9353AD, 0x0457B6, 0xB42D29, 0x7E804B,
+    0xA707DA, 0x0EAA76, 0xA1597B, 0x2A1216, 0x2DB7DC, 0xFDE5FA, 0xFEDB89,
+    0xFDBE89, 0x6C76E4, 0xFCA906, 0x70803E, 0x156E85, 0xFF87FD, 0x073E28,
+    0x336761, 0x86182A, 0xEABD4D, 0xAFE7B3, 0x6E6D8F, 0x396795, 0x5BBF31,
+    0x48D784, 0x16DF30, 0x432DC7, 0x356125, 0xCE70C9, 0xB8CB30, 0xFD6CBF,
+    0xA200A4, 0xE46C05, 0xA0DD5A, 0x476F21, 0xD21262, 0x845CB9, 0x496170,
+    0xE0566B, 0x015299, 0x375550, 0xB7D51E, 0xC4F133, 0x5F6E13, 0xE4305D,
+    0xA92E85, 0xC3B21D, 0x3632A1, 0xA4B708, 0xD4B1EA, 0x21F716, 0xE4698F,
+    0x77FF27, 0x80030C, 0x2D408D, 0xA0CD4F, 0x99A520, 0xD3A2B3, 0x0A5D2F,
+    0x42F9B4, 0xCBDA11, 0xD0BE7D, 0xC1DB9B, 0xBD17AB, 0x81A2CA, 0x5C6A08,
+    0x17552E, 0x550027, 0xF0147F, 0x8607E1, 0x640B14, 0x8D4196, 0xDEBE87,
+    0x2AFDDA, 0xB6256B, 0x34897B, 0xFEF305, 0x9EBFB9, 0x4F6A68, 0xA82A4A,
+    0x5AC44F, 0xBCF82D, 0x985AD7, 0x95C7F4, 0x8D4D0D, 0xA63A20, 0x5F57A4,
+    0xB13F14, 0x953880, 0x0120CC, 0x86DD71, 0xB6DEC9, 0xF560BF, 0x11654D,
+    0x6B0701, 0xACB08C, 0xD0C0B2, 0x485551, 0x0EFB1E, 0xC37295, 0x3B06A3,
+    0x3540C0, 0x7BDC06, 0xCC45E0, 0xFA294E, 0xC8CAD6, 0x41F3E8, 0xDE647C,
+    0xD8649B, 0x31BED9, 0xC397A4, 0xD45877, 0xC5E369, 0x13DAF0, 0x3C3ABA,
+    0x461846, 0x5F7555, 0xF5BDD2, 0xC6926E, 0x5D2EAC, 0xED440E, 0x423E1C,
+    0x87C461, 0xE9FD29, 0xF3D6E7, 0xCA7C22, 0x35916F, 0xC5E008, 0x8DD7FF,
+    0xE26A6E, 0xC6FDB0, 0xC10893, 0x745D7C, 0xB2AD6B, 0x9D6ECD, 0x7B723E,
+    0x6A11C6, 0xA9CFF7, 0xDF7329, 0xBAC9B5, 0x5100B7, 0x0DB2E2, 0x24BA74,
+    0x607DE5, 0x8AD874, 0x2C150D, 0x0C1881, 0x94667E, 0x162901, 0x767A9F,
+    0xBEFDFD, 0xEF4556, 0x367ED9, 0x13D9EC, 0xB9BA8B, 0xFC97C4, 0x27A831,
+    0xC36EF1, 0x36C594, 0x56A8D8, 0xB5A8B4, 0x0ECCCF, 0x2D8912, 0x34576F,
+    0x89562C, 0xE3CE99, 0xB920D6, 0xAA5E6B, 0x9C2A3E, 0xCC5F11, 0x4A0BFD,
+    0xFBF4E1, 0x6D3B8E, 0x2C86E2, 0x84D4E9, 0xA9B4FC, 0xD1EEEF, 0xC9352E,
+    0x61392F, 0x442138, 0xC8D91B, 0x0AFC81, 0x6A4AFB, 0xD81C2F, 0x84B453,
+    0x8C994E, 0xCC2254, 0xDC552A, 0xD6C6C0, 0x96190B, 0xB8701A, 0x649569,
+    0x605A26, 0xEE523F, 0x0F117F, 0x11B5F4, 0xF5CBFC, 0x2DBC34, 0xEEBC34,
+    0xCC5DE8, 0x605EDD, 0x9B8E67, 0xEF3392, 0xB817C9, 0x9B5861, 0xBC57E1,
+    0xC68351, 0x103ED8, 0x4871DD, 0xDD1C2D, 0xA118AF, 0x462C21, 0xD7F359,
+    0x987AD9, 0xC0549E, 0xFA864F, 0xFC0656, 0xAE79E5, 0x362289, 0x22AD38,
+    0xDC9367, 0xAAE855, 0x382682, 0x9BE7CA, 0xA40D51, 0xB13399, 0x0ED7A9,
+    0x480569, 0xF0B265, 0xA7887F, 0x974C88, 0x36D1F9, 0xB39221, 0x4A827B,
+    0x21CF98, 0xDC9F40, 0x5547DC, 0x3A74E1, 0x42EB67, 0xDF9DFE, 0x5FD45E,
+    0xA4677B, 0x7AACBA, 0xA2F655, 0x23882B, 0x55BA41, 0x086E59, 0x862A21,
+    0x834739, 0xE6E389, 0xD49EE5, 0x40FB49, 0xE956FF, 0xCA0F1C, 0x8A59C5,
+    0x2BFA94, 0xC5C1D3, 0xCFC50F, 0xAE5ADB, 0x86C547, 0x624385, 0x3B8621,
+    0x94792C, 0x876110, 0x7B4C2A, 0x1A2C80, 0x12BF43, 0x902688, 0x893C78,
+    0xE4C4A8, 0x7BDBE5, 0xC23AC4, 0xEAF426, 0x8A67F7, 0xBF920D, 0x2BA365,
+    0xB1933D, 0x0B7CBD, 0xDC51A4, 0x63DD27, 0xDDE169, 0x19949A, 0x9529A8,
+    0x28CE68, 0xB4ED09, 0x209F44, 0xCA984E, 0x638270, 0x237C7E, 0x32B90F,
+    0x8EF5A7, 0xE75614, 0x08F121, 0x2A9DB5, 0x4D7E6F, 0x5119A5, 0xABF9B5,
+    0xD6DF82, 0x61DD96, 0x023616, 0x9F3AC4, 0xA1A283, 0x6DED72, 0x7A8D39,
+    0xA9B882, 0x5C326B, 0x5B2746, 0xED3400, 0x7700D2, 0x55F4FC, 0x4D5901,
+    0x8071E0,
 #endif
 };
 
 static const double PIo2[] = {
-  1.57079625129699707031e+00, /* 0x3FF921FB, 0x40000000 */
-  7.54978941586159635335e-08, /* 0x3E74442D, 0x00000000 */
-  5.39030252995776476554e-15, /* 0x3CF84698, 0x80000000 */
-  3.28200341580791294123e-22, /* 0x3B78CC51, 0x60000000 */
-  1.27065575308067607349e-29, /* 0x39F01B83, 0x80000000 */
-  1.22933308981111328932e-36, /* 0x387A2520, 0x40000000 */
-  2.73370053816464559624e-44, /* 0x36E38222, 0x80000000 */
-  2.16741683877804819444e-51, /* 0x3569F31D, 0x00000000 */
+    1.57079625129699707031e+00, /* 0x3FF921FB, 0x40000000 */
+    7.54978941586159635335e-08, /* 0x3E74442D, 0x00000000 */
+    5.39030252995776476554e-15, /* 0x3CF84698, 0x80000000 */
+    3.28200341580791294123e-22, /* 0x3B78CC51, 0x60000000 */
+    1.27065575308067607349e-29, /* 0x39F01B83, 0x80000000 */
+    1.22933308981111328932e-36, /* 0x387A2520, 0x40000000 */
+    2.73370053816464559624e-44, /* 0x36E38222, 0x80000000 */
+    2.16741683877804819444e-51, /* 0x3569F31D, 0x00000000 */
 };
 
-int __rem_pio2_large(double *x, double *y, int e0, int nx, int prec)
-{
-	int32_t jz,jx,jv,jp,jk,carry,n,iq[20],i,j,k,m,q0,ih;
-	double z,fw,f[20],fq[20],q[20];
+int __rem_pio2_large(double* x, double* y, int e0, int nx, int prec) {
+  int32_t jz, jx, jv, jp, jk, carry, n, iq[20], i, j, k, m, q0, ih;
+  double z, fw, f[20], fq[20], q[20];
 
-	/* initialize jk*/
-	jk = init_jk[prec];
-	jp = jk;
+  /* initialize jk*/
+  jk = init_jk[prec];
+  jp = jk;
 
-	/* determine jx,jv,q0, note that 3>q0 */
-	jx = nx-1;
-	jv = (e0-3)/24;  if(jv<0) jv=0;
-	q0 = e0-24*(jv+1);
+  /* determine jx,jv,q0, note that 3>q0 */
+  jx = nx - 1;
+  jv = (e0 - 3) / 24;
+  if (jv < 0)
+    jv = 0;
+  q0 = e0 - 24 * (jv + 1);
 
-	/* set up f[0] to f[jx+jk] where f[jx+jk] = ipio2[jv+jk] */
-	j = jv-jx; m = jx+jk;
-	for (i=0; i<=m; i++,j++)
-		f[i] = j<0 ? 0.0 : (double)ipio2[j];
+  /* set up f[0] to f[jx+jk] where f[jx+jk] = ipio2[jv+jk] */
+  j = jv - jx;
+  m = jx + jk;
+  for (i = 0; i <= m; i++, j++)
+    f[i] = j < 0 ? 0.0 : (double)ipio2[j];
 
-	/* compute q[0],q[1],...q[jk] */
-	for (i=0; i<=jk; i++) {
-		for (j=0,fw=0.0; j<=jx; j++)
-			fw += x[j]*f[jx+i-j];
-		q[i] = fw;
-	}
+  /* compute q[0],q[1],...q[jk] */
+  for (i = 0; i <= jk; i++) {
+    for (j = 0, fw = 0.0; j <= jx; j++)
+      fw += x[j] * f[jx + i - j];
+    q[i] = fw;
+  }
 
-	jz = jk;
+  jz = jk;
 recompute:
-	/* distill q[] into iq[] reversingly */
-	for (i=0,j=jz,z=q[jz]; j>0; i++,j--) {
-		fw    = (double)(int32_t)(0x1p-24*z);
-		iq[i] = (int32_t)(z - 0x1p24*fw);
-		z     = q[j-1]+fw;
-	}
+  /* distill q[] into iq[] reversingly */
+  for (i = 0, j = jz, z = q[jz]; j > 0; i++, j--) {
+    fw = (double)(int32_t)(0x1p-24 * z);
+    iq[i] = (int32_t)(z - 0x1p24 * fw);
+    z = q[j - 1] + fw;
+  }
 
-	/* compute n */
-	z  = scalbn(z,q0);       /* actual value of z */
-	z -= 8.0*floor(z*0.125); /* trim off integer >= 8 */
-	n  = (int32_t)z;
-	z -= (double)n;
-	ih = 0;
-	if (q0 > 0) {  /* need iq[jz-1] to determine n */
-		i  = iq[jz-1]>>(24-q0); n += i;
-		iq[jz-1] -= i<<(24-q0);
-		ih = iq[jz-1]>>(23-q0);
-	}
-	else if (q0 == 0) ih = iq[jz-1]>>23;
-	else if (z >= 0.5) ih = 2;
+  /* compute n */
+  z = scalbn(z, q0);           /* actual value of z */
+  z -= 8.0 * floor(z * 0.125); /* trim off integer >= 8 */
+  n = (int32_t)z;
+  z -= (double)n;
+  ih = 0;
+  if (q0 > 0) { /* need iq[jz-1] to determine n */
+    i = iq[jz - 1] >> (24 - q0);
+    n += i;
+    iq[jz - 1] -= i << (24 - q0);
+    ih = iq[jz - 1] >> (23 - q0);
+  } else if (q0 == 0)
+    ih = iq[jz - 1] >> 23;
+  else if (z >= 0.5)
+    ih = 2;
 
-	if (ih > 0) {  /* q > 0.5 */
-		n += 1; carry = 0;
-		for (i=0; i<jz; i++) {  /* compute 1-q */
-			j = iq[i];
-			if (carry == 0) {
-				if (j != 0) {
-					carry = 1;
-					iq[i] = 0x1000000 - j;
-				}
-			} else
-				iq[i] = 0xffffff - j;
-		}
-		if (q0 > 0) {  /* rare case: chance is 1 in 12 */
-			switch(q0) {
-			case 1:
-				iq[jz-1] &= 0x7fffff; break;
-			case 2:
-				iq[jz-1] &= 0x3fffff; break;
-			}
-		}
-		if (ih == 2) {
-			z = 1.0 - z;
-			if (carry != 0)
-				z -= scalbn(1.0,q0);
-		}
-	}
+  if (ih > 0) { /* q > 0.5 */
+    n += 1;
+    carry = 0;
+    for (i = 0; i < jz; i++) { /* compute 1-q */
+      j = iq[i];
+      if (carry == 0) {
+        if (j != 0) {
+          carry = 1;
+          iq[i] = 0x1000000 - j;
+        }
+      } else
+        iq[i] = 0xffffff - j;
+    }
+    if (q0 > 0) { /* rare case: chance is 1 in 12 */
+      switch (q0) {
+        case 1:
+          iq[jz - 1] &= 0x7fffff;
+          break;
+        case 2:
+          iq[jz - 1] &= 0x3fffff;
+          break;
+      }
+    }
+    if (ih == 2) {
+      z = 1.0 - z;
+      if (carry != 0)
+        z -= scalbn(1.0, q0);
+    }
+  }
 
-	/* check if recomputation is needed */
-	if (z == 0.0) {
-		j = 0;
-		for (i=jz-1; i>=jk; i--) j |= iq[i];
-		if (j == 0) {  /* need recomputation */
-			for (k=1; iq[jk-k]==0; k++);  /* k = no. of terms needed */
+  /* check if recomputation is needed */
+  if (z == 0.0) {
+    j = 0;
+    for (i = jz - 1; i >= jk; i--)
+      j |= iq[i];
+    if (j == 0) { /* need recomputation */
+      for (k = 1; iq[jk - k] == 0; k++)
+        ; /* k = no. of terms needed */
 
-			for (i=jz+1; i<=jz+k; i++) {  /* add q[jz+1] to q[jz+k] */
-				f[jx+i] = (double)ipio2[jv+i];
-				for (j=0,fw=0.0; j<=jx; j++)
-					fw += x[j]*f[jx+i-j];
-				q[i] = fw;
-			}
-			jz += k;
-			goto recompute;
-		}
-	}
+      for (i = jz + 1; i <= jz + k; i++) { /* add q[jz+1] to q[jz+k] */
+        f[jx + i] = (double)ipio2[jv + i];
+        for (j = 0, fw = 0.0; j <= jx; j++)
+          fw += x[j] * f[jx + i - j];
+        q[i] = fw;
+      }
+      jz += k;
+      goto recompute;
+    }
+  }
 
-	/* chop off zero terms */
-	if (z == 0.0) {
-		jz -= 1;
-		q0 -= 24;
-		while (iq[jz] == 0) {
-			jz--;
-			q0 -= 24;
-		}
-	} else { /* break z into 24-bit if necessary */
-		z = scalbn(z,-q0);
-		if (z >= 0x1p24) {
-			fw = (double)(int32_t)(0x1p-24*z);
-			iq[jz] = (int32_t)(z - 0x1p24*fw);
-			jz += 1;
-			q0 += 24;
-			iq[jz] = (int32_t)fw;
-		} else
-			iq[jz] = (int32_t)z;
-	}
+  /* chop off zero terms */
+  if (z == 0.0) {
+    jz -= 1;
+    q0 -= 24;
+    while (iq[jz] == 0) {
+      jz--;
+      q0 -= 24;
+    }
+  } else { /* break z into 24-bit if necessary */
+    z = scalbn(z, -q0);
+    if (z >= 0x1p24) {
+      fw = (double)(int32_t)(0x1p-24 * z);
+      iq[jz] = (int32_t)(z - 0x1p24 * fw);
+      jz += 1;
+      q0 += 24;
+      iq[jz] = (int32_t)fw;
+    } else
+      iq[jz] = (int32_t)z;
+  }
 
-	/* convert integer "bit" chunk to floating-point value */
-	fw = scalbn(1.0,q0);
-	for (i=jz; i>=0; i--) {
-		q[i] = fw*(double)iq[i];
-		fw *= 0x1p-24;
-	}
+  /* convert integer "bit" chunk to floating-point value */
+  fw = scalbn(1.0, q0);
+  for (i = jz; i >= 0; i--) {
+    q[i] = fw * (double)iq[i];
+    fw *= 0x1p-24;
+  }
 
-	/* compute PIo2[0,...,jp]*q[jz,...,0] */
-	for(i=jz; i>=0; i--) {
-		for (fw=0.0,k=0; k<=jp && k<=jz-i; k++)
-			fw += PIo2[k]*q[i+k];
-		fq[jz-i] = fw;
-	}
+  /* compute PIo2[0,...,jp]*q[jz,...,0] */
+  for (i = jz; i >= 0; i--) {
+    for (fw = 0.0, k = 0; k <= jp && k <= jz - i; k++)
+      fw += PIo2[k] * q[i + k];
+    fq[jz - i] = fw;
+  }
 
-	/* compress fq[] into y[] */
-	switch(prec) {
-	case 0:
-		fw = 0.0;
-		for (i=jz; i>=0; i--)
-			fw += fq[i];
-		y[0] = ih==0 ? fw : -fw;
-		break;
-	case 1:
-	case 2:
-		fw = 0.0;
-		for (i=jz; i>=0; i--)
-			fw += fq[i];
-		// TODO: drop excess precision here once double_t is used
-		fw = (double)fw;
-		y[0] = ih==0 ? fw : -fw;
-		fw = fq[0]-fw;
-		for (i=1; i<=jz; i++)
-			fw += fq[i];
-		y[1] = ih==0 ? fw : -fw;
-		break;
-	case 3:  /* painful */
-		for (i=jz; i>0; i--) {
-			fw      = fq[i-1]+fq[i];
-			fq[i]  += fq[i-1]-fw;
-			fq[i-1] = fw;
-		}
-		for (i=jz; i>1; i--) {
-			fw      = fq[i-1]+fq[i];
-			fq[i]  += fq[i-1]-fw;
-			fq[i-1] = fw;
-		}
-		for (fw=0.0,i=jz; i>=2; i--)
-			fw += fq[i];
-		if (ih==0) {
-			y[0] =  fq[0]; y[1] =  fq[1]; y[2] =  fw;
-		} else {
-			y[0] = -fq[0]; y[1] = -fq[1]; y[2] = -fw;
-		}
-	}
-	return n&7;
+  /* compress fq[] into y[] */
+  switch (prec) {
+    case 0:
+      fw = 0.0;
+      for (i = jz; i >= 0; i--)
+        fw += fq[i];
+      y[0] = ih == 0 ? fw : -fw;
+      break;
+    case 1:
+    case 2:
+      fw = 0.0;
+      for (i = jz; i >= 0; i--)
+        fw += fq[i];
+      // TODO: drop excess precision here once double_t is used
+      fw = (double)fw;
+      y[0] = ih == 0 ? fw : -fw;
+      fw = fq[0] - fw;
+      for (i = 1; i <= jz; i++)
+        fw += fq[i];
+      y[1] = ih == 0 ? fw : -fw;
+      break;
+    case 3: /* painful */
+      for (i = jz; i > 0; i--) {
+        fw = fq[i - 1] + fq[i];
+        fq[i] += fq[i - 1] - fw;
+        fq[i - 1] = fw;
+      }
+      for (i = jz; i > 1; i--) {
+        fw = fq[i - 1] + fq[i];
+        fq[i] += fq[i - 1] - fw;
+        fq[i - 1] = fw;
+      }
+      for (fw = 0.0, i = jz; i >= 2; i--)
+        fw += fq[i];
+      if (ih == 0) {
+        y[0] = fq[0];
+        y[1] = fq[1];
+        y[2] = fw;
+      } else {
+        y[0] = -fq[0];
+        y[1] = -fq[1];
+        y[2] = -fw;
+      }
+  }
+  return n & 7;
 }
diff --git a/fusl/src/math/__rem_pio2f.c b/fusl/src/math/__rem_pio2f.c
index 4473c1c..e1d6a0d 100644
--- a/fusl/src/math/__rem_pio2f.c
+++ b/fusl/src/math/__rem_pio2f.c
@@ -22,9 +22,9 @@
 
 #include "libm.h"
 
-#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1
+#if FLT_EVAL_METHOD == 0 || FLT_EVAL_METHOD == 1
 #define EPS DBL_EPSILON
-#elif FLT_EVAL_METHOD==2
+#elif FLT_EVAL_METHOD == 2
 #define EPS LDBL_EPSILON
 #endif
 
@@ -33,43 +33,45 @@
  * pio2_1:   first 25 bits of pi/2
  * pio2_1t:  pi/2 - pio2_1
  */
-static const double
-toint   = 1.5/EPS,
-invpio2 = 6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */
-pio2_1  = 1.57079631090164184570e+00, /* 0x3FF921FB, 0x50000000 */
-pio2_1t = 1.58932547735281966916e-08; /* 0x3E5110b4, 0x611A6263 */
+static const double toint = 1.5 / EPS,
+                    invpio2 =
+                        6.36619772367581382433e-01, /* 0x3FE45F30, 0x6DC9C883 */
+    pio2_1 = 1.57079631090164184570e+00,            /* 0x3FF921FB, 0x50000000 */
+    pio2_1t = 1.58932547735281966916e-08;           /* 0x3E5110b4, 0x611A6263 */
 
-int __rem_pio2f(float x, double *y)
-{
-	union {float f; uint32_t i;} u = {x};
-	double tx[1],ty[1];
-	double_t fn;
-	uint32_t ix;
-	int n, sign, e0;
+int __rem_pio2f(float x, double* y) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  double tx[1], ty[1];
+  double_t fn;
+  uint32_t ix;
+  int n, sign, e0;
 
-	ix = u.i & 0x7fffffff;
-	/* 25+53 bit pi is good enough for medium size */
-	if (ix < 0x4dc90fdb) {  /* |x| ~< 2^28*(pi/2), medium size */
-		/* Use a specialized rint() to get fn.  Assume round-to-nearest. */
-		fn = (double_t)x*invpio2 + toint - toint;
-		n  = (int32_t)fn;
-		*y = x - fn*pio2_1 - fn*pio2_1t;
-		return n;
-	}
-	if(ix>=0x7f800000) {  /* x is inf or NaN */
-		*y = x-x;
-		return 0;
-	}
-	/* scale x into [2^23, 2^24-1] */
-	sign = u.i>>31;
-	e0 = (ix>>23) - (0x7f+23);  /* e0 = ilogb(|x|)-23, positive */
-	u.i = ix - (e0<<23);
-	tx[0] = u.f;
-	n  =  __rem_pio2_large(tx,ty,e0,1,0);
-	if (sign) {
-		*y = -ty[0];
-		return -n;
-	}
-	*y = ty[0];
-	return n;
+  ix = u.i & 0x7fffffff;
+  /* 25+53 bit pi is good enough for medium size */
+  if (ix < 0x4dc90fdb) { /* |x| ~< 2^28*(pi/2), medium size */
+    /* Use a specialized rint() to get fn.  Assume round-to-nearest. */
+    fn = (double_t)x * invpio2 + toint - toint;
+    n = (int32_t)fn;
+    *y = x - fn * pio2_1 - fn * pio2_1t;
+    return n;
+  }
+  if (ix >= 0x7f800000) { /* x is inf or NaN */
+    *y = x - x;
+    return 0;
+  }
+  /* scale x into [2^23, 2^24-1] */
+  sign = u.i >> 31;
+  e0 = (ix >> 23) - (0x7f + 23); /* e0 = ilogb(|x|)-23, positive */
+  u.i = ix - (e0 << 23);
+  tx[0] = u.f;
+  n = __rem_pio2_large(tx, ty, e0, 1, 0);
+  if (sign) {
+    *y = -ty[0];
+    return -n;
+  }
+  *y = ty[0];
+  return n;
 }
diff --git a/fusl/src/math/__rem_pio2l.c b/fusl/src/math/__rem_pio2l.c
index 77255bd..4b8693d 100644
--- a/fusl/src/math/__rem_pio2l.c
+++ b/fusl/src/math/__rem_pio2l.c
@@ -20,11 +20,13 @@
  * use __rem_pio2_large() for large x
  */
 
-static const long double toint = 1.5/LDBL_EPSILON;
+static const long double toint = 1.5 / LDBL_EPSILON;
 
 #if LDBL_MANT_DIG == 64
 /* u ~< 0x1p25*pi/2 */
-#define SMALL(u) (((u.i.se & 0x7fffU)<<16 | u.i.m>>48) < ((0x3fff + 25)<<16 | 0x921f>>1 | 0x8000))
+#define SMALL(u)                              \
+  (((u.i.se & 0x7fffU) << 16 | u.i.m >> 48) < \
+   ((0x3fff + 25) << 16 | 0x921f >> 1 | 0x8000))
 #define QUOBITS(x) ((uint32_t)(int32_t)x & 0x7fffffff)
 #define ROUND1 22
 #define ROUND2 61
@@ -39,103 +41,118 @@
  * pio2_3:   third  39 bits of pi/2
  * pio2_3t:  pi/2 - (pio2_1+pio2_2+pio2_3)
  */
-static const double
-pio2_1 =  1.57079632679597125389e+00, /* 0x3FF921FB, 0x54444000 */
-pio2_2 = -1.07463465549783099519e-12, /* -0x12e7b967674000.0p-92 */
-pio2_3 =  6.36831716351370313614e-25; /*  0x18a2e037074000.0p-133 */
+static const double pio2_1 =
+                        1.57079632679597125389e+00, /* 0x3FF921FB, 0x54444000 */
+    pio2_2 = -1.07463465549783099519e-12, /* -0x12e7b967674000.0p-92 */
+    pio2_3 = 6.36831716351370313614e-25;  /*  0x18a2e037074000.0p-133 */
 static const long double
-invpio2 =  6.36619772367581343076e-01L, /*  0xa2f9836e4e44152a.0p-64 */
-pio2_1t = -1.07463465549719416346e-12L, /* -0x973dcb3b399d747f.0p-103 */
-pio2_2t =  6.36831716351095013979e-25L, /*  0xc51701b839a25205.0p-144 */
-pio2_3t = -2.75299651904407171810e-37L; /* -0xbb5bf6c7ddd660ce.0p-185 */
+    invpio2 = 6.36619772367581343076e-01L,  /*  0xa2f9836e4e44152a.0p-64 */
+    pio2_1t = -1.07463465549719416346e-12L, /* -0x973dcb3b399d747f.0p-103 */
+    pio2_2t = 6.36831716351095013979e-25L,  /*  0xc51701b839a25205.0p-144 */
+    pio2_3t = -2.75299651904407171810e-37L; /* -0xbb5bf6c7ddd660ce.0p-185 */
 #elif LDBL_MANT_DIG == 113
 /* u ~< 0x1p45*pi/2 */
-#define SMALL(u) (((u.i.se & 0x7fffU)<<16 | u.i.top) < ((0x3fff + 45)<<16 | 0x921f))
+#define SMALL(u) \
+  (((u.i.se & 0x7fffU) << 16 | u.i.top) < ((0x3fff + 45) << 16 | 0x921f))
 #define QUOBITS(x) ((uint32_t)(int64_t)x & 0x7fffffff)
 #define ROUND1 51
 #define ROUND2 119
 #define NX 5
 #define NY 3
 static const long double
-invpio2 =  6.3661977236758134307553505349005747e-01L,	/*  0x145f306dc9c882a53f84eafa3ea6a.0p-113 */
-pio2_1  =  1.5707963267948966192292994253909555e+00L,	/*  0x1921fb54442d18469800000000000.0p-112 */
-pio2_1t =  2.0222662487959507323996846200947577e-21L,	/*  0x13198a2e03707344a4093822299f3.0p-181 */
-pio2_2  =  2.0222662487959507323994779168837751e-21L,	/*  0x13198a2e03707344a400000000000.0p-181 */
-pio2_2t =  2.0670321098263988236496903051604844e-43L,	/*  0x127044533e63a0105df531d89cd91.0p-254 */
-pio2_3  =  2.0670321098263988236499468110329591e-43L,	/*  0x127044533e63a0105e00000000000.0p-254 */
-pio2_3t = -2.5650587247459238361625433492959285e-65L;	/* -0x159c4ec64ddaeb5f78671cbfb2210.0p-327 */
+    invpio2 =
+        6.3661977236758134307553505349005747e-01L, /*  0x145f306dc9c882a53f84eafa3ea6a.0p-113
+                                                      */
+    pio2_1 =
+        1.5707963267948966192292994253909555e+00L, /*  0x1921fb54442d18469800000000000.0p-112
+                                                      */
+    pio2_1t =
+        2.0222662487959507323996846200947577e-21L, /*  0x13198a2e03707344a4093822299f3.0p-181
+                                                      */
+    pio2_2 =
+        2.0222662487959507323994779168837751e-21L, /*  0x13198a2e03707344a400000000000.0p-181
+                                                      */
+    pio2_2t =
+        2.0670321098263988236496903051604844e-43L, /*  0x127044533e63a0105df531d89cd91.0p-254
+                                                      */
+    pio2_3 =
+        2.0670321098263988236499468110329591e-43L, /*  0x127044533e63a0105e00000000000.0p-254
+                                                      */
+    pio2_3t =
+        -2.5650587247459238361625433492959285e-65L; /* -0x159c4ec64ddaeb5f78671cbfb2210.0p-327
+                                                       */
 #endif
 
-int __rem_pio2l(long double x, long double *y)
-{
-	union ldshape u,uz;
-	long double z,w,t,r,fn;
-	double tx[NX],ty[NY];
-	int ex,ey,n,i;
+int __rem_pio2l(long double x, long double* y) {
+  union ldshape u, uz;
+  long double z, w, t, r, fn;
+  double tx[NX], ty[NY];
+  int ex, ey, n, i;
 
-	u.f = x;
-	ex = u.i.se & 0x7fff;
-	if (SMALL(u)) {
-		/* rint(x/(pi/2)), Assume round-to-nearest. */
-		fn = x*invpio2 + toint - toint;
-		n = QUOBITS(fn);
-		r = x-fn*pio2_1;
-		w = fn*pio2_1t;  /* 1st round good to 102/180 bits (ld80/ld128) */
-		y[0] = r-w;
-		u.f = y[0];
-		ey = u.i.se & 0x7fff;
-		if (ex - ey > ROUND1) {  /* 2nd iteration needed, good to 141/248 (ld80/ld128) */
-			t = r;
-			w = fn*pio2_2;
-			r = t-w;
-			w = fn*pio2_2t-((t-r)-w);
-			y[0] = r-w;
-			u.f = y[0];
-			ey = u.i.se & 0x7fff;
-			if (ex - ey > ROUND2) {  /* 3rd iteration, good to 180/316 bits */
-				t = r; /* will cover all possible cases (not verified for ld128) */
-				w = fn*pio2_3;
-				r = t-w;
-				w = fn*pio2_3t-((t-r)-w);
-				y[0] = r-w;
-			}
-		}
-		y[1] = (r - y[0]) - w;
-		return n;
-	}
-	/*
-	 * all other (large) arguments
-	 */
-	if (ex == 0x7fff) {                /* x is inf or NaN */
-		y[0] = y[1] = x - x;
-		return 0;
-	}
-	/* set z = scalbn(|x|,-ilogb(x)+23) */
-	uz.f = x;
-	uz.i.se = 0x3fff + 23;
-	z = uz.f;
-	for (i=0; i < NX - 1; i++) {
-		tx[i] = (double)(int32_t)z;
-		z     = (z-tx[i])*0x1p24;
-	}
-	tx[i] = z;
-	while (tx[i] == 0)
-		i--;
-	n = __rem_pio2_large(tx, ty, ex-0x3fff-23, i+1, NY);
-	w = ty[1];
-	if (NY == 3)
-		w += ty[2];
-	r = ty[0] + w;
-	/* TODO: for ld128 this does not follow the recommendation of the
-	comments of __rem_pio2_large which seem wrong if |ty[0]| > |ty[1]+ty[2]| */
-	w -= r - ty[0];
-	if (u.i.se >> 15) {
-		y[0] = -r;
-		y[1] = -w;
-		return -n;
-	}
-	y[0] = r;
-	y[1] = w;
-	return n;
+  u.f = x;
+  ex = u.i.se & 0x7fff;
+  if (SMALL(u)) {
+    /* rint(x/(pi/2)), Assume round-to-nearest. */
+    fn = x * invpio2 + toint - toint;
+    n = QUOBITS(fn);
+    r = x - fn * pio2_1;
+    w = fn * pio2_1t; /* 1st round good to 102/180 bits (ld80/ld128) */
+    y[0] = r - w;
+    u.f = y[0];
+    ey = u.i.se & 0x7fff;
+    if (ex - ey >
+        ROUND1) { /* 2nd iteration needed, good to 141/248 (ld80/ld128) */
+      t = r;
+      w = fn * pio2_2;
+      r = t - w;
+      w = fn * pio2_2t - ((t - r) - w);
+      y[0] = r - w;
+      u.f = y[0];
+      ey = u.i.se & 0x7fff;
+      if (ex - ey > ROUND2) { /* 3rd iteration, good to 180/316 bits */
+        t = r; /* will cover all possible cases (not verified for ld128) */
+        w = fn * pio2_3;
+        r = t - w;
+        w = fn * pio2_3t - ((t - r) - w);
+        y[0] = r - w;
+      }
+    }
+    y[1] = (r - y[0]) - w;
+    return n;
+  }
+  /*
+   * all other (large) arguments
+   */
+  if (ex == 0x7fff) { /* x is inf or NaN */
+    y[0] = y[1] = x - x;
+    return 0;
+  }
+  /* set z = scalbn(|x|,-ilogb(x)+23) */
+  uz.f = x;
+  uz.i.se = 0x3fff + 23;
+  z = uz.f;
+  for (i = 0; i < NX - 1; i++) {
+    tx[i] = (double)(int32_t)z;
+    z = (z - tx[i]) * 0x1p24;
+  }
+  tx[i] = z;
+  while (tx[i] == 0)
+    i--;
+  n = __rem_pio2_large(tx, ty, ex - 0x3fff - 23, i + 1, NY);
+  w = ty[1];
+  if (NY == 3)
+    w += ty[2];
+  r = ty[0] + w;
+  /* TODO: for ld128 this does not follow the recommendation of the
+  comments of __rem_pio2_large which seem wrong if |ty[0]| > |ty[1]+ty[2]| */
+  w -= r - ty[0];
+  if (u.i.se >> 15) {
+    y[0] = -r;
+    y[1] = -w;
+    return -n;
+  }
+  y[0] = r;
+  y[1] = w;
+  return n;
 }
 #endif
diff --git a/fusl/src/math/__signbit.c b/fusl/src/math/__signbit.c
index e700b6b..7368479 100644
--- a/fusl/src/math/__signbit.c
+++ b/fusl/src/math/__signbit.c
@@ -1,13 +1,10 @@
 #include "libm.h"
 
 // FIXME: macro in math.h
-int __signbit(double x)
-{
-	union {
-		double d;
-		uint64_t i;
-	} y = { x };
-	return y.i>>63;
+int __signbit(double x) {
+  union {
+    double d;
+    uint64_t i;
+  } y = {x};
+  return y.i >> 63;
 }
-
-
diff --git a/fusl/src/math/__signbitf.c b/fusl/src/math/__signbitf.c
index 40ad3cf..a4a8fb5 100644
--- a/fusl/src/math/__signbitf.c
+++ b/fusl/src/math/__signbitf.c
@@ -1,11 +1,10 @@
 #include "libm.h"
 
 // FIXME: macro in math.h
-int __signbitf(float x)
-{
-	union {
-		float f;
-		uint32_t i;
-	} y = { x };
-	return y.i>>31;
+int __signbitf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } y = {x};
+  return y.i >> 31;
 }
diff --git a/fusl/src/math/__signbitl.c b/fusl/src/math/__signbitl.c
index 63b3dc5..1660ac0 100644
--- a/fusl/src/math/__signbitl.c
+++ b/fusl/src/math/__signbitl.c
@@ -1,14 +1,12 @@
 #include "libm.h"
 
 #if (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
-int __signbitl(long double x)
-{
-	union ldshape u = {x};
-	return u.i.se >> 15;
+int __signbitl(long double x) {
+  union ldshape u = {x};
+  return u.i.se >> 15;
 }
 #elif LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-int __signbitl(long double x)
-{
-	return __signbit(x);
+int __signbitl(long double x) {
+  return __signbit(x);
 }
 #endif
diff --git a/fusl/src/math/__sin.c b/fusl/src/math/__sin.c
index 4030949..94fecb8 100644
--- a/fusl/src/math/__sin.c
+++ b/fusl/src/math/__sin.c
@@ -42,23 +42,22 @@
 #include "libm.h"
 
 static const double
-S1  = -1.66666666666666324348e-01, /* 0xBFC55555, 0x55555549 */
-S2  =  8.33333333332248946124e-03, /* 0x3F811111, 0x1110F8A6 */
-S3  = -1.98412698298579493134e-04, /* 0xBF2A01A0, 0x19C161D5 */
-S4  =  2.75573137070700676789e-06, /* 0x3EC71DE3, 0x57B1FE7D */
-S5  = -2.50507602534068634195e-08, /* 0xBE5AE5E6, 0x8A2B9CEB */
-S6  =  1.58969099521155010221e-10; /* 0x3DE5D93A, 0x5ACFD57C */
+    S1 = -1.66666666666666324348e-01, /* 0xBFC55555, 0x55555549 */
+    S2 = 8.33333333332248946124e-03,  /* 0x3F811111, 0x1110F8A6 */
+    S3 = -1.98412698298579493134e-04, /* 0xBF2A01A0, 0x19C161D5 */
+    S4 = 2.75573137070700676789e-06,  /* 0x3EC71DE3, 0x57B1FE7D */
+    S5 = -2.50507602534068634195e-08, /* 0xBE5AE5E6, 0x8A2B9CEB */
+    S6 = 1.58969099521155010221e-10;  /* 0x3DE5D93A, 0x5ACFD57C */
 
-double __sin(double x, double y, int iy)
-{
-	double_t z,r,v,w;
+double __sin(double x, double y, int iy) {
+  double_t z, r, v, w;
 
-	z = x*x;
-	w = z*z;
-	r = S2 + z*(S3 + z*S4) + z*w*(S5 + z*S6);
-	v = z*x;
-	if (iy == 0)
-		return x + v*(S1 + z*r);
-	else
-		return x - ((z*(0.5*y - v*r) - y) - v*S1);
+  z = x * x;
+  w = z * z;
+  r = S2 + z * (S3 + z * S4) + z * w * (S5 + z * S6);
+  v = z * x;
+  if (iy == 0)
+    return x + v * (S1 + z * r);
+  else
+    return x - ((z * (0.5 * y - v * r) - y) - v * S1);
 }
diff --git a/fusl/src/math/__sindf.c b/fusl/src/math/__sindf.c
index 8fec2a3..82e540f 100644
--- a/fusl/src/math/__sindf.c
+++ b/fusl/src/math/__sindf.c
@@ -17,20 +17,18 @@
 #include "libm.h"
 
 /* |sin(x)/x - s(x)| < 2**-37.5 (~[-4.89e-12, 4.824e-12]). */
-static const double
-S1 = -0x15555554cbac77.0p-55, /* -0.166666666416265235595 */
-S2 =  0x111110896efbb2.0p-59, /*  0.0083333293858894631756 */
-S3 = -0x1a00f9e2cae774.0p-65, /* -0.000198393348360966317347 */
-S4 =  0x16cd878c3b46a7.0p-71; /*  0.0000027183114939898219064 */
+static const double S1 = -0x15555554cbac77.0p-55, /* -0.166666666416265235595 */
+    S2 = 0x111110896efbb2.0p-59,  /*  0.0083333293858894631756 */
+    S3 = -0x1a00f9e2cae774.0p-65, /* -0.000198393348360966317347 */
+    S4 = 0x16cd878c3b46a7.0p-71;  /*  0.0000027183114939898219064 */
 
-float __sindf(double x)
-{
-	double_t r, s, w, z;
+float __sindf(double x) {
+  double_t r, s, w, z;
 
-	/* Try to optimize for parallel evaluation as in __tandf.c. */
-	z = x*x;
-	w = z*z;
-	r = S3 + z*S4;
-	s = z*x;
-	return (x + s*(S1 + z*S2)) + s*w*r;
+  /* Try to optimize for parallel evaluation as in __tandf.c. */
+  z = x * x;
+  w = z * z;
+  r = S3 + z * S4;
+  s = z * x;
+  return (x + s * (S1 + z * S2)) + s * w * r;
 }
diff --git a/fusl/src/math/__sinl.c b/fusl/src/math/__sinl.c
index 2525bbe..ee3e9d0 100644
--- a/fusl/src/math/__sinl.c
+++ b/fusl/src/math/__sinl.c
@@ -25,17 +25,17 @@
  *
  * See __cosl.c for more details about the polynomial.
  */
-static const long double
-S1 = -0.166666666666666666671L;   /* -0xaaaaaaaaaaaaaaab.0p-66 */
-static const double
-S2 =  0.0083333333333333332,      /*  0x11111111111111.0p-59 */
-S3 = -0.00019841269841269427,     /* -0x1a01a01a019f81.0p-65 */
-S4 =  0.0000027557319223597490,   /*  0x171de3a55560f7.0p-71 */
-S5 = -0.000000025052108218074604, /* -0x1ae64564f16cad.0p-78 */
-S6 =  1.6059006598854211e-10,     /*  0x161242b90243b5.0p-85 */
-S7 = -7.6429779983024564e-13,     /* -0x1ae42ebd1b2e00.0p-93 */
-S8 =  2.6174587166648325e-15;     /*  0x179372ea0b3f64.0p-101 */
-#define POLY(z) (S2+z*(S3+z*(S4+z*(S5+z*(S6+z*(S7+z*S8))))))
+static const long double S1 =
+    -0.166666666666666666671L;                  /* -0xaaaaaaaaaaaaaaab.0p-66 */
+static const double S2 = 0.0083333333333333332, /*  0x11111111111111.0p-59 */
+    S3 = -0.00019841269841269427,               /* -0x1a01a01a019f81.0p-65 */
+    S4 = 0.0000027557319223597490,              /*  0x171de3a55560f7.0p-71 */
+    S5 = -0.000000025052108218074604,           /* -0x1ae64564f16cad.0p-78 */
+    S6 = 1.6059006598854211e-10,                /*  0x161242b90243b5.0p-85 */
+    S7 = -7.6429779983024564e-13,               /* -0x1ae42ebd1b2e00.0p-93 */
+    S8 = 2.6174587166648325e-15;                /*  0x179372ea0b3f64.0p-101 */
+#define POLY(z) \
+  (S2 + z * (S3 + z * (S4 + z * (S5 + z * (S6 + z * (S7 + z * S8))))))
 #elif LDBL_MANT_DIG == 113
 /*
  * ld128 version of __sin.c.  See __sin.c for most comments.
@@ -47,32 +47,39 @@
  * See __cosl.c for more details about the polynomial.
  */
 static const long double
-S1 = -0.16666666666666666666666666666666666606732416116558L,
-S2 =  0.0083333333333333333333333333333331135404851288270047L,
-S3 = -0.00019841269841269841269841269839935785325638310428717L,
-S4 =  0.27557319223985890652557316053039946268333231205686e-5L,
-S5 = -0.25052108385441718775048214826384312253862930064745e-7L,
-S6 =  0.16059043836821614596571832194524392581082444805729e-9L,
-S7 = -0.76471637318198151807063387954939213287488216303768e-12L,
-S8 =  0.28114572543451292625024967174638477283187397621303e-14L;
+    S1 = -0.16666666666666666666666666666666666606732416116558L,
+    S2 = 0.0083333333333333333333333333333331135404851288270047L,
+    S3 = -0.00019841269841269841269841269839935785325638310428717L,
+    S4 = 0.27557319223985890652557316053039946268333231205686e-5L,
+    S5 = -0.25052108385441718775048214826384312253862930064745e-7L,
+    S6 = 0.16059043836821614596571832194524392581082444805729e-9L,
+    S7 = -0.76471637318198151807063387954939213287488216303768e-12L,
+    S8 = 0.28114572543451292625024967174638477283187397621303e-14L;
 static const double
-S9  = -0.82206352458348947812512122163446202498005154296863e-17,
-S10 =  0.19572940011906109418080609928334380560135358385256e-19,
-S11 = -0.38680813379701966970673724299207480965452616911420e-22,
-S12 =  0.64038150078671872796678569586315881020659912139412e-25;
-#define POLY(z) (S2+z*(S3+z*(S4+z*(S5+z*(S6+z*(S7+z*(S8+ \
-	z*(S9+z*(S10+z*(S11+z*S12))))))))))
+    S9 = -0.82206352458348947812512122163446202498005154296863e-17,
+    S10 = 0.19572940011906109418080609928334380560135358385256e-19,
+    S11 = -0.38680813379701966970673724299207480965452616911420e-22,
+    S12 = 0.64038150078671872796678569586315881020659912139412e-25;
+#define POLY(z)                            \
+  (S2 +                                    \
+   z * (S3 +                               \
+        z * (S4 +                          \
+             z * (S5 +                     \
+                  z * (S6 +                \
+                       z * (S7 +           \
+                            z * (S8 +      \
+                                 z * (S9 + \
+                                      z * (S10 + z * (S11 + z * S12))))))))))
 #endif
 
-long double __sinl(long double x, long double y, int iy)
-{
-	long double z,r,v;
+long double __sinl(long double x, long double y, int iy) {
+  long double z, r, v;
 
-	z = x*x;
-	v = z*x;
-	r = POLY(z);
-	if (iy == 0)
-		return x+v*(S1+z*r);
-	return x-((z*(0.5*y-v*r)-y)-v*S1);
+  z = x * x;
+  v = z * x;
+  r = POLY(z);
+  if (iy == 0)
+    return x + v * (S1 + z * r);
+  return x - ((z * (0.5 * y - v * r) - y) - v * S1);
 }
 #endif
diff --git a/fusl/src/math/__tan.c b/fusl/src/math/__tan.c
index 8019844..543ac87 100644
--- a/fusl/src/math/__tan.c
+++ b/fusl/src/math/__tan.c
@@ -12,7 +12,8 @@
  * kernel tan function on ~[-pi/4, pi/4] (except on -0), pi/4 ~ 0.7854
  * Input x is assumed to be bounded by ~pi/4 in magnitude.
  * Input y is the tail of x.
- * Input odd indicates whether tan (if odd = 0) or -1/tan (if odd = 1) is returned.
+ * Input odd indicates whether tan (if odd = 0) or -1/tan (if odd = 1) is
+ * returned.
  *
  * Algorithm
  *      1. Since tan(-x) = -tan(x), we need only to consider positive x.
@@ -45,66 +46,67 @@
 
 #include "libm.h"
 
-static const double T[] = {
-             3.33333333333334091986e-01, /* 3FD55555, 55555563 */
-             1.33333333333201242699e-01, /* 3FC11111, 1110FE7A */
-             5.39682539762260521377e-02, /* 3FABA1BA, 1BB341FE */
-             2.18694882948595424599e-02, /* 3F9664F4, 8406D637 */
-             8.86323982359930005737e-03, /* 3F8226E3, E96E8493 */
-             3.59207910759131235356e-03, /* 3F6D6D22, C9560328 */
-             1.45620945432529025516e-03, /* 3F57DBC8, FEE08315 */
-             5.88041240820264096874e-04, /* 3F4344D8, F2F26501 */
-             2.46463134818469906812e-04, /* 3F3026F7, 1A8D1068 */
-             7.81794442939557092300e-05, /* 3F147E88, A03792A6 */
-             7.14072491382608190305e-05, /* 3F12B80F, 32F0A7E9 */
-            -1.85586374855275456654e-05, /* BEF375CB, DB605373 */
-             2.59073051863633712884e-05, /* 3EFB2A70, 74BF7AD4 */
+static const double T[] =
+    {
+        3.33333333333334091986e-01,  /* 3FD55555, 55555563 */
+        1.33333333333201242699e-01,  /* 3FC11111, 1110FE7A */
+        5.39682539762260521377e-02,  /* 3FABA1BA, 1BB341FE */
+        2.18694882948595424599e-02,  /* 3F9664F4, 8406D637 */
+        8.86323982359930005737e-03,  /* 3F8226E3, E96E8493 */
+        3.59207910759131235356e-03,  /* 3F6D6D22, C9560328 */
+        1.45620945432529025516e-03,  /* 3F57DBC8, FEE08315 */
+        5.88041240820264096874e-04,  /* 3F4344D8, F2F26501 */
+        2.46463134818469906812e-04,  /* 3F3026F7, 1A8D1068 */
+        7.81794442939557092300e-05,  /* 3F147E88, A03792A6 */
+        7.14072491382608190305e-05,  /* 3F12B80F, 32F0A7E9 */
+        -1.85586374855275456654e-05, /* BEF375CB, DB605373 */
+        2.59073051863633712884e-05,  /* 3EFB2A70, 74BF7AD4 */
 },
-pio4 =       7.85398163397448278999e-01, /* 3FE921FB, 54442D18 */
-pio4lo =     3.06161699786838301793e-17; /* 3C81A626, 33145C07 */
+                    pio4 = 7.85398163397448278999e-01, /* 3FE921FB, 54442D18 */
+    pio4lo = 3.06161699786838301793e-17;               /* 3C81A626, 33145C07 */
 
-double __tan(double x, double y, int odd)
-{
-	double_t z, r, v, w, s, a;
-	double w0, a0;
-	uint32_t hx;
-	int big, sign;
+double __tan(double x, double y, int odd) {
+  double_t z, r, v, w, s, a;
+  double w0, a0;
+  uint32_t hx;
+  int big, sign;
 
-	GET_HIGH_WORD(hx,x);
-	big = (hx&0x7fffffff) >= 0x3FE59428; /* |x| >= 0.6744 */
-	if (big) {
-		sign = hx>>31;
-		if (sign) {
-			x = -x;
-			y = -y;
-		}
-		x = (pio4 - x) + (pio4lo - y);
-		y = 0.0;
-	}
-	z = x * x;
-	w = z * z;
-	/*
-	 * Break x^5*(T[1]+x^2*T[2]+...) into
-	 * x^5(T[1]+x^4*T[3]+...+x^20*T[11]) +
-	 * x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12]))
-	 */
-	r = T[1] + w*(T[3] + w*(T[5] + w*(T[7] + w*(T[9] + w*T[11]))));
-	v = z*(T[2] + w*(T[4] + w*(T[6] + w*(T[8] + w*(T[10] + w*T[12])))));
-	s = z * x;
-	r = y + z*(s*(r + v) + y) + s*T[0];
-	w = x + r;
-	if (big) {
-		s = 1 - 2*odd;
-		v = s - 2.0 * (x + (r - w*w/(w + s)));
-		return sign ? -v : v;
-	}
-	if (!odd)
-		return w;
-	/* -1.0/(x+r) has up to 2ulp error, so compute it accurately */
-	w0 = w;
-	SET_LOW_WORD(w0, 0);
-	v = r - (w0 - x);       /* w0+v = r+x */
-	a0 = a = -1.0 / w;
-	SET_LOW_WORD(a0, 0);
-	return a0 + a*(1.0 + a0*w0 + a0*v);
+  GET_HIGH_WORD(hx, x);
+  big = (hx & 0x7fffffff) >= 0x3FE59428; /* |x| >= 0.6744 */
+  if (big) {
+    sign = hx >> 31;
+    if (sign) {
+      x = -x;
+      y = -y;
+    }
+    x = (pio4 - x) + (pio4lo - y);
+    y = 0.0;
+  }
+  z = x * x;
+  w = z * z;
+  /*
+   * Break x^5*(T[1]+x^2*T[2]+...) into
+   * x^5(T[1]+x^4*T[3]+...+x^20*T[11]) +
+   * x^5(x^2*(T[2]+x^4*T[4]+...+x^22*[T12]))
+   */
+  r = T[1] + w * (T[3] + w * (T[5] + w * (T[7] + w * (T[9] + w * T[11]))));
+  v = z *
+      (T[2] + w * (T[4] + w * (T[6] + w * (T[8] + w * (T[10] + w * T[12])))));
+  s = z * x;
+  r = y + z * (s * (r + v) + y) + s * T[0];
+  w = x + r;
+  if (big) {
+    s = 1 - 2 * odd;
+    v = s - 2.0 * (x + (r - w * w / (w + s)));
+    return sign ? -v : v;
+  }
+  if (!odd)
+    return w;
+  /* -1.0/(x+r) has up to 2ulp error, so compute it accurately */
+  w0 = w;
+  SET_LOW_WORD(w0, 0);
+  v = r - (w0 - x); /* w0+v = r+x */
+  a0 = a = -1.0 / w;
+  SET_LOW_WORD(a0, 0);
+  return a0 + a * (1.0 + a0 * w0 + a0 * v);
 }
diff --git a/fusl/src/math/__tandf.c b/fusl/src/math/__tandf.c
index 25047ee..ccad354 100644
--- a/fusl/src/math/__tandf.c
+++ b/fusl/src/math/__tandf.c
@@ -17,38 +17,37 @@
 
 /* |tan(x)/x - t(x)| < 2**-25.5 (~[-2e-08, 2e-08]). */
 static const double T[] = {
-  0x15554d3418c99f.0p-54, /* 0.333331395030791399758 */
-  0x1112fd38999f72.0p-55, /* 0.133392002712976742718 */
-  0x1b54c91d865afe.0p-57, /* 0.0533812378445670393523 */
-  0x191df3908c33ce.0p-58, /* 0.0245283181166547278873 */
-  0x185dadfcecf44e.0p-61, /* 0.00297435743359967304927 */
-  0x1362b9bf971bcd.0p-59, /* 0.00946564784943673166728 */
+    0x15554d3418c99f.0p-54, /* 0.333331395030791399758 */
+    0x1112fd38999f72.0p-55, /* 0.133392002712976742718 */
+    0x1b54c91d865afe.0p-57, /* 0.0533812378445670393523 */
+    0x191df3908c33ce.0p-58, /* 0.0245283181166547278873 */
+    0x185dadfcecf44e.0p-61, /* 0.00297435743359967304927 */
+    0x1362b9bf971bcd.0p-59, /* 0.00946564784943673166728 */
 };
 
-float __tandf(double x, int odd)
-{
-	double_t z,r,w,s,t,u;
+float __tandf(double x, int odd) {
+  double_t z, r, w, s, t, u;
 
-	z = x*x;
-	/*
-	 * Split up the polynomial into small independent terms to give
-	 * opportunities for parallel evaluation.  The chosen splitting is
-	 * micro-optimized for Athlons (XP, X64).  It costs 2 multiplications
-	 * relative to Horner's method on sequential machines.
-	 *
-	 * We add the small terms from lowest degree up for efficiency on
-	 * non-sequential machines (the lowest degree terms tend to be ready
-	 * earlier).  Apart from this, we don't care about order of
-	 * operations, and don't need to to care since we have precision to
-	 * spare.  However, the chosen splitting is good for accuracy too,
-	 * and would give results as accurate as Horner's method if the
-	 * small terms were added from highest degree down.
-	 */
-	r = T[4] + z*T[5];
-	t = T[2] + z*T[3];
-	w = z*z;
-	s = z*x;
-	u = T[0] + z*T[1];
-	r = (x + s*u) + (s*w)*(t + w*r);
-	return odd ? -1.0/r : r;
+  z = x * x;
+  /*
+   * Split up the polynomial into small independent terms to give
+   * opportunities for parallel evaluation.  The chosen splitting is
+   * micro-optimized for Athlons (XP, X64).  It costs 2 multiplications
+   * relative to Horner's method on sequential machines.
+   *
+   * We add the small terms from lowest degree up for efficiency on
+   * non-sequential machines (the lowest degree terms tend to be ready
+   * earlier).  Apart from this, we don't care about order of
+   * operations, and don't need to to care since we have precision to
+   * spare.  However, the chosen splitting is good for accuracy too,
+   * and would give results as accurate as Horner's method if the
+   * small terms were added from highest degree down.
+   */
+  r = T[4] + z * T[5];
+  t = T[2] + z * T[3];
+  w = z * z;
+  s = z * x;
+  u = T[0] + z * T[1];
+  r = (x + s * u) + (s * w) * (t + w * r);
+  return odd ? -1.0 / r : r;
 }
diff --git a/fusl/src/math/__tanl.c b/fusl/src/math/__tanl.c
index 54abc3d..c6116b0 100644
--- a/fusl/src/math/__tanl.c
+++ b/fusl/src/math/__tanl.c
@@ -25,29 +25,30 @@
  * See __cosl.c for more details about the polynomial.
  */
 static const long double
-T3 =  0.333333333333333333180L,         /*  0xaaaaaaaaaaaaaaa5.0p-65 */
-T5 =  0.133333333333333372290L,         /*  0x88888888888893c3.0p-66 */
-T7 =  0.0539682539682504975744L,        /*  0xdd0dd0dd0dc13ba2.0p-68 */
-pio4   =  0.785398163397448309628L,     /*  0xc90fdaa22168c235.0p-64 */
-pio4lo = -1.25413940316708300586e-20L;  /* -0xece675d1fc8f8cbb.0p-130 */
-static const double
-T9  =  0.021869488536312216,            /*  0x1664f4882cc1c2.0p-58 */
-T11 =  0.0088632355256619590,           /*  0x1226e355c17612.0p-59 */
-T13 =  0.0035921281113786528,           /*  0x1d6d3d185d7ff8.0p-61 */
-T15 =  0.0014558334756312418,           /*  0x17da354aa3f96b.0p-62 */
-T17 =  0.00059003538700862256,          /*  0x13559358685b83.0p-63 */
-T19 =  0.00023907843576635544,          /*  0x1f56242026b5be.0p-65 */
-T21 =  0.000097154625656538905,         /*  0x1977efc26806f4.0p-66 */
-T23 =  0.000038440165747303162,         /*  0x14275a09b3ceac.0p-67 */
-T25 =  0.000018082171885432524,         /*  0x12f5e563e5487e.0p-68 */
-T27 =  0.0000024196006108814377,        /*  0x144c0d80cc6896.0p-71 */
-T29 =  0.0000078293456938132840,        /*  0x106b59141a6cb3.0p-69 */
-T31 = -0.0000032609076735050182,        /* -0x1b5abef3ba4b59.0p-71 */
-T33 =  0.0000023261313142559411;        /*  0x13835436c0c87f.0p-71 */
-#define RPOLY(w) (T5 + w * (T9 + w * (T13 + w * (T17 + w * (T21 + \
-	w * (T25 + w * (T29 + w * T33)))))))
-#define VPOLY(w) (T7 + w * (T11 + w * (T15 + w * (T19 + w * (T23 + \
-	w * (T27 + w * T31))))))
+    T3 = 0.333333333333333333180L,             /*  0xaaaaaaaaaaaaaaa5.0p-65 */
+    T5 = 0.133333333333333372290L,             /*  0x88888888888893c3.0p-66 */
+    T7 = 0.0539682539682504975744L,            /*  0xdd0dd0dd0dc13ba2.0p-68 */
+    pio4 = 0.785398163397448309628L,           /*  0xc90fdaa22168c235.0p-64 */
+    pio4lo = -1.25413940316708300586e-20L;     /* -0xece675d1fc8f8cbb.0p-130 */
+static const double T9 = 0.021869488536312216, /*  0x1664f4882cc1c2.0p-58 */
+    T11 = 0.0088632355256619590,               /*  0x1226e355c17612.0p-59 */
+    T13 = 0.0035921281113786528,               /*  0x1d6d3d185d7ff8.0p-61 */
+    T15 = 0.0014558334756312418,               /*  0x17da354aa3f96b.0p-62 */
+    T17 = 0.00059003538700862256,              /*  0x13559358685b83.0p-63 */
+    T19 = 0.00023907843576635544,              /*  0x1f56242026b5be.0p-65 */
+    T21 = 0.000097154625656538905,             /*  0x1977efc26806f4.0p-66 */
+    T23 = 0.000038440165747303162,             /*  0x14275a09b3ceac.0p-67 */
+    T25 = 0.000018082171885432524,             /*  0x12f5e563e5487e.0p-68 */
+    T27 = 0.0000024196006108814377,            /*  0x144c0d80cc6896.0p-71 */
+    T29 = 0.0000078293456938132840,            /*  0x106b59141a6cb3.0p-69 */
+    T31 = -0.0000032609076735050182,           /* -0x1b5abef3ba4b59.0p-71 */
+    T33 = 0.0000023261313142559411;            /*  0x13835436c0c87f.0p-71 */
+#define RPOLY(w) \
+  (T5 +          \
+   w * (T9 +     \
+        w * (T13 + w * (T17 + w * (T21 + w * (T25 + w * (T29 + w * T33)))))))
+#define VPOLY(w) \
+  (T7 + w * (T11 + w * (T15 + w * (T19 + w * (T23 + w * (T27 + w * T31))))))
 #elif LDBL_MANT_DIG == 113
 /*
  * ld128 version of __tan.c.  See __tan.c for most comments.
@@ -58,86 +59,108 @@
  *
  * See __cosl.c for more details about the polynomial.
  */
-static const long double
-T3 = 0x1.5555555555555555555555555553p-2L,
-T5 = 0x1.1111111111111111111111111eb5p-3L,
-T7 = 0x1.ba1ba1ba1ba1ba1ba1ba1b694cd6p-5L,
-T9 = 0x1.664f4882c10f9f32d6bbe09d8bcdp-6L,
-T11 = 0x1.226e355e6c23c8f5b4f5762322eep-7L,
-T13 = 0x1.d6d3d0e157ddfb5fed8e84e27b37p-9L,
-T15 = 0x1.7da36452b75e2b5fce9ee7c2c92ep-10L,
-T17 = 0x1.355824803674477dfcf726649efep-11L,
-T19 = 0x1.f57d7734d1656e0aceb716f614c2p-13L,
-T21 = 0x1.967e18afcb180ed942dfdc518d6cp-14L,
-T23 = 0x1.497d8eea21e95bc7e2aa79b9f2cdp-15L,
-T25 = 0x1.0b132d39f055c81be49eff7afd50p-16L,
-T27 = 0x1.b0f72d33eff7bfa2fbc1059d90b6p-18L,
-T29 = 0x1.5ef2daf21d1113df38d0fbc00267p-19L,
-T31 = 0x1.1c77d6eac0234988cdaa04c96626p-20L,
-T33 = 0x1.cd2a5a292b180e0bdd701057dfe3p-22L,
-T35 = 0x1.75c7357d0298c01a31d0a6f7d518p-23L,
-T37 = 0x1.2f3190f4718a9a520f98f50081fcp-24L,
-pio4 = 0x1.921fb54442d18469898cc51701b8p-1L,
-pio4lo = 0x1.cd129024e088a67cc74020bbea60p-116L;
+static const long double T3 = 0x1.5555555555555555555555555553p-2L,
+                         T5 = 0x1.1111111111111111111111111eb5p-3L,
+                         T7 = 0x1.ba1ba1ba1ba1ba1ba1ba1b694cd6p-5L,
+                         T9 = 0x1.664f4882c10f9f32d6bbe09d8bcdp-6L,
+                         T11 = 0x1.226e355e6c23c8f5b4f5762322eep-7L,
+                         T13 = 0x1.d6d3d0e157ddfb5fed8e84e27b37p-9L,
+                         T15 = 0x1.7da36452b75e2b5fce9ee7c2c92ep-10L,
+                         T17 = 0x1.355824803674477dfcf726649efep-11L,
+                         T19 = 0x1.f57d7734d1656e0aceb716f614c2p-13L,
+                         T21 = 0x1.967e18afcb180ed942dfdc518d6cp-14L,
+                         T23 = 0x1.497d8eea21e95bc7e2aa79b9f2cdp-15L,
+                         T25 = 0x1.0b132d39f055c81be49eff7afd50p-16L,
+                         T27 = 0x1.b0f72d33eff7bfa2fbc1059d90b6p-18L,
+                         T29 = 0x1.5ef2daf21d1113df38d0fbc00267p-19L,
+                         T31 = 0x1.1c77d6eac0234988cdaa04c96626p-20L,
+                         T33 = 0x1.cd2a5a292b180e0bdd701057dfe3p-22L,
+                         T35 = 0x1.75c7357d0298c01a31d0a6f7d518p-23L,
+                         T37 = 0x1.2f3190f4718a9a520f98f50081fcp-24L,
+                         pio4 = 0x1.921fb54442d18469898cc51701b8p-1L,
+                         pio4lo = 0x1.cd129024e088a67cc74020bbea60p-116L;
 static const double
-T39 =  0.000000028443389121318352,	/*  0x1e8a7592977938.0p-78 */
-T41 =  0.000000011981013102001973,	/*  0x19baa1b1223219.0p-79 */
-T43 =  0.0000000038303578044958070,	/*  0x107385dfb24529.0p-80 */
-T45 =  0.0000000034664378216909893,	/*  0x1dc6c702a05262.0p-81 */
-T47 = -0.0000000015090641701997785,	/* -0x19ecef3569ebb6.0p-82 */
-T49 =  0.0000000029449552300483952,	/*  0x194c0668da786a.0p-81 */
-T51 = -0.0000000022006995706097711,	/* -0x12e763b8845268.0p-81 */
-T53 =  0.0000000015468200913196612,	/*  0x1a92fc98c29554.0p-82 */
-T55 = -0.00000000061311613386849674,	/* -0x151106cbc779a9.0p-83 */
-T57 =  1.4912469681508012e-10;		/*  0x147edbdba6f43a.0p-85 */
-#define RPOLY(w) (T5 + w * (T9 + w * (T13 + w * (T17 + w * (T21 + \
-	w * (T25 + w * (T29 + w * (T33 + w * (T37 + w * (T41 + \
-	w * (T45 + w * (T49 + w * (T53 + w * T57)))))))))))))
-#define VPOLY(w) (T7 + w * (T11 + w * (T15 + w * (T19 + w * (T23 + \
-	w * (T27 + w * (T31 + w * (T35 + w * (T39 + w * (T43 + \
-	w * (T47 + w * (T51 + w * T55))))))))))))
+    T39 = 0.000000028443389121318352,    /*  0x1e8a7592977938.0p-78 */
+    T41 = 0.000000011981013102001973,    /*  0x19baa1b1223219.0p-79 */
+    T43 = 0.0000000038303578044958070,   /*  0x107385dfb24529.0p-80 */
+    T45 = 0.0000000034664378216909893,   /*  0x1dc6c702a05262.0p-81 */
+    T47 = -0.0000000015090641701997785,  /* -0x19ecef3569ebb6.0p-82 */
+    T49 = 0.0000000029449552300483952,   /*  0x194c0668da786a.0p-81 */
+    T51 = -0.0000000022006995706097711,  /* -0x12e763b8845268.0p-81 */
+    T53 = 0.0000000015468200913196612,   /*  0x1a92fc98c29554.0p-82 */
+    T55 = -0.00000000061311613386849674, /* -0x151106cbc779a9.0p-83 */
+    T57 = 1.4912469681508012e-10;        /*  0x147edbdba6f43a.0p-85 */
+#define RPOLY(w)                                                     \
+  (T5 +                                                              \
+   w * (T9 +                                                         \
+        w * (T13 +                                                   \
+             w * (T17 +                                              \
+                  w * (T21 +                                         \
+                       w * (T25 +                                    \
+                            w * (T29 +                               \
+                                 w * (T33 +                          \
+                                      w * (T37 +                     \
+                                           w * (T41 +                \
+                                                w * (T45 +           \
+                                                     w * (T49 +      \
+                                                          w * (T53 + \
+                                                               w * T57)))))))))))))
+#define VPOLY(w)                                                \
+  (T7 +                                                         \
+   w * (T11 +                                                   \
+        w * (T15 +                                              \
+             w * (T19 +                                         \
+                  w * (T23 +                                    \
+                       w * (T27 +                               \
+                            w * (T31 +                          \
+                                 w * (T35 +                     \
+                                      w * (T39 +                \
+                                           w * (T43 +           \
+                                                w * (T47 +      \
+                                                     w * (T51 + \
+                                                          w * T55))))))))))))
 #endif
 
 long double __tanl(long double x, long double y, int odd) {
-	long double z, r, v, w, s, a, t;
-	int big, sign;
+  long double z, r, v, w, s, a, t;
+  int big, sign;
 
-	big = fabsl(x) >= 0.67434;
-	if (big) {
-		sign = 0;
-		if (x < 0) {
-			sign = 1;
-			x = -x;
-			y = -y;
-		}
-		x = (pio4 - x) + (pio4lo - y);
-		y = 0.0;
-	}
-	z = x * x;
-	w = z * z;
-	r = RPOLY(w);
-	v = z * VPOLY(w);
-	s = z * x;
-	r = y + z * (s * (r + v) + y) + T3 * s;
-	w = x + r;
-	if (big) {
-		s = 1 - 2*odd;
-		v = s - 2.0 * (x + (r - w * w / (w + s)));
-		return sign ? -v : v;
-	}
-	if (!odd)
-		return w;
-	/*
-	 * if allow error up to 2 ulp, simply return
-	 * -1.0 / (x+r) here
-	 */
-	/* compute -1.0 / (x+r) accurately */
-	z = w;
-	z = z + 0x1p32 - 0x1p32;
-	v = r - (z - x);        /* z+v = r+x */
-	t = a = -1.0 / w;       /* a = -1.0/w */
-	t = t + 0x1p32 - 0x1p32;
-	s = 1.0 + t * z;
-	return t + a * (s + t * v);
+  big = fabsl(x) >= 0.67434;
+  if (big) {
+    sign = 0;
+    if (x < 0) {
+      sign = 1;
+      x = -x;
+      y = -y;
+    }
+    x = (pio4 - x) + (pio4lo - y);
+    y = 0.0;
+  }
+  z = x * x;
+  w = z * z;
+  r = RPOLY(w);
+  v = z * VPOLY(w);
+  s = z * x;
+  r = y + z * (s * (r + v) + y) + T3 * s;
+  w = x + r;
+  if (big) {
+    s = 1 - 2 * odd;
+    v = s - 2.0 * (x + (r - w * w / (w + s)));
+    return sign ? -v : v;
+  }
+  if (!odd)
+    return w;
+  /*
+   * if allow error up to 2 ulp, simply return
+   * -1.0 / (x+r) here
+   */
+  /* compute -1.0 / (x+r) accurately */
+  z = w;
+  z = z + 0x1p32 - 0x1p32;
+  v = r - (z - x);  /* z+v = r+x */
+  t = a = -1.0 / w; /* a = -1.0/w */
+  t = t + 0x1p32 - 0x1p32;
+  s = 1.0 + t * z;
+  return t + a * (s + t * v);
 }
 #endif
diff --git a/fusl/src/math/acos.c b/fusl/src/math/acos.c
index ea9c87b..8060868 100644
--- a/fusl/src/math/acos.c
+++ b/fusl/src/math/acos.c
@@ -35,67 +35,65 @@
 
 #include "libm.h"
 
-static const double
-pio2_hi = 1.57079632679489655800e+00, /* 0x3FF921FB, 0x54442D18 */
-pio2_lo = 6.12323399573676603587e-17, /* 0x3C91A626, 0x33145C07 */
-pS0 =  1.66666666666666657415e-01, /* 0x3FC55555, 0x55555555 */
-pS1 = -3.25565818622400915405e-01, /* 0xBFD4D612, 0x03EB6F7D */
-pS2 =  2.01212532134862925881e-01, /* 0x3FC9C155, 0x0E884455 */
-pS3 = -4.00555345006794114027e-02, /* 0xBFA48228, 0xB5688F3B */
-pS4 =  7.91534994289814532176e-04, /* 0x3F49EFE0, 0x7501B288 */
-pS5 =  3.47933107596021167570e-05, /* 0x3F023DE1, 0x0DFDF709 */
-qS1 = -2.40339491173441421878e+00, /* 0xC0033A27, 0x1C8A2D4B */
-qS2 =  2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */
-qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */
-qS4 =  7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
+static const double pio2_hi =
+                        1.57079632679489655800e+00, /* 0x3FF921FB, 0x54442D18 */
+    pio2_lo = 6.12323399573676603587e-17,           /* 0x3C91A626, 0x33145C07 */
+    pS0 = 1.66666666666666657415e-01,               /* 0x3FC55555, 0x55555555 */
+    pS1 = -3.25565818622400915405e-01,              /* 0xBFD4D612, 0x03EB6F7D */
+    pS2 = 2.01212532134862925881e-01,               /* 0x3FC9C155, 0x0E884455 */
+    pS3 = -4.00555345006794114027e-02,              /* 0xBFA48228, 0xB5688F3B */
+    pS4 = 7.91534994289814532176e-04,               /* 0x3F49EFE0, 0x7501B288 */
+    pS5 = 3.47933107596021167570e-05,               /* 0x3F023DE1, 0x0DFDF709 */
+    qS1 = -2.40339491173441421878e+00,              /* 0xC0033A27, 0x1C8A2D4B */
+    qS2 = 2.02094576023350569471e+00,               /* 0x40002AE5, 0x9C598AC8 */
+    qS3 = -6.88283971605453293030e-01,              /* 0xBFE6066C, 0x1B8D0159 */
+    qS4 = 7.70381505559019352791e-02;               /* 0x3FB3B8C5, 0xB12E9282 */
 
-static double R(double z)
-{
-	double_t p, q;
-	p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5)))));
-	q = 1.0+z*(qS1+z*(qS2+z*(qS3+z*qS4)));
-	return p/q;
+static double R(double z) {
+  double_t p, q;
+  p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));
+  q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));
+  return p / q;
 }
 
-double acos(double x)
-{
-	double z,w,s,c,df;
-	uint32_t hx,ix;
+double acos(double x) {
+  double z, w, s, c, df;
+  uint32_t hx, ix;
 
-	GET_HIGH_WORD(hx, x);
-	ix = hx & 0x7fffffff;
-	/* |x| >= 1 or nan */
-	if (ix >= 0x3ff00000) {
-		uint32_t lx;
+  GET_HIGH_WORD(hx, x);
+  ix = hx & 0x7fffffff;
+  /* |x| >= 1 or nan */
+  if (ix >= 0x3ff00000) {
+    uint32_t lx;
 
-		GET_LOW_WORD(lx,x);
-		if ((ix-0x3ff00000 | lx) == 0) {
-			/* acos(1)=0, acos(-1)=pi */
-			if (hx >> 31)
-				return 2*pio2_hi + 0x1p-120f;
-			return 0;
-		}
-		return 0/(x-x);
-	}
-	/* |x| < 0.5 */
-	if (ix < 0x3fe00000) {
-		if (ix <= 0x3c600000)  /* |x| < 2**-57 */
-			return pio2_hi + 0x1p-120f;
-		return pio2_hi - (x - (pio2_lo-x*R(x*x)));
-	}
-	/* x < -0.5 */
-	if (hx >> 31) {
-		z = (1.0+x)*0.5;
-		s = sqrt(z);
-		w = R(z)*s-pio2_lo;
-		return 2*(pio2_hi - (s+w));
-	}
-	/* x > 0.5 */
-	z = (1.0-x)*0.5;
-	s = sqrt(z);
-	df = s;
-	SET_LOW_WORD(df,0);
-	c = (z-df*df)/(s+df);
-	w = R(z)*s+c;
-	return 2*(df+w);
+    GET_LOW_WORD(lx, x);
+    if ((ix - 0x3ff00000 | lx) == 0) {
+      /* acos(1)=0, acos(-1)=pi */
+      if (hx >> 31)
+        return 2 * pio2_hi + 0x1p-120f;
+      return 0;
+    }
+    return 0 / (x - x);
+  }
+  /* |x| < 0.5 */
+  if (ix < 0x3fe00000) {
+    if (ix <= 0x3c600000) /* |x| < 2**-57 */
+      return pio2_hi + 0x1p-120f;
+    return pio2_hi - (x - (pio2_lo - x * R(x * x)));
+  }
+  /* x < -0.5 */
+  if (hx >> 31) {
+    z = (1.0 + x) * 0.5;
+    s = sqrt(z);
+    w = R(z) * s - pio2_lo;
+    return 2 * (pio2_hi - (s + w));
+  }
+  /* x > 0.5 */
+  z = (1.0 - x) * 0.5;
+  s = sqrt(z);
+  df = s;
+  SET_LOW_WORD(df, 0);
+  c = (z - df * df) / (s + df);
+  w = R(z) * s + c;
+  return 2 * (df + w);
 }
diff --git a/fusl/src/math/acosf.c b/fusl/src/math/acosf.c
index 8ee1a71..83ef10e 100644
--- a/fusl/src/math/acosf.c
+++ b/fusl/src/math/acosf.c
@@ -15,57 +15,52 @@
 
 #include "libm.h"
 
-static const float
-pio2_hi = 1.5707962513e+00, /* 0x3fc90fda */
-pio2_lo = 7.5497894159e-08, /* 0x33a22168 */
-pS0 =  1.6666586697e-01,
-pS1 = -4.2743422091e-02,
-pS2 = -8.6563630030e-03,
-qS1 = -7.0662963390e-01;
+static const float pio2_hi = 1.5707962513e+00, /* 0x3fc90fda */
+    pio2_lo = 7.5497894159e-08,                /* 0x33a22168 */
+    pS0 = 1.6666586697e-01, pS1 = -4.2743422091e-02, pS2 = -8.6563630030e-03,
+                   qS1 = -7.0662963390e-01;
 
-static float R(float z)
-{
-	float_t p, q;
-	p = z*(pS0+z*(pS1+z*pS2));
-	q = 1.0f+z*qS1;
-	return p/q;
+static float R(float z) {
+  float_t p, q;
+  p = z * (pS0 + z * (pS1 + z * pS2));
+  q = 1.0f + z * qS1;
+  return p / q;
 }
 
-float acosf(float x)
-{
-	float z,w,s,c,df;
-	uint32_t hx,ix;
+float acosf(float x) {
+  float z, w, s, c, df;
+  uint32_t hx, ix;
 
-	GET_FLOAT_WORD(hx, x);
-	ix = hx & 0x7fffffff;
-	/* |x| >= 1 or nan */
-	if (ix >= 0x3f800000) {
-		if (ix == 0x3f800000) {
-			if (hx >> 31)
-				return 2*pio2_hi + 0x1p-120f;
-			return 0;
-		}
-		return 0/(x-x);
-	}
-	/* |x| < 0.5 */
-	if (ix < 0x3f000000) {
-		if (ix <= 0x32800000) /* |x| < 2**-26 */
-			return pio2_hi + 0x1p-120f;
-		return pio2_hi - (x - (pio2_lo-x*R(x*x)));
-	}
-	/* x < -0.5 */
-	if (hx >> 31) {
-		z = (1+x)*0.5f;
-		s = sqrtf(z);
-		w = R(z)*s-pio2_lo;
-		return 2*(pio2_hi - (s+w));
-	}
-	/* x > 0.5 */
-	z = (1-x)*0.5f;
-	s = sqrtf(z);
-	GET_FLOAT_WORD(hx,s);
-	SET_FLOAT_WORD(df,hx&0xfffff000);
-	c = (z-df*df)/(s+df);
-	w = R(z)*s+c;
-	return 2*(df+w);
+  GET_FLOAT_WORD(hx, x);
+  ix = hx & 0x7fffffff;
+  /* |x| >= 1 or nan */
+  if (ix >= 0x3f800000) {
+    if (ix == 0x3f800000) {
+      if (hx >> 31)
+        return 2 * pio2_hi + 0x1p-120f;
+      return 0;
+    }
+    return 0 / (x - x);
+  }
+  /* |x| < 0.5 */
+  if (ix < 0x3f000000) {
+    if (ix <= 0x32800000) /* |x| < 2**-26 */
+      return pio2_hi + 0x1p-120f;
+    return pio2_hi - (x - (pio2_lo - x * R(x * x)));
+  }
+  /* x < -0.5 */
+  if (hx >> 31) {
+    z = (1 + x) * 0.5f;
+    s = sqrtf(z);
+    w = R(z) * s - pio2_lo;
+    return 2 * (pio2_hi - (s + w));
+  }
+  /* x > 0.5 */
+  z = (1 - x) * 0.5f;
+  s = sqrtf(z);
+  GET_FLOAT_WORD(hx, s);
+  SET_FLOAT_WORD(df, hx & 0xfffff000);
+  c = (z - df * df) / (s + df);
+  w = R(z) * s + c;
+  return 2 * (df + w);
 }
diff --git a/fusl/src/math/acosh.c b/fusl/src/math/acosh.c
index badbf90..a0299e5 100644
--- a/fusl/src/math/acosh.c
+++ b/fusl/src/math/acosh.c
@@ -1,24 +1,26 @@
 #include "libm.h"
 
-#if FLT_EVAL_METHOD==2
+#if FLT_EVAL_METHOD == 2
 #undef sqrt
 #define sqrt sqrtl
 #endif
 
 /* acosh(x) = log(x + sqrt(x*x-1)) */
-double acosh(double x)
-{
-	union {double f; uint64_t i;} u = {.f = x};
-	unsigned e = u.i >> 52 & 0x7ff;
+double acosh(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {.f = x};
+  unsigned e = u.i >> 52 & 0x7ff;
 
-	/* x < 1 domain error is handled in the called functions */
+  /* x < 1 domain error is handled in the called functions */
 
-	if (e < 0x3ff + 1)
-		/* |x| < 2, up to 2ulp error in [1,1.125] */
-		return log1p(x-1 + sqrt((x-1)*(x-1)+2*(x-1)));
-	if (e < 0x3ff + 26)
-		/* |x| < 0x1p26 */
-		return log(2*x - 1/(x+sqrt(x*x-1)));
-	/* |x| >= 0x1p26 or nan */
-	return log(x) + 0.693147180559945309417232121458176568;
+  if (e < 0x3ff + 1)
+    /* |x| < 2, up to 2ulp error in [1,1.125] */
+    return log1p(x - 1 + sqrt((x - 1) * (x - 1) + 2 * (x - 1)));
+  if (e < 0x3ff + 26)
+    /* |x| < 0x1p26 */
+    return log(2 * x - 1 / (x + sqrt(x * x - 1)));
+  /* |x| >= 0x1p26 or nan */
+  return log(x) + 0.693147180559945309417232121458176568;
 }
diff --git a/fusl/src/math/acoshf.c b/fusl/src/math/acoshf.c
index 8a4ec4d..e7896cd 100644
--- a/fusl/src/math/acoshf.c
+++ b/fusl/src/math/acoshf.c
@@ -1,26 +1,28 @@
 #include "libm.h"
 
-#if FLT_EVAL_METHOD==2
+#if FLT_EVAL_METHOD == 2
 #undef sqrtf
 #define sqrtf sqrtl
-#elif FLT_EVAL_METHOD==1
+#elif FLT_EVAL_METHOD == 1
 #undef sqrtf
 #define sqrtf sqrt
 #endif
 
 /* acosh(x) = log(x + sqrt(x*x-1)) */
-float acoshf(float x)
-{
-	union {float f; uint32_t i;} u = {x};
-	uint32_t a = u.i & 0x7fffffff;
+float acoshf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  uint32_t a = u.i & 0x7fffffff;
 
-	if (a < 0x3f800000+(1<<23))
-		/* |x| < 2, invalid if x < 1 or nan */
-		/* up to 2ulp error in [1,1.125] */
-		return log1pf(x-1 + sqrtf((x-1)*(x-1)+2*(x-1)));
-	if (a < 0x3f800000+(12<<23))
-		/* |x| < 0x1p12 */
-		return logf(2*x - 1/(x+sqrtf(x*x-1)));
-	/* x >= 0x1p12 */
-	return logf(x) + 0.693147180559945309417232121458176568f;
+  if (a < 0x3f800000 + (1 << 23))
+    /* |x| < 2, invalid if x < 1 or nan */
+    /* up to 2ulp error in [1,1.125] */
+    return log1pf(x - 1 + sqrtf((x - 1) * (x - 1) + 2 * (x - 1)));
+  if (a < 0x3f800000 + (12 << 23))
+    /* |x| < 0x1p12 */
+    return logf(2 * x - 1 / (x + sqrtf(x * x - 1)));
+  /* x >= 0x1p12 */
+  return logf(x) + 0.693147180559945309417232121458176568f;
 }
diff --git a/fusl/src/math/acoshl.c b/fusl/src/math/acoshl.c
index 8d4b43f..55800f2 100644
--- a/fusl/src/math/acoshl.c
+++ b/fusl/src/math/acoshl.c
@@ -1,29 +1,26 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double acoshl(long double x)
-{
-	return acosh(x);
+long double acoshl(long double x) {
+  return acosh(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
 /* acosh(x) = log(x + sqrt(x*x-1)) */
-long double acoshl(long double x)
-{
-	union ldshape u = {x};
-	int e = u.i.se & 0x7fff;
+long double acoshl(long double x) {
+  union ldshape u = {x};
+  int e = u.i.se & 0x7fff;
 
-	if (e < 0x3fff + 1)
-		/* |x| < 2, invalid if x < 1 or nan */
-		return log1pl(x-1 + sqrtl((x-1)*(x-1)+2*(x-1)));
-	if (e < 0x3fff + 32)
-		/* |x| < 0x1p32 */
-		return logl(2*x - 1/(x+sqrtl(x*x-1)));
-	return logl(x) + 0.693147180559945309417232121458176568L;
+  if (e < 0x3fff + 1)
+    /* |x| < 2, invalid if x < 1 or nan */
+    return log1pl(x - 1 + sqrtl((x - 1) * (x - 1) + 2 * (x - 1)));
+  if (e < 0x3fff + 32)
+    /* |x| < 0x1p32 */
+    return logl(2 * x - 1 / (x + sqrtl(x * x - 1)));
+  return logl(x) + 0.693147180559945309417232121458176568L;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-long double acoshl(long double x)
-{
-	return acosh(x);
+long double acoshl(long double x) {
+  return acosh(x);
 }
 #endif
diff --git a/fusl/src/math/acosl.c b/fusl/src/math/acosl.c
index c03bdf0..cfabb37 100644
--- a/fusl/src/math/acosl.c
+++ b/fusl/src/math/acosl.c
@@ -17,9 +17,8 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double acosl(long double x)
-{
-	return acos(x);
+long double acosl(long double x) {
+  return acos(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
 #include "__invtrigl.h"
@@ -29,39 +28,38 @@
 #define CLEARBOTTOM(u) (u.i.lo = 0)
 #endif
 
-long double acosl(long double x)
-{
-	union ldshape u = {x};
-	long double z, s, c, f;
-	uint16_t e = u.i.se & 0x7fff;
+long double acosl(long double x) {
+  union ldshape u = {x};
+  long double z, s, c, f;
+  uint16_t e = u.i.se & 0x7fff;
 
-	/* |x| >= 1 or nan */
-	if (e >= 0x3fff) {
-		if (x == 1)
-			return 0;
-		if (x == -1)
-			return 2*pio2_hi + 0x1p-120f;
-		return 0/(x-x);
-	}
-	/* |x| < 0.5 */
-	if (e < 0x3fff - 1) {
-		if (e < 0x3fff - LDBL_MANT_DIG - 1)
-			return pio2_hi + 0x1p-120f;
-		return pio2_hi - (__invtrigl_R(x*x)*x - pio2_lo + x);
-	}
-	/* x < -0.5 */
-	if (u.i.se >> 15) {
-		z = (1 + x)*0.5;
-		s = sqrtl(z);
-		return 2*(pio2_hi - (__invtrigl_R(z)*s - pio2_lo + s));
-	}
-	/* x > 0.5 */
-	z = (1 - x)*0.5;
-	s = sqrtl(z);
-	u.f = s;
-	CLEARBOTTOM(u);
-	f = u.f;
-	c = (z - f*f)/(s + f);
-	return 2*(__invtrigl_R(z)*s + c + f);
+  /* |x| >= 1 or nan */
+  if (e >= 0x3fff) {
+    if (x == 1)
+      return 0;
+    if (x == -1)
+      return 2 * pio2_hi + 0x1p-120f;
+    return 0 / (x - x);
+  }
+  /* |x| < 0.5 */
+  if (e < 0x3fff - 1) {
+    if (e < 0x3fff - LDBL_MANT_DIG - 1)
+      return pio2_hi + 0x1p-120f;
+    return pio2_hi - (__invtrigl_R(x * x) * x - pio2_lo + x);
+  }
+  /* x < -0.5 */
+  if (u.i.se >> 15) {
+    z = (1 + x) * 0.5;
+    s = sqrtl(z);
+    return 2 * (pio2_hi - (__invtrigl_R(z) * s - pio2_lo + s));
+  }
+  /* x > 0.5 */
+  z = (1 - x) * 0.5;
+  s = sqrtl(z);
+  u.f = s;
+  CLEARBOTTOM(u);
+  f = u.f;
+  c = (z - f * f) / (s + f);
+  return 2 * (__invtrigl_R(z) * s + c + f);
 }
 #endif
diff --git a/fusl/src/math/arm/fabs.c b/fusl/src/math/arm/fabs.c
index f890520..1b093a7 100644
--- a/fusl/src/math/arm/fabs.c
+++ b/fusl/src/math/arm/fabs.c
@@ -2,10 +2,9 @@
 
 #if __ARM_PCS_VFP
 
-double fabs(double x)
-{
-	__asm__ ("vabs.f64 %P0, %P1" : "=w"(x) : "w"(x));
-	return x;
+double fabs(double x) {
+  __asm__("vabs.f64 %P0, %P1" : "=w"(x) : "w"(x));
+  return x;
 }
 
 #else
diff --git a/fusl/src/math/arm/fabsf.c b/fusl/src/math/arm/fabsf.c
index 28153a6..36e5e96 100644
--- a/fusl/src/math/arm/fabsf.c
+++ b/fusl/src/math/arm/fabsf.c
@@ -2,10 +2,9 @@
 
 #if __ARM_PCS_VFP
 
-float fabsf(float x)
-{
-	__asm__ ("vabs.f32 %0, %1" : "=t"(x) : "t"(x));
-	return x;
+float fabsf(float x) {
+  __asm__("vabs.f32 %0, %1" : "=t"(x) : "t"(x));
+  return x;
 }
 
 #else
diff --git a/fusl/src/math/arm/sqrt.c b/fusl/src/math/arm/sqrt.c
index c9c0008..20f559e 100644
--- a/fusl/src/math/arm/sqrt.c
+++ b/fusl/src/math/arm/sqrt.c
@@ -2,10 +2,9 @@
 
 #if __VFP_FP__ && !__SOFTFP__
 
-double sqrt(double x)
-{
-	__asm__ ("vsqrt.f64 %P0, %P1" : "=w"(x) : "w"(x));
-	return x;
+double sqrt(double x) {
+  __asm__("vsqrt.f64 %P0, %P1" : "=w"(x) : "w"(x));
+  return x;
 }
 
 #else
diff --git a/fusl/src/math/arm/sqrtf.c b/fusl/src/math/arm/sqrtf.c
index e657665..5b51c15 100644
--- a/fusl/src/math/arm/sqrtf.c
+++ b/fusl/src/math/arm/sqrtf.c
@@ -2,10 +2,9 @@
 
 #if __VFP_FP__ && !__SOFTFP__
 
-float sqrtf(float x)
-{
-	__asm__ ("vsqrt.f32 %0, %1" : "=t"(x) : "t"(x));
-	return x;
+float sqrtf(float x) {
+  __asm__("vsqrt.f32 %0, %1" : "=t"(x) : "t"(x));
+  return x;
 }
 
 #else
diff --git a/fusl/src/math/asin.c b/fusl/src/math/asin.c
index c926b18..9b92be8 100644
--- a/fusl/src/math/asin.c
+++ b/fusl/src/math/asin.c
@@ -41,67 +41,66 @@
 
 #include "libm.h"
 
-static const double
-pio2_hi = 1.57079632679489655800e+00, /* 0x3FF921FB, 0x54442D18 */
-pio2_lo = 6.12323399573676603587e-17, /* 0x3C91A626, 0x33145C07 */
-/* coefficients for R(x^2) */
-pS0 =  1.66666666666666657415e-01, /* 0x3FC55555, 0x55555555 */
-pS1 = -3.25565818622400915405e-01, /* 0xBFD4D612, 0x03EB6F7D */
-pS2 =  2.01212532134862925881e-01, /* 0x3FC9C155, 0x0E884455 */
-pS3 = -4.00555345006794114027e-02, /* 0xBFA48228, 0xB5688F3B */
-pS4 =  7.91534994289814532176e-04, /* 0x3F49EFE0, 0x7501B288 */
-pS5 =  3.47933107596021167570e-05, /* 0x3F023DE1, 0x0DFDF709 */
-qS1 = -2.40339491173441421878e+00, /* 0xC0033A27, 0x1C8A2D4B */
-qS2 =  2.02094576023350569471e+00, /* 0x40002AE5, 0x9C598AC8 */
-qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */
-qS4 =  7.70381505559019352791e-02; /* 0x3FB3B8C5, 0xB12E9282 */
+static const double pio2_hi =
+                        1.57079632679489655800e+00, /* 0x3FF921FB, 0x54442D18 */
+    pio2_lo = 6.12323399573676603587e-17,           /* 0x3C91A626, 0x33145C07 */
+    /* coefficients for R(x^2) */
+    pS0 = 1.66666666666666657415e-01,  /* 0x3FC55555, 0x55555555 */
+    pS1 = -3.25565818622400915405e-01, /* 0xBFD4D612, 0x03EB6F7D */
+    pS2 = 2.01212532134862925881e-01,  /* 0x3FC9C155, 0x0E884455 */
+    pS3 = -4.00555345006794114027e-02, /* 0xBFA48228, 0xB5688F3B */
+    pS4 = 7.91534994289814532176e-04,  /* 0x3F49EFE0, 0x7501B288 */
+    pS5 = 3.47933107596021167570e-05,  /* 0x3F023DE1, 0x0DFDF709 */
+    qS1 = -2.40339491173441421878e+00, /* 0xC0033A27, 0x1C8A2D4B */
+    qS2 = 2.02094576023350569471e+00,  /* 0x40002AE5, 0x9C598AC8 */
+    qS3 = -6.88283971605453293030e-01, /* 0xBFE6066C, 0x1B8D0159 */
+    qS4 = 7.70381505559019352791e-02;  /* 0x3FB3B8C5, 0xB12E9282 */
 
-static double R(double z)
-{
-	double_t p, q;
-	p = z*(pS0+z*(pS1+z*(pS2+z*(pS3+z*(pS4+z*pS5)))));
-	q = 1.0+z*(qS1+z*(qS2+z*(qS3+z*qS4)));
-	return p/q;
+static double R(double z) {
+  double_t p, q;
+  p = z * (pS0 + z * (pS1 + z * (pS2 + z * (pS3 + z * (pS4 + z * pS5)))));
+  q = 1.0 + z * (qS1 + z * (qS2 + z * (qS3 + z * qS4)));
+  return p / q;
 }
 
-double asin(double x)
-{
-	double z,r,s;
-	uint32_t hx,ix;
+double asin(double x) {
+  double z, r, s;
+  uint32_t hx, ix;
 
-	GET_HIGH_WORD(hx, x);
-	ix = hx & 0x7fffffff;
-	/* |x| >= 1 or nan */
-	if (ix >= 0x3ff00000) {
-		uint32_t lx;
-		GET_LOW_WORD(lx, x);
-		if ((ix-0x3ff00000 | lx) == 0)
-			/* asin(1) = +-pi/2 with inexact */
-			return x*pio2_hi + 0x1p-120f;
-		return 0/(x-x);
-	}
-	/* |x| < 0.5 */
-	if (ix < 0x3fe00000) {
-		/* if 0x1p-1022 <= |x| < 0x1p-26, avoid raising underflow */
-		if (ix < 0x3e500000 && ix >= 0x00100000)
-			return x;
-		return x + x*R(x*x);
-	}
-	/* 1 > |x| >= 0.5 */
-	z = (1 - fabs(x))*0.5;
-	s = sqrt(z);
-	r = R(z);
-	if (ix >= 0x3fef3333) {  /* if |x| > 0.975 */
-		x = pio2_hi-(2*(s+s*r)-pio2_lo);
-	} else {
-		double f,c;
-		/* f+c = sqrt(z) */
-		f = s;
-		SET_LOW_WORD(f,0);
-		c = (z-f*f)/(s+f);
-		x = 0.5*pio2_hi - (2*s*r - (pio2_lo-2*c) - (0.5*pio2_hi-2*f));
-	}
-	if (hx >> 31)
-		return -x;
-	return x;
+  GET_HIGH_WORD(hx, x);
+  ix = hx & 0x7fffffff;
+  /* |x| >= 1 or nan */
+  if (ix >= 0x3ff00000) {
+    uint32_t lx;
+    GET_LOW_WORD(lx, x);
+    if ((ix - 0x3ff00000 | lx) == 0)
+      /* asin(1) = +-pi/2 with inexact */
+      return x * pio2_hi + 0x1p-120f;
+    return 0 / (x - x);
+  }
+  /* |x| < 0.5 */
+  if (ix < 0x3fe00000) {
+    /* if 0x1p-1022 <= |x| < 0x1p-26, avoid raising underflow */
+    if (ix < 0x3e500000 && ix >= 0x00100000)
+      return x;
+    return x + x * R(x * x);
+  }
+  /* 1 > |x| >= 0.5 */
+  z = (1 - fabs(x)) * 0.5;
+  s = sqrt(z);
+  r = R(z);
+  if (ix >= 0x3fef3333) { /* if |x| > 0.975 */
+    x = pio2_hi - (2 * (s + s * r) - pio2_lo);
+  } else {
+    double f, c;
+    /* f+c = sqrt(z) */
+    f = s;
+    SET_LOW_WORD(f, 0);
+    c = (z - f * f) / (s + f);
+    x = 0.5 * pio2_hi -
+        (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));
+  }
+  if (hx >> 31)
+    return -x;
+  return x;
 }
diff --git a/fusl/src/math/asinf.c b/fusl/src/math/asinf.c
index bcd304a..3d5f637 100644
--- a/fusl/src/math/asinf.c
+++ b/fusl/src/math/asinf.c
@@ -14,48 +14,43 @@
  */
 #include "libm.h"
 
-static const double
-pio2 = 1.570796326794896558e+00;
+static const double pio2 = 1.570796326794896558e+00;
 
 static const float
-/* coefficients for R(x^2) */
-pS0 =  1.6666586697e-01,
-pS1 = -4.2743422091e-02,
-pS2 = -8.6563630030e-03,
-qS1 = -7.0662963390e-01;
+    /* coefficients for R(x^2) */
+    pS0 = 1.6666586697e-01,
+    pS1 = -4.2743422091e-02, pS2 = -8.6563630030e-03, qS1 = -7.0662963390e-01;
 
-static float R(float z)
-{
-	float_t p, q;
-	p = z*(pS0+z*(pS1+z*pS2));
-	q = 1.0f+z*qS1;
-	return p/q;
+static float R(float z) {
+  float_t p, q;
+  p = z * (pS0 + z * (pS1 + z * pS2));
+  q = 1.0f + z * qS1;
+  return p / q;
 }
 
-float asinf(float x)
-{
-	double s;
-	float z;
-	uint32_t hx,ix;
+float asinf(float x) {
+  double s;
+  float z;
+  uint32_t hx, ix;
 
-	GET_FLOAT_WORD(hx, x);
-	ix = hx & 0x7fffffff;
-	if (ix >= 0x3f800000) {  /* |x| >= 1 */
-		if (ix == 0x3f800000)  /* |x| == 1 */
-			return x*pio2 + 0x1p-120f;  /* asin(+-1) = +-pi/2 with inexact */
-		return 0/(x-x);  /* asin(|x|>1) is NaN */
-	}
-	if (ix < 0x3f000000) {  /* |x| < 0.5 */
-		/* if 0x1p-126 <= |x| < 0x1p-12, avoid raising underflow */
-		if (ix < 0x39800000 && ix >= 0x00800000)
-			return x;
-		return x + x*R(x*x);
-	}
-	/* 1 > |x| >= 0.5 */
-	z = (1 - fabsf(x))*0.5f;
-	s = sqrt(z);
-	x = pio2 - 2*(s+s*R(z));
-	if (hx >> 31)
-		return -x;
-	return x;
+  GET_FLOAT_WORD(hx, x);
+  ix = hx & 0x7fffffff;
+  if (ix >= 0x3f800000) {          /* |x| >= 1 */
+    if (ix == 0x3f800000)          /* |x| == 1 */
+      return x * pio2 + 0x1p-120f; /* asin(+-1) = +-pi/2 with inexact */
+    return 0 / (x - x);            /* asin(|x|>1) is NaN */
+  }
+  if (ix < 0x3f000000) { /* |x| < 0.5 */
+    /* if 0x1p-126 <= |x| < 0x1p-12, avoid raising underflow */
+    if (ix < 0x39800000 && ix >= 0x00800000)
+      return x;
+    return x + x * R(x * x);
+  }
+  /* 1 > |x| >= 0.5 */
+  z = (1 - fabsf(x)) * 0.5f;
+  s = sqrt(z);
+  x = pio2 - 2 * (s + s * R(z));
+  if (hx >> 31)
+    return -x;
+  return x;
 }
diff --git a/fusl/src/math/asinh.c b/fusl/src/math/asinh.c
index 0829f22..b6d00df 100644
--- a/fusl/src/math/asinh.c
+++ b/fusl/src/math/asinh.c
@@ -1,28 +1,30 @@
 #include "libm.h"
 
 /* asinh(x) = sign(x)*log(|x|+sqrt(x*x+1)) ~= x - x^3/6 + o(x^5) */
-double asinh(double x)
-{
-	union {double f; uint64_t i;} u = {.f = x};
-	unsigned e = u.i >> 52 & 0x7ff;
-	unsigned s = u.i >> 63;
+double asinh(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {.f = x};
+  unsigned e = u.i >> 52 & 0x7ff;
+  unsigned s = u.i >> 63;
 
-	/* |x| */
-	u.i &= (uint64_t)-1/2;
-	x = u.f;
+  /* |x| */
+  u.i &= (uint64_t)-1 / 2;
+  x = u.f;
 
-	if (e >= 0x3ff + 26) {
-		/* |x| >= 0x1p26 or inf or nan */
-		x = log(x) + 0.693147180559945309417232121458176568;
-	} else if (e >= 0x3ff + 1) {
-		/* |x| >= 2 */
-		x = log(2*x + 1/(sqrt(x*x+1)+x));
-	} else if (e >= 0x3ff - 26) {
-		/* |x| >= 0x1p-26, up to 1.6ulp error in [0.125,0.5] */
-		x = log1p(x + x*x/(sqrt(x*x+1)+1));
-	} else {
-		/* |x| < 0x1p-26, raise inexact if x != 0 */
-		FORCE_EVAL(x + 0x1p120f);
-	}
-	return s ? -x : x;
+  if (e >= 0x3ff + 26) {
+    /* |x| >= 0x1p26 or inf or nan */
+    x = log(x) + 0.693147180559945309417232121458176568;
+  } else if (e >= 0x3ff + 1) {
+    /* |x| >= 2 */
+    x = log(2 * x + 1 / (sqrt(x * x + 1) + x));
+  } else if (e >= 0x3ff - 26) {
+    /* |x| >= 0x1p-26, up to 1.6ulp error in [0.125,0.5] */
+    x = log1p(x + x * x / (sqrt(x * x + 1) + 1));
+  } else {
+    /* |x| < 0x1p-26, raise inexact if x != 0 */
+    FORCE_EVAL(x + 0x1p120f);
+  }
+  return s ? -x : x;
 }
diff --git a/fusl/src/math/asinhf.c b/fusl/src/math/asinhf.c
index fc9f091..5d79d1c 100644
--- a/fusl/src/math/asinhf.c
+++ b/fusl/src/math/asinhf.c
@@ -1,28 +1,30 @@
 #include "libm.h"
 
 /* asinh(x) = sign(x)*log(|x|+sqrt(x*x+1)) ~= x - x^3/6 + o(x^5) */
-float asinhf(float x)
-{
-	union {float f; uint32_t i;} u = {.f = x};
-	uint32_t i = u.i & 0x7fffffff;
-	unsigned s = u.i >> 31;
+float asinhf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {.f = x};
+  uint32_t i = u.i & 0x7fffffff;
+  unsigned s = u.i >> 31;
 
-	/* |x| */
-	u.i = i;
-	x = u.f;
+  /* |x| */
+  u.i = i;
+  x = u.f;
 
-	if (i >= 0x3f800000 + (12<<23)) {
-		/* |x| >= 0x1p12 or inf or nan */
-		x = logf(x) + 0.693147180559945309417232121458176568f;
-	} else if (i >= 0x3f800000 + (1<<23)) {
-		/* |x| >= 2 */
-		x = logf(2*x + 1/(sqrtf(x*x+1)+x));
-	} else if (i >= 0x3f800000 - (12<<23)) {
-		/* |x| >= 0x1p-12, up to 1.6ulp error in [0.125,0.5] */
-		x = log1pf(x + x*x/(sqrtf(x*x+1)+1));
-	} else {
-		/* |x| < 0x1p-12, raise inexact if x!=0 */
-		FORCE_EVAL(x + 0x1p120f);
-	}
-	return s ? -x : x;
+  if (i >= 0x3f800000 + (12 << 23)) {
+    /* |x| >= 0x1p12 or inf or nan */
+    x = logf(x) + 0.693147180559945309417232121458176568f;
+  } else if (i >= 0x3f800000 + (1 << 23)) {
+    /* |x| >= 2 */
+    x = logf(2 * x + 1 / (sqrtf(x * x + 1) + x));
+  } else if (i >= 0x3f800000 - (12 << 23)) {
+    /* |x| >= 0x1p-12, up to 1.6ulp error in [0.125,0.5] */
+    x = log1pf(x + x * x / (sqrtf(x * x + 1) + 1));
+  } else {
+    /* |x| < 0x1p-12, raise inexact if x!=0 */
+    FORCE_EVAL(x + 0x1p120f);
+  }
+  return s ? -x : x;
 }
diff --git a/fusl/src/math/asinhl.c b/fusl/src/math/asinhl.c
index 8635f52..2be91e9 100644
--- a/fusl/src/math/asinhl.c
+++ b/fusl/src/math/asinhl.c
@@ -1,41 +1,38 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double asinhl(long double x)
-{
-	return asinh(x);
+long double asinhl(long double x) {
+  return asinh(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
 /* asinh(x) = sign(x)*log(|x|+sqrt(x*x+1)) ~= x - x^3/6 + o(x^5) */
-long double asinhl(long double x)
-{
-	union ldshape u = {x};
-	unsigned e = u.i.se & 0x7fff;
-	unsigned s = u.i.se >> 15;
+long double asinhl(long double x) {
+  union ldshape u = {x};
+  unsigned e = u.i.se & 0x7fff;
+  unsigned s = u.i.se >> 15;
 
-	/* |x| */
-	u.i.se = e;
-	x = u.f;
+  /* |x| */
+  u.i.se = e;
+  x = u.f;
 
-	if (e >= 0x3fff + 32) {
-		/* |x| >= 0x1p32 or inf or nan */
-		x = logl(x) + 0.693147180559945309417232121458176568L;
-	} else if (e >= 0x3fff + 1) {
-		/* |x| >= 2 */
-		x = logl(2*x + 1/(sqrtl(x*x+1)+x));
-	} else if (e >= 0x3fff - 32) {
-		/* |x| >= 0x1p-32 */
-		x = log1pl(x + x*x/(sqrtl(x*x+1)+1));
-	} else {
-		/* |x| < 0x1p-32, raise inexact if x!=0 */
-		FORCE_EVAL(x + 0x1p120f);
-	}
-	return s ? -x : x;
+  if (e >= 0x3fff + 32) {
+    /* |x| >= 0x1p32 or inf or nan */
+    x = logl(x) + 0.693147180559945309417232121458176568L;
+  } else if (e >= 0x3fff + 1) {
+    /* |x| >= 2 */
+    x = logl(2 * x + 1 / (sqrtl(x * x + 1) + x));
+  } else if (e >= 0x3fff - 32) {
+    /* |x| >= 0x1p-32 */
+    x = log1pl(x + x * x / (sqrtl(x * x + 1) + 1));
+  } else {
+    /* |x| < 0x1p-32, raise inexact if x!=0 */
+    FORCE_EVAL(x + 0x1p120f);
+  }
+  return s ? -x : x;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-long double asinhl(long double x)
-{
-	return asinh(x);
+long double asinhl(long double x) {
+  return asinh(x);
 }
 #endif
diff --git a/fusl/src/math/asinl.c b/fusl/src/math/asinl.c
index 347c535..7494848 100644
--- a/fusl/src/math/asinl.c
+++ b/fusl/src/math/asinl.c
@@ -17,55 +17,54 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double asinl(long double x)
-{
-	return asin(x);
+long double asinl(long double x) {
+  return asin(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
 #include "__invtrigl.h"
 #if LDBL_MANT_DIG == 64
-#define CLOSETO1(u) (u.i.m>>56 >= 0xf7)
+#define CLOSETO1(u) (u.i.m >> 56 >= 0xf7)
 #define CLEARBOTTOM(u) (u.i.m &= -1ULL << 32)
 #elif LDBL_MANT_DIG == 113
 #define CLOSETO1(u) (u.i.top >= 0xee00)
 #define CLEARBOTTOM(u) (u.i.lo = 0)
 #endif
 
-long double asinl(long double x)
-{
-	union ldshape u = {x};
-	long double z, r, s;
-	uint16_t e = u.i.se & 0x7fff;
-	int sign = u.i.se >> 15;
+long double asinl(long double x) {
+  union ldshape u = {x};
+  long double z, r, s;
+  uint16_t e = u.i.se & 0x7fff;
+  int sign = u.i.se >> 15;
 
-	if (e >= 0x3fff) {   /* |x| >= 1 or nan */
-		/* asin(+-1)=+-pi/2 with inexact */
-		if (x == 1 || x == -1)
-			return x*pio2_hi + 0x1p-120f;
-		return 0/(x-x);
-	}
-	if (e < 0x3fff - 1) {  /* |x| < 0.5 */
-		if (e < 0x3fff - (LDBL_MANT_DIG+1)/2) {
-			/* return x with inexact if x!=0 */
-			FORCE_EVAL(x + 0x1p120f);
-			return x;
-		}
-		return x + x*__invtrigl_R(x*x);
-	}
-	/* 1 > |x| >= 0.5 */
-	z = (1.0 - fabsl(x))*0.5;
-	s = sqrtl(z);
-	r = __invtrigl_R(z);
-	if (CLOSETO1(u)) {
-		x = pio2_hi - (2*(s+s*r)-pio2_lo);
-	} else {
-		long double f, c;
-		u.f = s;
-		CLEARBOTTOM(u);
-		f = u.f;
-		c = (z - f*f)/(s + f);
-		x = 0.5*pio2_hi-(2*s*r - (pio2_lo-2*c) - (0.5*pio2_hi-2*f));
-	}
-	return sign ? -x : x;
+  if (e >= 0x3fff) { /* |x| >= 1 or nan */
+    /* asin(+-1)=+-pi/2 with inexact */
+    if (x == 1 || x == -1)
+      return x * pio2_hi + 0x1p-120f;
+    return 0 / (x - x);
+  }
+  if (e < 0x3fff - 1) { /* |x| < 0.5 */
+    if (e < 0x3fff - (LDBL_MANT_DIG + 1) / 2) {
+      /* return x with inexact if x!=0 */
+      FORCE_EVAL(x + 0x1p120f);
+      return x;
+    }
+    return x + x * __invtrigl_R(x * x);
+  }
+  /* 1 > |x| >= 0.5 */
+  z = (1.0 - fabsl(x)) * 0.5;
+  s = sqrtl(z);
+  r = __invtrigl_R(z);
+  if (CLOSETO1(u)) {
+    x = pio2_hi - (2 * (s + s * r) - pio2_lo);
+  } else {
+    long double f, c;
+    u.f = s;
+    CLEARBOTTOM(u);
+    f = u.f;
+    c = (z - f * f) / (s + f);
+    x = 0.5 * pio2_hi -
+        (2 * s * r - (pio2_lo - 2 * c) - (0.5 * pio2_hi - 2 * f));
+  }
+  return sign ? -x : x;
 }
 #endif
diff --git a/fusl/src/math/atan.c b/fusl/src/math/atan.c
index 63b0ab2..8d33b53 100644
--- a/fusl/src/math/atan.c
+++ b/fusl/src/math/atan.c
@@ -29,88 +29,87 @@
  * to produce the hexadecimal values shown.
  */
 
-
 #include "libm.h"
 
 static const double atanhi[] = {
-  4.63647609000806093515e-01, /* atan(0.5)hi 0x3FDDAC67, 0x0561BB4F */
-  7.85398163397448278999e-01, /* atan(1.0)hi 0x3FE921FB, 0x54442D18 */
-  9.82793723247329054082e-01, /* atan(1.5)hi 0x3FEF730B, 0xD281F69B */
-  1.57079632679489655800e+00, /* atan(inf)hi 0x3FF921FB, 0x54442D18 */
+    4.63647609000806093515e-01, /* atan(0.5)hi 0x3FDDAC67, 0x0561BB4F */
+    7.85398163397448278999e-01, /* atan(1.0)hi 0x3FE921FB, 0x54442D18 */
+    9.82793723247329054082e-01, /* atan(1.5)hi 0x3FEF730B, 0xD281F69B */
+    1.57079632679489655800e+00, /* atan(inf)hi 0x3FF921FB, 0x54442D18 */
 };
 
 static const double atanlo[] = {
-  2.26987774529616870924e-17, /* atan(0.5)lo 0x3C7A2B7F, 0x222F65E2 */
-  3.06161699786838301793e-17, /* atan(1.0)lo 0x3C81A626, 0x33145C07 */
-  1.39033110312309984516e-17, /* atan(1.5)lo 0x3C700788, 0x7AF0CBBD */
-  6.12323399573676603587e-17, /* atan(inf)lo 0x3C91A626, 0x33145C07 */
+    2.26987774529616870924e-17, /* atan(0.5)lo 0x3C7A2B7F, 0x222F65E2 */
+    3.06161699786838301793e-17, /* atan(1.0)lo 0x3C81A626, 0x33145C07 */
+    1.39033110312309984516e-17, /* atan(1.5)lo 0x3C700788, 0x7AF0CBBD */
+    6.12323399573676603587e-17, /* atan(inf)lo 0x3C91A626, 0x33145C07 */
 };
 
 static const double aT[] = {
-  3.33333333333329318027e-01, /* 0x3FD55555, 0x5555550D */
- -1.99999999998764832476e-01, /* 0xBFC99999, 0x9998EBC4 */
-  1.42857142725034663711e-01, /* 0x3FC24924, 0x920083FF */
- -1.11111104054623557880e-01, /* 0xBFBC71C6, 0xFE231671 */
-  9.09088713343650656196e-02, /* 0x3FB745CD, 0xC54C206E */
- -7.69187620504482999495e-02, /* 0xBFB3B0F2, 0xAF749A6D */
-  6.66107313738753120669e-02, /* 0x3FB10D66, 0xA0D03D51 */
- -5.83357013379057348645e-02, /* 0xBFADDE2D, 0x52DEFD9A */
-  4.97687799461593236017e-02, /* 0x3FA97B4B, 0x24760DEB */
- -3.65315727442169155270e-02, /* 0xBFA2B444, 0x2C6A6C2F */
-  1.62858201153657823623e-02, /* 0x3F90AD3A, 0xE322DA11 */
+    3.33333333333329318027e-01,  /* 0x3FD55555, 0x5555550D */
+    -1.99999999998764832476e-01, /* 0xBFC99999, 0x9998EBC4 */
+    1.42857142725034663711e-01,  /* 0x3FC24924, 0x920083FF */
+    -1.11111104054623557880e-01, /* 0xBFBC71C6, 0xFE231671 */
+    9.09088713343650656196e-02,  /* 0x3FB745CD, 0xC54C206E */
+    -7.69187620504482999495e-02, /* 0xBFB3B0F2, 0xAF749A6D */
+    6.66107313738753120669e-02,  /* 0x3FB10D66, 0xA0D03D51 */
+    -5.83357013379057348645e-02, /* 0xBFADDE2D, 0x52DEFD9A */
+    4.97687799461593236017e-02,  /* 0x3FA97B4B, 0x24760DEB */
+    -3.65315727442169155270e-02, /* 0xBFA2B444, 0x2C6A6C2F */
+    1.62858201153657823623e-02,  /* 0x3F90AD3A, 0xE322DA11 */
 };
 
-double atan(double x)
-{
-	double_t w,s1,s2,z;
-	uint32_t ix,sign;
-	int id;
+double atan(double x) {
+  double_t w, s1, s2, z;
+  uint32_t ix, sign;
+  int id;
 
-	GET_HIGH_WORD(ix, x);
-	sign = ix >> 31;
-	ix &= 0x7fffffff;
-	if (ix >= 0x44100000) {   /* if |x| >= 2^66 */
-		if (isnan(x))
-			return x;
-		z = atanhi[3] + 0x1p-120f;
-		return sign ? -z : z;
-	}
-	if (ix < 0x3fdc0000) {    /* |x| < 0.4375 */
-		if (ix < 0x3e400000) {  /* |x| < 2^-27 */
-			if (ix < 0x00100000)
-				/* raise underflow for subnormal x */
-				FORCE_EVAL((float)x);
-			return x;
-		}
-		id = -1;
-	} else {
-		x = fabs(x);
-		if (ix < 0x3ff30000) {  /* |x| < 1.1875 */
-			if (ix < 0x3fe60000) {  /*  7/16 <= |x| < 11/16 */
-				id = 0;
-				x = (2.0*x-1.0)/(2.0+x);
-			} else {                /* 11/16 <= |x| < 19/16 */
-				id = 1;
-				x = (x-1.0)/(x+1.0);
-			}
-		} else {
-			if (ix < 0x40038000) {  /* |x| < 2.4375 */
-				id = 2;
-				x = (x-1.5)/(1.0+1.5*x);
-			} else {                /* 2.4375 <= |x| < 2^66 */
-				id = 3;
-				x = -1.0/x;
-			}
-		}
-	}
-	/* end of argument reduction */
-	z = x*x;
-	w = z*z;
-	/* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */
-	s1 = z*(aT[0]+w*(aT[2]+w*(aT[4]+w*(aT[6]+w*(aT[8]+w*aT[10])))));
-	s2 = w*(aT[1]+w*(aT[3]+w*(aT[5]+w*(aT[7]+w*aT[9]))));
-	if (id < 0)
-		return x - x*(s1+s2);
-	z = atanhi[id] - (x*(s1+s2) - atanlo[id] - x);
-	return sign ? -z : z;
+  GET_HIGH_WORD(ix, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
+  if (ix >= 0x44100000) { /* if |x| >= 2^66 */
+    if (isnan(x))
+      return x;
+    z = atanhi[3] + 0x1p-120f;
+    return sign ? -z : z;
+  }
+  if (ix < 0x3fdc0000) {   /* |x| < 0.4375 */
+    if (ix < 0x3e400000) { /* |x| < 2^-27 */
+      if (ix < 0x00100000)
+        /* raise underflow for subnormal x */
+        FORCE_EVAL((float)x);
+      return x;
+    }
+    id = -1;
+  } else {
+    x = fabs(x);
+    if (ix < 0x3ff30000) {   /* |x| < 1.1875 */
+      if (ix < 0x3fe60000) { /*  7/16 <= |x| < 11/16 */
+        id = 0;
+        x = (2.0 * x - 1.0) / (2.0 + x);
+      } else { /* 11/16 <= |x| < 19/16 */
+        id = 1;
+        x = (x - 1.0) / (x + 1.0);
+      }
+    } else {
+      if (ix < 0x40038000) { /* |x| < 2.4375 */
+        id = 2;
+        x = (x - 1.5) / (1.0 + 1.5 * x);
+      } else { /* 2.4375 <= |x| < 2^66 */
+        id = 3;
+        x = -1.0 / x;
+      }
+    }
+  }
+  /* end of argument reduction */
+  z = x * x;
+  w = z * z;
+  /* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */
+  s1 = z * (aT[0] +
+            w * (aT[2] + w * (aT[4] + w * (aT[6] + w * (aT[8] + w * aT[10])))));
+  s2 = w * (aT[1] + w * (aT[3] + w * (aT[5] + w * (aT[7] + w * aT[9]))));
+  if (id < 0)
+    return x - x * (s1 + s2);
+  z = atanhi[id] - (x * (s1 + s2) - atanlo[id] - x);
+  return sign ? -z : z;
 }
diff --git a/fusl/src/math/atan2.c b/fusl/src/math/atan2.c
index 5a1903c..11427d7 100644
--- a/fusl/src/math/atan2.c
+++ b/fusl/src/math/atan2.c
@@ -39,69 +39,81 @@
 
 #include "libm.h"
 
-static const double
-pi     = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */
-pi_lo  = 1.2246467991473531772E-16; /* 0x3CA1A626, 0x33145C07 */
+static const double pi = 3.1415926535897931160E+00, /* 0x400921FB, 0x54442D18 */
+    pi_lo = 1.2246467991473531772E-16;              /* 0x3CA1A626, 0x33145C07 */
 
-double atan2(double y, double x)
-{
-	double z;
-	uint32_t m,lx,ly,ix,iy;
+double atan2(double y, double x) {
+  double z;
+  uint32_t m, lx, ly, ix, iy;
 
-	if (isnan(x) || isnan(y))
-		return x+y;
-	EXTRACT_WORDS(ix, lx, x);
-	EXTRACT_WORDS(iy, ly, y);
-	if ((ix-0x3ff00000 | lx) == 0)  /* x = 1.0 */
-		return atan(y);
-	m = ((iy>>31)&1) | ((ix>>30)&2);  /* 2*sign(x)+sign(y) */
-	ix = ix & 0x7fffffff;
-	iy = iy & 0x7fffffff;
+  if (isnan(x) || isnan(y))
+    return x + y;
+  EXTRACT_WORDS(ix, lx, x);
+  EXTRACT_WORDS(iy, ly, y);
+  if ((ix - 0x3ff00000 | lx) == 0) /* x = 1.0 */
+    return atan(y);
+  m = ((iy >> 31) & 1) | ((ix >> 30) & 2); /* 2*sign(x)+sign(y) */
+  ix = ix & 0x7fffffff;
+  iy = iy & 0x7fffffff;
 
-	/* when y = 0 */
-	if ((iy|ly) == 0) {
-		switch(m) {
-		case 0:
-		case 1: return y;   /* atan(+-0,+anything)=+-0 */
-		case 2: return  pi; /* atan(+0,-anything) = pi */
-		case 3: return -pi; /* atan(-0,-anything) =-pi */
-		}
-	}
-	/* when x = 0 */
-	if ((ix|lx) == 0)
-		return m&1 ? -pi/2 : pi/2;
-	/* when x is INF */
-	if (ix == 0x7ff00000) {
-		if (iy == 0x7ff00000) {
-			switch(m) {
-			case 0: return  pi/4;   /* atan(+INF,+INF) */
-			case 1: return -pi/4;   /* atan(-INF,+INF) */
-			case 2: return  3*pi/4; /* atan(+INF,-INF) */
-			case 3: return -3*pi/4; /* atan(-INF,-INF) */
-			}
-		} else {
-			switch(m) {
-			case 0: return  0.0; /* atan(+...,+INF) */
-			case 1: return -0.0; /* atan(-...,+INF) */
-			case 2: return  pi;  /* atan(+...,-INF) */
-			case 3: return -pi;  /* atan(-...,-INF) */
-			}
-		}
-	}
-	/* |y/x| > 0x1p64 */
-	if (ix+(64<<20) < iy || iy == 0x7ff00000)
-		return m&1 ? -pi/2 : pi/2;
+  /* when y = 0 */
+  if ((iy | ly) == 0) {
+    switch (m) {
+      case 0:
+      case 1:
+        return y; /* atan(+-0,+anything)=+-0 */
+      case 2:
+        return pi; /* atan(+0,-anything) = pi */
+      case 3:
+        return -pi; /* atan(-0,-anything) =-pi */
+    }
+  }
+  /* when x = 0 */
+  if ((ix | lx) == 0)
+    return m & 1 ? -pi / 2 : pi / 2;
+  /* when x is INF */
+  if (ix == 0x7ff00000) {
+    if (iy == 0x7ff00000) {
+      switch (m) {
+        case 0:
+          return pi / 4; /* atan(+INF,+INF) */
+        case 1:
+          return -pi / 4; /* atan(-INF,+INF) */
+        case 2:
+          return 3 * pi / 4; /* atan(+INF,-INF) */
+        case 3:
+          return -3 * pi / 4; /* atan(-INF,-INF) */
+      }
+    } else {
+      switch (m) {
+        case 0:
+          return 0.0; /* atan(+...,+INF) */
+        case 1:
+          return -0.0; /* atan(-...,+INF) */
+        case 2:
+          return pi; /* atan(+...,-INF) */
+        case 3:
+          return -pi; /* atan(-...,-INF) */
+      }
+    }
+  }
+  /* |y/x| > 0x1p64 */
+  if (ix + (64 << 20) < iy || iy == 0x7ff00000)
+    return m & 1 ? -pi / 2 : pi / 2;
 
-	/* z = atan(|y/x|) without spurious underflow */
-	if ((m&2) && iy+(64<<20) < ix)  /* |y/x| < 0x1p-64, x<0 */
-		z = 0;
-	else
-		z = atan(fabs(y/x));
-	switch (m) {
-	case 0: return z;              /* atan(+,+) */
-	case 1: return -z;             /* atan(-,+) */
-	case 2: return pi - (z-pi_lo); /* atan(+,-) */
-	default: /* case 3 */
-		return (z-pi_lo) - pi; /* atan(-,-) */
-	}
+  /* z = atan(|y/x|) without spurious underflow */
+  if ((m & 2) && iy + (64 << 20) < ix) /* |y/x| < 0x1p-64, x<0 */
+    z = 0;
+  else
+    z = atan(fabs(y / x));
+  switch (m) {
+    case 0:
+      return z; /* atan(+,+) */
+    case 1:
+      return -z; /* atan(-,+) */
+    case 2:
+      return pi - (z - pi_lo); /* atan(+,-) */
+    default:                   /* case 3 */
+      return (z - pi_lo) - pi; /* atan(-,-) */
+  }
 }
diff --git a/fusl/src/math/atan2f.c b/fusl/src/math/atan2f.c
index c634d00..559f0b7 100644
--- a/fusl/src/math/atan2f.c
+++ b/fusl/src/math/atan2f.c
@@ -15,69 +15,81 @@
 
 #include "libm.h"
 
-static const float
-pi     = 3.1415927410e+00, /* 0x40490fdb */
-pi_lo  = -8.7422776573e-08; /* 0xb3bbbd2e */
+static const float pi = 3.1415927410e+00, /* 0x40490fdb */
+    pi_lo = -8.7422776573e-08;            /* 0xb3bbbd2e */
 
-float atan2f(float y, float x)
-{
-	float z;
-	uint32_t m,ix,iy;
+float atan2f(float y, float x) {
+  float z;
+  uint32_t m, ix, iy;
 
-	if (isnan(x) || isnan(y))
-		return x+y;
-	GET_FLOAT_WORD(ix, x);
-	GET_FLOAT_WORD(iy, y);
-	if (ix == 0x3f800000)  /* x=1.0 */
-		return atanf(y);
-	m = ((iy>>31)&1) | ((ix>>30)&2);  /* 2*sign(x)+sign(y) */
-	ix &= 0x7fffffff;
-	iy &= 0x7fffffff;
+  if (isnan(x) || isnan(y))
+    return x + y;
+  GET_FLOAT_WORD(ix, x);
+  GET_FLOAT_WORD(iy, y);
+  if (ix == 0x3f800000) /* x=1.0 */
+    return atanf(y);
+  m = ((iy >> 31) & 1) | ((ix >> 30) & 2); /* 2*sign(x)+sign(y) */
+  ix &= 0x7fffffff;
+  iy &= 0x7fffffff;
 
-	/* when y = 0 */
-	if (iy == 0) {
-		switch (m) {
-		case 0:
-		case 1: return y;   /* atan(+-0,+anything)=+-0 */
-		case 2: return  pi; /* atan(+0,-anything) = pi */
-		case 3: return -pi; /* atan(-0,-anything) =-pi */
-		}
-	}
-	/* when x = 0 */
-	if (ix == 0)
-		return m&1 ? -pi/2 : pi/2;
-	/* when x is INF */
-	if (ix == 0x7f800000) {
-		if (iy == 0x7f800000) {
-			switch (m) {
-			case 0: return  pi/4; /* atan(+INF,+INF) */
-			case 1: return -pi/4; /* atan(-INF,+INF) */
-			case 2: return 3*pi/4;  /*atan(+INF,-INF)*/
-			case 3: return -3*pi/4; /*atan(-INF,-INF)*/
-			}
-		} else {
-			switch (m) {
-			case 0: return  0.0f;    /* atan(+...,+INF) */
-			case 1: return -0.0f;    /* atan(-...,+INF) */
-			case 2: return  pi; /* atan(+...,-INF) */
-			case 3: return -pi; /* atan(-...,-INF) */
-			}
-		}
-	}
-	/* |y/x| > 0x1p26 */
-	if (ix+(26<<23) < iy || iy == 0x7f800000)
-		return m&1 ? -pi/2 : pi/2;
+  /* when y = 0 */
+  if (iy == 0) {
+    switch (m) {
+      case 0:
+      case 1:
+        return y; /* atan(+-0,+anything)=+-0 */
+      case 2:
+        return pi; /* atan(+0,-anything) = pi */
+      case 3:
+        return -pi; /* atan(-0,-anything) =-pi */
+    }
+  }
+  /* when x = 0 */
+  if (ix == 0)
+    return m & 1 ? -pi / 2 : pi / 2;
+  /* when x is INF */
+  if (ix == 0x7f800000) {
+    if (iy == 0x7f800000) {
+      switch (m) {
+        case 0:
+          return pi / 4; /* atan(+INF,+INF) */
+        case 1:
+          return -pi / 4; /* atan(-INF,+INF) */
+        case 2:
+          return 3 * pi / 4; /*atan(+INF,-INF)*/
+        case 3:
+          return -3 * pi / 4; /*atan(-INF,-INF)*/
+      }
+    } else {
+      switch (m) {
+        case 0:
+          return 0.0f; /* atan(+...,+INF) */
+        case 1:
+          return -0.0f; /* atan(-...,+INF) */
+        case 2:
+          return pi; /* atan(+...,-INF) */
+        case 3:
+          return -pi; /* atan(-...,-INF) */
+      }
+    }
+  }
+  /* |y/x| > 0x1p26 */
+  if (ix + (26 << 23) < iy || iy == 0x7f800000)
+    return m & 1 ? -pi / 2 : pi / 2;
 
-	/* z = atan(|y/x|) with correct underflow */
-	if ((m&2) && iy+(26<<23) < ix)  /*|y/x| < 0x1p-26, x < 0 */
-		z = 0.0;
-	else
-		z = atanf(fabsf(y/x));
-	switch (m) {
-	case 0: return z;              /* atan(+,+) */
-	case 1: return -z;             /* atan(-,+) */
-	case 2: return pi - (z-pi_lo); /* atan(+,-) */
-	default: /* case 3 */
-		return (z-pi_lo) - pi; /* atan(-,-) */
-	}
+  /* z = atan(|y/x|) with correct underflow */
+  if ((m & 2) && iy + (26 << 23) < ix) /*|y/x| < 0x1p-26, x < 0 */
+    z = 0.0;
+  else
+    z = atanf(fabsf(y / x));
+  switch (m) {
+    case 0:
+      return z; /* atan(+,+) */
+    case 1:
+      return -z; /* atan(-,+) */
+    case 2:
+      return pi - (z - pi_lo); /* atan(+,-) */
+    default:                   /* case 3 */
+      return (z - pi_lo) - pi; /* atan(-,-) */
+  }
 }
diff --git a/fusl/src/math/atan2l.c b/fusl/src/math/atan2l.c
index f0937a9..055da95 100644
--- a/fusl/src/math/atan2l.c
+++ b/fusl/src/math/atan2l.c
@@ -18,68 +18,80 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double atan2l(long double y, long double x)
-{
-	return atan2(y, x);
+long double atan2l(long double y, long double x) {
+  return atan2(y, x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
 #include "__invtrigl.h"
 
-long double atan2l(long double y, long double x)
-{
-	union ldshape ux, uy;
-	long double z;
-	int m, ex, ey;
+long double atan2l(long double y, long double x) {
+  union ldshape ux, uy;
+  long double z;
+  int m, ex, ey;
 
-	if (isnan(x) || isnan(y))
-		return x+y;
-	if (x == 1)
-		return atanl(y);
-	ux.f = x;
-	uy.f = y;
-	ex = ux.i.se & 0x7fff;
-	ey = uy.i.se & 0x7fff;
-	m = 2*(ux.i.se>>15) | uy.i.se>>15;
-	if (y == 0) {
-		switch(m) {
-		case 0:
-		case 1: return y;           /* atan(+-0,+anything)=+-0 */
-		case 2: return  2*pio2_hi;  /* atan(+0,-anything) = pi */
-		case 3: return -2*pio2_hi;  /* atan(-0,-anything) =-pi */
-		}
-	}
-	if (x == 0)
-		return m&1 ? -pio2_hi : pio2_hi;
-	if (ex == 0x7fff) {
-		if (ey == 0x7fff) {
-			switch(m) {
-			case 0: return  pio2_hi/2;   /* atan(+INF,+INF) */
-			case 1: return -pio2_hi/2;   /* atan(-INF,+INF) */
-			case 2: return  1.5*pio2_hi; /* atan(+INF,-INF) */
-			case 3: return -1.5*pio2_hi; /* atan(-INF,-INF) */
-			}
-		} else {
-			switch(m) {
-			case 0: return  0.0;        /* atan(+...,+INF) */
-			case 1: return -0.0;        /* atan(-...,+INF) */
-			case 2: return  2*pio2_hi;  /* atan(+...,-INF) */
-			case 3: return -2*pio2_hi;  /* atan(-...,-INF) */
-			}
-		}
-	}
-	if (ex+120 < ey || ey == 0x7fff)
-		return m&1 ? -pio2_hi : pio2_hi;
-	/* z = atan(|y/x|) without spurious underflow */
-	if ((m&2) && ey+120 < ex)  /* |y/x| < 0x1p-120, x<0 */
-		z = 0.0;
-	else
-		z = atanl(fabsl(y/x));
-	switch (m) {
-	case 0: return z;               /* atan(+,+) */
-	case 1: return -z;              /* atan(-,+) */
-	case 2: return 2*pio2_hi-(z-2*pio2_lo); /* atan(+,-) */
-	default: /* case 3 */
-		return (z-2*pio2_lo)-2*pio2_hi; /* atan(-,-) */
-	}
+  if (isnan(x) || isnan(y))
+    return x + y;
+  if (x == 1)
+    return atanl(y);
+  ux.f = x;
+  uy.f = y;
+  ex = ux.i.se & 0x7fff;
+  ey = uy.i.se & 0x7fff;
+  m = 2 * (ux.i.se >> 15) | uy.i.se >> 15;
+  if (y == 0) {
+    switch (m) {
+      case 0:
+      case 1:
+        return y; /* atan(+-0,+anything)=+-0 */
+      case 2:
+        return 2 * pio2_hi; /* atan(+0,-anything) = pi */
+      case 3:
+        return -2 * pio2_hi; /* atan(-0,-anything) =-pi */
+    }
+  }
+  if (x == 0)
+    return m & 1 ? -pio2_hi : pio2_hi;
+  if (ex == 0x7fff) {
+    if (ey == 0x7fff) {
+      switch (m) {
+        case 0:
+          return pio2_hi / 2; /* atan(+INF,+INF) */
+        case 1:
+          return -pio2_hi / 2; /* atan(-INF,+INF) */
+        case 2:
+          return 1.5 * pio2_hi; /* atan(+INF,-INF) */
+        case 3:
+          return -1.5 * pio2_hi; /* atan(-INF,-INF) */
+      }
+    } else {
+      switch (m) {
+        case 0:
+          return 0.0; /* atan(+...,+INF) */
+        case 1:
+          return -0.0; /* atan(-...,+INF) */
+        case 2:
+          return 2 * pio2_hi; /* atan(+...,-INF) */
+        case 3:
+          return -2 * pio2_hi; /* atan(-...,-INF) */
+      }
+    }
+  }
+  if (ex + 120 < ey || ey == 0x7fff)
+    return m & 1 ? -pio2_hi : pio2_hi;
+  /* z = atan(|y/x|) without spurious underflow */
+  if ((m & 2) && ey + 120 < ex) /* |y/x| < 0x1p-120, x<0 */
+    z = 0.0;
+  else
+    z = atanl(fabsl(y / x));
+  switch (m) {
+    case 0:
+      return z; /* atan(+,+) */
+    case 1:
+      return -z; /* atan(-,+) */
+    case 2:
+      return 2 * pio2_hi - (z - 2 * pio2_lo); /* atan(+,-) */
+    default:                                  /* case 3 */
+      return (z - 2 * pio2_lo) - 2 * pio2_hi; /* atan(-,-) */
+  }
 }
 #endif
diff --git a/fusl/src/math/atanf.c b/fusl/src/math/atanf.c
index 178341b..a63fccc 100644
--- a/fusl/src/math/atanf.c
+++ b/fusl/src/math/atanf.c
@@ -13,82 +13,77 @@
  * ====================================================
  */
 
-
 #include "libm.h"
 
 static const float atanhi[] = {
-  4.6364760399e-01, /* atan(0.5)hi 0x3eed6338 */
-  7.8539812565e-01, /* atan(1.0)hi 0x3f490fda */
-  9.8279368877e-01, /* atan(1.5)hi 0x3f7b985e */
-  1.5707962513e+00, /* atan(inf)hi 0x3fc90fda */
+    4.6364760399e-01, /* atan(0.5)hi 0x3eed6338 */
+    7.8539812565e-01, /* atan(1.0)hi 0x3f490fda */
+    9.8279368877e-01, /* atan(1.5)hi 0x3f7b985e */
+    1.5707962513e+00, /* atan(inf)hi 0x3fc90fda */
 };
 
 static const float atanlo[] = {
-  5.0121582440e-09, /* atan(0.5)lo 0x31ac3769 */
-  3.7748947079e-08, /* atan(1.0)lo 0x33222168 */
-  3.4473217170e-08, /* atan(1.5)lo 0x33140fb4 */
-  7.5497894159e-08, /* atan(inf)lo 0x33a22168 */
+    5.0121582440e-09, /* atan(0.5)lo 0x31ac3769 */
+    3.7748947079e-08, /* atan(1.0)lo 0x33222168 */
+    3.4473217170e-08, /* atan(1.5)lo 0x33140fb4 */
+    7.5497894159e-08, /* atan(inf)lo 0x33a22168 */
 };
 
 static const float aT[] = {
-  3.3333328366e-01,
- -1.9999158382e-01,
-  1.4253635705e-01,
- -1.0648017377e-01,
-  6.1687607318e-02,
+    3.3333328366e-01,  -1.9999158382e-01, 1.4253635705e-01,
+    -1.0648017377e-01, 6.1687607318e-02,
 };
 
-float atanf(float x)
-{
-	float_t w,s1,s2,z;
-	uint32_t ix,sign;
-	int id;
+float atanf(float x) {
+  float_t w, s1, s2, z;
+  uint32_t ix, sign;
+  int id;
 
-	GET_FLOAT_WORD(ix, x);
-	sign = ix>>31;
-	ix &= 0x7fffffff;
-	if (ix >= 0x4c800000) {  /* if |x| >= 2**26 */
-		if (isnan(x))
-			return x;
-		z = atanhi[3] + 0x1p-120f;
-		return sign ? -z : z;
-	}
-	if (ix < 0x3ee00000) {   /* |x| < 0.4375 */
-		if (ix < 0x39800000) {  /* |x| < 2**-12 */
-			if (ix < 0x00800000)
-				/* raise underflow for subnormal x */
-				FORCE_EVAL(x*x);
-			return x;
-		}
-		id = -1;
-	} else {
-		x = fabsf(x);
-		if (ix < 0x3f980000) {  /* |x| < 1.1875 */
-			if (ix < 0x3f300000) {  /*  7/16 <= |x| < 11/16 */
-				id = 0;
-				x = (2.0f*x - 1.0f)/(2.0f + x);
-			} else {                /* 11/16 <= |x| < 19/16 */
-				id = 1;
-				x = (x - 1.0f)/(x + 1.0f);
-			}
-		} else {
-			if (ix < 0x401c0000) {  /* |x| < 2.4375 */
-				id = 2;
-				x = (x - 1.5f)/(1.0f + 1.5f*x);
-			} else {                /* 2.4375 <= |x| < 2**26 */
-				id = 3;
-				x = -1.0f/x;
-			}
-		}
-	}
-	/* end of argument reduction */
-	z = x*x;
-	w = z*z;
-	/* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */
-	s1 = z*(aT[0]+w*(aT[2]+w*aT[4]));
-	s2 = w*(aT[1]+w*aT[3]);
-	if (id < 0)
-		return x - x*(s1+s2);
-	z = atanhi[id] - ((x*(s1+s2) - atanlo[id]) - x);
-	return sign ? -z : z;
+  GET_FLOAT_WORD(ix, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
+  if (ix >= 0x4c800000) { /* if |x| >= 2**26 */
+    if (isnan(x))
+      return x;
+    z = atanhi[3] + 0x1p-120f;
+    return sign ? -z : z;
+  }
+  if (ix < 0x3ee00000) {   /* |x| < 0.4375 */
+    if (ix < 0x39800000) { /* |x| < 2**-12 */
+      if (ix < 0x00800000)
+        /* raise underflow for subnormal x */
+        FORCE_EVAL(x * x);
+      return x;
+    }
+    id = -1;
+  } else {
+    x = fabsf(x);
+    if (ix < 0x3f980000) {   /* |x| < 1.1875 */
+      if (ix < 0x3f300000) { /*  7/16 <= |x| < 11/16 */
+        id = 0;
+        x = (2.0f * x - 1.0f) / (2.0f + x);
+      } else { /* 11/16 <= |x| < 19/16 */
+        id = 1;
+        x = (x - 1.0f) / (x + 1.0f);
+      }
+    } else {
+      if (ix < 0x401c0000) { /* |x| < 2.4375 */
+        id = 2;
+        x = (x - 1.5f) / (1.0f + 1.5f * x);
+      } else { /* 2.4375 <= |x| < 2**26 */
+        id = 3;
+        x = -1.0f / x;
+      }
+    }
+  }
+  /* end of argument reduction */
+  z = x * x;
+  w = z * z;
+  /* break sum from i=0 to 10 aT[i]z**(i+1) into odd and even poly */
+  s1 = z * (aT[0] + w * (aT[2] + w * aT[4]));
+  s2 = w * (aT[1] + w * aT[3]);
+  if (id < 0)
+    return x - x * (s1 + s2);
+  z = atanhi[id] - ((x * (s1 + s2) - atanlo[id]) - x);
+  return sign ? -z : z;
 }
diff --git a/fusl/src/math/atanh.c b/fusl/src/math/atanh.c
index 63a035d..291cf15 100644
--- a/fusl/src/math/atanh.c
+++ b/fusl/src/math/atanh.c
@@ -1,29 +1,31 @@
 #include "libm.h"
 
 /* atanh(x) = log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2 ~= x + x^3/3 + o(x^5) */
-double atanh(double x)
-{
-	union {double f; uint64_t i;} u = {.f = x};
-	unsigned e = u.i >> 52 & 0x7ff;
-	unsigned s = u.i >> 63;
-	double_t y;
+double atanh(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {.f = x};
+  unsigned e = u.i >> 52 & 0x7ff;
+  unsigned s = u.i >> 63;
+  double_t y;
 
-	/* |x| */
-	u.i &= (uint64_t)-1/2;
-	y = u.f;
+  /* |x| */
+  u.i &= (uint64_t)-1 / 2;
+  y = u.f;
 
-	if (e < 0x3ff - 1) {
-		if (e < 0x3ff - 32) {
-			/* handle underflow */
-			if (e == 0)
-				FORCE_EVAL((float)y);
-		} else {
-			/* |x| < 0.5, up to 1.7ulp error */
-			y = 0.5*log1p(2*y + 2*y*y/(1-y));
-		}
-	} else {
-		/* avoid overflow */
-		y = 0.5*log1p(2*(y/(1-y)));
-	}
-	return s ? -y : y;
+  if (e < 0x3ff - 1) {
+    if (e < 0x3ff - 32) {
+      /* handle underflow */
+      if (e == 0)
+        FORCE_EVAL((float)y);
+    } else {
+      /* |x| < 0.5, up to 1.7ulp error */
+      y = 0.5 * log1p(2 * y + 2 * y * y / (1 - y));
+    }
+  } else {
+    /* avoid overflow */
+    y = 0.5 * log1p(2 * (y / (1 - y)));
+  }
+  return s ? -y : y;
 }
diff --git a/fusl/src/math/atanhf.c b/fusl/src/math/atanhf.c
index 65f07c0..346be6b 100644
--- a/fusl/src/math/atanhf.c
+++ b/fusl/src/math/atanhf.c
@@ -1,28 +1,30 @@
 #include "libm.h"
 
 /* atanh(x) = log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2 ~= x + x^3/3 + o(x^5) */
-float atanhf(float x)
-{
-	union {float f; uint32_t i;} u = {.f = x};
-	unsigned s = u.i >> 31;
-	float_t y;
+float atanhf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {.f = x};
+  unsigned s = u.i >> 31;
+  float_t y;
 
-	/* |x| */
-	u.i &= 0x7fffffff;
-	y = u.f;
+  /* |x| */
+  u.i &= 0x7fffffff;
+  y = u.f;
 
-	if (u.i < 0x3f800000 - (1<<23)) {
-		if (u.i < 0x3f800000 - (32<<23)) {
-			/* handle underflow */
-			if (u.i < (1<<23))
-				FORCE_EVAL((float)(y*y));
-		} else {
-			/* |x| < 0.5, up to 1.7ulp error */
-			y = 0.5f*log1pf(2*y + 2*y*y/(1-y));
-		}
-	} else {
-		/* avoid overflow */
-		y = 0.5f*log1pf(2*(y/(1-y)));
-	}
-	return s ? -y : y;
+  if (u.i < 0x3f800000 - (1 << 23)) {
+    if (u.i < 0x3f800000 - (32 << 23)) {
+      /* handle underflow */
+      if (u.i < (1 << 23))
+        FORCE_EVAL((float)(y * y));
+    } else {
+      /* |x| < 0.5, up to 1.7ulp error */
+      y = 0.5f * log1pf(2 * y + 2 * y * y / (1 - y));
+    }
+  } else {
+    /* avoid overflow */
+    y = 0.5f * log1pf(2 * (y / (1 - y)));
+  }
+  return s ? -y : y;
 }
diff --git a/fusl/src/math/atanhl.c b/fusl/src/math/atanhl.c
index 87cd1cd..4c6db53 100644
--- a/fusl/src/math/atanhl.c
+++ b/fusl/src/math/atanhl.c
@@ -1,35 +1,33 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double atanhl(long double x)
-{
-	return atanh(x);
+long double atanhl(long double x) {
+  return atanh(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
 /* atanh(x) = log((1+x)/(1-x))/2 = log1p(2x/(1-x))/2 ~= x + x^3/3 + o(x^5) */
-long double atanhl(long double x)
-{
-	union ldshape u = {x};
-	unsigned e = u.i.se & 0x7fff;
-	unsigned s = u.i.se >> 15;
+long double atanhl(long double x) {
+  union ldshape u = {x};
+  unsigned e = u.i.se & 0x7fff;
+  unsigned s = u.i.se >> 15;
 
-	/* |x| */
-	u.i.se = e;
-	x = u.f;
+  /* |x| */
+  u.i.se = e;
+  x = u.f;
 
-	if (e < 0x3ff - 1) {
-		if (e < 0x3ff - LDBL_MANT_DIG/2) {
-			/* handle underflow */
-			if (e == 0)
-				FORCE_EVAL((float)x);
-		} else {
-			/* |x| < 0.5, up to 1.7ulp error */
-			x = 0.5*log1pl(2*x + 2*x*x/(1-x));
-		}
-	} else {
-		/* avoid overflow */
-		x = 0.5*log1pl(2*(x/(1-x)));
-	}
-	return s ? -x : x;
+  if (e < 0x3ff - 1) {
+    if (e < 0x3ff - LDBL_MANT_DIG / 2) {
+      /* handle underflow */
+      if (e == 0)
+        FORCE_EVAL((float)x);
+    } else {
+      /* |x| < 0.5, up to 1.7ulp error */
+      x = 0.5 * log1pl(2 * x + 2 * x * x / (1 - x));
+    }
+  } else {
+    /* avoid overflow */
+    x = 0.5 * log1pl(2 * (x / (1 - x)));
+  }
+  return s ? -x : x;
 }
 #endif
diff --git a/fusl/src/math/atanl.c b/fusl/src/math/atanl.c
index 79a3edb..cefd937 100644
--- a/fusl/src/math/atanl.c
+++ b/fusl/src/math/atanl.c
@@ -17,168 +17,175 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double atanl(long double x)
-{
-	return atan(x);
+long double atanl(long double x) {
+  return atan(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
 
 #if LDBL_MANT_DIG == 64
-#define EXPMAN(u) ((u.i.se & 0x7fff)<<8 | (u.i.m>>55 & 0xff))
+#define EXPMAN(u) ((u.i.se & 0x7fff) << 8 | (u.i.m >> 55 & 0xff))
 
 static const long double atanhi[] = {
-	 4.63647609000806116202e-01L,
-	 7.85398163397448309628e-01L,
-	 9.82793723247329067960e-01L,
-	 1.57079632679489661926e+00L,
+    4.63647609000806116202e-01L, 7.85398163397448309628e-01L,
+    9.82793723247329067960e-01L, 1.57079632679489661926e+00L,
 };
 
 static const long double atanlo[] = {
-	 1.18469937025062860669e-20L,
-	-1.25413940316708300586e-20L,
-	 2.55232234165405176172e-20L,
-	-2.50827880633416601173e-20L,
+    1.18469937025062860669e-20L, -1.25413940316708300586e-20L,
+    2.55232234165405176172e-20L, -2.50827880633416601173e-20L,
 };
 
 static const long double aT[] = {
-	 3.33333333333333333017e-01L,
-	-1.99999999999999632011e-01L,
-	 1.42857142857046531280e-01L,
-	-1.11111111100562372733e-01L,
-	 9.09090902935647302252e-02L,
-	-7.69230552476207730353e-02L,
-	 6.66661718042406260546e-02L,
-	-5.88158892835030888692e-02L,
-	 5.25499891539726639379e-02L,
-	-4.70119845393155721494e-02L,
-	 4.03539201366454414072e-02L,
-	-2.91303858419364158725e-02L,
-	 1.24822046299269234080e-02L,
+    3.33333333333333333017e-01L, -1.99999999999999632011e-01L,
+    1.42857142857046531280e-01L, -1.11111111100562372733e-01L,
+    9.09090902935647302252e-02L, -7.69230552476207730353e-02L,
+    6.66661718042406260546e-02L, -5.88158892835030888692e-02L,
+    5.25499891539726639379e-02L, -4.70119845393155721494e-02L,
+    4.03539201366454414072e-02L, -2.91303858419364158725e-02L,
+    1.24822046299269234080e-02L,
 };
 
-static long double T_even(long double x)
-{
-	return aT[0] + x * (aT[2] + x * (aT[4] + x * (aT[6] +
-		x * (aT[8] + x * (aT[10] + x * aT[12])))));
+static long double T_even(long double x) {
+  return aT[0] +
+         x * (aT[2] +
+              x * (aT[4] +
+                   x * (aT[6] + x * (aT[8] + x * (aT[10] + x * aT[12])))));
 }
 
-static long double T_odd(long double x)
-{
-	return aT[1] + x * (aT[3] + x * (aT[5] + x * (aT[7] +
-		x * (aT[9] + x * aT[11]))));
+static long double T_odd(long double x) {
+  return aT[1] +
+         x * (aT[3] + x * (aT[5] + x * (aT[7] + x * (aT[9] + x * aT[11]))));
 }
 #elif LDBL_MANT_DIG == 113
-#define EXPMAN(u) ((u.i.se & 0x7fff)<<8 | u.i.top>>8)
+#define EXPMAN(u) ((u.i.se & 0x7fff) << 8 | u.i.top >> 8)
 
 const long double atanhi[] = {
-	 4.63647609000806116214256231461214397e-01L,
-	 7.85398163397448309615660845819875699e-01L,
-	 9.82793723247329067985710611014666038e-01L,
-	 1.57079632679489661923132169163975140e+00L,
+    4.63647609000806116214256231461214397e-01L,
+    7.85398163397448309615660845819875699e-01L,
+    9.82793723247329067985710611014666038e-01L,
+    1.57079632679489661923132169163975140e+00L,
 };
 
 const long double atanlo[] = {
-	 4.89509642257333492668618435220297706e-36L,
-	 2.16795253253094525619926100651083806e-35L,
-	-2.31288434538183565909319952098066272e-35L,
-	 4.33590506506189051239852201302167613e-35L,
+    4.89509642257333492668618435220297706e-36L,
+    2.16795253253094525619926100651083806e-35L,
+    -2.31288434538183565909319952098066272e-35L,
+    4.33590506506189051239852201302167613e-35L,
 };
 
 const long double aT[] = {
-	 3.33333333333333333333333333333333125e-01L,
-	-1.99999999999999999999999999999180430e-01L,
-	 1.42857142857142857142857142125269827e-01L,
-	-1.11111111111111111111110834490810169e-01L,
-	 9.09090909090909090908522355708623681e-02L,
-	-7.69230769230769230696553844935357021e-02L,
-	 6.66666666666666660390096773046256096e-02L,
-	-5.88235294117646671706582985209643694e-02L,
-	 5.26315789473666478515847092020327506e-02L,
-	-4.76190476189855517021024424991436144e-02L,
-	 4.34782608678695085948531993458097026e-02L,
-	-3.99999999632663469330634215991142368e-02L,
-	 3.70370363987423702891250829918659723e-02L,
-	-3.44827496515048090726669907612335954e-02L,
-	 3.22579620681420149871973710852268528e-02L,
-	-3.03020767654269261041647570626778067e-02L,
-	 2.85641979882534783223403715930946138e-02L,
-	-2.69824879726738568189929461383741323e-02L,
-	 2.54194698498808542954187110873675769e-02L,
-	-2.35083879708189059926183138130183215e-02L,
-	 2.04832358998165364349957325067131428e-02L,
-	-1.54489555488544397858507248612362957e-02L,
-	 8.64492360989278761493037861575248038e-03L,
-	-2.58521121597609872727919154569765469e-03L,
+    3.33333333333333333333333333333333125e-01L,
+    -1.99999999999999999999999999999180430e-01L,
+    1.42857142857142857142857142125269827e-01L,
+    -1.11111111111111111111110834490810169e-01L,
+    9.09090909090909090908522355708623681e-02L,
+    -7.69230769230769230696553844935357021e-02L,
+    6.66666666666666660390096773046256096e-02L,
+    -5.88235294117646671706582985209643694e-02L,
+    5.26315789473666478515847092020327506e-02L,
+    -4.76190476189855517021024424991436144e-02L,
+    4.34782608678695085948531993458097026e-02L,
+    -3.99999999632663469330634215991142368e-02L,
+    3.70370363987423702891250829918659723e-02L,
+    -3.44827496515048090726669907612335954e-02L,
+    3.22579620681420149871973710852268528e-02L,
+    -3.03020767654269261041647570626778067e-02L,
+    2.85641979882534783223403715930946138e-02L,
+    -2.69824879726738568189929461383741323e-02L,
+    2.54194698498808542954187110873675769e-02L,
+    -2.35083879708189059926183138130183215e-02L,
+    2.04832358998165364349957325067131428e-02L,
+    -1.54489555488544397858507248612362957e-02L,
+    8.64492360989278761493037861575248038e-03L,
+    -2.58521121597609872727919154569765469e-03L,
 };
 
-static long double T_even(long double x)
-{
-	return (aT[0] + x * (aT[2] + x * (aT[4] + x * (aT[6] + x * (aT[8] +
-		x * (aT[10] + x * (aT[12] + x * (aT[14] + x * (aT[16] +
-		x * (aT[18] + x * (aT[20] + x * aT[22])))))))))));
+static long double T_even(long double x) {
+  return (
+      aT[0] +
+      x * (aT[2] +
+           x * (aT[4] +
+                x * (aT[6] +
+                     x * (aT[8] +
+                          x * (aT[10] +
+                               x * (aT[12] +
+                                    x * (aT[14] +
+                                         x * (aT[16] +
+                                              x * (aT[18] +
+                                                   x * (aT[20] +
+                                                        x * aT[22])))))))))));
 }
 
-static long double T_odd(long double x)
-{
-	return (aT[1] + x * (aT[3] + x * (aT[5] + x * (aT[7] + x * (aT[9] +
-		x * (aT[11] + x * (aT[13] + x * (aT[15] + x * (aT[17] +
-		x * (aT[19] + x * (aT[21] + x * aT[23])))))))))));
+static long double T_odd(long double x) {
+  return (
+      aT[1] +
+      x * (aT[3] +
+           x * (aT[5] +
+                x * (aT[7] +
+                     x * (aT[9] +
+                          x * (aT[11] +
+                               x * (aT[13] +
+                                    x * (aT[15] +
+                                         x * (aT[17] +
+                                              x * (aT[19] +
+                                                   x * (aT[21] +
+                                                        x * aT[23])))))))))));
 }
 #endif
 
-long double atanl(long double x)
-{
-	union ldshape u = {x};
-	long double w, s1, s2, z;
-	int id;
-	unsigned e = u.i.se & 0x7fff;
-	unsigned sign = u.i.se >> 15;
-	unsigned expman;
+long double atanl(long double x) {
+  union ldshape u = {x};
+  long double w, s1, s2, z;
+  int id;
+  unsigned e = u.i.se & 0x7fff;
+  unsigned sign = u.i.se >> 15;
+  unsigned expman;
 
-	if (e >= 0x3fff + LDBL_MANT_DIG + 1) { /* if |x| is large, atan(x)~=pi/2 */
-		if (isnan(x))
-			return x;
-		return sign ? -atanhi[3] : atanhi[3];
-	}
-	/* Extract the exponent and the first few bits of the mantissa. */
-	expman = EXPMAN(u);
-	if (expman < ((0x3fff - 2) << 8) + 0xc0) {  /* |x| < 0.4375 */
-		if (e < 0x3fff - (LDBL_MANT_DIG+1)/2) {   /* if |x| is small, atanl(x)~=x */
-			/* raise underflow if subnormal */
-			if (e == 0)
-				FORCE_EVAL((float)x);
-			return x;
-		}
-		id = -1;
-	} else {
-		x = fabsl(x);
-		if (expman < (0x3fff << 8) + 0x30) {  /* |x| < 1.1875 */
-			if (expman < ((0x3fff - 1) << 8) + 0x60) { /*  7/16 <= |x| < 11/16 */
-				id = 0;
-				x = (2.0*x-1.0)/(2.0+x);
-			} else {                                 /* 11/16 <= |x| < 19/16 */
-				id = 1;
-				x = (x-1.0)/(x+1.0);
-			}
-		} else {
-			if (expman < ((0x3fff + 1) << 8) + 0x38) { /* |x| < 2.4375 */
-				id = 2;
-				x = (x-1.5)/(1.0+1.5*x);
-			} else {                                 /* 2.4375 <= |x| */
-				id = 3;
-				x = -1.0/x;
-			}
-		}
-	}
-	/* end of argument reduction */
-	z = x*x;
-	w = z*z;
-	/* break sum aT[i]z**(i+1) into odd and even poly */
-	s1 = z*T_even(w);
-	s2 = w*T_odd(w);
-	if (id < 0)
-		return x - x*(s1+s2);
-	z = atanhi[id] - ((x*(s1+s2) - atanlo[id]) - x);
-	return sign ? -z : z;
+  if (e >= 0x3fff + LDBL_MANT_DIG + 1) { /* if |x| is large, atan(x)~=pi/2 */
+    if (isnan(x))
+      return x;
+    return sign ? -atanhi[3] : atanhi[3];
+  }
+  /* Extract the exponent and the first few bits of the mantissa. */
+  expman = EXPMAN(u);
+  if (expman < ((0x3fff - 2) << 8) + 0xc0) { /* |x| < 0.4375 */
+    if (e <
+        0x3fff - (LDBL_MANT_DIG + 1) / 2) { /* if |x| is small, atanl(x)~=x */
+      /* raise underflow if subnormal */
+      if (e == 0)
+        FORCE_EVAL((float)x);
+      return x;
+    }
+    id = -1;
+  } else {
+    x = fabsl(x);
+    if (expman < (0x3fff << 8) + 0x30) {         /* |x| < 1.1875 */
+      if (expman < ((0x3fff - 1) << 8) + 0x60) { /*  7/16 <= |x| < 11/16 */
+        id = 0;
+        x = (2.0 * x - 1.0) / (2.0 + x);
+      } else { /* 11/16 <= |x| < 19/16 */
+        id = 1;
+        x = (x - 1.0) / (x + 1.0);
+      }
+    } else {
+      if (expman < ((0x3fff + 1) << 8) + 0x38) { /* |x| < 2.4375 */
+        id = 2;
+        x = (x - 1.5) / (1.0 + 1.5 * x);
+      } else { /* 2.4375 <= |x| */
+        id = 3;
+        x = -1.0 / x;
+      }
+    }
+  }
+  /* end of argument reduction */
+  z = x * x;
+  w = z * z;
+  /* break sum aT[i]z**(i+1) into odd and even poly */
+  s1 = z * T_even(w);
+  s2 = w * T_odd(w);
+  if (id < 0)
+    return x - x * (s1 + s2);
+  z = atanhi[id] - ((x * (s1 + s2) - atanlo[id]) - x);
+  return sign ? -z : z;
 }
 #endif
diff --git a/fusl/src/math/cbrt.c b/fusl/src/math/cbrt.c
index 7599d3e..d6879df 100644
--- a/fusl/src/math/cbrt.c
+++ b/fusl/src/math/cbrt.c
@@ -19,85 +19,86 @@
 #include <stdint.h>
 
 static const uint32_t
-B1 = 715094163, /* B1 = (1023-1023/3-0.03306235651)*2**20 */
-B2 = 696219795; /* B2 = (1023-1023/3-54/3-0.03306235651)*2**20 */
+    B1 = 715094163, /* B1 = (1023-1023/3-0.03306235651)*2**20 */
+    B2 = 696219795; /* B2 = (1023-1023/3-54/3-0.03306235651)*2**20 */
 
 /* |1/cbrt(x) - p(x)| < 2**-23.5 (~[-7.93e-8, 7.929e-8]). */
-static const double
-P0 =  1.87595182427177009643,  /* 0x3ffe03e6, 0x0f61e692 */
-P1 = -1.88497979543377169875,  /* 0xbffe28e0, 0x92f02420 */
-P2 =  1.621429720105354466140, /* 0x3ff9f160, 0x4a49d6c2 */
-P3 = -0.758397934778766047437, /* 0xbfe844cb, 0xbee751d9 */
-P4 =  0.145996192886612446982; /* 0x3fc2b000, 0xd4e4edd7 */
+static const double P0 = 1.87595182427177009643, /* 0x3ffe03e6, 0x0f61e692 */
+    P1 = -1.88497979543377169875,                /* 0xbffe28e0, 0x92f02420 */
+    P2 = 1.621429720105354466140,                /* 0x3ff9f160, 0x4a49d6c2 */
+    P3 = -0.758397934778766047437,               /* 0xbfe844cb, 0xbee751d9 */
+    P4 = 0.145996192886612446982;                /* 0x3fc2b000, 0xd4e4edd7 */
 
-double cbrt(double x)
-{
-	union {double f; uint64_t i;} u = {x};
-	double_t r,s,t,w;
-	uint32_t hx = u.i>>32 & 0x7fffffff;
+double cbrt(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  double_t r, s, t, w;
+  uint32_t hx = u.i >> 32 & 0x7fffffff;
 
-	if (hx >= 0x7ff00000)  /* cbrt(NaN,INF) is itself */
-		return x+x;
+  if (hx >= 0x7ff00000) /* cbrt(NaN,INF) is itself */
+    return x + x;
 
-	/*
-	 * Rough cbrt to 5 bits:
-	 *    cbrt(2**e*(1+m) ~= 2**(e/3)*(1+(e%3+m)/3)
-	 * where e is integral and >= 0, m is real and in [0, 1), and "/" and
-	 * "%" are integer division and modulus with rounding towards minus
-	 * infinity.  The RHS is always >= the LHS and has a maximum relative
-	 * error of about 1 in 16.  Adding a bias of -0.03306235651 to the
-	 * (e%3+m)/3 term reduces the error to about 1 in 32. With the IEEE
-	 * floating point representation, for finite positive normal values,
-	 * ordinary integer divison of the value in bits magically gives
-	 * almost exactly the RHS of the above provided we first subtract the
-	 * exponent bias (1023 for doubles) and later add it back.  We do the
-	 * subtraction virtually to keep e >= 0 so that ordinary integer
-	 * division rounds towards minus infinity; this is also efficient.
-	 */
-	if (hx < 0x00100000) { /* zero or subnormal? */
-		u.f = x*0x1p54;
-		hx = u.i>>32 & 0x7fffffff;
-		if (hx == 0)
-			return x;  /* cbrt(0) is itself */
-		hx = hx/3 + B2;
-	} else
-		hx = hx/3 + B1;
-	u.i &= 1ULL<<63;
-	u.i |= (uint64_t)hx << 32;
-	t = u.f;
+  /*
+   * Rough cbrt to 5 bits:
+   *    cbrt(2**e*(1+m) ~= 2**(e/3)*(1+(e%3+m)/3)
+   * where e is integral and >= 0, m is real and in [0, 1), and "/" and
+   * "%" are integer division and modulus with rounding towards minus
+   * infinity.  The RHS is always >= the LHS and has a maximum relative
+   * error of about 1 in 16.  Adding a bias of -0.03306235651 to the
+   * (e%3+m)/3 term reduces the error to about 1 in 32. With the IEEE
+   * floating point representation, for finite positive normal values,
+   * ordinary integer divison of the value in bits magically gives
+   * almost exactly the RHS of the above provided we first subtract the
+   * exponent bias (1023 for doubles) and later add it back.  We do the
+   * subtraction virtually to keep e >= 0 so that ordinary integer
+   * division rounds towards minus infinity; this is also efficient.
+   */
+  if (hx < 0x00100000) { /* zero or subnormal? */
+    u.f = x * 0x1p54;
+    hx = u.i >> 32 & 0x7fffffff;
+    if (hx == 0)
+      return x; /* cbrt(0) is itself */
+    hx = hx / 3 + B2;
+  } else
+    hx = hx / 3 + B1;
+  u.i &= 1ULL << 63;
+  u.i |= (uint64_t)hx << 32;
+  t = u.f;
 
-	/*
-	 * New cbrt to 23 bits:
-	 *    cbrt(x) = t*cbrt(x/t**3) ~= t*P(t**3/x)
-	 * where P(r) is a polynomial of degree 4 that approximates 1/cbrt(r)
-	 * to within 2**-23.5 when |r - 1| < 1/10.  The rough approximation
-	 * has produced t such than |t/cbrt(x) - 1| ~< 1/32, and cubing this
-	 * gives us bounds for r = t**3/x.
-	 *
-	 * Try to optimize for parallel evaluation as in __tanf.c.
-	 */
-	r = (t*t)*(t/x);
-	t = t*((P0+r*(P1+r*P2))+((r*r)*r)*(P3+r*P4));
+  /*
+   * New cbrt to 23 bits:
+   *    cbrt(x) = t*cbrt(x/t**3) ~= t*P(t**3/x)
+   * where P(r) is a polynomial of degree 4 that approximates 1/cbrt(r)
+   * to within 2**-23.5 when |r - 1| < 1/10.  The rough approximation
+   * has produced t such than |t/cbrt(x) - 1| ~< 1/32, and cubing this
+   * gives us bounds for r = t**3/x.
+   *
+   * Try to optimize for parallel evaluation as in __tanf.c.
+   */
+  r = (t * t) * (t / x);
+  t = t * ((P0 + r * (P1 + r * P2)) + ((r * r) * r) * (P3 + r * P4));
 
-	/*
-	 * Round t away from zero to 23 bits (sloppily except for ensuring that
-	 * the result is larger in magnitude than cbrt(x) but not much more than
-	 * 2 23-bit ulps larger).  With rounding towards zero, the error bound
-	 * would be ~5/6 instead of ~4/6.  With a maximum error of 2 23-bit ulps
-	 * in the rounded t, the infinite-precision error in the Newton
-	 * approximation barely affects third digit in the final error
-	 * 0.667; the error in the rounded t can be up to about 3 23-bit ulps
-	 * before the final error is larger than 0.667 ulps.
-	 */
-	u.f = t;
-	u.i = (u.i + 0x80000000) & 0xffffffffc0000000ULL;
-	t = u.f;
+  /*
+   * Round t away from zero to 23 bits (sloppily except for ensuring that
+   * the result is larger in magnitude than cbrt(x) but not much more than
+   * 2 23-bit ulps larger).  With rounding towards zero, the error bound
+   * would be ~5/6 instead of ~4/6.  With a maximum error of 2 23-bit ulps
+   * in the rounded t, the infinite-precision error in the Newton
+   * approximation barely affects third digit in the final error
+   * 0.667; the error in the rounded t can be up to about 3 23-bit ulps
+   * before the final error is larger than 0.667 ulps.
+   */
+  u.f = t;
+  u.i = (u.i + 0x80000000) & 0xffffffffc0000000ULL;
+  t = u.f;
 
-	/* one step Newton iteration to 53 bits with error < 0.667 ulps */
-	s = t*t;         /* t*t is exact */
-	r = x/s;         /* error <= 0.5 ulps; |r| < |t| */
-	w = t+t;         /* t+t is exact */
-	r = (r-t)/(w+r); /* r-t is exact; w+r ~= 3*t */
-	t = t+t*r;       /* error <= 0.5 + 0.5/3 + epsilon */
-	return t;
+  /* one step Newton iteration to 53 bits with error < 0.667 ulps */
+  s = t * t;             /* t*t is exact */
+  r = x / s;             /* error <= 0.5 ulps; |r| < |t| */
+  w = t + t;             /* t+t is exact */
+  r = (r - t) / (w + r); /* r-t is exact; w+r ~= 3*t */
+  t = t + t * r;         /* error <= 0.5 + 0.5/3 + epsilon */
+  return t;
 }
diff --git a/fusl/src/math/cbrtf.c b/fusl/src/math/cbrtf.c
index 89c2c86..f86b1b5 100644
--- a/fusl/src/math/cbrtf.c
+++ b/fusl/src/math/cbrtf.c
@@ -21,46 +21,48 @@
 #include <stdint.h>
 
 static const unsigned
-B1 = 709958130, /* B1 = (127-127.0/3-0.03306235651)*2**23 */
-B2 = 642849266; /* B2 = (127-127.0/3-24/3-0.03306235651)*2**23 */
+    B1 = 709958130, /* B1 = (127-127.0/3-0.03306235651)*2**23 */
+    B2 = 642849266; /* B2 = (127-127.0/3-24/3-0.03306235651)*2**23 */
 
-float cbrtf(float x)
-{
-	double_t r,T;
-	union {float f; uint32_t i;} u = {x};
-	uint32_t hx = u.i & 0x7fffffff;
+float cbrtf(float x) {
+  double_t r, T;
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  uint32_t hx = u.i & 0x7fffffff;
 
-	if (hx >= 0x7f800000)  /* cbrt(NaN,INF) is itself */
-		return x + x;
+  if (hx >= 0x7f800000) /* cbrt(NaN,INF) is itself */
+    return x + x;
 
-	/* rough cbrt to 5 bits */
-	if (hx < 0x00800000) {  /* zero or subnormal? */
-		if (hx == 0)
-			return x;  /* cbrt(+-0) is itself */
-		u.f = x*0x1p24f;
-		hx = u.i & 0x7fffffff;
-		hx = hx/3 + B2;
-	} else
-		hx = hx/3 + B1;
-	u.i &= 0x80000000;
-	u.i |= hx;
+  /* rough cbrt to 5 bits */
+  if (hx < 0x00800000) { /* zero or subnormal? */
+    if (hx == 0)
+      return x; /* cbrt(+-0) is itself */
+    u.f = x * 0x1p24f;
+    hx = u.i & 0x7fffffff;
+    hx = hx / 3 + B2;
+  } else
+    hx = hx / 3 + B1;
+  u.i &= 0x80000000;
+  u.i |= hx;
 
-	/*
-	 * First step Newton iteration (solving t*t-x/t == 0) to 16 bits.  In
-	 * double precision so that its terms can be arranged for efficiency
-	 * without causing overflow or underflow.
-	 */
-	T = u.f;
-	r = T*T*T;
-	T = T*((double_t)x+x+r)/(x+r+r);
+  /*
+   * First step Newton iteration (solving t*t-x/t == 0) to 16 bits.  In
+   * double precision so that its terms can be arranged for efficiency
+   * without causing overflow or underflow.
+   */
+  T = u.f;
+  r = T * T * T;
+  T = T * ((double_t)x + x + r) / (x + r + r);
 
-	/*
-	 * Second step Newton iteration to 47 bits.  In double precision for
-	 * efficiency and accuracy.
-	 */
-	r = T*T*T;
-	T = T*((double_t)x+x+r)/(x+r+r);
+  /*
+   * Second step Newton iteration to 47 bits.  In double precision for
+   * efficiency and accuracy.
+   */
+  r = T * T * T;
+  T = T * ((double_t)x + x + r) / (x + r + r);
 
-	/* rounding to 24 bits is perfect in round-to-nearest mode */
-	return T;
+  /* rounding to 24 bits is perfect in round-to-nearest mode */
+  return T;
 }
diff --git a/fusl/src/math/cbrtl.c b/fusl/src/math/cbrtl.c
index ceff913..525f4ed 100644
--- a/fusl/src/math/cbrtl.c
+++ b/fusl/src/math/cbrtl.c
@@ -18,107 +18,109 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double cbrtl(long double x)
-{
-	return cbrt(x);
+long double cbrtl(long double x) {
+  return cbrt(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
-static const unsigned B1 = 709958130; /* B1 = (127-127.0/3-0.03306235651)*2**23 */
+static const unsigned B1 =
+    709958130; /* B1 = (127-127.0/3-0.03306235651)*2**23 */
 
-long double cbrtl(long double x)
-{
-	union ldshape u = {x}, v;
-	union {float f; uint32_t i;} uft;
-	long double r, s, t, w;
-	double_t dr, dt, dx;
-	float_t ft;
-	int e = u.i.se & 0x7fff;
-	int sign = u.i.se & 0x8000;
+long double cbrtl(long double x) {
+  union ldshape u = {x}, v;
+  union {
+    float f;
+    uint32_t i;
+  } uft;
+  long double r, s, t, w;
+  double_t dr, dt, dx;
+  float_t ft;
+  int e = u.i.se & 0x7fff;
+  int sign = u.i.se & 0x8000;
 
-	/*
-	 * If x = +-Inf, then cbrt(x) = +-Inf.
-	 * If x = NaN, then cbrt(x) = NaN.
-	 */
-	if (e == 0x7fff)
-		return x + x;
-	if (e == 0) {
-		/* Adjust subnormal numbers. */
-		u.f *= 0x1p120;
-		e = u.i.se & 0x7fff;
-		/* If x = +-0, then cbrt(x) = +-0. */
-		if (e == 0)
-			return x;
-		e -= 120;
-	}
-	e -= 0x3fff;
-	u.i.se = 0x3fff;
-	x = u.f;
-	switch (e % 3) {
-	case 1:
-	case -2:
-		x *= 2;
-		e--;
-		break;
-	case 2:
-	case -1:
-		x *= 4;
-		e -= 2;
-		break;
-	}
-	v.f = 1.0;
-	v.i.se = sign | (0x3fff + e/3);
+  /*
+   * If x = +-Inf, then cbrt(x) = +-Inf.
+   * If x = NaN, then cbrt(x) = NaN.
+   */
+  if (e == 0x7fff)
+    return x + x;
+  if (e == 0) {
+    /* Adjust subnormal numbers. */
+    u.f *= 0x1p120;
+    e = u.i.se & 0x7fff;
+    /* If x = +-0, then cbrt(x) = +-0. */
+    if (e == 0)
+      return x;
+    e -= 120;
+  }
+  e -= 0x3fff;
+  u.i.se = 0x3fff;
+  x = u.f;
+  switch (e % 3) {
+    case 1:
+    case -2:
+      x *= 2;
+      e--;
+      break;
+    case 2:
+    case -1:
+      x *= 4;
+      e -= 2;
+      break;
+  }
+  v.f = 1.0;
+  v.i.se = sign | (0x3fff + e / 3);
 
-	/*
-	 * The following is the guts of s_cbrtf, with the handling of
-	 * special values removed and extra care for accuracy not taken,
-	 * but with most of the extra accuracy not discarded.
-	 */
+  /*
+   * The following is the guts of s_cbrtf, with the handling of
+   * special values removed and extra care for accuracy not taken,
+   * but with most of the extra accuracy not discarded.
+   */
 
-	/* ~5-bit estimate: */
-	uft.f = x;
-	uft.i = (uft.i & 0x7fffffff)/3 + B1;
-	ft = uft.f;
+  /* ~5-bit estimate: */
+  uft.f = x;
+  uft.i = (uft.i & 0x7fffffff) / 3 + B1;
+  ft = uft.f;
 
-	/* ~16-bit estimate: */
-	dx = x;
-	dt = ft;
-	dr = dt * dt * dt;
-	dt = dt * (dx + dx + dr) / (dx + dr + dr);
+  /* ~16-bit estimate: */
+  dx = x;
+  dt = ft;
+  dr = dt * dt * dt;
+  dt = dt * (dx + dx + dr) / (dx + dr + dr);
 
-	/* ~47-bit estimate: */
-	dr = dt * dt * dt;
-	dt = dt * (dx + dx + dr) / (dx + dr + dr);
+  /* ~47-bit estimate: */
+  dr = dt * dt * dt;
+  dt = dt * (dx + dx + dr) / (dx + dr + dr);
 
 #if LDBL_MANT_DIG == 64
-	/*
-	 * dt is cbrtl(x) to ~47 bits (after x has been reduced to 1 <= x < 8).
-	 * Round it away from zero to 32 bits (32 so that t*t is exact, and
-	 * away from zero for technical reasons).
-	 */
-	t = dt + (0x1.0p32L + 0x1.0p-31L) - 0x1.0p32;
+  /*
+   * dt is cbrtl(x) to ~47 bits (after x has been reduced to 1 <= x < 8).
+   * Round it away from zero to 32 bits (32 so that t*t is exact, and
+   * away from zero for technical reasons).
+   */
+  t = dt + (0x1.0p32L + 0x1.0p-31L) - 0x1.0p32;
 #elif LDBL_MANT_DIG == 113
-	/*
-	 * Round dt away from zero to 47 bits.  Since we don't trust the 47,
-	 * add 2 47-bit ulps instead of 1 to round up.  Rounding is slow and
-	 * might be avoidable in this case, since on most machines dt will
-	 * have been evaluated in 53-bit precision and the technical reasons
-	 * for rounding up might not apply to either case in cbrtl() since
-	 * dt is much more accurate than needed.
-	 */
-	t = dt + 0x2.0p-46 + 0x1.0p60L - 0x1.0p60;
+  /*
+   * Round dt away from zero to 47 bits.  Since we don't trust the 47,
+   * add 2 47-bit ulps instead of 1 to round up.  Rounding is slow and
+   * might be avoidable in this case, since on most machines dt will
+   * have been evaluated in 53-bit precision and the technical reasons
+   * for rounding up might not apply to either case in cbrtl() since
+   * dt is much more accurate than needed.
+   */
+  t = dt + 0x2.0p-46 + 0x1.0p60L - 0x1.0p60;
 #endif
 
-	/*
-	 * Final step Newton iteration to 64 or 113 bits with
-	 * error < 0.667 ulps
-	 */
-	s = t*t;         /* t*t is exact */
-	r = x/s;         /* error <= 0.5 ulps; |r| < |t| */
-	w = t+t;         /* t+t is exact */
-	r = (r-t)/(w+r); /* r-t is exact; w+r ~= 3*t */
-	t = t+t*r;       /* error <= 0.5 + 0.5/3 + epsilon */
+  /*
+   * Final step Newton iteration to 64 or 113 bits with
+   * error < 0.667 ulps
+   */
+  s = t * t;             /* t*t is exact */
+  r = x / s;             /* error <= 0.5 ulps; |r| < |t| */
+  w = t + t;             /* t+t is exact */
+  r = (r - t) / (w + r); /* r-t is exact; w+r ~= 3*t */
+  t = t + t * r;         /* error <= 0.5 + 0.5/3 + epsilon */
 
-	t *= v.f;
-	return t;
+  t *= v.f;
+  return t;
 }
 #endif
diff --git a/fusl/src/math/ceil.c b/fusl/src/math/ceil.c
index b13e6f2..4c6ca5e 100644
--- a/fusl/src/math/ceil.c
+++ b/fusl/src/math/ceil.c
@@ -1,31 +1,33 @@
 #include "libm.h"
 
-#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1
+#if FLT_EVAL_METHOD == 0 || FLT_EVAL_METHOD == 1
 #define EPS DBL_EPSILON
-#elif FLT_EVAL_METHOD==2
+#elif FLT_EVAL_METHOD == 2
 #define EPS LDBL_EPSILON
 #endif
-static const double_t toint = 1/EPS;
+static const double_t toint = 1 / EPS;
 
-double ceil(double x)
-{
-	union {double f; uint64_t i;} u = {x};
-	int e = u.i >> 52 & 0x7ff;
-	double_t y;
+double ceil(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  int e = u.i >> 52 & 0x7ff;
+  double_t y;
 
-	if (e >= 0x3ff+52 || x == 0)
-		return x;
-	/* y = int(x) - x, where int(x) is an integer neighbor of x */
-	if (u.i >> 63)
-		y = x - toint + toint - x;
-	else
-		y = x + toint - toint - x;
-	/* special case because of non-nearest rounding modes */
-	if (e <= 0x3ff-1) {
-		FORCE_EVAL(y);
-		return u.i >> 63 ? -0.0 : 1;
-	}
-	if (y < 0)
-		return x + y + 1;
-	return x + y;
+  if (e >= 0x3ff + 52 || x == 0)
+    return x;
+  /* y = int(x) - x, where int(x) is an integer neighbor of x */
+  if (u.i >> 63)
+    y = x - toint + toint - x;
+  else
+    y = x + toint - toint - x;
+  /* special case because of non-nearest rounding modes */
+  if (e <= 0x3ff - 1) {
+    FORCE_EVAL(y);
+    return u.i >> 63 ? -0.0 : 1;
+  }
+  if (y < 0)
+    return x + y + 1;
+  return x + y;
 }
diff --git a/fusl/src/math/ceilf.c b/fusl/src/math/ceilf.c
index 869835f..813d614 100644
--- a/fusl/src/math/ceilf.c
+++ b/fusl/src/math/ceilf.c
@@ -1,27 +1,29 @@
 #include "libm.h"
 
-float ceilf(float x)
-{
-	union {float f; uint32_t i;} u = {x};
-	int e = (int)(u.i >> 23 & 0xff) - 0x7f;
-	uint32_t m;
+float ceilf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  int e = (int)(u.i >> 23 & 0xff) - 0x7f;
+  uint32_t m;
 
-	if (e >= 23)
-		return x;
-	if (e >= 0) {
-		m = 0x007fffff >> e;
-		if ((u.i & m) == 0)
-			return x;
-		FORCE_EVAL(x + 0x1p120f);
-		if (u.i >> 31 == 0)
-			u.i += m;
-		u.i &= ~m;
-	} else {
-		FORCE_EVAL(x + 0x1p120f);
-		if (u.i >> 31)
-			u.f = -0.0;
-		else if (u.i << 1)
-			u.f = 1.0;
-	}
-	return u.f;
+  if (e >= 23)
+    return x;
+  if (e >= 0) {
+    m = 0x007fffff >> e;
+    if ((u.i & m) == 0)
+      return x;
+    FORCE_EVAL(x + 0x1p120f);
+    if (u.i >> 31 == 0)
+      u.i += m;
+    u.i &= ~m;
+  } else {
+    FORCE_EVAL(x + 0x1p120f);
+    if (u.i >> 31)
+      u.f = -0.0;
+    else if (u.i << 1)
+      u.f = 1.0;
+  }
+  return u.f;
 }
diff --git a/fusl/src/math/ceill.c b/fusl/src/math/ceill.c
index 60a8302..7cc8c73 100644
--- a/fusl/src/math/ceill.c
+++ b/fusl/src/math/ceill.c
@@ -1,34 +1,32 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double ceill(long double x)
-{
-	return ceil(x);
+long double ceill(long double x) {
+  return ceil(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
 
-static const long double toint = 1/LDBL_EPSILON;
+static const long double toint = 1 / LDBL_EPSILON;
 
-long double ceill(long double x)
-{
-	union ldshape u = {x};
-	int e = u.i.se & 0x7fff;
-	long double y;
+long double ceill(long double x) {
+  union ldshape u = {x};
+  int e = u.i.se & 0x7fff;
+  long double y;
 
-	if (e >= 0x3fff+LDBL_MANT_DIG-1 || x == 0)
-		return x;
-	/* y = int(x) - x, where int(x) is an integer neighbor of x */
-	if (u.i.se >> 15)
-		y = x - toint + toint - x;
-	else
-		y = x + toint - toint - x;
-	/* special case because of non-nearest rounding modes */
-	if (e <= 0x3fff-1) {
-		FORCE_EVAL(y);
-		return u.i.se >> 15 ? -0.0 : 1;
-	}
-	if (y < 0)
-		return x + y + 1;
-	return x + y;
+  if (e >= 0x3fff + LDBL_MANT_DIG - 1 || x == 0)
+    return x;
+  /* y = int(x) - x, where int(x) is an integer neighbor of x */
+  if (u.i.se >> 15)
+    y = x - toint + toint - x;
+  else
+    y = x + toint - toint - x;
+  /* special case because of non-nearest rounding modes */
+  if (e <= 0x3fff - 1) {
+    FORCE_EVAL(y);
+    return u.i.se >> 15 ? -0.0 : 1;
+  }
+  if (y < 0)
+    return x + y + 1;
+  return x + y;
 }
 #endif
diff --git a/fusl/src/math/copysign.c b/fusl/src/math/copysign.c
index b09331b..226d499 100644
--- a/fusl/src/math/copysign.c
+++ b/fusl/src/math/copysign.c
@@ -1,8 +1,11 @@
 #include "libm.h"
 
 double copysign(double x, double y) {
-	union {double f; uint64_t i;} ux={x}, uy={y};
-	ux.i &= -1ULL/2;
-	ux.i |= uy.i & 1ULL<<63;
-	return ux.f;
+  union {
+    double f;
+    uint64_t i;
+  } ux = {x}, uy = {y};
+  ux.i &= -1ULL / 2;
+  ux.i |= uy.i & 1ULL << 63;
+  return ux.f;
 }
diff --git a/fusl/src/math/copysignf.c b/fusl/src/math/copysignf.c
index 0af6ae9..32626d5 100644
--- a/fusl/src/math/copysignf.c
+++ b/fusl/src/math/copysignf.c
@@ -1,10 +1,12 @@
 #include <math.h>
 #include <stdint.h>
 
-float copysignf(float x, float y)
-{
-	union {float f; uint32_t i;} ux={x}, uy={y};
-	ux.i &= 0x7fffffff;
-	ux.i |= uy.i & 0x80000000;
-	return ux.f;
+float copysignf(float x, float y) {
+  union {
+    float f;
+    uint32_t i;
+  } ux = {x}, uy = {y};
+  ux.i &= 0x7fffffff;
+  ux.i |= uy.i & 0x80000000;
+  return ux.f;
 }
diff --git a/fusl/src/math/copysignl.c b/fusl/src/math/copysignl.c
index 9dd933c..e006650 100644
--- a/fusl/src/math/copysignl.c
+++ b/fusl/src/math/copysignl.c
@@ -1,16 +1,14 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double copysignl(long double x, long double y)
-{
-	return copysign(x, y);
+long double copysignl(long double x, long double y) {
+  return copysign(x, y);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
-long double copysignl(long double x, long double y)
-{
-	union ldshape ux = {x}, uy = {y};
-	ux.i.se &= 0x7fff;
-	ux.i.se |= uy.i.se & 0x8000;
-	return ux.f;
+long double copysignl(long double x, long double y) {
+  union ldshape ux = {x}, uy = {y};
+  ux.i.se &= 0x7fff;
+  ux.i.se |= uy.i.se & 0x8000;
+  return ux.f;
 }
 #endif
diff --git a/fusl/src/math/cos.c b/fusl/src/math/cos.c
index ee97f68..fa5989e 100644
--- a/fusl/src/math/cos.c
+++ b/fusl/src/math/cos.c
@@ -42,36 +42,38 @@
 
 #include "libm.h"
 
-double cos(double x)
-{
-	double y[2];
-	uint32_t ix;
-	unsigned n;
+double cos(double x) {
+  double y[2];
+  uint32_t ix;
+  unsigned n;
 
-	GET_HIGH_WORD(ix, x);
-	ix &= 0x7fffffff;
+  GET_HIGH_WORD(ix, x);
+  ix &= 0x7fffffff;
 
-	/* |x| ~< pi/4 */
-	if (ix <= 0x3fe921fb) {
-		if (ix < 0x3e46a09e) {  /* |x| < 2**-27 * sqrt(2) */
-			/* raise inexact if x!=0 */
-			FORCE_EVAL(x + 0x1p120f);
-			return 1.0;
-		}
-		return __cos(x, 0);
-	}
+  /* |x| ~< pi/4 */
+  if (ix <= 0x3fe921fb) {
+    if (ix < 0x3e46a09e) { /* |x| < 2**-27 * sqrt(2) */
+      /* raise inexact if x!=0 */
+      FORCE_EVAL(x + 0x1p120f);
+      return 1.0;
+    }
+    return __cos(x, 0);
+  }
 
-	/* cos(Inf or NaN) is NaN */
-	if (ix >= 0x7ff00000)
-		return x-x;
+  /* cos(Inf or NaN) is NaN */
+  if (ix >= 0x7ff00000)
+    return x - x;
 
-	/* argument reduction */
-	n = __rem_pio2(x, y);
-	switch (n&3) {
-	case 0: return  __cos(y[0], y[1]);
-	case 1: return -__sin(y[0], y[1], 1);
-	case 2: return -__cos(y[0], y[1]);
-	default:
-		return  __sin(y[0], y[1], 1);
-	}
+  /* argument reduction */
+  n = __rem_pio2(x, y);
+  switch (n & 3) {
+    case 0:
+      return __cos(y[0], y[1]);
+    case 1:
+      return -__sin(y[0], y[1], 1);
+    case 2:
+      return -__cos(y[0], y[1]);
+    default:
+      return __sin(y[0], y[1], 1);
+  }
 }
diff --git a/fusl/src/math/cosf.c b/fusl/src/math/cosf.c
index 23f3e5b..d47fe88 100644
--- a/fusl/src/math/cosf.c
+++ b/fusl/src/math/cosf.c
@@ -17,62 +17,63 @@
 #include "libm.h"
 
 /* Small multiples of pi/2 rounded to double precision. */
-static const double
-c1pio2 = 1*M_PI_2, /* 0x3FF921FB, 0x54442D18 */
-c2pio2 = 2*M_PI_2, /* 0x400921FB, 0x54442D18 */
-c3pio2 = 3*M_PI_2, /* 0x4012D97C, 0x7F3321D2 */
-c4pio2 = 4*M_PI_2; /* 0x401921FB, 0x54442D18 */
+static const double c1pio2 = 1 * M_PI_2, /* 0x3FF921FB, 0x54442D18 */
+    c2pio2 = 2 * M_PI_2,                 /* 0x400921FB, 0x54442D18 */
+    c3pio2 = 3 * M_PI_2,                 /* 0x4012D97C, 0x7F3321D2 */
+    c4pio2 = 4 * M_PI_2;                 /* 0x401921FB, 0x54442D18 */
 
-float cosf(float x)
-{
-	double y;
-	uint32_t ix;
-	unsigned n, sign;
+float cosf(float x) {
+  double y;
+  uint32_t ix;
+  unsigned n, sign;
 
-	GET_FLOAT_WORD(ix, x);
-	sign = ix >> 31;
-	ix &= 0x7fffffff;
+  GET_FLOAT_WORD(ix, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
 
-	if (ix <= 0x3f490fda) {  /* |x| ~<= pi/4 */
-		if (ix < 0x39800000) {  /* |x| < 2**-12 */
-			/* raise inexact if x != 0 */
-			FORCE_EVAL(x + 0x1p120f);
-			return 1.0f;
-		}
-		return __cosdf(x);
-	}
-	if (ix <= 0x407b53d1) {  /* |x| ~<= 5*pi/4 */
-		if (ix > 0x4016cbe3)  /* |x|  ~> 3*pi/4 */
-			return -__cosdf(sign ? x+c2pio2 : x-c2pio2);
-		else {
-			if (sign)
-				return __sindf(x + c1pio2);
-			else
-				return __sindf(c1pio2 - x);
-		}
-	}
-	if (ix <= 0x40e231d5) {  /* |x| ~<= 9*pi/4 */
-		if (ix > 0x40afeddf)  /* |x| ~> 7*pi/4 */
-			return __cosdf(sign ? x+c4pio2 : x-c4pio2);
-		else {
-			if (sign)
-				return __sindf(-x - c3pio2);
-			else
-				return __sindf(x - c3pio2);
-		}
-	}
+  if (ix <= 0x3f490fda) {  /* |x| ~<= pi/4 */
+    if (ix < 0x39800000) { /* |x| < 2**-12 */
+      /* raise inexact if x != 0 */
+      FORCE_EVAL(x + 0x1p120f);
+      return 1.0f;
+    }
+    return __cosdf(x);
+  }
+  if (ix <= 0x407b53d1) { /* |x| ~<= 5*pi/4 */
+    if (ix > 0x4016cbe3)  /* |x|  ~> 3*pi/4 */
+      return -__cosdf(sign ? x + c2pio2 : x - c2pio2);
+    else {
+      if (sign)
+        return __sindf(x + c1pio2);
+      else
+        return __sindf(c1pio2 - x);
+    }
+  }
+  if (ix <= 0x40e231d5) { /* |x| ~<= 9*pi/4 */
+    if (ix > 0x40afeddf)  /* |x| ~> 7*pi/4 */
+      return __cosdf(sign ? x + c4pio2 : x - c4pio2);
+    else {
+      if (sign)
+        return __sindf(-x - c3pio2);
+      else
+        return __sindf(x - c3pio2);
+    }
+  }
 
-	/* cos(Inf or NaN) is NaN */
-	if (ix >= 0x7f800000)
-		return x-x;
+  /* cos(Inf or NaN) is NaN */
+  if (ix >= 0x7f800000)
+    return x - x;
 
-	/* general argument reduction needed */
-	n = __rem_pio2f(x,&y);
-	switch (n&3) {
-	case 0: return  __cosdf(y);
-	case 1: return  __sindf(-y);
-	case 2: return -__cosdf(y);
-	default:
-		return  __sindf(y);
-	}
+  /* general argument reduction needed */
+  n = __rem_pio2f(x, &y);
+  switch (n & 3) {
+    case 0:
+      return __cosdf(y);
+    case 1:
+      return __sindf(-y);
+    case 2:
+      return -__cosdf(y);
+    default:
+      return __sindf(y);
+  }
 }
diff --git a/fusl/src/math/cosh.c b/fusl/src/math/cosh.c
index 100f823..c346db6 100644
--- a/fusl/src/math/cosh.c
+++ b/fusl/src/math/cosh.c
@@ -4,37 +4,39 @@
  *         = 1 + 0.5*(exp(x)-1)*(exp(x)-1)/exp(x)
  *         = 1 + x*x/2 + o(x^4)
  */
-double cosh(double x)
-{
-	union {double f; uint64_t i;} u = {.f = x};
-	uint32_t w;
-	double t;
+double cosh(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {.f = x};
+  uint32_t w;
+  double t;
 
-	/* |x| */
-	u.i &= (uint64_t)-1/2;
-	x = u.f;
-	w = u.i >> 32;
+  /* |x| */
+  u.i &= (uint64_t)-1 / 2;
+  x = u.f;
+  w = u.i >> 32;
 
-	/* |x| < log(2) */
-	if (w < 0x3fe62e42) {
-		if (w < 0x3ff00000 - (26<<20)) {
-			/* raise inexact if x!=0 */
-			FORCE_EVAL(x + 0x1p120f);
-			return 1;
-		}
-		t = expm1(x);
-		return 1 + t*t/(2*(1+t));
-	}
+  /* |x| < log(2) */
+  if (w < 0x3fe62e42) {
+    if (w < 0x3ff00000 - (26 << 20)) {
+      /* raise inexact if x!=0 */
+      FORCE_EVAL(x + 0x1p120f);
+      return 1;
+    }
+    t = expm1(x);
+    return 1 + t * t / (2 * (1 + t));
+  }
 
-	/* |x| < log(DBL_MAX) */
-	if (w < 0x40862e42) {
-		t = exp(x);
-		/* note: if x>log(0x1p26) then the 1/t is not needed */
-		return 0.5*(t + 1/t);
-	}
+  /* |x| < log(DBL_MAX) */
+  if (w < 0x40862e42) {
+    t = exp(x);
+    /* note: if x>log(0x1p26) then the 1/t is not needed */
+    return 0.5 * (t + 1 / t);
+  }
 
-	/* |x| > log(DBL_MAX) or nan */
-	/* note: the result is stored to handle overflow */
-	t = __expo2(x);
-	return t;
+  /* |x| > log(DBL_MAX) or nan */
+  /* note: the result is stored to handle overflow */
+  t = __expo2(x);
+  return t;
 }
diff --git a/fusl/src/math/coshf.c b/fusl/src/math/coshf.c
index b09f2ee..488942e 100644
--- a/fusl/src/math/coshf.c
+++ b/fusl/src/math/coshf.c
@@ -1,33 +1,35 @@
 #include "libm.h"
 
-float coshf(float x)
-{
-	union {float f; uint32_t i;} u = {.f = x};
-	uint32_t w;
-	float t;
+float coshf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {.f = x};
+  uint32_t w;
+  float t;
 
-	/* |x| */
-	u.i &= 0x7fffffff;
-	x = u.f;
-	w = u.i;
+  /* |x| */
+  u.i &= 0x7fffffff;
+  x = u.f;
+  w = u.i;
 
-	/* |x| < log(2) */
-	if (w < 0x3f317217) {
-		if (w < 0x3f800000 - (12<<23)) {
-			FORCE_EVAL(x + 0x1p120f);
-			return 1;
-		}
-		t = expm1f(x);
-		return 1 + t*t/(2*(1+t));
-	}
+  /* |x| < log(2) */
+  if (w < 0x3f317217) {
+    if (w < 0x3f800000 - (12 << 23)) {
+      FORCE_EVAL(x + 0x1p120f);
+      return 1;
+    }
+    t = expm1f(x);
+    return 1 + t * t / (2 * (1 + t));
+  }
 
-	/* |x| < log(FLT_MAX) */
-	if (w < 0x42b17217) {
-		t = expf(x);
-		return 0.5f*(t + 1/t);
-	}
+  /* |x| < log(FLT_MAX) */
+  if (w < 0x42b17217) {
+    t = expf(x);
+    return 0.5f * (t + 1 / t);
+  }
 
-	/* |x| > log(FLT_MAX) or nan */
-	t = __expo2f(x);
-	return t;
+  /* |x| > log(FLT_MAX) or nan */
+  t = __expo2f(x);
+  return t;
 }
diff --git a/fusl/src/math/coshl.c b/fusl/src/math/coshl.c
index 06a56fe..bc2ddf3 100644
--- a/fusl/src/math/coshl.c
+++ b/fusl/src/math/coshl.c
@@ -1,47 +1,44 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double coshl(long double x)
-{
-	return cosh(x);
+long double coshl(long double x) {
+  return cosh(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
-long double coshl(long double x)
-{
-	union ldshape u = {x};
-	unsigned ex = u.i.se & 0x7fff;
-	uint32_t w;
-	long double t;
+long double coshl(long double x) {
+  union ldshape u = {x};
+  unsigned ex = u.i.se & 0x7fff;
+  uint32_t w;
+  long double t;
 
-	/* |x| */
-	u.i.se = ex;
-	x = u.f;
-	w = u.i.m >> 32;
+  /* |x| */
+  u.i.se = ex;
+  x = u.f;
+  w = u.i.m >> 32;
 
-	/* |x| < log(2) */
-	if (ex < 0x3fff-1 || (ex == 0x3fff-1 && w < 0xb17217f7)) {
-		if (ex < 0x3fff-32) {
-			FORCE_EVAL(x + 0x1p120f);
-			return 1;
-		}
-		t = expm1l(x);
-		return 1 + t*t/(2*(1+t));
-	}
+  /* |x| < log(2) */
+  if (ex < 0x3fff - 1 || (ex == 0x3fff - 1 && w < 0xb17217f7)) {
+    if (ex < 0x3fff - 32) {
+      FORCE_EVAL(x + 0x1p120f);
+      return 1;
+    }
+    t = expm1l(x);
+    return 1 + t * t / (2 * (1 + t));
+  }
 
-	/* |x| < log(LDBL_MAX) */
-	if (ex < 0x3fff+13 || (ex == 0x3fff+13 && w < 0xb17217f7)) {
-		t = expl(x);
-		return 0.5*(t + 1/t);
-	}
+  /* |x| < log(LDBL_MAX) */
+  if (ex < 0x3fff + 13 || (ex == 0x3fff + 13 && w < 0xb17217f7)) {
+    t = expl(x);
+    return 0.5 * (t + 1 / t);
+  }
 
-	/* |x| > log(LDBL_MAX) or nan */
-	t = expl(0.5*x);
-	return 0.5*t*t;
+  /* |x| > log(LDBL_MAX) or nan */
+  t = expl(0.5 * x);
+  return 0.5 * t * t;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-long double coshl(long double x)
-{
-	return cosh(x);
+long double coshl(long double x) {
+  return cosh(x);
 }
 #endif
diff --git a/fusl/src/math/cosl.c b/fusl/src/math/cosl.c
index 79c41c7..6c44a5b 100644
--- a/fusl/src/math/cosl.c
+++ b/fusl/src/math/cosl.c
@@ -2,38 +2,37 @@
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
 long double cosl(long double x) {
-	return cos(x);
+  return cos(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
-long double cosl(long double x)
-{
-	union ldshape u = {x};
-	unsigned n;
-	long double y[2], hi, lo;
+long double cosl(long double x) {
+  union ldshape u = {x};
+  unsigned n;
+  long double y[2], hi, lo;
 
-	u.i.se &= 0x7fff;
-	if (u.i.se == 0x7fff)
-		return x - x;
-	x = u.f;
-	if (x < M_PI_4) {
-		if (u.i.se < 0x3fff - LDBL_MANT_DIG)
-			/* raise inexact if x!=0 */
-			return 1.0 + x;
-		return __cosl(x, 0);
-	}
-	n = __rem_pio2l(x, y);
-	hi = y[0];
-	lo = y[1];
-	switch (n & 3) {
-	case 0:
-		return __cosl(hi, lo);
-	case 1:
-		return -__sinl(hi, lo, 1);
-	case 2:
-		return -__cosl(hi, lo);
-	case 3:
-	default:
-		return __sinl(hi, lo, 1);
-	}
+  u.i.se &= 0x7fff;
+  if (u.i.se == 0x7fff)
+    return x - x;
+  x = u.f;
+  if (x < M_PI_4) {
+    if (u.i.se < 0x3fff - LDBL_MANT_DIG)
+      /* raise inexact if x!=0 */
+      return 1.0 + x;
+    return __cosl(x, 0);
+  }
+  n = __rem_pio2l(x, y);
+  hi = y[0];
+  lo = y[1];
+  switch (n & 3) {
+    case 0:
+      return __cosl(hi, lo);
+    case 1:
+      return -__sinl(hi, lo, 1);
+    case 2:
+      return -__cosl(hi, lo);
+    case 3:
+    default:
+      return __sinl(hi, lo, 1);
+  }
 }
 #endif
diff --git a/fusl/src/math/erf.c b/fusl/src/math/erf.c
index 2f30a29..aff8bd0 100644
--- a/fusl/src/math/erf.c
+++ b/fusl/src/math/erf.c
@@ -105,169 +105,173 @@
 
 #include "libm.h"
 
-static const double
-erx  = 8.45062911510467529297e-01, /* 0x3FEB0AC1, 0x60000000 */
-/*
- * Coefficients for approximation to  erf on [0,0.84375]
- */
-efx8 =  1.02703333676410069053e+00, /* 0x3FF06EBA, 0x8214DB69 */
-pp0  =  1.28379167095512558561e-01, /* 0x3FC06EBA, 0x8214DB68 */
-pp1  = -3.25042107247001499370e-01, /* 0xBFD4CD7D, 0x691CB913 */
-pp2  = -2.84817495755985104766e-02, /* 0xBF9D2A51, 0xDBD7194F */
-pp3  = -5.77027029648944159157e-03, /* 0xBF77A291, 0x236668E4 */
-pp4  = -2.37630166566501626084e-05, /* 0xBEF8EAD6, 0x120016AC */
-qq1  =  3.97917223959155352819e-01, /* 0x3FD97779, 0xCDDADC09 */
-qq2  =  6.50222499887672944485e-02, /* 0x3FB0A54C, 0x5536CEBA */
-qq3  =  5.08130628187576562776e-03, /* 0x3F74D022, 0xC4D36B0F */
-qq4  =  1.32494738004321644526e-04, /* 0x3F215DC9, 0x221C1A10 */
-qq5  = -3.96022827877536812320e-06, /* 0xBED09C43, 0x42A26120 */
-/*
- * Coefficients for approximation to  erf  in [0.84375,1.25]
- */
-pa0  = -2.36211856075265944077e-03, /* 0xBF6359B8, 0xBEF77538 */
-pa1  =  4.14856118683748331666e-01, /* 0x3FDA8D00, 0xAD92B34D */
-pa2  = -3.72207876035701323847e-01, /* 0xBFD7D240, 0xFBB8C3F1 */
-pa3  =  3.18346619901161753674e-01, /* 0x3FD45FCA, 0x805120E4 */
-pa4  = -1.10894694282396677476e-01, /* 0xBFBC6398, 0x3D3E28EC */
-pa5  =  3.54783043256182359371e-02, /* 0x3FA22A36, 0x599795EB */
-pa6  = -2.16637559486879084300e-03, /* 0xBF61BF38, 0x0A96073F */
-qa1  =  1.06420880400844228286e-01, /* 0x3FBB3E66, 0x18EEE323 */
-qa2  =  5.40397917702171048937e-01, /* 0x3FE14AF0, 0x92EB6F33 */
-qa3  =  7.18286544141962662868e-02, /* 0x3FB2635C, 0xD99FE9A7 */
-qa4  =  1.26171219808761642112e-01, /* 0x3FC02660, 0xE763351F */
-qa5  =  1.36370839120290507362e-02, /* 0x3F8BEDC2, 0x6B51DD1C */
-qa6  =  1.19844998467991074170e-02, /* 0x3F888B54, 0x5735151D */
-/*
- * Coefficients for approximation to  erfc in [1.25,1/0.35]
- */
-ra0  = -9.86494403484714822705e-03, /* 0xBF843412, 0x600D6435 */
-ra1  = -6.93858572707181764372e-01, /* 0xBFE63416, 0xE4BA7360 */
-ra2  = -1.05586262253232909814e+01, /* 0xC0251E04, 0x41B0E726 */
-ra3  = -6.23753324503260060396e+01, /* 0xC04F300A, 0xE4CBA38D */
-ra4  = -1.62396669462573470355e+02, /* 0xC0644CB1, 0x84282266 */
-ra5  = -1.84605092906711035994e+02, /* 0xC067135C, 0xEBCCABB2 */
-ra6  = -8.12874355063065934246e+01, /* 0xC0545265, 0x57E4D2F2 */
-ra7  = -9.81432934416914548592e+00, /* 0xC023A0EF, 0xC69AC25C */
-sa1  =  1.96512716674392571292e+01, /* 0x4033A6B9, 0xBD707687 */
-sa2  =  1.37657754143519042600e+02, /* 0x4061350C, 0x526AE721 */
-sa3  =  4.34565877475229228821e+02, /* 0x407B290D, 0xD58A1A71 */
-sa4  =  6.45387271733267880336e+02, /* 0x40842B19, 0x21EC2868 */
-sa5  =  4.29008140027567833386e+02, /* 0x407AD021, 0x57700314 */
-sa6  =  1.08635005541779435134e+02, /* 0x405B28A3, 0xEE48AE2C */
-sa7  =  6.57024977031928170135e+00, /* 0x401A47EF, 0x8E484A93 */
-sa8  = -6.04244152148580987438e-02, /* 0xBFAEEFF2, 0xEE749A62 */
-/*
- * Coefficients for approximation to  erfc in [1/.35,28]
- */
-rb0  = -9.86494292470009928597e-03, /* 0xBF843412, 0x39E86F4A */
-rb1  = -7.99283237680523006574e-01, /* 0xBFE993BA, 0x70C285DE */
-rb2  = -1.77579549177547519889e+01, /* 0xC031C209, 0x555F995A */
-rb3  = -1.60636384855821916062e+02, /* 0xC064145D, 0x43C5ED98 */
-rb4  = -6.37566443368389627722e+02, /* 0xC083EC88, 0x1375F228 */
-rb5  = -1.02509513161107724954e+03, /* 0xC0900461, 0x6A2E5992 */
-rb6  = -4.83519191608651397019e+02, /* 0xC07E384E, 0x9BDC383F */
-sb1  =  3.03380607434824582924e+01, /* 0x403E568B, 0x261D5190 */
-sb2  =  3.25792512996573918826e+02, /* 0x40745CAE, 0x221B9F0A */
-sb3  =  1.53672958608443695994e+03, /* 0x409802EB, 0x189D5118 */
-sb4  =  3.19985821950859553908e+03, /* 0x40A8FFB7, 0x688C246A */
-sb5  =  2.55305040643316442583e+03, /* 0x40A3F219, 0xCEDF3BE6 */
-sb6  =  4.74528541206955367215e+02, /* 0x407DA874, 0xE79FE763 */
-sb7  = -2.24409524465858183362e+01; /* 0xC03670E2, 0x42712D62 */
+static const double erx =
+                        8.45062911510467529297e-01, /* 0x3FEB0AC1, 0x60000000 */
+                                                    /*
+                                                     * Coefficients for approximation to  erf on [0,0.84375]
+                                                     */
+    efx8 = 1.02703333676410069053e+00,              /* 0x3FF06EBA, 0x8214DB69 */
+    pp0 = 1.28379167095512558561e-01,               /* 0x3FC06EBA, 0x8214DB68 */
+    pp1 = -3.25042107247001499370e-01,              /* 0xBFD4CD7D, 0x691CB913 */
+    pp2 = -2.84817495755985104766e-02,              /* 0xBF9D2A51, 0xDBD7194F */
+    pp3 = -5.77027029648944159157e-03,              /* 0xBF77A291, 0x236668E4 */
+    pp4 = -2.37630166566501626084e-05,              /* 0xBEF8EAD6, 0x120016AC */
+    qq1 = 3.97917223959155352819e-01,               /* 0x3FD97779, 0xCDDADC09 */
+    qq2 = 6.50222499887672944485e-02,               /* 0x3FB0A54C, 0x5536CEBA */
+    qq3 = 5.08130628187576562776e-03,               /* 0x3F74D022, 0xC4D36B0F */
+    qq4 = 1.32494738004321644526e-04,               /* 0x3F215DC9, 0x221C1A10 */
+    qq5 = -3.96022827877536812320e-06,              /* 0xBED09C43, 0x42A26120 */
+                                                    /*
+                                                     * Coefficients for approximation to  erf  in [0.84375,1.25]
+                                                     */
+    pa0 = -2.36211856075265944077e-03,              /* 0xBF6359B8, 0xBEF77538 */
+    pa1 = 4.14856118683748331666e-01,               /* 0x3FDA8D00, 0xAD92B34D */
+    pa2 = -3.72207876035701323847e-01,              /* 0xBFD7D240, 0xFBB8C3F1 */
+    pa3 = 3.18346619901161753674e-01,               /* 0x3FD45FCA, 0x805120E4 */
+    pa4 = -1.10894694282396677476e-01,              /* 0xBFBC6398, 0x3D3E28EC */
+    pa5 = 3.54783043256182359371e-02,               /* 0x3FA22A36, 0x599795EB */
+    pa6 = -2.16637559486879084300e-03,              /* 0xBF61BF38, 0x0A96073F */
+    qa1 = 1.06420880400844228286e-01,               /* 0x3FBB3E66, 0x18EEE323 */
+    qa2 = 5.40397917702171048937e-01,               /* 0x3FE14AF0, 0x92EB6F33 */
+    qa3 = 7.18286544141962662868e-02,               /* 0x3FB2635C, 0xD99FE9A7 */
+    qa4 = 1.26171219808761642112e-01,               /* 0x3FC02660, 0xE763351F */
+    qa5 = 1.36370839120290507362e-02,               /* 0x3F8BEDC2, 0x6B51DD1C */
+    qa6 = 1.19844998467991074170e-02,               /* 0x3F888B54, 0x5735151D */
+                                                    /*
+                                                     * Coefficients for approximation to  erfc in [1.25,1/0.35]
+                                                     */
+    ra0 = -9.86494403484714822705e-03,              /* 0xBF843412, 0x600D6435 */
+    ra1 = -6.93858572707181764372e-01,              /* 0xBFE63416, 0xE4BA7360 */
+    ra2 = -1.05586262253232909814e+01,              /* 0xC0251E04, 0x41B0E726 */
+    ra3 = -6.23753324503260060396e+01,              /* 0xC04F300A, 0xE4CBA38D */
+    ra4 = -1.62396669462573470355e+02,              /* 0xC0644CB1, 0x84282266 */
+    ra5 = -1.84605092906711035994e+02,              /* 0xC067135C, 0xEBCCABB2 */
+    ra6 = -8.12874355063065934246e+01,              /* 0xC0545265, 0x57E4D2F2 */
+    ra7 = -9.81432934416914548592e+00,              /* 0xC023A0EF, 0xC69AC25C */
+    sa1 = 1.96512716674392571292e+01,               /* 0x4033A6B9, 0xBD707687 */
+    sa2 = 1.37657754143519042600e+02,               /* 0x4061350C, 0x526AE721 */
+    sa3 = 4.34565877475229228821e+02,               /* 0x407B290D, 0xD58A1A71 */
+    sa4 = 6.45387271733267880336e+02,               /* 0x40842B19, 0x21EC2868 */
+    sa5 = 4.29008140027567833386e+02,               /* 0x407AD021, 0x57700314 */
+    sa6 = 1.08635005541779435134e+02,               /* 0x405B28A3, 0xEE48AE2C */
+    sa7 = 6.57024977031928170135e+00,               /* 0x401A47EF, 0x8E484A93 */
+    sa8 = -6.04244152148580987438e-02,              /* 0xBFAEEFF2, 0xEE749A62 */
+                                                    /*
+                                                     * Coefficients for approximation to  erfc in [1/.35,28]
+                                                     */
+    rb0 = -9.86494292470009928597e-03,              /* 0xBF843412, 0x39E86F4A */
+    rb1 = -7.99283237680523006574e-01,              /* 0xBFE993BA, 0x70C285DE */
+    rb2 = -1.77579549177547519889e+01,              /* 0xC031C209, 0x555F995A */
+    rb3 = -1.60636384855821916062e+02,              /* 0xC064145D, 0x43C5ED98 */
+    rb4 = -6.37566443368389627722e+02,              /* 0xC083EC88, 0x1375F228 */
+    rb5 = -1.02509513161107724954e+03,              /* 0xC0900461, 0x6A2E5992 */
+    rb6 = -4.83519191608651397019e+02,              /* 0xC07E384E, 0x9BDC383F */
+    sb1 = 3.03380607434824582924e+01,               /* 0x403E568B, 0x261D5190 */
+    sb2 = 3.25792512996573918826e+02,               /* 0x40745CAE, 0x221B9F0A */
+    sb3 = 1.53672958608443695994e+03,               /* 0x409802EB, 0x189D5118 */
+    sb4 = 3.19985821950859553908e+03,               /* 0x40A8FFB7, 0x688C246A */
+    sb5 = 2.55305040643316442583e+03,               /* 0x40A3F219, 0xCEDF3BE6 */
+    sb6 = 4.74528541206955367215e+02,               /* 0x407DA874, 0xE79FE763 */
+    sb7 = -2.24409524465858183362e+01;              /* 0xC03670E2, 0x42712D62 */
 
-static double erfc1(double x)
-{
-	double_t s,P,Q;
+static double erfc1(double x) {
+  double_t s, P, Q;
 
-	s = fabs(x) - 1;
-	P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6)))));
-	Q = 1+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6)))));
-	return 1 - erx - P/Q;
+  s = fabs(x) - 1;
+  P = pa0 + s * (pa1 + s * (pa2 + s * (pa3 + s * (pa4 + s * (pa5 + s * pa6)))));
+  Q = 1 + s * (qa1 + s * (qa2 + s * (qa3 + s * (qa4 + s * (qa5 + s * qa6)))));
+  return 1 - erx - P / Q;
 }
 
-static double erfc2(uint32_t ix, double x)
-{
-	double_t s,R,S;
-	double z;
+static double erfc2(uint32_t ix, double x) {
+  double_t s, R, S;
+  double z;
 
-	if (ix < 0x3ff40000)  /* |x| < 1.25 */
-		return erfc1(x);
+  if (ix < 0x3ff40000) /* |x| < 1.25 */
+    return erfc1(x);
 
-	x = fabs(x);
-	s = 1/(x*x);
-	if (ix < 0x4006db6d) {  /* |x| < 1/.35 ~ 2.85714 */
-		R = ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(
-		     ra5+s*(ra6+s*ra7))))));
-		S = 1.0+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(
-		     sa5+s*(sa6+s*(sa7+s*sa8)))))));
-	} else {                /* |x| > 1/.35 */
-		R = rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(
-		     rb5+s*rb6)))));
-		S = 1.0+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(
-		     sb5+s*(sb6+s*sb7))))));
-	}
-	z = x;
-	SET_LOW_WORD(z,0);
-	return exp(-z*z-0.5625)*exp((z-x)*(z+x)+R/S)/x;
+  x = fabs(x);
+  s = 1 / (x * x);
+  if (ix < 0x4006db6d) { /* |x| < 1/.35 ~ 2.85714 */
+    R = ra0 +
+        s * (ra1 +
+             s * (ra2 +
+                  s * (ra3 + s * (ra4 + s * (ra5 + s * (ra6 + s * ra7))))));
+    S = 1.0 +
+        s * (sa1 +
+             s * (sa2 +
+                  s * (sa3 +
+                       s * (sa4 +
+                            s * (sa5 + s * (sa6 + s * (sa7 + s * sa8)))))));
+  } else { /* |x| > 1/.35 */
+    R = rb0 +
+        s * (rb1 + s * (rb2 + s * (rb3 + s * (rb4 + s * (rb5 + s * rb6)))));
+    S = 1.0 +
+        s * (sb1 +
+             s * (sb2 +
+                  s * (sb3 + s * (sb4 + s * (sb5 + s * (sb6 + s * sb7))))));
+  }
+  z = x;
+  SET_LOW_WORD(z, 0);
+  return exp(-z * z - 0.5625) * exp((z - x) * (z + x) + R / S) / x;
 }
 
-double erf(double x)
-{
-	double r,s,z,y;
-	uint32_t ix;
-	int sign;
+double erf(double x) {
+  double r, s, z, y;
+  uint32_t ix;
+  int sign;
 
-	GET_HIGH_WORD(ix, x);
-	sign = ix>>31;
-	ix &= 0x7fffffff;
-	if (ix >= 0x7ff00000) {
-		/* erf(nan)=nan, erf(+-inf)=+-1 */
-		return 1-2*sign + 1/x;
-	}
-	if (ix < 0x3feb0000) {  /* |x| < 0.84375 */
-		if (ix < 0x3e300000) {  /* |x| < 2**-28 */
-			/* avoid underflow */
-			return 0.125*(8*x + efx8*x);
-		}
-		z = x*x;
-		r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4)));
-		s = 1.0+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5))));
-		y = r/s;
-		return x + x*y;
-	}
-	if (ix < 0x40180000)  /* 0.84375 <= |x| < 6 */
-		y = 1 - erfc2(ix,x);
-	else
-		y = 1 - 0x1p-1022;
-	return sign ? -y : y;
+  GET_HIGH_WORD(ix, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
+  if (ix >= 0x7ff00000) {
+    /* erf(nan)=nan, erf(+-inf)=+-1 */
+    return 1 - 2 * sign + 1 / x;
+  }
+  if (ix < 0x3feb0000) {   /* |x| < 0.84375 */
+    if (ix < 0x3e300000) { /* |x| < 2**-28 */
+      /* avoid underflow */
+      return 0.125 * (8 * x + efx8 * x);
+    }
+    z = x * x;
+    r = pp0 + z * (pp1 + z * (pp2 + z * (pp3 + z * pp4)));
+    s = 1.0 + z * (qq1 + z * (qq2 + z * (qq3 + z * (qq4 + z * qq5))));
+    y = r / s;
+    return x + x * y;
+  }
+  if (ix < 0x40180000) /* 0.84375 <= |x| < 6 */
+    y = 1 - erfc2(ix, x);
+  else
+    y = 1 - 0x1p-1022;
+  return sign ? -y : y;
 }
 
-double erfc(double x)
-{
-	double r,s,z,y;
-	uint32_t ix;
-	int sign;
+double erfc(double x) {
+  double r, s, z, y;
+  uint32_t ix;
+  int sign;
 
-	GET_HIGH_WORD(ix, x);
-	sign = ix>>31;
-	ix &= 0x7fffffff;
-	if (ix >= 0x7ff00000) {
-		/* erfc(nan)=nan, erfc(+-inf)=0,2 */
-		return 2*sign + 1/x;
-	}
-	if (ix < 0x3feb0000) {  /* |x| < 0.84375 */
-		if (ix < 0x3c700000)  /* |x| < 2**-56 */
-			return 1.0 - x;
-		z = x*x;
-		r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4)));
-		s = 1.0+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5))));
-		y = r/s;
-		if (sign || ix < 0x3fd00000) {  /* x < 1/4 */
-			return 1.0 - (x+x*y);
-		}
-		return 0.5 - (x - 0.5 + x*y);
-	}
-	if (ix < 0x403c0000) {  /* 0.84375 <= |x| < 28 */
-		return sign ? 2 - erfc2(ix,x) : erfc2(ix,x);
-	}
-	return sign ? 2 - 0x1p-1022 : 0x1p-1022*0x1p-1022;
+  GET_HIGH_WORD(ix, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
+  if (ix >= 0x7ff00000) {
+    /* erfc(nan)=nan, erfc(+-inf)=0,2 */
+    return 2 * sign + 1 / x;
+  }
+  if (ix < 0x3feb0000) { /* |x| < 0.84375 */
+    if (ix < 0x3c700000) /* |x| < 2**-56 */
+      return 1.0 - x;
+    z = x * x;
+    r = pp0 + z * (pp1 + z * (pp2 + z * (pp3 + z * pp4)));
+    s = 1.0 + z * (qq1 + z * (qq2 + z * (qq3 + z * (qq4 + z * qq5))));
+    y = r / s;
+    if (sign || ix < 0x3fd00000) { /* x < 1/4 */
+      return 1.0 - (x + x * y);
+    }
+    return 0.5 - (x - 0.5 + x * y);
+  }
+  if (ix < 0x403c0000) { /* 0.84375 <= |x| < 28 */
+    return sign ? 2 - erfc2(ix, x) : erfc2(ix, x);
+  }
+  return sign ? 2 - 0x1p-1022 : 0x1p-1022 * 0x1p-1022;
 }
diff --git a/fusl/src/math/erff.c b/fusl/src/math/erff.c
index ed5f397..13abe22 100644
--- a/fusl/src/math/erff.c
+++ b/fusl/src/math/erff.c
@@ -15,169 +15,172 @@
 
 #include "libm.h"
 
-static const float
-erx  =  8.4506291151e-01, /* 0x3f58560b */
-/*
- * Coefficients for approximation to  erf on [0,0.84375]
- */
-efx8 =  1.0270333290e+00, /* 0x3f8375d4 */
-pp0  =  1.2837916613e-01, /* 0x3e0375d4 */
-pp1  = -3.2504209876e-01, /* 0xbea66beb */
-pp2  = -2.8481749818e-02, /* 0xbce9528f */
-pp3  = -5.7702702470e-03, /* 0xbbbd1489 */
-pp4  = -2.3763017452e-05, /* 0xb7c756b1 */
-qq1  =  3.9791721106e-01, /* 0x3ecbbbce */
-qq2  =  6.5022252500e-02, /* 0x3d852a63 */
-qq3  =  5.0813062117e-03, /* 0x3ba68116 */
-qq4  =  1.3249473704e-04, /* 0x390aee49 */
-qq5  = -3.9602282413e-06, /* 0xb684e21a */
-/*
- * Coefficients for approximation to  erf  in [0.84375,1.25]
- */
-pa0  = -2.3621185683e-03, /* 0xbb1acdc6 */
-pa1  =  4.1485610604e-01, /* 0x3ed46805 */
-pa2  = -3.7220788002e-01, /* 0xbebe9208 */
-pa3  =  3.1834661961e-01, /* 0x3ea2fe54 */
-pa4  = -1.1089469492e-01, /* 0xbde31cc2 */
-pa5  =  3.5478305072e-02, /* 0x3d1151b3 */
-pa6  = -2.1663755178e-03, /* 0xbb0df9c0 */
-qa1  =  1.0642088205e-01, /* 0x3dd9f331 */
-qa2  =  5.4039794207e-01, /* 0x3f0a5785 */
-qa3  =  7.1828655899e-02, /* 0x3d931ae7 */
-qa4  =  1.2617121637e-01, /* 0x3e013307 */
-qa5  =  1.3637083583e-02, /* 0x3c5f6e13 */
-qa6  =  1.1984500103e-02, /* 0x3c445aa3 */
-/*
- * Coefficients for approximation to  erfc in [1.25,1/0.35]
- */
-ra0  = -9.8649440333e-03, /* 0xbc21a093 */
-ra1  = -6.9385856390e-01, /* 0xbf31a0b7 */
-ra2  = -1.0558626175e+01, /* 0xc128f022 */
-ra3  = -6.2375331879e+01, /* 0xc2798057 */
-ra4  = -1.6239666748e+02, /* 0xc322658c */
-ra5  = -1.8460508728e+02, /* 0xc3389ae7 */
-ra6  = -8.1287437439e+01, /* 0xc2a2932b */
-ra7  = -9.8143291473e+00, /* 0xc11d077e */
-sa1  =  1.9651271820e+01, /* 0x419d35ce */
-sa2  =  1.3765776062e+02, /* 0x4309a863 */
-sa3  =  4.3456588745e+02, /* 0x43d9486f */
-sa4  =  6.4538726807e+02, /* 0x442158c9 */
-sa5  =  4.2900814819e+02, /* 0x43d6810b */
-sa6  =  1.0863500214e+02, /* 0x42d9451f */
-sa7  =  6.5702495575e+00, /* 0x40d23f7c */
-sa8  = -6.0424413532e-02, /* 0xbd777f97 */
-/*
- * Coefficients for approximation to  erfc in [1/.35,28]
- */
-rb0  = -9.8649431020e-03, /* 0xbc21a092 */
-rb1  = -7.9928326607e-01, /* 0xbf4c9dd4 */
-rb2  = -1.7757955551e+01, /* 0xc18e104b */
-rb3  = -1.6063638306e+02, /* 0xc320a2ea */
-rb4  = -6.3756646729e+02, /* 0xc41f6441 */
-rb5  = -1.0250950928e+03, /* 0xc480230b */
-rb6  = -4.8351919556e+02, /* 0xc3f1c275 */
-sb1  =  3.0338060379e+01, /* 0x41f2b459 */
-sb2  =  3.2579251099e+02, /* 0x43a2e571 */
-sb3  =  1.5367296143e+03, /* 0x44c01759 */
-sb4  =  3.1998581543e+03, /* 0x4547fdbb */
-sb5  =  2.5530502930e+03, /* 0x451f90ce */
-sb6  =  4.7452853394e+02, /* 0x43ed43a7 */
-sb7  = -2.2440952301e+01; /* 0xc1b38712 */
+static const float erx = 8.4506291151e-01, /* 0x3f58560b */
+                                           /*
+                                            * Coefficients for approximation to  erf on [0,0.84375]
+                                            */
+    efx8 = 1.0270333290e+00,               /* 0x3f8375d4 */
+    pp0 = 1.2837916613e-01,                /* 0x3e0375d4 */
+    pp1 = -3.2504209876e-01,               /* 0xbea66beb */
+    pp2 = -2.8481749818e-02,               /* 0xbce9528f */
+    pp3 = -5.7702702470e-03,               /* 0xbbbd1489 */
+    pp4 = -2.3763017452e-05,               /* 0xb7c756b1 */
+    qq1 = 3.9791721106e-01,                /* 0x3ecbbbce */
+    qq2 = 6.5022252500e-02,                /* 0x3d852a63 */
+    qq3 = 5.0813062117e-03,                /* 0x3ba68116 */
+    qq4 = 1.3249473704e-04,                /* 0x390aee49 */
+    qq5 = -3.9602282413e-06,               /* 0xb684e21a */
+                                           /*
+                                            * Coefficients for approximation to  erf  in [0.84375,1.25]
+                                            */
+    pa0 = -2.3621185683e-03,               /* 0xbb1acdc6 */
+    pa1 = 4.1485610604e-01,                /* 0x3ed46805 */
+    pa2 = -3.7220788002e-01,               /* 0xbebe9208 */
+    pa3 = 3.1834661961e-01,                /* 0x3ea2fe54 */
+    pa4 = -1.1089469492e-01,               /* 0xbde31cc2 */
+    pa5 = 3.5478305072e-02,                /* 0x3d1151b3 */
+    pa6 = -2.1663755178e-03,               /* 0xbb0df9c0 */
+    qa1 = 1.0642088205e-01,                /* 0x3dd9f331 */
+    qa2 = 5.4039794207e-01,                /* 0x3f0a5785 */
+    qa3 = 7.1828655899e-02,                /* 0x3d931ae7 */
+    qa4 = 1.2617121637e-01,                /* 0x3e013307 */
+    qa5 = 1.3637083583e-02,                /* 0x3c5f6e13 */
+    qa6 = 1.1984500103e-02,                /* 0x3c445aa3 */
+                                           /*
+                                            * Coefficients for approximation to  erfc in [1.25,1/0.35]
+                                            */
+    ra0 = -9.8649440333e-03,               /* 0xbc21a093 */
+    ra1 = -6.9385856390e-01,               /* 0xbf31a0b7 */
+    ra2 = -1.0558626175e+01,               /* 0xc128f022 */
+    ra3 = -6.2375331879e+01,               /* 0xc2798057 */
+    ra4 = -1.6239666748e+02,               /* 0xc322658c */
+    ra5 = -1.8460508728e+02,               /* 0xc3389ae7 */
+    ra6 = -8.1287437439e+01,               /* 0xc2a2932b */
+    ra7 = -9.8143291473e+00,               /* 0xc11d077e */
+    sa1 = 1.9651271820e+01,                /* 0x419d35ce */
+    sa2 = 1.3765776062e+02,                /* 0x4309a863 */
+    sa3 = 4.3456588745e+02,                /* 0x43d9486f */
+    sa4 = 6.4538726807e+02,                /* 0x442158c9 */
+    sa5 = 4.2900814819e+02,                /* 0x43d6810b */
+    sa6 = 1.0863500214e+02,                /* 0x42d9451f */
+    sa7 = 6.5702495575e+00,                /* 0x40d23f7c */
+    sa8 = -6.0424413532e-02,               /* 0xbd777f97 */
+                                           /*
+                                            * Coefficients for approximation to  erfc in [1/.35,28]
+                                            */
+    rb0 = -9.8649431020e-03,               /* 0xbc21a092 */
+    rb1 = -7.9928326607e-01,               /* 0xbf4c9dd4 */
+    rb2 = -1.7757955551e+01,               /* 0xc18e104b */
+    rb3 = -1.6063638306e+02,               /* 0xc320a2ea */
+    rb4 = -6.3756646729e+02,               /* 0xc41f6441 */
+    rb5 = -1.0250950928e+03,               /* 0xc480230b */
+    rb6 = -4.8351919556e+02,               /* 0xc3f1c275 */
+    sb1 = 3.0338060379e+01,                /* 0x41f2b459 */
+    sb2 = 3.2579251099e+02,                /* 0x43a2e571 */
+    sb3 = 1.5367296143e+03,                /* 0x44c01759 */
+    sb4 = 3.1998581543e+03,                /* 0x4547fdbb */
+    sb5 = 2.5530502930e+03,                /* 0x451f90ce */
+    sb6 = 4.7452853394e+02,                /* 0x43ed43a7 */
+    sb7 = -2.2440952301e+01;               /* 0xc1b38712 */
 
-static float erfc1(float x)
-{
-	float_t s,P,Q;
+static float erfc1(float x) {
+  float_t s, P, Q;
 
-	s = fabsf(x) - 1;
-	P = pa0+s*(pa1+s*(pa2+s*(pa3+s*(pa4+s*(pa5+s*pa6)))));
-	Q = 1+s*(qa1+s*(qa2+s*(qa3+s*(qa4+s*(qa5+s*qa6)))));
-	return 1 - erx - P/Q;
+  s = fabsf(x) - 1;
+  P = pa0 + s * (pa1 + s * (pa2 + s * (pa3 + s * (pa4 + s * (pa5 + s * pa6)))));
+  Q = 1 + s * (qa1 + s * (qa2 + s * (qa3 + s * (qa4 + s * (qa5 + s * qa6)))));
+  return 1 - erx - P / Q;
 }
 
-static float erfc2(uint32_t ix, float x)
-{
-	float_t s,R,S;
-	float z;
+static float erfc2(uint32_t ix, float x) {
+  float_t s, R, S;
+  float z;
 
-	if (ix < 0x3fa00000)  /* |x| < 1.25 */
-		return erfc1(x);
+  if (ix < 0x3fa00000) /* |x| < 1.25 */
+    return erfc1(x);
 
-	x = fabsf(x);
-	s = 1/(x*x);
-	if (ix < 0x4036db6d) {   /* |x| < 1/0.35 */
-		R = ra0+s*(ra1+s*(ra2+s*(ra3+s*(ra4+s*(
-		     ra5+s*(ra6+s*ra7))))));
-		S = 1.0f+s*(sa1+s*(sa2+s*(sa3+s*(sa4+s*(
-		     sa5+s*(sa6+s*(sa7+s*sa8)))))));
-	} else {                 /* |x| >= 1/0.35 */
-		R = rb0+s*(rb1+s*(rb2+s*(rb3+s*(rb4+s*(
-		     rb5+s*rb6)))));
-		S = 1.0f+s*(sb1+s*(sb2+s*(sb3+s*(sb4+s*(
-		     sb5+s*(sb6+s*sb7))))));
-	}
-	GET_FLOAT_WORD(ix, x);
-	SET_FLOAT_WORD(z, ix&0xffffe000);
-	return expf(-z*z - 0.5625f) * expf((z-x)*(z+x) + R/S)/x;
+  x = fabsf(x);
+  s = 1 / (x * x);
+  if (ix < 0x4036db6d) { /* |x| < 1/0.35 */
+    R = ra0 +
+        s * (ra1 +
+             s * (ra2 +
+                  s * (ra3 + s * (ra4 + s * (ra5 + s * (ra6 + s * ra7))))));
+    S = 1.0f +
+        s * (sa1 +
+             s * (sa2 +
+                  s * (sa3 +
+                       s * (sa4 +
+                            s * (sa5 + s * (sa6 + s * (sa7 + s * sa8)))))));
+  } else { /* |x| >= 1/0.35 */
+    R = rb0 +
+        s * (rb1 + s * (rb2 + s * (rb3 + s * (rb4 + s * (rb5 + s * rb6)))));
+    S = 1.0f +
+        s * (sb1 +
+             s * (sb2 +
+                  s * (sb3 + s * (sb4 + s * (sb5 + s * (sb6 + s * sb7))))));
+  }
+  GET_FLOAT_WORD(ix, x);
+  SET_FLOAT_WORD(z, ix & 0xffffe000);
+  return expf(-z * z - 0.5625f) * expf((z - x) * (z + x) + R / S) / x;
 }
 
-float erff(float x)
-{
-	float r,s,z,y;
-	uint32_t ix;
-	int sign;
+float erff(float x) {
+  float r, s, z, y;
+  uint32_t ix;
+  int sign;
 
-	GET_FLOAT_WORD(ix, x);
-	sign = ix>>31;
-	ix &= 0x7fffffff;
-	if (ix >= 0x7f800000) {
-		/* erf(nan)=nan, erf(+-inf)=+-1 */
-		return 1-2*sign + 1/x;
-	}
-	if (ix < 0x3f580000) {  /* |x| < 0.84375 */
-		if (ix < 0x31800000) {  /* |x| < 2**-28 */
-			/*avoid underflow */
-			return 0.125f*(8*x + efx8*x);
-		}
-		z = x*x;
-		r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4)));
-		s = 1+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5))));
-		y = r/s;
-		return x + x*y;
-	}
-	if (ix < 0x40c00000)  /* |x| < 6 */
-		y = 1 - erfc2(ix,x);
-	else
-		y = 1 - 0x1p-120f;
-	return sign ? -y : y;
+  GET_FLOAT_WORD(ix, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
+  if (ix >= 0x7f800000) {
+    /* erf(nan)=nan, erf(+-inf)=+-1 */
+    return 1 - 2 * sign + 1 / x;
+  }
+  if (ix < 0x3f580000) {   /* |x| < 0.84375 */
+    if (ix < 0x31800000) { /* |x| < 2**-28 */
+      /*avoid underflow */
+      return 0.125f * (8 * x + efx8 * x);
+    }
+    z = x * x;
+    r = pp0 + z * (pp1 + z * (pp2 + z * (pp3 + z * pp4)));
+    s = 1 + z * (qq1 + z * (qq2 + z * (qq3 + z * (qq4 + z * qq5))));
+    y = r / s;
+    return x + x * y;
+  }
+  if (ix < 0x40c00000) /* |x| < 6 */
+    y = 1 - erfc2(ix, x);
+  else
+    y = 1 - 0x1p-120f;
+  return sign ? -y : y;
 }
 
-float erfcf(float x)
-{
-	float r,s,z,y;
-	uint32_t ix;
-	int sign;
+float erfcf(float x) {
+  float r, s, z, y;
+  uint32_t ix;
+  int sign;
 
-	GET_FLOAT_WORD(ix, x);
-	sign = ix>>31;
-	ix &= 0x7fffffff;
-	if (ix >= 0x7f800000) {
-		/* erfc(nan)=nan, erfc(+-inf)=0,2 */
-		return 2*sign + 1/x;
-	}
+  GET_FLOAT_WORD(ix, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
+  if (ix >= 0x7f800000) {
+    /* erfc(nan)=nan, erfc(+-inf)=0,2 */
+    return 2 * sign + 1 / x;
+  }
 
-	if (ix < 0x3f580000) {  /* |x| < 0.84375 */
-		if (ix < 0x23800000)  /* |x| < 2**-56 */
-			return 1.0f - x;
-		z = x*x;
-		r = pp0+z*(pp1+z*(pp2+z*(pp3+z*pp4)));
-		s = 1.0f+z*(qq1+z*(qq2+z*(qq3+z*(qq4+z*qq5))));
-		y = r/s;
-		if (sign || ix < 0x3e800000)  /* x < 1/4 */
-			return 1.0f - (x+x*y);
-		return 0.5f - (x - 0.5f + x*y);
-	}
-	if (ix < 0x41e00000) {  /* |x| < 28 */
-		return sign ? 2 - erfc2(ix,x) : erfc2(ix,x);
-	}
-	return sign ? 2 - 0x1p-120f : 0x1p-120f*0x1p-120f;
+  if (ix < 0x3f580000) { /* |x| < 0.84375 */
+    if (ix < 0x23800000) /* |x| < 2**-56 */
+      return 1.0f - x;
+    z = x * x;
+    r = pp0 + z * (pp1 + z * (pp2 + z * (pp3 + z * pp4)));
+    s = 1.0f + z * (qq1 + z * (qq2 + z * (qq3 + z * (qq4 + z * qq5))));
+    y = r / s;
+    if (sign || ix < 0x3e800000) /* x < 1/4 */
+      return 1.0f - (x + x * y);
+    return 0.5f - (x - 0.5f + x * y);
+  }
+  if (ix < 0x41e00000) { /* |x| < 28 */
+    return sign ? 2 - erfc2(ix, x) : erfc2(ix, x);
+  }
+  return sign ? 2 - 0x1p-120f : 0x1p-120f * 0x1p-120f;
 }
diff --git a/fusl/src/math/erfl.c b/fusl/src/math/erfl.c
index e267c23..a5a6a73 100644
--- a/fusl/src/math/erfl.c
+++ b/fusl/src/math/erfl.c
@@ -97,257 +97,277 @@
  *              erfc/erf(NaN) is NaN
  */
 
-
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double erfl(long double x)
-{
-	return erf(x);
+long double erfl(long double x) {
+  return erf(x);
 }
-long double erfcl(long double x)
-{
-	return erfc(x);
+long double erfcl(long double x) {
+  return erfc(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
 static const long double
-erx = 0.845062911510467529296875L,
+    erx = 0.845062911510467529296875L,
 
-/*
- * Coefficients for approximation to  erf on [0,0.84375]
- */
-/* 8 * (2/sqrt(pi) - 1) */
-efx8 = 1.0270333367641005911692712249723613735048E0L,
-pp[6] = {
-	1.122751350964552113068262337278335028553E6L,
-	-2.808533301997696164408397079650699163276E6L,
-	-3.314325479115357458197119660818768924100E5L,
-	-6.848684465326256109712135497895525446398E4L,
-	-2.657817695110739185591505062971929859314E3L,
-	-1.655310302737837556654146291646499062882E2L,
+    /*
+     * Coefficients for approximation to  erf on [0,0.84375]
+     */
+    /* 8 * (2/sqrt(pi) - 1) */
+    efx8 = 1.0270333367641005911692712249723613735048E0L,
+    pp[6] =
+        {
+            1.122751350964552113068262337278335028553E6L,
+            -2.808533301997696164408397079650699163276E6L,
+            -3.314325479115357458197119660818768924100E5L,
+            -6.848684465326256109712135497895525446398E4L,
+            -2.657817695110739185591505062971929859314E3L,
+            -1.655310302737837556654146291646499062882E2L,
 },
-qq[6] = {
-	8.745588372054466262548908189000448124232E6L,
-	3.746038264792471129367533128637019611485E6L,
-	7.066358783162407559861156173539693900031E5L,
-	7.448928604824620999413120955705448117056E4L,
-	4.511583986730994111992253980546131408924E3L,
-	1.368902937933296323345610240009071254014E2L,
-	/* 1.000000000000000000000000000000000000000E0 */
+    qq[6] =
+        {
+            8.745588372054466262548908189000448124232E6L,
+            3.746038264792471129367533128637019611485E6L,
+            7.066358783162407559861156173539693900031E5L,
+            7.448928604824620999413120955705448117056E4L,
+            4.511583986730994111992253980546131408924E3L,
+            1.368902937933296323345610240009071254014E2L,
+            /* 1.000000000000000000000000000000000000000E0 */
 },
 
-/*
- * Coefficients for approximation to  erf  in [0.84375,1.25]
- */
-/* erf(x+1) = 0.845062911510467529296875 + pa(x)/qa(x)
-   -0.15625 <= x <= +.25
-   Peak relative error 8.5e-22  */
-pa[8] = {
-	-1.076952146179812072156734957705102256059E0L,
-	 1.884814957770385593365179835059971587220E2L,
-	-5.339153975012804282890066622962070115606E1L,
-	 4.435910679869176625928504532109635632618E1L,
-	 1.683219516032328828278557309642929135179E1L,
-	-2.360236618396952560064259585299045804293E0L,
-	 1.852230047861891953244413872297940938041E0L,
-	 9.394994446747752308256773044667843200719E-2L,
+    /*
+     * Coefficients for approximation to  erf  in [0.84375,1.25]
+     */
+    /* erf(x+1) = 0.845062911510467529296875 + pa(x)/qa(x)
+       -0.15625 <= x <= +.25
+       Peak relative error 8.5e-22  */
+    pa[8] =
+        {
+            -1.076952146179812072156734957705102256059E0L,
+            1.884814957770385593365179835059971587220E2L,
+            -5.339153975012804282890066622962070115606E1L,
+            4.435910679869176625928504532109635632618E1L,
+            1.683219516032328828278557309642929135179E1L,
+            -2.360236618396952560064259585299045804293E0L,
+            1.852230047861891953244413872297940938041E0L,
+            9.394994446747752308256773044667843200719E-2L,
 },
-qa[7] =  {
-	4.559263722294508998149925774781887811255E2L,
-	3.289248982200800575749795055149780689738E2L,
-	2.846070965875643009598627918383314457912E2L,
-	1.398715859064535039433275722017479994465E2L,
-	6.060190733759793706299079050985358190726E1L,
-	2.078695677795422351040502569964299664233E1L,
-	4.641271134150895940966798357442234498546E0L,
-	/* 1.000000000000000000000000000000000000000E0 */
+    qa[7] =
+        {
+            4.559263722294508998149925774781887811255E2L,
+            3.289248982200800575749795055149780689738E2L,
+            2.846070965875643009598627918383314457912E2L,
+            1.398715859064535039433275722017479994465E2L,
+            6.060190733759793706299079050985358190726E1L,
+            2.078695677795422351040502569964299664233E1L,
+            4.641271134150895940966798357442234498546E0L,
+            /* 1.000000000000000000000000000000000000000E0 */
 },
 
-/*
- * Coefficients for approximation to  erfc in [1.25,1/0.35]
- */
-/* erfc(1/x) = x exp (-1/x^2 - 0.5625 + ra(x^2)/sa(x^2))
-   1/2.85711669921875 < 1/x < 1/1.25
-   Peak relative error 3.1e-21  */
-ra[] = {
-	1.363566591833846324191000679620738857234E-1L,
-	1.018203167219873573808450274314658434507E1L,
-	1.862359362334248675526472871224778045594E2L,
-	1.411622588180721285284945138667933330348E3L,
-	5.088538459741511988784440103218342840478E3L,
-	8.928251553922176506858267311750789273656E3L,
-	7.264436000148052545243018622742770549982E3L,
-	2.387492459664548651671894725748959751119E3L,
-	2.220916652813908085449221282808458466556E2L,
+    /*
+     * Coefficients for approximation to  erfc in [1.25,1/0.35]
+     */
+    /* erfc(1/x) = x exp (-1/x^2 - 0.5625 + ra(x^2)/sa(x^2))
+       1/2.85711669921875 < 1/x < 1/1.25
+       Peak relative error 3.1e-21  */
+    ra[] =
+        {
+            1.363566591833846324191000679620738857234E-1L,
+            1.018203167219873573808450274314658434507E1L,
+            1.862359362334248675526472871224778045594E2L,
+            1.411622588180721285284945138667933330348E3L,
+            5.088538459741511988784440103218342840478E3L,
+            8.928251553922176506858267311750789273656E3L,
+            7.264436000148052545243018622742770549982E3L,
+            2.387492459664548651671894725748959751119E3L,
+            2.220916652813908085449221282808458466556E2L,
 },
-sa[] = {
-	-1.382234625202480685182526402169222331847E1L,
-	-3.315638835627950255832519203687435946482E2L,
-	-2.949124863912936259747237164260785326692E3L,
-	-1.246622099070875940506391433635999693661E4L,
-	-2.673079795851665428695842853070996219632E4L,
-	-2.880269786660559337358397106518918220991E4L,
-	-1.450600228493968044773354186390390823713E4L,
-	-2.874539731125893533960680525192064277816E3L,
-	-1.402241261419067750237395034116942296027E2L,
-	/* 1.000000000000000000000000000000000000000E0 */
+    sa[] =
+        {
+            -1.382234625202480685182526402169222331847E1L,
+            -3.315638835627950255832519203687435946482E2L,
+            -2.949124863912936259747237164260785326692E3L,
+            -1.246622099070875940506391433635999693661E4L,
+            -2.673079795851665428695842853070996219632E4L,
+            -2.880269786660559337358397106518918220991E4L,
+            -1.450600228493968044773354186390390823713E4L,
+            -2.874539731125893533960680525192064277816E3L,
+            -1.402241261419067750237395034116942296027E2L,
+            /* 1.000000000000000000000000000000000000000E0 */
 },
 
-/*
- * Coefficients for approximation to  erfc in [1/.35,107]
- */
-/* erfc(1/x) = x exp (-1/x^2 - 0.5625 + rb(x^2)/sb(x^2))
-   1/6.6666259765625 < 1/x < 1/2.85711669921875
-   Peak relative error 4.2e-22  */
-rb[] = {
-	-4.869587348270494309550558460786501252369E-5L,
-	-4.030199390527997378549161722412466959403E-3L,
-	-9.434425866377037610206443566288917589122E-2L,
-	-9.319032754357658601200655161585539404155E-1L,
-	-4.273788174307459947350256581445442062291E0L,
-	-8.842289940696150508373541814064198259278E0L,
-	-7.069215249419887403187988144752613025255E0L,
-	-1.401228723639514787920274427443330704764E0L,
+    /*
+     * Coefficients for approximation to  erfc in [1/.35,107]
+     */
+    /* erfc(1/x) = x exp (-1/x^2 - 0.5625 + rb(x^2)/sb(x^2))
+       1/6.6666259765625 < 1/x < 1/2.85711669921875
+       Peak relative error 4.2e-22  */
+    rb[] =
+        {
+            -4.869587348270494309550558460786501252369E-5L,
+            -4.030199390527997378549161722412466959403E-3L,
+            -9.434425866377037610206443566288917589122E-2L,
+            -9.319032754357658601200655161585539404155E-1L,
+            -4.273788174307459947350256581445442062291E0L,
+            -8.842289940696150508373541814064198259278E0L,
+            -7.069215249419887403187988144752613025255E0L,
+            -1.401228723639514787920274427443330704764E0L,
 },
-sb[] = {
-	4.936254964107175160157544545879293019085E-3L,
-	1.583457624037795744377163924895349412015E-1L,
-	1.850647991850328356622940552450636420484E0L,
-	9.927611557279019463768050710008450625415E0L,
-	2.531667257649436709617165336779212114570E1L,
-	2.869752886406743386458304052862814690045E1L,
-	1.182059497870819562441683560749192539345E1L,
-	/* 1.000000000000000000000000000000000000000E0 */
+    sb[] =
+        {
+            4.936254964107175160157544545879293019085E-3L,
+            1.583457624037795744377163924895349412015E-1L,
+            1.850647991850328356622940552450636420484E0L,
+            9.927611557279019463768050710008450625415E0L,
+            2.531667257649436709617165336779212114570E1L,
+            2.869752886406743386458304052862814690045E1L,
+            1.182059497870819562441683560749192539345E1L,
+            /* 1.000000000000000000000000000000000000000E0 */
 },
-/* erfc(1/x) = x exp (-1/x^2 - 0.5625 + rc(x^2)/sc(x^2))
-   1/107 <= 1/x <= 1/6.6666259765625
-   Peak relative error 1.1e-21  */
-rc[] = {
-	-8.299617545269701963973537248996670806850E-5L,
-	-6.243845685115818513578933902532056244108E-3L,
-	-1.141667210620380223113693474478394397230E-1L,
-	-7.521343797212024245375240432734425789409E-1L,
-	-1.765321928311155824664963633786967602934E0L,
-	-1.029403473103215800456761180695263439188E0L,
+    /* erfc(1/x) = x exp (-1/x^2 - 0.5625 + rc(x^2)/sc(x^2))
+       1/107 <= 1/x <= 1/6.6666259765625
+       Peak relative error 1.1e-21  */
+    rc[] =
+        {
+            -8.299617545269701963973537248996670806850E-5L,
+            -6.243845685115818513578933902532056244108E-3L,
+            -1.141667210620380223113693474478394397230E-1L,
+            -7.521343797212024245375240432734425789409E-1L,
+            -1.765321928311155824664963633786967602934E0L,
+            -1.029403473103215800456761180695263439188E0L,
 },
-sc[] = {
-	8.413244363014929493035952542677768808601E-3L,
-	2.065114333816877479753334599639158060979E-1L,
-	1.639064941530797583766364412782135680148E0L,
-	4.936788463787115555582319302981666347450E0L,
-	5.005177727208955487404729933261347679090E0L,
-	/* 1.000000000000000000000000000000000000000E0 */
+    sc[] = {
+        8.413244363014929493035952542677768808601E-3L,
+        2.065114333816877479753334599639158060979E-1L,
+        1.639064941530797583766364412782135680148E0L,
+        4.936788463787115555582319302981666347450E0L,
+        5.005177727208955487404729933261347679090E0L,
+        /* 1.000000000000000000000000000000000000000E0 */
 };
 
-static long double erfc1(long double x)
-{
-	long double s,P,Q;
+static long double erfc1(long double x) {
+  long double s, P, Q;
 
-	s = fabsl(x) - 1;
-	P = pa[0] + s * (pa[1] + s * (pa[2] +
-	     s * (pa[3] + s * (pa[4] + s * (pa[5] + s * (pa[6] + s * pa[7]))))));
-	Q = qa[0] + s * (qa[1] + s * (qa[2] +
-	     s * (qa[3] + s * (qa[4] + s * (qa[5] + s * (qa[6] + s))))));
-	return 1 - erx - P / Q;
+  s = fabsl(x) - 1;
+  P = pa[0] +
+      s * (pa[1] +
+           s * (pa[2] +
+                s * (pa[3] +
+                     s * (pa[4] + s * (pa[5] + s * (pa[6] + s * pa[7]))))));
+  Q = qa[0] +
+      s * (qa[1] +
+           s * (qa[2] +
+                s * (qa[3] + s * (qa[4] + s * (qa[5] + s * (qa[6] + s))))));
+  return 1 - erx - P / Q;
 }
 
-static long double erfc2(uint32_t ix, long double x)
-{
-	union ldshape u;
-	long double s,z,R,S;
+static long double erfc2(uint32_t ix, long double x) {
+  union ldshape u;
+  long double s, z, R, S;
 
-	if (ix < 0x3fffa000)  /* 0.84375 <= |x| < 1.25 */
-		return erfc1(x);
+  if (ix < 0x3fffa000) /* 0.84375 <= |x| < 1.25 */
+    return erfc1(x);
 
-	x = fabsl(x);
-	s = 1 / (x * x);
-	if (ix < 0x4000b6db) {  /* 1.25 <= |x| < 2.857 ~ 1/.35 */
-		R = ra[0] + s * (ra[1] + s * (ra[2] + s * (ra[3] + s * (ra[4] +
-		     s * (ra[5] + s * (ra[6] + s * (ra[7] + s * ra[8])))))));
-		S = sa[0] + s * (sa[1] + s * (sa[2] + s * (sa[3] + s * (sa[4] +
-		     s * (sa[5] + s * (sa[6] + s * (sa[7] + s * (sa[8] + s))))))));
-	} else if (ix < 0x4001d555) {  /* 2.857 <= |x| < 6.6666259765625 */
-		R = rb[0] + s * (rb[1] + s * (rb[2] + s * (rb[3] + s * (rb[4] +
-		     s * (rb[5] + s * (rb[6] + s * rb[7]))))));
-		S = sb[0] + s * (sb[1] + s * (sb[2] + s * (sb[3] + s * (sb[4] +
-		     s * (sb[5] + s * (sb[6] + s))))));
-	} else { /* 6.666 <= |x| < 107 (erfc only) */
-		R = rc[0] + s * (rc[1] + s * (rc[2] + s * (rc[3] +
-		     s * (rc[4] + s * rc[5]))));
-		S = sc[0] + s * (sc[1] + s * (sc[2] + s * (sc[3] +
-		     s * (sc[4] + s))));
-	}
-	u.f = x;
-	u.i.m &= -1ULL << 40;
-	z = u.f;
-	return expl(-z*z - 0.5625) * expl((z - x) * (z + x) + R / S) / x;
+  x = fabsl(x);
+  s = 1 / (x * x);
+  if (ix < 0x4000b6db) { /* 1.25 <= |x| < 2.857 ~ 1/.35 */
+    R = ra[0] +
+        s * (ra[1] +
+             s * (ra[2] +
+                  s * (ra[3] +
+                       s * (ra[4] +
+                            s * (ra[5] +
+                                 s * (ra[6] + s * (ra[7] + s * ra[8])))))));
+    S = sa[0] +
+        s * (sa[1] +
+             s * (sa[2] +
+                  s * (sa[3] +
+                       s * (sa[4] +
+                            s * (sa[5] +
+                                 s * (sa[6] +
+                                      s * (sa[7] + s * (sa[8] + s))))))));
+  } else if (ix < 0x4001d555) { /* 2.857 <= |x| < 6.6666259765625 */
+    R = rb[0] +
+        s * (rb[1] +
+             s * (rb[2] +
+                  s * (rb[3] +
+                       s * (rb[4] + s * (rb[5] + s * (rb[6] + s * rb[7]))))));
+    S = sb[0] +
+        s * (sb[1] +
+             s * (sb[2] +
+                  s * (sb[3] + s * (sb[4] + s * (sb[5] + s * (sb[6] + s))))));
+  } else { /* 6.666 <= |x| < 107 (erfc only) */
+    R = rc[0] +
+        s * (rc[1] + s * (rc[2] + s * (rc[3] + s * (rc[4] + s * rc[5]))));
+    S = sc[0] + s * (sc[1] + s * (sc[2] + s * (sc[3] + s * (sc[4] + s))));
+  }
+  u.f = x;
+  u.i.m &= -1ULL << 40;
+  z = u.f;
+  return expl(-z * z - 0.5625) * expl((z - x) * (z + x) + R / S) / x;
 }
 
-long double erfl(long double x)
-{
-	long double r, s, z, y;
-	union ldshape u = {x};
-	uint32_t ix = (u.i.se & 0x7fffU)<<16 | u.i.m>>48;
-	int sign = u.i.se >> 15;
+long double erfl(long double x) {
+  long double r, s, z, y;
+  union ldshape u = {x};
+  uint32_t ix = (u.i.se & 0x7fffU) << 16 | u.i.m >> 48;
+  int sign = u.i.se >> 15;
 
-	if (ix >= 0x7fff0000)
-		/* erf(nan)=nan, erf(+-inf)=+-1 */
-		return 1 - 2*sign + 1/x;
-	if (ix < 0x3ffed800) {  /* |x| < 0.84375 */
-		if (ix < 0x3fde8000) {  /* |x| < 2**-33 */
-			return 0.125 * (8 * x + efx8 * x);  /* avoid underflow */
-		}
-		z = x * x;
-		r = pp[0] + z * (pp[1] +
-		     z * (pp[2] + z * (pp[3] + z * (pp[4] + z * pp[5]))));
-		s = qq[0] + z * (qq[1] +
-		     z * (qq[2] + z * (qq[3] + z * (qq[4] + z * (qq[5] + z)))));
-		y = r / s;
-		return x + x * y;
-	}
-	if (ix < 0x4001d555)  /* |x| < 6.6666259765625 */
-		y = 1 - erfc2(ix,x);
-	else
-		y = 1 - 0x1p-16382L;
-	return sign ? -y : y;
+  if (ix >= 0x7fff0000)
+    /* erf(nan)=nan, erf(+-inf)=+-1 */
+    return 1 - 2 * sign + 1 / x;
+  if (ix < 0x3ffed800) {                 /* |x| < 0.84375 */
+    if (ix < 0x3fde8000) {               /* |x| < 2**-33 */
+      return 0.125 * (8 * x + efx8 * x); /* avoid underflow */
+    }
+    z = x * x;
+    r = pp[0] +
+        z * (pp[1] + z * (pp[2] + z * (pp[3] + z * (pp[4] + z * pp[5]))));
+    s = qq[0] +
+        z * (qq[1] + z * (qq[2] + z * (qq[3] + z * (qq[4] + z * (qq[5] + z)))));
+    y = r / s;
+    return x + x * y;
+  }
+  if (ix < 0x4001d555) /* |x| < 6.6666259765625 */
+    y = 1 - erfc2(ix, x);
+  else
+    y = 1 - 0x1p-16382L;
+  return sign ? -y : y;
 }
 
-long double erfcl(long double x)
-{
-	long double r, s, z, y;
-	union ldshape u = {x};
-	uint32_t ix = (u.i.se & 0x7fffU)<<16 | u.i.m>>48;
-	int sign = u.i.se >> 15;
+long double erfcl(long double x) {
+  long double r, s, z, y;
+  union ldshape u = {x};
+  uint32_t ix = (u.i.se & 0x7fffU) << 16 | u.i.m >> 48;
+  int sign = u.i.se >> 15;
 
-	if (ix >= 0x7fff0000)
-		/* erfc(nan) = nan, erfc(+-inf) = 0,2 */
-		return 2*sign + 1/x;
-	if (ix < 0x3ffed800) {  /* |x| < 0.84375 */
-		if (ix < 0x3fbe0000)  /* |x| < 2**-65 */
-			return 1.0 - x;
-		z = x * x;
-		r = pp[0] + z * (pp[1] +
-		     z * (pp[2] + z * (pp[3] + z * (pp[4] + z * pp[5]))));
-		s = qq[0] + z * (qq[1] +
-		     z * (qq[2] + z * (qq[3] + z * (qq[4] + z * (qq[5] + z)))));
-		y = r / s;
-		if (ix < 0x3ffd8000) /* x < 1/4 */
-			return 1.0 - (x + x * y);
-		return 0.5 - (x - 0.5 + x * y);
-	}
-	if (ix < 0x4005d600)  /* |x| < 107 */
-		return sign ? 2 - erfc2(ix,x) : erfc2(ix,x);
-	y = 0x1p-16382L;
-	return sign ? 2 - y : y*y;
+  if (ix >= 0x7fff0000)
+    /* erfc(nan) = nan, erfc(+-inf) = 0,2 */
+    return 2 * sign + 1 / x;
+  if (ix < 0x3ffed800) { /* |x| < 0.84375 */
+    if (ix < 0x3fbe0000) /* |x| < 2**-65 */
+      return 1.0 - x;
+    z = x * x;
+    r = pp[0] +
+        z * (pp[1] + z * (pp[2] + z * (pp[3] + z * (pp[4] + z * pp[5]))));
+    s = qq[0] +
+        z * (qq[1] + z * (qq[2] + z * (qq[3] + z * (qq[4] + z * (qq[5] + z)))));
+    y = r / s;
+    if (ix < 0x3ffd8000) /* x < 1/4 */
+      return 1.0 - (x + x * y);
+    return 0.5 - (x - 0.5 + x * y);
+  }
+  if (ix < 0x4005d600) /* |x| < 107 */
+    return sign ? 2 - erfc2(ix, x) : erfc2(ix, x);
+  y = 0x1p-16382L;
+  return sign ? 2 - y : y * y;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-long double erfl(long double x)
-{
-	return erf(x);
+long double erfl(long double x) {
+  return erf(x);
 }
-long double erfcl(long double x)
-{
-	return erfc(x);
+long double erfcl(long double x) {
+  return erfc(x);
 }
 #endif
diff --git a/fusl/src/math/exp.c b/fusl/src/math/exp.c
index 9ea672f..d196944 100644
--- a/fusl/src/math/exp.c
+++ b/fusl/src/math/exp.c
@@ -67,68 +67,67 @@
 
 #include "libm.h"
 
-static const double
-half[2] = {0.5,-0.5},
-ln2hi = 6.93147180369123816490e-01, /* 0x3fe62e42, 0xfee00000 */
-ln2lo = 1.90821492927058770002e-10, /* 0x3dea39ef, 0x35793c76 */
-invln2 = 1.44269504088896338700e+00, /* 0x3ff71547, 0x652b82fe */
-P1   =  1.66666666666666019037e-01, /* 0x3FC55555, 0x5555553E */
-P2   = -2.77777777770155933842e-03, /* 0xBF66C16C, 0x16BEBD93 */
-P3   =  6.61375632143793436117e-05, /* 0x3F11566A, 0xAF25DE2C */
-P4   = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */
-P5   =  4.13813679705723846039e-08; /* 0x3E663769, 0x72BEA4D0 */
+static const double half[2] = {0.5, -0.5},
+                    ln2hi =
+                        6.93147180369123816490e-01, /* 0x3fe62e42, 0xfee00000 */
+    ln2lo = 1.90821492927058770002e-10,             /* 0x3dea39ef, 0x35793c76 */
+    invln2 = 1.44269504088896338700e+00,            /* 0x3ff71547, 0x652b82fe */
+    P1 = 1.66666666666666019037e-01,                /* 0x3FC55555, 0x5555553E */
+    P2 = -2.77777777770155933842e-03,               /* 0xBF66C16C, 0x16BEBD93 */
+    P3 = 6.61375632143793436117e-05,                /* 0x3F11566A, 0xAF25DE2C */
+    P4 = -1.65339022054652515390e-06,               /* 0xBEBBBD41, 0xC5D26BF1 */
+    P5 = 4.13813679705723846039e-08;                /* 0x3E663769, 0x72BEA4D0 */
 
-double exp(double x)
-{
-	double_t hi, lo, c, xx, y;
-	int k, sign;
-	uint32_t hx;
+double exp(double x) {
+  double_t hi, lo, c, xx, y;
+  int k, sign;
+  uint32_t hx;
 
-	GET_HIGH_WORD(hx, x);
-	sign = hx>>31;
-	hx &= 0x7fffffff;  /* high word of |x| */
+  GET_HIGH_WORD(hx, x);
+  sign = hx >> 31;
+  hx &= 0x7fffffff; /* high word of |x| */
 
-	/* special cases */
-	if (hx >= 0x4086232b) {  /* if |x| >= 708.39... */
-		if (isnan(x))
-			return x;
-		if (x > 709.782712893383973096) {
-			/* overflow if x!=inf */
-			x *= 0x1p1023;
-			return x;
-		}
-		if (x < -708.39641853226410622) {
-			/* underflow if x!=-inf */
-			FORCE_EVAL((float)(-0x1p-149/x));
-			if (x < -745.13321910194110842)
-				return 0;
-		}
-	}
+  /* special cases */
+  if (hx >= 0x4086232b) { /* if |x| >= 708.39... */
+    if (isnan(x))
+      return x;
+    if (x > 709.782712893383973096) {
+      /* overflow if x!=inf */
+      x *= 0x1p1023;
+      return x;
+    }
+    if (x < -708.39641853226410622) {
+      /* underflow if x!=-inf */
+      FORCE_EVAL((float)(-0x1p-149 / x));
+      if (x < -745.13321910194110842)
+        return 0;
+    }
+  }
 
-	/* argument reduction */
-	if (hx > 0x3fd62e42) {  /* if |x| > 0.5 ln2 */
-		if (hx >= 0x3ff0a2b2)  /* if |x| >= 1.5 ln2 */
-			k = (int)(invln2*x + half[sign]);
-		else
-			k = 1 - sign - sign;
-		hi = x - k*ln2hi;  /* k*ln2hi is exact here */
-		lo = k*ln2lo;
-		x = hi - lo;
-	} else if (hx > 0x3e300000)  {  /* if |x| > 2**-28 */
-		k = 0;
-		hi = x;
-		lo = 0;
-	} else {
-		/* inexact if x!=0 */
-		FORCE_EVAL(0x1p1023 + x);
-		return 1 + x;
-	}
+  /* argument reduction */
+  if (hx > 0x3fd62e42) {  /* if |x| > 0.5 ln2 */
+    if (hx >= 0x3ff0a2b2) /* if |x| >= 1.5 ln2 */
+      k = (int)(invln2 * x + half[sign]);
+    else
+      k = 1 - sign - sign;
+    hi = x - k * ln2hi; /* k*ln2hi is exact here */
+    lo = k * ln2lo;
+    x = hi - lo;
+  } else if (hx > 0x3e300000) { /* if |x| > 2**-28 */
+    k = 0;
+    hi = x;
+    lo = 0;
+  } else {
+    /* inexact if x!=0 */
+    FORCE_EVAL(0x1p1023 + x);
+    return 1 + x;
+  }
 
-	/* x is now in primary range */
-	xx = x*x;
-	c = x - xx*(P1+xx*(P2+xx*(P3+xx*(P4+xx*P5))));
-	y = 1 + (x*c/(2-c) - lo + hi);
-	if (k == 0)
-		return y;
-	return scalbn(y, k);
+  /* x is now in primary range */
+  xx = x * x;
+  c = x - xx * (P1 + xx * (P2 + xx * (P3 + xx * (P4 + xx * P5))));
+  y = 1 + (x * c / (2 - c) - lo + hi);
+  if (k == 0)
+    return y;
+  return scalbn(y, k);
 }
diff --git a/fusl/src/math/exp10.c b/fusl/src/math/exp10.c
index 9f5e3c2..eb926b5 100644
--- a/fusl/src/math/exp10.c
+++ b/fusl/src/math/exp10.c
@@ -3,23 +3,24 @@
 #include <stdint.h>
 #include "libc.h"
 
-double exp10(double x)
-{
-	static const double p10[] = {
-		1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10,
-		1e-9, 1e-8, 1e-7, 1e-6, 1e-5, 1e-4, 1e-3, 1e-2, 1e-1,
-		1, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9,
-		1e10, 1e11, 1e12, 1e13, 1e14, 1e15
-	};
-	double n, y = modf(x, &n);
-	union {double f; uint64_t i;} u = {n};
-	/* fabs(n) < 16 without raising invalid on nan */
-	if ((u.i>>52 & 0x7ff) < 0x3ff+4) {
-		if (!y) return p10[(int)n+15];
-		y = exp2(3.32192809488736234787031942948939 * y);
-		return y * p10[(int)n+15];
-	}
-	return pow(10.0, x);
+double exp10(double x) {
+  static const double p10[] = {
+      1e-15, 1e-14, 1e-13, 1e-12, 1e-11, 1e-10, 1e-9, 1e-8, 1e-7, 1e-6, 1e-5,
+      1e-4,  1e-3,  1e-2,  1e-1,  1,     1e1,   1e2,  1e3,  1e4,  1e5,  1e6,
+      1e7,   1e8,   1e9,   1e10,  1e11,  1e12,  1e13, 1e14, 1e15};
+  double n, y = modf(x, &n);
+  union {
+    double f;
+    uint64_t i;
+  } u = {n};
+  /* fabs(n) < 16 without raising invalid on nan */
+  if ((u.i >> 52 & 0x7ff) < 0x3ff + 4) {
+    if (!y)
+      return p10[(int)n + 15];
+    y = exp2(3.32192809488736234787031942948939 * y);
+    return y * p10[(int)n + 15];
+  }
+  return pow(10.0, x);
 }
 
 weak_alias(exp10, pow10);
diff --git a/fusl/src/math/exp10f.c b/fusl/src/math/exp10f.c
index 7a8d447..1a23b74 100644
--- a/fusl/src/math/exp10f.c
+++ b/fusl/src/math/exp10f.c
@@ -3,21 +3,23 @@
 #include <stdint.h>
 #include "libc.h"
 
-float exp10f(float x)
-{
-	static const float p10[] = {
-		1e-7f, 1e-6f, 1e-5f, 1e-4f, 1e-3f, 1e-2f, 1e-1f,
-		1, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7
-	};
-	float n, y = modff(x, &n);
-	union {float f; uint32_t i;} u = {n};
-	/* fabsf(n) < 8 without raising invalid on nan */
-	if ((u.i>>23 & 0xff) < 0x7f+3) {
-		if (!y) return p10[(int)n+7];
-		y = exp2f(3.32192809488736234787031942948939f * y);
-		return y * p10[(int)n+7];
-	}
-	return exp2(3.32192809488736234787031942948939 * x);
+float exp10f(float x) {
+  static const float p10[] = {1e-7f, 1e-6f, 1e-5f, 1e-4f, 1e-3f,
+                              1e-2f, 1e-1f, 1,     1e1,   1e2,
+                              1e3,   1e4,   1e5,   1e6,   1e7};
+  float n, y = modff(x, &n);
+  union {
+    float f;
+    uint32_t i;
+  } u = {n};
+  /* fabsf(n) < 8 without raising invalid on nan */
+  if ((u.i >> 23 & 0xff) < 0x7f + 3) {
+    if (!y)
+      return p10[(int)n + 7];
+    y = exp2f(3.32192809488736234787031942948939f * y);
+    return y * p10[(int)n + 7];
+  }
+  return exp2(3.32192809488736234787031942948939 * x);
 }
 
 weak_alias(exp10f, pow10f);
diff --git a/fusl/src/math/exp10l.c b/fusl/src/math/exp10l.c
index b758ebf..7805c38 100644
--- a/fusl/src/math/exp10l.c
+++ b/fusl/src/math/exp10l.c
@@ -5,28 +5,26 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double exp10l(long double x)
-{
-	return exp10(x);
+long double exp10l(long double x) {
+  return exp10(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
-long double exp10l(long double x)
-{
-	static const long double p10[] = {
-		1e-15L, 1e-14L, 1e-13L, 1e-12L, 1e-11L, 1e-10L,
-		1e-9L, 1e-8L, 1e-7L, 1e-6L, 1e-5L, 1e-4L, 1e-3L, 1e-2L, 1e-1L,
-		1, 1e1, 1e2, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9,
-		1e10, 1e11, 1e12, 1e13, 1e14, 1e15
-	};
-	long double n, y = modfl(x, &n);
-	union ldshape u = {n};
-	/* fabsl(n) < 16 without raising invalid on nan */
-	if ((u.i.se & 0x7fff) < 0x3fff+4) {
-		if (!y) return p10[(int)n+15];
-		y = exp2l(3.32192809488736234787031942948939L * y);
-		return y * p10[(int)n+15];
-	}
-	return powl(10.0, x);
+long double exp10l(long double x) {
+  static const long double p10[] = {
+      1e-15L, 1e-14L, 1e-13L, 1e-12L, 1e-11L, 1e-10L, 1e-9L, 1e-8L,
+      1e-7L,  1e-6L,  1e-5L,  1e-4L,  1e-3L,  1e-2L,  1e-1L, 1,
+      1e1,    1e2,    1e3,    1e4,    1e5,    1e6,    1e7,   1e8,
+      1e9,    1e10,   1e11,   1e12,   1e13,   1e14,   1e15};
+  long double n, y = modfl(x, &n);
+  union ldshape u = {n};
+  /* fabsl(n) < 16 without raising invalid on nan */
+  if ((u.i.se & 0x7fff) < 0x3fff + 4) {
+    if (!y)
+      return p10[(int)n + 15];
+    y = exp2l(3.32192809488736234787031942948939L * y);
+    return y * p10[(int)n + 15];
+  }
+  return powl(10.0, x);
 }
 #endif
 
diff --git a/fusl/src/math/exp2.c b/fusl/src/math/exp2.c
index e14adba..26397bf 100644
--- a/fusl/src/math/exp2.c
+++ b/fusl/src/math/exp2.c
@@ -29,272 +29,140 @@
 
 #define TBLSIZE 256
 
-static const double
-redux = 0x1.8p52 / TBLSIZE,
-P1    = 0x1.62e42fefa39efp-1,
-P2    = 0x1.ebfbdff82c575p-3,
-P3    = 0x1.c6b08d704a0a6p-5,
-P4    = 0x1.3b2ab88f70400p-7,
-P5    = 0x1.5d88003875c74p-10;
+static const double redux = 0x1.8p52 / TBLSIZE, P1 = 0x1.62e42fefa39efp-1,
+                    P2 = 0x1.ebfbdff82c575p-3, P3 = 0x1.c6b08d704a0a6p-5,
+                    P4 = 0x1.3b2ab88f70400p-7, P5 = 0x1.5d88003875c74p-10;
 
 static const double tbl[TBLSIZE * 2] = {
-/*  exp2(z + eps)          eps     */
-  0x1.6a09e667f3d5dp-1,  0x1.9880p-44,
-  0x1.6b052fa751744p-1,  0x1.8000p-50,
-  0x1.6c012750bd9fep-1, -0x1.8780p-45,
-  0x1.6cfdcddd476bfp-1,  0x1.ec00p-46,
-  0x1.6dfb23c651a29p-1, -0x1.8000p-50,
-  0x1.6ef9298593ae3p-1, -0x1.c000p-52,
-  0x1.6ff7df9519386p-1, -0x1.fd80p-45,
-  0x1.70f7466f42da3p-1, -0x1.c880p-45,
-  0x1.71f75e8ec5fc3p-1,  0x1.3c00p-46,
-  0x1.72f8286eacf05p-1, -0x1.8300p-44,
-  0x1.73f9a48a58152p-1, -0x1.0c00p-47,
-  0x1.74fbd35d7ccfcp-1,  0x1.f880p-45,
-  0x1.75feb564267f1p-1,  0x1.3e00p-47,
-  0x1.77024b1ab6d48p-1, -0x1.7d00p-45,
-  0x1.780694fde5d38p-1, -0x1.d000p-50,
-  0x1.790b938ac1d00p-1,  0x1.3000p-49,
-  0x1.7a11473eb0178p-1, -0x1.d000p-49,
-  0x1.7b17b0976d060p-1,  0x1.0400p-45,
-  0x1.7c1ed0130c133p-1,  0x1.0000p-53,
-  0x1.7d26a62ff8636p-1, -0x1.6900p-45,
-  0x1.7e2f336cf4e3bp-1, -0x1.2e00p-47,
-  0x1.7f3878491c3e8p-1, -0x1.4580p-45,
-  0x1.80427543e1b4ep-1,  0x1.3000p-44,
-  0x1.814d2add1071ap-1,  0x1.f000p-47,
-  0x1.82589994ccd7ep-1, -0x1.1c00p-45,
-  0x1.8364c1eb942d0p-1,  0x1.9d00p-45,
-  0x1.8471a4623cab5p-1,  0x1.7100p-43,
-  0x1.857f4179f5bbcp-1,  0x1.2600p-45,
-  0x1.868d99b4491afp-1, -0x1.2c40p-44,
-  0x1.879cad931a395p-1, -0x1.3000p-45,
-  0x1.88ac7d98a65b8p-1, -0x1.a800p-45,
-  0x1.89bd0a4785800p-1, -0x1.d000p-49,
-  0x1.8ace5422aa223p-1,  0x1.3280p-44,
-  0x1.8be05bad619fap-1,  0x1.2b40p-43,
-  0x1.8cf3216b54383p-1, -0x1.ed00p-45,
-  0x1.8e06a5e08664cp-1, -0x1.0500p-45,
-  0x1.8f1ae99157807p-1,  0x1.8280p-45,
-  0x1.902fed0282c0ep-1, -0x1.cb00p-46,
-  0x1.9145b0b91ff96p-1, -0x1.5e00p-47,
-  0x1.925c353aa2ff9p-1,  0x1.5400p-48,
-  0x1.93737b0cdc64ap-1,  0x1.7200p-46,
-  0x1.948b82b5f98aep-1, -0x1.9000p-47,
-  0x1.95a44cbc852cbp-1,  0x1.5680p-45,
-  0x1.96bdd9a766f21p-1, -0x1.6d00p-44,
-  0x1.97d829fde4e2ap-1, -0x1.1000p-47,
-  0x1.98f33e47a23a3p-1,  0x1.d000p-45,
-  0x1.9a0f170ca0604p-1, -0x1.8a40p-44,
-  0x1.9b2bb4d53ff89p-1,  0x1.55c0p-44,
-  0x1.9c49182a3f15bp-1,  0x1.6b80p-45,
-  0x1.9d674194bb8c5p-1, -0x1.c000p-49,
-  0x1.9e86319e3238ep-1,  0x1.7d00p-46,
-  0x1.9fa5e8d07f302p-1,  0x1.6400p-46,
-  0x1.a0c667b5de54dp-1, -0x1.5000p-48,
-  0x1.a1e7aed8eb8f6p-1,  0x1.9e00p-47,
-  0x1.a309bec4a2e27p-1,  0x1.ad80p-45,
-  0x1.a42c980460a5dp-1, -0x1.af00p-46,
-  0x1.a5503b23e259bp-1,  0x1.b600p-47,
-  0x1.a674a8af46213p-1,  0x1.8880p-44,
-  0x1.a799e1330b3a7p-1,  0x1.1200p-46,
-  0x1.a8bfe53c12e8dp-1,  0x1.6c00p-47,
-  0x1.a9e6b5579fcd2p-1, -0x1.9b80p-45,
-  0x1.ab0e521356fb8p-1,  0x1.b700p-45,
-  0x1.ac36bbfd3f381p-1,  0x1.9000p-50,
-  0x1.ad5ff3a3c2780p-1,  0x1.4000p-49,
-  0x1.ae89f995ad2a3p-1, -0x1.c900p-45,
-  0x1.afb4ce622f367p-1,  0x1.6500p-46,
-  0x1.b0e07298db790p-1,  0x1.fd40p-45,
-  0x1.b20ce6c9a89a9p-1,  0x1.2700p-46,
-  0x1.b33a2b84f1a4bp-1,  0x1.d470p-43,
-  0x1.b468415b747e7p-1, -0x1.8380p-44,
-  0x1.b59728de5593ap-1,  0x1.8000p-54,
-  0x1.b6c6e29f1c56ap-1,  0x1.ad00p-47,
-  0x1.b7f76f2fb5e50p-1,  0x1.e800p-50,
-  0x1.b928cf22749b2p-1, -0x1.4c00p-47,
-  0x1.ba5b030a10603p-1, -0x1.d700p-47,
-  0x1.bb8e0b79a6f66p-1,  0x1.d900p-47,
-  0x1.bcc1e904bc1ffp-1,  0x1.2a00p-47,
-  0x1.bdf69c3f3a16fp-1, -0x1.f780p-46,
-  0x1.bf2c25bd71db8p-1, -0x1.0a00p-46,
-  0x1.c06286141b2e9p-1, -0x1.1400p-46,
-  0x1.c199bdd8552e0p-1,  0x1.be00p-47,
-  0x1.c2d1cd9fa64eep-1, -0x1.9400p-47,
-  0x1.c40ab5fffd02fp-1, -0x1.ed00p-47,
-  0x1.c544778fafd15p-1,  0x1.9660p-44,
-  0x1.c67f12e57d0cbp-1, -0x1.a100p-46,
-  0x1.c7ba88988c1b6p-1, -0x1.8458p-42,
-  0x1.c8f6d9406e733p-1, -0x1.a480p-46,
-  0x1.ca3405751c4dfp-1,  0x1.b000p-51,
-  0x1.cb720dcef9094p-1,  0x1.1400p-47,
-  0x1.ccb0f2e6d1689p-1,  0x1.0200p-48,
-  0x1.cdf0b555dc412p-1,  0x1.3600p-48,
-  0x1.cf3155b5bab3bp-1, -0x1.6900p-47,
-  0x1.d072d4a0789bcp-1,  0x1.9a00p-47,
-  0x1.d1b532b08c8fap-1, -0x1.5e00p-46,
-  0x1.d2f87080d8a85p-1,  0x1.d280p-46,
-  0x1.d43c8eacaa203p-1,  0x1.1a00p-47,
-  0x1.d5818dcfba491p-1,  0x1.f000p-50,
-  0x1.d6c76e862e6a1p-1, -0x1.3a00p-47,
-  0x1.d80e316c9834ep-1, -0x1.cd80p-47,
-  0x1.d955d71ff6090p-1,  0x1.4c00p-48,
-  0x1.da9e603db32aep-1,  0x1.f900p-48,
-  0x1.dbe7cd63a8325p-1,  0x1.9800p-49,
-  0x1.dd321f301b445p-1, -0x1.5200p-48,
-  0x1.de7d5641c05bfp-1, -0x1.d700p-46,
-  0x1.dfc97337b9aecp-1, -0x1.6140p-46,
-  0x1.e11676b197d5ep-1,  0x1.b480p-47,
-  0x1.e264614f5a3e7p-1,  0x1.0ce0p-43,
-  0x1.e3b333b16ee5cp-1,  0x1.c680p-47,
-  0x1.e502ee78b3fb4p-1, -0x1.9300p-47,
-  0x1.e653924676d68p-1, -0x1.5000p-49,
-  0x1.e7a51fbc74c44p-1, -0x1.7f80p-47,
-  0x1.e8f7977cdb726p-1, -0x1.3700p-48,
-  0x1.ea4afa2a490e8p-1,  0x1.5d00p-49,
-  0x1.eb9f4867ccae4p-1,  0x1.61a0p-46,
-  0x1.ecf482d8e680dp-1,  0x1.5500p-48,
-  0x1.ee4aaa2188514p-1,  0x1.6400p-51,
-  0x1.efa1bee615a13p-1, -0x1.e800p-49,
-  0x1.f0f9c1cb64106p-1, -0x1.a880p-48,
-  0x1.f252b376bb963p-1, -0x1.c900p-45,
-  0x1.f3ac948dd7275p-1,  0x1.a000p-53,
-  0x1.f50765b6e4524p-1, -0x1.4f00p-48,
-  0x1.f6632798844fdp-1,  0x1.a800p-51,
-  0x1.f7bfdad9cbe38p-1,  0x1.abc0p-48,
-  0x1.f91d802243c82p-1, -0x1.4600p-50,
-  0x1.fa7c1819e908ep-1, -0x1.b0c0p-47,
-  0x1.fbdba3692d511p-1, -0x1.0e00p-51,
-  0x1.fd3c22b8f7194p-1, -0x1.0de8p-46,
-  0x1.fe9d96b2a23eep-1,  0x1.e430p-49,
-  0x1.0000000000000p+0,  0x0.0000p+0,
-  0x1.00b1afa5abcbep+0, -0x1.3400p-52,
-  0x1.0163da9fb3303p+0, -0x1.2170p-46,
-  0x1.02168143b0282p+0,  0x1.a400p-52,
-  0x1.02c9a3e77806cp+0,  0x1.f980p-49,
-  0x1.037d42e11bbcap+0, -0x1.7400p-51,
-  0x1.04315e86e7f89p+0,  0x1.8300p-50,
-  0x1.04e5f72f65467p+0, -0x1.a3f0p-46,
-  0x1.059b0d315855ap+0, -0x1.2840p-47,
-  0x1.0650a0e3c1f95p+0,  0x1.1600p-48,
-  0x1.0706b29ddf71ap+0,  0x1.5240p-46,
-  0x1.07bd42b72a82dp+0, -0x1.9a00p-49,
-  0x1.0874518759bd0p+0,  0x1.6400p-49,
-  0x1.092bdf66607c8p+0, -0x1.0780p-47,
-  0x1.09e3ecac6f383p+0, -0x1.8000p-54,
-  0x1.0a9c79b1f3930p+0,  0x1.fa00p-48,
-  0x1.0b5586cf988fcp+0, -0x1.ac80p-48,
-  0x1.0c0f145e46c8ap+0,  0x1.9c00p-50,
-  0x1.0cc922b724816p+0,  0x1.5200p-47,
-  0x1.0d83b23395dd8p+0, -0x1.ad00p-48,
-  0x1.0e3ec32d3d1f3p+0,  0x1.bac0p-46,
-  0x1.0efa55fdfa9a6p+0, -0x1.4e80p-47,
-  0x1.0fb66affed2f0p+0, -0x1.d300p-47,
-  0x1.1073028d7234bp+0,  0x1.1500p-48,
-  0x1.11301d0125b5bp+0,  0x1.c000p-49,
-  0x1.11edbab5e2af9p+0,  0x1.6bc0p-46,
-  0x1.12abdc06c31d5p+0,  0x1.8400p-49,
-  0x1.136a814f2047dp+0, -0x1.ed00p-47,
-  0x1.1429aaea92de9p+0,  0x1.8e00p-49,
-  0x1.14e95934f3138p+0,  0x1.b400p-49,
-  0x1.15a98c8a58e71p+0,  0x1.5300p-47,
-  0x1.166a45471c3dfp+0,  0x1.3380p-47,
-  0x1.172b83c7d5211p+0,  0x1.8d40p-45,
-  0x1.17ed48695bb9fp+0, -0x1.5d00p-47,
-  0x1.18af9388c8d93p+0, -0x1.c880p-46,
-  0x1.1972658375d66p+0,  0x1.1f00p-46,
-  0x1.1a35beb6fcba7p+0,  0x1.0480p-46,
-  0x1.1af99f81387e3p+0, -0x1.7390p-43,
-  0x1.1bbe084045d54p+0,  0x1.4e40p-45,
-  0x1.1c82f95281c43p+0, -0x1.a200p-47,
-  0x1.1d4873168b9b2p+0,  0x1.3800p-49,
-  0x1.1e0e75eb44031p+0,  0x1.ac00p-49,
-  0x1.1ed5022fcd938p+0,  0x1.1900p-47,
-  0x1.1f9c18438cdf7p+0, -0x1.b780p-46,
-  0x1.2063b88628d8fp+0,  0x1.d940p-45,
-  0x1.212be3578a81ep+0,  0x1.8000p-50,
-  0x1.21f49917ddd41p+0,  0x1.b340p-45,
-  0x1.22bdda2791323p+0,  0x1.9f80p-46,
-  0x1.2387a6e7561e7p+0, -0x1.9c80p-46,
-  0x1.2451ffb821427p+0,  0x1.2300p-47,
-  0x1.251ce4fb2a602p+0, -0x1.3480p-46,
-  0x1.25e85711eceb0p+0,  0x1.2700p-46,
-  0x1.26b4565e27d16p+0,  0x1.1d00p-46,
-  0x1.2780e341de00fp+0,  0x1.1ee0p-44,
-  0x1.284dfe1f5633ep+0, -0x1.4c00p-46,
-  0x1.291ba7591bb30p+0, -0x1.3d80p-46,
-  0x1.29e9df51fdf09p+0,  0x1.8b00p-47,
-  0x1.2ab8a66d10e9bp+0, -0x1.27c0p-45,
-  0x1.2b87fd0dada3ap+0,  0x1.a340p-45,
-  0x1.2c57e39771af9p+0, -0x1.0800p-46,
-  0x1.2d285a6e402d9p+0, -0x1.ed00p-47,
-  0x1.2df961f641579p+0, -0x1.4200p-48,
-  0x1.2ecafa93e2ecfp+0, -0x1.4980p-45,
-  0x1.2f9d24abd8822p+0, -0x1.6300p-46,
-  0x1.306fe0a31b625p+0, -0x1.2360p-44,
-  0x1.31432edeea50bp+0, -0x1.0df8p-40,
-  0x1.32170fc4cd7b8p+0, -0x1.2480p-45,
-  0x1.32eb83ba8e9a2p+0, -0x1.5980p-45,
-  0x1.33c08b2641766p+0,  0x1.ed00p-46,
-  0x1.3496266e3fa27p+0, -0x1.c000p-50,
-  0x1.356c55f929f0fp+0, -0x1.0d80p-44,
-  0x1.36431a2de88b9p+0,  0x1.2c80p-45,
-  0x1.371a7373aaa39p+0,  0x1.0600p-45,
-  0x1.37f26231e74fep+0, -0x1.6600p-46,
-  0x1.38cae6d05d838p+0, -0x1.ae00p-47,
-  0x1.39a401b713ec3p+0, -0x1.4720p-43,
-  0x1.3a7db34e5a020p+0,  0x1.8200p-47,
-  0x1.3b57fbfec6e95p+0,  0x1.e800p-44,
-  0x1.3c32dc313a8f2p+0,  0x1.f800p-49,
-  0x1.3d0e544ede122p+0, -0x1.7a00p-46,
-  0x1.3dea64c1234bbp+0,  0x1.6300p-45,
-  0x1.3ec70df1c4eccp+0, -0x1.8a60p-43,
-  0x1.3fa4504ac7e8cp+0, -0x1.cdc0p-44,
-  0x1.40822c367a0bbp+0,  0x1.5b80p-45,
-  0x1.4160a21f72e95p+0,  0x1.ec00p-46,
-  0x1.423fb27094646p+0, -0x1.3600p-46,
-  0x1.431f5d950a920p+0,  0x1.3980p-45,
-  0x1.43ffa3f84b9ebp+0,  0x1.a000p-48,
-  0x1.44e0860618919p+0, -0x1.6c00p-48,
-  0x1.45c2042a7d201p+0, -0x1.bc00p-47,
-  0x1.46a41ed1d0016p+0, -0x1.2800p-46,
-  0x1.4786d668b3326p+0,  0x1.0e00p-44,
-  0x1.486a2b5c13c00p+0, -0x1.d400p-45,
-  0x1.494e1e192af04p+0,  0x1.c200p-47,
-  0x1.4a32af0d7d372p+0, -0x1.e500p-46,
-  0x1.4b17dea6db801p+0,  0x1.7800p-47,
-  0x1.4bfdad53629e1p+0, -0x1.3800p-46,
-  0x1.4ce41b817c132p+0,  0x1.0800p-47,
-  0x1.4dcb299fddddbp+0,  0x1.c700p-45,
-  0x1.4eb2d81d8ab96p+0, -0x1.ce00p-46,
-  0x1.4f9b2769d2d02p+0,  0x1.9200p-46,
-  0x1.508417f4531c1p+0, -0x1.8c00p-47,
-  0x1.516daa2cf662ap+0, -0x1.a000p-48,
-  0x1.5257de83f51eap+0,  0x1.a080p-43,
-  0x1.5342b569d4edap+0, -0x1.6d80p-45,
-  0x1.542e2f4f6ac1ap+0, -0x1.2440p-44,
-  0x1.551a4ca5d94dbp+0,  0x1.83c0p-43,
-  0x1.56070dde9116bp+0,  0x1.4b00p-45,
-  0x1.56f4736b529dep+0,  0x1.15a0p-43,
-  0x1.57e27dbe2c40ep+0, -0x1.9e00p-45,
-  0x1.58d12d497c76fp+0, -0x1.3080p-45,
-  0x1.59c0827ff0b4cp+0,  0x1.dec0p-43,
-  0x1.5ab07dd485427p+0, -0x1.4000p-51,
-  0x1.5ba11fba87af4p+0,  0x1.0080p-44,
-  0x1.5c9268a59460bp+0, -0x1.6c80p-45,
-  0x1.5d84590998e3fp+0,  0x1.69a0p-43,
-  0x1.5e76f15ad20e1p+0, -0x1.b400p-46,
-  0x1.5f6a320dcebcap+0,  0x1.7700p-46,
-  0x1.605e1b976dcb8p+0,  0x1.6f80p-45,
-  0x1.6152ae6cdf715p+0,  0x1.1000p-47,
-  0x1.6247eb03a5531p+0, -0x1.5d00p-46,
-  0x1.633dd1d1929b5p+0, -0x1.2d00p-46,
-  0x1.6434634ccc313p+0, -0x1.a800p-49,
-  0x1.652b9febc8efap+0, -0x1.8600p-45,
-  0x1.6623882553397p+0,  0x1.1fe0p-40,
-  0x1.671c1c708328ep+0, -0x1.7200p-44,
-  0x1.68155d44ca97ep+0,  0x1.6800p-49,
-  0x1.690f4b19e9471p+0, -0x1.9780p-45,
+    /*  exp2(z + eps)          eps     */
+    0x1.6a09e667f3d5dp-1, 0x1.9880p-44,  0x1.6b052fa751744p-1, 0x1.8000p-50,
+    0x1.6c012750bd9fep-1, -0x1.8780p-45, 0x1.6cfdcddd476bfp-1, 0x1.ec00p-46,
+    0x1.6dfb23c651a29p-1, -0x1.8000p-50, 0x1.6ef9298593ae3p-1, -0x1.c000p-52,
+    0x1.6ff7df9519386p-1, -0x1.fd80p-45, 0x1.70f7466f42da3p-1, -0x1.c880p-45,
+    0x1.71f75e8ec5fc3p-1, 0x1.3c00p-46,  0x1.72f8286eacf05p-1, -0x1.8300p-44,
+    0x1.73f9a48a58152p-1, -0x1.0c00p-47, 0x1.74fbd35d7ccfcp-1, 0x1.f880p-45,
+    0x1.75feb564267f1p-1, 0x1.3e00p-47,  0x1.77024b1ab6d48p-1, -0x1.7d00p-45,
+    0x1.780694fde5d38p-1, -0x1.d000p-50, 0x1.790b938ac1d00p-1, 0x1.3000p-49,
+    0x1.7a11473eb0178p-1, -0x1.d000p-49, 0x1.7b17b0976d060p-1, 0x1.0400p-45,
+    0x1.7c1ed0130c133p-1, 0x1.0000p-53,  0x1.7d26a62ff8636p-1, -0x1.6900p-45,
+    0x1.7e2f336cf4e3bp-1, -0x1.2e00p-47, 0x1.7f3878491c3e8p-1, -0x1.4580p-45,
+    0x1.80427543e1b4ep-1, 0x1.3000p-44,  0x1.814d2add1071ap-1, 0x1.f000p-47,
+    0x1.82589994ccd7ep-1, -0x1.1c00p-45, 0x1.8364c1eb942d0p-1, 0x1.9d00p-45,
+    0x1.8471a4623cab5p-1, 0x1.7100p-43,  0x1.857f4179f5bbcp-1, 0x1.2600p-45,
+    0x1.868d99b4491afp-1, -0x1.2c40p-44, 0x1.879cad931a395p-1, -0x1.3000p-45,
+    0x1.88ac7d98a65b8p-1, -0x1.a800p-45, 0x1.89bd0a4785800p-1, -0x1.d000p-49,
+    0x1.8ace5422aa223p-1, 0x1.3280p-44,  0x1.8be05bad619fap-1, 0x1.2b40p-43,
+    0x1.8cf3216b54383p-1, -0x1.ed00p-45, 0x1.8e06a5e08664cp-1, -0x1.0500p-45,
+    0x1.8f1ae99157807p-1, 0x1.8280p-45,  0x1.902fed0282c0ep-1, -0x1.cb00p-46,
+    0x1.9145b0b91ff96p-1, -0x1.5e00p-47, 0x1.925c353aa2ff9p-1, 0x1.5400p-48,
+    0x1.93737b0cdc64ap-1, 0x1.7200p-46,  0x1.948b82b5f98aep-1, -0x1.9000p-47,
+    0x1.95a44cbc852cbp-1, 0x1.5680p-45,  0x1.96bdd9a766f21p-1, -0x1.6d00p-44,
+    0x1.97d829fde4e2ap-1, -0x1.1000p-47, 0x1.98f33e47a23a3p-1, 0x1.d000p-45,
+    0x1.9a0f170ca0604p-1, -0x1.8a40p-44, 0x1.9b2bb4d53ff89p-1, 0x1.55c0p-44,
+    0x1.9c49182a3f15bp-1, 0x1.6b80p-45,  0x1.9d674194bb8c5p-1, -0x1.c000p-49,
+    0x1.9e86319e3238ep-1, 0x1.7d00p-46,  0x1.9fa5e8d07f302p-1, 0x1.6400p-46,
+    0x1.a0c667b5de54dp-1, -0x1.5000p-48, 0x1.a1e7aed8eb8f6p-1, 0x1.9e00p-47,
+    0x1.a309bec4a2e27p-1, 0x1.ad80p-45,  0x1.a42c980460a5dp-1, -0x1.af00p-46,
+    0x1.a5503b23e259bp-1, 0x1.b600p-47,  0x1.a674a8af46213p-1, 0x1.8880p-44,
+    0x1.a799e1330b3a7p-1, 0x1.1200p-46,  0x1.a8bfe53c12e8dp-1, 0x1.6c00p-47,
+    0x1.a9e6b5579fcd2p-1, -0x1.9b80p-45, 0x1.ab0e521356fb8p-1, 0x1.b700p-45,
+    0x1.ac36bbfd3f381p-1, 0x1.9000p-50,  0x1.ad5ff3a3c2780p-1, 0x1.4000p-49,
+    0x1.ae89f995ad2a3p-1, -0x1.c900p-45, 0x1.afb4ce622f367p-1, 0x1.6500p-46,
+    0x1.b0e07298db790p-1, 0x1.fd40p-45,  0x1.b20ce6c9a89a9p-1, 0x1.2700p-46,
+    0x1.b33a2b84f1a4bp-1, 0x1.d470p-43,  0x1.b468415b747e7p-1, -0x1.8380p-44,
+    0x1.b59728de5593ap-1, 0x1.8000p-54,  0x1.b6c6e29f1c56ap-1, 0x1.ad00p-47,
+    0x1.b7f76f2fb5e50p-1, 0x1.e800p-50,  0x1.b928cf22749b2p-1, -0x1.4c00p-47,
+    0x1.ba5b030a10603p-1, -0x1.d700p-47, 0x1.bb8e0b79a6f66p-1, 0x1.d900p-47,
+    0x1.bcc1e904bc1ffp-1, 0x1.2a00p-47,  0x1.bdf69c3f3a16fp-1, -0x1.f780p-46,
+    0x1.bf2c25bd71db8p-1, -0x1.0a00p-46, 0x1.c06286141b2e9p-1, -0x1.1400p-46,
+    0x1.c199bdd8552e0p-1, 0x1.be00p-47,  0x1.c2d1cd9fa64eep-1, -0x1.9400p-47,
+    0x1.c40ab5fffd02fp-1, -0x1.ed00p-47, 0x1.c544778fafd15p-1, 0x1.9660p-44,
+    0x1.c67f12e57d0cbp-1, -0x1.a100p-46, 0x1.c7ba88988c1b6p-1, -0x1.8458p-42,
+    0x1.c8f6d9406e733p-1, -0x1.a480p-46, 0x1.ca3405751c4dfp-1, 0x1.b000p-51,
+    0x1.cb720dcef9094p-1, 0x1.1400p-47,  0x1.ccb0f2e6d1689p-1, 0x1.0200p-48,
+    0x1.cdf0b555dc412p-1, 0x1.3600p-48,  0x1.cf3155b5bab3bp-1, -0x1.6900p-47,
+    0x1.d072d4a0789bcp-1, 0x1.9a00p-47,  0x1.d1b532b08c8fap-1, -0x1.5e00p-46,
+    0x1.d2f87080d8a85p-1, 0x1.d280p-46,  0x1.d43c8eacaa203p-1, 0x1.1a00p-47,
+    0x1.d5818dcfba491p-1, 0x1.f000p-50,  0x1.d6c76e862e6a1p-1, -0x1.3a00p-47,
+    0x1.d80e316c9834ep-1, -0x1.cd80p-47, 0x1.d955d71ff6090p-1, 0x1.4c00p-48,
+    0x1.da9e603db32aep-1, 0x1.f900p-48,  0x1.dbe7cd63a8325p-1, 0x1.9800p-49,
+    0x1.dd321f301b445p-1, -0x1.5200p-48, 0x1.de7d5641c05bfp-1, -0x1.d700p-46,
+    0x1.dfc97337b9aecp-1, -0x1.6140p-46, 0x1.e11676b197d5ep-1, 0x1.b480p-47,
+    0x1.e264614f5a3e7p-1, 0x1.0ce0p-43,  0x1.e3b333b16ee5cp-1, 0x1.c680p-47,
+    0x1.e502ee78b3fb4p-1, -0x1.9300p-47, 0x1.e653924676d68p-1, -0x1.5000p-49,
+    0x1.e7a51fbc74c44p-1, -0x1.7f80p-47, 0x1.e8f7977cdb726p-1, -0x1.3700p-48,
+    0x1.ea4afa2a490e8p-1, 0x1.5d00p-49,  0x1.eb9f4867ccae4p-1, 0x1.61a0p-46,
+    0x1.ecf482d8e680dp-1, 0x1.5500p-48,  0x1.ee4aaa2188514p-1, 0x1.6400p-51,
+    0x1.efa1bee615a13p-1, -0x1.e800p-49, 0x1.f0f9c1cb64106p-1, -0x1.a880p-48,
+    0x1.f252b376bb963p-1, -0x1.c900p-45, 0x1.f3ac948dd7275p-1, 0x1.a000p-53,
+    0x1.f50765b6e4524p-1, -0x1.4f00p-48, 0x1.f6632798844fdp-1, 0x1.a800p-51,
+    0x1.f7bfdad9cbe38p-1, 0x1.abc0p-48,  0x1.f91d802243c82p-1, -0x1.4600p-50,
+    0x1.fa7c1819e908ep-1, -0x1.b0c0p-47, 0x1.fbdba3692d511p-1, -0x1.0e00p-51,
+    0x1.fd3c22b8f7194p-1, -0x1.0de8p-46, 0x1.fe9d96b2a23eep-1, 0x1.e430p-49,
+    0x1.0000000000000p+0, 0x0.0000p+0,   0x1.00b1afa5abcbep+0, -0x1.3400p-52,
+    0x1.0163da9fb3303p+0, -0x1.2170p-46, 0x1.02168143b0282p+0, 0x1.a400p-52,
+    0x1.02c9a3e77806cp+0, 0x1.f980p-49,  0x1.037d42e11bbcap+0, -0x1.7400p-51,
+    0x1.04315e86e7f89p+0, 0x1.8300p-50,  0x1.04e5f72f65467p+0, -0x1.a3f0p-46,
+    0x1.059b0d315855ap+0, -0x1.2840p-47, 0x1.0650a0e3c1f95p+0, 0x1.1600p-48,
+    0x1.0706b29ddf71ap+0, 0x1.5240p-46,  0x1.07bd42b72a82dp+0, -0x1.9a00p-49,
+    0x1.0874518759bd0p+0, 0x1.6400p-49,  0x1.092bdf66607c8p+0, -0x1.0780p-47,
+    0x1.09e3ecac6f383p+0, -0x1.8000p-54, 0x1.0a9c79b1f3930p+0, 0x1.fa00p-48,
+    0x1.0b5586cf988fcp+0, -0x1.ac80p-48, 0x1.0c0f145e46c8ap+0, 0x1.9c00p-50,
+    0x1.0cc922b724816p+0, 0x1.5200p-47,  0x1.0d83b23395dd8p+0, -0x1.ad00p-48,
+    0x1.0e3ec32d3d1f3p+0, 0x1.bac0p-46,  0x1.0efa55fdfa9a6p+0, -0x1.4e80p-47,
+    0x1.0fb66affed2f0p+0, -0x1.d300p-47, 0x1.1073028d7234bp+0, 0x1.1500p-48,
+    0x1.11301d0125b5bp+0, 0x1.c000p-49,  0x1.11edbab5e2af9p+0, 0x1.6bc0p-46,
+    0x1.12abdc06c31d5p+0, 0x1.8400p-49,  0x1.136a814f2047dp+0, -0x1.ed00p-47,
+    0x1.1429aaea92de9p+0, 0x1.8e00p-49,  0x1.14e95934f3138p+0, 0x1.b400p-49,
+    0x1.15a98c8a58e71p+0, 0x1.5300p-47,  0x1.166a45471c3dfp+0, 0x1.3380p-47,
+    0x1.172b83c7d5211p+0, 0x1.8d40p-45,  0x1.17ed48695bb9fp+0, -0x1.5d00p-47,
+    0x1.18af9388c8d93p+0, -0x1.c880p-46, 0x1.1972658375d66p+0, 0x1.1f00p-46,
+    0x1.1a35beb6fcba7p+0, 0x1.0480p-46,  0x1.1af99f81387e3p+0, -0x1.7390p-43,
+    0x1.1bbe084045d54p+0, 0x1.4e40p-45,  0x1.1c82f95281c43p+0, -0x1.a200p-47,
+    0x1.1d4873168b9b2p+0, 0x1.3800p-49,  0x1.1e0e75eb44031p+0, 0x1.ac00p-49,
+    0x1.1ed5022fcd938p+0, 0x1.1900p-47,  0x1.1f9c18438cdf7p+0, -0x1.b780p-46,
+    0x1.2063b88628d8fp+0, 0x1.d940p-45,  0x1.212be3578a81ep+0, 0x1.8000p-50,
+    0x1.21f49917ddd41p+0, 0x1.b340p-45,  0x1.22bdda2791323p+0, 0x1.9f80p-46,
+    0x1.2387a6e7561e7p+0, -0x1.9c80p-46, 0x1.2451ffb821427p+0, 0x1.2300p-47,
+    0x1.251ce4fb2a602p+0, -0x1.3480p-46, 0x1.25e85711eceb0p+0, 0x1.2700p-46,
+    0x1.26b4565e27d16p+0, 0x1.1d00p-46,  0x1.2780e341de00fp+0, 0x1.1ee0p-44,
+    0x1.284dfe1f5633ep+0, -0x1.4c00p-46, 0x1.291ba7591bb30p+0, -0x1.3d80p-46,
+    0x1.29e9df51fdf09p+0, 0x1.8b00p-47,  0x1.2ab8a66d10e9bp+0, -0x1.27c0p-45,
+    0x1.2b87fd0dada3ap+0, 0x1.a340p-45,  0x1.2c57e39771af9p+0, -0x1.0800p-46,
+    0x1.2d285a6e402d9p+0, -0x1.ed00p-47, 0x1.2df961f641579p+0, -0x1.4200p-48,
+    0x1.2ecafa93e2ecfp+0, -0x1.4980p-45, 0x1.2f9d24abd8822p+0, -0x1.6300p-46,
+    0x1.306fe0a31b625p+0, -0x1.2360p-44, 0x1.31432edeea50bp+0, -0x1.0df8p-40,
+    0x1.32170fc4cd7b8p+0, -0x1.2480p-45, 0x1.32eb83ba8e9a2p+0, -0x1.5980p-45,
+    0x1.33c08b2641766p+0, 0x1.ed00p-46,  0x1.3496266e3fa27p+0, -0x1.c000p-50,
+    0x1.356c55f929f0fp+0, -0x1.0d80p-44, 0x1.36431a2de88b9p+0, 0x1.2c80p-45,
+    0x1.371a7373aaa39p+0, 0x1.0600p-45,  0x1.37f26231e74fep+0, -0x1.6600p-46,
+    0x1.38cae6d05d838p+0, -0x1.ae00p-47, 0x1.39a401b713ec3p+0, -0x1.4720p-43,
+    0x1.3a7db34e5a020p+0, 0x1.8200p-47,  0x1.3b57fbfec6e95p+0, 0x1.e800p-44,
+    0x1.3c32dc313a8f2p+0, 0x1.f800p-49,  0x1.3d0e544ede122p+0, -0x1.7a00p-46,
+    0x1.3dea64c1234bbp+0, 0x1.6300p-45,  0x1.3ec70df1c4eccp+0, -0x1.8a60p-43,
+    0x1.3fa4504ac7e8cp+0, -0x1.cdc0p-44, 0x1.40822c367a0bbp+0, 0x1.5b80p-45,
+    0x1.4160a21f72e95p+0, 0x1.ec00p-46,  0x1.423fb27094646p+0, -0x1.3600p-46,
+    0x1.431f5d950a920p+0, 0x1.3980p-45,  0x1.43ffa3f84b9ebp+0, 0x1.a000p-48,
+    0x1.44e0860618919p+0, -0x1.6c00p-48, 0x1.45c2042a7d201p+0, -0x1.bc00p-47,
+    0x1.46a41ed1d0016p+0, -0x1.2800p-46, 0x1.4786d668b3326p+0, 0x1.0e00p-44,
+    0x1.486a2b5c13c00p+0, -0x1.d400p-45, 0x1.494e1e192af04p+0, 0x1.c200p-47,
+    0x1.4a32af0d7d372p+0, -0x1.e500p-46, 0x1.4b17dea6db801p+0, 0x1.7800p-47,
+    0x1.4bfdad53629e1p+0, -0x1.3800p-46, 0x1.4ce41b817c132p+0, 0x1.0800p-47,
+    0x1.4dcb299fddddbp+0, 0x1.c700p-45,  0x1.4eb2d81d8ab96p+0, -0x1.ce00p-46,
+    0x1.4f9b2769d2d02p+0, 0x1.9200p-46,  0x1.508417f4531c1p+0, -0x1.8c00p-47,
+    0x1.516daa2cf662ap+0, -0x1.a000p-48, 0x1.5257de83f51eap+0, 0x1.a080p-43,
+    0x1.5342b569d4edap+0, -0x1.6d80p-45, 0x1.542e2f4f6ac1ap+0, -0x1.2440p-44,
+    0x1.551a4ca5d94dbp+0, 0x1.83c0p-43,  0x1.56070dde9116bp+0, 0x1.4b00p-45,
+    0x1.56f4736b529dep+0, 0x1.15a0p-43,  0x1.57e27dbe2c40ep+0, -0x1.9e00p-45,
+    0x1.58d12d497c76fp+0, -0x1.3080p-45, 0x1.59c0827ff0b4cp+0, 0x1.dec0p-43,
+    0x1.5ab07dd485427p+0, -0x1.4000p-51, 0x1.5ba11fba87af4p+0, 0x1.0080p-44,
+    0x1.5c9268a59460bp+0, -0x1.6c80p-45, 0x1.5d84590998e3fp+0, 0x1.69a0p-43,
+    0x1.5e76f15ad20e1p+0, -0x1.b400p-46, 0x1.5f6a320dcebcap+0, 0x1.7700p-46,
+    0x1.605e1b976dcb8p+0, 0x1.6f80p-45,  0x1.6152ae6cdf715p+0, 0x1.1000p-47,
+    0x1.6247eb03a5531p+0, -0x1.5d00p-46, 0x1.633dd1d1929b5p+0, -0x1.2d00p-46,
+    0x1.6434634ccc313p+0, -0x1.a800p-49, 0x1.652b9febc8efap+0, -0x1.8600p-45,
+    0x1.6623882553397p+0, 0x1.1fe0p-40,  0x1.671c1c708328ep+0, -0x1.7200p-44,
+    0x1.68155d44ca97ep+0, 0x1.6800p-49,  0x1.690f4b19e9471p+0, -0x1.9780p-45,
 };
 
 /*
@@ -328,48 +196,53 @@
  *      Gal, S. and Bachelis, B.  An Accurate Elementary Mathematical Library
  *      for the IEEE Floating Point Standard.  TOMS 17(1), 26-46 (1991).
  */
-double exp2(double x)
-{
-	double_t r, t, z;
-	uint32_t ix, i0;
-	union {double f; uint64_t i;} u = {x};
-	union {uint32_t u; int32_t i;} k;
+double exp2(double x) {
+  double_t r, t, z;
+  uint32_t ix, i0;
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  union {
+    uint32_t u;
+    int32_t i;
+  } k;
 
-	/* Filter out exceptional cases. */
-	ix = u.i>>32 & 0x7fffffff;
-	if (ix >= 0x408ff000) {  /* |x| >= 1022 or nan */
-		if (ix >= 0x40900000 && u.i>>63 == 0) {  /* x >= 1024 or nan */
-			/* overflow */
-			x *= 0x1p1023;
-			return x;
-		}
-		if (ix >= 0x7ff00000)  /* -inf or -nan */
-			return -1/x;
-		if (u.i>>63) {  /* x <= -1022 */
-			/* underflow */
-			if (x <= -1075 || x - 0x1p52 + 0x1p52 != x)
-				FORCE_EVAL((float)(-0x1p-149/x));
-			if (x <= -1075)
-				return 0;
-		}
-	} else if (ix < 0x3c900000) {  /* |x| < 0x1p-54 */
-		return 1.0 + x;
-	}
+  /* Filter out exceptional cases. */
+  ix = u.i >> 32 & 0x7fffffff;
+  if (ix >= 0x408ff000) {                     /* |x| >= 1022 or nan */
+    if (ix >= 0x40900000 && u.i >> 63 == 0) { /* x >= 1024 or nan */
+      /* overflow */
+      x *= 0x1p1023;
+      return x;
+    }
+    if (ix >= 0x7ff00000) /* -inf or -nan */
+      return -1 / x;
+    if (u.i >> 63) { /* x <= -1022 */
+      /* underflow */
+      if (x <= -1075 || x - 0x1p52 + 0x1p52 != x)
+        FORCE_EVAL((float)(-0x1p-149 / x));
+      if (x <= -1075)
+        return 0;
+    }
+  } else if (ix < 0x3c900000) { /* |x| < 0x1p-54 */
+    return 1.0 + x;
+  }
 
-	/* Reduce x, computing z, i0, and k. */
-	u.f = x + redux;
-	i0 = u.i;
-	i0 += TBLSIZE / 2;
-	k.u = i0 / TBLSIZE * TBLSIZE;
-	k.i /= TBLSIZE;
-	i0 %= TBLSIZE;
-	u.f -= redux;
-	z = x - u.f;
+  /* Reduce x, computing z, i0, and k. */
+  u.f = x + redux;
+  i0 = u.i;
+  i0 += TBLSIZE / 2;
+  k.u = i0 / TBLSIZE * TBLSIZE;
+  k.i /= TBLSIZE;
+  i0 %= TBLSIZE;
+  u.f -= redux;
+  z = x - u.f;
 
-	/* Compute r = exp2(y) = exp2t[i0] * p(z - eps[i]). */
-	t = tbl[2*i0];       /* exp2t[i0] */
-	z -= tbl[2*i0 + 1];  /* eps[i0]   */
-	r = t + t * z * (P1 + z * (P2 + z * (P3 + z * (P4 + z * P5))));
+  /* Compute r = exp2(y) = exp2t[i0] * p(z - eps[i]). */
+  t = tbl[2 * i0];      /* exp2t[i0] */
+  z -= tbl[2 * i0 + 1]; /* eps[i0]   */
+  r = t + t * z * (P1 + z * (P2 + z * (P3 + z * (P4 + z * P5))));
 
-	return scalbn(r, k.i);
+  return scalbn(r, k.i);
 }
diff --git a/fusl/src/math/exp2f.c b/fusl/src/math/exp2f.c
index cf6126e..e88fa69 100644
--- a/fusl/src/math/exp2f.c
+++ b/fusl/src/math/exp2f.c
@@ -29,30 +29,17 @@
 
 #define TBLSIZE 16
 
-static const float
-redux = 0x1.8p23f / TBLSIZE,
-P1    = 0x1.62e430p-1f,
-P2    = 0x1.ebfbe0p-3f,
-P3    = 0x1.c6b348p-5f,
-P4    = 0x1.3b2c9cp-7f;
+static const float redux = 0x1.8p23f / TBLSIZE, P1 = 0x1.62e430p-1f,
+                   P2 = 0x1.ebfbe0p-3f, P3 = 0x1.c6b348p-5f,
+                   P4 = 0x1.3b2c9cp-7f;
 
 static const double exp2ft[TBLSIZE] = {
-  0x1.6a09e667f3bcdp-1,
-  0x1.7a11473eb0187p-1,
-  0x1.8ace5422aa0dbp-1,
-  0x1.9c49182a3f090p-1,
-  0x1.ae89f995ad3adp-1,
-  0x1.c199bdd85529cp-1,
-  0x1.d5818dcfba487p-1,
-  0x1.ea4afa2a490dap-1,
-  0x1.0000000000000p+0,
-  0x1.0b5586cf9890fp+0,
-  0x1.172b83c7d517bp+0,
-  0x1.2387a6e756238p+0,
-  0x1.306fe0a31b715p+0,
-  0x1.3dea64c123422p+0,
-  0x1.4bfdad5362a27p+0,
-  0x1.5ab07dd485429p+0,
+    0x1.6a09e667f3bcdp-1, 0x1.7a11473eb0187p-1, 0x1.8ace5422aa0dbp-1,
+    0x1.9c49182a3f090p-1, 0x1.ae89f995ad3adp-1, 0x1.c199bdd85529cp-1,
+    0x1.d5818dcfba487p-1, 0x1.ea4afa2a490dap-1, 0x1.0000000000000p+0,
+    0x1.0b5586cf9890fp+0, 0x1.172b83c7d517bp+0, 0x1.2387a6e756238p+0,
+    0x1.306fe0a31b715p+0, 0x1.3dea64c123422p+0, 0x1.4bfdad5362a27p+0,
+    0x1.5ab07dd485429p+0,
 };
 
 /*
@@ -81,44 +68,49 @@
  *      Tang, P.  Table-driven Implementation of the Exponential Function
  *      in IEEE Floating-Point Arithmetic.  TOMS 15(2), 144-157 (1989).
  */
-float exp2f(float x)
-{
-	double_t t, r, z;
-	union {float f; uint32_t i;} u = {x};
-	union {double f; uint64_t i;} uk;
-	uint32_t ix, i0, k;
+float exp2f(float x) {
+  double_t t, r, z;
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  union {
+    double f;
+    uint64_t i;
+  } uk;
+  uint32_t ix, i0, k;
 
-	/* Filter out exceptional cases. */
-	ix = u.i & 0x7fffffff;
-	if (ix > 0x42fc0000) {  /* |x| > 126 */
-		if (u.i >= 0x43000000 && u.i < 0x80000000) {  /* x >= 128 */
-			x *= 0x1p127f;
-			return x;
-		}
-		if (u.i >= 0x80000000) {  /* x < -126 */
-			if (u.i >= 0xc3160000 || (u.i & 0x0000ffff))
-				FORCE_EVAL(-0x1p-149f/x);
-			if (u.i >= 0xc3160000)  /* x <= -150 */
-				return 0;
-		}
-	} else if (ix <= 0x33000000) {  /* |x| <= 0x1p-25 */
-		return 1.0f + x;
-	}
+  /* Filter out exceptional cases. */
+  ix = u.i & 0x7fffffff;
+  if (ix > 0x42fc0000) {                         /* |x| > 126 */
+    if (u.i >= 0x43000000 && u.i < 0x80000000) { /* x >= 128 */
+      x *= 0x1p127f;
+      return x;
+    }
+    if (u.i >= 0x80000000) { /* x < -126 */
+      if (u.i >= 0xc3160000 || (u.i & 0x0000ffff))
+        FORCE_EVAL(-0x1p-149f / x);
+      if (u.i >= 0xc3160000) /* x <= -150 */
+        return 0;
+    }
+  } else if (ix <= 0x33000000) { /* |x| <= 0x1p-25 */
+    return 1.0f + x;
+  }
 
-	/* Reduce x, computing z, i0, and k. */
-	u.f = x + redux;
-	i0 = u.i;
-	i0 += TBLSIZE / 2;
-	k = i0 / TBLSIZE;
-	uk.i = (uint64_t)(0x3ff + k)<<52;
-	i0 &= TBLSIZE - 1;
-	u.f -= redux;
-	z = x - u.f;
-	/* Compute r = exp2(y) = exp2ft[i0] * p(z). */
-	r = exp2ft[i0];
-	t = r * z;
-	r = r + t * (P1 + z * P2) + t * (z * z) * (P3 + z * P4);
+  /* Reduce x, computing z, i0, and k. */
+  u.f = x + redux;
+  i0 = u.i;
+  i0 += TBLSIZE / 2;
+  k = i0 / TBLSIZE;
+  uk.i = (uint64_t)(0x3ff + k) << 52;
+  i0 &= TBLSIZE - 1;
+  u.f -= redux;
+  z = x - u.f;
+  /* Compute r = exp2(y) = exp2ft[i0] * p(z). */
+  r = exp2ft[i0];
+  t = r * z;
+  r = r + t * (P1 + z * P2) + t * (z * z) * (P3 + z * P4);
 
-	/* Scale by 2**k */
-	return r * uk.f;
+  /* Scale by 2**k */
+  return r * uk.f;
 }
diff --git a/fusl/src/math/exp2l.c b/fusl/src/math/exp2l.c
index 3565c1e..0528a47 100644
--- a/fusl/src/math/exp2l.c
+++ b/fusl/src/math/exp2l.c
@@ -1,4 +1,5 @@
-/* origin: FreeBSD /usr/src/lib/msun/ld80/s_exp2l.c and /usr/src/lib/msun/ld128/s_exp2l.c */
+/* origin: FreeBSD /usr/src/lib/msun/ld80/s_exp2l.c and
+ * /usr/src/lib/msun/ld128/s_exp2l.c */
 /*-
  * Copyright (c) 2005-2008 David Schultz <das@FreeBSD.ORG>
  * All rights reserved.
@@ -28,152 +29,275 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double exp2l(long double x)
-{
-	return exp2(x);
+long double exp2l(long double x) {
+  return exp2(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
 #define TBLBITS 7
 #define TBLSIZE (1 << TBLBITS)
 
-static const double
-redux = 0x1.8p63 / TBLSIZE,
-P1    = 0x1.62e42fefa39efp-1,
-P2    = 0x1.ebfbdff82c58fp-3,
-P3    = 0x1.c6b08d7049fap-5,
-P4    = 0x1.3b2ab6fba4da5p-7,
-P5    = 0x1.5d8804780a736p-10,
-P6    = 0x1.430918835e33dp-13;
+static const double redux = 0x1.8p63 / TBLSIZE, P1 = 0x1.62e42fefa39efp-1,
+                    P2 = 0x1.ebfbdff82c58fp-3, P3 = 0x1.c6b08d7049fap-5,
+                    P4 = 0x1.3b2ab6fba4da5p-7, P5 = 0x1.5d8804780a736p-10,
+                    P6 = 0x1.430918835e33dp-13;
 
 static const double tbl[TBLSIZE * 2] = {
-	0x1.6a09e667f3bcdp-1,   -0x1.bdd3413b2648p-55,
-	0x1.6c012750bdabfp-1,   -0x1.2895667ff0cp-57,
-	0x1.6dfb23c651a2fp-1,   -0x1.bbe3a683c88p-58,
-	0x1.6ff7df9519484p-1,   -0x1.83c0f25860fp-56,
-	0x1.71f75e8ec5f74p-1,   -0x1.16e4786887bp-56,
-	0x1.73f9a48a58174p-1,   -0x1.0a8d96c65d5p-55,
-	0x1.75feb564267c9p-1,   -0x1.0245957316ep-55,
-	0x1.780694fde5d3fp-1,    0x1.866b80a0216p-55,
-	0x1.7a11473eb0187p-1,   -0x1.41577ee0499p-56,
-	0x1.7c1ed0130c132p-1,    0x1.f124cd1164ep-55,
-	0x1.7e2f336cf4e62p-1,    0x1.05d02ba157ap-57,
-	0x1.80427543e1a12p-1,   -0x1.27c86626d97p-55,
-	0x1.82589994cce13p-1,   -0x1.d4c1dd41533p-55,
-	0x1.8471a4623c7adp-1,   -0x1.8d684a341cep-56,
-	0x1.868d99b4492edp-1,   -0x1.fc6f89bd4f68p-55,
-	0x1.88ac7d98a6699p-1,    0x1.994c2f37cb5p-55,
-	0x1.8ace5422aa0dbp-1,    0x1.6e9f156864bp-55,
-	0x1.8cf3216b5448cp-1,   -0x1.0d55e32e9e4p-57,
-	0x1.8f1ae99157736p-1,    0x1.5cc13a2e397p-56,
-	0x1.9145b0b91ffc6p-1,   -0x1.dd6792e5825p-55,
-	0x1.93737b0cdc5e5p-1,   -0x1.75fc781b58p-58,
-	0x1.95a44cbc8520fp-1,   -0x1.64b7c96a5fp-57,
-	0x1.97d829fde4e5p-1,    -0x1.d185b7c1b86p-55,
-	0x1.9a0f170ca07bap-1,   -0x1.173bd91cee6p-55,
-	0x1.9c49182a3f09p-1,     0x1.c7c46b071f2p-57,
-	0x1.9e86319e32323p-1,    0x1.824ca78e64cp-57,
-	0x1.a0c667b5de565p-1,   -0x1.359495d1cd5p-55,
-	0x1.a309bec4a2d33p-1,    0x1.6305c7ddc368p-55,
-	0x1.a5503b23e255dp-1,   -0x1.d2f6edb8d42p-55,
-	0x1.a799e1330b358p-1,    0x1.bcb7ecac564p-55,
-	0x1.a9e6b5579fdbfp-1,    0x1.0fac90ef7fdp-55,
-	0x1.ac36bbfd3f37ap-1,   -0x1.f9234cae76dp-56,
-	0x1.ae89f995ad3adp-1,    0x1.7a1cd345dcc8p-55,
-	0x1.b0e07298db666p-1,   -0x1.bdef54c80e4p-55,
-	0x1.b33a2b84f15fbp-1,   -0x1.2805e3084d8p-58,
-	0x1.b59728de5593ap-1,   -0x1.c71dfbbba6ep-55,
-	0x1.b7f76f2fb5e47p-1,   -0x1.5584f7e54acp-57,
-	0x1.ba5b030a1064ap-1,   -0x1.efcd30e5429p-55,
-	0x1.bcc1e904bc1d2p-1,    0x1.23dd07a2d9fp-56,
-	0x1.bf2c25bd71e09p-1,   -0x1.efdca3f6b9c8p-55,
-	0x1.c199bdd85529cp-1,    0x1.11065895049p-56,
-	0x1.c40ab5fffd07ap-1,    0x1.b4537e083c6p-55,
-	0x1.c67f12e57d14bp-1,    0x1.2884dff483c8p-55,
-	0x1.c8f6d9406e7b5p-1,    0x1.1acbc48805cp-57,
-	0x1.cb720dcef9069p-1,    0x1.503cbd1e94ap-57,
-	0x1.cdf0b555dc3fap-1,   -0x1.dd83b53829dp-56,
-	0x1.d072d4a07897cp-1,   -0x1.cbc3743797a8p-55,
-	0x1.d2f87080d89f2p-1,   -0x1.d487b719d858p-55,
-	0x1.d5818dcfba487p-1,    0x1.2ed02d75b37p-56,
-	0x1.d80e316c98398p-1,   -0x1.11ec18bedep-55,
-	0x1.da9e603db3285p-1,    0x1.c2300696db5p-55,
-	0x1.dd321f301b46p-1,     0x1.2da5778f019p-55,
-	0x1.dfc97337b9b5fp-1,   -0x1.1a5cd4f184b8p-55,
-	0x1.e264614f5a129p-1,   -0x1.7b627817a148p-55,
-	0x1.e502ee78b3ff6p-1,    0x1.39e8980a9cdp-56,
-	0x1.e7a51fbc74c83p-1,    0x1.2d522ca0c8ep-55,
-	0x1.ea4afa2a490dap-1,   -0x1.e9c23179c288p-55,
-	0x1.ecf482d8e67f1p-1,   -0x1.c93f3b411ad8p-55,
-	0x1.efa1bee615a27p-1,    0x1.dc7f486a4b68p-55,
-	0x1.f252b376bba97p-1,    0x1.3a1a5bf0d8e8p-55,
-	0x1.f50765b6e454p-1,     0x1.9d3e12dd8a18p-55,
-	0x1.f7bfdad9cbe14p-1,   -0x1.dbb12d00635p-55,
-	0x1.fa7c1819e90d8p-1,    0x1.74853f3a593p-56,
-	0x1.fd3c22b8f71f1p-1,    0x1.2eb74966578p-58,
-	0x1p+0,                  0x0p+0,
-	0x1.0163da9fb3335p+0,    0x1.b61299ab8cd8p-54,
-	0x1.02c9a3e778061p+0,   -0x1.19083535b08p-56,
-	0x1.04315e86e7f85p+0,   -0x1.0a31c1977c98p-54,
-	0x1.059b0d3158574p+0,    0x1.d73e2a475b4p-55,
-	0x1.0706b29ddf6dep+0,   -0x1.c91dfe2b13cp-55,
-	0x1.0874518759bc8p+0,    0x1.186be4bb284p-57,
-	0x1.09e3ecac6f383p+0,    0x1.14878183161p-54,
-	0x1.0b5586cf9890fp+0,    0x1.8a62e4adc61p-54,
-	0x1.0cc922b7247f7p+0,    0x1.01edc16e24f8p-54,
-	0x1.0e3ec32d3d1a2p+0,    0x1.03a1727c58p-59,
-	0x1.0fb66affed31bp+0,   -0x1.b9bedc44ebcp-57,
-	0x1.11301d0125b51p+0,   -0x1.6c51039449bp-54,
-	0x1.12abdc06c31ccp+0,   -0x1.1b514b36ca8p-58,
-	0x1.1429aaea92dep+0,    -0x1.32fbf9af1368p-54,
-	0x1.15a98c8a58e51p+0,    0x1.2406ab9eeabp-55,
-	0x1.172b83c7d517bp+0,   -0x1.19041b9d78ap-55,
-	0x1.18af9388c8deap+0,   -0x1.11023d1970f8p-54,
-	0x1.1a35beb6fcb75p+0,    0x1.e5b4c7b4969p-55,
-	0x1.1bbe084045cd4p+0,   -0x1.95386352ef6p-54,
-	0x1.1d4873168b9aap+0,    0x1.e016e00a264p-54,
-	0x1.1ed5022fcd91dp+0,   -0x1.1df98027bb78p-54,
-	0x1.2063b88628cd6p+0,    0x1.dc775814a85p-55,
-	0x1.21f49917ddc96p+0,    0x1.2a97e9494a6p-55,
-	0x1.2387a6e756238p+0,    0x1.9b07eb6c7058p-54,
-	0x1.251ce4fb2a63fp+0,    0x1.ac155bef4f5p-55,
-	0x1.26b4565e27cddp+0,    0x1.2bd339940eap-55,
-	0x1.284dfe1f56381p+0,   -0x1.a4c3a8c3f0d8p-54,
-	0x1.29e9df51fdee1p+0,    0x1.612e8afad12p-55,
-	0x1.2b87fd0dad99p+0,    -0x1.10adcd6382p-59,
-	0x1.2d285a6e4030bp+0,    0x1.0024754db42p-54,
-	0x1.2ecafa93e2f56p+0,    0x1.1ca0f45d524p-56,
-	0x1.306fe0a31b715p+0,    0x1.6f46ad23183p-55,
-	0x1.32170fc4cd831p+0,    0x1.a9ce78e1804p-55,
-	0x1.33c08b26416ffp+0,    0x1.327218436598p-54,
-	0x1.356c55f929ff1p+0,   -0x1.b5cee5c4e46p-55,
-	0x1.371a7373aa9cbp+0,   -0x1.63aeabf42ebp-54,
-	0x1.38cae6d05d866p+0,   -0x1.e958d3c99048p-54,
-	0x1.3a7db34e59ff7p+0,   -0x1.5e436d661f6p-56,
-	0x1.3c32dc313a8e5p+0,   -0x1.efff8375d2ap-54,
-	0x1.3dea64c123422p+0,    0x1.ada0911f09fp-55,
-	0x1.3fa4504ac801cp+0,   -0x1.7d023f956fap-54,
-	0x1.4160a21f72e2ap+0,   -0x1.ef3691c309p-58,
-	0x1.431f5d950a897p+0,   -0x1.1c7dde35f7ap-55,
-	0x1.44e086061892dp+0,    0x1.89b7a04ef8p-59,
-	0x1.46a41ed1d0057p+0,    0x1.c944bd1648a8p-54,
-	0x1.486a2b5c13cdp+0,     0x1.3c1a3b69062p-56,
-	0x1.4a32af0d7d3dep+0,    0x1.9cb62f3d1be8p-54,
-	0x1.4bfdad5362a27p+0,    0x1.d4397afec42p-56,
-	0x1.4dcb299fddd0dp+0,    0x1.8ecdbbc6a78p-54,
-	0x1.4f9b2769d2ca7p+0,   -0x1.4b309d25958p-54,
-	0x1.516daa2cf6642p+0,   -0x1.f768569bd94p-55,
-	0x1.5342b569d4f82p+0,   -0x1.07abe1db13dp-55,
-	0x1.551a4ca5d920fp+0,   -0x1.d689cefede6p-55,
-	0x1.56f4736b527dap+0,    0x1.9bb2c011d938p-54,
-	0x1.58d12d497c7fdp+0,    0x1.295e15b9a1ep-55,
-	0x1.5ab07dd485429p+0,    0x1.6324c0546478p-54,
-	0x1.5c9268a5946b7p+0,    0x1.c4b1b81698p-60,
-	0x1.5e76f15ad2148p+0,    0x1.ba6f93080e68p-54,
-	0x1.605e1b976dc09p+0,   -0x1.3e2429b56de8p-54,
-	0x1.6247eb03a5585p+0,   -0x1.383c17e40b48p-54,
-	0x1.6434634ccc32p+0,    -0x1.c483c759d89p-55,
-	0x1.6623882552225p+0,   -0x1.bb60987591cp-54,
-	0x1.68155d44ca973p+0,    0x1.038ae44f74p-57,
+    0x1.6a09e667f3bcdp-1,
+    -0x1.bdd3413b2648p-55,
+    0x1.6c012750bdabfp-1,
+    -0x1.2895667ff0cp-57,
+    0x1.6dfb23c651a2fp-1,
+    -0x1.bbe3a683c88p-58,
+    0x1.6ff7df9519484p-1,
+    -0x1.83c0f25860fp-56,
+    0x1.71f75e8ec5f74p-1,
+    -0x1.16e4786887bp-56,
+    0x1.73f9a48a58174p-1,
+    -0x1.0a8d96c65d5p-55,
+    0x1.75feb564267c9p-1,
+    -0x1.0245957316ep-55,
+    0x1.780694fde5d3fp-1,
+    0x1.866b80a0216p-55,
+    0x1.7a11473eb0187p-1,
+    -0x1.41577ee0499p-56,
+    0x1.7c1ed0130c132p-1,
+    0x1.f124cd1164ep-55,
+    0x1.7e2f336cf4e62p-1,
+    0x1.05d02ba157ap-57,
+    0x1.80427543e1a12p-1,
+    -0x1.27c86626d97p-55,
+    0x1.82589994cce13p-1,
+    -0x1.d4c1dd41533p-55,
+    0x1.8471a4623c7adp-1,
+    -0x1.8d684a341cep-56,
+    0x1.868d99b4492edp-1,
+    -0x1.fc6f89bd4f68p-55,
+    0x1.88ac7d98a6699p-1,
+    0x1.994c2f37cb5p-55,
+    0x1.8ace5422aa0dbp-1,
+    0x1.6e9f156864bp-55,
+    0x1.8cf3216b5448cp-1,
+    -0x1.0d55e32e9e4p-57,
+    0x1.8f1ae99157736p-1,
+    0x1.5cc13a2e397p-56,
+    0x1.9145b0b91ffc6p-1,
+    -0x1.dd6792e5825p-55,
+    0x1.93737b0cdc5e5p-1,
+    -0x1.75fc781b58p-58,
+    0x1.95a44cbc8520fp-1,
+    -0x1.64b7c96a5fp-57,
+    0x1.97d829fde4e5p-1,
+    -0x1.d185b7c1b86p-55,
+    0x1.9a0f170ca07bap-1,
+    -0x1.173bd91cee6p-55,
+    0x1.9c49182a3f09p-1,
+    0x1.c7c46b071f2p-57,
+    0x1.9e86319e32323p-1,
+    0x1.824ca78e64cp-57,
+    0x1.a0c667b5de565p-1,
+    -0x1.359495d1cd5p-55,
+    0x1.a309bec4a2d33p-1,
+    0x1.6305c7ddc368p-55,
+    0x1.a5503b23e255dp-1,
+    -0x1.d2f6edb8d42p-55,
+    0x1.a799e1330b358p-1,
+    0x1.bcb7ecac564p-55,
+    0x1.a9e6b5579fdbfp-1,
+    0x1.0fac90ef7fdp-55,
+    0x1.ac36bbfd3f37ap-1,
+    -0x1.f9234cae76dp-56,
+    0x1.ae89f995ad3adp-1,
+    0x1.7a1cd345dcc8p-55,
+    0x1.b0e07298db666p-1,
+    -0x1.bdef54c80e4p-55,
+    0x1.b33a2b84f15fbp-1,
+    -0x1.2805e3084d8p-58,
+    0x1.b59728de5593ap-1,
+    -0x1.c71dfbbba6ep-55,
+    0x1.b7f76f2fb5e47p-1,
+    -0x1.5584f7e54acp-57,
+    0x1.ba5b030a1064ap-1,
+    -0x1.efcd30e5429p-55,
+    0x1.bcc1e904bc1d2p-1,
+    0x1.23dd07a2d9fp-56,
+    0x1.bf2c25bd71e09p-1,
+    -0x1.efdca3f6b9c8p-55,
+    0x1.c199bdd85529cp-1,
+    0x1.11065895049p-56,
+    0x1.c40ab5fffd07ap-1,
+    0x1.b4537e083c6p-55,
+    0x1.c67f12e57d14bp-1,
+    0x1.2884dff483c8p-55,
+    0x1.c8f6d9406e7b5p-1,
+    0x1.1acbc48805cp-57,
+    0x1.cb720dcef9069p-1,
+    0x1.503cbd1e94ap-57,
+    0x1.cdf0b555dc3fap-1,
+    -0x1.dd83b53829dp-56,
+    0x1.d072d4a07897cp-1,
+    -0x1.cbc3743797a8p-55,
+    0x1.d2f87080d89f2p-1,
+    -0x1.d487b719d858p-55,
+    0x1.d5818dcfba487p-1,
+    0x1.2ed02d75b37p-56,
+    0x1.d80e316c98398p-1,
+    -0x1.11ec18bedep-55,
+    0x1.da9e603db3285p-1,
+    0x1.c2300696db5p-55,
+    0x1.dd321f301b46p-1,
+    0x1.2da5778f019p-55,
+    0x1.dfc97337b9b5fp-1,
+    -0x1.1a5cd4f184b8p-55,
+    0x1.e264614f5a129p-1,
+    -0x1.7b627817a148p-55,
+    0x1.e502ee78b3ff6p-1,
+    0x1.39e8980a9cdp-56,
+    0x1.e7a51fbc74c83p-1,
+    0x1.2d522ca0c8ep-55,
+    0x1.ea4afa2a490dap-1,
+    -0x1.e9c23179c288p-55,
+    0x1.ecf482d8e67f1p-1,
+    -0x1.c93f3b411ad8p-55,
+    0x1.efa1bee615a27p-1,
+    0x1.dc7f486a4b68p-55,
+    0x1.f252b376bba97p-1,
+    0x1.3a1a5bf0d8e8p-55,
+    0x1.f50765b6e454p-1,
+    0x1.9d3e12dd8a18p-55,
+    0x1.f7bfdad9cbe14p-1,
+    -0x1.dbb12d00635p-55,
+    0x1.fa7c1819e90d8p-1,
+    0x1.74853f3a593p-56,
+    0x1.fd3c22b8f71f1p-1,
+    0x1.2eb74966578p-58,
+    0x1p+0,
+    0x0p+0,
+    0x1.0163da9fb3335p+0,
+    0x1.b61299ab8cd8p-54,
+    0x1.02c9a3e778061p+0,
+    -0x1.19083535b08p-56,
+    0x1.04315e86e7f85p+0,
+    -0x1.0a31c1977c98p-54,
+    0x1.059b0d3158574p+0,
+    0x1.d73e2a475b4p-55,
+    0x1.0706b29ddf6dep+0,
+    -0x1.c91dfe2b13cp-55,
+    0x1.0874518759bc8p+0,
+    0x1.186be4bb284p-57,
+    0x1.09e3ecac6f383p+0,
+    0x1.14878183161p-54,
+    0x1.0b5586cf9890fp+0,
+    0x1.8a62e4adc61p-54,
+    0x1.0cc922b7247f7p+0,
+    0x1.01edc16e24f8p-54,
+    0x1.0e3ec32d3d1a2p+0,
+    0x1.03a1727c58p-59,
+    0x1.0fb66affed31bp+0,
+    -0x1.b9bedc44ebcp-57,
+    0x1.11301d0125b51p+0,
+    -0x1.6c51039449bp-54,
+    0x1.12abdc06c31ccp+0,
+    -0x1.1b514b36ca8p-58,
+    0x1.1429aaea92dep+0,
+    -0x1.32fbf9af1368p-54,
+    0x1.15a98c8a58e51p+0,
+    0x1.2406ab9eeabp-55,
+    0x1.172b83c7d517bp+0,
+    -0x1.19041b9d78ap-55,
+    0x1.18af9388c8deap+0,
+    -0x1.11023d1970f8p-54,
+    0x1.1a35beb6fcb75p+0,
+    0x1.e5b4c7b4969p-55,
+    0x1.1bbe084045cd4p+0,
+    -0x1.95386352ef6p-54,
+    0x1.1d4873168b9aap+0,
+    0x1.e016e00a264p-54,
+    0x1.1ed5022fcd91dp+0,
+    -0x1.1df98027bb78p-54,
+    0x1.2063b88628cd6p+0,
+    0x1.dc775814a85p-55,
+    0x1.21f49917ddc96p+0,
+    0x1.2a97e9494a6p-55,
+    0x1.2387a6e756238p+0,
+    0x1.9b07eb6c7058p-54,
+    0x1.251ce4fb2a63fp+0,
+    0x1.ac155bef4f5p-55,
+    0x1.26b4565e27cddp+0,
+    0x1.2bd339940eap-55,
+    0x1.284dfe1f56381p+0,
+    -0x1.a4c3a8c3f0d8p-54,
+    0x1.29e9df51fdee1p+0,
+    0x1.612e8afad12p-55,
+    0x1.2b87fd0dad99p+0,
+    -0x1.10adcd6382p-59,
+    0x1.2d285a6e4030bp+0,
+    0x1.0024754db42p-54,
+    0x1.2ecafa93e2f56p+0,
+    0x1.1ca0f45d524p-56,
+    0x1.306fe0a31b715p+0,
+    0x1.6f46ad23183p-55,
+    0x1.32170fc4cd831p+0,
+    0x1.a9ce78e1804p-55,
+    0x1.33c08b26416ffp+0,
+    0x1.327218436598p-54,
+    0x1.356c55f929ff1p+0,
+    -0x1.b5cee5c4e46p-55,
+    0x1.371a7373aa9cbp+0,
+    -0x1.63aeabf42ebp-54,
+    0x1.38cae6d05d866p+0,
+    -0x1.e958d3c99048p-54,
+    0x1.3a7db34e59ff7p+0,
+    -0x1.5e436d661f6p-56,
+    0x1.3c32dc313a8e5p+0,
+    -0x1.efff8375d2ap-54,
+    0x1.3dea64c123422p+0,
+    0x1.ada0911f09fp-55,
+    0x1.3fa4504ac801cp+0,
+    -0x1.7d023f956fap-54,
+    0x1.4160a21f72e2ap+0,
+    -0x1.ef3691c309p-58,
+    0x1.431f5d950a897p+0,
+    -0x1.1c7dde35f7ap-55,
+    0x1.44e086061892dp+0,
+    0x1.89b7a04ef8p-59,
+    0x1.46a41ed1d0057p+0,
+    0x1.c944bd1648a8p-54,
+    0x1.486a2b5c13cdp+0,
+    0x1.3c1a3b69062p-56,
+    0x1.4a32af0d7d3dep+0,
+    0x1.9cb62f3d1be8p-54,
+    0x1.4bfdad5362a27p+0,
+    0x1.d4397afec42p-56,
+    0x1.4dcb299fddd0dp+0,
+    0x1.8ecdbbc6a78p-54,
+    0x1.4f9b2769d2ca7p+0,
+    -0x1.4b309d25958p-54,
+    0x1.516daa2cf6642p+0,
+    -0x1.f768569bd94p-55,
+    0x1.5342b569d4f82p+0,
+    -0x1.07abe1db13dp-55,
+    0x1.551a4ca5d920fp+0,
+    -0x1.d689cefede6p-55,
+    0x1.56f4736b527dap+0,
+    0x1.9bb2c011d938p-54,
+    0x1.58d12d497c7fdp+0,
+    0x1.295e15b9a1ep-55,
+    0x1.5ab07dd485429p+0,
+    0x1.6324c0546478p-54,
+    0x1.5c9268a5946b7p+0,
+    0x1.c4b1b81698p-60,
+    0x1.5e76f15ad2148p+0,
+    0x1.ba6f93080e68p-54,
+    0x1.605e1b976dc09p+0,
+    -0x1.3e2429b56de8p-54,
+    0x1.6247eb03a5585p+0,
+    -0x1.383c17e40b48p-54,
+    0x1.6434634ccc32p+0,
+    -0x1.c483c759d89p-55,
+    0x1.6623882552225p+0,
+    -0x1.bb60987591cp-54,
+    0x1.68155d44ca973p+0,
+    0x1.038ae44f74p-57,
 };
 
 /*
@@ -197,339 +321,179 @@
  *   The table entries each have 104 bits of accuracy, encoded as
  *   a pair of double precision values.
  */
-long double exp2l(long double x)
-{
-	union ldshape u = {x};
-	int e = u.i.se & 0x7fff;
-	long double r, z;
-	uint32_t i0;
-	union {uint32_t u; int32_t i;} k;
+long double exp2l(long double x) {
+  union ldshape u = {x};
+  int e = u.i.se & 0x7fff;
+  long double r, z;
+  uint32_t i0;
+  union {
+    uint32_t u;
+    int32_t i;
+  } k;
 
-	/* Filter out exceptional cases. */
-	if (e >= 0x3fff + 13) {  /* |x| >= 8192 or x is NaN */
-		if (u.i.se >= 0x3fff + 14 && u.i.se >> 15 == 0)
-			/* overflow */
-			return x * 0x1p16383L;
-		if (e == 0x7fff)  /* -inf or -nan */
-			return -1/x;
-		if (x < -16382) {
-			if (x <= -16446 || x - 0x1p63 + 0x1p63 != x)
-				/* underflow */
-				FORCE_EVAL((float)(-0x1p-149/x));
-			if (x <= -16446)
-				return 0;
-		}
-	} else if (e < 0x3fff - 64) {
-		return 1 + x;
-	}
+  /* Filter out exceptional cases. */
+  if (e >= 0x3fff + 13) { /* |x| >= 8192 or x is NaN */
+    if (u.i.se >= 0x3fff + 14 && u.i.se >> 15 == 0)
+      /* overflow */
+      return x * 0x1p16383L;
+    if (e == 0x7fff) /* -inf or -nan */
+      return -1 / x;
+    if (x < -16382) {
+      if (x <= -16446 || x - 0x1p63 + 0x1p63 != x)
+        /* underflow */
+        FORCE_EVAL((float)(-0x1p-149 / x));
+      if (x <= -16446)
+        return 0;
+    }
+  } else if (e < 0x3fff - 64) {
+    return 1 + x;
+  }
 
-	/*
-	 * Reduce x, computing z, i0, and k. The low bits of x + redux
-	 * contain the 16-bit integer part of the exponent (k) followed by
-	 * TBLBITS fractional bits (i0). We use bit tricks to extract these
-	 * as integers, then set z to the remainder.
-	 *
-	 * Example: Suppose x is 0xabc.123456p0 and TBLBITS is 8.
-	 * Then the low-order word of x + redux is 0x000abc12,
-	 * We split this into k = 0xabc and i0 = 0x12 (adjusted to
-	 * index into the table), then we compute z = 0x0.003456p0.
-	 */
-	u.f = x + redux;
-	i0 = u.i.m + TBLSIZE / 2;
-	k.u = i0 / TBLSIZE * TBLSIZE;
-	k.i /= TBLSIZE;
-	i0 %= TBLSIZE;
-	u.f -= redux;
-	z = x - u.f;
+  /*
+   * Reduce x, computing z, i0, and k. The low bits of x + redux
+   * contain the 16-bit integer part of the exponent (k) followed by
+   * TBLBITS fractional bits (i0). We use bit tricks to extract these
+   * as integers, then set z to the remainder.
+   *
+   * Example: Suppose x is 0xabc.123456p0 and TBLBITS is 8.
+   * Then the low-order word of x + redux is 0x000abc12,
+   * We split this into k = 0xabc and i0 = 0x12 (adjusted to
+   * index into the table), then we compute z = 0x0.003456p0.
+   */
+  u.f = x + redux;
+  i0 = u.i.m + TBLSIZE / 2;
+  k.u = i0 / TBLSIZE * TBLSIZE;
+  k.i /= TBLSIZE;
+  i0 %= TBLSIZE;
+  u.f -= redux;
+  z = x - u.f;
 
-	/* Compute r = exp2l(y) = exp2lt[i0] * p(z). */
-	long double t_hi = tbl[2*i0];
-	long double t_lo = tbl[2*i0 + 1];
-	/* XXX This gives > 1 ulp errors outside of FE_TONEAREST mode */
-	r = t_lo + (t_hi + t_lo) * z * (P1 + z * (P2 + z * (P3 + z * (P4
-	     + z * (P5 + z * P6))))) + t_hi;
+  /* Compute r = exp2l(y) = exp2lt[i0] * p(z). */
+  long double t_hi = tbl[2 * i0];
+  long double t_lo = tbl[2 * i0 + 1];
+  /* XXX This gives > 1 ulp errors outside of FE_TONEAREST mode */
+  r = t_lo +
+      (t_hi + t_lo) * z *
+          (P1 + z * (P2 + z * (P3 + z * (P4 + z * (P5 + z * P6))))) +
+      t_hi;
 
-	return scalbnl(r, k.i);
+  return scalbnl(r, k.i);
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 #define TBLBITS 7
 #define TBLSIZE (1 << TBLBITS)
 
-static const long double
-    P1        = 0x1.62e42fefa39ef35793c7673007e6p-1L,
-    P2        = 0x1.ebfbdff82c58ea86f16b06ec9736p-3L,
-    P3        = 0x1.c6b08d704a0bf8b33a762bad3459p-5L,
-    P4        = 0x1.3b2ab6fba4e7729ccbbe0b4f3fc2p-7L,
-    P5        = 0x1.5d87fe78a67311071dee13fd11d9p-10L,
-    P6        = 0x1.430912f86c7876f4b663b23c5fe5p-13L;
+static const long double P1 = 0x1.62e42fefa39ef35793c7673007e6p-1L,
+                         P2 = 0x1.ebfbdff82c58ea86f16b06ec9736p-3L,
+                         P3 = 0x1.c6b08d704a0bf8b33a762bad3459p-5L,
+                         P4 = 0x1.3b2ab6fba4e7729ccbbe0b4f3fc2p-7L,
+                         P5 = 0x1.5d87fe78a67311071dee13fd11d9p-10L,
+                         P6 = 0x1.430912f86c7876f4b663b23c5fe5p-13L;
 
-static const double
-    P7        = 0x1.ffcbfc588b041p-17,
-    P8        = 0x1.62c0223a5c7c7p-20,
-    P9        = 0x1.b52541ff59713p-24,
-    P10       = 0x1.e4cf56a391e22p-28,
-    redux     = 0x1.8p112 / TBLSIZE;
+static const double P7 = 0x1.ffcbfc588b041p-17, P8 = 0x1.62c0223a5c7c7p-20,
+                    P9 = 0x1.b52541ff59713p-24, P10 = 0x1.e4cf56a391e22p-28,
+                    redux = 0x1.8p112 / TBLSIZE;
 
 static const long double tbl[TBLSIZE] = {
-	0x1.6a09e667f3bcc908b2fb1366dfeap-1L,
-	0x1.6c012750bdabeed76a99800f4edep-1L,
-	0x1.6dfb23c651a2ef220e2cbe1bc0d4p-1L,
-	0x1.6ff7df9519483cf87e1b4f3e1e98p-1L,
-	0x1.71f75e8ec5f73dd2370f2ef0b148p-1L,
-	0x1.73f9a48a58173bd5c9a4e68ab074p-1L,
-	0x1.75feb564267c8bf6e9aa33a489a8p-1L,
-	0x1.780694fde5d3f619ae02808592a4p-1L,
-	0x1.7a11473eb0186d7d51023f6ccb1ap-1L,
-	0x1.7c1ed0130c1327c49334459378dep-1L,
-	0x1.7e2f336cf4e62105d02ba1579756p-1L,
-	0x1.80427543e1a11b60de67649a3842p-1L,
-	0x1.82589994cce128acf88afab34928p-1L,
-	0x1.8471a4623c7acce52f6b97c6444cp-1L,
-	0x1.868d99b4492ec80e41d90ac2556ap-1L,
-	0x1.88ac7d98a669966530bcdf2d4cc0p-1L,
-	0x1.8ace5422aa0db5ba7c55a192c648p-1L,
-	0x1.8cf3216b5448bef2aa1cd161c57ap-1L,
-	0x1.8f1ae991577362b982745c72eddap-1L,
-	0x1.9145b0b91ffc588a61b469f6b6a0p-1L,
-	0x1.93737b0cdc5e4f4501c3f2540ae8p-1L,
-	0x1.95a44cbc8520ee9b483695a0e7fep-1L,
-	0x1.97d829fde4e4f8b9e920f91e8eb6p-1L,
-	0x1.9a0f170ca07b9ba3109b8c467844p-1L,
-	0x1.9c49182a3f0901c7c46b071f28dep-1L,
-	0x1.9e86319e323231824ca78e64c462p-1L,
-	0x1.a0c667b5de564b29ada8b8cabbacp-1L,
-	0x1.a309bec4a2d3358c171f770db1f4p-1L,
-	0x1.a5503b23e255c8b424491caf88ccp-1L,
-	0x1.a799e1330b3586f2dfb2b158f31ep-1L,
-	0x1.a9e6b5579fdbf43eb243bdff53a2p-1L,
-	0x1.ac36bbfd3f379c0db966a3126988p-1L,
-	0x1.ae89f995ad3ad5e8734d17731c80p-1L,
-	0x1.b0e07298db66590842acdfc6fb4ep-1L,
-	0x1.b33a2b84f15faf6bfd0e7bd941b0p-1L,
-	0x1.b59728de559398e3881111648738p-1L,
-	0x1.b7f76f2fb5e46eaa7b081ab53ff6p-1L,
-	0x1.ba5b030a10649840cb3c6af5b74cp-1L,
-	0x1.bcc1e904bc1d2247ba0f45b3d06cp-1L,
-	0x1.bf2c25bd71e088408d7025190cd0p-1L,
-	0x1.c199bdd85529c2220cb12a0916bap-1L,
-	0x1.c40ab5fffd07a6d14df820f17deap-1L,
-	0x1.c67f12e57d14b4a2137fd20f2a26p-1L,
-	0x1.c8f6d9406e7b511acbc48805c3f6p-1L,
-	0x1.cb720dcef90691503cbd1e949d0ap-1L,
-	0x1.cdf0b555dc3f9c44f8958fac4f12p-1L,
-	0x1.d072d4a07897b8d0f22f21a13792p-1L,
-	0x1.d2f87080d89f18ade123989ea50ep-1L,
-	0x1.d5818dcfba48725da05aeb66dff8p-1L,
-	0x1.d80e316c98397bb84f9d048807a0p-1L,
-	0x1.da9e603db3285708c01a5b6d480cp-1L,
-	0x1.dd321f301b4604b695de3c0630c0p-1L,
-	0x1.dfc97337b9b5eb968cac39ed284cp-1L,
-	0x1.e264614f5a128a12761fa17adc74p-1L,
-	0x1.e502ee78b3ff6273d130153992d0p-1L,
-	0x1.e7a51fbc74c834b548b2832378a4p-1L,
-	0x1.ea4afa2a490d9858f73a18f5dab4p-1L,
-	0x1.ecf482d8e67f08db0312fb949d50p-1L,
-	0x1.efa1bee615a27771fd21a92dabb6p-1L,
-	0x1.f252b376bba974e8696fc3638f24p-1L,
-	0x1.f50765b6e4540674f84b762861a6p-1L,
-	0x1.f7bfdad9cbe138913b4bfe72bd78p-1L,
-	0x1.fa7c1819e90d82e90a7e74b26360p-1L,
-	0x1.fd3c22b8f71f10975ba4b32bd006p-1L,
-	0x1.0000000000000000000000000000p+0L,
-	0x1.0163da9fb33356d84a66ae336e98p+0L,
-	0x1.02c9a3e778060ee6f7caca4f7a18p+0L,
-	0x1.04315e86e7f84bd738f9a20da442p+0L,
-	0x1.059b0d31585743ae7c548eb68c6ap+0L,
-	0x1.0706b29ddf6ddc6dc403a9d87b1ep+0L,
-	0x1.0874518759bc808c35f25d942856p+0L,
-	0x1.09e3ecac6f3834521e060c584d5cp+0L,
-	0x1.0b5586cf9890f6298b92b7184200p+0L,
-	0x1.0cc922b7247f7407b705b893dbdep+0L,
-	0x1.0e3ec32d3d1a2020742e4f8af794p+0L,
-	0x1.0fb66affed31af232091dd8a169ep+0L,
-	0x1.11301d0125b50a4ebbf1aed9321cp+0L,
-	0x1.12abdc06c31cbfb92bad324d6f84p+0L,
-	0x1.1429aaea92ddfb34101943b2588ep+0L,
-	0x1.15a98c8a58e512480d573dd562aep+0L,
-	0x1.172b83c7d517adcdf7c8c50eb162p+0L,
-	0x1.18af9388c8de9bbbf70b9a3c269cp+0L,
-	0x1.1a35beb6fcb753cb698f692d2038p+0L,
-	0x1.1bbe084045cd39ab1e72b442810ep+0L,
-	0x1.1d4873168b9aa7805b8028990be8p+0L,
-	0x1.1ed5022fcd91cb8819ff61121fbep+0L,
-	0x1.2063b88628cd63b8eeb0295093f6p+0L,
-	0x1.21f49917ddc962552fd29294bc20p+0L,
-	0x1.2387a6e75623866c1fadb1c159c0p+0L,
-	0x1.251ce4fb2a63f3582ab7de9e9562p+0L,
-	0x1.26b4565e27cdd257a673281d3068p+0L,
-	0x1.284dfe1f5638096cf15cf03c9fa0p+0L,
-	0x1.29e9df51fdee12c25d15f5a25022p+0L,
-	0x1.2b87fd0dad98ffddea46538fca24p+0L,
-	0x1.2d285a6e4030b40091d536d0733ep+0L,
-	0x1.2ecafa93e2f5611ca0f45d5239a4p+0L,
-	0x1.306fe0a31b7152de8d5a463063bep+0L,
-	0x1.32170fc4cd8313539cf1c3009330p+0L,
-	0x1.33c08b26416ff4c9c8610d96680ep+0L,
-	0x1.356c55f929ff0c94623476373be4p+0L,
-	0x1.371a7373aa9caa7145502f45452ap+0L,
-	0x1.38cae6d05d86585a9cb0d9bed530p+0L,
-	0x1.3a7db34e59ff6ea1bc9299e0a1fep+0L,
-	0x1.3c32dc313a8e484001f228b58cf0p+0L,
-	0x1.3dea64c12342235b41223e13d7eep+0L,
-	0x1.3fa4504ac801ba0bf701aa417b9cp+0L,
-	0x1.4160a21f72e29f84325b8f3dbacap+0L,
-	0x1.431f5d950a896dc704439410b628p+0L,
-	0x1.44e086061892d03136f409df0724p+0L,
-	0x1.46a41ed1d005772512f459229f0ap+0L,
-	0x1.486a2b5c13cd013c1a3b69062f26p+0L,
-	0x1.4a32af0d7d3de672d8bcf46f99b4p+0L,
-	0x1.4bfdad5362a271d4397afec42e36p+0L,
-	0x1.4dcb299fddd0d63b36ef1a9e19dep+0L,
-	0x1.4f9b2769d2ca6ad33d8b69aa0b8cp+0L,
-	0x1.516daa2cf6641c112f52c84d6066p+0L,
-	0x1.5342b569d4f81df0a83c49d86bf4p+0L,
-	0x1.551a4ca5d920ec52ec620243540cp+0L,
-	0x1.56f4736b527da66ecb004764e61ep+0L,
-	0x1.58d12d497c7fd252bc2b7343d554p+0L,
-	0x1.5ab07dd48542958c93015191e9a8p+0L,
-	0x1.5c9268a5946b701c4b1b81697ed4p+0L,
-	0x1.5e76f15ad21486e9be4c20399d12p+0L,
-	0x1.605e1b976dc08b076f592a487066p+0L,
-	0x1.6247eb03a5584b1f0fa06fd2d9eap+0L,
-	0x1.6434634ccc31fc76f8714c4ee122p+0L,
-	0x1.66238825522249127d9e29b92ea2p+0L,
-	0x1.68155d44ca973081c57227b9f69ep+0L,
+    0x1.6a09e667f3bcc908b2fb1366dfeap-1L, 0x1.6c012750bdabeed76a99800f4edep-1L,
+    0x1.6dfb23c651a2ef220e2cbe1bc0d4p-1L, 0x1.6ff7df9519483cf87e1b4f3e1e98p-1L,
+    0x1.71f75e8ec5f73dd2370f2ef0b148p-1L, 0x1.73f9a48a58173bd5c9a4e68ab074p-1L,
+    0x1.75feb564267c8bf6e9aa33a489a8p-1L, 0x1.780694fde5d3f619ae02808592a4p-1L,
+    0x1.7a11473eb0186d7d51023f6ccb1ap-1L, 0x1.7c1ed0130c1327c49334459378dep-1L,
+    0x1.7e2f336cf4e62105d02ba1579756p-1L, 0x1.80427543e1a11b60de67649a3842p-1L,
+    0x1.82589994cce128acf88afab34928p-1L, 0x1.8471a4623c7acce52f6b97c6444cp-1L,
+    0x1.868d99b4492ec80e41d90ac2556ap-1L, 0x1.88ac7d98a669966530bcdf2d4cc0p-1L,
+    0x1.8ace5422aa0db5ba7c55a192c648p-1L, 0x1.8cf3216b5448bef2aa1cd161c57ap-1L,
+    0x1.8f1ae991577362b982745c72eddap-1L, 0x1.9145b0b91ffc588a61b469f6b6a0p-1L,
+    0x1.93737b0cdc5e4f4501c3f2540ae8p-1L, 0x1.95a44cbc8520ee9b483695a0e7fep-1L,
+    0x1.97d829fde4e4f8b9e920f91e8eb6p-1L, 0x1.9a0f170ca07b9ba3109b8c467844p-1L,
+    0x1.9c49182a3f0901c7c46b071f28dep-1L, 0x1.9e86319e323231824ca78e64c462p-1L,
+    0x1.a0c667b5de564b29ada8b8cabbacp-1L, 0x1.a309bec4a2d3358c171f770db1f4p-1L,
+    0x1.a5503b23e255c8b424491caf88ccp-1L, 0x1.a799e1330b3586f2dfb2b158f31ep-1L,
+    0x1.a9e6b5579fdbf43eb243bdff53a2p-1L, 0x1.ac36bbfd3f379c0db966a3126988p-1L,
+    0x1.ae89f995ad3ad5e8734d17731c80p-1L, 0x1.b0e07298db66590842acdfc6fb4ep-1L,
+    0x1.b33a2b84f15faf6bfd0e7bd941b0p-1L, 0x1.b59728de559398e3881111648738p-1L,
+    0x1.b7f76f2fb5e46eaa7b081ab53ff6p-1L, 0x1.ba5b030a10649840cb3c6af5b74cp-1L,
+    0x1.bcc1e904bc1d2247ba0f45b3d06cp-1L, 0x1.bf2c25bd71e088408d7025190cd0p-1L,
+    0x1.c199bdd85529c2220cb12a0916bap-1L, 0x1.c40ab5fffd07a6d14df820f17deap-1L,
+    0x1.c67f12e57d14b4a2137fd20f2a26p-1L, 0x1.c8f6d9406e7b511acbc48805c3f6p-1L,
+    0x1.cb720dcef90691503cbd1e949d0ap-1L, 0x1.cdf0b555dc3f9c44f8958fac4f12p-1L,
+    0x1.d072d4a07897b8d0f22f21a13792p-1L, 0x1.d2f87080d89f18ade123989ea50ep-1L,
+    0x1.d5818dcfba48725da05aeb66dff8p-1L, 0x1.d80e316c98397bb84f9d048807a0p-1L,
+    0x1.da9e603db3285708c01a5b6d480cp-1L, 0x1.dd321f301b4604b695de3c0630c0p-1L,
+    0x1.dfc97337b9b5eb968cac39ed284cp-1L, 0x1.e264614f5a128a12761fa17adc74p-1L,
+    0x1.e502ee78b3ff6273d130153992d0p-1L, 0x1.e7a51fbc74c834b548b2832378a4p-1L,
+    0x1.ea4afa2a490d9858f73a18f5dab4p-1L, 0x1.ecf482d8e67f08db0312fb949d50p-1L,
+    0x1.efa1bee615a27771fd21a92dabb6p-1L, 0x1.f252b376bba974e8696fc3638f24p-1L,
+    0x1.f50765b6e4540674f84b762861a6p-1L, 0x1.f7bfdad9cbe138913b4bfe72bd78p-1L,
+    0x1.fa7c1819e90d82e90a7e74b26360p-1L, 0x1.fd3c22b8f71f10975ba4b32bd006p-1L,
+    0x1.0000000000000000000000000000p+0L, 0x1.0163da9fb33356d84a66ae336e98p+0L,
+    0x1.02c9a3e778060ee6f7caca4f7a18p+0L, 0x1.04315e86e7f84bd738f9a20da442p+0L,
+    0x1.059b0d31585743ae7c548eb68c6ap+0L, 0x1.0706b29ddf6ddc6dc403a9d87b1ep+0L,
+    0x1.0874518759bc808c35f25d942856p+0L, 0x1.09e3ecac6f3834521e060c584d5cp+0L,
+    0x1.0b5586cf9890f6298b92b7184200p+0L, 0x1.0cc922b7247f7407b705b893dbdep+0L,
+    0x1.0e3ec32d3d1a2020742e4f8af794p+0L, 0x1.0fb66affed31af232091dd8a169ep+0L,
+    0x1.11301d0125b50a4ebbf1aed9321cp+0L, 0x1.12abdc06c31cbfb92bad324d6f84p+0L,
+    0x1.1429aaea92ddfb34101943b2588ep+0L, 0x1.15a98c8a58e512480d573dd562aep+0L,
+    0x1.172b83c7d517adcdf7c8c50eb162p+0L, 0x1.18af9388c8de9bbbf70b9a3c269cp+0L,
+    0x1.1a35beb6fcb753cb698f692d2038p+0L, 0x1.1bbe084045cd39ab1e72b442810ep+0L,
+    0x1.1d4873168b9aa7805b8028990be8p+0L, 0x1.1ed5022fcd91cb8819ff61121fbep+0L,
+    0x1.2063b88628cd63b8eeb0295093f6p+0L, 0x1.21f49917ddc962552fd29294bc20p+0L,
+    0x1.2387a6e75623866c1fadb1c159c0p+0L, 0x1.251ce4fb2a63f3582ab7de9e9562p+0L,
+    0x1.26b4565e27cdd257a673281d3068p+0L, 0x1.284dfe1f5638096cf15cf03c9fa0p+0L,
+    0x1.29e9df51fdee12c25d15f5a25022p+0L, 0x1.2b87fd0dad98ffddea46538fca24p+0L,
+    0x1.2d285a6e4030b40091d536d0733ep+0L, 0x1.2ecafa93e2f5611ca0f45d5239a4p+0L,
+    0x1.306fe0a31b7152de8d5a463063bep+0L, 0x1.32170fc4cd8313539cf1c3009330p+0L,
+    0x1.33c08b26416ff4c9c8610d96680ep+0L, 0x1.356c55f929ff0c94623476373be4p+0L,
+    0x1.371a7373aa9caa7145502f45452ap+0L, 0x1.38cae6d05d86585a9cb0d9bed530p+0L,
+    0x1.3a7db34e59ff6ea1bc9299e0a1fep+0L, 0x1.3c32dc313a8e484001f228b58cf0p+0L,
+    0x1.3dea64c12342235b41223e13d7eep+0L, 0x1.3fa4504ac801ba0bf701aa417b9cp+0L,
+    0x1.4160a21f72e29f84325b8f3dbacap+0L, 0x1.431f5d950a896dc704439410b628p+0L,
+    0x1.44e086061892d03136f409df0724p+0L, 0x1.46a41ed1d005772512f459229f0ap+0L,
+    0x1.486a2b5c13cd013c1a3b69062f26p+0L, 0x1.4a32af0d7d3de672d8bcf46f99b4p+0L,
+    0x1.4bfdad5362a271d4397afec42e36p+0L, 0x1.4dcb299fddd0d63b36ef1a9e19dep+0L,
+    0x1.4f9b2769d2ca6ad33d8b69aa0b8cp+0L, 0x1.516daa2cf6641c112f52c84d6066p+0L,
+    0x1.5342b569d4f81df0a83c49d86bf4p+0L, 0x1.551a4ca5d920ec52ec620243540cp+0L,
+    0x1.56f4736b527da66ecb004764e61ep+0L, 0x1.58d12d497c7fd252bc2b7343d554p+0L,
+    0x1.5ab07dd48542958c93015191e9a8p+0L, 0x1.5c9268a5946b701c4b1b81697ed4p+0L,
+    0x1.5e76f15ad21486e9be4c20399d12p+0L, 0x1.605e1b976dc08b076f592a487066p+0L,
+    0x1.6247eb03a5584b1f0fa06fd2d9eap+0L, 0x1.6434634ccc31fc76f8714c4ee122p+0L,
+    0x1.66238825522249127d9e29b92ea2p+0L, 0x1.68155d44ca973081c57227b9f69ep+0L,
 };
 
 static const float eps[TBLSIZE] = {
-	-0x1.5c50p-101,
-	-0x1.5d00p-106,
-	 0x1.8e90p-102,
-	-0x1.5340p-103,
-	 0x1.1bd0p-102,
-	-0x1.4600p-105,
-	-0x1.7a40p-104,
-	 0x1.d590p-102,
-	-0x1.d590p-101,
-	 0x1.b100p-103,
-	-0x1.0d80p-105,
-	 0x1.6b00p-103,
-	-0x1.9f00p-105,
-	 0x1.c400p-103,
-	 0x1.e120p-103,
-	-0x1.c100p-104,
-	-0x1.9d20p-103,
-	 0x1.a800p-108,
-	 0x1.4c00p-106,
-	-0x1.9500p-106,
-	 0x1.6900p-105,
-	-0x1.29d0p-100,
-	 0x1.4c60p-103,
-	 0x1.13a0p-102,
-	-0x1.5b60p-103,
-	-0x1.1c40p-103,
-	 0x1.db80p-102,
-	 0x1.91a0p-102,
-	 0x1.dc00p-105,
-	 0x1.44c0p-104,
-	 0x1.9710p-102,
-	 0x1.8760p-103,
-	-0x1.a720p-103,
-	 0x1.ed20p-103,
-	-0x1.49c0p-102,
-	-0x1.e000p-111,
-	 0x1.86a0p-103,
-	 0x1.2b40p-103,
-	-0x1.b400p-108,
-	 0x1.1280p-99,
-	-0x1.02d8p-102,
-	-0x1.e3d0p-103,
-	-0x1.b080p-105,
-	-0x1.f100p-107,
-	-0x1.16c0p-105,
-	-0x1.1190p-103,
-	-0x1.a7d2p-100,
-	 0x1.3450p-103,
-	-0x1.67c0p-105,
-	 0x1.4b80p-104,
-	-0x1.c4e0p-103,
-	 0x1.6000p-108,
-	-0x1.3f60p-105,
-	 0x1.93f0p-104,
-	 0x1.5fe0p-105,
-	 0x1.6f80p-107,
-	-0x1.7600p-106,
-	 0x1.21e0p-106,
-	-0x1.3a40p-106,
-	-0x1.40c0p-104,
-	-0x1.9860p-105,
-	-0x1.5d40p-108,
-	-0x1.1d70p-106,
-	 0x1.2760p-105,
-	 0x0.0000p+0,
-	 0x1.21e2p-104,
-	-0x1.9520p-108,
-	-0x1.5720p-106,
-	-0x1.4810p-106,
-	-0x1.be00p-109,
-	 0x1.0080p-105,
-	-0x1.5780p-108,
-	-0x1.d460p-105,
-	-0x1.6140p-105,
-	 0x1.4630p-104,
-	 0x1.ad50p-103,
-	 0x1.82e0p-105,
-	 0x1.1d3cp-101,
-	 0x1.6100p-107,
-	 0x1.ec30p-104,
-	 0x1.f200p-108,
-	 0x1.0b40p-103,
-	 0x1.3660p-102,
-	 0x1.d9d0p-103,
-	-0x1.02d0p-102,
-	 0x1.b070p-103,
-	 0x1.b9c0p-104,
-	-0x1.01c0p-103,
-	-0x1.dfe0p-103,
-	 0x1.1b60p-104,
-	-0x1.ae94p-101,
-	-0x1.3340p-104,
-	 0x1.b3d8p-102,
-	-0x1.6e40p-105,
-	-0x1.3670p-103,
-	 0x1.c140p-104,
-	 0x1.1840p-101,
-	 0x1.1ab0p-102,
-	-0x1.a400p-104,
-	 0x1.1f00p-104,
-	-0x1.7180p-103,
-	 0x1.4ce0p-102,
-	 0x1.9200p-107,
-	-0x1.54c0p-103,
-	 0x1.1b80p-105,
-	-0x1.1828p-101,
-	 0x1.5720p-102,
-	-0x1.a060p-100,
-	 0x1.9160p-102,
-	 0x1.a280p-104,
-	 0x1.3400p-107,
-	 0x1.2b20p-102,
-	 0x1.7800p-108,
-	 0x1.cfd0p-101,
-	 0x1.2ef0p-102,
-	-0x1.2760p-99,
-	 0x1.b380p-104,
-	 0x1.0048p-101,
-	-0x1.60b0p-102,
-	 0x1.a1ccp-100,
-	-0x1.a640p-104,
-	-0x1.08a0p-101,
-	 0x1.7e60p-102,
-	 0x1.22c0p-103,
-	-0x1.7200p-106,
-	 0x1.f0f0p-102,
-	 0x1.eb4ep-99,
-	 0x1.c6e0p-103,
+    -0x1.5c50p-101, -0x1.5d00p-106, 0x1.8e90p-102,  -0x1.5340p-103,
+    0x1.1bd0p-102,  -0x1.4600p-105, -0x1.7a40p-104, 0x1.d590p-102,
+    -0x1.d590p-101, 0x1.b100p-103,  -0x1.0d80p-105, 0x1.6b00p-103,
+    -0x1.9f00p-105, 0x1.c400p-103,  0x1.e120p-103,  -0x1.c100p-104,
+    -0x1.9d20p-103, 0x1.a800p-108,  0x1.4c00p-106,  -0x1.9500p-106,
+    0x1.6900p-105,  -0x1.29d0p-100, 0x1.4c60p-103,  0x1.13a0p-102,
+    -0x1.5b60p-103, -0x1.1c40p-103, 0x1.db80p-102,  0x1.91a0p-102,
+    0x1.dc00p-105,  0x1.44c0p-104,  0x1.9710p-102,  0x1.8760p-103,
+    -0x1.a720p-103, 0x1.ed20p-103,  -0x1.49c0p-102, -0x1.e000p-111,
+    0x1.86a0p-103,  0x1.2b40p-103,  -0x1.b400p-108, 0x1.1280p-99,
+    -0x1.02d8p-102, -0x1.e3d0p-103, -0x1.b080p-105, -0x1.f100p-107,
+    -0x1.16c0p-105, -0x1.1190p-103, -0x1.a7d2p-100, 0x1.3450p-103,
+    -0x1.67c0p-105, 0x1.4b80p-104,  -0x1.c4e0p-103, 0x1.6000p-108,
+    -0x1.3f60p-105, 0x1.93f0p-104,  0x1.5fe0p-105,  0x1.6f80p-107,
+    -0x1.7600p-106, 0x1.21e0p-106,  -0x1.3a40p-106, -0x1.40c0p-104,
+    -0x1.9860p-105, -0x1.5d40p-108, -0x1.1d70p-106, 0x1.2760p-105,
+    0x0.0000p+0,    0x1.21e2p-104,  -0x1.9520p-108, -0x1.5720p-106,
+    -0x1.4810p-106, -0x1.be00p-109, 0x1.0080p-105,  -0x1.5780p-108,
+    -0x1.d460p-105, -0x1.6140p-105, 0x1.4630p-104,  0x1.ad50p-103,
+    0x1.82e0p-105,  0x1.1d3cp-101,  0x1.6100p-107,  0x1.ec30p-104,
+    0x1.f200p-108,  0x1.0b40p-103,  0x1.3660p-102,  0x1.d9d0p-103,
+    -0x1.02d0p-102, 0x1.b070p-103,  0x1.b9c0p-104,  -0x1.01c0p-103,
+    -0x1.dfe0p-103, 0x1.1b60p-104,  -0x1.ae94p-101, -0x1.3340p-104,
+    0x1.b3d8p-102,  -0x1.6e40p-105, -0x1.3670p-103, 0x1.c140p-104,
+    0x1.1840p-101,  0x1.1ab0p-102,  -0x1.a400p-104, 0x1.1f00p-104,
+    -0x1.7180p-103, 0x1.4ce0p-102,  0x1.9200p-107,  -0x1.54c0p-103,
+    0x1.1b80p-105,  -0x1.1828p-101, 0x1.5720p-102,  -0x1.a060p-100,
+    0x1.9160p-102,  0x1.a280p-104,  0x1.3400p-107,  0x1.2b20p-102,
+    0x1.7800p-108,  0x1.cfd0p-101,  0x1.2ef0p-102,  -0x1.2760p-99,
+    0x1.b380p-104,  0x1.0048p-101,  -0x1.60b0p-102, 0x1.a1ccp-100,
+    -0x1.a640p-104, -0x1.08a0p-101, 0x1.7e60p-102,  0x1.22c0p-103,
+    -0x1.7200p-106, 0x1.f0f0p-102,  0x1.eb4ep-99,   0x1.c6e0p-103,
 };
 
 /*
@@ -562,58 +526,67 @@
  *	Gal, S. and Bachelis, B.  An Accurate Elementary Mathematical Library
  *	for the IEEE Floating Point Standard.  TOMS 17(1), 26-46 (1991).
  */
-long double
-exp2l(long double x)
-{
-	union ldshape u = {x};
-	int e = u.i.se & 0x7fff;
-	long double r, z, t;
-	uint32_t i0;
-	union {uint32_t u; int32_t i;} k;
+long double exp2l(long double x) {
+  union ldshape u = {x};
+  int e = u.i.se & 0x7fff;
+  long double r, z, t;
+  uint32_t i0;
+  union {
+    uint32_t u;
+    int32_t i;
+  } k;
 
-	/* Filter out exceptional cases. */
-	if (e >= 0x3fff + 14) {  /* |x| >= 16384 or x is NaN */
-		if (u.i.se >= 0x3fff + 15 && u.i.se >> 15 == 0)
-			/* overflow */
-			return x * 0x1p16383L;
-		if (e == 0x7fff)  /* -inf or -nan */
-			return -1/x;
-		if (x < -16382) {
-			if (x <= -16495 || x - 0x1p112 + 0x1p112 != x)
-				/* underflow */
-				FORCE_EVAL((float)(-0x1p-149/x));
-			if (x <= -16446)
-				return 0;
-		}
-	} else if (e < 0x3fff - 114) {
-		return 1 + x;
-	}
+  /* Filter out exceptional cases. */
+  if (e >= 0x3fff + 14) { /* |x| >= 16384 or x is NaN */
+    if (u.i.se >= 0x3fff + 15 && u.i.se >> 15 == 0)
+      /* overflow */
+      return x * 0x1p16383L;
+    if (e == 0x7fff) /* -inf or -nan */
+      return -1 / x;
+    if (x < -16382) {
+      if (x <= -16495 || x - 0x1p112 + 0x1p112 != x)
+        /* underflow */
+        FORCE_EVAL((float)(-0x1p-149 / x));
+      if (x <= -16446)
+        return 0;
+    }
+  } else if (e < 0x3fff - 114) {
+    return 1 + x;
+  }
 
-	/*
-	 * Reduce x, computing z, i0, and k. The low bits of x + redux
-	 * contain the 16-bit integer part of the exponent (k) followed by
-	 * TBLBITS fractional bits (i0). We use bit tricks to extract these
-	 * as integers, then set z to the remainder.
-	 *
-	 * Example: Suppose x is 0xabc.123456p0 and TBLBITS is 8.
-	 * Then the low-order word of x + redux is 0x000abc12,
-	 * We split this into k = 0xabc and i0 = 0x12 (adjusted to
-	 * index into the table), then we compute z = 0x0.003456p0.
-	 */
-	u.f = x + redux;
-	i0 = u.i2.lo + TBLSIZE / 2;
-	k.u = i0 / TBLSIZE * TBLSIZE;
-	k.i /= TBLSIZE;
-	i0 %= TBLSIZE;
-	u.f -= redux;
-	z = x - u.f;
+  /*
+   * Reduce x, computing z, i0, and k. The low bits of x + redux
+   * contain the 16-bit integer part of the exponent (k) followed by
+   * TBLBITS fractional bits (i0). We use bit tricks to extract these
+   * as integers, then set z to the remainder.
+   *
+   * Example: Suppose x is 0xabc.123456p0 and TBLBITS is 8.
+   * Then the low-order word of x + redux is 0x000abc12,
+   * We split this into k = 0xabc and i0 = 0x12 (adjusted to
+   * index into the table), then we compute z = 0x0.003456p0.
+   */
+  u.f = x + redux;
+  i0 = u.i2.lo + TBLSIZE / 2;
+  k.u = i0 / TBLSIZE * TBLSIZE;
+  k.i /= TBLSIZE;
+  i0 %= TBLSIZE;
+  u.f -= redux;
+  z = x - u.f;
 
-	/* Compute r = exp2(y) = exp2t[i0] * p(z - eps[i]). */
-	t = tbl[i0];
-	z -= eps[i0];
-	r = t + t * z * (P1 + z * (P2 + z * (P3 + z * (P4 + z * (P5 + z * (P6
-	    + z * (P7 + z * (P8 + z * (P9 + z * P10)))))))));
+  /* Compute r = exp2(y) = exp2t[i0] * p(z - eps[i]). */
+  t = tbl[i0];
+  z -= eps[i0];
+  r = t +
+      t * z *
+          (P1 +
+           z * (P2 +
+                z * (P3 +
+                     z * (P4 +
+                          z * (P5 +
+                               z * (P6 +
+                                    z * (P7 +
+                                         z * (P8 + z * (P9 + z * P10)))))))));
 
-	return scalbnl(r, k.i);
+  return scalbnl(r, k.i);
 }
 #endif
diff --git a/fusl/src/math/expf.c b/fusl/src/math/expf.c
index 16e9afe..34ccafa 100644
--- a/fusl/src/math/expf.c
+++ b/fusl/src/math/expf.c
@@ -15,67 +15,65 @@
 
 #include "libm.h"
 
-static const float
-half[2] = {0.5,-0.5},
-ln2hi   = 6.9314575195e-1f,  /* 0x3f317200 */
-ln2lo   = 1.4286067653e-6f,  /* 0x35bfbe8e */
-invln2  = 1.4426950216e+0f,  /* 0x3fb8aa3b */
-/*
- * Domain [-0.34568, 0.34568], range ~[-4.278e-9, 4.447e-9]:
- * |x*(exp(x)+1)/(exp(x)-1) - p(x)| < 2**-27.74
- */
-P1 =  1.6666625440e-1f, /*  0xaaaa8f.0p-26 */
-P2 = -2.7667332906e-3f; /* -0xb55215.0p-32 */
+static const float half[2] = {0.5, -0.5},
+                   ln2hi = 6.9314575195e-1f, /* 0x3f317200 */
+    ln2lo = 1.4286067653e-6f,                /* 0x35bfbe8e */
+    invln2 = 1.4426950216e+0f,               /* 0x3fb8aa3b */
+                                             /*
+                                              * Domain [-0.34568, 0.34568], range ~[-4.278e-9, 4.447e-9]:
+                                              * |x*(exp(x)+1)/(exp(x)-1) - p(x)| < 2**-27.74
+                                              */
+    P1 = 1.6666625440e-1f,                   /*  0xaaaa8f.0p-26 */
+    P2 = -2.7667332906e-3f;                  /* -0xb55215.0p-32 */
 
-float expf(float x)
-{
-	float_t hi, lo, c, xx, y;
-	int k, sign;
-	uint32_t hx;
+float expf(float x) {
+  float_t hi, lo, c, xx, y;
+  int k, sign;
+  uint32_t hx;
 
-	GET_FLOAT_WORD(hx, x);
-	sign = hx >> 31;   /* sign bit of x */
-	hx &= 0x7fffffff;  /* high word of |x| */
+  GET_FLOAT_WORD(hx, x);
+  sign = hx >> 31;  /* sign bit of x */
+  hx &= 0x7fffffff; /* high word of |x| */
 
-	/* special cases */
-	if (hx >= 0x42aeac50) {  /* if |x| >= -87.33655f or NaN */
-		if (hx >= 0x42b17218 && !sign) {  /* x >= 88.722839f */
-			/* overflow */
-			x *= 0x1p127f;
-			return x;
-		}
-		if (sign) {
-			/* underflow */
-			FORCE_EVAL(-0x1p-149f/x);
-			if (hx >= 0x42cff1b5)  /* x <= -103.972084f */
-				return 0;
-		}
-	}
+  /* special cases */
+  if (hx >= 0x42aeac50) {            /* if |x| >= -87.33655f or NaN */
+    if (hx >= 0x42b17218 && !sign) { /* x >= 88.722839f */
+      /* overflow */
+      x *= 0x1p127f;
+      return x;
+    }
+    if (sign) {
+      /* underflow */
+      FORCE_EVAL(-0x1p-149f / x);
+      if (hx >= 0x42cff1b5) /* x <= -103.972084f */
+        return 0;
+    }
+  }
 
-	/* argument reduction */
-	if (hx > 0x3eb17218) {  /* if |x| > 0.5 ln2 */
-		if (hx > 0x3f851592)  /* if |x| > 1.5 ln2 */
-			k = invln2*x + half[sign];
-		else
-			k = 1 - sign - sign;
-		hi = x - k*ln2hi;  /* k*ln2hi is exact here */
-		lo = k*ln2lo;
-		x = hi - lo;
-	} else if (hx > 0x39000000) {  /* |x| > 2**-14 */
-		k = 0;
-		hi = x;
-		lo = 0;
-	} else {
-		/* raise inexact */
-		FORCE_EVAL(0x1p127f + x);
-		return 1 + x;
-	}
+  /* argument reduction */
+  if (hx > 0x3eb17218) { /* if |x| > 0.5 ln2 */
+    if (hx > 0x3f851592) /* if |x| > 1.5 ln2 */
+      k = invln2 * x + half[sign];
+    else
+      k = 1 - sign - sign;
+    hi = x - k * ln2hi; /* k*ln2hi is exact here */
+    lo = k * ln2lo;
+    x = hi - lo;
+  } else if (hx > 0x39000000) { /* |x| > 2**-14 */
+    k = 0;
+    hi = x;
+    lo = 0;
+  } else {
+    /* raise inexact */
+    FORCE_EVAL(0x1p127f + x);
+    return 1 + x;
+  }
 
-	/* x is now in primary range */
-	xx = x*x;
-	c = x - xx*(P1+xx*P2);
-	y = 1 + (x*c/(2-c) - lo + hi);
-	if (k == 0)
-		return y;
-	return scalbnf(y, k);
+  /* x is now in primary range */
+  xx = x * x;
+  c = x - xx * (P1 + xx * P2);
+  y = 1 + (x * c / (2 - c) - lo + hi);
+  if (k == 0)
+    return y;
+  return scalbnf(y, k);
 }
diff --git a/fusl/src/math/expl.c b/fusl/src/math/expl.c
index 0a7f44f..c677267 100644
--- a/fusl/src/math/expl.c
+++ b/fusl/src/math/expl.c
@@ -68,61 +68,54 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double expl(long double x)
-{
-	return exp(x);
+long double expl(long double x) {
+  return exp(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
 
 static const long double P[3] = {
- 1.2617719307481059087798E-4L,
- 3.0299440770744196129956E-2L,
- 9.9999999999999999991025E-1L,
+    1.2617719307481059087798E-4L, 3.0299440770744196129956E-2L,
+    9.9999999999999999991025E-1L,
 };
 static const long double Q[4] = {
- 3.0019850513866445504159E-6L,
- 2.5244834034968410419224E-3L,
- 2.2726554820815502876593E-1L,
- 2.0000000000000000000897E0L,
+    3.0019850513866445504159E-6L, 2.5244834034968410419224E-3L,
+    2.2726554820815502876593E-1L, 2.0000000000000000000897E0L,
 };
-static const long double
-LN2HI = 6.9314575195312500000000E-1L,
-LN2LO = 1.4286068203094172321215E-6L,
-LOG2E = 1.4426950408889634073599E0L;
+static const long double LN2HI = 6.9314575195312500000000E-1L,
+                         LN2LO = 1.4286068203094172321215E-6L,
+                         LOG2E = 1.4426950408889634073599E0L;
 
-long double expl(long double x)
-{
-	long double px, xx;
-	int k;
+long double expl(long double x) {
+  long double px, xx;
+  int k;
 
-	if (isnan(x))
-		return x;
-	if (x > 11356.5234062941439488L) /* x > ln(2^16384 - 0.5) */
-		return x * 0x1p16383L;
-	if (x < -11399.4985314888605581L) /* x < ln(2^-16446) */
-		return -0x1p-16445L/x;
+  if (isnan(x))
+    return x;
+  if (x > 11356.5234062941439488L) /* x > ln(2^16384 - 0.5) */
+    return x * 0x1p16383L;
+  if (x < -11399.4985314888605581L) /* x < ln(2^-16446) */
+    return -0x1p-16445L / x;
 
-	/* Express e**x = e**f 2**k
-	 *   = e**(f + k ln(2))
-	 */
-	px = floorl(LOG2E * x + 0.5);
-	k = px;
-	x -= px * LN2HI;
-	x -= px * LN2LO;
+  /* Express e**x = e**f 2**k
+   *   = e**(f + k ln(2))
+   */
+  px = floorl(LOG2E * x + 0.5);
+  k = px;
+  x -= px * LN2HI;
+  x -= px * LN2LO;
 
-	/* rational approximation of the fractional part:
-	 * e**x =  1 + 2x P(x**2)/(Q(x**2) - x P(x**2))
-	 */
-	xx = x * x;
-	px = x * __polevll(xx, P, 2);
-	x = px/(__polevll(xx, Q, 3) - px);
-	x = 1.0 + 2.0 * x;
-	return scalbnl(x, k);
+  /* rational approximation of the fractional part:
+   * e**x =  1 + 2x P(x**2)/(Q(x**2) - x P(x**2))
+   */
+  xx = x * x;
+  px = x * __polevll(xx, P, 2);
+  x = px / (__polevll(xx, Q, 3) - px);
+  x = 1.0 + 2.0 * x;
+  return scalbnl(x, k);
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-long double expl(long double x)
-{
-	return exp(x);
+long double expl(long double x) {
+  return exp(x);
 }
 #endif
diff --git a/fusl/src/math/expm1.c b/fusl/src/math/expm1.c
index ac1e61e..52cfc25 100644
--- a/fusl/src/math/expm1.c
+++ b/fusl/src/math/expm1.c
@@ -106,96 +106,99 @@
 
 #include "libm.h"
 
-static const double
-o_threshold = 7.09782712893383973096e+02, /* 0x40862E42, 0xFEFA39EF */
-ln2_hi      = 6.93147180369123816490e-01, /* 0x3fe62e42, 0xfee00000 */
-ln2_lo      = 1.90821492927058770002e-10, /* 0x3dea39ef, 0x35793c76 */
-invln2      = 1.44269504088896338700e+00, /* 0x3ff71547, 0x652b82fe */
-/* Scaled Q's: Qn_here = 2**n * Qn_above, for R(2*z) where z = hxs = x*x/2: */
-Q1 = -3.33333333333331316428e-02, /* BFA11111 111110F4 */
-Q2 =  1.58730158725481460165e-03, /* 3F5A01A0 19FE5585 */
-Q3 = -7.93650757867487942473e-05, /* BF14CE19 9EAADBB7 */
-Q4 =  4.00821782732936239552e-06, /* 3ED0CFCA 86E65239 */
-Q5 = -2.01099218183624371326e-07; /* BE8AFDB7 6E09C32D */
+static const double o_threshold =
+                        7.09782712893383973096e+02, /* 0x40862E42, 0xFEFA39EF */
+    ln2_hi = 6.93147180369123816490e-01,            /* 0x3fe62e42, 0xfee00000 */
+    ln2_lo = 1.90821492927058770002e-10,            /* 0x3dea39ef, 0x35793c76 */
+    invln2 = 1.44269504088896338700e+00,            /* 0x3ff71547, 0x652b82fe */
+    /* Scaled Q's: Qn_here = 2**n * Qn_above, for R(2*z) where z = hxs = x*x/2:
+       */
+    Q1 = -3.33333333333331316428e-02, /* BFA11111 111110F4 */
+    Q2 = 1.58730158725481460165e-03,  /* 3F5A01A0 19FE5585 */
+    Q3 = -7.93650757867487942473e-05, /* BF14CE19 9EAADBB7 */
+    Q4 = 4.00821782732936239552e-06,  /* 3ED0CFCA 86E65239 */
+    Q5 = -2.01099218183624371326e-07; /* BE8AFDB7 6E09C32D */
 
-double expm1(double x)
-{
-	double_t y,hi,lo,c,t,e,hxs,hfx,r1,twopk;
-	union {double f; uint64_t i;} u = {x};
-	uint32_t hx = u.i>>32 & 0x7fffffff;
-	int k, sign = u.i>>63;
+double expm1(double x) {
+  double_t y, hi, lo, c, t, e, hxs, hfx, r1, twopk;
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  uint32_t hx = u.i >> 32 & 0x7fffffff;
+  int k, sign = u.i >> 63;
 
-	/* filter out huge and non-finite argument */
-	if (hx >= 0x4043687A) {  /* if |x|>=56*ln2 */
-		if (isnan(x))
-			return x;
-		if (sign)
-			return -1;
-		if (x > o_threshold) {
-			x *= 0x1p1023;
-			return x;
-		}
-	}
+  /* filter out huge and non-finite argument */
+  if (hx >= 0x4043687A) { /* if |x|>=56*ln2 */
+    if (isnan(x))
+      return x;
+    if (sign)
+      return -1;
+    if (x > o_threshold) {
+      x *= 0x1p1023;
+      return x;
+    }
+  }
 
-	/* argument reduction */
-	if (hx > 0x3fd62e42) {  /* if  |x| > 0.5 ln2 */
-		if (hx < 0x3FF0A2B2) {  /* and |x| < 1.5 ln2 */
-			if (!sign) {
-				hi = x - ln2_hi;
-				lo = ln2_lo;
-				k =  1;
-			} else {
-				hi = x + ln2_hi;
-				lo = -ln2_lo;
-				k = -1;
-			}
-		} else {
-			k  = invln2*x + (sign ? -0.5 : 0.5);
-			t  = k;
-			hi = x - t*ln2_hi;  /* t*ln2_hi is exact here */
-			lo = t*ln2_lo;
-		}
-		x = hi-lo;
-		c = (hi-x)-lo;
-	} else if (hx < 0x3c900000) {  /* |x| < 2**-54, return x */
-		if (hx < 0x00100000)
-			FORCE_EVAL((float)x);
-		return x;
-	} else
-		k = 0;
+  /* argument reduction */
+  if (hx > 0x3fd62e42) {   /* if  |x| > 0.5 ln2 */
+    if (hx < 0x3FF0A2B2) { /* and |x| < 1.5 ln2 */
+      if (!sign) {
+        hi = x - ln2_hi;
+        lo = ln2_lo;
+        k = 1;
+      } else {
+        hi = x + ln2_hi;
+        lo = -ln2_lo;
+        k = -1;
+      }
+    } else {
+      k = invln2 * x + (sign ? -0.5 : 0.5);
+      t = k;
+      hi = x - t * ln2_hi; /* t*ln2_hi is exact here */
+      lo = t * ln2_lo;
+    }
+    x = hi - lo;
+    c = (hi - x) - lo;
+  } else if (hx < 0x3c900000) { /* |x| < 2**-54, return x */
+    if (hx < 0x00100000)
+      FORCE_EVAL((float)x);
+    return x;
+  } else
+    k = 0;
 
-	/* x is now in primary range */
-	hfx = 0.5*x;
-	hxs = x*hfx;
-	r1 = 1.0+hxs*(Q1+hxs*(Q2+hxs*(Q3+hxs*(Q4+hxs*Q5))));
-	t  = 3.0-r1*hfx;
-	e  = hxs*((r1-t)/(6.0 - x*t));
-	if (k == 0)   /* c is 0 */
-		return x - (x*e-hxs);
-	e  = x*(e-c) - c;
-	e -= hxs;
-	/* exp(x) ~ 2^k (x_reduced - e + 1) */
-	if (k == -1)
-		return 0.5*(x-e) - 0.5;
-	if (k == 1) {
-		if (x < -0.25)
-			return -2.0*(e-(x+0.5));
-		return 1.0+2.0*(x-e);
-	}
-	u.i = (uint64_t)(0x3ff + k)<<52;  /* 2^k */
-	twopk = u.f;
-	if (k < 0 || k > 56) {  /* suffice to return exp(x)-1 */
-		y = x - e + 1.0;
-		if (k == 1024)
-			y = y*2.0*0x1p1023;
-		else
-			y = y*twopk;
-		return y - 1.0;
-	}
-	u.i = (uint64_t)(0x3ff - k)<<52;  /* 2^-k */
-	if (k < 20)
-		y = (x-e+(1-u.f))*twopk;
-	else
-		y = (x-(e+u.f)+1)*twopk;
-	return y;
+  /* x is now in primary range */
+  hfx = 0.5 * x;
+  hxs = x * hfx;
+  r1 = 1.0 + hxs * (Q1 + hxs * (Q2 + hxs * (Q3 + hxs * (Q4 + hxs * Q5))));
+  t = 3.0 - r1 * hfx;
+  e = hxs * ((r1 - t) / (6.0 - x * t));
+  if (k == 0) /* c is 0 */
+    return x - (x * e - hxs);
+  e = x * (e - c) - c;
+  e -= hxs;
+  /* exp(x) ~ 2^k (x_reduced - e + 1) */
+  if (k == -1)
+    return 0.5 * (x - e) - 0.5;
+  if (k == 1) {
+    if (x < -0.25)
+      return -2.0 * (e - (x + 0.5));
+    return 1.0 + 2.0 * (x - e);
+  }
+  u.i = (uint64_t)(0x3ff + k) << 52; /* 2^k */
+  twopk = u.f;
+  if (k < 0 || k > 56) { /* suffice to return exp(x)-1 */
+    y = x - e + 1.0;
+    if (k == 1024)
+      y = y * 2.0 * 0x1p1023;
+    else
+      y = y * twopk;
+    return y - 1.0;
+  }
+  u.i = (uint64_t)(0x3ff - k) << 52; /* 2^-k */
+  if (k < 20)
+    y = (x - e + (1 - u.f)) * twopk;
+  else
+    y = (x - (e + u.f) + 1) * twopk;
+  return y;
 }
diff --git a/fusl/src/math/expm1f.c b/fusl/src/math/expm1f.c
index 297e0b4..3ea476e 100644
--- a/fusl/src/math/expm1f.c
+++ b/fusl/src/math/expm1f.c
@@ -15,97 +15,98 @@
 
 #include "libm.h"
 
-static const float
-o_threshold = 8.8721679688e+01, /* 0x42b17180 */
-ln2_hi      = 6.9313812256e-01, /* 0x3f317180 */
-ln2_lo      = 9.0580006145e-06, /* 0x3717f7d1 */
-invln2      = 1.4426950216e+00, /* 0x3fb8aa3b */
-/*
- * Domain [-0.34568, 0.34568], range ~[-6.694e-10, 6.696e-10]:
- * |6 / x * (1 + 2 * (1 / (exp(x) - 1) - 1 / x)) - q(x)| < 2**-30.04
- * Scaled coefficients: Qn_here = 2**n * Qn_for_q (see s_expm1.c):
- */
-Q1 = -3.3333212137e-2, /* -0x888868.0p-28 */
-Q2 =  1.5807170421e-3; /*  0xcf3010.0p-33 */
+static const float o_threshold = 8.8721679688e+01, /* 0x42b17180 */
+    ln2_hi = 6.9313812256e-01,                     /* 0x3f317180 */
+    ln2_lo = 9.0580006145e-06,                     /* 0x3717f7d1 */
+    invln2 = 1.4426950216e+00,                     /* 0x3fb8aa3b */
+                                                   /*
+                                                    * Domain [-0.34568, 0.34568], range ~[-6.694e-10, 6.696e-10]:
+                                                    * |6 / x * (1 + 2 * (1 / (exp(x) - 1) - 1 / x)) - q(x)| < 2**-30.04
+                                                    * Scaled coefficients: Qn_here = 2**n * Qn_for_q (see s_expm1.c):
+                                                    */
+    Q1 = -3.3333212137e-2,                         /* -0x888868.0p-28 */
+    Q2 = 1.5807170421e-3;                          /*  0xcf3010.0p-33 */
 
-float expm1f(float x)
-{
-	float_t y,hi,lo,c,t,e,hxs,hfx,r1,twopk;
-	union {float f; uint32_t i;} u = {x};
-	uint32_t hx = u.i & 0x7fffffff;
-	int k, sign = u.i >> 31;
+float expm1f(float x) {
+  float_t y, hi, lo, c, t, e, hxs, hfx, r1, twopk;
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  uint32_t hx = u.i & 0x7fffffff;
+  int k, sign = u.i >> 31;
 
-	/* filter out huge and non-finite argument */
-	if (hx >= 0x4195b844) {  /* if |x|>=27*ln2 */
-		if (hx > 0x7f800000)  /* NaN */
-			return x;
-		if (sign)
-			return -1;
-		if (x > o_threshold) {
-			x *= 0x1p127f;
-			return x;
-		}
-	}
+  /* filter out huge and non-finite argument */
+  if (hx >= 0x4195b844) { /* if |x|>=27*ln2 */
+    if (hx > 0x7f800000)  /* NaN */
+      return x;
+    if (sign)
+      return -1;
+    if (x > o_threshold) {
+      x *= 0x1p127f;
+      return x;
+    }
+  }
 
-	/* argument reduction */
-	if (hx > 0x3eb17218) {           /* if  |x| > 0.5 ln2 */
-		if (hx < 0x3F851592) {       /* and |x| < 1.5 ln2 */
-			if (!sign) {
-				hi = x - ln2_hi;
-				lo = ln2_lo;
-				k =  1;
-			} else {
-				hi = x + ln2_hi;
-				lo = -ln2_lo;
-				k = -1;
-			}
-		} else {
-			k  = invln2*x + (sign ? -0.5f : 0.5f);
-			t  = k;
-			hi = x - t*ln2_hi;      /* t*ln2_hi is exact here */
-			lo = t*ln2_lo;
-		}
-		x = hi-lo;
-		c = (hi-x)-lo;
-	} else if (hx < 0x33000000) {  /* when |x|<2**-25, return x */
-		if (hx < 0x00800000)
-			FORCE_EVAL(x*x);
-		return x;
-	} else
-		k = 0;
+  /* argument reduction */
+  if (hx > 0x3eb17218) {   /* if  |x| > 0.5 ln2 */
+    if (hx < 0x3F851592) { /* and |x| < 1.5 ln2 */
+      if (!sign) {
+        hi = x - ln2_hi;
+        lo = ln2_lo;
+        k = 1;
+      } else {
+        hi = x + ln2_hi;
+        lo = -ln2_lo;
+        k = -1;
+      }
+    } else {
+      k = invln2 * x + (sign ? -0.5f : 0.5f);
+      t = k;
+      hi = x - t * ln2_hi; /* t*ln2_hi is exact here */
+      lo = t * ln2_lo;
+    }
+    x = hi - lo;
+    c = (hi - x) - lo;
+  } else if (hx < 0x33000000) { /* when |x|<2**-25, return x */
+    if (hx < 0x00800000)
+      FORCE_EVAL(x * x);
+    return x;
+  } else
+    k = 0;
 
-	/* x is now in primary range */
-	hfx = 0.5f*x;
-	hxs = x*hfx;
-	r1 = 1.0f+hxs*(Q1+hxs*Q2);
-	t  = 3.0f - r1*hfx;
-	e  = hxs*((r1-t)/(6.0f - x*t));
-	if (k == 0)  /* c is 0 */
-		return x - (x*e-hxs);
-	e  = x*(e-c) - c;
-	e -= hxs;
-	/* exp(x) ~ 2^k (x_reduced - e + 1) */
-	if (k == -1)
-		return 0.5f*(x-e) - 0.5f;
-	if (k == 1) {
-		if (x < -0.25f)
-			return -2.0f*(e-(x+0.5f));
-		return 1.0f + 2.0f*(x-e);
-	}
-	u.i = (0x7f+k)<<23;  /* 2^k */
-	twopk = u.f;
-	if (k < 0 || k > 56) {   /* suffice to return exp(x)-1 */
-		y = x - e + 1.0f;
-		if (k == 128)
-			y = y*2.0f*0x1p127f;
-		else
-			y = y*twopk;
-		return y - 1.0f;
-	}
-	u.i = (0x7f-k)<<23;  /* 2^-k */
-	if (k < 23)
-		y = (x-e+(1-u.f))*twopk;
-	else
-		y = (x-(e+u.f)+1)*twopk;
-	return y;
+  /* x is now in primary range */
+  hfx = 0.5f * x;
+  hxs = x * hfx;
+  r1 = 1.0f + hxs * (Q1 + hxs * Q2);
+  t = 3.0f - r1 * hfx;
+  e = hxs * ((r1 - t) / (6.0f - x * t));
+  if (k == 0) /* c is 0 */
+    return x - (x * e - hxs);
+  e = x * (e - c) - c;
+  e -= hxs;
+  /* exp(x) ~ 2^k (x_reduced - e + 1) */
+  if (k == -1)
+    return 0.5f * (x - e) - 0.5f;
+  if (k == 1) {
+    if (x < -0.25f)
+      return -2.0f * (e - (x + 0.5f));
+    return 1.0f + 2.0f * (x - e);
+  }
+  u.i = (0x7f + k) << 23; /* 2^k */
+  twopk = u.f;
+  if (k < 0 || k > 56) { /* suffice to return exp(x)-1 */
+    y = x - e + 1.0f;
+    if (k == 128)
+      y = y * 2.0f * 0x1p127f;
+    else
+      y = y * twopk;
+    return y - 1.0f;
+  }
+  u.i = (0x7f - k) << 23; /* 2^-k */
+  if (k < 23)
+    y = (x - e + (1 - u.f)) * twopk;
+  else
+    y = (x - (e + u.f) + 1) * twopk;
+  return y;
 }
diff --git a/fusl/src/math/expm1l.c b/fusl/src/math/expm1l.c
index d171507..c7149a8 100644
--- a/fusl/src/math/expm1l.c
+++ b/fusl/src/math/expm1l.c
@@ -50,74 +50,70 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double expm1l(long double x)
-{
-	return expm1(x);
+long double expm1l(long double x) {
+  return expm1(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
 
 /* exp(x) - 1 = x + 0.5 x^2 + x^3 P(x)/Q(x)
    -.5 ln 2  <  x  <  .5 ln 2
    Theoretical peak relative error = 3.4e-22  */
-static const long double
-P0 = -1.586135578666346600772998894928250240826E4L,
-P1 =  2.642771505685952966904660652518429479531E3L,
-P2 = -3.423199068835684263987132888286791620673E2L,
-P3 =  1.800826371455042224581246202420972737840E1L,
-P4 = -5.238523121205561042771939008061958820811E-1L,
-Q0 = -9.516813471998079611319047060563358064497E4L,
-Q1 =  3.964866271411091674556850458227710004570E4L,
-Q2 = -7.207678383830091850230366618190187434796E3L,
-Q3 =  7.206038318724600171970199625081491823079E2L,
-Q4 = -4.002027679107076077238836622982900945173E1L,
-/* Q5 = 1.000000000000000000000000000000000000000E0 */
-/* C1 + C2 = ln 2 */
-C1 = 6.93145751953125E-1L,
-C2 = 1.428606820309417232121458176568075500134E-6L,
-/* ln 2^-65 */
-minarg = -4.5054566736396445112120088E1L,
-/* ln 2^16384 */
-maxarg = 1.1356523406294143949492E4L;
+static const long double P0 = -1.586135578666346600772998894928250240826E4L,
+                         P1 = 2.642771505685952966904660652518429479531E3L,
+                         P2 = -3.423199068835684263987132888286791620673E2L,
+                         P3 = 1.800826371455042224581246202420972737840E1L,
+                         P4 = -5.238523121205561042771939008061958820811E-1L,
+                         Q0 = -9.516813471998079611319047060563358064497E4L,
+                         Q1 = 3.964866271411091674556850458227710004570E4L,
+                         Q2 = -7.207678383830091850230366618190187434796E3L,
+                         Q3 = 7.206038318724600171970199625081491823079E2L,
+                         Q4 = -4.002027679107076077238836622982900945173E1L,
+                         /* Q5 = 1.000000000000000000000000000000000000000E0 */
+    /* C1 + C2 = ln 2 */
+    C1 = 6.93145751953125E-1L,
+                         C2 = 1.428606820309417232121458176568075500134E-6L,
+                         /* ln 2^-65 */
+    minarg = -4.5054566736396445112120088E1L,
+                         /* ln 2^16384 */
+    maxarg = 1.1356523406294143949492E4L;
 
-long double expm1l(long double x)
-{
-	long double px, qx, xx;
-	int k;
+long double expm1l(long double x) {
+  long double px, qx, xx;
+  int k;
 
-	if (isnan(x))
-		return x;
-	if (x > maxarg)
-		return x*0x1p16383L; /* overflow, unless x==inf */
-	if (x == 0.0)
-		return x;
-	if (x < minarg)
-		return -1.0;
+  if (isnan(x))
+    return x;
+  if (x > maxarg)
+    return x * 0x1p16383L; /* overflow, unless x==inf */
+  if (x == 0.0)
+    return x;
+  if (x < minarg)
+    return -1.0;
 
-	xx = C1 + C2;
-	/* Express x = ln 2 (k + remainder), remainder not exceeding 1/2. */
-	px = floorl(0.5 + x / xx);
-	k = px;
-	/* remainder times ln 2 */
-	x -= px * C1;
-	x -= px * C2;
+  xx = C1 + C2;
+  /* Express x = ln 2 (k + remainder), remainder not exceeding 1/2. */
+  px = floorl(0.5 + x / xx);
+  k = px;
+  /* remainder times ln 2 */
+  x -= px * C1;
+  x -= px * C2;
 
-	/* Approximate exp(remainder ln 2).*/
-	px = (((( P4 * x + P3) * x + P2) * x + P1) * x + P0) * x;
-	qx = (((( x + Q4) * x + Q3) * x + Q2) * x + Q1) * x + Q0;
-	xx = x * x;
-	qx = x + (0.5 * xx + xx * px / qx);
+  /* Approximate exp(remainder ln 2).*/
+  px = ((((P4 * x + P3) * x + P2) * x + P1) * x + P0) * x;
+  qx = ((((x + Q4) * x + Q3) * x + Q2) * x + Q1) * x + Q0;
+  xx = x * x;
+  qx = x + (0.5 * xx + xx * px / qx);
 
-	/* exp(x) = exp(k ln 2) exp(remainder ln 2) = 2^k exp(remainder ln 2).
-	 We have qx = exp(remainder ln 2) - 1, so
-	 exp(x) - 1  =  2^k (qx + 1) - 1  =  2^k qx + 2^k - 1.  */
-	px = scalbnl(1.0, k);
-	x = px * qx + (px - 1.0);
-	return x;
+  /* exp(x) = exp(k ln 2) exp(remainder ln 2) = 2^k exp(remainder ln 2).
+   We have qx = exp(remainder ln 2) - 1, so
+   exp(x) - 1  =  2^k (qx + 1) - 1  =  2^k qx + 2^k - 1.  */
+  px = scalbnl(1.0, k);
+  x = px * qx + (px - 1.0);
+  return x;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-long double expm1l(long double x)
-{
-	return expm1(x);
+long double expm1l(long double x) {
+  return expm1(x);
 }
 #endif
diff --git a/fusl/src/math/fabs.c b/fusl/src/math/fabs.c
index e8258cf..0e1a570 100644
--- a/fusl/src/math/fabs.c
+++ b/fusl/src/math/fabs.c
@@ -1,9 +1,11 @@
 #include <math.h>
 #include <stdint.h>
 
-double fabs(double x)
-{
-	union {double f; uint64_t i;} u = {x};
-	u.i &= -1ULL/2;
-	return u.f;
+double fabs(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  u.i &= -1ULL / 2;
+  return u.f;
 }
diff --git a/fusl/src/math/fabsf.c b/fusl/src/math/fabsf.c
index 4efc8d6..55c8b29 100644
--- a/fusl/src/math/fabsf.c
+++ b/fusl/src/math/fabsf.c
@@ -1,9 +1,11 @@
 #include <math.h>
 #include <stdint.h>
 
-float fabsf(float x)
-{
-	union {float f; uint32_t i;} u = {x};
-	u.i &= 0x7fffffff;
-	return u.f;
+float fabsf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  u.i &= 0x7fffffff;
+  return u.f;
 }
diff --git a/fusl/src/math/fabsl.c b/fusl/src/math/fabsl.c
index c4f36ec..2af6eb9 100644
--- a/fusl/src/math/fabsl.c
+++ b/fusl/src/math/fabsl.c
@@ -1,15 +1,13 @@
 #include "libm.h"
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double fabsl(long double x)
-{
-	return fabs(x);
+long double fabsl(long double x) {
+  return fabs(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
-long double fabsl(long double x)
-{
-	union ldshape u = {x};
+long double fabsl(long double x) {
+  union ldshape u = {x};
 
-	u.i.se &= 0x7fff;
-	return u.f;
+  u.i.se &= 0x7fff;
+  return u.f;
 }
 #endif
diff --git a/fusl/src/math/fdim.c b/fusl/src/math/fdim.c
index 9585460..1eb169e 100644
--- a/fusl/src/math/fdim.c
+++ b/fusl/src/math/fdim.c
@@ -1,10 +1,9 @@
 #include <math.h>
 
-double fdim(double x, double y)
-{
-	if (isnan(x))
-		return x;
-	if (isnan(y))
-		return y;
-	return x > y ? x - y : 0;
+double fdim(double x, double y) {
+  if (isnan(x))
+    return x;
+  if (isnan(y))
+    return y;
+  return x > y ? x - y : 0;
 }
diff --git a/fusl/src/math/fdimf.c b/fusl/src/math/fdimf.c
index 543c364..454768b 100644
--- a/fusl/src/math/fdimf.c
+++ b/fusl/src/math/fdimf.c
@@ -1,10 +1,9 @@
 #include <math.h>
 
-float fdimf(float x, float y)
-{
-	if (isnan(x))
-		return x;
-	if (isnan(y))
-		return y;
-	return x > y ? x - y : 0;
+float fdimf(float x, float y) {
+  if (isnan(x))
+    return x;
+  if (isnan(y))
+    return y;
+  return x > y ? x - y : 0;
 }
diff --git a/fusl/src/math/fdiml.c b/fusl/src/math/fdiml.c
index 62e29b7..c77ec63 100644
--- a/fusl/src/math/fdiml.c
+++ b/fusl/src/math/fdiml.c
@@ -2,17 +2,15 @@
 #include <float.h>
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double fdiml(long double x, long double y)
-{
-	return fdim(x, y);
+long double fdiml(long double x, long double y) {
+  return fdim(x, y);
 }
 #else
-long double fdiml(long double x, long double y)
-{
-	if (isnan(x))
-		return x;
-	if (isnan(y))
-		return y;
-	return x > y ? x - y : 0;
+long double fdiml(long double x, long double y) {
+  if (isnan(x))
+    return x;
+  if (isnan(y))
+    return y;
+  return x > y ? x - y : 0;
 }
 #endif
diff --git a/fusl/src/math/finite.c b/fusl/src/math/finite.c
index 25a0575..98d3bd9 100644
--- a/fusl/src/math/finite.c
+++ b/fusl/src/math/finite.c
@@ -1,7 +1,6 @@
 #define _GNU_SOURCE
 #include <math.h>
 
-int finite(double x)
-{
-	return isfinite(x);
+int finite(double x) {
+  return isfinite(x);
 }
diff --git a/fusl/src/math/finitef.c b/fusl/src/math/finitef.c
index 2c4c771..9c6da62 100644
--- a/fusl/src/math/finitef.c
+++ b/fusl/src/math/finitef.c
@@ -1,7 +1,6 @@
 #define _GNU_SOURCE
 #include <math.h>
 
-int finitef(float x)
-{
-	return isfinite(x);
+int finitef(float x) {
+  return isfinite(x);
 }
diff --git a/fusl/src/math/floor.c b/fusl/src/math/floor.c
index 14a31cd..53d0ace 100644
--- a/fusl/src/math/floor.c
+++ b/fusl/src/math/floor.c
@@ -1,31 +1,33 @@
 #include "libm.h"
 
-#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1
+#if FLT_EVAL_METHOD == 0 || FLT_EVAL_METHOD == 1
 #define EPS DBL_EPSILON
-#elif FLT_EVAL_METHOD==2
+#elif FLT_EVAL_METHOD == 2
 #define EPS LDBL_EPSILON
 #endif
-static const double_t toint = 1/EPS;
+static const double_t toint = 1 / EPS;
 
-double floor(double x)
-{
-	union {double f; uint64_t i;} u = {x};
-	int e = u.i >> 52 & 0x7ff;
-	double_t y;
+double floor(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  int e = u.i >> 52 & 0x7ff;
+  double_t y;
 
-	if (e >= 0x3ff+52 || x == 0)
-		return x;
-	/* y = int(x) - x, where int(x) is an integer neighbor of x */
-	if (u.i >> 63)
-		y = x - toint + toint - x;
-	else
-		y = x + toint - toint - x;
-	/* special case because of non-nearest rounding modes */
-	if (e <= 0x3ff-1) {
-		FORCE_EVAL(y);
-		return u.i >> 63 ? -1 : 0;
-	}
-	if (y > 0)
-		return x + y - 1;
-	return x + y;
+  if (e >= 0x3ff + 52 || x == 0)
+    return x;
+  /* y = int(x) - x, where int(x) is an integer neighbor of x */
+  if (u.i >> 63)
+    y = x - toint + toint - x;
+  else
+    y = x + toint - toint - x;
+  /* special case because of non-nearest rounding modes */
+  if (e <= 0x3ff - 1) {
+    FORCE_EVAL(y);
+    return u.i >> 63 ? -1 : 0;
+  }
+  if (y > 0)
+    return x + y - 1;
+  return x + y;
 }
diff --git a/fusl/src/math/floorf.c b/fusl/src/math/floorf.c
index dceec73..fd40863 100644
--- a/fusl/src/math/floorf.c
+++ b/fusl/src/math/floorf.c
@@ -1,27 +1,29 @@
 #include "libm.h"
 
-float floorf(float x)
-{
-	union {float f; uint32_t i;} u = {x};
-	int e = (int)(u.i >> 23 & 0xff) - 0x7f;
-	uint32_t m;
+float floorf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  int e = (int)(u.i >> 23 & 0xff) - 0x7f;
+  uint32_t m;
 
-	if (e >= 23)
-		return x;
-	if (e >= 0) {
-		m = 0x007fffff >> e;
-		if ((u.i & m) == 0)
-			return x;
-		FORCE_EVAL(x + 0x1p120f);
-		if (u.i >> 31)
-			u.i += m;
-		u.i &= ~m;
-	} else {
-		FORCE_EVAL(x + 0x1p120f);
-		if (u.i >> 31 == 0)
-			u.i = 0;
-		else if (u.i << 1)
-			u.f = -1.0;
-	}
-	return u.f;
+  if (e >= 23)
+    return x;
+  if (e >= 0) {
+    m = 0x007fffff >> e;
+    if ((u.i & m) == 0)
+      return x;
+    FORCE_EVAL(x + 0x1p120f);
+    if (u.i >> 31)
+      u.i += m;
+    u.i &= ~m;
+  } else {
+    FORCE_EVAL(x + 0x1p120f);
+    if (u.i >> 31 == 0)
+      u.i = 0;
+    else if (u.i << 1)
+      u.f = -1.0;
+  }
+  return u.f;
 }
diff --git a/fusl/src/math/floorl.c b/fusl/src/math/floorl.c
index 16aaec4..9a7703c 100644
--- a/fusl/src/math/floorl.c
+++ b/fusl/src/math/floorl.c
@@ -1,34 +1,32 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double floorl(long double x)
-{
-	return floor(x);
+long double floorl(long double x) {
+  return floor(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
 
-static const long double toint = 1/LDBL_EPSILON;
+static const long double toint = 1 / LDBL_EPSILON;
 
-long double floorl(long double x)
-{
-	union ldshape u = {x};
-	int e = u.i.se & 0x7fff;
-	long double y;
+long double floorl(long double x) {
+  union ldshape u = {x};
+  int e = u.i.se & 0x7fff;
+  long double y;
 
-	if (e >= 0x3fff+LDBL_MANT_DIG-1 || x == 0)
-		return x;
-	/* y = int(x) - x, where int(x) is an integer neighbor of x */
-	if (u.i.se >> 15)
-		y = x - toint + toint - x;
-	else
-		y = x + toint - toint - x;
-	/* special case because of non-nearest rounding modes */
-	if (e <= 0x3fff-1) {
-		FORCE_EVAL(y);
-		return u.i.se >> 15 ? -1 : 0;
-	}
-	if (y > 0)
-		return x + y - 1;
-	return x + y;
+  if (e >= 0x3fff + LDBL_MANT_DIG - 1 || x == 0)
+    return x;
+  /* y = int(x) - x, where int(x) is an integer neighbor of x */
+  if (u.i.se >> 15)
+    y = x - toint + toint - x;
+  else
+    y = x + toint - toint - x;
+  /* special case because of non-nearest rounding modes */
+  if (e <= 0x3fff - 1) {
+    FORCE_EVAL(y);
+    return u.i.se >> 15 ? -1 : 0;
+  }
+  if (y > 0)
+    return x + y - 1;
+  return x + y;
 }
 #endif
diff --git a/fusl/src/math/fma.c b/fusl/src/math/fma.c
index b4e685b..cec9e3b 100644
--- a/fusl/src/math/fma.c
+++ b/fusl/src/math/fma.c
@@ -1,168 +1,170 @@
 #include <fenv.h>
 #include "libm.h"
 
-#if LDBL_MANT_DIG==64 && LDBL_MAX_EXP==16384
+#if LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
 /* exact add, assumes exponent_x >= exponent_y */
-static void add(long double *hi, long double *lo, long double x, long double y)
-{
-	long double r;
+static void add(long double* hi,
+                long double* lo,
+                long double x,
+                long double y) {
+  long double r;
 
-	r = x + y;
-	*hi = r;
-	r -= x;
-	*lo = y - r;
+  r = x + y;
+  *hi = r;
+  r -= x;
+  *lo = y - r;
 }
 
 /* exact mul, assumes no over/underflow */
-static void mul(long double *hi, long double *lo, long double x, long double y)
-{
-	static const long double c = 1.0 + 0x1p32L;
-	long double cx, xh, xl, cy, yh, yl;
+static void mul(long double* hi,
+                long double* lo,
+                long double x,
+                long double y) {
+  static const long double c = 1.0 + 0x1p32L;
+  long double cx, xh, xl, cy, yh, yl;
 
-	cx = c*x;
-	xh = (x - cx) + cx;
-	xl = x - xh;
-	cy = c*y;
-	yh = (y - cy) + cy;
-	yl = y - yh;
-	*hi = x*y;
-	*lo = (xh*yh - *hi) + xh*yl + xl*yh + xl*yl;
+  cx = c * x;
+  xh = (x - cx) + cx;
+  xl = x - xh;
+  cy = c * y;
+  yh = (y - cy) + cy;
+  yl = y - yh;
+  *hi = x * y;
+  *lo = (xh * yh - *hi) + xh * yl + xl * yh + xl * yl;
 }
 
 /*
 assume (long double)(hi+lo) == hi
-return an adjusted hi so that rounding it to double (or less) precision is correct
+return an adjusted hi so that rounding it to double (or less) precision is
+correct
 */
-static long double adjust(long double hi, long double lo)
-{
-	union ldshape uhi, ulo;
+static long double adjust(long double hi, long double lo) {
+  union ldshape uhi, ulo;
 
-	if (lo == 0)
-		return hi;
-	uhi.f = hi;
-	if (uhi.i.m & 0x3ff)
-		return hi;
-	ulo.f = lo;
-	if ((uhi.i.se & 0x8000) == (ulo.i.se & 0x8000))
-		uhi.i.m++;
-	else {
-		/* handle underflow and take care of ld80 implicit msb */
-		if (uhi.i.m << 1 == 0) {
-			uhi.i.m = 0;
-			uhi.i.se--;
-		}
-		uhi.i.m--;
-	}
-	return uhi.f;
+  if (lo == 0)
+    return hi;
+  uhi.f = hi;
+  if (uhi.i.m & 0x3ff)
+    return hi;
+  ulo.f = lo;
+  if ((uhi.i.se & 0x8000) == (ulo.i.se & 0x8000))
+    uhi.i.m++;
+  else {
+    /* handle underflow and take care of ld80 implicit msb */
+    if (uhi.i.m << 1 == 0) {
+      uhi.i.m = 0;
+      uhi.i.se--;
+    }
+    uhi.i.m--;
+  }
+  return uhi.f;
 }
 
-/* adjusted add so the result is correct when rounded to double (or less) precision */
-static long double dadd(long double x, long double y)
-{
-	add(&x, &y, x, y);
-	return adjust(x, y);
+/* adjusted add so the result is correct when rounded to double (or less)
+ * precision */
+static long double dadd(long double x, long double y) {
+  add(&x, &y, x, y);
+  return adjust(x, y);
 }
 
-/* adjusted mul so the result is correct when rounded to double (or less) precision */
-static long double dmul(long double x, long double y)
-{
-	mul(&x, &y, x, y);
-	return adjust(x, y);
+/* adjusted mul so the result is correct when rounded to double (or less)
+ * precision */
+static long double dmul(long double x, long double y) {
+  mul(&x, &y, x, y);
+  return adjust(x, y);
 }
 
-static int getexp(long double x)
-{
-	union ldshape u;
-	u.f = x;
-	return u.i.se & 0x7fff;
+static int getexp(long double x) {
+  union ldshape u;
+  u.f = x;
+  return u.i.se & 0x7fff;
 }
 
-double fma(double x, double y, double z)
-{
-	PRAGMA_STDC_FENV_ACCESS_ON
-	long double hi, lo1, lo2, xy;
-	int round, ez, exy;
+double fma(double x, double y, double z) {
+  PRAGMA_STDC_FENV_ACCESS_ON
+  long double hi, lo1, lo2, xy;
+  int round, ez, exy;
 
-	/* handle +-inf,nan */
-	if (!isfinite(x) || !isfinite(y))
-		return x*y + z;
-	if (!isfinite(z))
-		return z;
-	/* handle +-0 */
-	if (x == 0.0 || y == 0.0)
-		return x*y + z;
-	round = fegetround();
-	if (z == 0.0) {
-		if (round == FE_TONEAREST)
-			return dmul(x, y);
-		return x*y;
-	}
+  /* handle +-inf,nan */
+  if (!isfinite(x) || !isfinite(y))
+    return x * y + z;
+  if (!isfinite(z))
+    return z;
+  /* handle +-0 */
+  if (x == 0.0 || y == 0.0)
+    return x * y + z;
+  round = fegetround();
+  if (z == 0.0) {
+    if (round == FE_TONEAREST)
+      return dmul(x, y);
+    return x * y;
+  }
 
-	/* exact mul and add require nearest rounding */
-	/* spurious inexact exceptions may be raised */
-	fesetround(FE_TONEAREST);
-	mul(&xy, &lo1, x, y);
-	exy = getexp(xy);
-	ez = getexp(z);
-	if (ez > exy) {
-		add(&hi, &lo2, z, xy);
-	} else if (ez > exy - 12) {
-		add(&hi, &lo2, xy, z);
-		if (hi == 0) {
-			/*
-			xy + z is 0, but it should be calculated with the
-			original rounding mode so the sign is correct, if the
-			compiler does not support FENV_ACCESS ON it does not
-			know about the changed rounding mode and eliminates
-			the xy + z below without the volatile memory access
-			*/
-			volatile double z_;
-			fesetround(round);
-			z_ = z;
-			return (xy + z_) + lo1;
-		}
-	} else {
-		/*
-		ez <= exy - 12
-		the 12 extra bits (1guard, 11round+sticky) are needed so with
-			lo = dadd(lo1, lo2)
-		elo <= ehi - 11, and we use the last 10 bits in adjust so
-			dadd(hi, lo)
-		gives correct result when rounded to double
-		*/
-		hi = xy;
-		lo2 = z;
-	}
-	/*
-	the result is stored before return for correct precision and exceptions
+  /* exact mul and add require nearest rounding */
+  /* spurious inexact exceptions may be raised */
+  fesetround(FE_TONEAREST);
+  mul(&xy, &lo1, x, y);
+  exy = getexp(xy);
+  ez = getexp(z);
+  if (ez > exy) {
+    add(&hi, &lo2, z, xy);
+  } else if (ez > exy - 12) {
+    add(&hi, &lo2, xy, z);
+    if (hi == 0) {
+      /*
+      xy + z is 0, but it should be calculated with the
+      original rounding mode so the sign is correct, if the
+      compiler does not support FENV_ACCESS ON it does not
+      know about the changed rounding mode and eliminates
+      the xy + z below without the volatile memory access
+      */
+      volatile double z_;
+      fesetround(round);
+      z_ = z;
+      return (xy + z_) + lo1;
+    }
+  } else {
+    /*
+    ez <= exy - 12
+    the 12 extra bits (1guard, 11round+sticky) are needed so with
+            lo = dadd(lo1, lo2)
+    elo <= ehi - 11, and we use the last 10 bits in adjust so
+            dadd(hi, lo)
+    gives correct result when rounded to double
+    */
+    hi = xy;
+    lo2 = z;
+  }
+  /*
+  the result is stored before return for correct precision and exceptions
 
-	one corner case is when the underflow flag should be raised because
-	the precise result is an inexact subnormal double, but the calculated
-	long double result is an exact subnormal double
-	(so rounding to double does not raise exceptions)
+  one corner case is when the underflow flag should be raised because
+  the precise result is an inexact subnormal double, but the calculated
+  long double result is an exact subnormal double
+  (so rounding to double does not raise exceptions)
 
-	in nearest rounding mode dadd takes care of this: the last bit of the
-	result is adjusted so rounding sees an inexact value when it should
+  in nearest rounding mode dadd takes care of this: the last bit of the
+  result is adjusted so rounding sees an inexact value when it should
 
-	in non-nearest rounding mode fenv is used for the workaround
-	*/
-	fesetround(round);
-	if (round == FE_TONEAREST)
-		z = dadd(hi, dadd(lo1, lo2));
-	else {
+  in non-nearest rounding mode fenv is used for the workaround
+  */
+  fesetround(round);
+  if (round == FE_TONEAREST)
+    z = dadd(hi, dadd(lo1, lo2));
+  else {
 #if defined(FE_INEXACT) && defined(FE_UNDERFLOW)
-		int e = fetestexcept(FE_INEXACT);
-		feclearexcept(FE_INEXACT);
+    int e = fetestexcept(FE_INEXACT);
+    feclearexcept(FE_INEXACT);
 #endif
-		z = hi + (lo1 + lo2);
+    z = hi + (lo1 + lo2);
 #if defined(FE_INEXACT) && defined(FE_UNDERFLOW)
-		if (getexp(z) < 0x3fff-1022 && fetestexcept(FE_INEXACT))
-			feraiseexcept(FE_UNDERFLOW);
-		else if (e)
-			feraiseexcept(FE_INEXACT);
+    if (getexp(z) < 0x3fff - 1022 && fetestexcept(FE_INEXACT))
+      feraiseexcept(FE_UNDERFLOW);
+    else if (e)
+      feraiseexcept(FE_INEXACT);
 #endif
-	}
-	return z;
+  }
+  return z;
 }
 #else
 /* origin: FreeBSD /usr/src/lib/msun/src/s_fma.c */
@@ -198,8 +200,8 @@
  * bits of the result.
  */
 struct dd {
-	double hi;
-	double lo;
+  double hi;
+  double lo;
 };
 
 /*
@@ -207,15 +209,14 @@
  * that both a and b are finite, but make no assumptions about their relative
  * magnitudes.
  */
-static inline struct dd dd_add(double a, double b)
-{
-	struct dd ret;
-	double s;
+static inline struct dd dd_add(double a, double b) {
+  struct dd ret;
+  double s;
 
-	ret.hi = a + b;
-	s = ret.hi - a;
-	ret.lo = (a - (ret.hi - s)) + (b - s);
-	return (ret);
+  ret.hi = a + b;
+  s = ret.hi - a;
+  ret.lo = (a - (ret.hi - s)) + (b - s);
+  return (ret);
 }
 
 /*
@@ -229,22 +230,24 @@
  *     J. Coonen.  An Implementation Guide to a Proposed Standard for
  *     Floating-Point Arithmetic.  Computer, vol. 13, no. 1, Jan 1980.
  */
-static inline double add_adjusted(double a, double b)
-{
-	struct dd sum;
-	union {double f; uint64_t i;} uhi, ulo;
+static inline double add_adjusted(double a, double b) {
+  struct dd sum;
+  union {
+    double f;
+    uint64_t i;
+  } uhi, ulo;
 
-	sum = dd_add(a, b);
-	if (sum.lo != 0) {
-		uhi.f = sum.hi;
-		if ((uhi.i & 1) == 0) {
-			/* hibits += (int)copysign(1.0, sum.hi * sum.lo) */
-			ulo.f = sum.lo;
-			uhi.i += 1 - ((uhi.i ^ ulo.i) >> 62);
-			sum.hi = uhi.f;
-		}
-	}
-	return (sum.hi);
+  sum = dd_add(a, b);
+  if (sum.lo != 0) {
+    uhi.f = sum.hi;
+    if ((uhi.i & 1) == 0) {
+      /* hibits += (int)copysign(1.0, sum.hi * sum.lo) */
+      ulo.f = sum.lo;
+      uhi.i += 1 - ((uhi.i ^ ulo.i) >> 62);
+      sum.hi = uhi.f;
+    }
+  }
+  return (sum.hi);
 }
 
 /*
@@ -252,35 +255,37 @@
  * that the result will be subnormal, and care is taken to ensure that
  * double rounding does not occur.
  */
-static inline double add_and_denormalize(double a, double b, int scale)
-{
-	struct dd sum;
-	union {double f; uint64_t i;} uhi, ulo;
-	int bits_lost;
+static inline double add_and_denormalize(double a, double b, int scale) {
+  struct dd sum;
+  union {
+    double f;
+    uint64_t i;
+  } uhi, ulo;
+  int bits_lost;
 
-	sum = dd_add(a, b);
+  sum = dd_add(a, b);
 
-	/*
-	 * If we are losing at least two bits of accuracy to denormalization,
-	 * then the first lost bit becomes a round bit, and we adjust the
-	 * lowest bit of sum.hi to make it a sticky bit summarizing all the
-	 * bits in sum.lo. With the sticky bit adjusted, the hardware will
-	 * break any ties in the correct direction.
-	 *
-	 * If we are losing only one bit to denormalization, however, we must
-	 * break the ties manually.
-	 */
-	if (sum.lo != 0) {
-		uhi.f = sum.hi;
-		bits_lost = -((int)(uhi.i >> 52) & 0x7ff) - scale + 1;
-		if ((bits_lost != 1) ^ (int)(uhi.i & 1)) {
-			/* hibits += (int)copysign(1.0, sum.hi * sum.lo) */
-			ulo.f = sum.lo;
-			uhi.i += 1 - (((uhi.i ^ ulo.i) >> 62) & 2);
-			sum.hi = uhi.f;
-		}
-	}
-	return scalbn(sum.hi, scale);
+  /*
+   * If we are losing at least two bits of accuracy to denormalization,
+   * then the first lost bit becomes a round bit, and we adjust the
+   * lowest bit of sum.hi to make it a sticky bit summarizing all the
+   * bits in sum.lo. With the sticky bit adjusted, the hardware will
+   * break any ties in the correct direction.
+   *
+   * If we are losing only one bit to denormalization, however, we must
+   * break the ties manually.
+   */
+  if (sum.lo != 0) {
+    uhi.f = sum.hi;
+    bits_lost = -((int)(uhi.i >> 52) & 0x7ff) - scale + 1;
+    if ((bits_lost != 1) ^ (int)(uhi.i & 1)) {
+      /* hibits += (int)copysign(1.0, sum.hi * sum.lo) */
+      ulo.f = sum.lo;
+      uhi.i += 1 - (((uhi.i ^ ulo.i) >> 62) & 2);
+      sum.hi = uhi.f;
+    }
+  }
+  return scalbn(sum.hi, scale);
 }
 
 /*
@@ -288,28 +293,27 @@
  * that both a and b are normalized, so no underflow or overflow will occur.
  * The current rounding mode must be round-to-nearest.
  */
-static inline struct dd dd_mul(double a, double b)
-{
-	static const double split = 0x1p27 + 1.0;
-	struct dd ret;
-	double ha, hb, la, lb, p, q;
+static inline struct dd dd_mul(double a, double b) {
+  static const double split = 0x1p27 + 1.0;
+  struct dd ret;
+  double ha, hb, la, lb, p, q;
 
-	p = a * split;
-	ha = a - p;
-	ha += p;
-	la = a - ha;
+  p = a * split;
+  ha = a - p;
+  ha += p;
+  la = a - ha;
 
-	p = b * split;
-	hb = b - p;
-	hb += p;
-	lb = b - hb;
+  p = b * split;
+  hb = b - p;
+  hb += p;
+  lb = b - hb;
 
-	p = ha * hb;
-	q = ha * lb + la * hb;
+  p = ha * hb;
+  q = ha * lb + la * hb;
 
-	ret.hi = p + q;
-	ret.lo = p - ret.hi + q + la * lb;
-	return (ret);
+  ret.hi = p + q;
+  ret.lo = p - ret.hi + q + la * lb;
+  return (ret);
 }
 
 /*
@@ -329,132 +333,131 @@
  * Hardware instructions should be used on architectures that support it,
  * since this implementation will likely be several times slower.
  */
-double fma(double x, double y, double z)
-{
-	#pragma STDC FENV_ACCESS ON
-	double xs, ys, zs, adj;
-	struct dd xy, r;
-	int oround;
-	int ex, ey, ez;
-	int spread;
+double fma(double x, double y, double z) {
+#pragma STDC FENV_ACCESS ON
+  double xs, ys, zs, adj;
+  struct dd xy, r;
+  int oround;
+  int ex, ey, ez;
+  int spread;
 
-	/*
-	 * Handle special cases. The order of operations and the particular
-	 * return values here are crucial in handling special cases involving
-	 * infinities, NaNs, overflows, and signed zeroes correctly.
-	 */
-	if (!isfinite(x) || !isfinite(y))
-		return (x * y + z);
-	if (!isfinite(z))
-		return (z);
-	if (x == 0.0 || y == 0.0)
-		return (x * y + z);
-	if (z == 0.0)
-		return (x * y);
+  /*
+   * Handle special cases. The order of operations and the particular
+   * return values here are crucial in handling special cases involving
+   * infinities, NaNs, overflows, and signed zeroes correctly.
+   */
+  if (!isfinite(x) || !isfinite(y))
+    return (x * y + z);
+  if (!isfinite(z))
+    return (z);
+  if (x == 0.0 || y == 0.0)
+    return (x * y + z);
+  if (z == 0.0)
+    return (x * y);
 
-	xs = frexp(x, &ex);
-	ys = frexp(y, &ey);
-	zs = frexp(z, &ez);
-	oround = fegetround();
-	spread = ex + ey - ez;
+  xs = frexp(x, &ex);
+  ys = frexp(y, &ey);
+  zs = frexp(z, &ez);
+  oround = fegetround();
+  spread = ex + ey - ez;
 
-	/*
-	 * If x * y and z are many orders of magnitude apart, the scaling
-	 * will overflow, so we handle these cases specially.  Rounding
-	 * modes other than FE_TONEAREST are painful.
-	 */
-	if (spread < -DBL_MANT_DIG) {
+  /*
+   * If x * y and z are many orders of magnitude apart, the scaling
+   * will overflow, so we handle these cases specially.  Rounding
+   * modes other than FE_TONEAREST are painful.
+   */
+  if (spread < -DBL_MANT_DIG) {
 #ifdef FE_INEXACT
-		feraiseexcept(FE_INEXACT);
+    feraiseexcept(FE_INEXACT);
 #endif
 #ifdef FE_UNDERFLOW
-		if (!isnormal(z))
-			feraiseexcept(FE_UNDERFLOW);
+    if (!isnormal(z))
+      feraiseexcept(FE_UNDERFLOW);
 #endif
-		switch (oround) {
-		default: /* FE_TONEAREST */
-			return (z);
+    switch (oround) {
+      default: /* FE_TONEAREST */
+        return (z);
 #ifdef FE_TOWARDZERO
-		case FE_TOWARDZERO:
-			if (x > 0.0 ^ y < 0.0 ^ z < 0.0)
-				return (z);
-			else
-				return (nextafter(z, 0));
+      case FE_TOWARDZERO:
+        if (x > 0.0 ^ y < 0.0 ^ z < 0.0)
+          return (z);
+        else
+          return (nextafter(z, 0));
 #endif
 #ifdef FE_DOWNWARD
-		case FE_DOWNWARD:
-			if (x > 0.0 ^ y < 0.0)
-				return (z);
-			else
-				return (nextafter(z, -INFINITY));
+      case FE_DOWNWARD:
+        if (x > 0.0 ^ y < 0.0)
+          return (z);
+        else
+          return (nextafter(z, -INFINITY));
 #endif
 #ifdef FE_UPWARD
-		case FE_UPWARD:
-			if (x > 0.0 ^ y < 0.0)
-				return (nextafter(z, INFINITY));
-			else
-				return (z);
+      case FE_UPWARD:
+        if (x > 0.0 ^ y < 0.0)
+          return (nextafter(z, INFINITY));
+        else
+          return (z);
 #endif
-		}
-	}
-	if (spread <= DBL_MANT_DIG * 2)
-		zs = scalbn(zs, -spread);
-	else
-		zs = copysign(DBL_MIN, zs);
+    }
+  }
+  if (spread <= DBL_MANT_DIG * 2)
+    zs = scalbn(zs, -spread);
+  else
+    zs = copysign(DBL_MIN, zs);
 
-	fesetround(FE_TONEAREST);
+  fesetround(FE_TONEAREST);
 
-	/*
-	 * Basic approach for round-to-nearest:
-	 *
-	 *     (xy.hi, xy.lo) = x * y           (exact)
-	 *     (r.hi, r.lo)   = xy.hi + z       (exact)
-	 *     adj = xy.lo + r.lo               (inexact; low bit is sticky)
-	 *     result = r.hi + adj              (correctly rounded)
-	 */
-	xy = dd_mul(xs, ys);
-	r = dd_add(xy.hi, zs);
+  /*
+   * Basic approach for round-to-nearest:
+   *
+   *     (xy.hi, xy.lo) = x * y           (exact)
+   *     (r.hi, r.lo)   = xy.hi + z       (exact)
+   *     adj = xy.lo + r.lo               (inexact; low bit is sticky)
+   *     result = r.hi + adj              (correctly rounded)
+   */
+  xy = dd_mul(xs, ys);
+  r = dd_add(xy.hi, zs);
 
-	spread = ex + ey;
+  spread = ex + ey;
 
-	if (r.hi == 0.0) {
-		/*
-		 * When the addends cancel to 0, ensure that the result has
-		 * the correct sign.
-		 */
-		fesetround(oround);
-		volatile double vzs = zs; /* XXX gcc CSE bug workaround */
-		return xy.hi + vzs + scalbn(xy.lo, spread);
-	}
+  if (r.hi == 0.0) {
+    /*
+     * When the addends cancel to 0, ensure that the result has
+     * the correct sign.
+     */
+    fesetround(oround);
+    volatile double vzs = zs; /* XXX gcc CSE bug workaround */
+    return xy.hi + vzs + scalbn(xy.lo, spread);
+  }
 
-	if (oround != FE_TONEAREST) {
-		/*
-		 * There is no need to worry about double rounding in directed
-		 * rounding modes.
-		 * But underflow may not be raised properly, example in downward rounding:
-		 * fma(0x1.000000001p-1000, 0x1.000000001p-30, -0x1p-1066)
-		 */
-		double ret;
+  if (oround != FE_TONEAREST) {
+    /*
+     * There is no need to worry about double rounding in directed
+     * rounding modes.
+     * But underflow may not be raised properly, example in downward rounding:
+     * fma(0x1.000000001p-1000, 0x1.000000001p-30, -0x1p-1066)
+     */
+    double ret;
 #if defined(FE_INEXACT) && defined(FE_UNDERFLOW)
-		int e = fetestexcept(FE_INEXACT);
-		feclearexcept(FE_INEXACT);
+    int e = fetestexcept(FE_INEXACT);
+    feclearexcept(FE_INEXACT);
 #endif
-		fesetround(oround);
-		adj = r.lo + xy.lo;
-		ret = scalbn(r.hi + adj, spread);
+    fesetround(oround);
+    adj = r.lo + xy.lo;
+    ret = scalbn(r.hi + adj, spread);
 #if defined(FE_INEXACT) && defined(FE_UNDERFLOW)
-		if (ilogb(ret) < -1022 && fetestexcept(FE_INEXACT))
-			feraiseexcept(FE_UNDERFLOW);
-		else if (e)
-			feraiseexcept(FE_INEXACT);
+    if (ilogb(ret) < -1022 && fetestexcept(FE_INEXACT))
+      feraiseexcept(FE_UNDERFLOW);
+    else if (e)
+      feraiseexcept(FE_INEXACT);
 #endif
-		return ret;
-	}
+    return ret;
+  }
 
-	adj = add_adjusted(r.lo, xy.lo);
-	if (spread + ilogb(r.hi) > -1023)
-		return scalbn(r.hi + adj, spread);
-	else
-		return add_and_denormalize(r.hi, adj, spread);
+  adj = add_adjusted(r.lo, xy.lo);
+  if (spread + ilogb(r.hi) > -1023)
+    return scalbn(r.hi + adj, spread);
+  else
+    return add_and_denormalize(r.hi, adj, spread);
 }
 #endif
diff --git a/fusl/src/math/fmaf.c b/fusl/src/math/fmaf.c
index 4ebe855..b3ecd37 100644
--- a/fusl/src/math/fmaf.c
+++ b/fusl/src/math/fmaf.c
@@ -37,58 +37,60 @@
  * direct double-precision arithmetic suffices, except where double
  * rounding occurs.
  */
-float fmaf(float x, float y, float z)
-{
-	PRAGMA_STDC_FENV_ACCESS_ON
-	double xy, result;
-	union {double f; uint64_t i;} u;
-	int e;
+float fmaf(float x, float y, float z) {
+  PRAGMA_STDC_FENV_ACCESS_ON
+  double xy, result;
+  union {
+    double f;
+    uint64_t i;
+  } u;
+  int e;
 
-	xy = (double)x * y;
-	result = xy + z;
-	u.f = result;
-	e = u.i>>52 & 0x7ff;
-	/* Common case: The double precision result is fine. */
-	if ((u.i & 0x1fffffff) != 0x10000000 || /* not a halfway case */
-		e == 0x7ff ||                   /* NaN */
-		result - xy == z ||                 /* exact */
-		fegetround() != FE_TONEAREST)       /* not round-to-nearest */
-	{
-		/*
-		underflow may not be raised correctly, example:
-		fmaf(0x1p-120f, 0x1p-120f, 0x1p-149f)
-		*/
+  xy = (double)x * y;
+  result = xy + z;
+  u.f = result;
+  e = u.i >> 52 & 0x7ff;
+  /* Common case: The double precision result is fine. */
+  if ((u.i & 0x1fffffff) != 0x10000000 || /* not a halfway case */
+      e == 0x7ff ||                       /* NaN */
+      result - xy == z ||                 /* exact */
+      fegetround() != FE_TONEAREST)       /* not round-to-nearest */
+  {
+/*
+underflow may not be raised correctly, example:
+fmaf(0x1p-120f, 0x1p-120f, 0x1p-149f)
+*/
 #if defined(FE_INEXACT) && defined(FE_UNDERFLOW)
-		if (e < 0x3ff-126 && e >= 0x3ff-149 && fetestexcept(FE_INEXACT)) {
-			feclearexcept(FE_INEXACT);
-			/* TODO: gcc and clang bug workaround */
-			volatile float vz = z;
-			result = xy + vz;
-			if (fetestexcept(FE_INEXACT))
-				feraiseexcept(FE_UNDERFLOW);
-			else
-				feraiseexcept(FE_INEXACT);
-		}
+    if (e < 0x3ff - 126 && e >= 0x3ff - 149 && fetestexcept(FE_INEXACT)) {
+      feclearexcept(FE_INEXACT);
+      /* TODO: gcc and clang bug workaround */
+      volatile float vz = z;
+      result = xy + vz;
+      if (fetestexcept(FE_INEXACT))
+        feraiseexcept(FE_UNDERFLOW);
+      else
+        feraiseexcept(FE_INEXACT);
+    }
 #endif
-		z = result;
-		return z;
-	}
+    z = result;
+    return z;
+  }
 
-	/*
-	 * If result is inexact, and exactly halfway between two float values,
-	 * we need to adjust the low-order bit in the direction of the error.
-	 */
+/*
+ * If result is inexact, and exactly halfway between two float values,
+ * we need to adjust the low-order bit in the direction of the error.
+ */
 #ifdef FE_TOWARDZERO
-	fesetround(FE_TOWARDZERO);
+  fesetround(FE_TOWARDZERO);
 #endif
-	volatile double vxy = xy;  /* XXX work around gcc CSE bug */
-	double adjusted_result = vxy + z;
-	fesetround(FE_TONEAREST);
-	if (result == adjusted_result) {
-		u.f = adjusted_result;
-		u.i++;
-		adjusted_result = u.f;
-	}
-	z = adjusted_result;
-	return z;
+  volatile double vxy = xy; /* XXX work around gcc CSE bug */
+  double adjusted_result = vxy + z;
+  fesetround(FE_TONEAREST);
+  if (result == adjusted_result) {
+    u.f = adjusted_result;
+    u.i++;
+    adjusted_result = u.f;
+  }
+  z = adjusted_result;
+  return z;
 }
diff --git a/fusl/src/math/fmal.c b/fusl/src/math/fmal.c
index 41cf4c1..f82f43f 100644
--- a/fusl/src/math/fmal.c
+++ b/fusl/src/math/fmal.c
@@ -25,12 +25,10 @@
  * SUCH DAMAGE.
  */
 
-
 #include "libm.h"
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double fmal(long double x, long double y, long double z)
-{
-	return fma(x, y, z);
+long double fmal(long double x, long double y, long double z) {
+  return fma(x, y, z);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
 #include <fenv.h>
@@ -48,8 +46,8 @@
  * bits of the result.
  */
 struct dd {
-	long double hi;
-	long double lo;
+  long double hi;
+  long double lo;
 };
 
 /*
@@ -57,15 +55,14 @@
  * that both a and b are finite, but make no assumptions about their relative
  * magnitudes.
  */
-static inline struct dd dd_add(long double a, long double b)
-{
-	struct dd ret;
-	long double s;
+static inline struct dd dd_add(long double a, long double b) {
+  struct dd ret;
+  long double s;
 
-	ret.hi = a + b;
-	s = ret.hi - a;
-	ret.lo = (a - (ret.hi - s)) + (b - s);
-	return (ret);
+  ret.hi = a + b;
+  s = ret.hi - a;
+  ret.lo = (a - (ret.hi - s)) + (b - s);
+  return (ret);
 }
 
 /*
@@ -79,18 +76,17 @@
  *     J. Coonen.  An Implementation Guide to a Proposed Standard for
  *     Floating-Point Arithmetic.  Computer, vol. 13, no. 1, Jan 1980.
  */
-static inline long double add_adjusted(long double a, long double b)
-{
-	struct dd sum;
-	union ldshape u;
+static inline long double add_adjusted(long double a, long double b) {
+  struct dd sum;
+  union ldshape u;
 
-	sum = dd_add(a, b);
-	if (sum.lo != 0) {
-		u.f = sum.hi;
-		if (!LASTBIT(u))
-			sum.hi = nextafterl(sum.hi, INFINITY * sum.lo);
-	}
-	return (sum.hi);
+  sum = dd_add(a, b);
+  if (sum.lo != 0) {
+    u.f = sum.hi;
+    if (!LASTBIT(u))
+      sum.hi = nextafterl(sum.hi, INFINITY * sum.lo);
+  }
+  return (sum.hi);
 }
 
 /*
@@ -98,31 +94,32 @@
  * that the result will be subnormal, and care is taken to ensure that
  * double rounding does not occur.
  */
-static inline long double add_and_denormalize(long double a, long double b, int scale)
-{
-	struct dd sum;
-	int bits_lost;
-	union ldshape u;
+static inline long double add_and_denormalize(long double a,
+                                              long double b,
+                                              int scale) {
+  struct dd sum;
+  int bits_lost;
+  union ldshape u;
 
-	sum = dd_add(a, b);
+  sum = dd_add(a, b);
 
-	/*
-	 * If we are losing at least two bits of accuracy to denormalization,
-	 * then the first lost bit becomes a round bit, and we adjust the
-	 * lowest bit of sum.hi to make it a sticky bit summarizing all the
-	 * bits in sum.lo. With the sticky bit adjusted, the hardware will
-	 * break any ties in the correct direction.
-	 *
-	 * If we are losing only one bit to denormalization, however, we must
-	 * break the ties manually.
-	 */
-	if (sum.lo != 0) {
-		u.f = sum.hi;
-		bits_lost = -u.i.se - scale + 1;
-		if ((bits_lost != 1) ^ LASTBIT(u))
-			sum.hi = nextafterl(sum.hi, INFINITY * sum.lo);
-	}
-	return scalbnl(sum.hi, scale);
+  /*
+   * If we are losing at least two bits of accuracy to denormalization,
+   * then the first lost bit becomes a round bit, and we adjust the
+   * lowest bit of sum.hi to make it a sticky bit summarizing all the
+   * bits in sum.lo. With the sticky bit adjusted, the hardware will
+   * break any ties in the correct direction.
+   *
+   * If we are losing only one bit to denormalization, however, we must
+   * break the ties manually.
+   */
+  if (sum.lo != 0) {
+    u.f = sum.hi;
+    bits_lost = -u.i.se - scale + 1;
+    if ((bits_lost != 1) ^ LASTBIT(u))
+      sum.hi = nextafterl(sum.hi, INFINITY * sum.lo);
+  }
+  return scalbnl(sum.hi, scale);
 }
 
 /*
@@ -130,27 +127,26 @@
  * that both a and b are normalized, so no underflow or overflow will occur.
  * The current rounding mode must be round-to-nearest.
  */
-static inline struct dd dd_mul(long double a, long double b)
-{
-	struct dd ret;
-	long double ha, hb, la, lb, p, q;
+static inline struct dd dd_mul(long double a, long double b) {
+  struct dd ret;
+  long double ha, hb, la, lb, p, q;
 
-	p = a * SPLIT;
-	ha = a - p;
-	ha += p;
-	la = a - ha;
+  p = a * SPLIT;
+  ha = a - p;
+  ha += p;
+  la = a - ha;
 
-	p = b * SPLIT;
-	hb = b - p;
-	hb += p;
-	lb = b - hb;
+  p = b * SPLIT;
+  hb = b - p;
+  hb += p;
+  lb = b - hb;
 
-	p = ha * hb;
-	q = ha * lb + la * hb;
+  p = ha * hb;
+  q = ha * lb + la * hb;
 
-	ret.hi = p + q;
-	ret.lo = p - ret.hi + q + la * lb;
-	return (ret);
+  ret.hi = p + q;
+  ret.lo = p - ret.hi + q + la * lb;
+  return (ret);
 }
 
 /*
@@ -162,132 +158,131 @@
  *      Dekker, T.  A Floating-Point Technique for Extending the
  *      Available Precision.  Numer. Math. 18, 224-242 (1971).
  */
-long double fmal(long double x, long double y, long double z)
-{
-	PRAGMA_STDC_FENV_ACCESS_ON
-	long double xs, ys, zs, adj;
-	struct dd xy, r;
-	int oround;
-	int ex, ey, ez;
-	int spread;
+long double fmal(long double x, long double y, long double z) {
+  PRAGMA_STDC_FENV_ACCESS_ON
+  long double xs, ys, zs, adj;
+  struct dd xy, r;
+  int oround;
+  int ex, ey, ez;
+  int spread;
 
-	/*
-	 * Handle special cases. The order of operations and the particular
-	 * return values here are crucial in handling special cases involving
-	 * infinities, NaNs, overflows, and signed zeroes correctly.
-	 */
-	if (!isfinite(x) || !isfinite(y))
-		return (x * y + z);
-	if (!isfinite(z))
-		return (z);
-	if (x == 0.0 || y == 0.0)
-		return (x * y + z);
-	if (z == 0.0)
-		return (x * y);
+  /*
+   * Handle special cases. The order of operations and the particular
+   * return values here are crucial in handling special cases involving
+   * infinities, NaNs, overflows, and signed zeroes correctly.
+   */
+  if (!isfinite(x) || !isfinite(y))
+    return (x * y + z);
+  if (!isfinite(z))
+    return (z);
+  if (x == 0.0 || y == 0.0)
+    return (x * y + z);
+  if (z == 0.0)
+    return (x * y);
 
-	xs = frexpl(x, &ex);
-	ys = frexpl(y, &ey);
-	zs = frexpl(z, &ez);
-	oround = fegetround();
-	spread = ex + ey - ez;
+  xs = frexpl(x, &ex);
+  ys = frexpl(y, &ey);
+  zs = frexpl(z, &ez);
+  oround = fegetround();
+  spread = ex + ey - ez;
 
-	/*
-	 * If x * y and z are many orders of magnitude apart, the scaling
-	 * will overflow, so we handle these cases specially.  Rounding
-	 * modes other than FE_TONEAREST are painful.
-	 */
-	if (spread < -LDBL_MANT_DIG) {
+  /*
+   * If x * y and z are many orders of magnitude apart, the scaling
+   * will overflow, so we handle these cases specially.  Rounding
+   * modes other than FE_TONEAREST are painful.
+   */
+  if (spread < -LDBL_MANT_DIG) {
 #ifdef FE_INEXACT
-		feraiseexcept(FE_INEXACT);
+    feraiseexcept(FE_INEXACT);
 #endif
 #ifdef FE_UNDERFLOW
-		if (!isnormal(z))
-			feraiseexcept(FE_UNDERFLOW);
+    if (!isnormal(z))
+      feraiseexcept(FE_UNDERFLOW);
 #endif
-		switch (oround) {
-		default: /* FE_TONEAREST */
-			return (z);
+    switch (oround) {
+      default: /* FE_TONEAREST */
+        return (z);
 #ifdef FE_TOWARDZERO
-		case FE_TOWARDZERO:
-			if (x > 0.0 ^ y < 0.0 ^ z < 0.0)
-				return (z);
-			else
-				return (nextafterl(z, 0));
+      case FE_TOWARDZERO:
+        if (x > 0.0 ^ y < 0.0 ^ z < 0.0)
+          return (z);
+        else
+          return (nextafterl(z, 0));
 #endif
 #ifdef FE_DOWNWARD
-		case FE_DOWNWARD:
-			if (x > 0.0 ^ y < 0.0)
-				return (z);
-			else
-				return (nextafterl(z, -INFINITY));
+      case FE_DOWNWARD:
+        if (x > 0.0 ^ y < 0.0)
+          return (z);
+        else
+          return (nextafterl(z, -INFINITY));
 #endif
 #ifdef FE_UPWARD
-		case FE_UPWARD:
-			if (x > 0.0 ^ y < 0.0)
-				return (nextafterl(z, INFINITY));
-			else
-				return (z);
+      case FE_UPWARD:
+        if (x > 0.0 ^ y < 0.0)
+          return (nextafterl(z, INFINITY));
+        else
+          return (z);
 #endif
-		}
-	}
-	if (spread <= LDBL_MANT_DIG * 2)
-		zs = scalbnl(zs, -spread);
-	else
-		zs = copysignl(LDBL_MIN, zs);
+    }
+  }
+  if (spread <= LDBL_MANT_DIG * 2)
+    zs = scalbnl(zs, -spread);
+  else
+    zs = copysignl(LDBL_MIN, zs);
 
-	fesetround(FE_TONEAREST);
+  fesetround(FE_TONEAREST);
 
-	/*
-	 * Basic approach for round-to-nearest:
-	 *
-	 *     (xy.hi, xy.lo) = x * y           (exact)
-	 *     (r.hi, r.lo)   = xy.hi + z       (exact)
-	 *     adj = xy.lo + r.lo               (inexact; low bit is sticky)
-	 *     result = r.hi + adj              (correctly rounded)
-	 */
-	xy = dd_mul(xs, ys);
-	r = dd_add(xy.hi, zs);
+  /*
+   * Basic approach for round-to-nearest:
+   *
+   *     (xy.hi, xy.lo) = x * y           (exact)
+   *     (r.hi, r.lo)   = xy.hi + z       (exact)
+   *     adj = xy.lo + r.lo               (inexact; low bit is sticky)
+   *     result = r.hi + adj              (correctly rounded)
+   */
+  xy = dd_mul(xs, ys);
+  r = dd_add(xy.hi, zs);
 
-	spread = ex + ey;
+  spread = ex + ey;
 
-	if (r.hi == 0.0) {
-		/*
-		 * When the addends cancel to 0, ensure that the result has
-		 * the correct sign.
-		 */
-		fesetround(oround);
-		volatile long double vzs = zs; /* XXX gcc CSE bug workaround */
-		return xy.hi + vzs + scalbnl(xy.lo, spread);
-	}
+  if (r.hi == 0.0) {
+    /*
+     * When the addends cancel to 0, ensure that the result has
+     * the correct sign.
+     */
+    fesetround(oround);
+    volatile long double vzs = zs; /* XXX gcc CSE bug workaround */
+    return xy.hi + vzs + scalbnl(xy.lo, spread);
+  }
 
-	if (oround != FE_TONEAREST) {
-		/*
-		 * There is no need to worry about double rounding in directed
-		 * rounding modes.
-		 * But underflow may not be raised correctly, example in downward rounding:
-		 * fmal(0x1.0000000001p-16000L, 0x1.0000000001p-400L, -0x1p-16440L)
-		 */
-		long double ret;
+  if (oround != FE_TONEAREST) {
+    /*
+     * There is no need to worry about double rounding in directed
+     * rounding modes.
+     * But underflow may not be raised correctly, example in downward rounding:
+     * fmal(0x1.0000000001p-16000L, 0x1.0000000001p-400L, -0x1p-16440L)
+     */
+    long double ret;
 #if defined(FE_INEXACT) && defined(FE_UNDERFLOW)
-		int e = fetestexcept(FE_INEXACT);
-		feclearexcept(FE_INEXACT);
+    int e = fetestexcept(FE_INEXACT);
+    feclearexcept(FE_INEXACT);
 #endif
-		fesetround(oround);
-		adj = r.lo + xy.lo;
-		ret = scalbnl(r.hi + adj, spread);
+    fesetround(oround);
+    adj = r.lo + xy.lo;
+    ret = scalbnl(r.hi + adj, spread);
 #if defined(FE_INEXACT) && defined(FE_UNDERFLOW)
-		if (ilogbl(ret) < -16382 && fetestexcept(FE_INEXACT))
-			feraiseexcept(FE_UNDERFLOW);
-		else if (e)
-			feraiseexcept(FE_INEXACT);
+    if (ilogbl(ret) < -16382 && fetestexcept(FE_INEXACT))
+      feraiseexcept(FE_UNDERFLOW);
+    else if (e)
+      feraiseexcept(FE_INEXACT);
 #endif
-		return ret;
-	}
+    return ret;
+  }
 
-	adj = add_adjusted(r.lo, xy.lo);
-	if (spread + ilogbl(r.hi) > -16383)
-		return scalbnl(r.hi + adj, spread);
-	else
-		return add_and_denormalize(r.hi, adj, spread);
+  adj = add_adjusted(r.lo, xy.lo);
+  if (spread + ilogbl(r.hi) > -16383)
+    return scalbnl(r.hi + adj, spread);
+  else
+    return add_and_denormalize(r.hi, adj, spread);
 }
 #endif
diff --git a/fusl/src/math/fmax.c b/fusl/src/math/fmax.c
index 94f0caa..ff7a232 100644
--- a/fusl/src/math/fmax.c
+++ b/fusl/src/math/fmax.c
@@ -1,13 +1,12 @@
 #include <math.h>
 
-double fmax(double x, double y)
-{
-	if (isnan(x))
-		return y;
-	if (isnan(y))
-		return x;
-	/* handle signed zeros, see C99 Annex F.9.9.2 */
-	if (signbit(x) != signbit(y))
-		return signbit(x) ? y : x;
-	return x < y ? y : x;
+double fmax(double x, double y) {
+  if (isnan(x))
+    return y;
+  if (isnan(y))
+    return x;
+  /* handle signed zeros, see C99 Annex F.9.9.2 */
+  if (signbit(x) != signbit(y))
+    return signbit(x) ? y : x;
+  return x < y ? y : x;
 }
diff --git a/fusl/src/math/fmaxf.c b/fusl/src/math/fmaxf.c
index 695d817..f7abc0b 100644
--- a/fusl/src/math/fmaxf.c
+++ b/fusl/src/math/fmaxf.c
@@ -1,13 +1,12 @@
 #include <math.h>
 
-float fmaxf(float x, float y)
-{
-	if (isnan(x))
-		return y;
-	if (isnan(y))
-		return x;
-	/* handle signed zeroes, see C99 Annex F.9.9.2 */
-	if (signbit(x) != signbit(y))
-		return signbit(x) ? y : x;
-	return x < y ? y : x;
+float fmaxf(float x, float y) {
+  if (isnan(x))
+    return y;
+  if (isnan(y))
+    return x;
+  /* handle signed zeroes, see C99 Annex F.9.9.2 */
+  if (signbit(x) != signbit(y))
+    return signbit(x) ? y : x;
+  return x < y ? y : x;
 }
diff --git a/fusl/src/math/fmaxl.c b/fusl/src/math/fmaxl.c
index 4b03158..b4d672e 100644
--- a/fusl/src/math/fmaxl.c
+++ b/fusl/src/math/fmaxl.c
@@ -2,20 +2,18 @@
 #include <float.h>
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double fmaxl(long double x, long double y)
-{
-	return fmax(x, y);
+long double fmaxl(long double x, long double y) {
+  return fmax(x, y);
 }
 #else
-long double fmaxl(long double x, long double y)
-{
-	if (isnan(x))
-		return y;
-	if (isnan(y))
-		return x;
-	/* handle signed zeros, see C99 Annex F.9.9.2 */
-	if (signbit(x) != signbit(y))
-		return signbit(x) ? y : x;
-	return x < y ? y : x;
+long double fmaxl(long double x, long double y) {
+  if (isnan(x))
+    return y;
+  if (isnan(y))
+    return x;
+  /* handle signed zeros, see C99 Annex F.9.9.2 */
+  if (signbit(x) != signbit(y))
+    return signbit(x) ? y : x;
+  return x < y ? y : x;
 }
 #endif
diff --git a/fusl/src/math/fmin.c b/fusl/src/math/fmin.c
index 08a8fd1..3d40d3d 100644
--- a/fusl/src/math/fmin.c
+++ b/fusl/src/math/fmin.c
@@ -1,13 +1,12 @@
 #include <math.h>
 
-double fmin(double x, double y)
-{
-	if (isnan(x))
-		return y;
-	if (isnan(y))
-		return x;
-	/* handle signed zeros, see C99 Annex F.9.9.2 */
-	if (signbit(x) != signbit(y))
-		return signbit(x) ? x : y;
-	return x < y ? x : y;
+double fmin(double x, double y) {
+  if (isnan(x))
+    return y;
+  if (isnan(y))
+    return x;
+  /* handle signed zeros, see C99 Annex F.9.9.2 */
+  if (signbit(x) != signbit(y))
+    return signbit(x) ? x : y;
+  return x < y ? x : y;
 }
diff --git a/fusl/src/math/fminf.c b/fusl/src/math/fminf.c
index 3573c7d..7f0eceb 100644
--- a/fusl/src/math/fminf.c
+++ b/fusl/src/math/fminf.c
@@ -1,13 +1,12 @@
 #include <math.h>
 
-float fminf(float x, float y)
-{
-	if (isnan(x))
-		return y;
-	if (isnan(y))
-		return x;
-	/* handle signed zeros, see C99 Annex F.9.9.2 */
-	if (signbit(x) != signbit(y))
-		return signbit(x) ? x : y;
-	return x < y ? x : y;
+float fminf(float x, float y) {
+  if (isnan(x))
+    return y;
+  if (isnan(y))
+    return x;
+  /* handle signed zeros, see C99 Annex F.9.9.2 */
+  if (signbit(x) != signbit(y))
+    return signbit(x) ? x : y;
+  return x < y ? x : y;
 }
diff --git a/fusl/src/math/fminl.c b/fusl/src/math/fminl.c
index 69bc24a..7b89397 100644
--- a/fusl/src/math/fminl.c
+++ b/fusl/src/math/fminl.c
@@ -2,20 +2,18 @@
 #include <float.h>
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double fminl(long double x, long double y)
-{
-	return fmin(x, y);
+long double fminl(long double x, long double y) {
+  return fmin(x, y);
 }
 #else
-long double fminl(long double x, long double y)
-{
-	if (isnan(x))
-		return y;
-	if (isnan(y))
-		return x;
-	/* handle signed zeros, see C99 Annex F.9.9.2 */
-	if (signbit(x) != signbit(y))
-		return signbit(x) ? x : y;
-	return x < y ? x : y;
+long double fminl(long double x, long double y) {
+  if (isnan(x))
+    return y;
+  if (isnan(y))
+    return x;
+  /* handle signed zeros, see C99 Annex F.9.9.2 */
+  if (signbit(x) != signbit(y))
+    return signbit(x) ? x : y;
+  return x < y ? x : y;
 }
 #endif
diff --git a/fusl/src/math/fmod.c b/fusl/src/math/fmod.c
index 6849722..7caea97 100644
--- a/fusl/src/math/fmod.c
+++ b/fusl/src/math/fmod.c
@@ -1,68 +1,73 @@
 #include <math.h>
 #include <stdint.h>
 
-double fmod(double x, double y)
-{
-	union {double f; uint64_t i;} ux = {x}, uy = {y};
-	int ex = ux.i>>52 & 0x7ff;
-	int ey = uy.i>>52 & 0x7ff;
-	int sx = ux.i>>63;
-	uint64_t i;
+double fmod(double x, double y) {
+  union {
+    double f;
+    uint64_t i;
+  } ux = {x}, uy = {y};
+  int ex = ux.i >> 52 & 0x7ff;
+  int ey = uy.i >> 52 & 0x7ff;
+  int sx = ux.i >> 63;
+  uint64_t i;
 
-	/* in the followings uxi should be ux.i, but then gcc wrongly adds */
-	/* float load/store to inner loops ruining performance and code size */
-	uint64_t uxi = ux.i;
+  /* in the followings uxi should be ux.i, but then gcc wrongly adds */
+  /* float load/store to inner loops ruining performance and code size */
+  uint64_t uxi = ux.i;
 
-	if (uy.i<<1 == 0 || isnan(y) || ex == 0x7ff)
-		return (x*y)/(x*y);
-	if (uxi<<1 <= uy.i<<1) {
-		if (uxi<<1 == uy.i<<1)
-			return 0*x;
-		return x;
-	}
+  if (uy.i << 1 == 0 || isnan(y) || ex == 0x7ff)
+    return (x * y) / (x * y);
+  if (uxi << 1 <= uy.i << 1) {
+    if (uxi << 1 == uy.i << 1)
+      return 0 * x;
+    return x;
+  }
 
-	/* normalize x and y */
-	if (!ex) {
-		for (i = uxi<<12; i>>63 == 0; ex--, i <<= 1);
-		uxi <<= -ex + 1;
-	} else {
-		uxi &= -1ULL >> 12;
-		uxi |= 1ULL << 52;
-	}
-	if (!ey) {
-		for (i = uy.i<<12; i>>63 == 0; ey--, i <<= 1);
-		uy.i <<= -ey + 1;
-	} else {
-		uy.i &= -1ULL >> 12;
-		uy.i |= 1ULL << 52;
-	}
+  /* normalize x and y */
+  if (!ex) {
+    for (i = uxi << 12; i >> 63 == 0; ex--, i <<= 1)
+      ;
+    uxi <<= -ex + 1;
+  } else {
+    uxi &= -1ULL >> 12;
+    uxi |= 1ULL << 52;
+  }
+  if (!ey) {
+    for (i = uy.i << 12; i >> 63 == 0; ey--, i <<= 1)
+      ;
+    uy.i <<= -ey + 1;
+  } else {
+    uy.i &= -1ULL >> 12;
+    uy.i |= 1ULL << 52;
+  }
 
-	/* x mod y */
-	for (; ex > ey; ex--) {
-		i = uxi - uy.i;
-		if (i >> 63 == 0) {
-			if (i == 0)
-				return 0*x;
-			uxi = i;
-		}
-		uxi <<= 1;
-	}
-	i = uxi - uy.i;
-	if (i >> 63 == 0) {
-		if (i == 0)
-			return 0*x;
-		uxi = i;
-	}
-	for (; uxi>>52 == 0; uxi <<= 1, ex--);
+  /* x mod y */
+  for (; ex > ey; ex--) {
+    i = uxi - uy.i;
+    if (i >> 63 == 0) {
+      if (i == 0)
+        return 0 * x;
+      uxi = i;
+    }
+    uxi <<= 1;
+  }
+  i = uxi - uy.i;
+  if (i >> 63 == 0) {
+    if (i == 0)
+      return 0 * x;
+    uxi = i;
+  }
+  for (; uxi >> 52 == 0; uxi <<= 1, ex--)
+    ;
 
-	/* scale result */
-	if (ex > 0) {
-		uxi -= 1ULL << 52;
-		uxi |= (uint64_t)ex << 52;
-	} else {
-		uxi >>= -ex + 1;
-	}
-	uxi |= (uint64_t)sx << 63;
-	ux.i = uxi;
-	return ux.f;
+  /* scale result */
+  if (ex > 0) {
+    uxi -= 1ULL << 52;
+    uxi |= (uint64_t)ex << 52;
+  } else {
+    uxi >>= -ex + 1;
+  }
+  uxi |= (uint64_t)sx << 63;
+  ux.i = uxi;
+  return ux.f;
 }
diff --git a/fusl/src/math/fmodf.c b/fusl/src/math/fmodf.c
index ff58f93..4fe65af 100644
--- a/fusl/src/math/fmodf.c
+++ b/fusl/src/math/fmodf.c
@@ -1,65 +1,70 @@
 #include <math.h>
 #include <stdint.h>
 
-float fmodf(float x, float y)
-{
-	union {float f; uint32_t i;} ux = {x}, uy = {y};
-	int ex = ux.i>>23 & 0xff;
-	int ey = uy.i>>23 & 0xff;
-	uint32_t sx = ux.i & 0x80000000;
-	uint32_t i;
-	uint32_t uxi = ux.i;
+float fmodf(float x, float y) {
+  union {
+    float f;
+    uint32_t i;
+  } ux = {x}, uy = {y};
+  int ex = ux.i >> 23 & 0xff;
+  int ey = uy.i >> 23 & 0xff;
+  uint32_t sx = ux.i & 0x80000000;
+  uint32_t i;
+  uint32_t uxi = ux.i;
 
-	if (uy.i<<1 == 0 || isnan(y) || ex == 0xff)
-		return (x*y)/(x*y);
-	if (uxi<<1 <= uy.i<<1) {
-		if (uxi<<1 == uy.i<<1)
-			return 0*x;
-		return x;
-	}
+  if (uy.i << 1 == 0 || isnan(y) || ex == 0xff)
+    return (x * y) / (x * y);
+  if (uxi << 1 <= uy.i << 1) {
+    if (uxi << 1 == uy.i << 1)
+      return 0 * x;
+    return x;
+  }
 
-	/* normalize x and y */
-	if (!ex) {
-		for (i = uxi<<9; i>>31 == 0; ex--, i <<= 1);
-		uxi <<= -ex + 1;
-	} else {
-		uxi &= -1U >> 9;
-		uxi |= 1U << 23;
-	}
-	if (!ey) {
-		for (i = uy.i<<9; i>>31 == 0; ey--, i <<= 1);
-		uy.i <<= -ey + 1;
-	} else {
-		uy.i &= -1U >> 9;
-		uy.i |= 1U << 23;
-	}
+  /* normalize x and y */
+  if (!ex) {
+    for (i = uxi << 9; i >> 31 == 0; ex--, i <<= 1)
+      ;
+    uxi <<= -ex + 1;
+  } else {
+    uxi &= -1U >> 9;
+    uxi |= 1U << 23;
+  }
+  if (!ey) {
+    for (i = uy.i << 9; i >> 31 == 0; ey--, i <<= 1)
+      ;
+    uy.i <<= -ey + 1;
+  } else {
+    uy.i &= -1U >> 9;
+    uy.i |= 1U << 23;
+  }
 
-	/* x mod y */
-	for (; ex > ey; ex--) {
-		i = uxi - uy.i;
-		if (i >> 31 == 0) {
-			if (i == 0)
-				return 0*x;
-			uxi = i;
-		}
-		uxi <<= 1;
-	}
-	i = uxi - uy.i;
-	if (i >> 31 == 0) {
-		if (i == 0)
-			return 0*x;
-		uxi = i;
-	}
-	for (; uxi>>23 == 0; uxi <<= 1, ex--);
+  /* x mod y */
+  for (; ex > ey; ex--) {
+    i = uxi - uy.i;
+    if (i >> 31 == 0) {
+      if (i == 0)
+        return 0 * x;
+      uxi = i;
+    }
+    uxi <<= 1;
+  }
+  i = uxi - uy.i;
+  if (i >> 31 == 0) {
+    if (i == 0)
+      return 0 * x;
+    uxi = i;
+  }
+  for (; uxi >> 23 == 0; uxi <<= 1, ex--)
+    ;
 
-	/* scale result up */
-	if (ex > 0) {
-		uxi -= 1U << 23;
-		uxi |= (uint32_t)ex << 23;
-	} else {
-		uxi >>= -ex + 1;
-	}
-	uxi |= sx;
-	ux.i = uxi;
-	return ux.f;
+  /* scale result up */
+  if (ex > 0) {
+    uxi -= 1U << 23;
+    uxi |= (uint32_t)ex << 23;
+  } else {
+    uxi >>= -ex + 1;
+  }
+  uxi |= sx;
+  ux.i = uxi;
+  return ux.f;
 }
diff --git a/fusl/src/math/fmodl.c b/fusl/src/math/fmodl.c
index 9f5b873..8c8b420 100644
--- a/fusl/src/math/fmodl.c
+++ b/fusl/src/math/fmodl.c
@@ -1,105 +1,105 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double fmodl(long double x, long double y)
-{
-	return fmod(x, y);
+long double fmodl(long double x, long double y) {
+  return fmod(x, y);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
-long double fmodl(long double x, long double y)
-{
-	union ldshape ux = {x}, uy = {y};
-	int ex = ux.i.se & 0x7fff;
-	int ey = uy.i.se & 0x7fff;
-	int sx = ux.i.se & 0x8000;
+long double fmodl(long double x, long double y) {
+  union ldshape ux = {x}, uy = {y};
+  int ex = ux.i.se & 0x7fff;
+  int ey = uy.i.se & 0x7fff;
+  int sx = ux.i.se & 0x8000;
 
-	if (y == 0 || isnan(y) || ex == 0x7fff)
-		return (x*y)/(x*y);
-	ux.i.se = ex;
-	uy.i.se = ey;
-	if (ux.f <= uy.f) {
-		if (ux.f == uy.f)
-			return 0*x;
-		return x;
-	}
+  if (y == 0 || isnan(y) || ex == 0x7fff)
+    return (x * y) / (x * y);
+  ux.i.se = ex;
+  uy.i.se = ey;
+  if (ux.f <= uy.f) {
+    if (ux.f == uy.f)
+      return 0 * x;
+    return x;
+  }
 
-	/* normalize x and y */
-	if (!ex) {
-		ux.f *= 0x1p120f;
-		ex = ux.i.se - 120;
-	}
-	if (!ey) {
-		uy.f *= 0x1p120f;
-		ey = uy.i.se - 120;
-	}
+  /* normalize x and y */
+  if (!ex) {
+    ux.f *= 0x1p120f;
+    ex = ux.i.se - 120;
+  }
+  if (!ey) {
+    uy.f *= 0x1p120f;
+    ey = uy.i.se - 120;
+  }
 
-	/* x mod y */
+/* x mod y */
 #if LDBL_MANT_DIG == 64
-	uint64_t i, mx, my;
-	mx = ux.i.m;
-	my = uy.i.m;
-	for (; ex > ey; ex--) {
-		i = mx - my;
-		if (mx >= my) {
-			if (i == 0)
-				return 0*x;
-			mx = 2*i;
-		} else if (2*mx < mx) {
-			mx = 2*mx - my;
-		} else {
-			mx = 2*mx;
-		}
-	}
-	i = mx - my;
-	if (mx >= my) {
-		if (i == 0)
-			return 0*x;
-		mx = i;
-	}
-	for (; mx >> 63 == 0; mx *= 2, ex--);
-	ux.i.m = mx;
+  uint64_t i, mx, my;
+  mx = ux.i.m;
+  my = uy.i.m;
+  for (; ex > ey; ex--) {
+    i = mx - my;
+    if (mx >= my) {
+      if (i == 0)
+        return 0 * x;
+      mx = 2 * i;
+    } else if (2 * mx < mx) {
+      mx = 2 * mx - my;
+    } else {
+      mx = 2 * mx;
+    }
+  }
+  i = mx - my;
+  if (mx >= my) {
+    if (i == 0)
+      return 0 * x;
+    mx = i;
+  }
+  for (; mx >> 63 == 0; mx *= 2, ex--)
+    ;
+  ux.i.m = mx;
 #elif LDBL_MANT_DIG == 113
-	uint64_t hi, lo, xhi, xlo, yhi, ylo;
-	xhi = (ux.i2.hi & -1ULL>>16) | 1ULL<<48;
-	yhi = (uy.i2.hi & -1ULL>>16) | 1ULL<<48;
-	xlo = ux.i2.lo;
-	ylo = uy.i2.lo;
-	for (; ex > ey; ex--) {
-		hi = xhi - yhi;
-		lo = xlo - ylo;
-		if (xlo < ylo)
-			hi -= 1;
-		if (hi >> 63 == 0) {
-			if ((hi|lo) == 0)
-				return 0*x;
-			xhi = 2*hi + (lo>>63);
-			xlo = 2*lo;
-		} else {
-			xhi = 2*xhi + (xlo>>63);
-			xlo = 2*xlo;
-		}
-	}
-	hi = xhi - yhi;
-	lo = xlo - ylo;
-	if (xlo < ylo)
-		hi -= 1;
-	if (hi >> 63 == 0) {
-		if ((hi|lo) == 0)
-			return 0*x;
-		xhi = hi;
-		xlo = lo;
-	}
-	for (; xhi >> 48 == 0; xhi = 2*xhi + (xlo>>63), xlo = 2*xlo, ex--);
-	ux.i2.hi = xhi;
-	ux.i2.lo = xlo;
+  uint64_t hi, lo, xhi, xlo, yhi, ylo;
+  xhi = (ux.i2.hi & -1ULL >> 16) | 1ULL << 48;
+  yhi = (uy.i2.hi & -1ULL >> 16) | 1ULL << 48;
+  xlo = ux.i2.lo;
+  ylo = uy.i2.lo;
+  for (; ex > ey; ex--) {
+    hi = xhi - yhi;
+    lo = xlo - ylo;
+    if (xlo < ylo)
+      hi -= 1;
+    if (hi >> 63 == 0) {
+      if ((hi | lo) == 0)
+        return 0 * x;
+      xhi = 2 * hi + (lo >> 63);
+      xlo = 2 * lo;
+    } else {
+      xhi = 2 * xhi + (xlo >> 63);
+      xlo = 2 * xlo;
+    }
+  }
+  hi = xhi - yhi;
+  lo = xlo - ylo;
+  if (xlo < ylo)
+    hi -= 1;
+  if (hi >> 63 == 0) {
+    if ((hi | lo) == 0)
+      return 0 * x;
+    xhi = hi;
+    xlo = lo;
+  }
+  for (; xhi >> 48 == 0; xhi = 2 * xhi + (xlo >> 63), xlo = 2 * xlo, ex--)
+    ;
+  ux.i2.hi = xhi;
+  ux.i2.lo = xlo;
 #endif
 
-	/* scale result */
-	if (ex <= 0) {
-		ux.i.se = (ex+120)|sx;
-		ux.f *= 0x1p-120f;
-	} else
-		ux.i.se = ex|sx;
-	return ux.f;
+  /* scale result */
+  if (ex <= 0) {
+    ux.i.se = (ex + 120) | sx;
+    ux.f *= 0x1p-120f;
+  } else
+    ux.i.se = ex | sx;
+  return ux.f;
 }
 #endif
diff --git a/fusl/src/math/frexp.c b/fusl/src/math/frexp.c
index 27b6266..594c37b 100644
--- a/fusl/src/math/frexp.c
+++ b/fusl/src/math/frexp.c
@@ -1,23 +1,26 @@
 #include <math.h>
 #include <stdint.h>
 
-double frexp(double x, int *e)
-{
-	union { double d; uint64_t i; } y = { x };
-	int ee = y.i>>52 & 0x7ff;
+double frexp(double x, int* e) {
+  union {
+    double d;
+    uint64_t i;
+  } y = {x};
+  int ee = y.i >> 52 & 0x7ff;
 
-	if (!ee) {
-		if (x) {
-			x = frexp(x*0x1p64, e);
-			*e -= 64;
-		} else *e = 0;
-		return x;
-	} else if (ee == 0x7ff) {
-		return x;
-	}
+  if (!ee) {
+    if (x) {
+      x = frexp(x * 0x1p64, e);
+      *e -= 64;
+    } else
+      *e = 0;
+    return x;
+  } else if (ee == 0x7ff) {
+    return x;
+  }
 
-	*e = ee - 0x3fe;
-	y.i &= 0x800fffffffffffffull;
-	y.i |= 0x3fe0000000000000ull;
-	return y.d;
+  *e = ee - 0x3fe;
+  y.i &= 0x800fffffffffffffull;
+  y.i |= 0x3fe0000000000000ull;
+  return y.d;
 }
diff --git a/fusl/src/math/frexpf.c b/fusl/src/math/frexpf.c
index 0787097..63ac662 100644
--- a/fusl/src/math/frexpf.c
+++ b/fusl/src/math/frexpf.c
@@ -1,23 +1,26 @@
 #include <math.h>
 #include <stdint.h>
 
-float frexpf(float x, int *e)
-{
-	union { float f; uint32_t i; } y = { x };
-	int ee = y.i>>23 & 0xff;
+float frexpf(float x, int* e) {
+  union {
+    float f;
+    uint32_t i;
+  } y = {x};
+  int ee = y.i >> 23 & 0xff;
 
-	if (!ee) {
-		if (x) {
-			x = frexpf(x*0x1p64, e);
-			*e -= 64;
-		} else *e = 0;
-		return x;
-	} else if (ee == 0xff) {
-		return x;
-	}
+  if (!ee) {
+    if (x) {
+      x = frexpf(x * 0x1p64, e);
+      *e -= 64;
+    } else
+      *e = 0;
+    return x;
+  } else if (ee == 0xff) {
+    return x;
+  }
 
-	*e = ee - 0x7e;
-	y.i &= 0x807ffffful;
-	y.i |= 0x3f000000ul;
-	return y.f;
+  *e = ee - 0x7e;
+  y.i &= 0x807ffffful;
+  y.i |= 0x3f000000ul;
+  return y.f;
 }
diff --git a/fusl/src/math/frexpl.c b/fusl/src/math/frexpl.c
index 3c1b553..869e962 100644
--- a/fusl/src/math/frexpl.c
+++ b/fusl/src/math/frexpl.c
@@ -1,29 +1,28 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double frexpl(long double x, int *e)
-{
-	return frexp(x, e);
+long double frexpl(long double x, int* e) {
+  return frexp(x, e);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
-long double frexpl(long double x, int *e)
-{
-	union ldshape u = {x};
-	int ee = u.i.se & 0x7fff;
+long double frexpl(long double x, int* e) {
+  union ldshape u = {x};
+  int ee = u.i.se & 0x7fff;
 
-	if (!ee) {
-		if (x) {
-			x = frexpl(x*0x1p120, e);
-			*e -= 120;
-		} else *e = 0;
-		return x;
-	} else if (ee == 0x7fff) {
-		return x;
-	}
+  if (!ee) {
+    if (x) {
+      x = frexpl(x * 0x1p120, e);
+      *e -= 120;
+    } else
+      *e = 0;
+    return x;
+  } else if (ee == 0x7fff) {
+    return x;
+  }
 
-	*e = ee - 0x3ffe;
-	u.i.se &= 0x8000;
-	u.i.se |= 0x3ffe;
-	return u.f;
+  *e = ee - 0x3ffe;
+  u.i.se &= 0x8000;
+  u.i.se |= 0x3ffe;
+  return u.f;
 }
 #endif
diff --git a/fusl/src/math/hypot.c b/fusl/src/math/hypot.c
index 6071bf1..5f9888d 100644
--- a/fusl/src/math/hypot.c
+++ b/fusl/src/math/hypot.c
@@ -8,60 +8,61 @@
 #define SPLIT (0x1p27 + 1)
 #endif
 
-static void sq(double_t *hi, double_t *lo, double x)
-{
-	double_t xh, xl, xc;
+static void sq(double_t* hi, double_t* lo, double x) {
+  double_t xh, xl, xc;
 
-	xc = (double_t)x*SPLIT;
-	xh = x - xc + xc;
-	xl = x - xh;
-	*hi = (double_t)x*x;
-	*lo = xh*xh - *hi + 2*xh*xl + xl*xl;
+  xc = (double_t)x * SPLIT;
+  xh = x - xc + xc;
+  xl = x - xh;
+  *hi = (double_t)x * x;
+  *lo = xh * xh - *hi + 2 * xh * xl + xl * xl;
 }
 
-double hypot(double x, double y)
-{
-	union {double f; uint64_t i;} ux = {x}, uy = {y}, ut;
-	int ex, ey;
-	double_t hx, lx, hy, ly, z;
+double hypot(double x, double y) {
+  union {
+    double f;
+    uint64_t i;
+  } ux = {x}, uy = {y}, ut;
+  int ex, ey;
+  double_t hx, lx, hy, ly, z;
 
-	/* arrange |x| >= |y| */
-	ux.i &= -1ULL>>1;
-	uy.i &= -1ULL>>1;
-	if (ux.i < uy.i) {
-		ut = ux;
-		ux = uy;
-		uy = ut;
-	}
+  /* arrange |x| >= |y| */
+  ux.i &= -1ULL >> 1;
+  uy.i &= -1ULL >> 1;
+  if (ux.i < uy.i) {
+    ut = ux;
+    ux = uy;
+    uy = ut;
+  }
 
-	/* special cases */
-	ex = ux.i>>52;
-	ey = uy.i>>52;
-	x = ux.f;
-	y = uy.f;
-	/* note: hypot(inf,nan) == inf */
-	if (ey == 0x7ff)
-		return y;
-	if (ex == 0x7ff || uy.i == 0)
-		return x;
-	/* note: hypot(x,y) ~= x + y*y/x/2 with inexact for small y/x */
-	/* 64 difference is enough for ld80 double_t */
-	if (ex - ey > 64)
-		return x + y;
+  /* special cases */
+  ex = ux.i >> 52;
+  ey = uy.i >> 52;
+  x = ux.f;
+  y = uy.f;
+  /* note: hypot(inf,nan) == inf */
+  if (ey == 0x7ff)
+    return y;
+  if (ex == 0x7ff || uy.i == 0)
+    return x;
+  /* note: hypot(x,y) ~= x + y*y/x/2 with inexact for small y/x */
+  /* 64 difference is enough for ld80 double_t */
+  if (ex - ey > 64)
+    return x + y;
 
-	/* precise sqrt argument in nearest rounding mode without overflow */
-	/* xh*xh must not overflow and xl*xl must not underflow in sq */
-	z = 1;
-	if (ex > 0x3ff+510) {
-		z = 0x1p700;
-		x *= 0x1p-700;
-		y *= 0x1p-700;
-	} else if (ey < 0x3ff-450) {
-		z = 0x1p-700;
-		x *= 0x1p700;
-		y *= 0x1p700;
-	}
-	sq(&hx, &lx, x);
-	sq(&hy, &ly, y);
-	return z*sqrt(ly+lx+hy+hx);
+  /* precise sqrt argument in nearest rounding mode without overflow */
+  /* xh*xh must not overflow and xl*xl must not underflow in sq */
+  z = 1;
+  if (ex > 0x3ff + 510) {
+    z = 0x1p700;
+    x *= 0x1p-700;
+    y *= 0x1p-700;
+  } else if (ey < 0x3ff - 450) {
+    z = 0x1p-700;
+    x *= 0x1p700;
+    y *= 0x1p700;
+  }
+  sq(&hx, &lx, x);
+  sq(&hy, &ly, y);
+  return z * sqrt(ly + lx + hy + hx);
 }
diff --git a/fusl/src/math/hypotf.c b/fusl/src/math/hypotf.c
index 2fc214b..6f4ad03 100644
--- a/fusl/src/math/hypotf.c
+++ b/fusl/src/math/hypotf.c
@@ -1,35 +1,37 @@
 #include <math.h>
 #include <stdint.h>
 
-float hypotf(float x, float y)
-{
-	union {float f; uint32_t i;} ux = {x}, uy = {y}, ut;
-	float_t z;
+float hypotf(float x, float y) {
+  union {
+    float f;
+    uint32_t i;
+  } ux = {x}, uy = {y}, ut;
+  float_t z;
 
-	ux.i &= -1U>>1;
-	uy.i &= -1U>>1;
-	if (ux.i < uy.i) {
-		ut = ux;
-		ux = uy;
-		uy = ut;
-	}
+  ux.i &= -1U >> 1;
+  uy.i &= -1U >> 1;
+  if (ux.i < uy.i) {
+    ut = ux;
+    ux = uy;
+    uy = ut;
+  }
 
-	x = ux.f;
-	y = uy.f;
-	if (uy.i == 0xff<<23)
-		return y;
-	if (ux.i >= 0xff<<23 || uy.i == 0 || ux.i - uy.i >= 25<<23)
-		return x + y;
+  x = ux.f;
+  y = uy.f;
+  if (uy.i == 0xff << 23)
+    return y;
+  if (ux.i >= 0xff << 23 || uy.i == 0 || ux.i - uy.i >= 25 << 23)
+    return x + y;
 
-	z = 1;
-	if (ux.i >= (0x7f+60)<<23) {
-		z = 0x1p90f;
-		x *= 0x1p-90f;
-		y *= 0x1p-90f;
-	} else if (uy.i < (0x7f-60)<<23) {
-		z = 0x1p-90f;
-		x *= 0x1p90f;
-		y *= 0x1p90f;
-	}
-	return z*sqrtf((double)x*x + (double)y*y);
+  z = 1;
+  if (ux.i >= (0x7f + 60) << 23) {
+    z = 0x1p90f;
+    x *= 0x1p-90f;
+    y *= 0x1p-90f;
+  } else if (uy.i < (0x7f - 60) << 23) {
+    z = 0x1p-90f;
+    x *= 0x1p90f;
+    y *= 0x1p90f;
+  }
+  return z * sqrtf((double)x * x + (double)y * y);
 }
diff --git a/fusl/src/math/hypotl.c b/fusl/src/math/hypotl.c
index 479aa92..543e1c2 100644
--- a/fusl/src/math/hypotl.c
+++ b/fusl/src/math/hypotl.c
@@ -1,66 +1,63 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double hypotl(long double x, long double y)
-{
-	return hypot(x, y);
+long double hypotl(long double x, long double y) {
+  return hypot(x, y);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
 #if LDBL_MANT_DIG == 64
-#define SPLIT (0x1p32L+1)
+#define SPLIT (0x1p32L + 1)
 #elif LDBL_MANT_DIG == 113
-#define SPLIT (0x1p57L+1)
+#define SPLIT (0x1p57L + 1)
 #endif
 
-static void sq(long double *hi, long double *lo, long double x)
-{
-	long double xh, xl, xc;
-	xc = x*SPLIT;
-	xh = x - xc + xc;
-	xl = x - xh;
-	*hi = x*x;
-	*lo = xh*xh - *hi + 2*xh*xl + xl*xl;
+static void sq(long double* hi, long double* lo, long double x) {
+  long double xh, xl, xc;
+  xc = x * SPLIT;
+  xh = x - xc + xc;
+  xl = x - xh;
+  *hi = x * x;
+  *lo = xh * xh - *hi + 2 * xh * xl + xl * xl;
 }
 
-long double hypotl(long double x, long double y)
-{
-	union ldshape ux = {x}, uy = {y};
-	int ex, ey;
-	long double hx, lx, hy, ly, z;
+long double hypotl(long double x, long double y) {
+  union ldshape ux = {x}, uy = {y};
+  int ex, ey;
+  long double hx, lx, hy, ly, z;
 
-	ux.i.se &= 0x7fff;
-	uy.i.se &= 0x7fff;
-	if (ux.i.se < uy.i.se) {
-		ex = uy.i.se;
-		ey = ux.i.se;
-		x = uy.f;
-		y = ux.f;
-	} else {
-		ex = ux.i.se;
-		ey = uy.i.se;
-		x = ux.f;
-		y = uy.f;
-	}
+  ux.i.se &= 0x7fff;
+  uy.i.se &= 0x7fff;
+  if (ux.i.se < uy.i.se) {
+    ex = uy.i.se;
+    ey = ux.i.se;
+    x = uy.f;
+    y = ux.f;
+  } else {
+    ex = ux.i.se;
+    ey = uy.i.se;
+    x = ux.f;
+    y = uy.f;
+  }
 
-	if (ex == 0x7fff && isinf(y))
-		return y;
-	if (ex == 0x7fff || y == 0)
-		return x;
-	if (ex - ey > LDBL_MANT_DIG)
-		return x + y;
+  if (ex == 0x7fff && isinf(y))
+    return y;
+  if (ex == 0x7fff || y == 0)
+    return x;
+  if (ex - ey > LDBL_MANT_DIG)
+    return x + y;
 
-	z = 1;
-	if (ex > 0x3fff+8000) {
-		z = 0x1p10000L;
-		x *= 0x1p-10000L;
-		y *= 0x1p-10000L;
-	} else if (ey < 0x3fff-8000) {
-		z = 0x1p-10000L;
-		x *= 0x1p10000L;
-		y *= 0x1p10000L;
-	}
-	sq(&hx, &lx, x);
-	sq(&hy, &ly, y);
-	return z*sqrtl(ly+lx+hy+hx);
+  z = 1;
+  if (ex > 0x3fff + 8000) {
+    z = 0x1p10000L;
+    x *= 0x1p-10000L;
+    y *= 0x1p-10000L;
+  } else if (ey < 0x3fff - 8000) {
+    z = 0x1p-10000L;
+    x *= 0x1p10000L;
+    y *= 0x1p10000L;
+  }
+  sq(&hx, &lx, x);
+  sq(&hy, &ly, y);
+  return z * sqrtl(ly + lx + hy + hx);
 }
 #endif
diff --git a/fusl/src/math/ilogb.c b/fusl/src/math/ilogb.c
index cd7c89e..de9d8cc 100644
--- a/fusl/src/math/ilogb.c
+++ b/fusl/src/math/ilogb.c
@@ -1,26 +1,29 @@
 #include <limits.h>
 #include "libm.h"
 
-int ilogb(double x)
-{
-	PRAGMA_STDC_FENV_ACCESS_ON
-	union {double f; uint64_t i;} u = {x};
-	uint64_t i = u.i;
-	int e = i>>52 & 0x7ff;
+int ilogb(double x) {
+  PRAGMA_STDC_FENV_ACCESS_ON
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  uint64_t i = u.i;
+  int e = i >> 52 & 0x7ff;
 
-	if (!e) {
-		i <<= 12;
-		if (i == 0) {
-			FORCE_EVAL(0/0.0f);
-			return FP_ILOGB0;
-		}
-		/* subnormal x */
-		for (e = -0x3ff; i>>63 == 0; e--, i<<=1);
-		return e;
-	}
-	if (e == 0x7ff) {
-		FORCE_EVAL(0/0.0f);
-		return i<<12 ? FP_ILOGBNAN : INT_MAX;
-	}
-	return e - 0x3ff;
+  if (!e) {
+    i <<= 12;
+    if (i == 0) {
+      FORCE_EVAL(0 / 0.0f);
+      return FP_ILOGB0;
+    }
+    /* subnormal x */
+    for (e = -0x3ff; i >> 63 == 0; e--, i <<= 1)
+      ;
+    return e;
+  }
+  if (e == 0x7ff) {
+    FORCE_EVAL(0 / 0.0f);
+    return i << 12 ? FP_ILOGBNAN : INT_MAX;
+  }
+  return e - 0x3ff;
 }
diff --git a/fusl/src/math/ilogbf.c b/fusl/src/math/ilogbf.c
index c15d29d..ff76d6f 100644
--- a/fusl/src/math/ilogbf.c
+++ b/fusl/src/math/ilogbf.c
@@ -1,26 +1,29 @@
 #include <limits.h>
 #include "libm.h"
 
-int ilogbf(float x)
-{
-	PRAGMA_STDC_FENV_ACCESS_ON
-	union {float f; uint32_t i;} u = {x};
-	uint32_t i = u.i;
-	int e = i>>23 & 0xff;
+int ilogbf(float x) {
+  PRAGMA_STDC_FENV_ACCESS_ON
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  uint32_t i = u.i;
+  int e = i >> 23 & 0xff;
 
-	if (!e) {
-		i <<= 9;
-		if (i == 0) {
-			FORCE_EVAL(0/0.0f);
-			return FP_ILOGB0;
-		}
-		/* subnormal x */
-		for (e = -0x7f; i>>31 == 0; e--, i<<=1);
-		return e;
-	}
-	if (e == 0xff) {
-		FORCE_EVAL(0/0.0f);
-		return i<<9 ? FP_ILOGBNAN : INT_MAX;
-	}
-	return e - 0x7f;
+  if (!e) {
+    i <<= 9;
+    if (i == 0) {
+      FORCE_EVAL(0 / 0.0f);
+      return FP_ILOGB0;
+    }
+    /* subnormal x */
+    for (e = -0x7f; i >> 31 == 0; e--, i <<= 1)
+      ;
+    return e;
+  }
+  if (e == 0xff) {
+    FORCE_EVAL(0 / 0.0f);
+    return i << 9 ? FP_ILOGBNAN : INT_MAX;
+  }
+  return e - 0x7f;
 }
diff --git a/fusl/src/math/ilogbl.c b/fusl/src/math/ilogbl.c
index 467929c..b01a087 100644
--- a/fusl/src/math/ilogbl.c
+++ b/fusl/src/math/ilogbl.c
@@ -2,54 +2,52 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-int ilogbl(long double x)
-{
-	return ilogb(x);
+int ilogbl(long double x) {
+  return ilogb(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
-int ilogbl(long double x)
-{
-	PRAGMA_STDC_FENV_ACCESS_ON
-	union ldshape u = {x};
-	uint64_t m = u.i.m;
-	int e = u.i.se & 0x7fff;
+int ilogbl(long double x) {
+  PRAGMA_STDC_FENV_ACCESS_ON
+  union ldshape u = {x};
+  uint64_t m = u.i.m;
+  int e = u.i.se & 0x7fff;
 
-	if (!e) {
-		if (m == 0) {
-			FORCE_EVAL(0/0.0f);
-			return FP_ILOGB0;
-		}
-		/* subnormal x */
-		for (e = -0x3fff+1; m>>63 == 0; e--, m<<=1);
-		return e;
-	}
-	if (e == 0x7fff) {
-		FORCE_EVAL(0/0.0f);
-		return m<<1 ? FP_ILOGBNAN : INT_MAX;
-	}
-	return e - 0x3fff;
+  if (!e) {
+    if (m == 0) {
+      FORCE_EVAL(0 / 0.0f);
+      return FP_ILOGB0;
+    }
+    /* subnormal x */
+    for (e = -0x3fff + 1; m >> 63 == 0; e--, m <<= 1)
+      ;
+    return e;
+  }
+  if (e == 0x7fff) {
+    FORCE_EVAL(0 / 0.0f);
+    return m << 1 ? FP_ILOGBNAN : INT_MAX;
+  }
+  return e - 0x3fff;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
-int ilogbl(long double x)
-{
-	#pragma STDC FENV_ACCESS ON
-	union ldshape u = {x};
-	int e = u.i.se & 0x7fff;
+int ilogbl(long double x) {
+#pragma STDC FENV_ACCESS ON
+  union ldshape u = {x};
+  int e = u.i.se & 0x7fff;
 
-	if (!e) {
-		if (x == 0) {
-			FORCE_EVAL(0/0.0f);
-			return FP_ILOGB0;
-		}
-		/* subnormal x */
-		x *= 0x1p120;
-		return ilogbl(x) - 120;
-	}
-	if (e == 0x7fff) {
-		FORCE_EVAL(0/0.0f);
-		u.i.se = 0;
-		return u.f ? FP_ILOGBNAN : INT_MAX;
-	}
-	return e - 0x3fff;
+  if (!e) {
+    if (x == 0) {
+      FORCE_EVAL(0 / 0.0f);
+      return FP_ILOGB0;
+    }
+    /* subnormal x */
+    x *= 0x1p120;
+    return ilogbl(x) - 120;
+  }
+  if (e == 0x7fff) {
+    FORCE_EVAL(0 / 0.0f);
+    u.i.se = 0;
+    return u.f ? FP_ILOGBNAN : INT_MAX;
+  }
+  return e - 0x3fff;
 }
 #endif
diff --git a/fusl/src/math/j0.c b/fusl/src/math/j0.c
index d722d94..ea4ad13 100644
--- a/fusl/src/math/j0.c
+++ b/fusl/src/math/j0.c
@@ -58,133 +58,131 @@
 
 static double pzero(double), qzero(double);
 
-static const double
-invsqrtpi = 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
-tpi       = 6.36619772367581382433e-01; /* 0x3FE45F30, 0x6DC9C883 */
+static const double invsqrtpi =
+                        5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
+    tpi = 6.36619772367581382433e-01;               /* 0x3FE45F30, 0x6DC9C883 */
 
 /* common method when |x|>=2 */
-static double common(uint32_t ix, double x, int y0)
-{
-	double s,c,ss,cc,z;
+static double common(uint32_t ix, double x, int y0) {
+  double s, c, ss, cc, z;
 
-	/*
-	 * j0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x-pi/4)-q0(x)*sin(x-pi/4))
-	 * y0(x) = sqrt(2/(pi*x))*(p0(x)*sin(x-pi/4)+q0(x)*cos(x-pi/4))
-	 *
-	 * sin(x-pi/4) = (sin(x) - cos(x))/sqrt(2)
-	 * cos(x-pi/4) = (sin(x) + cos(x))/sqrt(2)
-	 * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
-	 */
-	s = sin(x);
-	c = cos(x);
-	if (y0)
-		c = -c;
-	cc = s+c;
-	/* avoid overflow in 2*x, big ulp error when x>=0x1p1023 */
-	if (ix < 0x7fe00000) {
-		ss = s-c;
-		z = -cos(2*x);
-		if (s*c < 0)
-			cc = z/ss;
-		else
-			ss = z/cc;
-		if (ix < 0x48000000) {
-			if (y0)
-				ss = -ss;
-			cc = pzero(x)*cc-qzero(x)*ss;
-		}
-	}
-	return invsqrtpi*cc/sqrt(x);
+  /*
+   * j0(x) = sqrt(2/(pi*x))*(p0(x)*cos(x-pi/4)-q0(x)*sin(x-pi/4))
+   * y0(x) = sqrt(2/(pi*x))*(p0(x)*sin(x-pi/4)+q0(x)*cos(x-pi/4))
+   *
+   * sin(x-pi/4) = (sin(x) - cos(x))/sqrt(2)
+   * cos(x-pi/4) = (sin(x) + cos(x))/sqrt(2)
+   * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
+   */
+  s = sin(x);
+  c = cos(x);
+  if (y0)
+    c = -c;
+  cc = s + c;
+  /* avoid overflow in 2*x, big ulp error when x>=0x1p1023 */
+  if (ix < 0x7fe00000) {
+    ss = s - c;
+    z = -cos(2 * x);
+    if (s * c < 0)
+      cc = z / ss;
+    else
+      ss = z / cc;
+    if (ix < 0x48000000) {
+      if (y0)
+        ss = -ss;
+      cc = pzero(x) * cc - qzero(x) * ss;
+    }
+  }
+  return invsqrtpi * cc / sqrt(x);
 }
 
 /* R0/S0 on [0, 2.00] */
-static const double
-R02 =  1.56249999999999947958e-02, /* 0x3F8FFFFF, 0xFFFFFFFD */
-R03 = -1.89979294238854721751e-04, /* 0xBF28E6A5, 0xB61AC6E9 */
-R04 =  1.82954049532700665670e-06, /* 0x3EBEB1D1, 0x0C503919 */
-R05 = -4.61832688532103189199e-09, /* 0xBE33D5E7, 0x73D63FCE */
-S01 =  1.56191029464890010492e-02, /* 0x3F8FFCE8, 0x82C8C2A4 */
-S02 =  1.16926784663337450260e-04, /* 0x3F1EA6D2, 0xDD57DBF4 */
-S03 =  5.13546550207318111446e-07, /* 0x3EA13B54, 0xCE84D5A9 */
-S04 =  1.16614003333790000205e-09; /* 0x3E1408BC, 0xF4745D8F */
+static const double R02 =
+                        1.56249999999999947958e-02, /* 0x3F8FFFFF, 0xFFFFFFFD */
+    R03 = -1.89979294238854721751e-04,              /* 0xBF28E6A5, 0xB61AC6E9 */
+    R04 = 1.82954049532700665670e-06,               /* 0x3EBEB1D1, 0x0C503919 */
+    R05 = -4.61832688532103189199e-09,              /* 0xBE33D5E7, 0x73D63FCE */
+    S01 = 1.56191029464890010492e-02,               /* 0x3F8FFCE8, 0x82C8C2A4 */
+    S02 = 1.16926784663337450260e-04,               /* 0x3F1EA6D2, 0xDD57DBF4 */
+    S03 = 5.13546550207318111446e-07,               /* 0x3EA13B54, 0xCE84D5A9 */
+    S04 = 1.16614003333790000205e-09;               /* 0x3E1408BC, 0xF4745D8F */
 
-double j0(double x)
-{
-	double z,r,s;
-	uint32_t ix;
+double j0(double x) {
+  double z, r, s;
+  uint32_t ix;
 
-	GET_HIGH_WORD(ix, x);
-	ix &= 0x7fffffff;
+  GET_HIGH_WORD(ix, x);
+  ix &= 0x7fffffff;
 
-	/* j0(+-inf)=0, j0(nan)=nan */
-	if (ix >= 0x7ff00000)
-		return 1/(x*x);
-	x = fabs(x);
+  /* j0(+-inf)=0, j0(nan)=nan */
+  if (ix >= 0x7ff00000)
+    return 1 / (x * x);
+  x = fabs(x);
 
-	if (ix >= 0x40000000) {  /* |x| >= 2 */
-		/* large ulp error near zeros: 2.4, 5.52, 8.6537,.. */
-		return common(ix,x,0);
-	}
+  if (ix >= 0x40000000) { /* |x| >= 2 */
+    /* large ulp error near zeros: 2.4, 5.52, 8.6537,.. */
+    return common(ix, x, 0);
+  }
 
-	/* 1 - x*x/4 + x*x*R(x^2)/S(x^2) */
-	if (ix >= 0x3f200000) {  /* |x| >= 2**-13 */
-		/* up to 4ulp error close to 2 */
-		z = x*x;
-		r = z*(R02+z*(R03+z*(R04+z*R05)));
-		s = 1+z*(S01+z*(S02+z*(S03+z*S04)));
-		return (1+x/2)*(1-x/2) + z*(r/s);
-	}
+  /* 1 - x*x/4 + x*x*R(x^2)/S(x^2) */
+  if (ix >= 0x3f200000) { /* |x| >= 2**-13 */
+    /* up to 4ulp error close to 2 */
+    z = x * x;
+    r = z * (R02 + z * (R03 + z * (R04 + z * R05)));
+    s = 1 + z * (S01 + z * (S02 + z * (S03 + z * S04)));
+    return (1 + x / 2) * (1 - x / 2) + z * (r / s);
+  }
 
-	/* 1 - x*x/4 */
-	/* prevent underflow */
-	/* inexact should be raised when x!=0, this is not done correctly */
-	if (ix >= 0x38000000)  /* |x| >= 2**-127 */
-		x = 0.25*x*x;
-	return 1 - x;
+  /* 1 - x*x/4 */
+  /* prevent underflow */
+  /* inexact should be raised when x!=0, this is not done correctly */
+  if (ix >= 0x38000000) /* |x| >= 2**-127 */
+    x = 0.25 * x * x;
+  return 1 - x;
 }
 
 static const double
-u00  = -7.38042951086872317523e-02, /* 0xBFB2E4D6, 0x99CBD01F */
-u01  =  1.76666452509181115538e-01, /* 0x3FC69D01, 0x9DE9E3FC */
-u02  = -1.38185671945596898896e-02, /* 0xBF8C4CE8, 0xB16CFA97 */
-u03  =  3.47453432093683650238e-04, /* 0x3F36C54D, 0x20B29B6B */
-u04  = -3.81407053724364161125e-06, /* 0xBECFFEA7, 0x73D25CAD */
-u05  =  1.95590137035022920206e-08, /* 0x3E550057, 0x3B4EABD4 */
-u06  = -3.98205194132103398453e-11, /* 0xBDC5E43D, 0x693FB3C8 */
-v01  =  1.27304834834123699328e-02, /* 0x3F8A1270, 0x91C9C71A */
-v02  =  7.60068627350353253702e-05, /* 0x3F13ECBB, 0xF578C6C1 */
-v03  =  2.59150851840457805467e-07, /* 0x3E91642D, 0x7FF202FD */
-v04  =  4.41110311332675467403e-10; /* 0x3DFE5018, 0x3BD6D9EF */
+    u00 = -7.38042951086872317523e-02, /* 0xBFB2E4D6, 0x99CBD01F */
+    u01 = 1.76666452509181115538e-01,  /* 0x3FC69D01, 0x9DE9E3FC */
+    u02 = -1.38185671945596898896e-02, /* 0xBF8C4CE8, 0xB16CFA97 */
+    u03 = 3.47453432093683650238e-04,  /* 0x3F36C54D, 0x20B29B6B */
+    u04 = -3.81407053724364161125e-06, /* 0xBECFFEA7, 0x73D25CAD */
+    u05 = 1.95590137035022920206e-08,  /* 0x3E550057, 0x3B4EABD4 */
+    u06 = -3.98205194132103398453e-11, /* 0xBDC5E43D, 0x693FB3C8 */
+    v01 = 1.27304834834123699328e-02,  /* 0x3F8A1270, 0x91C9C71A */
+    v02 = 7.60068627350353253702e-05,  /* 0x3F13ECBB, 0xF578C6C1 */
+    v03 = 2.59150851840457805467e-07,  /* 0x3E91642D, 0x7FF202FD */
+    v04 = 4.41110311332675467403e-10;  /* 0x3DFE5018, 0x3BD6D9EF */
 
-double y0(double x)
-{
-	double z,u,v;
-	uint32_t ix,lx;
+double y0(double x) {
+  double z, u, v;
+  uint32_t ix, lx;
 
-	EXTRACT_WORDS(ix, lx, x);
+  EXTRACT_WORDS(ix, lx, x);
 
-	/* y0(nan)=nan, y0(<0)=nan, y0(0)=-inf, y0(inf)=0 */
-	if ((ix<<1 | lx) == 0)
-		return -1/0.0;
-	if (ix>>31)
-		return 0/0.0;
-	if (ix >= 0x7ff00000)
-		return 1/x;
+  /* y0(nan)=nan, y0(<0)=nan, y0(0)=-inf, y0(inf)=0 */
+  if ((ix << 1 | lx) == 0)
+    return -1 / 0.0;
+  if (ix >> 31)
+    return 0 / 0.0;
+  if (ix >= 0x7ff00000)
+    return 1 / x;
 
-	if (ix >= 0x40000000) {  /* x >= 2 */
-		/* large ulp errors near zeros: 3.958, 7.086,.. */
-		return common(ix,x,1);
-	}
+  if (ix >= 0x40000000) { /* x >= 2 */
+    /* large ulp errors near zeros: 3.958, 7.086,.. */
+    return common(ix, x, 1);
+  }
 
-	/* U(x^2)/V(x^2) + (2/pi)*j0(x)*log(x) */
-	if (ix >= 0x3e400000) {  /* x >= 2**-27 */
-		/* large ulp error near the first zero, x ~= 0.89 */
-		z = x*x;
-		u = u00+z*(u01+z*(u02+z*(u03+z*(u04+z*(u05+z*u06)))));
-		v = 1.0+z*(v01+z*(v02+z*(v03+z*v04)));
-		return u/v + tpi*(j0(x)*log(x));
-	}
-	return u00 + tpi*log(x);
+  /* U(x^2)/V(x^2) + (2/pi)*j0(x)*log(x) */
+  if (ix >= 0x3e400000) { /* x >= 2**-27 */
+    /* large ulp error near the first zero, x ~= 0.89 */
+    z = x * x;
+    u = u00 +
+        z * (u01 + z * (u02 + z * (u03 + z * (u04 + z * (u05 + z * u06)))));
+    v = 1.0 + z * (v01 + z * (v02 + z * (v03 + z * v04)));
+    return u / v + tpi * (j0(x) * log(x));
+  }
+  return u00 + tpi * log(x);
 }
 
 /* The asymptotic expansions of pzero is
@@ -196,89 +194,100 @@
  * and
  *      | pzero(x)-1-R/S | <= 2  ** ( -60.26)
  */
-static const double pR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
-  0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
- -7.03124999999900357484e-02, /* 0xBFB1FFFF, 0xFFFFFD32 */
- -8.08167041275349795626e+00, /* 0xC02029D0, 0xB44FA779 */
- -2.57063105679704847262e+02, /* 0xC0701102, 0x7B19E863 */
- -2.48521641009428822144e+03, /* 0xC0A36A6E, 0xCD4DCAFC */
- -5.25304380490729545272e+03, /* 0xC0B4850B, 0x36CC643D */
+static const double pR8[6] = {
+    /* for x in [inf, 8]=1/[0,0.125] */
+    0.00000000000000000000e+00,  /* 0x00000000, 0x00000000 */
+    -7.03124999999900357484e-02, /* 0xBFB1FFFF, 0xFFFFFD32 */
+    -8.08167041275349795626e+00, /* 0xC02029D0, 0xB44FA779 */
+    -2.57063105679704847262e+02, /* 0xC0701102, 0x7B19E863 */
+    -2.48521641009428822144e+03, /* 0xC0A36A6E, 0xCD4DCAFC */
+    -5.25304380490729545272e+03, /* 0xC0B4850B, 0x36CC643D */
 };
 static const double pS8[5] = {
-  1.16534364619668181717e+02, /* 0x405D2233, 0x07A96751 */
-  3.83374475364121826715e+03, /* 0x40ADF37D, 0x50596938 */
-  4.05978572648472545552e+04, /* 0x40E3D2BB, 0x6EB6B05F */
-  1.16752972564375915681e+05, /* 0x40FC810F, 0x8F9FA9BD */
-  4.76277284146730962675e+04, /* 0x40E74177, 0x4F2C49DC */
+    1.16534364619668181717e+02, /* 0x405D2233, 0x07A96751 */
+    3.83374475364121826715e+03, /* 0x40ADF37D, 0x50596938 */
+    4.05978572648472545552e+04, /* 0x40E3D2BB, 0x6EB6B05F */
+    1.16752972564375915681e+05, /* 0x40FC810F, 0x8F9FA9BD */
+    4.76277284146730962675e+04, /* 0x40E74177, 0x4F2C49DC */
 };
 
-static const double pR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
- -1.14125464691894502584e-11, /* 0xBDA918B1, 0x47E495CC */
- -7.03124940873599280078e-02, /* 0xBFB1FFFF, 0xE69AFBC6 */
- -4.15961064470587782438e+00, /* 0xC010A370, 0xF90C6BBF */
- -6.76747652265167261021e+01, /* 0xC050EB2F, 0x5A7D1783 */
- -3.31231299649172967747e+02, /* 0xC074B3B3, 0x6742CC63 */
- -3.46433388365604912451e+02, /* 0xC075A6EF, 0x28A38BD7 */
+static const double pR5[6] = {
+    /* for x in [8,4.5454]=1/[0.125,0.22001] */
+    -1.14125464691894502584e-11, /* 0xBDA918B1, 0x47E495CC */
+    -7.03124940873599280078e-02, /* 0xBFB1FFFF, 0xE69AFBC6 */
+    -4.15961064470587782438e+00, /* 0xC010A370, 0xF90C6BBF */
+    -6.76747652265167261021e+01, /* 0xC050EB2F, 0x5A7D1783 */
+    -3.31231299649172967747e+02, /* 0xC074B3B3, 0x6742CC63 */
+    -3.46433388365604912451e+02, /* 0xC075A6EF, 0x28A38BD7 */
 };
 static const double pS5[5] = {
-  6.07539382692300335975e+01, /* 0x404E6081, 0x0C98C5DE */
-  1.05125230595704579173e+03, /* 0x40906D02, 0x5C7E2864 */
-  5.97897094333855784498e+03, /* 0x40B75AF8, 0x8FBE1D60 */
-  9.62544514357774460223e+03, /* 0x40C2CCB8, 0xFA76FA38 */
-  2.40605815922939109441e+03, /* 0x40A2CC1D, 0xC70BE864 */
+    6.07539382692300335975e+01, /* 0x404E6081, 0x0C98C5DE */
+    1.05125230595704579173e+03, /* 0x40906D02, 0x5C7E2864 */
+    5.97897094333855784498e+03, /* 0x40B75AF8, 0x8FBE1D60 */
+    9.62544514357774460223e+03, /* 0x40C2CCB8, 0xFA76FA38 */
+    2.40605815922939109441e+03, /* 0x40A2CC1D, 0xC70BE864 */
 };
 
-static const double pR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
- -2.54704601771951915620e-09, /* 0xBE25E103, 0x6FE1AA86 */
- -7.03119616381481654654e-02, /* 0xBFB1FFF6, 0xF7C0E24B */
- -2.40903221549529611423e+00, /* 0xC00345B2, 0xAEA48074 */
- -2.19659774734883086467e+01, /* 0xC035F74A, 0x4CB94E14 */
- -5.80791704701737572236e+01, /* 0xC04D0A22, 0x420A1A45 */
- -3.14479470594888503854e+01, /* 0xC03F72AC, 0xA892D80F */
+static const double pR3[6] = {
+    /* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
+    -2.54704601771951915620e-09, /* 0xBE25E103, 0x6FE1AA86 */
+    -7.03119616381481654654e-02, /* 0xBFB1FFF6, 0xF7C0E24B */
+    -2.40903221549529611423e+00, /* 0xC00345B2, 0xAEA48074 */
+    -2.19659774734883086467e+01, /* 0xC035F74A, 0x4CB94E14 */
+    -5.80791704701737572236e+01, /* 0xC04D0A22, 0x420A1A45 */
+    -3.14479470594888503854e+01, /* 0xC03F72AC, 0xA892D80F */
 };
 static const double pS3[5] = {
-  3.58560338055209726349e+01, /* 0x4041ED92, 0x84077DD3 */
-  3.61513983050303863820e+02, /* 0x40769839, 0x464A7C0E */
-  1.19360783792111533330e+03, /* 0x4092A66E, 0x6D1061D6 */
-  1.12799679856907414432e+03, /* 0x40919FFC, 0xB8C39B7E */
-  1.73580930813335754692e+02, /* 0x4065B296, 0xFC379081 */
+    3.58560338055209726349e+01, /* 0x4041ED92, 0x84077DD3 */
+    3.61513983050303863820e+02, /* 0x40769839, 0x464A7C0E */
+    1.19360783792111533330e+03, /* 0x4092A66E, 0x6D1061D6 */
+    1.12799679856907414432e+03, /* 0x40919FFC, 0xB8C39B7E */
+    1.73580930813335754692e+02, /* 0x4065B296, 0xFC379081 */
 };
 
-static const double pR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
- -8.87534333032526411254e-08, /* 0xBE77D316, 0xE927026D */
- -7.03030995483624743247e-02, /* 0xBFB1FF62, 0x495E1E42 */
- -1.45073846780952986357e+00, /* 0xBFF73639, 0x8A24A843 */
- -7.63569613823527770791e+00, /* 0xC01E8AF3, 0xEDAFA7F3 */
- -1.11931668860356747786e+01, /* 0xC02662E6, 0xC5246303 */
- -3.23364579351335335033e+00, /* 0xC009DE81, 0xAF8FE70F */
+static const double pR2[6] = {
+    /* for x in [2.8570,2]=1/[0.3499,0.5] */
+    -8.87534333032526411254e-08, /* 0xBE77D316, 0xE927026D */
+    -7.03030995483624743247e-02, /* 0xBFB1FF62, 0x495E1E42 */
+    -1.45073846780952986357e+00, /* 0xBFF73639, 0x8A24A843 */
+    -7.63569613823527770791e+00, /* 0xC01E8AF3, 0xEDAFA7F3 */
+    -1.11931668860356747786e+01, /* 0xC02662E6, 0xC5246303 */
+    -3.23364579351335335033e+00, /* 0xC009DE81, 0xAF8FE70F */
 };
 static const double pS2[5] = {
-  2.22202997532088808441e+01, /* 0x40363865, 0x908B5959 */
-  1.36206794218215208048e+02, /* 0x4061069E, 0x0EE8878F */
-  2.70470278658083486789e+02, /* 0x4070E786, 0x42EA079B */
-  1.53875394208320329881e+02, /* 0x40633C03, 0x3AB6FAFF */
-  1.46576176948256193810e+01, /* 0x402D50B3, 0x44391809 */
+    2.22202997532088808441e+01, /* 0x40363865, 0x908B5959 */
+    1.36206794218215208048e+02, /* 0x4061069E, 0x0EE8878F */
+    2.70470278658083486789e+02, /* 0x4070E786, 0x42EA079B */
+    1.53875394208320329881e+02, /* 0x40633C03, 0x3AB6FAFF */
+    1.46576176948256193810e+01, /* 0x402D50B3, 0x44391809 */
 };
 
-static double pzero(double x)
-{
-	const double *p,*q;
-	double_t z,r,s;
-	uint32_t ix;
+static double pzero(double x) {
+  const double *p, *q;
+  double_t z, r, s;
+  uint32_t ix;
 
-	GET_HIGH_WORD(ix, x);
-	ix &= 0x7fffffff;
-	if      (ix >= 0x40200000){p = pR8; q = pS8;}
-	else if (ix >= 0x40122E8B){p = pR5; q = pS5;}
-	else if (ix >= 0x4006DB6D){p = pR3; q = pS3;}
-	else /*ix >= 0x40000000*/ {p = pR2; q = pS2;}
-	z = 1.0/(x*x);
-	r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
-	s = 1.0+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4]))));
-	return 1.0 + r/s;
+  GET_HIGH_WORD(ix, x);
+  ix &= 0x7fffffff;
+  if (ix >= 0x40200000) {
+    p = pR8;
+    q = pS8;
+  } else if (ix >= 0x40122E8B) {
+    p = pR5;
+    q = pS5;
+  } else if (ix >= 0x4006DB6D) {
+    p = pR3;
+    q = pS3;
+  } else /*ix >= 0x40000000*/ {
+    p = pR2;
+    q = pS2;
+  }
+  z = 1.0 / (x * x);
+  r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
+  s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * q[4]))));
+  return 1.0 + r / s;
 }
 
-
 /* For x >= 8, the asymptotic expansions of qzero is
  *      -1/8 s + 75/1024 s^3 - ..., where s = 1/x.
  * We approximate pzero by
@@ -288,88 +297,101 @@
  * and
  *      | qzero(x)/s +1.25-R/S | <= 2  ** ( -61.22)
  */
-static const double qR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
-  0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
-  7.32421874999935051953e-02, /* 0x3FB2BFFF, 0xFFFFFE2C */
-  1.17682064682252693899e+01, /* 0x40278952, 0x5BB334D6 */
-  5.57673380256401856059e+02, /* 0x40816D63, 0x15301825 */
-  8.85919720756468632317e+03, /* 0x40C14D99, 0x3E18F46D */
-  3.70146267776887834771e+04, /* 0x40E212D4, 0x0E901566 */
+static const double qR8[6] = {
+    /* for x in [inf, 8]=1/[0,0.125] */
+    0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
+    7.32421874999935051953e-02, /* 0x3FB2BFFF, 0xFFFFFE2C */
+    1.17682064682252693899e+01, /* 0x40278952, 0x5BB334D6 */
+    5.57673380256401856059e+02, /* 0x40816D63, 0x15301825 */
+    8.85919720756468632317e+03, /* 0x40C14D99, 0x3E18F46D */
+    3.70146267776887834771e+04, /* 0x40E212D4, 0x0E901566 */
 };
 static const double qS8[6] = {
-  1.63776026895689824414e+02, /* 0x406478D5, 0x365B39BC */
-  8.09834494656449805916e+03, /* 0x40BFA258, 0x4E6B0563 */
-  1.42538291419120476348e+05, /* 0x41016652, 0x54D38C3F */
-  8.03309257119514397345e+05, /* 0x412883DA, 0x83A52B43 */
-  8.40501579819060512818e+05, /* 0x4129A66B, 0x28DE0B3D */
- -3.43899293537866615225e+05, /* 0xC114FD6D, 0x2C9530C5 */
+    1.63776026895689824414e+02,  /* 0x406478D5, 0x365B39BC */
+    8.09834494656449805916e+03,  /* 0x40BFA258, 0x4E6B0563 */
+    1.42538291419120476348e+05,  /* 0x41016652, 0x54D38C3F */
+    8.03309257119514397345e+05,  /* 0x412883DA, 0x83A52B43 */
+    8.40501579819060512818e+05,  /* 0x4129A66B, 0x28DE0B3D */
+    -3.43899293537866615225e+05, /* 0xC114FD6D, 0x2C9530C5 */
 };
 
-static const double qR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
-  1.84085963594515531381e-11, /* 0x3DB43D8F, 0x29CC8CD9 */
-  7.32421766612684765896e-02, /* 0x3FB2BFFF, 0xD172B04C */
-  5.83563508962056953777e+00, /* 0x401757B0, 0xB9953DD3 */
-  1.35111577286449829671e+02, /* 0x4060E392, 0x0A8788E9 */
-  1.02724376596164097464e+03, /* 0x40900CF9, 0x9DC8C481 */
-  1.98997785864605384631e+03, /* 0x409F17E9, 0x53C6E3A6 */
+static const double qR5[6] = {
+    /* for x in [8,4.5454]=1/[0.125,0.22001] */
+    1.84085963594515531381e-11, /* 0x3DB43D8F, 0x29CC8CD9 */
+    7.32421766612684765896e-02, /* 0x3FB2BFFF, 0xD172B04C */
+    5.83563508962056953777e+00, /* 0x401757B0, 0xB9953DD3 */
+    1.35111577286449829671e+02, /* 0x4060E392, 0x0A8788E9 */
+    1.02724376596164097464e+03, /* 0x40900CF9, 0x9DC8C481 */
+    1.98997785864605384631e+03, /* 0x409F17E9, 0x53C6E3A6 */
 };
 static const double qS5[6] = {
-  8.27766102236537761883e+01, /* 0x4054B1B3, 0xFB5E1543 */
-  2.07781416421392987104e+03, /* 0x40A03BA0, 0xDA21C0CE */
-  1.88472887785718085070e+04, /* 0x40D267D2, 0x7B591E6D */
-  5.67511122894947329769e+04, /* 0x40EBB5E3, 0x97E02372 */
-  3.59767538425114471465e+04, /* 0x40E19118, 0x1F7A54A0 */
- -5.35434275601944773371e+03, /* 0xC0B4EA57, 0xBEDBC609 */
+    8.27766102236537761883e+01,  /* 0x4054B1B3, 0xFB5E1543 */
+    2.07781416421392987104e+03,  /* 0x40A03BA0, 0xDA21C0CE */
+    1.88472887785718085070e+04,  /* 0x40D267D2, 0x7B591E6D */
+    5.67511122894947329769e+04,  /* 0x40EBB5E3, 0x97E02372 */
+    3.59767538425114471465e+04,  /* 0x40E19118, 0x1F7A54A0 */
+    -5.35434275601944773371e+03, /* 0xC0B4EA57, 0xBEDBC609 */
 };
 
-static const double qR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
-  4.37741014089738620906e-09, /* 0x3E32CD03, 0x6ADECB82 */
-  7.32411180042911447163e-02, /* 0x3FB2BFEE, 0x0E8D0842 */
-  3.34423137516170720929e+00, /* 0x400AC0FC, 0x61149CF5 */
-  4.26218440745412650017e+01, /* 0x40454F98, 0x962DAEDD */
-  1.70808091340565596283e+02, /* 0x406559DB, 0xE25EFD1F */
-  1.66733948696651168575e+02, /* 0x4064D77C, 0x81FA21E0 */
+static const double qR3[6] = {
+    /* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
+    4.37741014089738620906e-09, /* 0x3E32CD03, 0x6ADECB82 */
+    7.32411180042911447163e-02, /* 0x3FB2BFEE, 0x0E8D0842 */
+    3.34423137516170720929e+00, /* 0x400AC0FC, 0x61149CF5 */
+    4.26218440745412650017e+01, /* 0x40454F98, 0x962DAEDD */
+    1.70808091340565596283e+02, /* 0x406559DB, 0xE25EFD1F */
+    1.66733948696651168575e+02, /* 0x4064D77C, 0x81FA21E0 */
 };
 static const double qS3[6] = {
-  4.87588729724587182091e+01, /* 0x40486122, 0xBFE343A6 */
-  7.09689221056606015736e+02, /* 0x40862D83, 0x86544EB3 */
-  3.70414822620111362994e+03, /* 0x40ACF04B, 0xE44DFC63 */
-  6.46042516752568917582e+03, /* 0x40B93C6C, 0xD7C76A28 */
-  2.51633368920368957333e+03, /* 0x40A3A8AA, 0xD94FB1C0 */
- -1.49247451836156386662e+02, /* 0xC062A7EB, 0x201CF40F */
+    4.87588729724587182091e+01,  /* 0x40486122, 0xBFE343A6 */
+    7.09689221056606015736e+02,  /* 0x40862D83, 0x86544EB3 */
+    3.70414822620111362994e+03,  /* 0x40ACF04B, 0xE44DFC63 */
+    6.46042516752568917582e+03,  /* 0x40B93C6C, 0xD7C76A28 */
+    2.51633368920368957333e+03,  /* 0x40A3A8AA, 0xD94FB1C0 */
+    -1.49247451836156386662e+02, /* 0xC062A7EB, 0x201CF40F */
 };
 
-static const double qR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
-  1.50444444886983272379e-07, /* 0x3E84313B, 0x54F76BDB */
-  7.32234265963079278272e-02, /* 0x3FB2BEC5, 0x3E883E34 */
-  1.99819174093815998816e+00, /* 0x3FFFF897, 0xE727779C */
-  1.44956029347885735348e+01, /* 0x402CFDBF, 0xAAF96FE5 */
-  3.16662317504781540833e+01, /* 0x403FAA8E, 0x29FBDC4A */
-  1.62527075710929267416e+01, /* 0x403040B1, 0x71814BB4 */
+static const double qR2[6] = {
+    /* for x in [2.8570,2]=1/[0.3499,0.5] */
+    1.50444444886983272379e-07, /* 0x3E84313B, 0x54F76BDB */
+    7.32234265963079278272e-02, /* 0x3FB2BEC5, 0x3E883E34 */
+    1.99819174093815998816e+00, /* 0x3FFFF897, 0xE727779C */
+    1.44956029347885735348e+01, /* 0x402CFDBF, 0xAAF96FE5 */
+    3.16662317504781540833e+01, /* 0x403FAA8E, 0x29FBDC4A */
+    1.62527075710929267416e+01, /* 0x403040B1, 0x71814BB4 */
 };
 static const double qS2[6] = {
-  3.03655848355219184498e+01, /* 0x403E5D96, 0xF7C07AED */
-  2.69348118608049844624e+02, /* 0x4070D591, 0xE4D14B40 */
-  8.44783757595320139444e+02, /* 0x408A6645, 0x22B3BF22 */
-  8.82935845112488550512e+02, /* 0x408B977C, 0x9C5CC214 */
-  2.12666388511798828631e+02, /* 0x406A9553, 0x0E001365 */
- -5.31095493882666946917e+00, /* 0xC0153E6A, 0xF8B32931 */
+    3.03655848355219184498e+01,  /* 0x403E5D96, 0xF7C07AED */
+    2.69348118608049844624e+02,  /* 0x4070D591, 0xE4D14B40 */
+    8.44783757595320139444e+02,  /* 0x408A6645, 0x22B3BF22 */
+    8.82935845112488550512e+02,  /* 0x408B977C, 0x9C5CC214 */
+    2.12666388511798828631e+02,  /* 0x406A9553, 0x0E001365 */
+    -5.31095493882666946917e+00, /* 0xC0153E6A, 0xF8B32931 */
 };
 
-static double qzero(double x)
-{
-	const double *p,*q;
-	double_t s,r,z;
-	uint32_t ix;
+static double qzero(double x) {
+  const double *p, *q;
+  double_t s, r, z;
+  uint32_t ix;
 
-	GET_HIGH_WORD(ix, x);
-	ix &= 0x7fffffff;
-	if      (ix >= 0x40200000){p = qR8; q = qS8;}
-	else if (ix >= 0x40122E8B){p = qR5; q = qS5;}
-	else if (ix >= 0x4006DB6D){p = qR3; q = qS3;}
-	else /*ix >= 0x40000000*/ {p = qR2; q = qS2;}
-	z = 1.0/(x*x);
-	r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
-	s = 1.0+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));
-	return (-.125 + r/s)/x;
+  GET_HIGH_WORD(ix, x);
+  ix &= 0x7fffffff;
+  if (ix >= 0x40200000) {
+    p = qR8;
+    q = qS8;
+  } else if (ix >= 0x40122E8B) {
+    p = qR5;
+    q = qS5;
+  } else if (ix >= 0x4006DB6D) {
+    p = qR3;
+    q = qS3;
+  } else /*ix >= 0x40000000*/ {
+    p = qR2;
+    q = qS2;
+  }
+  z = 1.0 / (x * x);
+  r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
+  s = 1.0 +
+      z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5])))));
+  return (-.125 + r / s) / x;
 }
diff --git a/fusl/src/math/j0f.c b/fusl/src/math/j0f.c
index 45883dc..6d926d3 100644
--- a/fusl/src/math/j0f.c
+++ b/fusl/src/math/j0f.c
@@ -18,113 +18,108 @@
 
 static float pzerof(float), qzerof(float);
 
-static const float
-invsqrtpi = 5.6418961287e-01, /* 0x3f106ebb */
-tpi       = 6.3661974669e-01; /* 0x3f22f983 */
+static const float invsqrtpi = 5.6418961287e-01, /* 0x3f106ebb */
+    tpi = 6.3661974669e-01;                      /* 0x3f22f983 */
 
-static float common(uint32_t ix, float x, int y0)
-{
-	float z,s,c,ss,cc;
-	/*
-	 * j0(x) = 1/sqrt(pi) * (P(0,x)*cc - Q(0,x)*ss) / sqrt(x)
-	 * y0(x) = 1/sqrt(pi) * (P(0,x)*ss + Q(0,x)*cc) / sqrt(x)
-	 */
-	s = sinf(x);
-	c = cosf(x);
-	if (y0)
-		c = -c;
-	cc = s+c;
-	if (ix < 0x7f000000) {
-		ss = s-c;
-		z = -cosf(2*x);
-		if (s*c < 0)
-			cc = z/ss;
-		else
-			ss = z/cc;
-		if (ix < 0x58800000) {
-			if (y0)
-				ss = -ss;
-			cc = pzerof(x)*cc-qzerof(x)*ss;
-		}
-	}
-	return invsqrtpi*cc/sqrtf(x);
+static float common(uint32_t ix, float x, int y0) {
+  float z, s, c, ss, cc;
+  /*
+   * j0(x) = 1/sqrt(pi) * (P(0,x)*cc - Q(0,x)*ss) / sqrt(x)
+   * y0(x) = 1/sqrt(pi) * (P(0,x)*ss + Q(0,x)*cc) / sqrt(x)
+   */
+  s = sinf(x);
+  c = cosf(x);
+  if (y0)
+    c = -c;
+  cc = s + c;
+  if (ix < 0x7f000000) {
+    ss = s - c;
+    z = -cosf(2 * x);
+    if (s * c < 0)
+      cc = z / ss;
+    else
+      ss = z / cc;
+    if (ix < 0x58800000) {
+      if (y0)
+        ss = -ss;
+      cc = pzerof(x) * cc - qzerof(x) * ss;
+    }
+  }
+  return invsqrtpi * cc / sqrtf(x);
 }
 
 /* R0/S0 on [0, 2.00] */
-static const float
-R02 =  1.5625000000e-02, /* 0x3c800000 */
-R03 = -1.8997929874e-04, /* 0xb947352e */
-R04 =  1.8295404516e-06, /* 0x35f58e88 */
-R05 = -4.6183270541e-09, /* 0xb19eaf3c */
-S01 =  1.5619102865e-02, /* 0x3c7fe744 */
-S02 =  1.1692678527e-04, /* 0x38f53697 */
-S03 =  5.1354652442e-07, /* 0x3509daa6 */
-S04 =  1.1661400734e-09; /* 0x30a045e8 */
+static const float R02 = 1.5625000000e-02, /* 0x3c800000 */
+    R03 = -1.8997929874e-04,               /* 0xb947352e */
+    R04 = 1.8295404516e-06,                /* 0x35f58e88 */
+    R05 = -4.6183270541e-09,               /* 0xb19eaf3c */
+    S01 = 1.5619102865e-02,                /* 0x3c7fe744 */
+    S02 = 1.1692678527e-04,                /* 0x38f53697 */
+    S03 = 5.1354652442e-07,                /* 0x3509daa6 */
+    S04 = 1.1661400734e-09;                /* 0x30a045e8 */
 
-float j0f(float x)
-{
-	float z,r,s;
-	uint32_t ix;
+float j0f(float x) {
+  float z, r, s;
+  uint32_t ix;
 
-	GET_FLOAT_WORD(ix, x);
-	ix &= 0x7fffffff;
-	if (ix >= 0x7f800000)
-		return 1/(x*x);
-	x = fabsf(x);
+  GET_FLOAT_WORD(ix, x);
+  ix &= 0x7fffffff;
+  if (ix >= 0x7f800000)
+    return 1 / (x * x);
+  x = fabsf(x);
 
-	if (ix >= 0x40000000) {  /* |x| >= 2 */
-		/* large ulp error near zeros */
-		return common(ix, x, 0);
-	}
-	if (ix >= 0x3a000000) {  /* |x| >= 2**-11 */
-		/* up to 4ulp error near 2 */
-		z = x*x;
-		r = z*(R02+z*(R03+z*(R04+z*R05)));
-		s = 1+z*(S01+z*(S02+z*(S03+z*S04)));
-		return (1+x/2)*(1-x/2) + z*(r/s);
-	}
-	if (ix >= 0x21800000)  /* |x| >= 2**-60 */
-		x = 0.25f*x*x;
-	return 1 - x;
+  if (ix >= 0x40000000) { /* |x| >= 2 */
+    /* large ulp error near zeros */
+    return common(ix, x, 0);
+  }
+  if (ix >= 0x3a000000) { /* |x| >= 2**-11 */
+    /* up to 4ulp error near 2 */
+    z = x * x;
+    r = z * (R02 + z * (R03 + z * (R04 + z * R05)));
+    s = 1 + z * (S01 + z * (S02 + z * (S03 + z * S04)));
+    return (1 + x / 2) * (1 - x / 2) + z * (r / s);
+  }
+  if (ix >= 0x21800000) /* |x| >= 2**-60 */
+    x = 0.25f * x * x;
+  return 1 - x;
 }
 
-static const float
-u00  = -7.3804296553e-02, /* 0xbd9726b5 */
-u01  =  1.7666645348e-01, /* 0x3e34e80d */
-u02  = -1.3818567619e-02, /* 0xbc626746 */
-u03  =  3.4745343146e-04, /* 0x39b62a69 */
-u04  = -3.8140706238e-06, /* 0xb67ff53c */
-u05  =  1.9559013964e-08, /* 0x32a802ba */
-u06  = -3.9820518410e-11, /* 0xae2f21eb */
-v01  =  1.2730483897e-02, /* 0x3c509385 */
-v02  =  7.6006865129e-05, /* 0x389f65e0 */
-v03  =  2.5915085189e-07, /* 0x348b216c */
-v04  =  4.4111031494e-10; /* 0x2ff280c2 */
+static const float u00 = -7.3804296553e-02, /* 0xbd9726b5 */
+    u01 = 1.7666645348e-01,                 /* 0x3e34e80d */
+    u02 = -1.3818567619e-02,                /* 0xbc626746 */
+    u03 = 3.4745343146e-04,                 /* 0x39b62a69 */
+    u04 = -3.8140706238e-06,                /* 0xb67ff53c */
+    u05 = 1.9559013964e-08,                 /* 0x32a802ba */
+    u06 = -3.9820518410e-11,                /* 0xae2f21eb */
+    v01 = 1.2730483897e-02,                 /* 0x3c509385 */
+    v02 = 7.6006865129e-05,                 /* 0x389f65e0 */
+    v03 = 2.5915085189e-07,                 /* 0x348b216c */
+    v04 = 4.4111031494e-10;                 /* 0x2ff280c2 */
 
-float y0f(float x)
-{
-	float z,u,v;
-	uint32_t ix;
+float y0f(float x) {
+  float z, u, v;
+  uint32_t ix;
 
-	GET_FLOAT_WORD(ix, x);
-	if ((ix & 0x7fffffff) == 0)
-		return -1/0.0f;
-	if (ix>>31)
-		return 0/0.0f;
-	if (ix >= 0x7f800000)
-		return 1/x;
-	if (ix >= 0x40000000) {  /* |x| >= 2.0 */
-		/* large ulp error near zeros */
-		return common(ix,x,1);
-	}
-	if (ix >= 0x39000000) {  /* x >= 2**-13 */
-		/* large ulp error at x ~= 0.89 */
-		z = x*x;
-		u = u00+z*(u01+z*(u02+z*(u03+z*(u04+z*(u05+z*u06)))));
-		v = 1+z*(v01+z*(v02+z*(v03+z*v04)));
-		return u/v + tpi*(j0f(x)*logf(x));
-	}
-	return u00 + tpi*logf(x);
+  GET_FLOAT_WORD(ix, x);
+  if ((ix & 0x7fffffff) == 0)
+    return -1 / 0.0f;
+  if (ix >> 31)
+    return 0 / 0.0f;
+  if (ix >= 0x7f800000)
+    return 1 / x;
+  if (ix >= 0x40000000) { /* |x| >= 2.0 */
+    /* large ulp error near zeros */
+    return common(ix, x, 1);
+  }
+  if (ix >= 0x39000000) { /* x >= 2**-13 */
+    /* large ulp error at x ~= 0.89 */
+    z = x * x;
+    u = u00 +
+        z * (u01 + z * (u02 + z * (u03 + z * (u04 + z * (u05 + z * u06)))));
+    v = 1 + z * (v01 + z * (v02 + z * (v03 + z * v04)));
+    return u / v + tpi * (j0f(x) * logf(x));
+  }
+  return u00 + tpi * logf(x);
 }
 
 /* The asymptotic expansions of pzero is
@@ -136,88 +131,99 @@
  * and
  *      | pzero(x)-1-R/S | <= 2  ** ( -60.26)
  */
-static const float pR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
-  0.0000000000e+00, /* 0x00000000 */
- -7.0312500000e-02, /* 0xbd900000 */
- -8.0816707611e+00, /* 0xc1014e86 */
- -2.5706311035e+02, /* 0xc3808814 */
- -2.4852163086e+03, /* 0xc51b5376 */
- -5.2530439453e+03, /* 0xc5a4285a */
+static const float pR8[6] = {
+    /* for x in [inf, 8]=1/[0,0.125] */
+    0.0000000000e+00,  /* 0x00000000 */
+    -7.0312500000e-02, /* 0xbd900000 */
+    -8.0816707611e+00, /* 0xc1014e86 */
+    -2.5706311035e+02, /* 0xc3808814 */
+    -2.4852163086e+03, /* 0xc51b5376 */
+    -5.2530439453e+03, /* 0xc5a4285a */
 };
 static const float pS8[5] = {
-  1.1653436279e+02, /* 0x42e91198 */
-  3.8337448730e+03, /* 0x456f9beb */
-  4.0597855469e+04, /* 0x471e95db */
-  1.1675296875e+05, /* 0x47e4087c */
-  4.7627726562e+04, /* 0x473a0bba */
+    1.1653436279e+02, /* 0x42e91198 */
+    3.8337448730e+03, /* 0x456f9beb */
+    4.0597855469e+04, /* 0x471e95db */
+    1.1675296875e+05, /* 0x47e4087c */
+    4.7627726562e+04, /* 0x473a0bba */
 };
-static const float pR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
- -1.1412546255e-11, /* 0xad48c58a */
- -7.0312492549e-02, /* 0xbd8fffff */
- -4.1596107483e+00, /* 0xc0851b88 */
- -6.7674766541e+01, /* 0xc287597b */
- -3.3123129272e+02, /* 0xc3a59d9b */
- -3.4643338013e+02, /* 0xc3ad3779 */
+static const float pR5[6] = {
+    /* for x in [8,4.5454]=1/[0.125,0.22001] */
+    -1.1412546255e-11, /* 0xad48c58a */
+    -7.0312492549e-02, /* 0xbd8fffff */
+    -4.1596107483e+00, /* 0xc0851b88 */
+    -6.7674766541e+01, /* 0xc287597b */
+    -3.3123129272e+02, /* 0xc3a59d9b */
+    -3.4643338013e+02, /* 0xc3ad3779 */
 };
 static const float pS5[5] = {
-  6.0753936768e+01, /* 0x42730408 */
-  1.0512523193e+03, /* 0x44836813 */
-  5.9789707031e+03, /* 0x45bad7c4 */
-  9.6254453125e+03, /* 0x461665c8 */
-  2.4060581055e+03, /* 0x451660ee */
+    6.0753936768e+01, /* 0x42730408 */
+    1.0512523193e+03, /* 0x44836813 */
+    5.9789707031e+03, /* 0x45bad7c4 */
+    9.6254453125e+03, /* 0x461665c8 */
+    2.4060581055e+03, /* 0x451660ee */
 };
 
-static const float pR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
- -2.5470459075e-09, /* 0xb12f081b */
- -7.0311963558e-02, /* 0xbd8fffb8 */
- -2.4090321064e+00, /* 0xc01a2d95 */
- -2.1965976715e+01, /* 0xc1afba52 */
- -5.8079170227e+01, /* 0xc2685112 */
- -3.1447946548e+01, /* 0xc1fb9565 */
+static const float pR3[6] = {
+    /* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
+    -2.5470459075e-09, /* 0xb12f081b */
+    -7.0311963558e-02, /* 0xbd8fffb8 */
+    -2.4090321064e+00, /* 0xc01a2d95 */
+    -2.1965976715e+01, /* 0xc1afba52 */
+    -5.8079170227e+01, /* 0xc2685112 */
+    -3.1447946548e+01, /* 0xc1fb9565 */
 };
 static const float pS3[5] = {
-  3.5856033325e+01, /* 0x420f6c94 */
-  3.6151397705e+02, /* 0x43b4c1ca */
-  1.1936077881e+03, /* 0x44953373 */
-  1.1279968262e+03, /* 0x448cffe6 */
-  1.7358093262e+02, /* 0x432d94b8 */
+    3.5856033325e+01, /* 0x420f6c94 */
+    3.6151397705e+02, /* 0x43b4c1ca */
+    1.1936077881e+03, /* 0x44953373 */
+    1.1279968262e+03, /* 0x448cffe6 */
+    1.7358093262e+02, /* 0x432d94b8 */
 };
 
-static const float pR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
- -8.8753431271e-08, /* 0xb3be98b7 */
- -7.0303097367e-02, /* 0xbd8ffb12 */
- -1.4507384300e+00, /* 0xbfb9b1cc */
- -7.6356959343e+00, /* 0xc0f4579f */
- -1.1193166733e+01, /* 0xc1331736 */
- -3.2336456776e+00, /* 0xc04ef40d */
+static const float pR2[6] = {
+    /* for x in [2.8570,2]=1/[0.3499,0.5] */
+    -8.8753431271e-08, /* 0xb3be98b7 */
+    -7.0303097367e-02, /* 0xbd8ffb12 */
+    -1.4507384300e+00, /* 0xbfb9b1cc */
+    -7.6356959343e+00, /* 0xc0f4579f */
+    -1.1193166733e+01, /* 0xc1331736 */
+    -3.2336456776e+00, /* 0xc04ef40d */
 };
 static const float pS2[5] = {
-  2.2220300674e+01, /* 0x41b1c32d */
-  1.3620678711e+02, /* 0x430834f0 */
-  2.7047027588e+02, /* 0x43873c32 */
-  1.5387539673e+02, /* 0x4319e01a */
-  1.4657617569e+01, /* 0x416a859a */
+    2.2220300674e+01, /* 0x41b1c32d */
+    1.3620678711e+02, /* 0x430834f0 */
+    2.7047027588e+02, /* 0x43873c32 */
+    1.5387539673e+02, /* 0x4319e01a */
+    1.4657617569e+01, /* 0x416a859a */
 };
 
-static float pzerof(float x)
-{
-	const float *p,*q;
-	float_t z,r,s;
-	uint32_t ix;
+static float pzerof(float x) {
+  const float *p, *q;
+  float_t z, r, s;
+  uint32_t ix;
 
-	GET_FLOAT_WORD(ix, x);
-	ix &= 0x7fffffff;
-	if      (ix >= 0x41000000){p = pR8; q = pS8;}
-	else if (ix >= 0x40f71c58){p = pR5; q = pS5;}
-	else if (ix >= 0x4036db68){p = pR3; q = pS3;}
-	else /*ix >= 0x40000000*/ {p = pR2; q = pS2;}
-	z = 1.0f/(x*x);
-	r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
-	s = 1.0f+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4]))));
-	return 1.0f + r/s;
+  GET_FLOAT_WORD(ix, x);
+  ix &= 0x7fffffff;
+  if (ix >= 0x41000000) {
+    p = pR8;
+    q = pS8;
+  } else if (ix >= 0x40f71c58) {
+    p = pR5;
+    q = pS5;
+  } else if (ix >= 0x4036db68) {
+    p = pR3;
+    q = pS3;
+  } else /*ix >= 0x40000000*/ {
+    p = pR2;
+    q = pS2;
+  }
+  z = 1.0f / (x * x);
+  r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
+  s = 1.0f + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * q[4]))));
+  return 1.0f + r / s;
 }
 
-
 /* For x >= 8, the asymptotic expansions of qzero is
  *      -1/8 s + 75/1024 s^3 - ..., where s = 1/x.
  * We approximate pzero by
@@ -227,88 +233,101 @@
  * and
  *      | qzero(x)/s +1.25-R/S | <= 2  ** ( -61.22)
  */
-static const float qR8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
-  0.0000000000e+00, /* 0x00000000 */
-  7.3242187500e-02, /* 0x3d960000 */
-  1.1768206596e+01, /* 0x413c4a93 */
-  5.5767340088e+02, /* 0x440b6b19 */
-  8.8591972656e+03, /* 0x460a6cca */
-  3.7014625000e+04, /* 0x471096a0 */
+static const float qR8[6] = {
+    /* for x in [inf, 8]=1/[0,0.125] */
+    0.0000000000e+00, /* 0x00000000 */
+    7.3242187500e-02, /* 0x3d960000 */
+    1.1768206596e+01, /* 0x413c4a93 */
+    5.5767340088e+02, /* 0x440b6b19 */
+    8.8591972656e+03, /* 0x460a6cca */
+    3.7014625000e+04, /* 0x471096a0 */
 };
 static const float qS8[6] = {
-  1.6377603149e+02, /* 0x4323c6aa */
-  8.0983447266e+03, /* 0x45fd12c2 */
-  1.4253829688e+05, /* 0x480b3293 */
-  8.0330925000e+05, /* 0x49441ed4 */
-  8.4050156250e+05, /* 0x494d3359 */
- -3.4389928125e+05, /* 0xc8a7eb69 */
+    1.6377603149e+02,  /* 0x4323c6aa */
+    8.0983447266e+03,  /* 0x45fd12c2 */
+    1.4253829688e+05,  /* 0x480b3293 */
+    8.0330925000e+05,  /* 0x49441ed4 */
+    8.4050156250e+05,  /* 0x494d3359 */
+    -3.4389928125e+05, /* 0xc8a7eb69 */
 };
 
-static const float qR5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
-  1.8408595828e-11, /* 0x2da1ec79 */
-  7.3242180049e-02, /* 0x3d95ffff */
-  5.8356351852e+00, /* 0x40babd86 */
-  1.3511157227e+02, /* 0x43071c90 */
-  1.0272437744e+03, /* 0x448067cd */
-  1.9899779053e+03, /* 0x44f8bf4b */
+static const float qR5[6] = {
+    /* for x in [8,4.5454]=1/[0.125,0.22001] */
+    1.8408595828e-11, /* 0x2da1ec79 */
+    7.3242180049e-02, /* 0x3d95ffff */
+    5.8356351852e+00, /* 0x40babd86 */
+    1.3511157227e+02, /* 0x43071c90 */
+    1.0272437744e+03, /* 0x448067cd */
+    1.9899779053e+03, /* 0x44f8bf4b */
 };
 static const float qS5[6] = {
-  8.2776611328e+01, /* 0x42a58da0 */
-  2.0778142090e+03, /* 0x4501dd07 */
-  1.8847289062e+04, /* 0x46933e94 */
-  5.6751113281e+04, /* 0x475daf1d */
-  3.5976753906e+04, /* 0x470c88c1 */
- -5.3543427734e+03, /* 0xc5a752be */
+    8.2776611328e+01,  /* 0x42a58da0 */
+    2.0778142090e+03,  /* 0x4501dd07 */
+    1.8847289062e+04,  /* 0x46933e94 */
+    5.6751113281e+04,  /* 0x475daf1d */
+    3.5976753906e+04,  /* 0x470c88c1 */
+    -5.3543427734e+03, /* 0xc5a752be */
 };
 
-static const float qR3[6] = {/* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
-  4.3774099900e-09, /* 0x3196681b */
-  7.3241114616e-02, /* 0x3d95ff70 */
-  3.3442313671e+00, /* 0x405607e3 */
-  4.2621845245e+01, /* 0x422a7cc5 */
-  1.7080809021e+02, /* 0x432acedf */
-  1.6673394775e+02, /* 0x4326bbe4 */
+static const float qR3[6] = {
+    /* for x in [4.547,2.8571]=1/[0.2199,0.35001] */
+    4.3774099900e-09, /* 0x3196681b */
+    7.3241114616e-02, /* 0x3d95ff70 */
+    3.3442313671e+00, /* 0x405607e3 */
+    4.2621845245e+01, /* 0x422a7cc5 */
+    1.7080809021e+02, /* 0x432acedf */
+    1.6673394775e+02, /* 0x4326bbe4 */
 };
 static const float qS3[6] = {
-  4.8758872986e+01, /* 0x42430916 */
-  7.0968920898e+02, /* 0x44316c1c */
-  3.7041481934e+03, /* 0x4567825f */
-  6.4604252930e+03, /* 0x45c9e367 */
-  2.5163337402e+03, /* 0x451d4557 */
- -1.4924745178e+02, /* 0xc3153f59 */
+    4.8758872986e+01,  /* 0x42430916 */
+    7.0968920898e+02,  /* 0x44316c1c */
+    3.7041481934e+03,  /* 0x4567825f */
+    6.4604252930e+03,  /* 0x45c9e367 */
+    2.5163337402e+03,  /* 0x451d4557 */
+    -1.4924745178e+02, /* 0xc3153f59 */
 };
 
-static const float qR2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
-  1.5044444979e-07, /* 0x342189db */
-  7.3223426938e-02, /* 0x3d95f62a */
-  1.9981917143e+00, /* 0x3fffc4bf */
-  1.4495602608e+01, /* 0x4167edfd */
-  3.1666231155e+01, /* 0x41fd5471 */
-  1.6252708435e+01, /* 0x4182058c */
+static const float qR2[6] = {
+    /* for x in [2.8570,2]=1/[0.3499,0.5] */
+    1.5044444979e-07, /* 0x342189db */
+    7.3223426938e-02, /* 0x3d95f62a */
+    1.9981917143e+00, /* 0x3fffc4bf */
+    1.4495602608e+01, /* 0x4167edfd */
+    3.1666231155e+01, /* 0x41fd5471 */
+    1.6252708435e+01, /* 0x4182058c */
 };
 static const float qS2[6] = {
-  3.0365585327e+01, /* 0x41f2ecb8 */
-  2.6934811401e+02, /* 0x4386ac8f */
-  8.4478375244e+02, /* 0x44533229 */
-  8.8293585205e+02, /* 0x445cbbe5 */
-  2.1266638184e+02, /* 0x4354aa98 */
- -5.3109550476e+00, /* 0xc0a9f358 */
+    3.0365585327e+01,  /* 0x41f2ecb8 */
+    2.6934811401e+02,  /* 0x4386ac8f */
+    8.4478375244e+02,  /* 0x44533229 */
+    8.8293585205e+02,  /* 0x445cbbe5 */
+    2.1266638184e+02,  /* 0x4354aa98 */
+    -5.3109550476e+00, /* 0xc0a9f358 */
 };
 
-static float qzerof(float x)
-{
-	const float *p,*q;
-	float_t s,r,z;
-	uint32_t ix;
+static float qzerof(float x) {
+  const float *p, *q;
+  float_t s, r, z;
+  uint32_t ix;
 
-	GET_FLOAT_WORD(ix, x);
-	ix &= 0x7fffffff;
-	if      (ix >= 0x41000000){p = qR8; q = qS8;}
-	else if (ix >= 0x40f71c58){p = qR5; q = qS5;}
-	else if (ix >= 0x4036db68){p = qR3; q = qS3;}
-	else /*ix >= 0x40000000*/ {p = qR2; q = qS2;}
-	z = 1.0f/(x*x);
-	r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
-	s = 1.0f+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));
-	return (-.125f + r/s)/x;
+  GET_FLOAT_WORD(ix, x);
+  ix &= 0x7fffffff;
+  if (ix >= 0x41000000) {
+    p = qR8;
+    q = qS8;
+  } else if (ix >= 0x40f71c58) {
+    p = qR5;
+    q = qS5;
+  } else if (ix >= 0x4036db68) {
+    p = qR3;
+    q = qS3;
+  } else /*ix >= 0x40000000*/ {
+    p = qR2;
+    q = qS2;
+  }
+  z = 1.0f / (x * x);
+  r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
+  s = 1.0f +
+      z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5])))));
+  return (-.125f + r / s) / x;
 }
diff --git a/fusl/src/math/j1.c b/fusl/src/math/j1.c
index df724d1..d0715a2 100644
--- a/fusl/src/math/j1.c
+++ b/fusl/src/math/j1.c
@@ -58,119 +58,116 @@
 
 static double pone(double), qone(double);
 
-static const double
-invsqrtpi = 5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
-tpi       = 6.36619772367581382433e-01; /* 0x3FE45F30, 0x6DC9C883 */
+static const double invsqrtpi =
+                        5.64189583547756279280e-01, /* 0x3FE20DD7, 0x50429B6D */
+    tpi = 6.36619772367581382433e-01;               /* 0x3FE45F30, 0x6DC9C883 */
 
-static double common(uint32_t ix, double x, int y1, int sign)
-{
-	double z,s,c,ss,cc;
+static double common(uint32_t ix, double x, int y1, int sign) {
+  double z, s, c, ss, cc;
 
-	/*
-	 * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x-3pi/4)-q1(x)*sin(x-3pi/4))
-	 * y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x-3pi/4)+q1(x)*cos(x-3pi/4))
-	 *
-	 * sin(x-3pi/4) = -(sin(x) + cos(x))/sqrt(2)
-	 * cos(x-3pi/4) = (sin(x) - cos(x))/sqrt(2)
-	 * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
-	 */
-	s = sin(x);
-	if (y1)
-		s = -s;
-	c = cos(x);
-	cc = s-c;
-	if (ix < 0x7fe00000) {
-		/* avoid overflow in 2*x */
-		ss = -s-c;
-		z = cos(2*x);
-		if (s*c > 0)
-			cc = z/ss;
-		else
-			ss = z/cc;
-		if (ix < 0x48000000) {
-			if (y1)
-				ss = -ss;
-			cc = pone(x)*cc-qone(x)*ss;
-		}
-	}
-	if (sign)
-		cc = -cc;
-	return invsqrtpi*cc/sqrt(x);
+  /*
+   * j1(x) = sqrt(2/(pi*x))*(p1(x)*cos(x-3pi/4)-q1(x)*sin(x-3pi/4))
+   * y1(x) = sqrt(2/(pi*x))*(p1(x)*sin(x-3pi/4)+q1(x)*cos(x-3pi/4))
+   *
+   * sin(x-3pi/4) = -(sin(x) + cos(x))/sqrt(2)
+   * cos(x-3pi/4) = (sin(x) - cos(x))/sqrt(2)
+   * sin(x) +- cos(x) = -cos(2x)/(sin(x) -+ cos(x))
+   */
+  s = sin(x);
+  if (y1)
+    s = -s;
+  c = cos(x);
+  cc = s - c;
+  if (ix < 0x7fe00000) {
+    /* avoid overflow in 2*x */
+    ss = -s - c;
+    z = cos(2 * x);
+    if (s * c > 0)
+      cc = z / ss;
+    else
+      ss = z / cc;
+    if (ix < 0x48000000) {
+      if (y1)
+        ss = -ss;
+      cc = pone(x) * cc - qone(x) * ss;
+    }
+  }
+  if (sign)
+    cc = -cc;
+  return invsqrtpi * cc / sqrt(x);
 }
 
 /* R0/S0 on [0,2] */
 static const double
-r00 = -6.25000000000000000000e-02, /* 0xBFB00000, 0x00000000 */
-r01 =  1.40705666955189706048e-03, /* 0x3F570D9F, 0x98472C61 */
-r02 = -1.59955631084035597520e-05, /* 0xBEF0C5C6, 0xBA169668 */
-r03 =  4.96727999609584448412e-08, /* 0x3E6AAAFA, 0x46CA0BD9 */
-s01 =  1.91537599538363460805e-02, /* 0x3F939D0B, 0x12637E53 */
-s02 =  1.85946785588630915560e-04, /* 0x3F285F56, 0xB9CDF664 */
-s03 =  1.17718464042623683263e-06, /* 0x3EB3BFF8, 0x333F8498 */
-s04 =  5.04636257076217042715e-09, /* 0x3E35AC88, 0xC97DFF2C */
-s05 =  1.23542274426137913908e-11; /* 0x3DAB2ACF, 0xCFB97ED8 */
+    r00 = -6.25000000000000000000e-02, /* 0xBFB00000, 0x00000000 */
+    r01 = 1.40705666955189706048e-03,  /* 0x3F570D9F, 0x98472C61 */
+    r02 = -1.59955631084035597520e-05, /* 0xBEF0C5C6, 0xBA169668 */
+    r03 = 4.96727999609584448412e-08,  /* 0x3E6AAAFA, 0x46CA0BD9 */
+    s01 = 1.91537599538363460805e-02,  /* 0x3F939D0B, 0x12637E53 */
+    s02 = 1.85946785588630915560e-04,  /* 0x3F285F56, 0xB9CDF664 */
+    s03 = 1.17718464042623683263e-06,  /* 0x3EB3BFF8, 0x333F8498 */
+    s04 = 5.04636257076217042715e-09,  /* 0x3E35AC88, 0xC97DFF2C */
+    s05 = 1.23542274426137913908e-11;  /* 0x3DAB2ACF, 0xCFB97ED8 */
 
-double j1(double x)
-{
-	double z,r,s;
-	uint32_t ix;
-	int sign;
+double j1(double x) {
+  double z, r, s;
+  uint32_t ix;
+  int sign;
 
-	GET_HIGH_WORD(ix, x);
-	sign = ix>>31;
-	ix &= 0x7fffffff;
-	if (ix >= 0x7ff00000)
-		return 1/(x*x);
-	if (ix >= 0x40000000)  /* |x| >= 2 */
-		return common(ix, fabs(x), 0, sign);
-	if (ix >= 0x38000000) {  /* |x| >= 2**-127 */
-		z = x*x;
-		r = z*(r00+z*(r01+z*(r02+z*r03)));
-		s = 1+z*(s01+z*(s02+z*(s03+z*(s04+z*s05))));
-		z = r/s;
-	} else
-		/* avoid underflow, raise inexact if x!=0 */
-		z = x;
-	return (0.5 + z)*x;
+  GET_HIGH_WORD(ix, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
+  if (ix >= 0x7ff00000)
+    return 1 / (x * x);
+  if (ix >= 0x40000000) /* |x| >= 2 */
+    return common(ix, fabs(x), 0, sign);
+  if (ix >= 0x38000000) { /* |x| >= 2**-127 */
+    z = x * x;
+    r = z * (r00 + z * (r01 + z * (r02 + z * r03)));
+    s = 1 + z * (s01 + z * (s02 + z * (s03 + z * (s04 + z * s05))));
+    z = r / s;
+  } else
+    /* avoid underflow, raise inexact if x!=0 */
+    z = x;
+  return (0.5 + z) * x;
 }
 
 static const double U0[5] = {
- -1.96057090646238940668e-01, /* 0xBFC91866, 0x143CBC8A */
-  5.04438716639811282616e-02, /* 0x3FA9D3C7, 0x76292CD1 */
- -1.91256895875763547298e-03, /* 0xBF5F55E5, 0x4844F50F */
-  2.35252600561610495928e-05, /* 0x3EF8AB03, 0x8FA6B88E */
- -9.19099158039878874504e-08, /* 0xBE78AC00, 0x569105B8 */
+    -1.96057090646238940668e-01, /* 0xBFC91866, 0x143CBC8A */
+    5.04438716639811282616e-02,  /* 0x3FA9D3C7, 0x76292CD1 */
+    -1.91256895875763547298e-03, /* 0xBF5F55E5, 0x4844F50F */
+    2.35252600561610495928e-05,  /* 0x3EF8AB03, 0x8FA6B88E */
+    -9.19099158039878874504e-08, /* 0xBE78AC00, 0x569105B8 */
 };
 static const double V0[5] = {
-  1.99167318236649903973e-02, /* 0x3F94650D, 0x3F4DA9F0 */
-  2.02552581025135171496e-04, /* 0x3F2A8C89, 0x6C257764 */
-  1.35608801097516229404e-06, /* 0x3EB6C05A, 0x894E8CA6 */
-  6.22741452364621501295e-09, /* 0x3E3ABF1D, 0x5BA69A86 */
-  1.66559246207992079114e-11, /* 0x3DB25039, 0xDACA772A */
+    1.99167318236649903973e-02, /* 0x3F94650D, 0x3F4DA9F0 */
+    2.02552581025135171496e-04, /* 0x3F2A8C89, 0x6C257764 */
+    1.35608801097516229404e-06, /* 0x3EB6C05A, 0x894E8CA6 */
+    6.22741452364621501295e-09, /* 0x3E3ABF1D, 0x5BA69A86 */
+    1.66559246207992079114e-11, /* 0x3DB25039, 0xDACA772A */
 };
 
-double y1(double x)
-{
-	double z,u,v;
-	uint32_t ix,lx;
+double y1(double x) {
+  double z, u, v;
+  uint32_t ix, lx;
 
-	EXTRACT_WORDS(ix, lx, x);
-	/* y1(nan)=nan, y1(<0)=nan, y1(0)=-inf, y1(inf)=0 */
-	if ((ix<<1 | lx) == 0)
-		return -1/0.0;
-	if (ix>>31)
-		return 0/0.0;
-	if (ix >= 0x7ff00000)
-		return 1/x;
+  EXTRACT_WORDS(ix, lx, x);
+  /* y1(nan)=nan, y1(<0)=nan, y1(0)=-inf, y1(inf)=0 */
+  if ((ix << 1 | lx) == 0)
+    return -1 / 0.0;
+  if (ix >> 31)
+    return 0 / 0.0;
+  if (ix >= 0x7ff00000)
+    return 1 / x;
 
-	if (ix >= 0x40000000)  /* x >= 2 */
-		return common(ix, x, 1, 0);
-	if (ix < 0x3c900000)  /* x < 2**-54 */
-		return -tpi/x;
-	z = x*x;
-	u = U0[0]+z*(U0[1]+z*(U0[2]+z*(U0[3]+z*U0[4])));
-	v = 1+z*(V0[0]+z*(V0[1]+z*(V0[2]+z*(V0[3]+z*V0[4]))));
-	return x*(u/v) + tpi*(j1(x)*log(x)-1/x);
+  if (ix >= 0x40000000) /* x >= 2 */
+    return common(ix, x, 1, 0);
+  if (ix < 0x3c900000) /* x < 2**-54 */
+    return -tpi / x;
+  z = x * x;
+  u = U0[0] + z * (U0[1] + z * (U0[2] + z * (U0[3] + z * U0[4])));
+  v = 1 + z * (V0[0] + z * (V0[1] + z * (V0[2] + z * (V0[3] + z * V0[4]))));
+  return x * (u / v) + tpi * (j1(x) * log(x) - 1 / x);
 }
 
 /* For x >= 8, the asymptotic expansions of pone is
@@ -183,86 +180,97 @@
  *      | pone(x)-1-R/S | <= 2  ** ( -60.06)
  */
 
-static const double pr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
-  0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
-  1.17187499999988647970e-01, /* 0x3FBDFFFF, 0xFFFFFCCE */
-  1.32394806593073575129e+01, /* 0x402A7A9D, 0x357F7FCE */
-  4.12051854307378562225e+02, /* 0x4079C0D4, 0x652EA590 */
-  3.87474538913960532227e+03, /* 0x40AE457D, 0xA3A532CC */
-  7.91447954031891731574e+03, /* 0x40BEEA7A, 0xC32782DD */
+static const double pr8[6] = {
+    /* for x in [inf, 8]=1/[0,0.125] */
+    0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
+    1.17187499999988647970e-01, /* 0x3FBDFFFF, 0xFFFFFCCE */
+    1.32394806593073575129e+01, /* 0x402A7A9D, 0x357F7FCE */
+    4.12051854307378562225e+02, /* 0x4079C0D4, 0x652EA590 */
+    3.87474538913960532227e+03, /* 0x40AE457D, 0xA3A532CC */
+    7.91447954031891731574e+03, /* 0x40BEEA7A, 0xC32782DD */
 };
 static const double ps8[5] = {
-  1.14207370375678408436e+02, /* 0x405C8D45, 0x8E656CAC */
-  3.65093083420853463394e+03, /* 0x40AC85DC, 0x964D274F */
-  3.69562060269033463555e+04, /* 0x40E20B86, 0x97C5BB7F */
-  9.76027935934950801311e+04, /* 0x40F7D42C, 0xB28F17BB */
-  3.08042720627888811578e+04, /* 0x40DE1511, 0x697A0B2D */
+    1.14207370375678408436e+02, /* 0x405C8D45, 0x8E656CAC */
+    3.65093083420853463394e+03, /* 0x40AC85DC, 0x964D274F */
+    3.69562060269033463555e+04, /* 0x40E20B86, 0x97C5BB7F */
+    9.76027935934950801311e+04, /* 0x40F7D42C, 0xB28F17BB */
+    3.08042720627888811578e+04, /* 0x40DE1511, 0x697A0B2D */
 };
 
-static const double pr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
-  1.31990519556243522749e-11, /* 0x3DAD0667, 0xDAE1CA7D */
-  1.17187493190614097638e-01, /* 0x3FBDFFFF, 0xE2C10043 */
-  6.80275127868432871736e+00, /* 0x401B3604, 0x6E6315E3 */
-  1.08308182990189109773e+02, /* 0x405B13B9, 0x452602ED */
-  5.17636139533199752805e+02, /* 0x40802D16, 0xD052D649 */
-  5.28715201363337541807e+02, /* 0x408085B8, 0xBB7E0CB7 */
+static const double pr5[6] = {
+    /* for x in [8,4.5454]=1/[0.125,0.22001] */
+    1.31990519556243522749e-11, /* 0x3DAD0667, 0xDAE1CA7D */
+    1.17187493190614097638e-01, /* 0x3FBDFFFF, 0xE2C10043 */
+    6.80275127868432871736e+00, /* 0x401B3604, 0x6E6315E3 */
+    1.08308182990189109773e+02, /* 0x405B13B9, 0x452602ED */
+    5.17636139533199752805e+02, /* 0x40802D16, 0xD052D649 */
+    5.28715201363337541807e+02, /* 0x408085B8, 0xBB7E0CB7 */
 };
 static const double ps5[5] = {
-  5.92805987221131331921e+01, /* 0x404DA3EA, 0xA8AF633D */
-  9.91401418733614377743e+02, /* 0x408EFB36, 0x1B066701 */
-  5.35326695291487976647e+03, /* 0x40B4E944, 0x5706B6FB */
-  7.84469031749551231769e+03, /* 0x40BEA4B0, 0xB8A5BB15 */
-  1.50404688810361062679e+03, /* 0x40978030, 0x036F5E51 */
+    5.92805987221131331921e+01, /* 0x404DA3EA, 0xA8AF633D */
+    9.91401418733614377743e+02, /* 0x408EFB36, 0x1B066701 */
+    5.35326695291487976647e+03, /* 0x40B4E944, 0x5706B6FB */
+    7.84469031749551231769e+03, /* 0x40BEA4B0, 0xB8A5BB15 */
+    1.50404688810361062679e+03, /* 0x40978030, 0x036F5E51 */
 };
 
 static const double pr3[6] = {
-  3.02503916137373618024e-09, /* 0x3E29FC21, 0xA7AD9EDD */
-  1.17186865567253592491e-01, /* 0x3FBDFFF5, 0x5B21D17B */
-  3.93297750033315640650e+00, /* 0x400F76BC, 0xE85EAD8A */
-  3.51194035591636932736e+01, /* 0x40418F48, 0x9DA6D129 */
-  9.10550110750781271918e+01, /* 0x4056C385, 0x4D2C1837 */
-  4.85590685197364919645e+01, /* 0x4048478F, 0x8EA83EE5 */
+    3.02503916137373618024e-09, /* 0x3E29FC21, 0xA7AD9EDD */
+    1.17186865567253592491e-01, /* 0x3FBDFFF5, 0x5B21D17B */
+    3.93297750033315640650e+00, /* 0x400F76BC, 0xE85EAD8A */
+    3.51194035591636932736e+01, /* 0x40418F48, 0x9DA6D129 */
+    9.10550110750781271918e+01, /* 0x4056C385, 0x4D2C1837 */
+    4.85590685197364919645e+01, /* 0x4048478F, 0x8EA83EE5 */
 };
 static const double ps3[5] = {
-  3.47913095001251519989e+01, /* 0x40416549, 0xA134069C */
-  3.36762458747825746741e+02, /* 0x40750C33, 0x07F1A75F */
-  1.04687139975775130551e+03, /* 0x40905B7C, 0x5037D523 */
-  8.90811346398256432622e+02, /* 0x408BD67D, 0xA32E31E9 */
-  1.03787932439639277504e+02, /* 0x4059F26D, 0x7C2EED53 */
+    3.47913095001251519989e+01, /* 0x40416549, 0xA134069C */
+    3.36762458747825746741e+02, /* 0x40750C33, 0x07F1A75F */
+    1.04687139975775130551e+03, /* 0x40905B7C, 0x5037D523 */
+    8.90811346398256432622e+02, /* 0x408BD67D, 0xA32E31E9 */
+    1.03787932439639277504e+02, /* 0x4059F26D, 0x7C2EED53 */
 };
 
-static const double pr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
-  1.07710830106873743082e-07, /* 0x3E7CE9D4, 0xF65544F4 */
-  1.17176219462683348094e-01, /* 0x3FBDFF42, 0xBE760D83 */
-  2.36851496667608785174e+00, /* 0x4002F2B7, 0xF98FAEC0 */
-  1.22426109148261232917e+01, /* 0x40287C37, 0x7F71A964 */
-  1.76939711271687727390e+01, /* 0x4031B1A8, 0x177F8EE2 */
-  5.07352312588818499250e+00, /* 0x40144B49, 0xA574C1FE */
+static const double pr2[6] = {
+    /* for x in [2.8570,2]=1/[0.3499,0.5] */
+    1.07710830106873743082e-07, /* 0x3E7CE9D4, 0xF65544F4 */
+    1.17176219462683348094e-01, /* 0x3FBDFF42, 0xBE760D83 */
+    2.36851496667608785174e+00, /* 0x4002F2B7, 0xF98FAEC0 */
+    1.22426109148261232917e+01, /* 0x40287C37, 0x7F71A964 */
+    1.76939711271687727390e+01, /* 0x4031B1A8, 0x177F8EE2 */
+    5.07352312588818499250e+00, /* 0x40144B49, 0xA574C1FE */
 };
 static const double ps2[5] = {
-  2.14364859363821409488e+01, /* 0x40356FBD, 0x8AD5ECDC */
-  1.25290227168402751090e+02, /* 0x405F5293, 0x14F92CD5 */
-  2.32276469057162813669e+02, /* 0x406D08D8, 0xD5A2DBD9 */
-  1.17679373287147100768e+02, /* 0x405D6B7A, 0xDA1884A9 */
-  8.36463893371618283368e+00, /* 0x4020BAB1, 0xF44E5192 */
+    2.14364859363821409488e+01, /* 0x40356FBD, 0x8AD5ECDC */
+    1.25290227168402751090e+02, /* 0x405F5293, 0x14F92CD5 */
+    2.32276469057162813669e+02, /* 0x406D08D8, 0xD5A2DBD9 */
+    1.17679373287147100768e+02, /* 0x405D6B7A, 0xDA1884A9 */
+    8.36463893371618283368e+00, /* 0x4020BAB1, 0xF44E5192 */
 };
 
-static double pone(double x)
-{
-	const double *p,*q;
-	double_t z,r,s;
-	uint32_t ix;
+static double pone(double x) {
+  const double *p, *q;
+  double_t z, r, s;
+  uint32_t ix;
 
-	GET_HIGH_WORD(ix, x);
-	ix &= 0x7fffffff;
-	if      (ix >= 0x40200000){p = pr8; q = ps8;}
-	else if (ix >= 0x40122E8B){p = pr5; q = ps5;}
-	else if (ix >= 0x4006DB6D){p = pr3; q = ps3;}
-	else /*ix >= 0x40000000*/ {p = pr2; q = ps2;}
-	z = 1.0/(x*x);
-	r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
-	s = 1.0+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4]))));
-	return 1.0+ r/s;
+  GET_HIGH_WORD(ix, x);
+  ix &= 0x7fffffff;
+  if (ix >= 0x40200000) {
+    p = pr8;
+    q = ps8;
+  } else if (ix >= 0x40122E8B) {
+    p = pr5;
+    q = ps5;
+  } else if (ix >= 0x4006DB6D) {
+    p = pr3;
+    q = ps3;
+  } else /*ix >= 0x40000000*/ {
+    p = pr2;
+    q = ps2;
+  }
+  z = 1.0 / (x * x);
+  r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
+  s = 1.0 + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * q[4]))));
+  return 1.0 + r / s;
 }
 
 /* For x >= 8, the asymptotic expansions of qone is
@@ -275,88 +283,100 @@
  *      | qone(x)/s -0.375-R/S | <= 2  ** ( -61.13)
  */
 
-static const double qr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
-  0.00000000000000000000e+00, /* 0x00000000, 0x00000000 */
- -1.02539062499992714161e-01, /* 0xBFBA3FFF, 0xFFFFFDF3 */
- -1.62717534544589987888e+01, /* 0xC0304591, 0xA26779F7 */
- -7.59601722513950107896e+02, /* 0xC087BCD0, 0x53E4B576 */
- -1.18498066702429587167e+04, /* 0xC0C724E7, 0x40F87415 */
- -4.84385124285750353010e+04, /* 0xC0E7A6D0, 0x65D09C6A */
+static const double qr8[6] = {
+    /* for x in [inf, 8]=1/[0,0.125] */
+    0.00000000000000000000e+00,  /* 0x00000000, 0x00000000 */
+    -1.02539062499992714161e-01, /* 0xBFBA3FFF, 0xFFFFFDF3 */
+    -1.62717534544589987888e+01, /* 0xC0304591, 0xA26779F7 */
+    -7.59601722513950107896e+02, /* 0xC087BCD0, 0x53E4B576 */
+    -1.18498066702429587167e+04, /* 0xC0C724E7, 0x40F87415 */
+    -4.84385124285750353010e+04, /* 0xC0E7A6D0, 0x65D09C6A */
 };
 static const double qs8[6] = {
-  1.61395369700722909556e+02, /* 0x40642CA6, 0xDE5BCDE5 */
-  7.82538599923348465381e+03, /* 0x40BE9162, 0xD0D88419 */
-  1.33875336287249578163e+05, /* 0x4100579A, 0xB0B75E98 */
-  7.19657723683240939863e+05, /* 0x4125F653, 0x72869C19 */
-  6.66601232617776375264e+05, /* 0x412457D2, 0x7719AD5C */
- -2.94490264303834643215e+05, /* 0xC111F969, 0x0EA5AA18 */
+    1.61395369700722909556e+02,  /* 0x40642CA6, 0xDE5BCDE5 */
+    7.82538599923348465381e+03,  /* 0x40BE9162, 0xD0D88419 */
+    1.33875336287249578163e+05,  /* 0x4100579A, 0xB0B75E98 */
+    7.19657723683240939863e+05,  /* 0x4125F653, 0x72869C19 */
+    6.66601232617776375264e+05,  /* 0x412457D2, 0x7719AD5C */
+    -2.94490264303834643215e+05, /* 0xC111F969, 0x0EA5AA18 */
 };
 
-static const double qr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
- -2.08979931141764104297e-11, /* 0xBDB6FA43, 0x1AA1A098 */
- -1.02539050241375426231e-01, /* 0xBFBA3FFF, 0xCB597FEF */
- -8.05644828123936029840e+00, /* 0xC0201CE6, 0xCA03AD4B */
- -1.83669607474888380239e+02, /* 0xC066F56D, 0x6CA7B9B0 */
- -1.37319376065508163265e+03, /* 0xC09574C6, 0x6931734F */
- -2.61244440453215656817e+03, /* 0xC0A468E3, 0x88FDA79D */
+static const double qr5[6] = {
+    /* for x in [8,4.5454]=1/[0.125,0.22001] */
+    -2.08979931141764104297e-11, /* 0xBDB6FA43, 0x1AA1A098 */
+    -1.02539050241375426231e-01, /* 0xBFBA3FFF, 0xCB597FEF */
+    -8.05644828123936029840e+00, /* 0xC0201CE6, 0xCA03AD4B */
+    -1.83669607474888380239e+02, /* 0xC066F56D, 0x6CA7B9B0 */
+    -1.37319376065508163265e+03, /* 0xC09574C6, 0x6931734F */
+    -2.61244440453215656817e+03, /* 0xC0A468E3, 0x88FDA79D */
 };
 static const double qs5[6] = {
-  8.12765501384335777857e+01, /* 0x405451B2, 0xFF5A11B2 */
-  1.99179873460485964642e+03, /* 0x409F1F31, 0xE77BF839 */
-  1.74684851924908907677e+04, /* 0x40D10F1F, 0x0D64CE29 */
-  4.98514270910352279316e+04, /* 0x40E8576D, 0xAABAD197 */
-  2.79480751638918118260e+04, /* 0x40DB4B04, 0xCF7C364B */
- -4.71918354795128470869e+03, /* 0xC0B26F2E, 0xFCFFA004 */
+    8.12765501384335777857e+01,  /* 0x405451B2, 0xFF5A11B2 */
+    1.99179873460485964642e+03,  /* 0x409F1F31, 0xE77BF839 */
+    1.74684851924908907677e+04,  /* 0x40D10F1F, 0x0D64CE29 */
+    4.98514270910352279316e+04,  /* 0x40E8576D, 0xAABAD197 */
+    2.79480751638918118260e+04,  /* 0x40DB4B04, 0xCF7C364B */
+    -4.71918354795128470869e+03, /* 0xC0B26F2E, 0xFCFFA004 */
 };
 
 static const double qr3[6] = {
- -5.07831226461766561369e-09, /* 0xBE35CFA9, 0xD38FC84F */
- -1.02537829820837089745e-01, /* 0xBFBA3FEB, 0x51AEED54 */
- -4.61011581139473403113e+00, /* 0xC01270C2, 0x3302D9FF */
- -5.78472216562783643212e+01, /* 0xC04CEC71, 0xC25D16DA */
- -2.28244540737631695038e+02, /* 0xC06C87D3, 0x4718D55F */
- -2.19210128478909325622e+02, /* 0xC06B66B9, 0x5F5C1BF6 */
+    -5.07831226461766561369e-09, /* 0xBE35CFA9, 0xD38FC84F */
+    -1.02537829820837089745e-01, /* 0xBFBA3FEB, 0x51AEED54 */
+    -4.61011581139473403113e+00, /* 0xC01270C2, 0x3302D9FF */
+    -5.78472216562783643212e+01, /* 0xC04CEC71, 0xC25D16DA */
+    -2.28244540737631695038e+02, /* 0xC06C87D3, 0x4718D55F */
+    -2.19210128478909325622e+02, /* 0xC06B66B9, 0x5F5C1BF6 */
 };
 static const double qs3[6] = {
-  4.76651550323729509273e+01, /* 0x4047D523, 0xCCD367E4 */
-  6.73865112676699709482e+02, /* 0x40850EEB, 0xC031EE3E */
-  3.38015286679526343505e+03, /* 0x40AA684E, 0x448E7C9A */
-  5.54772909720722782367e+03, /* 0x40B5ABBA, 0xA61D54A6 */
-  1.90311919338810798763e+03, /* 0x409DBC7A, 0x0DD4DF4B */
- -1.35201191444307340817e+02, /* 0xC060E670, 0x290A311F */
+    4.76651550323729509273e+01,  /* 0x4047D523, 0xCCD367E4 */
+    6.73865112676699709482e+02,  /* 0x40850EEB, 0xC031EE3E */
+    3.38015286679526343505e+03,  /* 0x40AA684E, 0x448E7C9A */
+    5.54772909720722782367e+03,  /* 0x40B5ABBA, 0xA61D54A6 */
+    1.90311919338810798763e+03,  /* 0x409DBC7A, 0x0DD4DF4B */
+    -1.35201191444307340817e+02, /* 0xC060E670, 0x290A311F */
 };
 
-static const double qr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
- -1.78381727510958865572e-07, /* 0xBE87F126, 0x44C626D2 */
- -1.02517042607985553460e-01, /* 0xBFBA3E8E, 0x9148B010 */
- -2.75220568278187460720e+00, /* 0xC0060484, 0x69BB4EDA */
- -1.96636162643703720221e+01, /* 0xC033A9E2, 0xC168907F */
- -4.23253133372830490089e+01, /* 0xC04529A3, 0xDE104AAA */
- -2.13719211703704061733e+01, /* 0xC0355F36, 0x39CF6E52 */
+static const double qr2[6] = {
+    /* for x in [2.8570,2]=1/[0.3499,0.5] */
+    -1.78381727510958865572e-07, /* 0xBE87F126, 0x44C626D2 */
+    -1.02517042607985553460e-01, /* 0xBFBA3E8E, 0x9148B010 */
+    -2.75220568278187460720e+00, /* 0xC0060484, 0x69BB4EDA */
+    -1.96636162643703720221e+01, /* 0xC033A9E2, 0xC168907F */
+    -4.23253133372830490089e+01, /* 0xC04529A3, 0xDE104AAA */
+    -2.13719211703704061733e+01, /* 0xC0355F36, 0x39CF6E52 */
 };
 static const double qs2[6] = {
-  2.95333629060523854548e+01, /* 0x403D888A, 0x78AE64FF */
-  2.52981549982190529136e+02, /* 0x406F9F68, 0xDB821CBA */
-  7.57502834868645436472e+02, /* 0x4087AC05, 0xCE49A0F7 */
-  7.39393205320467245656e+02, /* 0x40871B25, 0x48D4C029 */
-  1.55949003336666123687e+02, /* 0x40637E5E, 0x3C3ED8D4 */
- -4.95949898822628210127e+00, /* 0xC013D686, 0xE71BE86B */
+    2.95333629060523854548e+01,  /* 0x403D888A, 0x78AE64FF */
+    2.52981549982190529136e+02,  /* 0x406F9F68, 0xDB821CBA */
+    7.57502834868645436472e+02,  /* 0x4087AC05, 0xCE49A0F7 */
+    7.39393205320467245656e+02,  /* 0x40871B25, 0x48D4C029 */
+    1.55949003336666123687e+02,  /* 0x40637E5E, 0x3C3ED8D4 */
+    -4.95949898822628210127e+00, /* 0xC013D686, 0xE71BE86B */
 };
 
-static double qone(double x)
-{
-	const double *p,*q;
-	double_t s,r,z;
-	uint32_t ix;
+static double qone(double x) {
+  const double *p, *q;
+  double_t s, r, z;
+  uint32_t ix;
 
-	GET_HIGH_WORD(ix, x);
-	ix &= 0x7fffffff;
-	if      (ix >= 0x40200000){p = qr8; q = qs8;}
-	else if (ix >= 0x40122E8B){p = qr5; q = qs5;}
-	else if (ix >= 0x4006DB6D){p = qr3; q = qs3;}
-	else /*ix >= 0x40000000*/ {p = qr2; q = qs2;}
-	z = 1.0/(x*x);
-	r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
-	s = 1.0+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));
-	return (.375 + r/s)/x;
+  GET_HIGH_WORD(ix, x);
+  ix &= 0x7fffffff;
+  if (ix >= 0x40200000) {
+    p = qr8;
+    q = qs8;
+  } else if (ix >= 0x40122E8B) {
+    p = qr5;
+    q = qs5;
+  } else if (ix >= 0x4006DB6D) {
+    p = qr3;
+    q = qs3;
+  } else /*ix >= 0x40000000*/ {
+    p = qr2;
+    q = qs2;
+  }
+  z = 1.0 / (x * x);
+  r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
+  s = 1.0 +
+      z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5])))));
+  return (.375 + r / s) / x;
 }
diff --git a/fusl/src/math/j1f.c b/fusl/src/math/j1f.c
index 58875af..2001017 100644
--- a/fusl/src/math/j1f.c
+++ b/fusl/src/math/j1f.c
@@ -18,108 +18,103 @@
 
 static float ponef(float), qonef(float);
 
-static const float
-invsqrtpi = 5.6418961287e-01, /* 0x3f106ebb */
-tpi       = 6.3661974669e-01; /* 0x3f22f983 */
+static const float invsqrtpi = 5.6418961287e-01, /* 0x3f106ebb */
+    tpi = 6.3661974669e-01;                      /* 0x3f22f983 */
 
-static float common(uint32_t ix, float x, int y1, int sign)
-{
-	double z,s,c,ss,cc;
+static float common(uint32_t ix, float x, int y1, int sign) {
+  double z, s, c, ss, cc;
 
-	s = sinf(x);
-	if (y1)
-		s = -s;
-	c = cosf(x);
-	cc = s-c;
-	if (ix < 0x7f000000) {
-		ss = -s-c;
-		z = cosf(2*x);
-		if (s*c > 0)
-			cc = z/ss;
-		else
-			ss = z/cc;
-		if (ix < 0x58800000) {
-			if (y1)
-				ss = -ss;
-			cc = ponef(x)*cc-qonef(x)*ss;
-		}
-	}
-	if (sign)
-		cc = -cc;
-	return invsqrtpi*cc/sqrtf(x);
+  s = sinf(x);
+  if (y1)
+    s = -s;
+  c = cosf(x);
+  cc = s - c;
+  if (ix < 0x7f000000) {
+    ss = -s - c;
+    z = cosf(2 * x);
+    if (s * c > 0)
+      cc = z / ss;
+    else
+      ss = z / cc;
+    if (ix < 0x58800000) {
+      if (y1)
+        ss = -ss;
+      cc = ponef(x) * cc - qonef(x) * ss;
+    }
+  }
+  if (sign)
+    cc = -cc;
+  return invsqrtpi * cc / sqrtf(x);
 }
 
 /* R0/S0 on [0,2] */
-static const float
-r00 = -6.2500000000e-02, /* 0xbd800000 */
-r01 =  1.4070566976e-03, /* 0x3ab86cfd */
-r02 = -1.5995563444e-05, /* 0xb7862e36 */
-r03 =  4.9672799207e-08, /* 0x335557d2 */
-s01 =  1.9153760746e-02, /* 0x3c9ce859 */
-s02 =  1.8594678841e-04, /* 0x3942fab6 */
-s03 =  1.1771846857e-06, /* 0x359dffc2 */
-s04 =  5.0463624390e-09, /* 0x31ad6446 */
-s05 =  1.2354227016e-11; /* 0x2d59567e */
+static const float r00 = -6.2500000000e-02, /* 0xbd800000 */
+    r01 = 1.4070566976e-03,                 /* 0x3ab86cfd */
+    r02 = -1.5995563444e-05,                /* 0xb7862e36 */
+    r03 = 4.9672799207e-08,                 /* 0x335557d2 */
+    s01 = 1.9153760746e-02,                 /* 0x3c9ce859 */
+    s02 = 1.8594678841e-04,                 /* 0x3942fab6 */
+    s03 = 1.1771846857e-06,                 /* 0x359dffc2 */
+    s04 = 5.0463624390e-09,                 /* 0x31ad6446 */
+    s05 = 1.2354227016e-11;                 /* 0x2d59567e */
 
-float j1f(float x)
-{
-	float z,r,s;
-	uint32_t ix;
-	int sign;
+float j1f(float x) {
+  float z, r, s;
+  uint32_t ix;
+  int sign;
 
-	GET_FLOAT_WORD(ix, x);
-	sign = ix>>31;
-	ix &= 0x7fffffff;
-	if (ix >= 0x7f800000)
-		return 1/(x*x);
-	if (ix >= 0x40000000)  /* |x| >= 2 */
-		return common(ix, fabsf(x), 0, sign);
-	if (ix >= 0x32000000) {  /* |x| >= 2**-27 */
-		z = x*x;
-		r = z*(r00+z*(r01+z*(r02+z*r03)));
-		s = 1+z*(s01+z*(s02+z*(s03+z*(s04+z*s05))));
-		z = 0.5f + r/s;
-	} else
-		/* raise inexact if x!=0 */
-		z = 0.5f + x;
-	return z*x;
+  GET_FLOAT_WORD(ix, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
+  if (ix >= 0x7f800000)
+    return 1 / (x * x);
+  if (ix >= 0x40000000) /* |x| >= 2 */
+    return common(ix, fabsf(x), 0, sign);
+  if (ix >= 0x32000000) { /* |x| >= 2**-27 */
+    z = x * x;
+    r = z * (r00 + z * (r01 + z * (r02 + z * r03)));
+    s = 1 + z * (s01 + z * (s02 + z * (s03 + z * (s04 + z * s05))));
+    z = 0.5f + r / s;
+  } else
+    /* raise inexact if x!=0 */
+    z = 0.5f + x;
+  return z * x;
 }
 
 static const float U0[5] = {
- -1.9605709612e-01, /* 0xbe48c331 */
-  5.0443872809e-02, /* 0x3d4e9e3c */
- -1.9125689287e-03, /* 0xbafaaf2a */
-  2.3525259166e-05, /* 0x37c5581c */
- -9.1909917899e-08, /* 0xb3c56003 */
+    -1.9605709612e-01, /* 0xbe48c331 */
+    5.0443872809e-02,  /* 0x3d4e9e3c */
+    -1.9125689287e-03, /* 0xbafaaf2a */
+    2.3525259166e-05,  /* 0x37c5581c */
+    -9.1909917899e-08, /* 0xb3c56003 */
 };
 static const float V0[5] = {
-  1.9916731864e-02, /* 0x3ca3286a */
-  2.0255257550e-04, /* 0x3954644b */
-  1.3560879779e-06, /* 0x35b602d4 */
-  6.2274145840e-09, /* 0x31d5f8eb */
-  1.6655924903e-11, /* 0x2d9281cf */
+    1.9916731864e-02, /* 0x3ca3286a */
+    2.0255257550e-04, /* 0x3954644b */
+    1.3560879779e-06, /* 0x35b602d4 */
+    6.2274145840e-09, /* 0x31d5f8eb */
+    1.6655924903e-11, /* 0x2d9281cf */
 };
 
-float y1f(float x)
-{
-	float z,u,v;
-	uint32_t ix;
+float y1f(float x) {
+  float z, u, v;
+  uint32_t ix;
 
-	GET_FLOAT_WORD(ix, x);
-	if ((ix & 0x7fffffff) == 0)
-		return -1/0.0f;
-	if (ix>>31)
-		return 0/0.0f;
-	if (ix >= 0x7f800000)
-		return 1/x;
-	if (ix >= 0x40000000)  /* |x| >= 2.0 */
-		return common(ix,x,1,0);
-	if (ix < 0x32000000)  /* x < 2**-27 */
-		return -tpi/x;
-	z = x*x;
-	u = U0[0]+z*(U0[1]+z*(U0[2]+z*(U0[3]+z*U0[4])));
-	v = 1.0f+z*(V0[0]+z*(V0[1]+z*(V0[2]+z*(V0[3]+z*V0[4]))));
-	return x*(u/v) + tpi*(j1f(x)*logf(x)-1.0f/x);
+  GET_FLOAT_WORD(ix, x);
+  if ((ix & 0x7fffffff) == 0)
+    return -1 / 0.0f;
+  if (ix >> 31)
+    return 0 / 0.0f;
+  if (ix >= 0x7f800000)
+    return 1 / x;
+  if (ix >= 0x40000000) /* |x| >= 2.0 */
+    return common(ix, x, 1, 0);
+  if (ix < 0x32000000) /* x < 2**-27 */
+    return -tpi / x;
+  z = x * x;
+  u = U0[0] + z * (U0[1] + z * (U0[2] + z * (U0[3] + z * U0[4])));
+  v = 1.0f + z * (V0[0] + z * (V0[1] + z * (V0[2] + z * (V0[3] + z * V0[4]))));
+  return x * (u / v) + tpi * (j1f(x) * logf(x) - 1.0f / x);
 }
 
 /* For x >= 8, the asymptotic expansions of pone is
@@ -132,86 +127,97 @@
  *      | pone(x)-1-R/S | <= 2  ** ( -60.06)
  */
 
-static const float pr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
-  0.0000000000e+00, /* 0x00000000 */
-  1.1718750000e-01, /* 0x3df00000 */
-  1.3239480972e+01, /* 0x4153d4ea */
-  4.1205184937e+02, /* 0x43ce06a3 */
-  3.8747453613e+03, /* 0x45722bed */
-  7.9144794922e+03, /* 0x45f753d6 */
+static const float pr8[6] = {
+    /* for x in [inf, 8]=1/[0,0.125] */
+    0.0000000000e+00, /* 0x00000000 */
+    1.1718750000e-01, /* 0x3df00000 */
+    1.3239480972e+01, /* 0x4153d4ea */
+    4.1205184937e+02, /* 0x43ce06a3 */
+    3.8747453613e+03, /* 0x45722bed */
+    7.9144794922e+03, /* 0x45f753d6 */
 };
 static const float ps8[5] = {
-  1.1420736694e+02, /* 0x42e46a2c */
-  3.6509309082e+03, /* 0x45642ee5 */
-  3.6956207031e+04, /* 0x47105c35 */
-  9.7602796875e+04, /* 0x47bea166 */
-  3.0804271484e+04, /* 0x46f0a88b */
+    1.1420736694e+02, /* 0x42e46a2c */
+    3.6509309082e+03, /* 0x45642ee5 */
+    3.6956207031e+04, /* 0x47105c35 */
+    9.7602796875e+04, /* 0x47bea166 */
+    3.0804271484e+04, /* 0x46f0a88b */
 };
 
-static const float pr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
-  1.3199052094e-11, /* 0x2d68333f */
-  1.1718749255e-01, /* 0x3defffff */
-  6.8027510643e+00, /* 0x40d9b023 */
-  1.0830818176e+02, /* 0x42d89dca */
-  5.1763616943e+02, /* 0x440168b7 */
-  5.2871520996e+02, /* 0x44042dc6 */
+static const float pr5[6] = {
+    /* for x in [8,4.5454]=1/[0.125,0.22001] */
+    1.3199052094e-11, /* 0x2d68333f */
+    1.1718749255e-01, /* 0x3defffff */
+    6.8027510643e+00, /* 0x40d9b023 */
+    1.0830818176e+02, /* 0x42d89dca */
+    5.1763616943e+02, /* 0x440168b7 */
+    5.2871520996e+02, /* 0x44042dc6 */
 };
 static const float ps5[5] = {
-  5.9280597687e+01, /* 0x426d1f55 */
-  9.9140142822e+02, /* 0x4477d9b1 */
-  5.3532670898e+03, /* 0x45a74a23 */
-  7.8446904297e+03, /* 0x45f52586 */
-  1.5040468750e+03, /* 0x44bc0180 */
+    5.9280597687e+01, /* 0x426d1f55 */
+    9.9140142822e+02, /* 0x4477d9b1 */
+    5.3532670898e+03, /* 0x45a74a23 */
+    7.8446904297e+03, /* 0x45f52586 */
+    1.5040468750e+03, /* 0x44bc0180 */
 };
 
 static const float pr3[6] = {
-  3.0250391081e-09, /* 0x314fe10d */
-  1.1718686670e-01, /* 0x3defffab */
-  3.9329774380e+00, /* 0x407bb5e7 */
-  3.5119403839e+01, /* 0x420c7a45 */
-  9.1055007935e+01, /* 0x42b61c2a */
-  4.8559066772e+01, /* 0x42423c7c */
+    3.0250391081e-09, /* 0x314fe10d */
+    1.1718686670e-01, /* 0x3defffab */
+    3.9329774380e+00, /* 0x407bb5e7 */
+    3.5119403839e+01, /* 0x420c7a45 */
+    9.1055007935e+01, /* 0x42b61c2a */
+    4.8559066772e+01, /* 0x42423c7c */
 };
 static const float ps3[5] = {
-  3.4791309357e+01, /* 0x420b2a4d */
-  3.3676245117e+02, /* 0x43a86198 */
-  1.0468714600e+03, /* 0x4482dbe3 */
-  8.9081134033e+02, /* 0x445eb3ed */
-  1.0378793335e+02, /* 0x42cf936c */
+    3.4791309357e+01, /* 0x420b2a4d */
+    3.3676245117e+02, /* 0x43a86198 */
+    1.0468714600e+03, /* 0x4482dbe3 */
+    8.9081134033e+02, /* 0x445eb3ed */
+    1.0378793335e+02, /* 0x42cf936c */
 };
 
-static const float pr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
-  1.0771083225e-07, /* 0x33e74ea8 */
-  1.1717621982e-01, /* 0x3deffa16 */
-  2.3685150146e+00, /* 0x401795c0 */
-  1.2242610931e+01, /* 0x4143e1bc */
-  1.7693971634e+01, /* 0x418d8d41 */
-  5.0735230446e+00, /* 0x40a25a4d */
+static const float pr2[6] = {
+    /* for x in [2.8570,2]=1/[0.3499,0.5] */
+    1.0771083225e-07, /* 0x33e74ea8 */
+    1.1717621982e-01, /* 0x3deffa16 */
+    2.3685150146e+00, /* 0x401795c0 */
+    1.2242610931e+01, /* 0x4143e1bc */
+    1.7693971634e+01, /* 0x418d8d41 */
+    5.0735230446e+00, /* 0x40a25a4d */
 };
 static const float ps2[5] = {
-  2.1436485291e+01, /* 0x41ab7dec */
-  1.2529022980e+02, /* 0x42fa9499 */
-  2.3227647400e+02, /* 0x436846c7 */
-  1.1767937469e+02, /* 0x42eb5bd7 */
-  8.3646392822e+00, /* 0x4105d590 */
+    2.1436485291e+01, /* 0x41ab7dec */
+    1.2529022980e+02, /* 0x42fa9499 */
+    2.3227647400e+02, /* 0x436846c7 */
+    1.1767937469e+02, /* 0x42eb5bd7 */
+    8.3646392822e+00, /* 0x4105d590 */
 };
 
-static float ponef(float x)
-{
-	const float *p,*q;
-	float_t z,r,s;
-	uint32_t ix;
+static float ponef(float x) {
+  const float *p, *q;
+  float_t z, r, s;
+  uint32_t ix;
 
-	GET_FLOAT_WORD(ix, x);
-	ix &= 0x7fffffff;
-	if      (ix >= 0x41000000){p = pr8; q = ps8;}
-	else if (ix >= 0x40f71c58){p = pr5; q = ps5;}
-	else if (ix >= 0x4036db68){p = pr3; q = ps3;}
-	else /*ix >= 0x40000000*/ {p = pr2; q = ps2;}
-	z = 1.0f/(x*x);
-	r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
-	s = 1.0f+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*q[4]))));
-	return 1.0f + r/s;
+  GET_FLOAT_WORD(ix, x);
+  ix &= 0x7fffffff;
+  if (ix >= 0x41000000) {
+    p = pr8;
+    q = ps8;
+  } else if (ix >= 0x40f71c58) {
+    p = pr5;
+    q = ps5;
+  } else if (ix >= 0x4036db68) {
+    p = pr3;
+    q = ps3;
+  } else /*ix >= 0x40000000*/ {
+    p = pr2;
+    q = ps2;
+  }
+  z = 1.0f / (x * x);
+  r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
+  s = 1.0f + z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * q[4]))));
+  return 1.0f + r / s;
 }
 
 /* For x >= 8, the asymptotic expansions of qone is
@@ -224,88 +230,100 @@
  *      | qone(x)/s -0.375-R/S | <= 2  ** ( -61.13)
  */
 
-static const float qr8[6] = { /* for x in [inf, 8]=1/[0,0.125] */
-  0.0000000000e+00, /* 0x00000000 */
- -1.0253906250e-01, /* 0xbdd20000 */
- -1.6271753311e+01, /* 0xc1822c8d */
- -7.5960174561e+02, /* 0xc43de683 */
- -1.1849806641e+04, /* 0xc639273a */
- -4.8438511719e+04, /* 0xc73d3683 */
+static const float qr8[6] = {
+    /* for x in [inf, 8]=1/[0,0.125] */
+    0.0000000000e+00,  /* 0x00000000 */
+    -1.0253906250e-01, /* 0xbdd20000 */
+    -1.6271753311e+01, /* 0xc1822c8d */
+    -7.5960174561e+02, /* 0xc43de683 */
+    -1.1849806641e+04, /* 0xc639273a */
+    -4.8438511719e+04, /* 0xc73d3683 */
 };
 static const float qs8[6] = {
-  1.6139537048e+02, /* 0x43216537 */
-  7.8253862305e+03, /* 0x45f48b17 */
-  1.3387534375e+05, /* 0x4802bcd6 */
-  7.1965775000e+05, /* 0x492fb29c */
-  6.6660125000e+05, /* 0x4922be94 */
- -2.9449025000e+05, /* 0xc88fcb48 */
+    1.6139537048e+02,  /* 0x43216537 */
+    7.8253862305e+03,  /* 0x45f48b17 */
+    1.3387534375e+05,  /* 0x4802bcd6 */
+    7.1965775000e+05,  /* 0x492fb29c */
+    6.6660125000e+05,  /* 0x4922be94 */
+    -2.9449025000e+05, /* 0xc88fcb48 */
 };
 
-static const float qr5[6] = { /* for x in [8,4.5454]=1/[0.125,0.22001] */
- -2.0897993405e-11, /* 0xadb7d219 */
- -1.0253904760e-01, /* 0xbdd1fffe */
- -8.0564479828e+00, /* 0xc100e736 */
- -1.8366960144e+02, /* 0xc337ab6b */
- -1.3731937256e+03, /* 0xc4aba633 */
- -2.6124443359e+03, /* 0xc523471c */
+static const float qr5[6] = {
+    /* for x in [8,4.5454]=1/[0.125,0.22001] */
+    -2.0897993405e-11, /* 0xadb7d219 */
+    -1.0253904760e-01, /* 0xbdd1fffe */
+    -8.0564479828e+00, /* 0xc100e736 */
+    -1.8366960144e+02, /* 0xc337ab6b */
+    -1.3731937256e+03, /* 0xc4aba633 */
+    -2.6124443359e+03, /* 0xc523471c */
 };
 static const float qs5[6] = {
-  8.1276550293e+01, /* 0x42a28d98 */
-  1.9917987061e+03, /* 0x44f8f98f */
-  1.7468484375e+04, /* 0x468878f8 */
-  4.9851425781e+04, /* 0x4742bb6d */
-  2.7948074219e+04, /* 0x46da5826 */
- -4.7191835938e+03, /* 0xc5937978 */
+    8.1276550293e+01,  /* 0x42a28d98 */
+    1.9917987061e+03,  /* 0x44f8f98f */
+    1.7468484375e+04,  /* 0x468878f8 */
+    4.9851425781e+04,  /* 0x4742bb6d */
+    2.7948074219e+04,  /* 0x46da5826 */
+    -4.7191835938e+03, /* 0xc5937978 */
 };
 
 static const float qr3[6] = {
- -5.0783124372e-09, /* 0xb1ae7d4f */
- -1.0253783315e-01, /* 0xbdd1ff5b */
- -4.6101160049e+00, /* 0xc0938612 */
- -5.7847221375e+01, /* 0xc267638e */
- -2.2824453735e+02, /* 0xc3643e9a */
- -2.1921012878e+02, /* 0xc35b35cb */
+    -5.0783124372e-09, /* 0xb1ae7d4f */
+    -1.0253783315e-01, /* 0xbdd1ff5b */
+    -4.6101160049e+00, /* 0xc0938612 */
+    -5.7847221375e+01, /* 0xc267638e */
+    -2.2824453735e+02, /* 0xc3643e9a */
+    -2.1921012878e+02, /* 0xc35b35cb */
 };
 static const float qs3[6] = {
-  4.7665153503e+01, /* 0x423ea91e */
-  6.7386511230e+02, /* 0x4428775e */
-  3.3801528320e+03, /* 0x45534272 */
-  5.5477290039e+03, /* 0x45ad5dd5 */
-  1.9031191406e+03, /* 0x44ede3d0 */
- -1.3520118713e+02, /* 0xc3073381 */
+    4.7665153503e+01,  /* 0x423ea91e */
+    6.7386511230e+02,  /* 0x4428775e */
+    3.3801528320e+03,  /* 0x45534272 */
+    5.5477290039e+03,  /* 0x45ad5dd5 */
+    1.9031191406e+03,  /* 0x44ede3d0 */
+    -1.3520118713e+02, /* 0xc3073381 */
 };
 
-static const float qr2[6] = {/* for x in [2.8570,2]=1/[0.3499,0.5] */
- -1.7838172539e-07, /* 0xb43f8932 */
- -1.0251704603e-01, /* 0xbdd1f475 */
- -2.7522056103e+00, /* 0xc0302423 */
- -1.9663616180e+01, /* 0xc19d4f16 */
- -4.2325313568e+01, /* 0xc2294d1f */
- -2.1371921539e+01, /* 0xc1aaf9b2 */
+static const float qr2[6] = {
+    /* for x in [2.8570,2]=1/[0.3499,0.5] */
+    -1.7838172539e-07, /* 0xb43f8932 */
+    -1.0251704603e-01, /* 0xbdd1f475 */
+    -2.7522056103e+00, /* 0xc0302423 */
+    -1.9663616180e+01, /* 0xc19d4f16 */
+    -4.2325313568e+01, /* 0xc2294d1f */
+    -2.1371921539e+01, /* 0xc1aaf9b2 */
 };
 static const float qs2[6] = {
-  2.9533363342e+01, /* 0x41ec4454 */
-  2.5298155212e+02, /* 0x437cfb47 */
-  7.5750280762e+02, /* 0x443d602e */
-  7.3939318848e+02, /* 0x4438d92a */
-  1.5594900513e+02, /* 0x431bf2f2 */
- -4.9594988823e+00, /* 0xc09eb437 */
+    2.9533363342e+01,  /* 0x41ec4454 */
+    2.5298155212e+02,  /* 0x437cfb47 */
+    7.5750280762e+02,  /* 0x443d602e */
+    7.3939318848e+02,  /* 0x4438d92a */
+    1.5594900513e+02,  /* 0x431bf2f2 */
+    -4.9594988823e+00, /* 0xc09eb437 */
 };
 
-static float qonef(float x)
-{
-	const float *p,*q;
-	float_t s,r,z;
-	uint32_t ix;
+static float qonef(float x) {
+  const float *p, *q;
+  float_t s, r, z;
+  uint32_t ix;
 
-	GET_FLOAT_WORD(ix, x);
-	ix &= 0x7fffffff;
-	if      (ix >= 0x40200000){p = qr8; q = qs8;}
-	else if (ix >= 0x40f71c58){p = qr5; q = qs5;}
-	else if (ix >= 0x4036db68){p = qr3; q = qs3;}
-	else /*ix >= 0x40000000*/ {p = qr2; q = qs2;}
-	z = 1.0f/(x*x);
-	r = p[0]+z*(p[1]+z*(p[2]+z*(p[3]+z*(p[4]+z*p[5]))));
-	s = 1.0f+z*(q[0]+z*(q[1]+z*(q[2]+z*(q[3]+z*(q[4]+z*q[5])))));
-	return (.375f + r/s)/x;
+  GET_FLOAT_WORD(ix, x);
+  ix &= 0x7fffffff;
+  if (ix >= 0x40200000) {
+    p = qr8;
+    q = qs8;
+  } else if (ix >= 0x40f71c58) {
+    p = qr5;
+    q = qs5;
+  } else if (ix >= 0x4036db68) {
+    p = qr3;
+    q = qs3;
+  } else /*ix >= 0x40000000*/ {
+    p = qr2;
+    q = qs2;
+  }
+  z = 1.0f / (x * x);
+  r = p[0] + z * (p[1] + z * (p[2] + z * (p[3] + z * (p[4] + z * p[5]))));
+  s = 1.0f +
+      z * (q[0] + z * (q[1] + z * (q[2] + z * (q[3] + z * (q[4] + z * q[5])))));
+  return (.375f + r / s) / x;
 }
diff --git a/fusl/src/math/jn.c b/fusl/src/math/jn.c
index 4878a54..a0dcbaf 100644
--- a/fusl/src/math/jn.c
+++ b/fusl/src/math/jn.c
@@ -36,245 +36,259 @@
 
 #include "libm.h"
 
-static const double invsqrtpi = 5.64189583547756279280e-01; /* 0x3FE20DD7, 0x50429B6D */
+static const double invsqrtpi =
+    5.64189583547756279280e-01; /* 0x3FE20DD7, 0x50429B6D */
 
-double jn(int n, double x)
-{
-	uint32_t ix, lx;
-	int nm1, i, sign;
-	double a, b, temp;
+double jn(int n, double x) {
+  uint32_t ix, lx;
+  int nm1, i, sign;
+  double a, b, temp;
 
-	EXTRACT_WORDS(ix, lx, x);
-	sign = ix>>31;
-	ix &= 0x7fffffff;
+  EXTRACT_WORDS(ix, lx, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
 
-	if ((ix | (lx|-lx)>>31) > 0x7ff00000) /* nan */
-		return x;
+  if ((ix | (lx | -lx) >> 31) > 0x7ff00000) /* nan */
+    return x;
 
-	/* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x)
-	 * Thus, J(-n,x) = J(n,-x)
-	 */
-	/* nm1 = |n|-1 is used instead of |n| to handle n==INT_MIN */
-	if (n == 0)
-		return j0(x);
-	if (n < 0) {
-		nm1 = -(n+1);
-		x = -x;
-		sign ^= 1;
-	} else
-		nm1 = n-1;
-	if (nm1 == 0)
-		return j1(x);
+  /* J(-n,x) = (-1)^n * J(n, x), J(n, -x) = (-1)^n * J(n, x)
+   * Thus, J(-n,x) = J(n,-x)
+   */
+  /* nm1 = |n|-1 is used instead of |n| to handle n==INT_MIN */
+  if (n == 0)
+    return j0(x);
+  if (n < 0) {
+    nm1 = -(n + 1);
+    x = -x;
+    sign ^= 1;
+  } else
+    nm1 = n - 1;
+  if (nm1 == 0)
+    return j1(x);
 
-	sign &= n;  /* even n: 0, odd n: signbit(x) */
-	x = fabs(x);
-	if ((ix|lx) == 0 || ix == 0x7ff00000)  /* if x is 0 or inf */
-		b = 0.0;
-	else if (nm1 < x) {
-		/* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */
-		if (ix >= 0x52d00000) { /* x > 2**302 */
-			/* (x >> n**2)
-			 *      Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
-			 *      Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
-			 *      Let s=sin(x), c=cos(x),
-			 *          xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
-			 *
-			 *             n    sin(xn)*sqt2    cos(xn)*sqt2
-			 *          ----------------------------------
-			 *             0     s-c             c+s
-			 *             1    -s-c            -c+s
-			 *             2    -s+c            -c-s
-			 *             3     s+c             c-s
-			 */
-			switch(nm1&3) {
-			case 0: temp = -cos(x)+sin(x); break;
-			case 1: temp = -cos(x)-sin(x); break;
-			case 2: temp =  cos(x)-sin(x); break;
-			default:
-			case 3: temp =  cos(x)+sin(x); break;
-			}
-			b = invsqrtpi*temp/sqrt(x);
-		} else {
-			a = j0(x);
-			b = j1(x);
-			for (i=0; i<nm1; ) {
-				i++;
-				temp = b;
-				b = b*(2.0*i/x) - a; /* avoid underflow */
-				a = temp;
-			}
-		}
-	} else {
-		if (ix < 0x3e100000) { /* x < 2**-29 */
-			/* x is tiny, return the first Taylor expansion of J(n,x)
-			 * J(n,x) = 1/n!*(x/2)^n  - ...
-			 */
-			if (nm1 > 32)  /* underflow */
-				b = 0.0;
-			else {
-				temp = x*0.5;
-				b = temp;
-				a = 1.0;
-				for (i=2; i<=nm1+1; i++) {
-					a *= (double)i; /* a = n! */
-					b *= temp;      /* b = (x/2)^n */
-				}
-				b = b/a;
-			}
-		} else {
-			/* use backward recurrence */
-			/*                      x      x^2      x^2
-			 *  J(n,x)/J(n-1,x) =  ----   ------   ------   .....
-			 *                      2n  - 2(n+1) - 2(n+2)
-			 *
-			 *                      1      1        1
-			 *  (for large x)   =  ----  ------   ------   .....
-			 *                      2n   2(n+1)   2(n+2)
-			 *                      -- - ------ - ------ -
-			 *                       x     x         x
-			 *
-			 * Let w = 2n/x and h=2/x, then the above quotient
-			 * is equal to the continued fraction:
-			 *                  1
-			 *      = -----------------------
-			 *                     1
-			 *         w - -----------------
-			 *                        1
-			 *              w+h - ---------
-			 *                     w+2h - ...
-			 *
-			 * To determine how many terms needed, let
-			 * Q(0) = w, Q(1) = w(w+h) - 1,
-			 * Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
-			 * When Q(k) > 1e4      good for single
-			 * When Q(k) > 1e9      good for double
-			 * When Q(k) > 1e17     good for quadruple
-			 */
-			/* determine k */
-			double t,q0,q1,w,h,z,tmp,nf;
-			int k;
+  sign &= n; /* even n: 0, odd n: signbit(x) */
+  x = fabs(x);
+  if ((ix | lx) == 0 || ix == 0x7ff00000) /* if x is 0 or inf */
+    b = 0.0;
+  else if (nm1 < x) {
+    /* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */
+    if (ix >= 0x52d00000) { /* x > 2**302 */
+                            /* (x >> n**2)
+                             *      Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+                             *      Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+                             *      Let s=sin(x), c=cos(x),
+                             *          xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
+                             *
+                             *             n    sin(xn)*sqt2    cos(xn)*sqt2
+                             *          ----------------------------------
+                             *             0     s-c             c+s
+                             *             1    -s-c            -c+s
+                             *             2    -s+c            -c-s
+                             *             3     s+c             c-s
+                             */
+      switch (nm1 & 3) {
+        case 0:
+          temp = -cos(x) + sin(x);
+          break;
+        case 1:
+          temp = -cos(x) - sin(x);
+          break;
+        case 2:
+          temp = cos(x) - sin(x);
+          break;
+        default:
+        case 3:
+          temp = cos(x) + sin(x);
+          break;
+      }
+      b = invsqrtpi * temp / sqrt(x);
+    } else {
+      a = j0(x);
+      b = j1(x);
+      for (i = 0; i < nm1;) {
+        i++;
+        temp = b;
+        b = b * (2.0 * i / x) - a; /* avoid underflow */
+        a = temp;
+      }
+    }
+  } else {
+    if (ix < 0x3e100000) { /* x < 2**-29 */
+      /* x is tiny, return the first Taylor expansion of J(n,x)
+       * J(n,x) = 1/n!*(x/2)^n  - ...
+       */
+      if (nm1 > 32) /* underflow */
+        b = 0.0;
+      else {
+        temp = x * 0.5;
+        b = temp;
+        a = 1.0;
+        for (i = 2; i <= nm1 + 1; i++) {
+          a *= (double)i; /* a = n! */
+          b *= temp;      /* b = (x/2)^n */
+        }
+        b = b / a;
+      }
+    } else {
+      /* use backward recurrence */
+      /*                      x      x^2      x^2
+       *  J(n,x)/J(n-1,x) =  ----   ------   ------   .....
+       *                      2n  - 2(n+1) - 2(n+2)
+       *
+       *                      1      1        1
+       *  (for large x)   =  ----  ------   ------   .....
+       *                      2n   2(n+1)   2(n+2)
+       *                      -- - ------ - ------ -
+       *                       x     x         x
+       *
+       * Let w = 2n/x and h=2/x, then the above quotient
+       * is equal to the continued fraction:
+       *                  1
+       *      = -----------------------
+       *                     1
+       *         w - -----------------
+       *                        1
+       *              w+h - ---------
+       *                     w+2h - ...
+       *
+       * To determine how many terms needed, let
+       * Q(0) = w, Q(1) = w(w+h) - 1,
+       * Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
+       * When Q(k) > 1e4      good for single
+       * When Q(k) > 1e9      good for double
+       * When Q(k) > 1e17     good for quadruple
+       */
+      /* determine k */
+      double t, q0, q1, w, h, z, tmp, nf;
+      int k;
 
-			nf = nm1 + 1.0;
-			w = 2*nf/x;
-			h = 2/x;
-			z = w+h;
-			q0 = w;
-			q1 = w*z - 1.0;
-			k = 1;
-			while (q1 < 1.0e9) {
-				k += 1;
-				z += h;
-				tmp = z*q1 - q0;
-				q0 = q1;
-				q1 = tmp;
-			}
-			for (t=0.0, i=k; i>=0; i--)
-				t = 1/(2*(i+nf)/x - t);
-			a = t;
-			b = 1.0;
-			/*  estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n)
-			 *  Hence, if n*(log(2n/x)) > ...
-			 *  single 8.8722839355e+01
-			 *  double 7.09782712893383973096e+02
-			 *  long double 1.1356523406294143949491931077970765006170e+04
-			 *  then recurrent value may overflow and the result is
-			 *  likely underflow to zero
-			 */
-			tmp = nf*log(fabs(w));
-			if (tmp < 7.09782712893383973096e+02) {
-				for (i=nm1; i>0; i--) {
-					temp = b;
-					b = b*(2.0*i)/x - a;
-					a = temp;
-				}
-			} else {
-				for (i=nm1; i>0; i--) {
-					temp = b;
-					b = b*(2.0*i)/x - a;
-					a = temp;
-					/* scale b to avoid spurious overflow */
-					if (b > 0x1p500) {
-						a /= b;
-						t /= b;
-						b  = 1.0;
-					}
-				}
-			}
-			z = j0(x);
-			w = j1(x);
-			if (fabs(z) >= fabs(w))
-				b = t*z/b;
-			else
-				b = t*w/a;
-		}
-	}
-	return sign ? -b : b;
+      nf = nm1 + 1.0;
+      w = 2 * nf / x;
+      h = 2 / x;
+      z = w + h;
+      q0 = w;
+      q1 = w * z - 1.0;
+      k = 1;
+      while (q1 < 1.0e9) {
+        k += 1;
+        z += h;
+        tmp = z * q1 - q0;
+        q0 = q1;
+        q1 = tmp;
+      }
+      for (t = 0.0, i = k; i >= 0; i--)
+        t = 1 / (2 * (i + nf) / x - t);
+      a = t;
+      b = 1.0;
+      /*  estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n)
+       *  Hence, if n*(log(2n/x)) > ...
+       *  single 8.8722839355e+01
+       *  double 7.09782712893383973096e+02
+       *  long double 1.1356523406294143949491931077970765006170e+04
+       *  then recurrent value may overflow and the result is
+       *  likely underflow to zero
+       */
+      tmp = nf * log(fabs(w));
+      if (tmp < 7.09782712893383973096e+02) {
+        for (i = nm1; i > 0; i--) {
+          temp = b;
+          b = b * (2.0 * i) / x - a;
+          a = temp;
+        }
+      } else {
+        for (i = nm1; i > 0; i--) {
+          temp = b;
+          b = b * (2.0 * i) / x - a;
+          a = temp;
+          /* scale b to avoid spurious overflow */
+          if (b > 0x1p500) {
+            a /= b;
+            t /= b;
+            b = 1.0;
+          }
+        }
+      }
+      z = j0(x);
+      w = j1(x);
+      if (fabs(z) >= fabs(w))
+        b = t * z / b;
+      else
+        b = t * w / a;
+    }
+  }
+  return sign ? -b : b;
 }
 
+double yn(int n, double x) {
+  uint32_t ix, lx, ib;
+  int nm1, sign, i;
+  double a, b, temp;
 
-double yn(int n, double x)
-{
-	uint32_t ix, lx, ib;
-	int nm1, sign, i;
-	double a, b, temp;
+  EXTRACT_WORDS(ix, lx, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
 
-	EXTRACT_WORDS(ix, lx, x);
-	sign = ix>>31;
-	ix &= 0x7fffffff;
+  if ((ix | (lx | -lx) >> 31) > 0x7ff00000) /* nan */
+    return x;
+  if (sign && (ix | lx) != 0) /* x < 0 */
+    return 0 / 0.0;
+  if (ix == 0x7ff00000)
+    return 0.0;
 
-	if ((ix | (lx|-lx)>>31) > 0x7ff00000) /* nan */
-		return x;
-	if (sign && (ix|lx)!=0) /* x < 0 */
-		return 0/0.0;
-	if (ix == 0x7ff00000)
-		return 0.0;
+  if (n == 0)
+    return y0(x);
+  if (n < 0) {
+    nm1 = -(n + 1);
+    sign = n & 1;
+  } else {
+    nm1 = n - 1;
+    sign = 0;
+  }
+  if (nm1 == 0)
+    return sign ? -y1(x) : y1(x);
 
-	if (n == 0)
-		return y0(x);
-	if (n < 0) {
-		nm1 = -(n+1);
-		sign = n&1;
-	} else {
-		nm1 = n-1;
-		sign = 0;
-	}
-	if (nm1 == 0)
-		return sign ? -y1(x) : y1(x);
-
-	if (ix >= 0x52d00000) { /* x > 2**302 */
-		/* (x >> n**2)
-		 *      Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
-		 *      Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
-		 *      Let s=sin(x), c=cos(x),
-		 *          xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
-		 *
-		 *             n    sin(xn)*sqt2    cos(xn)*sqt2
-		 *          ----------------------------------
-		 *             0     s-c             c+s
-		 *             1    -s-c            -c+s
-		 *             2    -s+c            -c-s
-		 *             3     s+c             c-s
-		 */
-		switch(nm1&3) {
-		case 0: temp = -sin(x)-cos(x); break;
-		case 1: temp = -sin(x)+cos(x); break;
-		case 2: temp =  sin(x)+cos(x); break;
-		default:
-		case 3: temp =  sin(x)-cos(x); break;
-		}
-		b = invsqrtpi*temp/sqrt(x);
-	} else {
-		a = y0(x);
-		b = y1(x);
-		/* quit if b is -inf */
-		GET_HIGH_WORD(ib, b);
-		for (i=0; i<nm1 && ib!=0xfff00000; ){
-			i++;
-			temp = b;
-			b = (2.0*i/x)*b - a;
-			GET_HIGH_WORD(ib, b);
-			a = temp;
-		}
-	}
-	return sign ? -b : b;
+  if (ix >= 0x52d00000) { /* x > 2**302 */
+                          /* (x >> n**2)
+                           *      Jn(x) = cos(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+                           *      Yn(x) = sin(x-(2n+1)*pi/4)*sqrt(2/x*pi)
+                           *      Let s=sin(x), c=cos(x),
+                           *          xn=x-(2n+1)*pi/4, sqt2 = sqrt(2),then
+                           *
+                           *             n    sin(xn)*sqt2    cos(xn)*sqt2
+                           *          ----------------------------------
+                           *             0     s-c             c+s
+                           *             1    -s-c            -c+s
+                           *             2    -s+c            -c-s
+                           *             3     s+c             c-s
+                           */
+    switch (nm1 & 3) {
+      case 0:
+        temp = -sin(x) - cos(x);
+        break;
+      case 1:
+        temp = -sin(x) + cos(x);
+        break;
+      case 2:
+        temp = sin(x) + cos(x);
+        break;
+      default:
+      case 3:
+        temp = sin(x) - cos(x);
+        break;
+    }
+    b = invsqrtpi * temp / sqrt(x);
+  } else {
+    a = y0(x);
+    b = y1(x);
+    /* quit if b is -inf */
+    GET_HIGH_WORD(ib, b);
+    for (i = 0; i < nm1 && ib != 0xfff00000;) {
+      i++;
+      temp = b;
+      b = (2.0 * i / x) * b - a;
+      GET_HIGH_WORD(ib, b);
+      a = temp;
+    }
+  }
+  return sign ? -b : b;
 }
diff --git a/fusl/src/math/jnf.c b/fusl/src/math/jnf.c
index f63c062..6ee472a 100644
--- a/fusl/src/math/jnf.c
+++ b/fusl/src/math/jnf.c
@@ -16,187 +16,185 @@
 #define _GNU_SOURCE
 #include "libm.h"
 
-float jnf(int n, float x)
-{
-	uint32_t ix;
-	int nm1, sign, i;
-	float a, b, temp;
+float jnf(int n, float x) {
+  uint32_t ix;
+  int nm1, sign, i;
+  float a, b, temp;
 
-	GET_FLOAT_WORD(ix, x);
-	sign = ix>>31;
-	ix &= 0x7fffffff;
-	if (ix > 0x7f800000) /* nan */
-		return x;
+  GET_FLOAT_WORD(ix, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
+  if (ix > 0x7f800000) /* nan */
+    return x;
 
-	/* J(-n,x) = J(n,-x), use |n|-1 to avoid overflow in -n */
-	if (n == 0)
-		return j0f(x);
-	if (n < 0) {
-		nm1 = -(n+1);
-		x = -x;
-		sign ^= 1;
-	} else
-		nm1 = n-1;
-	if (nm1 == 0)
-		return j1f(x);
+  /* J(-n,x) = J(n,-x), use |n|-1 to avoid overflow in -n */
+  if (n == 0)
+    return j0f(x);
+  if (n < 0) {
+    nm1 = -(n + 1);
+    x = -x;
+    sign ^= 1;
+  } else
+    nm1 = n - 1;
+  if (nm1 == 0)
+    return j1f(x);
 
-	sign &= n;  /* even n: 0, odd n: signbit(x) */
-	x = fabsf(x);
-	if (ix == 0 || ix == 0x7f800000)  /* if x is 0 or inf */
-		b = 0.0f;
-	else if (nm1 < x) {
-		/* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */
-		a = j0f(x);
-		b = j1f(x);
-		for (i=0; i<nm1; ){
-			i++;
-			temp = b;
-			b = b*(2.0f*i/x) - a;
-			a = temp;
-		}
-	} else {
-		if (ix < 0x35800000) { /* x < 2**-20 */
-			/* x is tiny, return the first Taylor expansion of J(n,x)
-			 * J(n,x) = 1/n!*(x/2)^n  - ...
-			 */
-			if (nm1 > 8)  /* underflow */
-				nm1 = 8;
-			temp = 0.5f * x;
-			b = temp;
-			a = 1.0f;
-			for (i=2; i<=nm1+1; i++) {
-				a *= (float)i;    /* a = n! */
-				b *= temp;        /* b = (x/2)^n */
-			}
-			b = b/a;
-		} else {
-			/* use backward recurrence */
-			/*                      x      x^2      x^2
-			 *  J(n,x)/J(n-1,x) =  ----   ------   ------   .....
-			 *                      2n  - 2(n+1) - 2(n+2)
-			 *
-			 *                      1      1        1
-			 *  (for large x)   =  ----  ------   ------   .....
-			 *                      2n   2(n+1)   2(n+2)
-			 *                      -- - ------ - ------ -
-			 *                       x     x         x
-			 *
-			 * Let w = 2n/x and h=2/x, then the above quotient
-			 * is equal to the continued fraction:
-			 *                  1
-			 *      = -----------------------
-			 *                     1
-			 *         w - -----------------
-			 *                        1
-			 *              w+h - ---------
-			 *                     w+2h - ...
-			 *
-			 * To determine how many terms needed, let
-			 * Q(0) = w, Q(1) = w(w+h) - 1,
-			 * Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
-			 * When Q(k) > 1e4      good for single
-			 * When Q(k) > 1e9      good for double
-			 * When Q(k) > 1e17     good for quadruple
-			 */
-			/* determine k */
-			float t,q0,q1,w,h,z,tmp,nf;
-			int k;
+  sign &= n; /* even n: 0, odd n: signbit(x) */
+  x = fabsf(x);
+  if (ix == 0 || ix == 0x7f800000) /* if x is 0 or inf */
+    b = 0.0f;
+  else if (nm1 < x) {
+    /* Safe to use J(n+1,x)=2n/x *J(n,x)-J(n-1,x) */
+    a = j0f(x);
+    b = j1f(x);
+    for (i = 0; i < nm1;) {
+      i++;
+      temp = b;
+      b = b * (2.0f * i / x) - a;
+      a = temp;
+    }
+  } else {
+    if (ix < 0x35800000) { /* x < 2**-20 */
+      /* x is tiny, return the first Taylor expansion of J(n,x)
+       * J(n,x) = 1/n!*(x/2)^n  - ...
+       */
+      if (nm1 > 8) /* underflow */
+        nm1 = 8;
+      temp = 0.5f * x;
+      b = temp;
+      a = 1.0f;
+      for (i = 2; i <= nm1 + 1; i++) {
+        a *= (float)i; /* a = n! */
+        b *= temp;     /* b = (x/2)^n */
+      }
+      b = b / a;
+    } else {
+      /* use backward recurrence */
+      /*                      x      x^2      x^2
+       *  J(n,x)/J(n-1,x) =  ----   ------   ------   .....
+       *                      2n  - 2(n+1) - 2(n+2)
+       *
+       *                      1      1        1
+       *  (for large x)   =  ----  ------   ------   .....
+       *                      2n   2(n+1)   2(n+2)
+       *                      -- - ------ - ------ -
+       *                       x     x         x
+       *
+       * Let w = 2n/x and h=2/x, then the above quotient
+       * is equal to the continued fraction:
+       *                  1
+       *      = -----------------------
+       *                     1
+       *         w - -----------------
+       *                        1
+       *              w+h - ---------
+       *                     w+2h - ...
+       *
+       * To determine how many terms needed, let
+       * Q(0) = w, Q(1) = w(w+h) - 1,
+       * Q(k) = (w+k*h)*Q(k-1) - Q(k-2),
+       * When Q(k) > 1e4      good for single
+       * When Q(k) > 1e9      good for double
+       * When Q(k) > 1e17     good for quadruple
+       */
+      /* determine k */
+      float t, q0, q1, w, h, z, tmp, nf;
+      int k;
 
-			nf = nm1+1.0f;
-			w = 2*nf/x;
-			h = 2/x;
-			z = w+h;
-			q0 = w;
-			q1 = w*z - 1.0f;
-			k = 1;
-			while (q1 < 1.0e4f) {
-				k += 1;
-				z += h;
-				tmp = z*q1 - q0;
-				q0 = q1;
-				q1 = tmp;
-			}
-			for (t=0.0f, i=k; i>=0; i--)
-				t = 1.0f/(2*(i+nf)/x-t);
-			a = t;
-			b = 1.0f;
-			/*  estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n)
-			 *  Hence, if n*(log(2n/x)) > ...
-			 *  single 8.8722839355e+01
-			 *  double 7.09782712893383973096e+02
-			 *  long double 1.1356523406294143949491931077970765006170e+04
-			 *  then recurrent value may overflow and the result is
-			 *  likely underflow to zero
-			 */
-			tmp = nf*logf(fabsf(w));
-			if (tmp < 88.721679688f) {
-				for (i=nm1; i>0; i--) {
-					temp = b;
-					b = 2.0f*i*b/x - a;
-					a = temp;
-				}
-			} else {
-				for (i=nm1; i>0; i--){
-					temp = b;
-					b = 2.0f*i*b/x - a;
-					a = temp;
-					/* scale b to avoid spurious overflow */
-					if (b > 0x1p60f) {
-						a /= b;
-						t /= b;
-						b = 1.0f;
-					}
-				}
-			}
-			z = j0f(x);
-			w = j1f(x);
-			if (fabsf(z) >= fabsf(w))
-				b = t*z/b;
-			else
-				b = t*w/a;
-		}
-	}
-	return sign ? -b : b;
+      nf = nm1 + 1.0f;
+      w = 2 * nf / x;
+      h = 2 / x;
+      z = w + h;
+      q0 = w;
+      q1 = w * z - 1.0f;
+      k = 1;
+      while (q1 < 1.0e4f) {
+        k += 1;
+        z += h;
+        tmp = z * q1 - q0;
+        q0 = q1;
+        q1 = tmp;
+      }
+      for (t = 0.0f, i = k; i >= 0; i--)
+        t = 1.0f / (2 * (i + nf) / x - t);
+      a = t;
+      b = 1.0f;
+      /*  estimate log((2/x)^n*n!) = n*log(2/x)+n*ln(n)
+       *  Hence, if n*(log(2n/x)) > ...
+       *  single 8.8722839355e+01
+       *  double 7.09782712893383973096e+02
+       *  long double 1.1356523406294143949491931077970765006170e+04
+       *  then recurrent value may overflow and the result is
+       *  likely underflow to zero
+       */
+      tmp = nf * logf(fabsf(w));
+      if (tmp < 88.721679688f) {
+        for (i = nm1; i > 0; i--) {
+          temp = b;
+          b = 2.0f * i * b / x - a;
+          a = temp;
+        }
+      } else {
+        for (i = nm1; i > 0; i--) {
+          temp = b;
+          b = 2.0f * i * b / x - a;
+          a = temp;
+          /* scale b to avoid spurious overflow */
+          if (b > 0x1p60f) {
+            a /= b;
+            t /= b;
+            b = 1.0f;
+          }
+        }
+      }
+      z = j0f(x);
+      w = j1f(x);
+      if (fabsf(z) >= fabsf(w))
+        b = t * z / b;
+      else
+        b = t * w / a;
+    }
+  }
+  return sign ? -b : b;
 }
 
-float ynf(int n, float x)
-{
-	uint32_t ix, ib;
-	int nm1, sign, i;
-	float a, b, temp;
+float ynf(int n, float x) {
+  uint32_t ix, ib;
+  int nm1, sign, i;
+  float a, b, temp;
 
-	GET_FLOAT_WORD(ix, x);
-	sign = ix>>31;
-	ix &= 0x7fffffff;
-	if (ix > 0x7f800000) /* nan */
-		return x;
-	if (sign && ix != 0) /* x < 0 */
-		return 0/0.0f;
-	if (ix == 0x7f800000)
-		return 0.0f;
+  GET_FLOAT_WORD(ix, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
+  if (ix > 0x7f800000) /* nan */
+    return x;
+  if (sign && ix != 0) /* x < 0 */
+    return 0 / 0.0f;
+  if (ix == 0x7f800000)
+    return 0.0f;
 
-	if (n == 0)
-		return y0f(x);
-	if (n < 0) {
-		nm1 = -(n+1);
-		sign = n&1;
-	} else {
-		nm1 = n-1;
-		sign = 0;
-	}
-	if (nm1 == 0)
-		return sign ? -y1f(x) : y1f(x);
+  if (n == 0)
+    return y0f(x);
+  if (n < 0) {
+    nm1 = -(n + 1);
+    sign = n & 1;
+  } else {
+    nm1 = n - 1;
+    sign = 0;
+  }
+  if (nm1 == 0)
+    return sign ? -y1f(x) : y1f(x);
 
-	a = y0f(x);
-	b = y1f(x);
-	/* quit if b is -inf */
-	GET_FLOAT_WORD(ib,b);
-	for (i = 0; i < nm1 && ib != 0xff800000; ) {
-		i++;
-		temp = b;
-		b = (2.0f*i/x)*b - a;
-		GET_FLOAT_WORD(ib, b);
-		a = temp;
-	}
-	return sign ? -b : b;
+  a = y0f(x);
+  b = y1f(x);
+  /* quit if b is -inf */
+  GET_FLOAT_WORD(ib, b);
+  for (i = 0; i < nm1 && ib != 0xff800000;) {
+    i++;
+    temp = b;
+    b = (2.0f * i / x) * b - a;
+    GET_FLOAT_WORD(ib, b);
+    a = temp;
+  }
+  return sign ? -b : b;
 }
diff --git a/fusl/src/math/ldexp.c b/fusl/src/math/ldexp.c
index f4d1cd6..4a7424b 100644
--- a/fusl/src/math/ldexp.c
+++ b/fusl/src/math/ldexp.c
@@ -1,6 +1,5 @@
 #include <math.h>
 
-double ldexp(double x, int n)
-{
-	return scalbn(x, n);
+double ldexp(double x, int n) {
+  return scalbn(x, n);
 }
diff --git a/fusl/src/math/ldexpf.c b/fusl/src/math/ldexpf.c
index 3bad5f3..71ccf56 100644
--- a/fusl/src/math/ldexpf.c
+++ b/fusl/src/math/ldexpf.c
@@ -1,6 +1,5 @@
 #include <math.h>
 
-float ldexpf(float x, int n)
-{
-	return scalbnf(x, n);
+float ldexpf(float x, int n) {
+  return scalbnf(x, n);
 }
diff --git a/fusl/src/math/ldexpl.c b/fusl/src/math/ldexpl.c
index fd145cc..fb7d3c2 100644
--- a/fusl/src/math/ldexpl.c
+++ b/fusl/src/math/ldexpl.c
@@ -1,6 +1,5 @@
 #include <math.h>
 
-long double ldexpl(long double x, int n)
-{
-	return scalbnl(x, n);
+long double ldexpl(long double x, int n) {
+  return scalbnl(x, n);
 }
diff --git a/fusl/src/math/lgamma.c b/fusl/src/math/lgamma.c
index e25ec8e..cea2fc6 100644
--- a/fusl/src/math/lgamma.c
+++ b/fusl/src/math/lgamma.c
@@ -1,9 +1,8 @@
 #include <math.h>
 
 extern int __signgam;
-double __lgamma_r(double, int *);
+double __lgamma_r(double, int*);
 
-double lgamma(double x)
-{
-	return __lgamma_r(x, &__signgam);
+double lgamma(double x) {
+  return __lgamma_r(x, &__signgam);
 }
diff --git a/fusl/src/math/lgamma_r.c b/fusl/src/math/lgamma_r.c
index fff565d..7dd2851 100644
--- a/fusl/src/math/lgamma_r.c
+++ b/fusl/src/math/lgamma_r.c
@@ -81,204 +81,215 @@
 #include "libm.h"
 #include "libc.h"
 
-static const double
-pi  =  3.14159265358979311600e+00, /* 0x400921FB, 0x54442D18 */
-a0  =  7.72156649015328655494e-02, /* 0x3FB3C467, 0xE37DB0C8 */
-a1  =  3.22467033424113591611e-01, /* 0x3FD4A34C, 0xC4A60FAD */
-a2  =  6.73523010531292681824e-02, /* 0x3FB13E00, 0x1A5562A7 */
-a3  =  2.05808084325167332806e-02, /* 0x3F951322, 0xAC92547B */
-a4  =  7.38555086081402883957e-03, /* 0x3F7E404F, 0xB68FEFE8 */
-a5  =  2.89051383673415629091e-03, /* 0x3F67ADD8, 0xCCB7926B */
-a6  =  1.19270763183362067845e-03, /* 0x3F538A94, 0x116F3F5D */
-a7  =  5.10069792153511336608e-04, /* 0x3F40B6C6, 0x89B99C00 */
-a8  =  2.20862790713908385557e-04, /* 0x3F2CF2EC, 0xED10E54D */
-a9  =  1.08011567247583939954e-04, /* 0x3F1C5088, 0x987DFB07 */
-a10 =  2.52144565451257326939e-05, /* 0x3EFA7074, 0x428CFA52 */
-a11 =  4.48640949618915160150e-05, /* 0x3F07858E, 0x90A45837 */
-tc  =  1.46163214496836224576e+00, /* 0x3FF762D8, 0x6356BE3F */
-tf  = -1.21486290535849611461e-01, /* 0xBFBF19B9, 0xBCC38A42 */
-/* tt = -(tail of tf) */
-tt  = -3.63867699703950536541e-18, /* 0xBC50C7CA, 0xA48A971F */
-t0  =  4.83836122723810047042e-01, /* 0x3FDEF72B, 0xC8EE38A2 */
-t1  = -1.47587722994593911752e-01, /* 0xBFC2E427, 0x8DC6C509 */
-t2  =  6.46249402391333854778e-02, /* 0x3FB08B42, 0x94D5419B */
-t3  = -3.27885410759859649565e-02, /* 0xBFA0C9A8, 0xDF35B713 */
-t4  =  1.79706750811820387126e-02, /* 0x3F9266E7, 0x970AF9EC */
-t5  = -1.03142241298341437450e-02, /* 0xBF851F9F, 0xBA91EC6A */
-t6  =  6.10053870246291332635e-03, /* 0x3F78FCE0, 0xE370E344 */
-t7  = -3.68452016781138256760e-03, /* 0xBF6E2EFF, 0xB3E914D7 */
-t8  =  2.25964780900612472250e-03, /* 0x3F6282D3, 0x2E15C915 */
-t9  = -1.40346469989232843813e-03, /* 0xBF56FE8E, 0xBF2D1AF1 */
-t10 =  8.81081882437654011382e-04, /* 0x3F4CDF0C, 0xEF61A8E9 */
-t11 = -5.38595305356740546715e-04, /* 0xBF41A610, 0x9C73E0EC */
-t12 =  3.15632070903625950361e-04, /* 0x3F34AF6D, 0x6C0EBBF7 */
-t13 = -3.12754168375120860518e-04, /* 0xBF347F24, 0xECC38C38 */
-t14 =  3.35529192635519073543e-04, /* 0x3F35FD3E, 0xE8C2D3F4 */
-u0  = -7.72156649015328655494e-02, /* 0xBFB3C467, 0xE37DB0C8 */
-u1  =  6.32827064025093366517e-01, /* 0x3FE4401E, 0x8B005DFF */
-u2  =  1.45492250137234768737e+00, /* 0x3FF7475C, 0xD119BD6F */
-u3  =  9.77717527963372745603e-01, /* 0x3FEF4976, 0x44EA8450 */
-u4  =  2.28963728064692451092e-01, /* 0x3FCD4EAE, 0xF6010924 */
-u5  =  1.33810918536787660377e-02, /* 0x3F8B678B, 0xBF2BAB09 */
-v1  =  2.45597793713041134822e+00, /* 0x4003A5D7, 0xC2BD619C */
-v2  =  2.12848976379893395361e+00, /* 0x40010725, 0xA42B18F5 */
-v3  =  7.69285150456672783825e-01, /* 0x3FE89DFB, 0xE45050AF */
-v4  =  1.04222645593369134254e-01, /* 0x3FBAAE55, 0xD6537C88 */
-v5  =  3.21709242282423911810e-03, /* 0x3F6A5ABB, 0x57D0CF61 */
-s0  = -7.72156649015328655494e-02, /* 0xBFB3C467, 0xE37DB0C8 */
-s1  =  2.14982415960608852501e-01, /* 0x3FCB848B, 0x36E20878 */
-s2  =  3.25778796408930981787e-01, /* 0x3FD4D98F, 0x4F139F59 */
-s3  =  1.46350472652464452805e-01, /* 0x3FC2BB9C, 0xBEE5F2F7 */
-s4  =  2.66422703033638609560e-02, /* 0x3F9B481C, 0x7E939961 */
-s5  =  1.84028451407337715652e-03, /* 0x3F5E26B6, 0x7368F239 */
-s6  =  3.19475326584100867617e-05, /* 0x3F00BFEC, 0xDD17E945 */
-r1  =  1.39200533467621045958e+00, /* 0x3FF645A7, 0x62C4AB74 */
-r2  =  7.21935547567138069525e-01, /* 0x3FE71A18, 0x93D3DCDC */
-r3  =  1.71933865632803078993e-01, /* 0x3FC601ED, 0xCCFBDF27 */
-r4  =  1.86459191715652901344e-02, /* 0x3F9317EA, 0x742ED475 */
-r5  =  7.77942496381893596434e-04, /* 0x3F497DDA, 0xCA41A95B */
-r6  =  7.32668430744625636189e-06, /* 0x3EDEBAF7, 0xA5B38140 */
-w0  =  4.18938533204672725052e-01, /* 0x3FDACFE3, 0x90C97D69 */
-w1  =  8.33333333333329678849e-02, /* 0x3FB55555, 0x5555553B */
-w2  = -2.77777777728775536470e-03, /* 0xBF66C16C, 0x16B02E5C */
-w3  =  7.93650558643019558500e-04, /* 0x3F4A019F, 0x98CF38B6 */
-w4  = -5.95187557450339963135e-04, /* 0xBF4380CB, 0x8C0FE741 */
-w5  =  8.36339918996282139126e-04, /* 0x3F4B67BA, 0x4CDAD5D1 */
-w6  = -1.63092934096575273989e-03; /* 0xBF5AB89D, 0x0B9E43E4 */
+static const double pi =
+                        3.14159265358979311600e+00, /* 0x400921FB, 0x54442D18 */
+    a0 = 7.72156649015328655494e-02,                /* 0x3FB3C467, 0xE37DB0C8 */
+    a1 = 3.22467033424113591611e-01,                /* 0x3FD4A34C, 0xC4A60FAD */
+    a2 = 6.73523010531292681824e-02,                /* 0x3FB13E00, 0x1A5562A7 */
+    a3 = 2.05808084325167332806e-02,                /* 0x3F951322, 0xAC92547B */
+    a4 = 7.38555086081402883957e-03,                /* 0x3F7E404F, 0xB68FEFE8 */
+    a5 = 2.89051383673415629091e-03,                /* 0x3F67ADD8, 0xCCB7926B */
+    a6 = 1.19270763183362067845e-03,                /* 0x3F538A94, 0x116F3F5D */
+    a7 = 5.10069792153511336608e-04,                /* 0x3F40B6C6, 0x89B99C00 */
+    a8 = 2.20862790713908385557e-04,                /* 0x3F2CF2EC, 0xED10E54D */
+    a9 = 1.08011567247583939954e-04,                /* 0x3F1C5088, 0x987DFB07 */
+    a10 = 2.52144565451257326939e-05,               /* 0x3EFA7074, 0x428CFA52 */
+    a11 = 4.48640949618915160150e-05,               /* 0x3F07858E, 0x90A45837 */
+    tc = 1.46163214496836224576e+00,                /* 0x3FF762D8, 0x6356BE3F */
+    tf = -1.21486290535849611461e-01,               /* 0xBFBF19B9, 0xBCC38A42 */
+    /* tt = -(tail of tf) */
+    tt = -3.63867699703950536541e-18,  /* 0xBC50C7CA, 0xA48A971F */
+    t0 = 4.83836122723810047042e-01,   /* 0x3FDEF72B, 0xC8EE38A2 */
+    t1 = -1.47587722994593911752e-01,  /* 0xBFC2E427, 0x8DC6C509 */
+    t2 = 6.46249402391333854778e-02,   /* 0x3FB08B42, 0x94D5419B */
+    t3 = -3.27885410759859649565e-02,  /* 0xBFA0C9A8, 0xDF35B713 */
+    t4 = 1.79706750811820387126e-02,   /* 0x3F9266E7, 0x970AF9EC */
+    t5 = -1.03142241298341437450e-02,  /* 0xBF851F9F, 0xBA91EC6A */
+    t6 = 6.10053870246291332635e-03,   /* 0x3F78FCE0, 0xE370E344 */
+    t7 = -3.68452016781138256760e-03,  /* 0xBF6E2EFF, 0xB3E914D7 */
+    t8 = 2.25964780900612472250e-03,   /* 0x3F6282D3, 0x2E15C915 */
+    t9 = -1.40346469989232843813e-03,  /* 0xBF56FE8E, 0xBF2D1AF1 */
+    t10 = 8.81081882437654011382e-04,  /* 0x3F4CDF0C, 0xEF61A8E9 */
+    t11 = -5.38595305356740546715e-04, /* 0xBF41A610, 0x9C73E0EC */
+    t12 = 3.15632070903625950361e-04,  /* 0x3F34AF6D, 0x6C0EBBF7 */
+    t13 = -3.12754168375120860518e-04, /* 0xBF347F24, 0xECC38C38 */
+    t14 = 3.35529192635519073543e-04,  /* 0x3F35FD3E, 0xE8C2D3F4 */
+    u0 = -7.72156649015328655494e-02,  /* 0xBFB3C467, 0xE37DB0C8 */
+    u1 = 6.32827064025093366517e-01,   /* 0x3FE4401E, 0x8B005DFF */
+    u2 = 1.45492250137234768737e+00,   /* 0x3FF7475C, 0xD119BD6F */
+    u3 = 9.77717527963372745603e-01,   /* 0x3FEF4976, 0x44EA8450 */
+    u4 = 2.28963728064692451092e-01,   /* 0x3FCD4EAE, 0xF6010924 */
+    u5 = 1.33810918536787660377e-02,   /* 0x3F8B678B, 0xBF2BAB09 */
+    v1 = 2.45597793713041134822e+00,   /* 0x4003A5D7, 0xC2BD619C */
+    v2 = 2.12848976379893395361e+00,   /* 0x40010725, 0xA42B18F5 */
+    v3 = 7.69285150456672783825e-01,   /* 0x3FE89DFB, 0xE45050AF */
+    v4 = 1.04222645593369134254e-01,   /* 0x3FBAAE55, 0xD6537C88 */
+    v5 = 3.21709242282423911810e-03,   /* 0x3F6A5ABB, 0x57D0CF61 */
+    s0 = -7.72156649015328655494e-02,  /* 0xBFB3C467, 0xE37DB0C8 */
+    s1 = 2.14982415960608852501e-01,   /* 0x3FCB848B, 0x36E20878 */
+    s2 = 3.25778796408930981787e-01,   /* 0x3FD4D98F, 0x4F139F59 */
+    s3 = 1.46350472652464452805e-01,   /* 0x3FC2BB9C, 0xBEE5F2F7 */
+    s4 = 2.66422703033638609560e-02,   /* 0x3F9B481C, 0x7E939961 */
+    s5 = 1.84028451407337715652e-03,   /* 0x3F5E26B6, 0x7368F239 */
+    s6 = 3.19475326584100867617e-05,   /* 0x3F00BFEC, 0xDD17E945 */
+    r1 = 1.39200533467621045958e+00,   /* 0x3FF645A7, 0x62C4AB74 */
+    r2 = 7.21935547567138069525e-01,   /* 0x3FE71A18, 0x93D3DCDC */
+    r3 = 1.71933865632803078993e-01,   /* 0x3FC601ED, 0xCCFBDF27 */
+    r4 = 1.86459191715652901344e-02,   /* 0x3F9317EA, 0x742ED475 */
+    r5 = 7.77942496381893596434e-04,   /* 0x3F497DDA, 0xCA41A95B */
+    r6 = 7.32668430744625636189e-06,   /* 0x3EDEBAF7, 0xA5B38140 */
+    w0 = 4.18938533204672725052e-01,   /* 0x3FDACFE3, 0x90C97D69 */
+    w1 = 8.33333333333329678849e-02,   /* 0x3FB55555, 0x5555553B */
+    w2 = -2.77777777728775536470e-03,  /* 0xBF66C16C, 0x16B02E5C */
+    w3 = 7.93650558643019558500e-04,   /* 0x3F4A019F, 0x98CF38B6 */
+    w4 = -5.95187557450339963135e-04,  /* 0xBF4380CB, 0x8C0FE741 */
+    w5 = 8.36339918996282139126e-04,   /* 0x3F4B67BA, 0x4CDAD5D1 */
+    w6 = -1.63092934096575273989e-03;  /* 0xBF5AB89D, 0x0B9E43E4 */
 
 /* sin(pi*x) assuming x > 2^-100, if sin(pi*x)==0 the sign is arbitrary */
-static double sin_pi(double x)
-{
-	int n;
+static double sin_pi(double x) {
+  int n;
 
-	/* spurious inexact if odd int */
-	x = 2.0*(x*0.5 - floor(x*0.5));  /* x mod 2.0 */
+  /* spurious inexact if odd int */
+  x = 2.0 * (x * 0.5 - floor(x * 0.5)); /* x mod 2.0 */
 
-	n = (int)(x*4.0);
-	n = (n+1)/2;
-	x -= n*0.5f;
-	x *= pi;
+  n = (int)(x * 4.0);
+  n = (n + 1) / 2;
+  x -= n * 0.5f;
+  x *= pi;
 
-	switch (n) {
-	default: /* case 4: */
-	case 0: return __sin(x, 0.0, 0);
-	case 1: return __cos(x, 0.0);
-	case 2: return __sin(-x, 0.0, 0);
-	case 3: return -__cos(x, 0.0);
-	}
+  switch (n) {
+    default: /* case 4: */
+    case 0:
+      return __sin(x, 0.0, 0);
+    case 1:
+      return __cos(x, 0.0);
+    case 2:
+      return __sin(-x, 0.0, 0);
+    case 3:
+      return -__cos(x, 0.0);
+  }
 }
 
-double __lgamma_r(double x, int *signgamp)
-{
-	union {double f; uint64_t i;} u = {x};
-	double_t t,y,z,nadj,p,p1,p2,p3,q,r,w;
-	uint32_t ix;
-	int sign,i;
+double __lgamma_r(double x, int* signgamp) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  double_t t, y, z, nadj, p, p1, p2, p3, q, r, w;
+  uint32_t ix;
+  int sign, i;
 
-	/* purge off +-inf, NaN, +-0, tiny and negative arguments */
-	*signgamp = 1;
-	sign = u.i>>63;
-	ix = u.i>>32 & 0x7fffffff;
-	if (ix >= 0x7ff00000)
-		return x*x;
-	if (ix < (0x3ff-70)<<20) {  /* |x|<2**-70, return -log(|x|) */
-		if(sign) {
-			x = -x;
-			*signgamp = -1;
-		}
-		return -log(x);
-	}
-	if (sign) {
-		x = -x;
-		t = sin_pi(x);
-		if (t == 0.0) /* -integer */
-			return 1.0/(x-x);
-		if (t > 0.0)
-			*signgamp = -1;
-		else
-			t = -t;
-		nadj = log(pi/(t*x));
-	}
+  /* purge off +-inf, NaN, +-0, tiny and negative arguments */
+  *signgamp = 1;
+  sign = u.i >> 63;
+  ix = u.i >> 32 & 0x7fffffff;
+  if (ix >= 0x7ff00000)
+    return x * x;
+  if (ix < (0x3ff - 70) << 20) { /* |x|<2**-70, return -log(|x|) */
+    if (sign) {
+      x = -x;
+      *signgamp = -1;
+    }
+    return -log(x);
+  }
+  if (sign) {
+    x = -x;
+    t = sin_pi(x);
+    if (t == 0.0) /* -integer */
+      return 1.0 / (x - x);
+    if (t > 0.0)
+      *signgamp = -1;
+    else
+      t = -t;
+    nadj = log(pi / (t * x));
+  }
 
-	/* purge off 1 and 2 */
-	if ((ix == 0x3ff00000 || ix == 0x40000000) && (uint32_t)u.i == 0)
-		r = 0;
-	/* for x < 2.0 */
-	else if (ix < 0x40000000) {
-		if (ix <= 0x3feccccc) {   /* lgamma(x) = lgamma(x+1)-log(x) */
-			r = -log(x);
-			if (ix >= 0x3FE76944) {
-				y = 1.0 - x;
-				i = 0;
-			} else if (ix >= 0x3FCDA661) {
-				y = x - (tc-1.0);
-				i = 1;
-			} else {
-				y = x;
-				i = 2;
-			}
-		} else {
-			r = 0.0;
-			if (ix >= 0x3FFBB4C3) {  /* [1.7316,2] */
-				y = 2.0 - x;
-				i = 0;
-			} else if(ix >= 0x3FF3B4C4) {  /* [1.23,1.73] */
-				y = x - tc;
-				i = 1;
-			} else {
-				y = x - 1.0;
-				i = 2;
-			}
-		}
-		switch (i) {
-		case 0:
-			z = y*y;
-			p1 = a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10))));
-			p2 = z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11)))));
-			p = y*p1+p2;
-			r += (p-0.5*y);
-			break;
-		case 1:
-			z = y*y;
-			w = z*y;
-			p1 = t0+w*(t3+w*(t6+w*(t9 +w*t12)));    /* parallel comp */
-			p2 = t1+w*(t4+w*(t7+w*(t10+w*t13)));
-			p3 = t2+w*(t5+w*(t8+w*(t11+w*t14)));
-			p = z*p1-(tt-w*(p2+y*p3));
-			r += tf + p;
-			break;
-		case 2:
-			p1 = y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5)))));
-			p2 = 1.0+y*(v1+y*(v2+y*(v3+y*(v4+y*v5))));
-			r += -0.5*y + p1/p2;
-		}
-	} else if (ix < 0x40200000) {  /* x < 8.0 */
-		i = (int)x;
-		y = x - (double)i;
-		p = y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6))))));
-		q = 1.0+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6)))));
-		r = 0.5*y+p/q;
-		z = 1.0;    /* lgamma(1+s) = log(s) + lgamma(s) */
-		switch (i) {
-		case 7: z *= y + 6.0;  /* FALLTHRU */
-		case 6: z *= y + 5.0;  /* FALLTHRU */
-		case 5: z *= y + 4.0;  /* FALLTHRU */
-		case 4: z *= y + 3.0;  /* FALLTHRU */
-		case 3: z *= y + 2.0;  /* FALLTHRU */
-			r += log(z);
-			break;
-		}
-	} else if (ix < 0x43900000) {  /* 8.0 <= x < 2**58 */
-		t = log(x);
-		z = 1.0/x;
-		y = z*z;
-		w = w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6)))));
-		r = (x-0.5)*(t-1.0)+w;
-	} else                         /* 2**58 <= x <= inf */
-		r =  x*(log(x)-1.0);
-	if (sign)
-		r = nadj - r;
-	return r;
+  /* purge off 1 and 2 */
+  if ((ix == 0x3ff00000 || ix == 0x40000000) && (uint32_t)u.i == 0)
+    r = 0;
+  /* for x < 2.0 */
+  else if (ix < 0x40000000) {
+    if (ix <= 0x3feccccc) { /* lgamma(x) = lgamma(x+1)-log(x) */
+      r = -log(x);
+      if (ix >= 0x3FE76944) {
+        y = 1.0 - x;
+        i = 0;
+      } else if (ix >= 0x3FCDA661) {
+        y = x - (tc - 1.0);
+        i = 1;
+      } else {
+        y = x;
+        i = 2;
+      }
+    } else {
+      r = 0.0;
+      if (ix >= 0x3FFBB4C3) { /* [1.7316,2] */
+        y = 2.0 - x;
+        i = 0;
+      } else if (ix >= 0x3FF3B4C4) { /* [1.23,1.73] */
+        y = x - tc;
+        i = 1;
+      } else {
+        y = x - 1.0;
+        i = 2;
+      }
+    }
+    switch (i) {
+      case 0:
+        z = y * y;
+        p1 = a0 + z * (a2 + z * (a4 + z * (a6 + z * (a8 + z * a10))));
+        p2 = z * (a1 + z * (a3 + z * (a5 + z * (a7 + z * (a9 + z * a11)))));
+        p = y * p1 + p2;
+        r += (p - 0.5 * y);
+        break;
+      case 1:
+        z = y * y;
+        w = z * y;
+        p1 = t0 + w * (t3 + w * (t6 + w * (t9 + w * t12))); /* parallel comp */
+        p2 = t1 + w * (t4 + w * (t7 + w * (t10 + w * t13)));
+        p3 = t2 + w * (t5 + w * (t8 + w * (t11 + w * t14)));
+        p = z * p1 - (tt - w * (p2 + y * p3));
+        r += tf + p;
+        break;
+      case 2:
+        p1 = y * (u0 + y * (u1 + y * (u2 + y * (u3 + y * (u4 + y * u5)))));
+        p2 = 1.0 + y * (v1 + y * (v2 + y * (v3 + y * (v4 + y * v5))));
+        r += -0.5 * y + p1 / p2;
+    }
+  } else if (ix < 0x40200000) { /* x < 8.0 */
+    i = (int)x;
+    y = x - (double)i;
+    p = y *
+        (s0 + y * (s1 + y * (s2 + y * (s3 + y * (s4 + y * (s5 + y * s6))))));
+    q = 1.0 + y * (r1 + y * (r2 + y * (r3 + y * (r4 + y * (r5 + y * r6)))));
+    r = 0.5 * y + p / q;
+    z = 1.0; /* lgamma(1+s) = log(s) + lgamma(s) */
+    switch (i) {
+      case 7:
+        z *= y + 6.0; /* FALLTHRU */
+      case 6:
+        z *= y + 5.0; /* FALLTHRU */
+      case 5:
+        z *= y + 4.0; /* FALLTHRU */
+      case 4:
+        z *= y + 3.0; /* FALLTHRU */
+      case 3:
+        z *= y + 2.0; /* FALLTHRU */
+        r += log(z);
+        break;
+    }
+  } else if (ix < 0x43900000) { /* 8.0 <= x < 2**58 */
+    t = log(x);
+    z = 1.0 / x;
+    y = z * z;
+    w = w0 + z * (w1 + y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * w6)))));
+    r = (x - 0.5) * (t - 1.0) + w;
+  } else /* 2**58 <= x <= inf */
+    r = x * (log(x) - 1.0);
+  if (sign)
+    r = nadj - r;
+  return r;
 }
 
 weak_alias(__lgamma_r, lgamma_r);
diff --git a/fusl/src/math/lgammaf.c b/fusl/src/math/lgammaf.c
index badb6df..a4786c5 100644
--- a/fusl/src/math/lgammaf.c
+++ b/fusl/src/math/lgammaf.c
@@ -1,9 +1,8 @@
 #include <math.h>
 
 extern int __signgam;
-float __lgammaf_r(float, int *);
+float __lgammaf_r(float, int*);
 
-float lgammaf(float x)
-{
-	return __lgammaf_r(x, &__signgam);
+float lgammaf(float x) {
+  return __lgammaf_r(x, &__signgam);
 }
diff --git a/fusl/src/math/lgammaf_r.c b/fusl/src/math/lgammaf_r.c
index c5b43db..f0c8f4a 100644
--- a/fusl/src/math/lgammaf_r.c
+++ b/fusl/src/math/lgammaf_r.c
@@ -16,204 +16,214 @@
 #include "libm.h"
 #include "libc.h"
 
-static const float
-pi  =  3.1415927410e+00, /* 0x40490fdb */
-a0  =  7.7215664089e-02, /* 0x3d9e233f */
-a1  =  3.2246702909e-01, /* 0x3ea51a66 */
-a2  =  6.7352302372e-02, /* 0x3d89f001 */
-a3  =  2.0580807701e-02, /* 0x3ca89915 */
-a4  =  7.3855509982e-03, /* 0x3bf2027e */
-a5  =  2.8905137442e-03, /* 0x3b3d6ec6 */
-a6  =  1.1927076848e-03, /* 0x3a9c54a1 */
-a7  =  5.1006977446e-04, /* 0x3a05b634 */
-a8  =  2.2086278477e-04, /* 0x39679767 */
-a9  =  1.0801156895e-04, /* 0x38e28445 */
-a10 =  2.5214456400e-05, /* 0x37d383a2 */
-a11 =  4.4864096708e-05, /* 0x383c2c75 */
-tc  =  1.4616321325e+00, /* 0x3fbb16c3 */
-tf  = -1.2148628384e-01, /* 0xbdf8cdcd */
-/* tt = -(tail of tf) */
-tt  =  6.6971006518e-09, /* 0x31e61c52 */
-t0  =  4.8383611441e-01, /* 0x3ef7b95e */
-t1  = -1.4758771658e-01, /* 0xbe17213c */
-t2  =  6.4624942839e-02, /* 0x3d845a15 */
-t3  = -3.2788541168e-02, /* 0xbd064d47 */
-t4  =  1.7970675603e-02, /* 0x3c93373d */
-t5  = -1.0314224288e-02, /* 0xbc28fcfe */
-t6  =  6.1005386524e-03, /* 0x3bc7e707 */
-t7  = -3.6845202558e-03, /* 0xbb7177fe */
-t8  =  2.2596477065e-03, /* 0x3b141699 */
-t9  = -1.4034647029e-03, /* 0xbab7f476 */
-t10 =  8.8108185446e-04, /* 0x3a66f867 */
-t11 = -5.3859531181e-04, /* 0xba0d3085 */
-t12 =  3.1563205994e-04, /* 0x39a57b6b */
-t13 = -3.1275415677e-04, /* 0xb9a3f927 */
-t14 =  3.3552918467e-04, /* 0x39afe9f7 */
-u0  = -7.7215664089e-02, /* 0xbd9e233f */
-u1  =  6.3282704353e-01, /* 0x3f2200f4 */
-u2  =  1.4549225569e+00, /* 0x3fba3ae7 */
-u3  =  9.7771751881e-01, /* 0x3f7a4bb2 */
-u4  =  2.2896373272e-01, /* 0x3e6a7578 */
-u5  =  1.3381091878e-02, /* 0x3c5b3c5e */
-v1  =  2.4559779167e+00, /* 0x401d2ebe */
-v2  =  2.1284897327e+00, /* 0x4008392d */
-v3  =  7.6928514242e-01, /* 0x3f44efdf */
-v4  =  1.0422264785e-01, /* 0x3dd572af */
-v5  =  3.2170924824e-03, /* 0x3b52d5db */
-s0  = -7.7215664089e-02, /* 0xbd9e233f */
-s1  =  2.1498242021e-01, /* 0x3e5c245a */
-s2  =  3.2577878237e-01, /* 0x3ea6cc7a */
-s3  =  1.4635047317e-01, /* 0x3e15dce6 */
-s4  =  2.6642270386e-02, /* 0x3cda40e4 */
-s5  =  1.8402845599e-03, /* 0x3af135b4 */
-s6  =  3.1947532989e-05, /* 0x3805ff67 */
-r1  =  1.3920053244e+00, /* 0x3fb22d3b */
-r2  =  7.2193557024e-01, /* 0x3f38d0c5 */
-r3  =  1.7193385959e-01, /* 0x3e300f6e */
-r4  =  1.8645919859e-02, /* 0x3c98bf54 */
-r5  =  7.7794247773e-04, /* 0x3a4beed6 */
-r6  =  7.3266842264e-06, /* 0x36f5d7bd */
-w0  =  4.1893854737e-01, /* 0x3ed67f1d */
-w1  =  8.3333335817e-02, /* 0x3daaaaab */
-w2  = -2.7777778450e-03, /* 0xbb360b61 */
-w3  =  7.9365057172e-04, /* 0x3a500cfd */
-w4  = -5.9518753551e-04, /* 0xba1c065c */
-w5  =  8.3633989561e-04, /* 0x3a5b3dd2 */
-w6  = -1.6309292987e-03; /* 0xbad5c4e8 */
+static const float pi = 3.1415927410e+00, /* 0x40490fdb */
+    a0 = 7.7215664089e-02,                /* 0x3d9e233f */
+    a1 = 3.2246702909e-01,                /* 0x3ea51a66 */
+    a2 = 6.7352302372e-02,                /* 0x3d89f001 */
+    a3 = 2.0580807701e-02,                /* 0x3ca89915 */
+    a4 = 7.3855509982e-03,                /* 0x3bf2027e */
+    a5 = 2.8905137442e-03,                /* 0x3b3d6ec6 */
+    a6 = 1.1927076848e-03,                /* 0x3a9c54a1 */
+    a7 = 5.1006977446e-04,                /* 0x3a05b634 */
+    a8 = 2.2086278477e-04,                /* 0x39679767 */
+    a9 = 1.0801156895e-04,                /* 0x38e28445 */
+    a10 = 2.5214456400e-05,               /* 0x37d383a2 */
+    a11 = 4.4864096708e-05,               /* 0x383c2c75 */
+    tc = 1.4616321325e+00,                /* 0x3fbb16c3 */
+    tf = -1.2148628384e-01,               /* 0xbdf8cdcd */
+    /* tt = -(tail of tf) */
+    tt = 6.6971006518e-09,   /* 0x31e61c52 */
+    t0 = 4.8383611441e-01,   /* 0x3ef7b95e */
+    t1 = -1.4758771658e-01,  /* 0xbe17213c */
+    t2 = 6.4624942839e-02,   /* 0x3d845a15 */
+    t3 = -3.2788541168e-02,  /* 0xbd064d47 */
+    t4 = 1.7970675603e-02,   /* 0x3c93373d */
+    t5 = -1.0314224288e-02,  /* 0xbc28fcfe */
+    t6 = 6.1005386524e-03,   /* 0x3bc7e707 */
+    t7 = -3.6845202558e-03,  /* 0xbb7177fe */
+    t8 = 2.2596477065e-03,   /* 0x3b141699 */
+    t9 = -1.4034647029e-03,  /* 0xbab7f476 */
+    t10 = 8.8108185446e-04,  /* 0x3a66f867 */
+    t11 = -5.3859531181e-04, /* 0xba0d3085 */
+    t12 = 3.1563205994e-04,  /* 0x39a57b6b */
+    t13 = -3.1275415677e-04, /* 0xb9a3f927 */
+    t14 = 3.3552918467e-04,  /* 0x39afe9f7 */
+    u0 = -7.7215664089e-02,  /* 0xbd9e233f */
+    u1 = 6.3282704353e-01,   /* 0x3f2200f4 */
+    u2 = 1.4549225569e+00,   /* 0x3fba3ae7 */
+    u3 = 9.7771751881e-01,   /* 0x3f7a4bb2 */
+    u4 = 2.2896373272e-01,   /* 0x3e6a7578 */
+    u5 = 1.3381091878e-02,   /* 0x3c5b3c5e */
+    v1 = 2.4559779167e+00,   /* 0x401d2ebe */
+    v2 = 2.1284897327e+00,   /* 0x4008392d */
+    v3 = 7.6928514242e-01,   /* 0x3f44efdf */
+    v4 = 1.0422264785e-01,   /* 0x3dd572af */
+    v5 = 3.2170924824e-03,   /* 0x3b52d5db */
+    s0 = -7.7215664089e-02,  /* 0xbd9e233f */
+    s1 = 2.1498242021e-01,   /* 0x3e5c245a */
+    s2 = 3.2577878237e-01,   /* 0x3ea6cc7a */
+    s3 = 1.4635047317e-01,   /* 0x3e15dce6 */
+    s4 = 2.6642270386e-02,   /* 0x3cda40e4 */
+    s5 = 1.8402845599e-03,   /* 0x3af135b4 */
+    s6 = 3.1947532989e-05,   /* 0x3805ff67 */
+    r1 = 1.3920053244e+00,   /* 0x3fb22d3b */
+    r2 = 7.2193557024e-01,   /* 0x3f38d0c5 */
+    r3 = 1.7193385959e-01,   /* 0x3e300f6e */
+    r4 = 1.8645919859e-02,   /* 0x3c98bf54 */
+    r5 = 7.7794247773e-04,   /* 0x3a4beed6 */
+    r6 = 7.3266842264e-06,   /* 0x36f5d7bd */
+    w0 = 4.1893854737e-01,   /* 0x3ed67f1d */
+    w1 = 8.3333335817e-02,   /* 0x3daaaaab */
+    w2 = -2.7777778450e-03,  /* 0xbb360b61 */
+    w3 = 7.9365057172e-04,   /* 0x3a500cfd */
+    w4 = -5.9518753551e-04,  /* 0xba1c065c */
+    w5 = 8.3633989561e-04,   /* 0x3a5b3dd2 */
+    w6 = -1.6309292987e-03;  /* 0xbad5c4e8 */
 
 /* sin(pi*x) assuming x > 2^-100, if sin(pi*x)==0 the sign is arbitrary */
-static float sin_pi(float x)
-{
-	double_t y;
-	int n;
+static float sin_pi(float x) {
+  double_t y;
+  int n;
 
-	/* spurious inexact if odd int */
-	x = 2*(x*0.5f - floorf(x*0.5f));  /* x mod 2.0 */
+  /* spurious inexact if odd int */
+  x = 2 * (x * 0.5f - floorf(x * 0.5f)); /* x mod 2.0 */
 
-	n = (int)(x*4);
-	n = (n+1)/2;
-	y = x - n*0.5f;
-	y *= 3.14159265358979323846;
-	switch (n) {
-	default: /* case 4: */
-	case 0: return __sindf(y);
-	case 1: return __cosdf(y);
-	case 2: return __sindf(-y);
-	case 3: return -__cosdf(y);
-	}
+  n = (int)(x * 4);
+  n = (n + 1) / 2;
+  y = x - n * 0.5f;
+  y *= 3.14159265358979323846;
+  switch (n) {
+    default: /* case 4: */
+    case 0:
+      return __sindf(y);
+    case 1:
+      return __cosdf(y);
+    case 2:
+      return __sindf(-y);
+    case 3:
+      return -__cosdf(y);
+  }
 }
 
-float __lgammaf_r(float x, int *signgamp)
-{
-	union {float f; uint32_t i;} u = {x};
-	float t,y,z,nadj,p,p1,p2,p3,q,r,w;
-	uint32_t ix;
-	int i,sign;
+float __lgammaf_r(float x, int* signgamp) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  float t, y, z, nadj, p, p1, p2, p3, q, r, w;
+  uint32_t ix;
+  int i, sign;
 
-	/* purge off +-inf, NaN, +-0, tiny and negative arguments */
-	*signgamp = 1;
-	sign = u.i>>31;
-	ix = u.i & 0x7fffffff;
-	if (ix >= 0x7f800000)
-		return x*x;
-	if (ix < 0x35000000) {  /* |x| < 2**-21, return -log(|x|) */
-		if (sign) {
-			*signgamp = -1;
-			x = -x;
-		}
-		return -logf(x);
-	}
-	if (sign) {
-		x = -x;
-		t = sin_pi(x);
-		if (t == 0.0f) /* -integer */
-			return 1.0f/(x-x);
-		if (t > 0.0f)
-			*signgamp = -1;
-		else
-			t = -t;
-		nadj = logf(pi/(t*x));
-	}
+  /* purge off +-inf, NaN, +-0, tiny and negative arguments */
+  *signgamp = 1;
+  sign = u.i >> 31;
+  ix = u.i & 0x7fffffff;
+  if (ix >= 0x7f800000)
+    return x * x;
+  if (ix < 0x35000000) { /* |x| < 2**-21, return -log(|x|) */
+    if (sign) {
+      *signgamp = -1;
+      x = -x;
+    }
+    return -logf(x);
+  }
+  if (sign) {
+    x = -x;
+    t = sin_pi(x);
+    if (t == 0.0f) /* -integer */
+      return 1.0f / (x - x);
+    if (t > 0.0f)
+      *signgamp = -1;
+    else
+      t = -t;
+    nadj = logf(pi / (t * x));
+  }
 
-	/* purge off 1 and 2 */
-	if (ix == 0x3f800000 || ix == 0x40000000)
-		r = 0;
-	/* for x < 2.0 */
-	else if (ix < 0x40000000) {
-		if (ix <= 0x3f666666) {  /* lgamma(x) = lgamma(x+1)-log(x) */
-			r = -logf(x);
-			if (ix >= 0x3f3b4a20) {
-				y = 1.0f - x;
-				i = 0;
-			} else if (ix >= 0x3e6d3308) {
-				y = x - (tc-1.0f);
-				i = 1;
-			} else {
-				y = x;
-				i = 2;
-			}
-		} else {
-			r = 0.0f;
-			if (ix >= 0x3fdda618) {  /* [1.7316,2] */
-				y = 2.0f - x;
-				i = 0;
-			} else if (ix >= 0x3F9da620) {  /* [1.23,1.73] */
-				y = x - tc;
-				i = 1;
-			} else {
-				y = x - 1.0f;
-				i = 2;
-			}
-		}
-		switch(i) {
-		case 0:
-			z = y*y;
-			p1 = a0+z*(a2+z*(a4+z*(a6+z*(a8+z*a10))));
-			p2 = z*(a1+z*(a3+z*(a5+z*(a7+z*(a9+z*a11)))));
-			p = y*p1+p2;
-			r += p - 0.5f*y;
-			break;
-		case 1:
-			z = y*y;
-			w = z*y;
-			p1 = t0+w*(t3+w*(t6+w*(t9 +w*t12)));    /* parallel comp */
-			p2 = t1+w*(t4+w*(t7+w*(t10+w*t13)));
-			p3 = t2+w*(t5+w*(t8+w*(t11+w*t14)));
-			p = z*p1-(tt-w*(p2+y*p3));
-			r += (tf + p);
-			break;
-		case 2:
-			p1 = y*(u0+y*(u1+y*(u2+y*(u3+y*(u4+y*u5)))));
-			p2 = 1.0f+y*(v1+y*(v2+y*(v3+y*(v4+y*v5))));
-			r += -0.5f*y + p1/p2;
-		}
-	} else if (ix < 0x41000000) {  /* x < 8.0 */
-		i = (int)x;
-		y = x - (float)i;
-		p = y*(s0+y*(s1+y*(s2+y*(s3+y*(s4+y*(s5+y*s6))))));
-		q = 1.0f+y*(r1+y*(r2+y*(r3+y*(r4+y*(r5+y*r6)))));
-		r = 0.5f*y+p/q;
-		z = 1.0f;    /* lgamma(1+s) = log(s) + lgamma(s) */
-		switch (i) {
-		case 7: z *= y + 6.0f;  /* FALLTHRU */
-		case 6: z *= y + 5.0f;  /* FALLTHRU */
-		case 5: z *= y + 4.0f;  /* FALLTHRU */
-		case 4: z *= y + 3.0f;  /* FALLTHRU */
-		case 3: z *= y + 2.0f;  /* FALLTHRU */
-			r += logf(z);
-			break;
-		}
-	} else if (ix < 0x5c800000) {  /* 8.0 <= x < 2**58 */
-		t = logf(x);
-		z = 1.0f/x;
-		y = z*z;
-		w = w0+z*(w1+y*(w2+y*(w3+y*(w4+y*(w5+y*w6)))));
-		r = (x-0.5f)*(t-1.0f)+w;
-	} else                         /* 2**58 <= x <= inf */
-		r =  x*(logf(x)-1.0f);
-	if (sign)
-		r = nadj - r;
-	return r;
+  /* purge off 1 and 2 */
+  if (ix == 0x3f800000 || ix == 0x40000000)
+    r = 0;
+  /* for x < 2.0 */
+  else if (ix < 0x40000000) {
+    if (ix <= 0x3f666666) { /* lgamma(x) = lgamma(x+1)-log(x) */
+      r = -logf(x);
+      if (ix >= 0x3f3b4a20) {
+        y = 1.0f - x;
+        i = 0;
+      } else if (ix >= 0x3e6d3308) {
+        y = x - (tc - 1.0f);
+        i = 1;
+      } else {
+        y = x;
+        i = 2;
+      }
+    } else {
+      r = 0.0f;
+      if (ix >= 0x3fdda618) { /* [1.7316,2] */
+        y = 2.0f - x;
+        i = 0;
+      } else if (ix >= 0x3F9da620) { /* [1.23,1.73] */
+        y = x - tc;
+        i = 1;
+      } else {
+        y = x - 1.0f;
+        i = 2;
+      }
+    }
+    switch (i) {
+      case 0:
+        z = y * y;
+        p1 = a0 + z * (a2 + z * (a4 + z * (a6 + z * (a8 + z * a10))));
+        p2 = z * (a1 + z * (a3 + z * (a5 + z * (a7 + z * (a9 + z * a11)))));
+        p = y * p1 + p2;
+        r += p - 0.5f * y;
+        break;
+      case 1:
+        z = y * y;
+        w = z * y;
+        p1 = t0 + w * (t3 + w * (t6 + w * (t9 + w * t12))); /* parallel comp */
+        p2 = t1 + w * (t4 + w * (t7 + w * (t10 + w * t13)));
+        p3 = t2 + w * (t5 + w * (t8 + w * (t11 + w * t14)));
+        p = z * p1 - (tt - w * (p2 + y * p3));
+        r += (tf + p);
+        break;
+      case 2:
+        p1 = y * (u0 + y * (u1 + y * (u2 + y * (u3 + y * (u4 + y * u5)))));
+        p2 = 1.0f + y * (v1 + y * (v2 + y * (v3 + y * (v4 + y * v5))));
+        r += -0.5f * y + p1 / p2;
+    }
+  } else if (ix < 0x41000000) { /* x < 8.0 */
+    i = (int)x;
+    y = x - (float)i;
+    p = y *
+        (s0 + y * (s1 + y * (s2 + y * (s3 + y * (s4 + y * (s5 + y * s6))))));
+    q = 1.0f + y * (r1 + y * (r2 + y * (r3 + y * (r4 + y * (r5 + y * r6)))));
+    r = 0.5f * y + p / q;
+    z = 1.0f; /* lgamma(1+s) = log(s) + lgamma(s) */
+    switch (i) {
+      case 7:
+        z *= y + 6.0f; /* FALLTHRU */
+      case 6:
+        z *= y + 5.0f; /* FALLTHRU */
+      case 5:
+        z *= y + 4.0f; /* FALLTHRU */
+      case 4:
+        z *= y + 3.0f; /* FALLTHRU */
+      case 3:
+        z *= y + 2.0f; /* FALLTHRU */
+        r += logf(z);
+        break;
+    }
+  } else if (ix < 0x5c800000) { /* 8.0 <= x < 2**58 */
+    t = logf(x);
+    z = 1.0f / x;
+    y = z * z;
+    w = w0 + z * (w1 + y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * w6)))));
+    r = (x - 0.5f) * (t - 1.0f) + w;
+  } else /* 2**58 <= x <= inf */
+    r = x * (logf(x) - 1.0f);
+  if (sign)
+    r = nadj - r;
+  return r;
 }
 
 weak_alias(__lgammaf_r, lgammaf_r);
diff --git a/fusl/src/math/lgammal.c b/fusl/src/math/lgammal.c
index 2b354a7..dcac5e7 100644
--- a/fusl/src/math/lgammal.c
+++ b/fusl/src/math/lgammal.c
@@ -90,271 +90,270 @@
 #include "libc.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-double __lgamma_r(double x, int *sg);
+double __lgamma_r(double x, int* sg);
 
-long double __lgammal_r(long double x, int *sg)
-{
-	return __lgamma_r(x, sg);
+long double __lgammal_r(long double x, int* sg) {
+  return __lgamma_r(x, sg);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
 static const long double
-pi = 3.14159265358979323846264L,
+    pi = 3.14159265358979323846264L,
 
-/* lgam(1+x) = 0.5 x + x a(x)/b(x)
-    -0.268402099609375 <= x <= 0
-    peak relative error 6.6e-22 */
-a0 = -6.343246574721079391729402781192128239938E2L,
-a1 =  1.856560238672465796768677717168371401378E3L,
-a2 =  2.404733102163746263689288466865843408429E3L,
-a3 =  8.804188795790383497379532868917517596322E2L,
-a4 =  1.135361354097447729740103745999661157426E2L,
-a5 =  3.766956539107615557608581581190400021285E0L,
+    /* lgam(1+x) = 0.5 x + x a(x)/b(x)
+        -0.268402099609375 <= x <= 0
+        peak relative error 6.6e-22 */
+    a0 = -6.343246574721079391729402781192128239938E2L,
+    a1 = 1.856560238672465796768677717168371401378E3L,
+    a2 = 2.404733102163746263689288466865843408429E3L,
+    a3 = 8.804188795790383497379532868917517596322E2L,
+    a4 = 1.135361354097447729740103745999661157426E2L,
+    a5 = 3.766956539107615557608581581190400021285E0L,
 
-b0 =  8.214973713960928795704317259806842490498E3L,
-b1 =  1.026343508841367384879065363925870888012E4L,
-b2 =  4.553337477045763320522762343132210919277E3L,
-b3 =  8.506975785032585797446253359230031874803E2L,
-b4 =  6.042447899703295436820744186992189445813E1L,
-/* b5 =  1.000000000000000000000000000000000000000E0 */
+    b0 = 8.214973713960928795704317259806842490498E3L,
+    b1 = 1.026343508841367384879065363925870888012E4L,
+    b2 = 4.553337477045763320522762343132210919277E3L,
+    b3 = 8.506975785032585797446253359230031874803E2L,
+    b4 = 6.042447899703295436820744186992189445813E1L,
+    /* b5 =  1.000000000000000000000000000000000000000E0 */
 
+    tc = 1.4616321449683623412626595423257213284682E0L,
+    tf = -1.2148629053584961146050602565082954242826E-1, /* double precision */
+    /* tt = (tail of tf), i.e. tf + tt has extended precision. */
+    tt = 3.3649914684731379602768989080467587736363E-18L,
+    /* lgam ( 1.4616321449683623412626595423257213284682E0 ) =
+    -1.2148629053584960809551455717769158215135617312999903886372437313313530E-1
+    */
 
-tc =  1.4616321449683623412626595423257213284682E0L,
-tf = -1.2148629053584961146050602565082954242826E-1, /* double precision */
-/* tt = (tail of tf), i.e. tf + tt has extended precision. */
-tt = 3.3649914684731379602768989080467587736363E-18L,
-/* lgam ( 1.4616321449683623412626595423257213284682E0 ) =
--1.2148629053584960809551455717769158215135617312999903886372437313313530E-1 */
+    /* lgam (x + tc) = tf + tt + x g(x)/h(x)
+        -0.230003726999612341262659542325721328468 <= x
+           <= 0.2699962730003876587373404576742786715318
+         peak relative error 2.1e-21 */
+    g0 = 3.645529916721223331888305293534095553827E-18L,
+    g1 = 5.126654642791082497002594216163574795690E3L,
+    g2 = 8.828603575854624811911631336122070070327E3L,
+    g3 = 5.464186426932117031234820886525701595203E3L,
+    g4 = 1.455427403530884193180776558102868592293E3L,
+    g5 = 1.541735456969245924860307497029155838446E2L,
+    g6 = 4.335498275274822298341872707453445815118E0L,
 
-/* lgam (x + tc) = tf + tt + x g(x)/h(x)
-    -0.230003726999612341262659542325721328468 <= x
-       <= 0.2699962730003876587373404576742786715318
-     peak relative error 2.1e-21 */
-g0 = 3.645529916721223331888305293534095553827E-18L,
-g1 = 5.126654642791082497002594216163574795690E3L,
-g2 = 8.828603575854624811911631336122070070327E3L,
-g3 = 5.464186426932117031234820886525701595203E3L,
-g4 = 1.455427403530884193180776558102868592293E3L,
-g5 = 1.541735456969245924860307497029155838446E2L,
-g6 = 4.335498275274822298341872707453445815118E0L,
+    h0 = 1.059584930106085509696730443974495979641E4L,
+    h1 = 2.147921653490043010629481226937850618860E4L,
+    h2 = 1.643014770044524804175197151958100656728E4L,
+    h3 = 5.869021995186925517228323497501767586078E3L,
+    h4 = 9.764244777714344488787381271643502742293E2L,
+    h5 = 6.442485441570592541741092969581997002349E1L,
+    /* h6 = 1.000000000000000000000000000000000000000E0 */
 
-h0 = 1.059584930106085509696730443974495979641E4L,
-h1 = 2.147921653490043010629481226937850618860E4L,
-h2 = 1.643014770044524804175197151958100656728E4L,
-h3 = 5.869021995186925517228323497501767586078E3L,
-h4 = 9.764244777714344488787381271643502742293E2L,
-h5 = 6.442485441570592541741092969581997002349E1L,
-/* h6 = 1.000000000000000000000000000000000000000E0 */
+    /* lgam (x+1) = -0.5 x + x u(x)/v(x)
+        -0.100006103515625 <= x <= 0.231639862060546875
+        peak relative error 1.3e-21 */
+    u0 = -8.886217500092090678492242071879342025627E1L,
+    u1 = 6.840109978129177639438792958320783599310E2L,
+    u2 = 2.042626104514127267855588786511809932433E3L,
+    u3 = 1.911723903442667422201651063009856064275E3L,
+    u4 = 7.447065275665887457628865263491667767695E2L,
+    u5 = 1.132256494121790736268471016493103952637E2L,
+    u6 = 4.484398885516614191003094714505960972894E0L,
 
+    v0 = 1.150830924194461522996462401210374632929E3L,
+    v1 = 3.399692260848747447377972081399737098610E3L,
+    v2 = 3.786631705644460255229513563657226008015E3L,
+    v3 = 1.966450123004478374557778781564114347876E3L,
+    v4 = 4.741359068914069299837355438370682773122E2L,
+    v5 = 4.508989649747184050907206782117647852364E1L,
+    /* v6 =  1.000000000000000000000000000000000000000E0 */
 
-/* lgam (x+1) = -0.5 x + x u(x)/v(x)
-    -0.100006103515625 <= x <= 0.231639862060546875
-    peak relative error 1.3e-21 */
-u0 = -8.886217500092090678492242071879342025627E1L,
-u1 =  6.840109978129177639438792958320783599310E2L,
-u2 =  2.042626104514127267855588786511809932433E3L,
-u3 =  1.911723903442667422201651063009856064275E3L,
-u4 =  7.447065275665887457628865263491667767695E2L,
-u5 =  1.132256494121790736268471016493103952637E2L,
-u6 =  4.484398885516614191003094714505960972894E0L,
+    /* lgam (x+2) = .5 x + x s(x)/r(x)
+         0 <= x <= 1
+         peak relative error 7.2e-22 */
+    s0 = 1.454726263410661942989109455292824853344E6L,
+    s1 = -3.901428390086348447890408306153378922752E6L,
+    s2 = -6.573568698209374121847873064292963089438E6L,
+    s3 = -3.319055881485044417245964508099095984643E6L,
+    s4 = -7.094891568758439227560184618114707107977E5L,
+    s5 = -6.263426646464505837422314539808112478303E4L,
+    s6 = -1.684926520999477529949915657519454051529E3L,
 
-v0 =  1.150830924194461522996462401210374632929E3L,
-v1 =  3.399692260848747447377972081399737098610E3L,
-v2 =  3.786631705644460255229513563657226008015E3L,
-v3 =  1.966450123004478374557778781564114347876E3L,
-v4 =  4.741359068914069299837355438370682773122E2L,
-v5 =  4.508989649747184050907206782117647852364E1L,
-/* v6 =  1.000000000000000000000000000000000000000E0 */
+    r0 = -1.883978160734303518163008696712983134698E7L,
+    r1 = -2.815206082812062064902202753264922306830E7L,
+    r2 = -1.600245495251915899081846093343626358398E7L,
+    r3 = -4.310526301881305003489257052083370058799E6L,
+    r4 = -5.563807682263923279438235987186184968542E5L,
+    r5 = -3.027734654434169996032905158145259713083E4L,
+    r6 = -4.501995652861105629217250715790764371267E2L,
+    /* r6 =  1.000000000000000000000000000000000000000E0 */
 
-
-/* lgam (x+2) = .5 x + x s(x)/r(x)
-     0 <= x <= 1
-     peak relative error 7.2e-22 */
-s0 =  1.454726263410661942989109455292824853344E6L,
-s1 = -3.901428390086348447890408306153378922752E6L,
-s2 = -6.573568698209374121847873064292963089438E6L,
-s3 = -3.319055881485044417245964508099095984643E6L,
-s4 = -7.094891568758439227560184618114707107977E5L,
-s5 = -6.263426646464505837422314539808112478303E4L,
-s6 = -1.684926520999477529949915657519454051529E3L,
-
-r0 = -1.883978160734303518163008696712983134698E7L,
-r1 = -2.815206082812062064902202753264922306830E7L,
-r2 = -1.600245495251915899081846093343626358398E7L,
-r3 = -4.310526301881305003489257052083370058799E6L,
-r4 = -5.563807682263923279438235987186184968542E5L,
-r5 = -3.027734654434169996032905158145259713083E4L,
-r6 = -4.501995652861105629217250715790764371267E2L,
-/* r6 =  1.000000000000000000000000000000000000000E0 */
-
-
-/* lgam(x) = ( x - 0.5 ) * log(x) - x + LS2PI + 1/x w(1/x^2)
-    x >= 8
-    Peak relative error 1.51e-21
-w0 = LS2PI - 0.5 */
-w0 =  4.189385332046727417803e-1L,
-w1 =  8.333333333333331447505E-2L,
-w2 = -2.777777777750349603440E-3L,
-w3 =  7.936507795855070755671E-4L,
-w4 = -5.952345851765688514613E-4L,
-w5 =  8.412723297322498080632E-4L,
-w6 = -1.880801938119376907179E-3L,
-w7 =  4.885026142432270781165E-3L;
+    /* lgam(x) = ( x - 0.5 ) * log(x) - x + LS2PI + 1/x w(1/x^2)
+        x >= 8
+        Peak relative error 1.51e-21
+    w0 = LS2PI - 0.5 */
+    w0 = 4.189385332046727417803e-1L, w1 = 8.333333333333331447505E-2L,
+    w2 = -2.777777777750349603440E-3L, w3 = 7.936507795855070755671E-4L,
+    w4 = -5.952345851765688514613E-4L, w5 = 8.412723297322498080632E-4L,
+    w6 = -1.880801938119376907179E-3L, w7 = 4.885026142432270781165E-3L;
 
 /* sin(pi*x) assuming x > 2^-1000, if sin(pi*x)==0 the sign is arbitrary */
-static long double sin_pi(long double x)
-{
-	int n;
+static long double sin_pi(long double x) {
+  int n;
 
-	/* spurious inexact if odd int */
-	x *= 0.5;
-	x = 2.0*(x - floorl(x));  /* x mod 2.0 */
+  /* spurious inexact if odd int */
+  x *= 0.5;
+  x = 2.0 * (x - floorl(x)); /* x mod 2.0 */
 
-	n = (int)(x*4.0);
-	n = (n+1)/2;
-	x -= n*0.5f;
-	x *= pi;
+  n = (int)(x * 4.0);
+  n = (n + 1) / 2;
+  x -= n * 0.5f;
+  x *= pi;
 
-	switch (n) {
-	default: /* case 4: */
-	case 0: return __sinl(x, 0.0, 0);
-	case 1: return __cosl(x, 0.0);
-	case 2: return __sinl(-x, 0.0, 0);
-	case 3: return -__cosl(x, 0.0);
-	}
+  switch (n) {
+    default: /* case 4: */
+    case 0:
+      return __sinl(x, 0.0, 0);
+    case 1:
+      return __cosl(x, 0.0);
+    case 2:
+      return __sinl(-x, 0.0, 0);
+    case 3:
+      return -__cosl(x, 0.0);
+  }
 }
 
-long double __lgammal_r(long double x, int *sg) {
-	long double t, y, z, nadj, p, p1, p2, q, r, w;
-	union ldshape u = {x};
-	uint32_t ix = (u.i.se & 0x7fffU)<<16 | u.i.m>>48;
-	int sign = u.i.se >> 15;
-	int i;
+long double __lgammal_r(long double x, int* sg) {
+  long double t, y, z, nadj, p, p1, p2, q, r, w;
+  union ldshape u = {x};
+  uint32_t ix = (u.i.se & 0x7fffU) << 16 | u.i.m >> 48;
+  int sign = u.i.se >> 15;
+  int i;
 
-	*sg = 1;
+  *sg = 1;
 
-	/* purge off +-inf, NaN, +-0, tiny and negative arguments */
-	if (ix >= 0x7fff0000)
-		return x * x;
-	if (ix < 0x3fc08000) {  /* |x|<2**-63, return -log(|x|) */
-		if (sign) {
-			*sg = -1;
-			x = -x;
-		}
-		return -logl(x);
-	}
-	if (sign) {
-		x = -x;
-		t = sin_pi(x);
-		if (t == 0.0)
-			return 1.0 / (x-x); /* -integer */
-		if (t > 0.0)
-			*sg = -1;
-		else
-			t = -t;
-		nadj = logl(pi / (t * x));
-	}
+  /* purge off +-inf, NaN, +-0, tiny and negative arguments */
+  if (ix >= 0x7fff0000)
+    return x * x;
+  if (ix < 0x3fc08000) { /* |x|<2**-63, return -log(|x|) */
+    if (sign) {
+      *sg = -1;
+      x = -x;
+    }
+    return -logl(x);
+  }
+  if (sign) {
+    x = -x;
+    t = sin_pi(x);
+    if (t == 0.0)
+      return 1.0 / (x - x); /* -integer */
+    if (t > 0.0)
+      *sg = -1;
+    else
+      t = -t;
+    nadj = logl(pi / (t * x));
+  }
 
-	/* purge off 1 and 2 (so the sign is ok with downward rounding) */
-	if ((ix == 0x3fff8000 || ix == 0x40008000) && u.i.m == 0) {
-		r = 0;
-	} else if (ix < 0x40008000) {  /* x < 2.0 */
-		if (ix <= 0x3ffee666) {  /* 8.99993896484375e-1 */
-			/* lgamma(x) = lgamma(x+1) - log(x) */
-			r = -logl(x);
-			if (ix >= 0x3ffebb4a) {  /* 7.31597900390625e-1 */
-				y = x - 1.0;
-				i = 0;
-			} else if (ix >= 0x3ffced33) {  /* 2.31639862060546875e-1 */
-				y = x - (tc - 1.0);
-				i = 1;
-			} else { /* x < 0.23 */
-				y = x;
-				i = 2;
-			}
-		} else {
-			r = 0.0;
-			if (ix >= 0x3fffdda6) {  /* 1.73162841796875 */
-				/* [1.7316,2] */
-				y = x - 2.0;
-				i = 0;
-			} else if (ix >= 0x3fff9da6) {  /* 1.23162841796875 */
-				/* [1.23,1.73] */
-				y = x - tc;
-				i = 1;
-			} else {
-				/* [0.9, 1.23] */
-				y = x - 1.0;
-				i = 2;
-			}
-		}
-		switch (i) {
-		case 0:
-			p1 = a0 + y * (a1 + y * (a2 + y * (a3 + y * (a4 + y * a5))));
-			p2 = b0 + y * (b1 + y * (b2 + y * (b3 + y * (b4 + y))));
-			r += 0.5 * y + y * p1/p2;
-			break;
-		case 1:
-			p1 = g0 + y * (g1 + y * (g2 + y * (g3 + y * (g4 + y * (g5 + y * g6)))));
-			p2 = h0 + y * (h1 + y * (h2 + y * (h3 + y * (h4 + y * (h5 + y)))));
-			p = tt + y * p1/p2;
-			r += (tf + p);
-			break;
-		case 2:
-			p1 = y * (u0 + y * (u1 + y * (u2 + y * (u3 + y * (u4 + y * (u5 + y * u6))))));
-			p2 = v0 + y * (v1 + y * (v2 + y * (v3 + y * (v4 + y * (v5 + y)))));
-			r += (-0.5 * y + p1 / p2);
-		}
-	} else if (ix < 0x40028000) {  /* 8.0 */
-		/* x < 8.0 */
-		i = (int)x;
-		y = x - (double)i;
-		p = y * (s0 + y * (s1 + y * (s2 + y * (s3 + y * (s4 + y * (s5 + y * s6))))));
-		q = r0 + y * (r1 + y * (r2 + y * (r3 + y * (r4 + y * (r5 + y * (r6 + y))))));
-		r = 0.5 * y + p / q;
-		z = 1.0;
-		/* lgamma(1+s) = log(s) + lgamma(s) */
-		switch (i) {
-		case 7:
-			z *= (y + 6.0); /* FALLTHRU */
-		case 6:
-			z *= (y + 5.0); /* FALLTHRU */
-		case 5:
-			z *= (y + 4.0); /* FALLTHRU */
-		case 4:
-			z *= (y + 3.0); /* FALLTHRU */
-		case 3:
-			z *= (y + 2.0); /* FALLTHRU */
-			r += logl(z);
-			break;
-		}
-	} else if (ix < 0x40418000) {  /* 2^66 */
-		/* 8.0 <= x < 2**66 */
-		t = logl(x);
-		z = 1.0 / x;
-		y = z * z;
-		w = w0 + z * (w1 + y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * (w6 + y * w7))))));
-		r = (x - 0.5) * (t - 1.0) + w;
-	} else /* 2**66 <= x <= inf */
-		r = x * (logl(x) - 1.0);
-	if (sign)
-		r = nadj - r;
-	return r;
+  /* purge off 1 and 2 (so the sign is ok with downward rounding) */
+  if ((ix == 0x3fff8000 || ix == 0x40008000) && u.i.m == 0) {
+    r = 0;
+  } else if (ix < 0x40008000) { /* x < 2.0 */
+    if (ix <= 0x3ffee666) {     /* 8.99993896484375e-1 */
+      /* lgamma(x) = lgamma(x+1) - log(x) */
+      r = -logl(x);
+      if (ix >= 0x3ffebb4a) { /* 7.31597900390625e-1 */
+        y = x - 1.0;
+        i = 0;
+      } else if (ix >= 0x3ffced33) { /* 2.31639862060546875e-1 */
+        y = x - (tc - 1.0);
+        i = 1;
+      } else { /* x < 0.23 */
+        y = x;
+        i = 2;
+      }
+    } else {
+      r = 0.0;
+      if (ix >= 0x3fffdda6) { /* 1.73162841796875 */
+        /* [1.7316,2] */
+        y = x - 2.0;
+        i = 0;
+      } else if (ix >= 0x3fff9da6) { /* 1.23162841796875 */
+        /* [1.23,1.73] */
+        y = x - tc;
+        i = 1;
+      } else {
+        /* [0.9, 1.23] */
+        y = x - 1.0;
+        i = 2;
+      }
+    }
+    switch (i) {
+      case 0:
+        p1 = a0 + y * (a1 + y * (a2 + y * (a3 + y * (a4 + y * a5))));
+        p2 = b0 + y * (b1 + y * (b2 + y * (b3 + y * (b4 + y))));
+        r += 0.5 * y + y * p1 / p2;
+        break;
+      case 1:
+        p1 = g0 + y * (g1 + y * (g2 + y * (g3 + y * (g4 + y * (g5 + y * g6)))));
+        p2 = h0 + y * (h1 + y * (h2 + y * (h3 + y * (h4 + y * (h5 + y)))));
+        p = tt + y * p1 / p2;
+        r += (tf + p);
+        break;
+      case 2:
+        p1 =
+            y * (u0 +
+                 y * (u1 + y * (u2 + y * (u3 + y * (u4 + y * (u5 + y * u6))))));
+        p2 = v0 + y * (v1 + y * (v2 + y * (v3 + y * (v4 + y * (v5 + y)))));
+        r += (-0.5 * y + p1 / p2);
+    }
+  } else if (ix < 0x40028000) { /* 8.0 */
+    /* x < 8.0 */
+    i = (int)x;
+    y = x - (double)i;
+    p = y *
+        (s0 + y * (s1 + y * (s2 + y * (s3 + y * (s4 + y * (s5 + y * s6))))));
+    q = r0 +
+        y * (r1 + y * (r2 + y * (r3 + y * (r4 + y * (r5 + y * (r6 + y))))));
+    r = 0.5 * y + p / q;
+    z = 1.0;
+    /* lgamma(1+s) = log(s) + lgamma(s) */
+    switch (i) {
+      case 7:
+        z *= (y + 6.0); /* FALLTHRU */
+      case 6:
+        z *= (y + 5.0); /* FALLTHRU */
+      case 5:
+        z *= (y + 4.0); /* FALLTHRU */
+      case 4:
+        z *= (y + 3.0); /* FALLTHRU */
+      case 3:
+        z *= (y + 2.0); /* FALLTHRU */
+        r += logl(z);
+        break;
+    }
+  } else if (ix < 0x40418000) { /* 2^66 */
+    /* 8.0 <= x < 2**66 */
+    t = logl(x);
+    z = 1.0 / x;
+    y = z * z;
+    w = w0 +
+        z * (w1 +
+             y * (w2 + y * (w3 + y * (w4 + y * (w5 + y * (w6 + y * w7))))));
+    r = (x - 0.5) * (t - 1.0) + w;
+  } else /* 2**66 <= x <= inf */
+    r = x * (logl(x) - 1.0);
+  if (sign)
+    r = nadj - r;
+  return r;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-double __lgamma_r(double x, int *sg);
+double __lgamma_r(double x, int* sg);
 
-long double __lgammal_r(long double x, int *sg)
-{
-	return __lgamma_r(x, sg);
+long double __lgammal_r(long double x, int* sg) {
+  return __lgamma_r(x, sg);
 }
 #endif
 
 extern int __signgam;
 
-long double lgammal(long double x)
-{
-	return __lgammal_r(x, &__signgam);
+long double lgammal(long double x) {
+  return __lgammal_r(x, &__signgam);
 }
 
 weak_alias(__lgammal_r, lgammal_r);
diff --git a/fusl/src/math/llrint.c b/fusl/src/math/llrint.c
index 4f583ae..d778d1f 100644
--- a/fusl/src/math/llrint.c
+++ b/fusl/src/math/llrint.c
@@ -2,7 +2,6 @@
 
 /* uses LLONG_MAX > 2^53, see comments in lrint.c */
 
-long long llrint(double x)
-{
-	return rint(x);
+long long llrint(double x) {
+  return rint(x);
 }
diff --git a/fusl/src/math/llrintf.c b/fusl/src/math/llrintf.c
index 96949a0..d6ae6de 100644
--- a/fusl/src/math/llrintf.c
+++ b/fusl/src/math/llrintf.c
@@ -2,7 +2,6 @@
 
 /* uses LLONG_MAX > 2^24, see comments in lrint.c */
 
-long long llrintf(float x)
-{
-	return rintf(x);
+long long llrintf(float x) {
+  return rintf(x);
 }
diff --git a/fusl/src/math/llrintl.c b/fusl/src/math/llrintl.c
index 56150fb..15ab6a5 100644
--- a/fusl/src/math/llrintl.c
+++ b/fusl/src/math/llrintl.c
@@ -2,11 +2,9 @@
 #include <fenv.h>
 #include "libm.h"
 
-
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long long llrintl(long double x)
-{
-	return llrint(x);
+long long llrintl(long double x) {
+  return llrint(x);
 }
 #elif defined(FE_INEXACT)
 /*
@@ -16,21 +14,19 @@
 then x == 2**63 - 0.5 is the only input that overflows and
 raises inexact (with tonearest or upward rounding mode)
 */
-long long llrintl(long double x)
-{
-	PRAGMA_STDC_FENV_ACCESS_ON
-	int e;
+long long llrintl(long double x) {
+  PRAGMA_STDC_FENV_ACCESS_ON
+  int e;
 
-	e = fetestexcept(FE_INEXACT);
-	x = rintl(x);
-	if (!e && (x > LLONG_MAX || x < LLONG_MIN))
-		feclearexcept(FE_INEXACT);
-	/* conversion */
-	return x;
+  e = fetestexcept(FE_INEXACT);
+  x = rintl(x);
+  if (!e && (x > LLONG_MAX || x < LLONG_MIN))
+    feclearexcept(FE_INEXACT);
+  /* conversion */
+  return x;
 }
 #else
-long long llrintl(long double x)
-{
-	return rintl(x);
+long long llrintl(long double x) {
+  return rintl(x);
 }
 #endif
diff --git a/fusl/src/math/llround.c b/fusl/src/math/llround.c
index 4d94787..37c49a0 100644
--- a/fusl/src/math/llround.c
+++ b/fusl/src/math/llround.c
@@ -1,6 +1,5 @@
 #include <math.h>
 
-long long llround(double x)
-{
-	return round(x);
+long long llround(double x) {
+  return round(x);
 }
diff --git a/fusl/src/math/llroundf.c b/fusl/src/math/llroundf.c
index 19eb77e..b2fd7e0 100644
--- a/fusl/src/math/llroundf.c
+++ b/fusl/src/math/llroundf.c
@@ -1,6 +1,5 @@
 #include <math.h>
 
-long long llroundf(float x)
-{
-	return roundf(x);
+long long llroundf(float x) {
+  return roundf(x);
 }
diff --git a/fusl/src/math/llroundl.c b/fusl/src/math/llroundl.c
index 2c2ee5e..e22c907 100644
--- a/fusl/src/math/llroundl.c
+++ b/fusl/src/math/llroundl.c
@@ -1,6 +1,5 @@
 #include <math.h>
 
-long long llroundl(long double x)
-{
-	return roundl(x);
+long long llroundl(long double x) {
+  return roundl(x);
 }
diff --git a/fusl/src/math/log.c b/fusl/src/math/log.c
index e61e113..c7e85a9 100644
--- a/fusl/src/math/log.c
+++ b/fusl/src/math/log.c
@@ -63,56 +63,57 @@
 #include <math.h>
 #include <stdint.h>
 
-static const double
-ln2_hi = 6.93147180369123816490e-01,  /* 3fe62e42 fee00000 */
-ln2_lo = 1.90821492927058770002e-10,  /* 3dea39ef 35793c76 */
-Lg1 = 6.666666666666735130e-01,  /* 3FE55555 55555593 */
-Lg2 = 3.999999999940941908e-01,  /* 3FD99999 9997FA04 */
-Lg3 = 2.857142874366239149e-01,  /* 3FD24924 94229359 */
-Lg4 = 2.222219843214978396e-01,  /* 3FCC71C5 1D8E78AF */
-Lg5 = 1.818357216161805012e-01,  /* 3FC74664 96CB03DE */
-Lg6 = 1.531383769920937332e-01,  /* 3FC39A09 D078C69F */
-Lg7 = 1.479819860511658591e-01;  /* 3FC2F112 DF3E5244 */
+static const double ln2_hi = 6.93147180369123816490e-01, /* 3fe62e42 fee00000 */
+    ln2_lo = 1.90821492927058770002e-10,                 /* 3dea39ef 35793c76 */
+    Lg1 = 6.666666666666735130e-01,                      /* 3FE55555 55555593 */
+    Lg2 = 3.999999999940941908e-01,                      /* 3FD99999 9997FA04 */
+    Lg3 = 2.857142874366239149e-01,                      /* 3FD24924 94229359 */
+    Lg4 = 2.222219843214978396e-01,                      /* 3FCC71C5 1D8E78AF */
+    Lg5 = 1.818357216161805012e-01,                      /* 3FC74664 96CB03DE */
+    Lg6 = 1.531383769920937332e-01,                      /* 3FC39A09 D078C69F */
+    Lg7 = 1.479819860511658591e-01;                      /* 3FC2F112 DF3E5244 */
 
-double log(double x)
-{
-	union {double f; uint64_t i;} u = {x};
-	double_t hfsq,f,s,z,R,w,t1,t2,dk;
-	uint32_t hx;
-	int k;
+double log(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  double_t hfsq, f, s, z, R, w, t1, t2, dk;
+  uint32_t hx;
+  int k;
 
-	hx = u.i>>32;
-	k = 0;
-	if (hx < 0x00100000 || hx>>31) {
-		if (u.i<<1 == 0)
-			return -1/(x*x);  /* log(+-0)=-inf */
-		if (hx>>31)
-			return (x-x)/0.0; /* log(-#) = NaN */
-		/* subnormal number, scale x up */
-		k -= 54;
-		x *= 0x1p54;
-		u.f = x;
-		hx = u.i>>32;
-	} else if (hx >= 0x7ff00000) {
-		return x;
-	} else if (hx == 0x3ff00000 && u.i<<32 == 0)
-		return 0;
+  hx = u.i >> 32;
+  k = 0;
+  if (hx < 0x00100000 || hx >> 31) {
+    if (u.i << 1 == 0)
+      return -1 / (x * x); /* log(+-0)=-inf */
+    if (hx >> 31)
+      return (x - x) / 0.0; /* log(-#) = NaN */
+    /* subnormal number, scale x up */
+    k -= 54;
+    x *= 0x1p54;
+    u.f = x;
+    hx = u.i >> 32;
+  } else if (hx >= 0x7ff00000) {
+    return x;
+  } else if (hx == 0x3ff00000 && u.i << 32 == 0)
+    return 0;
 
-	/* reduce x into [sqrt(2)/2, sqrt(2)] */
-	hx += 0x3ff00000 - 0x3fe6a09e;
-	k += (int)(hx>>20) - 0x3ff;
-	hx = (hx&0x000fffff) + 0x3fe6a09e;
-	u.i = (uint64_t)hx<<32 | (u.i&0xffffffff);
-	x = u.f;
+  /* reduce x into [sqrt(2)/2, sqrt(2)] */
+  hx += 0x3ff00000 - 0x3fe6a09e;
+  k += (int)(hx >> 20) - 0x3ff;
+  hx = (hx & 0x000fffff) + 0x3fe6a09e;
+  u.i = (uint64_t)hx << 32 | (u.i & 0xffffffff);
+  x = u.f;
 
-	f = x - 1.0;
-	hfsq = 0.5*f*f;
-	s = f/(2.0+f);
-	z = s*s;
-	w = z*z;
-	t1 = w*(Lg2+w*(Lg4+w*Lg6));
-	t2 = z*(Lg1+w*(Lg3+w*(Lg5+w*Lg7)));
-	R = t2 + t1;
-	dk = k;
-	return s*(hfsq+R) + dk*ln2_lo - hfsq + f + dk*ln2_hi;
+  f = x - 1.0;
+  hfsq = 0.5 * f * f;
+  s = f / (2.0 + f);
+  z = s * s;
+  w = z * z;
+  t1 = w * (Lg2 + w * (Lg4 + w * Lg6));
+  t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));
+  R = t2 + t1;
+  dk = k;
+  return s * (hfsq + R) + dk * ln2_lo - hfsq + f + dk * ln2_hi;
 }
diff --git a/fusl/src/math/log10.c b/fusl/src/math/log10.c
index 8102687..621e15e 100644
--- a/fusl/src/math/log10.c
+++ b/fusl/src/math/log10.c
@@ -20,82 +20,84 @@
 #include <math.h>
 #include <stdint.h>
 
-static const double
-ivln10hi  = 4.34294481878168880939e-01, /* 0x3fdbcb7b, 0x15200000 */
-ivln10lo  = 2.50829467116452752298e-11, /* 0x3dbb9438, 0xca9aadd5 */
-log10_2hi = 3.01029995663611771306e-01, /* 0x3FD34413, 0x509F6000 */
-log10_2lo = 3.69423907715893078616e-13, /* 0x3D59FEF3, 0x11F12B36 */
-Lg1 = 6.666666666666735130e-01,  /* 3FE55555 55555593 */
-Lg2 = 3.999999999940941908e-01,  /* 3FD99999 9997FA04 */
-Lg3 = 2.857142874366239149e-01,  /* 3FD24924 94229359 */
-Lg4 = 2.222219843214978396e-01,  /* 3FCC71C5 1D8E78AF */
-Lg5 = 1.818357216161805012e-01,  /* 3FC74664 96CB03DE */
-Lg6 = 1.531383769920937332e-01,  /* 3FC39A09 D078C69F */
-Lg7 = 1.479819860511658591e-01;  /* 3FC2F112 DF3E5244 */
+static const double ivln10hi =
+                        4.34294481878168880939e-01, /* 0x3fdbcb7b, 0x15200000 */
+    ivln10lo = 2.50829467116452752298e-11,          /* 0x3dbb9438, 0xca9aadd5 */
+    log10_2hi = 3.01029995663611771306e-01,         /* 0x3FD34413, 0x509F6000 */
+    log10_2lo = 3.69423907715893078616e-13,         /* 0x3D59FEF3, 0x11F12B36 */
+    Lg1 = 6.666666666666735130e-01,                 /* 3FE55555 55555593 */
+    Lg2 = 3.999999999940941908e-01,                 /* 3FD99999 9997FA04 */
+    Lg3 = 2.857142874366239149e-01,                 /* 3FD24924 94229359 */
+    Lg4 = 2.222219843214978396e-01,                 /* 3FCC71C5 1D8E78AF */
+    Lg5 = 1.818357216161805012e-01,                 /* 3FC74664 96CB03DE */
+    Lg6 = 1.531383769920937332e-01,                 /* 3FC39A09 D078C69F */
+    Lg7 = 1.479819860511658591e-01;                 /* 3FC2F112 DF3E5244 */
 
-double log10(double x)
-{
-	union {double f; uint64_t i;} u = {x};
-	double_t hfsq,f,s,z,R,w,t1,t2,dk,y,hi,lo,val_hi,val_lo;
-	uint32_t hx;
-	int k;
+double log10(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  double_t hfsq, f, s, z, R, w, t1, t2, dk, y, hi, lo, val_hi, val_lo;
+  uint32_t hx;
+  int k;
 
-	hx = u.i>>32;
-	k = 0;
-	if (hx < 0x00100000 || hx>>31) {
-		if (u.i<<1 == 0)
-			return -1/(x*x);  /* log(+-0)=-inf */
-		if (hx>>31)
-			return (x-x)/0.0; /* log(-#) = NaN */
-		/* subnormal number, scale x up */
-		k -= 54;
-		x *= 0x1p54;
-		u.f = x;
-		hx = u.i>>32;
-	} else if (hx >= 0x7ff00000) {
-		return x;
-	} else if (hx == 0x3ff00000 && u.i<<32 == 0)
-		return 0;
+  hx = u.i >> 32;
+  k = 0;
+  if (hx < 0x00100000 || hx >> 31) {
+    if (u.i << 1 == 0)
+      return -1 / (x * x); /* log(+-0)=-inf */
+    if (hx >> 31)
+      return (x - x) / 0.0; /* log(-#) = NaN */
+    /* subnormal number, scale x up */
+    k -= 54;
+    x *= 0x1p54;
+    u.f = x;
+    hx = u.i >> 32;
+  } else if (hx >= 0x7ff00000) {
+    return x;
+  } else if (hx == 0x3ff00000 && u.i << 32 == 0)
+    return 0;
 
-	/* reduce x into [sqrt(2)/2, sqrt(2)] */
-	hx += 0x3ff00000 - 0x3fe6a09e;
-	k += (int)(hx>>20) - 0x3ff;
-	hx = (hx&0x000fffff) + 0x3fe6a09e;
-	u.i = (uint64_t)hx<<32 | (u.i&0xffffffff);
-	x = u.f;
+  /* reduce x into [sqrt(2)/2, sqrt(2)] */
+  hx += 0x3ff00000 - 0x3fe6a09e;
+  k += (int)(hx >> 20) - 0x3ff;
+  hx = (hx & 0x000fffff) + 0x3fe6a09e;
+  u.i = (uint64_t)hx << 32 | (u.i & 0xffffffff);
+  x = u.f;
 
-	f = x - 1.0;
-	hfsq = 0.5*f*f;
-	s = f/(2.0+f);
-	z = s*s;
-	w = z*z;
-	t1 = w*(Lg2+w*(Lg4+w*Lg6));
-	t2 = z*(Lg1+w*(Lg3+w*(Lg5+w*Lg7)));
-	R = t2 + t1;
+  f = x - 1.0;
+  hfsq = 0.5 * f * f;
+  s = f / (2.0 + f);
+  z = s * s;
+  w = z * z;
+  t1 = w * (Lg2 + w * (Lg4 + w * Lg6));
+  t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));
+  R = t2 + t1;
 
-	/* See log2.c for details. */
-	/* hi+lo = f - hfsq + s*(hfsq+R) ~ log(1+f) */
-	hi = f - hfsq;
-	u.f = hi;
-	u.i &= (uint64_t)-1<<32;
-	hi = u.f;
-	lo = f - hi - hfsq + s*(hfsq+R);
+  /* See log2.c for details. */
+  /* hi+lo = f - hfsq + s*(hfsq+R) ~ log(1+f) */
+  hi = f - hfsq;
+  u.f = hi;
+  u.i &= (uint64_t)-1 << 32;
+  hi = u.f;
+  lo = f - hi - hfsq + s * (hfsq + R);
 
-	/* val_hi+val_lo ~ log10(1+f) + k*log10(2) */
-	val_hi = hi*ivln10hi;
-	dk = k;
-	y = dk*log10_2hi;
-	val_lo = dk*log10_2lo + (lo+hi)*ivln10lo + lo*ivln10hi;
+  /* val_hi+val_lo ~ log10(1+f) + k*log10(2) */
+  val_hi = hi * ivln10hi;
+  dk = k;
+  y = dk * log10_2hi;
+  val_lo = dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi;
 
-	/*
-	 * Extra precision in for adding y is not strictly needed
-	 * since there is no very large cancellation near x = sqrt(2) or
-	 * x = 1/sqrt(2), but we do it anyway since it costs little on CPUs
-	 * with some parallelism and it reduces the error for many args.
-	 */
-	w = y + val_hi;
-	val_lo += (y - w) + val_hi;
-	val_hi = w;
+  /*
+   * Extra precision in for adding y is not strictly needed
+   * since there is no very large cancellation near x = sqrt(2) or
+   * x = 1/sqrt(2), but we do it anyway since it costs little on CPUs
+   * with some parallelism and it reduces the error for many args.
+   */
+  w = y + val_hi;
+  val_lo += (y - w) + val_hi;
+  val_hi = w;
 
-	return val_lo + val_hi;
+  return val_lo + val_hi;
 }
diff --git a/fusl/src/math/log10f.c b/fusl/src/math/log10f.c
index 9ca2f01..1958470 100644
--- a/fusl/src/math/log10f.c
+++ b/fusl/src/math/log10f.c
@@ -16,62 +16,64 @@
 #include <math.h>
 #include <stdint.h>
 
-static const float
-ivln10hi  =  4.3432617188e-01, /* 0x3ede6000 */
-ivln10lo  = -3.1689971365e-05, /* 0xb804ead9 */
-log10_2hi =  3.0102920532e-01, /* 0x3e9a2080 */
-log10_2lo =  7.9034151668e-07, /* 0x355427db */
-/* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */
-Lg1 = 0xaaaaaa.0p-24, /* 0.66666662693 */
-Lg2 = 0xccce13.0p-25, /* 0.40000972152 */
-Lg3 = 0x91e9ee.0p-25, /* 0.28498786688 */
-Lg4 = 0xf89e26.0p-26; /* 0.24279078841 */
+static const float ivln10hi = 4.3432617188e-01, /* 0x3ede6000 */
+    ivln10lo = -3.1689971365e-05,               /* 0xb804ead9 */
+    log10_2hi = 3.0102920532e-01,               /* 0x3e9a2080 */
+    log10_2lo = 7.9034151668e-07,               /* 0x355427db */
+    /* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */
+    Lg1 = 0xaaaaaa.0p-24, /* 0.66666662693 */
+    Lg2 = 0xccce13.0p-25, /* 0.40000972152 */
+    Lg3 = 0x91e9ee.0p-25, /* 0.28498786688 */
+    Lg4 = 0xf89e26.0p-26; /* 0.24279078841 */
 
-float log10f(float x)
-{
-	union {float f; uint32_t i;} u = {x};
-	float_t hfsq,f,s,z,R,w,t1,t2,dk,hi,lo;
-	uint32_t ix;
-	int k;
+float log10f(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  float_t hfsq, f, s, z, R, w, t1, t2, dk, hi, lo;
+  uint32_t ix;
+  int k;
 
-	ix = u.i;
-	k = 0;
-	if (ix < 0x00800000 || ix>>31) {  /* x < 2**-126  */
-		if (ix<<1 == 0)
-			return -1/(x*x);  /* log(+-0)=-inf */
-		if (ix>>31)
-			return (x-x)/0.0f; /* log(-#) = NaN */
-		/* subnormal number, scale up x */
-		k -= 25;
-		x *= 0x1p25f;
-		u.f = x;
-		ix = u.i;
-	} else if (ix >= 0x7f800000) {
-		return x;
-	} else if (ix == 0x3f800000)
-		return 0;
+  ix = u.i;
+  k = 0;
+  if (ix < 0x00800000 || ix >> 31) { /* x < 2**-126  */
+    if (ix << 1 == 0)
+      return -1 / (x * x); /* log(+-0)=-inf */
+    if (ix >> 31)
+      return (x - x) / 0.0f; /* log(-#) = NaN */
+    /* subnormal number, scale up x */
+    k -= 25;
+    x *= 0x1p25f;
+    u.f = x;
+    ix = u.i;
+  } else if (ix >= 0x7f800000) {
+    return x;
+  } else if (ix == 0x3f800000)
+    return 0;
 
-	/* reduce x into [sqrt(2)/2, sqrt(2)] */
-	ix += 0x3f800000 - 0x3f3504f3;
-	k += (int)(ix>>23) - 0x7f;
-	ix = (ix&0x007fffff) + 0x3f3504f3;
-	u.i = ix;
-	x = u.f;
+  /* reduce x into [sqrt(2)/2, sqrt(2)] */
+  ix += 0x3f800000 - 0x3f3504f3;
+  k += (int)(ix >> 23) - 0x7f;
+  ix = (ix & 0x007fffff) + 0x3f3504f3;
+  u.i = ix;
+  x = u.f;
 
-	f = x - 1.0f;
-	s = f/(2.0f + f);
-	z = s*s;
-	w = z*z;
-	t1= w*(Lg2+w*Lg4);
-	t2= z*(Lg1+w*Lg3);
-	R = t2 + t1;
-	hfsq = 0.5f*f*f;
+  f = x - 1.0f;
+  s = f / (2.0f + f);
+  z = s * s;
+  w = z * z;
+  t1 = w * (Lg2 + w * Lg4);
+  t2 = z * (Lg1 + w * Lg3);
+  R = t2 + t1;
+  hfsq = 0.5f * f * f;
 
-	hi = f - hfsq;
-	u.f = hi;
-	u.i &= 0xfffff000;
-	hi = u.f;
-	lo = f - hi - hfsq + s*(hfsq+R);
-	dk = k;
-	return dk*log10_2lo + (lo+hi)*ivln10lo + lo*ivln10hi + hi*ivln10hi + dk*log10_2hi;
+  hi = f - hfsq;
+  u.f = hi;
+  u.i &= 0xfffff000;
+  hi = u.f;
+  lo = f - hi - hfsq + s * (hfsq + R);
+  dk = k;
+  return dk * log10_2lo + (lo + hi) * ivln10lo + lo * ivln10hi + hi * ivln10hi +
+         dk * log10_2hi;
 }
diff --git a/fusl/src/math/log10l.c b/fusl/src/math/log10l.c
index 63dcc28..30b4041 100644
--- a/fusl/src/math/log10l.c
+++ b/fusl/src/math/log10l.c
@@ -60,9 +60,8 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double log10l(long double x)
-{
-	return log10(x);
+long double log10l(long double x) {
+  return log10(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
 /* Coefficients for log(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
@@ -70,23 +69,17 @@
  * Theoretical peak relative error = 6.2e-22
  */
 static const long double P[] = {
- 4.9962495940332550844739E-1L,
- 1.0767376367209449010438E1L,
- 7.7671073698359539859595E1L,
- 2.5620629828144409632571E2L,
- 4.2401812743503691187826E2L,
- 3.4258224542413922935104E2L,
- 1.0747524399916215149070E2L,
+    4.9962495940332550844739E-1L, 1.0767376367209449010438E1L,
+    7.7671073698359539859595E1L,  2.5620629828144409632571E2L,
+    4.2401812743503691187826E2L,  3.4258224542413922935104E2L,
+    1.0747524399916215149070E2L,
 };
 static const long double Q[] = {
-/* 1.0000000000000000000000E0,*/
- 2.3479774160285863271658E1L,
- 1.9444210022760132894510E2L,
- 7.7952888181207260646090E2L,
- 1.6911722418503949084863E3L,
- 2.0307734695595183428202E3L,
- 1.2695660352705325274404E3L,
- 3.2242573199748645407652E2L,
+    /* 1.0000000000000000000000E0,*/
+    2.3479774160285863271658E1L, 1.9444210022760132894510E2L,
+    7.7952888181207260646090E2L, 1.6911722418503949084863E3L,
+    2.0307734695595183428202E3L, 1.2695660352705325274404E3L,
+    3.2242573199748645407652E2L,
 };
 
 /* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2),
@@ -95,16 +88,13 @@
  * Theoretical peak relative error = 6.16e-22
  */
 static const long double R[4] = {
- 1.9757429581415468984296E-3L,
--7.1990767473014147232598E-1L,
- 1.0777257190312272158094E1L,
--3.5717684488096787370998E1L,
+    1.9757429581415468984296E-3L, -7.1990767473014147232598E-1L,
+    1.0777257190312272158094E1L, -3.5717684488096787370998E1L,
 };
 static const long double S[4] = {
-/* 1.00000000000000000000E0L,*/
--2.6201045551331104417768E1L,
- 1.9361891836232102174846E2L,
--4.2861221385716144629696E2L,
+    /* 1.00000000000000000000E0L,*/
+    -2.6201045551331104417768E1L, 1.9361891836232102174846E2L,
+    -4.2861221385716144629696E2L,
 };
 /* log10(2) */
 #define L102A 0.3125L
@@ -115,77 +105,75 @@
 
 #define SQRTH 0.70710678118654752440L
 
-long double log10l(long double x)
-{
-	long double y, z;
-	int e;
+long double log10l(long double x) {
+  long double y, z;
+  int e;
 
-	if (isnan(x))
-		return x;
-	if(x <= 0.0) {
-		if(x == 0.0)
-			return -1.0 / (x*x);
-		return (x - x) / 0.0;
-	}
-	if (x == INFINITY)
-		return INFINITY;
-	/* separate mantissa from exponent */
-	/* Note, frexp is used so that denormal numbers
-	 * will be handled properly.
-	 */
-	x = frexpl(x, &e);
+  if (isnan(x))
+    return x;
+  if (x <= 0.0) {
+    if (x == 0.0)
+      return -1.0 / (x * x);
+    return (x - x) / 0.0;
+  }
+  if (x == INFINITY)
+    return INFINITY;
+  /* separate mantissa from exponent */
+  /* Note, frexp is used so that denormal numbers
+   * will be handled properly.
+   */
+  x = frexpl(x, &e);
 
-	/* logarithm using log(x) = z + z**3 P(z)/Q(z),
-	 * where z = 2(x-1)/x+1)
-	 */
-	if (e > 2 || e < -2) {
-		if (x < SQRTH) {  /* 2(2x-1)/(2x+1) */
-			e -= 1;
-			z = x - 0.5;
-			y = 0.5 * z + 0.5;
-		} else {  /*  2 (x-1)/(x+1)   */
-			z = x - 0.5;
-			z -= 0.5;
-			y = 0.5 * x  + 0.5;
-		}
-		x = z / y;
-		z = x*x;
-		y = x * (z * __polevll(z, R, 3) / __p1evll(z, S, 3));
-		goto done;
-	}
+  /* logarithm using log(x) = z + z**3 P(z)/Q(z),
+   * where z = 2(x-1)/x+1)
+   */
+  if (e > 2 || e < -2) {
+    if (x < SQRTH) { /* 2(2x-1)/(2x+1) */
+      e -= 1;
+      z = x - 0.5;
+      y = 0.5 * z + 0.5;
+    } else { /*  2 (x-1)/(x+1)   */
+      z = x - 0.5;
+      z -= 0.5;
+      y = 0.5 * x + 0.5;
+    }
+    x = z / y;
+    z = x * x;
+    y = x * (z * __polevll(z, R, 3) / __p1evll(z, S, 3));
+    goto done;
+  }
 
-	/* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */
-	if (x < SQRTH) {
-		e -= 1;
-		x = 2.0*x - 1.0;
-	} else {
-		x = x - 1.0;
-	}
-	z = x*x;
-	y = x * (z * __polevll(x, P, 6) / __p1evll(x, Q, 7));
-	y = y - 0.5*z;
+  /* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */
+  if (x < SQRTH) {
+    e -= 1;
+    x = 2.0 * x - 1.0;
+  } else {
+    x = x - 1.0;
+  }
+  z = x * x;
+  y = x * (z * __polevll(x, P, 6) / __p1evll(x, Q, 7));
+  y = y - 0.5 * z;
 
 done:
-	/* Multiply log of fraction by log10(e)
-	 * and base 2 exponent by log10(2).
-	 *
-	 * ***CAUTION***
-	 *
-	 * This sequence of operations is critical and it may
-	 * be horribly defeated by some compiler optimizers.
-	 */
-	z = y * (L10EB);
-	z += x * (L10EB);
-	z += e * (L102B);
-	z += y * (L10EA);
-	z += x * (L10EA);
-	z += e * (L102A);
-	return z;
+  /* Multiply log of fraction by log10(e)
+   * and base 2 exponent by log10(2).
+   *
+   * ***CAUTION***
+   *
+   * This sequence of operations is critical and it may
+   * be horribly defeated by some compiler optimizers.
+   */
+  z = y * (L10EB);
+  z += x * (L10EB);
+  z += e * (L102B);
+  z += y * (L10EA);
+  z += x * (L10EA);
+  z += e * (L102A);
+  return z;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-long double log10l(long double x)
-{
-	return log10(x);
+long double log10l(long double x) {
+  return log10(x);
 }
 #endif
diff --git a/fusl/src/math/log1p.c b/fusl/src/math/log1p.c
index 0097134..0fac0ca 100644
--- a/fusl/src/math/log1p.c
+++ b/fusl/src/math/log1p.c
@@ -55,68 +55,69 @@
 
 #include "libm.h"
 
-static const double
-ln2_hi = 6.93147180369123816490e-01,  /* 3fe62e42 fee00000 */
-ln2_lo = 1.90821492927058770002e-10,  /* 3dea39ef 35793c76 */
-Lg1 = 6.666666666666735130e-01,  /* 3FE55555 55555593 */
-Lg2 = 3.999999999940941908e-01,  /* 3FD99999 9997FA04 */
-Lg3 = 2.857142874366239149e-01,  /* 3FD24924 94229359 */
-Lg4 = 2.222219843214978396e-01,  /* 3FCC71C5 1D8E78AF */
-Lg5 = 1.818357216161805012e-01,  /* 3FC74664 96CB03DE */
-Lg6 = 1.531383769920937332e-01,  /* 3FC39A09 D078C69F */
-Lg7 = 1.479819860511658591e-01;  /* 3FC2F112 DF3E5244 */
+static const double ln2_hi = 6.93147180369123816490e-01, /* 3fe62e42 fee00000 */
+    ln2_lo = 1.90821492927058770002e-10,                 /* 3dea39ef 35793c76 */
+    Lg1 = 6.666666666666735130e-01,                      /* 3FE55555 55555593 */
+    Lg2 = 3.999999999940941908e-01,                      /* 3FD99999 9997FA04 */
+    Lg3 = 2.857142874366239149e-01,                      /* 3FD24924 94229359 */
+    Lg4 = 2.222219843214978396e-01,                      /* 3FCC71C5 1D8E78AF */
+    Lg5 = 1.818357216161805012e-01,                      /* 3FC74664 96CB03DE */
+    Lg6 = 1.531383769920937332e-01,                      /* 3FC39A09 D078C69F */
+    Lg7 = 1.479819860511658591e-01;                      /* 3FC2F112 DF3E5244 */
 
-double log1p(double x)
-{
-	union {double f; uint64_t i;} u = {x};
-	double_t hfsq,f,c,s,z,R,w,t1,t2,dk;
-	uint32_t hx,hu;
-	int k;
+double log1p(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  double_t hfsq, f, c, s, z, R, w, t1, t2, dk;
+  uint32_t hx, hu;
+  int k;
 
-	hx = u.i>>32;
-	k = 1;
-	if (hx < 0x3fda827a || hx>>31) {  /* 1+x < sqrt(2)+ */
-		if (hx >= 0xbff00000) {  /* x <= -1.0 */
-			if (x == -1)
-				return x/0.0; /* log1p(-1) = -inf */
-			return (x-x)/0.0;     /* log1p(x<-1) = NaN */
-		}
-		if (hx<<1 < 0x3ca00000<<1) {  /* |x| < 2**-53 */
-			/* underflow if subnormal */
-			if ((hx&0x7ff00000) == 0)
-				FORCE_EVAL((float)x);
-			return x;
-		}
-		if (hx <= 0xbfd2bec4) {  /* sqrt(2)/2- <= 1+x < sqrt(2)+ */
-			k = 0;
-			c = 0;
-			f = x;
-		}
-	} else if (hx >= 0x7ff00000)
-		return x;
-	if (k) {
-		u.f = 1 + x;
-		hu = u.i>>32;
-		hu += 0x3ff00000 - 0x3fe6a09e;
-		k = (int)(hu>>20) - 0x3ff;
-		/* correction term ~ log(1+x)-log(u), avoid underflow in c/u */
-		if (k < 54) {
-			c = k >= 2 ? 1-(u.f-x) : x-(u.f-1);
-			c /= u.f;
-		} else
-			c = 0;
-		/* reduce u into [sqrt(2)/2, sqrt(2)] */
-		hu = (hu&0x000fffff) + 0x3fe6a09e;
-		u.i = (uint64_t)hu<<32 | (u.i&0xffffffff);
-		f = u.f - 1;
-	}
-	hfsq = 0.5*f*f;
-	s = f/(2.0+f);
-	z = s*s;
-	w = z*z;
-	t1 = w*(Lg2+w*(Lg4+w*Lg6));
-	t2 = z*(Lg1+w*(Lg3+w*(Lg5+w*Lg7)));
-	R = t2 + t1;
-	dk = k;
-	return s*(hfsq+R) + (dk*ln2_lo+c) - hfsq + f + dk*ln2_hi;
+  hx = u.i >> 32;
+  k = 1;
+  if (hx < 0x3fda827a || hx >> 31) { /* 1+x < sqrt(2)+ */
+    if (hx >= 0xbff00000) {          /* x <= -1.0 */
+      if (x == -1)
+        return x / 0.0;     /* log1p(-1) = -inf */
+      return (x - x) / 0.0; /* log1p(x<-1) = NaN */
+    }
+    if (hx << 1 < 0x3ca00000 << 1) { /* |x| < 2**-53 */
+      /* underflow if subnormal */
+      if ((hx & 0x7ff00000) == 0)
+        FORCE_EVAL((float)x);
+      return x;
+    }
+    if (hx <= 0xbfd2bec4) { /* sqrt(2)/2- <= 1+x < sqrt(2)+ */
+      k = 0;
+      c = 0;
+      f = x;
+    }
+  } else if (hx >= 0x7ff00000)
+    return x;
+  if (k) {
+    u.f = 1 + x;
+    hu = u.i >> 32;
+    hu += 0x3ff00000 - 0x3fe6a09e;
+    k = (int)(hu >> 20) - 0x3ff;
+    /* correction term ~ log(1+x)-log(u), avoid underflow in c/u */
+    if (k < 54) {
+      c = k >= 2 ? 1 - (u.f - x) : x - (u.f - 1);
+      c /= u.f;
+    } else
+      c = 0;
+    /* reduce u into [sqrt(2)/2, sqrt(2)] */
+    hu = (hu & 0x000fffff) + 0x3fe6a09e;
+    u.i = (uint64_t)hu << 32 | (u.i & 0xffffffff);
+    f = u.f - 1;
+  }
+  hfsq = 0.5 * f * f;
+  s = f / (2.0 + f);
+  z = s * s;
+  w = z * z;
+  t1 = w * (Lg2 + w * (Lg4 + w * Lg6));
+  t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));
+  R = t2 + t1;
+  dk = k;
+  return s * (hfsq + R) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;
 }
diff --git a/fusl/src/math/log1pf.c b/fusl/src/math/log1pf.c
index 23985c3..e50ad82 100644
--- a/fusl/src/math/log1pf.c
+++ b/fusl/src/math/log1pf.c
@@ -12,66 +12,67 @@
 
 #include "libm.h"
 
-static const float
-ln2_hi = 6.9313812256e-01, /* 0x3f317180 */
-ln2_lo = 9.0580006145e-06, /* 0x3717f7d1 */
-/* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */
-Lg1 = 0xaaaaaa.0p-24, /* 0.66666662693 */
-Lg2 = 0xccce13.0p-25, /* 0.40000972152 */
-Lg3 = 0x91e9ee.0p-25, /* 0.28498786688 */
-Lg4 = 0xf89e26.0p-26; /* 0.24279078841 */
+static const float ln2_hi = 6.9313812256e-01, /* 0x3f317180 */
+    ln2_lo = 9.0580006145e-06,                /* 0x3717f7d1 */
+    /* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */
+    Lg1 = 0xaaaaaa.0p-24, /* 0.66666662693 */
+    Lg2 = 0xccce13.0p-25, /* 0.40000972152 */
+    Lg3 = 0x91e9ee.0p-25, /* 0.28498786688 */
+    Lg4 = 0xf89e26.0p-26; /* 0.24279078841 */
 
-float log1pf(float x)
-{
-	union {float f; uint32_t i;} u = {x};
-	float_t hfsq,f,c,s,z,R,w,t1,t2,dk;
-	uint32_t ix,iu;
-	int k;
+float log1pf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  float_t hfsq, f, c, s, z, R, w, t1, t2, dk;
+  uint32_t ix, iu;
+  int k;
 
-	ix = u.i;
-	k = 1;
-	if (ix < 0x3ed413d0 || ix>>31) {  /* 1+x < sqrt(2)+  */
-		if (ix >= 0xbf800000) {  /* x <= -1.0 */
-			if (x == -1)
-				return x/0.0f; /* log1p(-1)=+inf */
-			return (x-x)/0.0f;     /* log1p(x<-1)=NaN */
-		}
-		if (ix<<1 < 0x33800000<<1) {   /* |x| < 2**-24 */
-			/* underflow if subnormal */
-			if ((ix&0x7f800000) == 0)
-				FORCE_EVAL(x*x);
-			return x;
-		}
-		if (ix <= 0xbe95f619) { /* sqrt(2)/2- <= 1+x < sqrt(2)+ */
-			k = 0;
-			c = 0;
-			f = x;
-		}
-	} else if (ix >= 0x7f800000)
-		return x;
-	if (k) {
-		u.f = 1 + x;
-		iu = u.i;
-		iu += 0x3f800000 - 0x3f3504f3;
-		k = (int)(iu>>23) - 0x7f;
-		/* correction term ~ log(1+x)-log(u), avoid underflow in c/u */
-		if (k < 25) {
-			c = k >= 2 ? 1-(u.f-x) : x-(u.f-1);
-			c /= u.f;
-		} else
-			c = 0;
-		/* reduce u into [sqrt(2)/2, sqrt(2)] */
-		iu = (iu&0x007fffff) + 0x3f3504f3;
-		u.i = iu;
-		f = u.f - 1;
-	}
-	s = f/(2.0f + f);
-	z = s*s;
-	w = z*z;
-	t1= w*(Lg2+w*Lg4);
-	t2= z*(Lg1+w*Lg3);
-	R = t2 + t1;
-	hfsq = 0.5f*f*f;
-	dk = k;
-	return s*(hfsq+R) + (dk*ln2_lo+c) - hfsq + f + dk*ln2_hi;
+  ix = u.i;
+  k = 1;
+  if (ix < 0x3ed413d0 || ix >> 31) { /* 1+x < sqrt(2)+  */
+    if (ix >= 0xbf800000) {          /* x <= -1.0 */
+      if (x == -1)
+        return x / 0.0f;     /* log1p(-1)=+inf */
+      return (x - x) / 0.0f; /* log1p(x<-1)=NaN */
+    }
+    if (ix << 1 < 0x33800000 << 1) { /* |x| < 2**-24 */
+      /* underflow if subnormal */
+      if ((ix & 0x7f800000) == 0)
+        FORCE_EVAL(x * x);
+      return x;
+    }
+    if (ix <= 0xbe95f619) { /* sqrt(2)/2- <= 1+x < sqrt(2)+ */
+      k = 0;
+      c = 0;
+      f = x;
+    }
+  } else if (ix >= 0x7f800000)
+    return x;
+  if (k) {
+    u.f = 1 + x;
+    iu = u.i;
+    iu += 0x3f800000 - 0x3f3504f3;
+    k = (int)(iu >> 23) - 0x7f;
+    /* correction term ~ log(1+x)-log(u), avoid underflow in c/u */
+    if (k < 25) {
+      c = k >= 2 ? 1 - (u.f - x) : x - (u.f - 1);
+      c /= u.f;
+    } else
+      c = 0;
+    /* reduce u into [sqrt(2)/2, sqrt(2)] */
+    iu = (iu & 0x007fffff) + 0x3f3504f3;
+    u.i = iu;
+    f = u.f - 1;
+  }
+  s = f / (2.0f + f);
+  z = s * s;
+  w = z * z;
+  t1 = w * (Lg2 + w * Lg4);
+  t2 = z * (Lg1 + w * Lg3);
+  R = t2 + t1;
+  hfsq = 0.5f * f * f;
+  dk = k;
+  return s * (hfsq + R) + (dk * ln2_lo + c) - hfsq + f + dk * ln2_hi;
 }
diff --git a/fusl/src/math/log1pl.c b/fusl/src/math/log1pl.c
index 141b5f0..2e070cb 100644
--- a/fusl/src/math/log1pl.c
+++ b/fusl/src/math/log1pl.c
@@ -51,9 +51,8 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double log1pl(long double x)
-{
-	return log1p(x);
+long double log1pl(long double x) {
+  return log1p(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
 /* Coefficients for log(1+x) = x - x^2 / 2 + x^3 P(x)/Q(x)
@@ -61,22 +60,16 @@
  * Theoretical peak relative error = 2.32e-20
  */
 static const long double P[] = {
- 4.5270000862445199635215E-5L,
- 4.9854102823193375972212E-1L,
- 6.5787325942061044846969E0L,
- 2.9911919328553073277375E1L,
- 6.0949667980987787057556E1L,
- 5.7112963590585538103336E1L,
- 2.0039553499201281259648E1L,
+    4.5270000862445199635215E-5L, 4.9854102823193375972212E-1L,
+    6.5787325942061044846969E0L,  2.9911919328553073277375E1L,
+    6.0949667980987787057556E1L,  5.7112963590585538103336E1L,
+    2.0039553499201281259648E1L,
 };
 static const long double Q[] = {
-/* 1.0000000000000000000000E0,*/
- 1.5062909083469192043167E1L,
- 8.3047565967967209469434E1L,
- 2.2176239823732856465394E2L,
- 3.0909872225312059774938E2L,
- 2.1642788614495947685003E2L,
- 6.0118660497603843919306E1L,
+    /* 1.0000000000000000000000E0,*/
+    1.5062909083469192043167E1L, 8.3047565967967209469434E1L,
+    2.2176239823732856465394E2L, 3.0909872225312059774938E2L,
+    2.1642788614495947685003E2L, 6.0118660497603843919306E1L,
 };
 
 /* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2),
@@ -85,93 +78,88 @@
  * Theoretical peak relative error = 6.16e-22
  */
 static const long double R[4] = {
- 1.9757429581415468984296E-3L,
--7.1990767473014147232598E-1L,
- 1.0777257190312272158094E1L,
--3.5717684488096787370998E1L,
+    1.9757429581415468984296E-3L, -7.1990767473014147232598E-1L,
+    1.0777257190312272158094E1L, -3.5717684488096787370998E1L,
 };
 static const long double S[4] = {
-/* 1.00000000000000000000E0L,*/
--2.6201045551331104417768E1L,
- 1.9361891836232102174846E2L,
--4.2861221385716144629696E2L,
+    /* 1.00000000000000000000E0L,*/
+    -2.6201045551331104417768E1L, 1.9361891836232102174846E2L,
+    -4.2861221385716144629696E2L,
 };
 static const long double C1 = 6.9314575195312500000000E-1L;
 static const long double C2 = 1.4286068203094172321215E-6L;
 
 #define SQRTH 0.70710678118654752440L
 
-long double log1pl(long double xm1)
-{
-	long double x, y, z;
-	int e;
+long double log1pl(long double xm1) {
+  long double x, y, z;
+  int e;
 
-	if (isnan(xm1))
-		return xm1;
-	if (xm1 == INFINITY)
-		return xm1;
-	if (xm1 == 0.0)
-		return xm1;
+  if (isnan(xm1))
+    return xm1;
+  if (xm1 == INFINITY)
+    return xm1;
+  if (xm1 == 0.0)
+    return xm1;
 
-	x = xm1 + 1.0;
+  x = xm1 + 1.0;
 
-	/* Test for domain errors.  */
-	if (x <= 0.0) {
-		if (x == 0.0)
-			return -1/(x*x); /* -inf with divbyzero */
-		return 0/0.0f; /* nan with invalid */
-	}
+  /* Test for domain errors.  */
+  if (x <= 0.0) {
+    if (x == 0.0)
+      return -1 / (x * x); /* -inf with divbyzero */
+    return 0 / 0.0f;       /* nan with invalid */
+  }
 
-	/* Separate mantissa from exponent.
-	   Use frexp so that denormal numbers will be handled properly.  */
-	x = frexpl(x, &e);
+  /* Separate mantissa from exponent.
+     Use frexp so that denormal numbers will be handled properly.  */
+  x = frexpl(x, &e);
 
-	/* logarithm using log(x) = z + z^3 P(z)/Q(z),
-	   where z = 2(x-1)/x+1)  */
-	if (e > 2 || e < -2) {
-		if (x < SQRTH) { /* 2(2x-1)/(2x+1) */
-			e -= 1;
-			z = x - 0.5;
-			y = 0.5 * z + 0.5;
-		} else { /*  2 (x-1)/(x+1)   */
-			z = x - 0.5;
-			z -= 0.5;
-			y = 0.5 * x  + 0.5;
-		}
-		x = z / y;
-		z = x*x;
-		z = x * (z * __polevll(z, R, 3) / __p1evll(z, S, 3));
-		z = z + e * C2;
-		z = z + x;
-		z = z + e * C1;
-		return z;
-	}
+  /* logarithm using log(x) = z + z^3 P(z)/Q(z),
+     where z = 2(x-1)/x+1)  */
+  if (e > 2 || e < -2) {
+    if (x < SQRTH) { /* 2(2x-1)/(2x+1) */
+      e -= 1;
+      z = x - 0.5;
+      y = 0.5 * z + 0.5;
+    } else { /*  2 (x-1)/(x+1)   */
+      z = x - 0.5;
+      z -= 0.5;
+      y = 0.5 * x + 0.5;
+    }
+    x = z / y;
+    z = x * x;
+    z = x * (z * __polevll(z, R, 3) / __p1evll(z, S, 3));
+    z = z + e * C2;
+    z = z + x;
+    z = z + e * C1;
+    return z;
+  }
 
-	/* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */
-	if (x < SQRTH) {
-		e -= 1;
-		if (e != 0)
-			x = 2.0 * x - 1.0;
-		else
-			x = xm1;
-	} else {
-		if (e != 0)
-			x = x - 1.0;
-		else
-			x = xm1;
-	}
-	z = x*x;
-	y = x * (z * __polevll(x, P, 6) / __p1evll(x, Q, 6));
-	y = y + e * C2;
-	z = y - 0.5 * z;
-	z = z + x;
-	z = z + e * C1;
-	return z;
+  /* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */
+  if (x < SQRTH) {
+    e -= 1;
+    if (e != 0)
+      x = 2.0 * x - 1.0;
+    else
+      x = xm1;
+  } else {
+    if (e != 0)
+      x = x - 1.0;
+    else
+      x = xm1;
+  }
+  z = x * x;
+  y = x * (z * __polevll(x, P, 6) / __p1evll(x, Q, 6));
+  y = y + e * C2;
+  z = y - 0.5 * z;
+  z = z + x;
+  z = z + e * C1;
+  return z;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-long double log1pl(long double x)
-{
-	return log1p(x);
+long double log1pl(long double x) {
+  return log1p(x);
 }
 #endif
diff --git a/fusl/src/math/log2.c b/fusl/src/math/log2.c
index 0aafad4..1ee2ea0 100644
--- a/fusl/src/math/log2.c
+++ b/fusl/src/math/log2.c
@@ -20,103 +20,105 @@
 #include <math.h>
 #include <stdint.h>
 
-static const double
-ivln2hi = 1.44269504072144627571e+00, /* 0x3ff71547, 0x65200000 */
-ivln2lo = 1.67517131648865118353e-10, /* 0x3de705fc, 0x2eefa200 */
-Lg1 = 6.666666666666735130e-01,  /* 3FE55555 55555593 */
-Lg2 = 3.999999999940941908e-01,  /* 3FD99999 9997FA04 */
-Lg3 = 2.857142874366239149e-01,  /* 3FD24924 94229359 */
-Lg4 = 2.222219843214978396e-01,  /* 3FCC71C5 1D8E78AF */
-Lg5 = 1.818357216161805012e-01,  /* 3FC74664 96CB03DE */
-Lg6 = 1.531383769920937332e-01,  /* 3FC39A09 D078C69F */
-Lg7 = 1.479819860511658591e-01;  /* 3FC2F112 DF3E5244 */
+static const double ivln2hi =
+                        1.44269504072144627571e+00, /* 0x3ff71547, 0x65200000 */
+    ivln2lo = 1.67517131648865118353e-10,           /* 0x3de705fc, 0x2eefa200 */
+    Lg1 = 6.666666666666735130e-01,                 /* 3FE55555 55555593 */
+    Lg2 = 3.999999999940941908e-01,                 /* 3FD99999 9997FA04 */
+    Lg3 = 2.857142874366239149e-01,                 /* 3FD24924 94229359 */
+    Lg4 = 2.222219843214978396e-01,                 /* 3FCC71C5 1D8E78AF */
+    Lg5 = 1.818357216161805012e-01,                 /* 3FC74664 96CB03DE */
+    Lg6 = 1.531383769920937332e-01,                 /* 3FC39A09 D078C69F */
+    Lg7 = 1.479819860511658591e-01;                 /* 3FC2F112 DF3E5244 */
 
-double log2(double x)
-{
-	union {double f; uint64_t i;} u = {x};
-	double_t hfsq,f,s,z,R,w,t1,t2,y,hi,lo,val_hi,val_lo;
-	uint32_t hx;
-	int k;
+double log2(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  double_t hfsq, f, s, z, R, w, t1, t2, y, hi, lo, val_hi, val_lo;
+  uint32_t hx;
+  int k;
 
-	hx = u.i>>32;
-	k = 0;
-	if (hx < 0x00100000 || hx>>31) {
-		if (u.i<<1 == 0)
-			return -1/(x*x);  /* log(+-0)=-inf */
-		if (hx>>31)
-			return (x-x)/0.0; /* log(-#) = NaN */
-		/* subnormal number, scale x up */
-		k -= 54;
-		x *= 0x1p54;
-		u.f = x;
-		hx = u.i>>32;
-	} else if (hx >= 0x7ff00000) {
-		return x;
-	} else if (hx == 0x3ff00000 && u.i<<32 == 0)
-		return 0;
+  hx = u.i >> 32;
+  k = 0;
+  if (hx < 0x00100000 || hx >> 31) {
+    if (u.i << 1 == 0)
+      return -1 / (x * x); /* log(+-0)=-inf */
+    if (hx >> 31)
+      return (x - x) / 0.0; /* log(-#) = NaN */
+    /* subnormal number, scale x up */
+    k -= 54;
+    x *= 0x1p54;
+    u.f = x;
+    hx = u.i >> 32;
+  } else if (hx >= 0x7ff00000) {
+    return x;
+  } else if (hx == 0x3ff00000 && u.i << 32 == 0)
+    return 0;
 
-	/* reduce x into [sqrt(2)/2, sqrt(2)] */
-	hx += 0x3ff00000 - 0x3fe6a09e;
-	k += (int)(hx>>20) - 0x3ff;
-	hx = (hx&0x000fffff) + 0x3fe6a09e;
-	u.i = (uint64_t)hx<<32 | (u.i&0xffffffff);
-	x = u.f;
+  /* reduce x into [sqrt(2)/2, sqrt(2)] */
+  hx += 0x3ff00000 - 0x3fe6a09e;
+  k += (int)(hx >> 20) - 0x3ff;
+  hx = (hx & 0x000fffff) + 0x3fe6a09e;
+  u.i = (uint64_t)hx << 32 | (u.i & 0xffffffff);
+  x = u.f;
 
-	f = x - 1.0;
-	hfsq = 0.5*f*f;
-	s = f/(2.0+f);
-	z = s*s;
-	w = z*z;
-	t1 = w*(Lg2+w*(Lg4+w*Lg6));
-	t2 = z*(Lg1+w*(Lg3+w*(Lg5+w*Lg7)));
-	R = t2 + t1;
+  f = x - 1.0;
+  hfsq = 0.5 * f * f;
+  s = f / (2.0 + f);
+  z = s * s;
+  w = z * z;
+  t1 = w * (Lg2 + w * (Lg4 + w * Lg6));
+  t2 = z * (Lg1 + w * (Lg3 + w * (Lg5 + w * Lg7)));
+  R = t2 + t1;
 
-	/*
-	 * f-hfsq must (for args near 1) be evaluated in extra precision
-	 * to avoid a large cancellation when x is near sqrt(2) or 1/sqrt(2).
-	 * This is fairly efficient since f-hfsq only depends on f, so can
-	 * be evaluated in parallel with R.  Not combining hfsq with R also
-	 * keeps R small (though not as small as a true `lo' term would be),
-	 * so that extra precision is not needed for terms involving R.
-	 *
-	 * Compiler bugs involving extra precision used to break Dekker's
-	 * theorem for spitting f-hfsq as hi+lo, unless double_t was used
-	 * or the multi-precision calculations were avoided when double_t
-	 * has extra precision.  These problems are now automatically
-	 * avoided as a side effect of the optimization of combining the
-	 * Dekker splitting step with the clear-low-bits step.
-	 *
-	 * y must (for args near sqrt(2) and 1/sqrt(2)) be added in extra
-	 * precision to avoid a very large cancellation when x is very near
-	 * these values.  Unlike the above cancellations, this problem is
-	 * specific to base 2.  It is strange that adding +-1 is so much
-	 * harder than adding +-ln2 or +-log10_2.
-	 *
-	 * This uses Dekker's theorem to normalize y+val_hi, so the
-	 * compiler bugs are back in some configurations, sigh.  And I
-	 * don't want to used double_t to avoid them, since that gives a
-	 * pessimization and the support for avoiding the pessimization
-	 * is not yet available.
-	 *
-	 * The multi-precision calculations for the multiplications are
-	 * routine.
-	 */
+  /*
+   * f-hfsq must (for args near 1) be evaluated in extra precision
+   * to avoid a large cancellation when x is near sqrt(2) or 1/sqrt(2).
+   * This is fairly efficient since f-hfsq only depends on f, so can
+   * be evaluated in parallel with R.  Not combining hfsq with R also
+   * keeps R small (though not as small as a true `lo' term would be),
+   * so that extra precision is not needed for terms involving R.
+   *
+   * Compiler bugs involving extra precision used to break Dekker's
+   * theorem for spitting f-hfsq as hi+lo, unless double_t was used
+   * or the multi-precision calculations were avoided when double_t
+   * has extra precision.  These problems are now automatically
+   * avoided as a side effect of the optimization of combining the
+   * Dekker splitting step with the clear-low-bits step.
+   *
+   * y must (for args near sqrt(2) and 1/sqrt(2)) be added in extra
+   * precision to avoid a very large cancellation when x is very near
+   * these values.  Unlike the above cancellations, this problem is
+   * specific to base 2.  It is strange that adding +-1 is so much
+   * harder than adding +-ln2 or +-log10_2.
+   *
+   * This uses Dekker's theorem to normalize y+val_hi, so the
+   * compiler bugs are back in some configurations, sigh.  And I
+   * don't want to used double_t to avoid them, since that gives a
+   * pessimization and the support for avoiding the pessimization
+   * is not yet available.
+   *
+   * The multi-precision calculations for the multiplications are
+   * routine.
+   */
 
-	/* hi+lo = f - hfsq + s*(hfsq+R) ~ log(1+f) */
-	hi = f - hfsq;
-	u.f = hi;
-	u.i &= (uint64_t)-1<<32;
-	hi = u.f;
-	lo = f - hi - hfsq + s*(hfsq+R);
+  /* hi+lo = f - hfsq + s*(hfsq+R) ~ log(1+f) */
+  hi = f - hfsq;
+  u.f = hi;
+  u.i &= (uint64_t)-1 << 32;
+  hi = u.f;
+  lo = f - hi - hfsq + s * (hfsq + R);
 
-	val_hi = hi*ivln2hi;
-	val_lo = (lo+hi)*ivln2lo + lo*ivln2hi;
+  val_hi = hi * ivln2hi;
+  val_lo = (lo + hi) * ivln2lo + lo * ivln2hi;
 
-	/* spadd(val_hi, val_lo, y), except for not using double_t: */
-	y = k;
-	w = y + val_hi;
-	val_lo += (y - w) + val_hi;
-	val_hi = w;
+  /* spadd(val_hi, val_lo, y), except for not using double_t: */
+  y = k;
+  w = y + val_hi;
+  val_lo += (y - w) + val_hi;
+  val_hi = w;
 
-	return val_lo + val_hi;
+  return val_lo + val_hi;
 }
diff --git a/fusl/src/math/log2f.c b/fusl/src/math/log2f.c
index b3e305f..1e7e75a 100644
--- a/fusl/src/math/log2f.c
+++ b/fusl/src/math/log2f.c
@@ -16,59 +16,60 @@
 #include <math.h>
 #include <stdint.h>
 
-static const float
-ivln2hi =  1.4428710938e+00, /* 0x3fb8b000 */
-ivln2lo = -1.7605285393e-04, /* 0xb9389ad4 */
-/* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */
-Lg1 = 0xaaaaaa.0p-24, /* 0.66666662693 */
-Lg2 = 0xccce13.0p-25, /* 0.40000972152 */
-Lg3 = 0x91e9ee.0p-25, /* 0.28498786688 */
-Lg4 = 0xf89e26.0p-26; /* 0.24279078841 */
+static const float ivln2hi = 1.4428710938e+00, /* 0x3fb8b000 */
+    ivln2lo = -1.7605285393e-04,               /* 0xb9389ad4 */
+    /* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */
+    Lg1 = 0xaaaaaa.0p-24, /* 0.66666662693 */
+    Lg2 = 0xccce13.0p-25, /* 0.40000972152 */
+    Lg3 = 0x91e9ee.0p-25, /* 0.28498786688 */
+    Lg4 = 0xf89e26.0p-26; /* 0.24279078841 */
 
-float log2f(float x)
-{
-	union {float f; uint32_t i;} u = {x};
-	float_t hfsq,f,s,z,R,w,t1,t2,hi,lo;
-	uint32_t ix;
-	int k;
+float log2f(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  float_t hfsq, f, s, z, R, w, t1, t2, hi, lo;
+  uint32_t ix;
+  int k;
 
-	ix = u.i;
-	k = 0;
-	if (ix < 0x00800000 || ix>>31) {  /* x < 2**-126  */
-		if (ix<<1 == 0)
-			return -1/(x*x);  /* log(+-0)=-inf */
-		if (ix>>31)
-			return (x-x)/0.0f; /* log(-#) = NaN */
-		/* subnormal number, scale up x */
-		k -= 25;
-		x *= 0x1p25f;
-		u.f = x;
-		ix = u.i;
-	} else if (ix >= 0x7f800000) {
-		return x;
-	} else if (ix == 0x3f800000)
-		return 0;
+  ix = u.i;
+  k = 0;
+  if (ix < 0x00800000 || ix >> 31) { /* x < 2**-126  */
+    if (ix << 1 == 0)
+      return -1 / (x * x); /* log(+-0)=-inf */
+    if (ix >> 31)
+      return (x - x) / 0.0f; /* log(-#) = NaN */
+    /* subnormal number, scale up x */
+    k -= 25;
+    x *= 0x1p25f;
+    u.f = x;
+    ix = u.i;
+  } else if (ix >= 0x7f800000) {
+    return x;
+  } else if (ix == 0x3f800000)
+    return 0;
 
-	/* reduce x into [sqrt(2)/2, sqrt(2)] */
-	ix += 0x3f800000 - 0x3f3504f3;
-	k += (int)(ix>>23) - 0x7f;
-	ix = (ix&0x007fffff) + 0x3f3504f3;
-	u.i = ix;
-	x = u.f;
+  /* reduce x into [sqrt(2)/2, sqrt(2)] */
+  ix += 0x3f800000 - 0x3f3504f3;
+  k += (int)(ix >> 23) - 0x7f;
+  ix = (ix & 0x007fffff) + 0x3f3504f3;
+  u.i = ix;
+  x = u.f;
 
-	f = x - 1.0f;
-	s = f/(2.0f + f);
-	z = s*s;
-	w = z*z;
-	t1= w*(Lg2+w*Lg4);
-	t2= z*(Lg1+w*Lg3);
-	R = t2 + t1;
-	hfsq = 0.5f*f*f;
+  f = x - 1.0f;
+  s = f / (2.0f + f);
+  z = s * s;
+  w = z * z;
+  t1 = w * (Lg2 + w * Lg4);
+  t2 = z * (Lg1 + w * Lg3);
+  R = t2 + t1;
+  hfsq = 0.5f * f * f;
 
-	hi = f - hfsq;
-	u.f = hi;
-	u.i &= 0xfffff000;
-	hi = u.f;
-	lo = f - hi - hfsq + s*(hfsq+R);
-	return (lo+hi)*ivln2lo + lo*ivln2hi + hi*ivln2hi + k;
+  hi = f - hfsq;
+  u.f = hi;
+  u.i &= 0xfffff000;
+  hi = u.f;
+  lo = f - hi - hfsq + s * (hfsq + R);
+  return (lo + hi) * ivln2lo + lo * ivln2hi + hi * ivln2hi + k;
 }
diff --git a/fusl/src/math/log2l.c b/fusl/src/math/log2l.c
index 722b451..5041251 100644
--- a/fusl/src/math/log2l.c
+++ b/fusl/src/math/log2l.c
@@ -55,9 +55,8 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double log2l(long double x)
-{
-	return log2(x);
+long double log2l(long double x) {
+  return log2(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
 /* Coefficients for ln(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
@@ -65,23 +64,17 @@
  * Theoretical peak relative error = 6.2e-22
  */
 static const long double P[] = {
- 4.9962495940332550844739E-1L,
- 1.0767376367209449010438E1L,
- 7.7671073698359539859595E1L,
- 2.5620629828144409632571E2L,
- 4.2401812743503691187826E2L,
- 3.4258224542413922935104E2L,
- 1.0747524399916215149070E2L,
+    4.9962495940332550844739E-1L, 1.0767376367209449010438E1L,
+    7.7671073698359539859595E1L,  2.5620629828144409632571E2L,
+    4.2401812743503691187826E2L,  3.4258224542413922935104E2L,
+    1.0747524399916215149070E2L,
 };
 static const long double Q[] = {
-/* 1.0000000000000000000000E0,*/
- 2.3479774160285863271658E1L,
- 1.9444210022760132894510E2L,
- 7.7952888181207260646090E2L,
- 1.6911722418503949084863E3L,
- 2.0307734695595183428202E3L,
- 1.2695660352705325274404E3L,
- 3.2242573199748645407652E2L,
+    /* 1.0000000000000000000000E0,*/
+    2.3479774160285863271658E1L, 1.9444210022760132894510E2L,
+    7.7952888181207260646090E2L, 1.6911722418503949084863E3L,
+    2.0307734695595183428202E3L, 1.2695660352705325274404E3L,
+    3.2242573199748645407652E2L,
 };
 
 /* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2),
@@ -90,93 +83,88 @@
  * Theoretical peak relative error = 6.16e-22
  */
 static const long double R[4] = {
- 1.9757429581415468984296E-3L,
--7.1990767473014147232598E-1L,
- 1.0777257190312272158094E1L,
--3.5717684488096787370998E1L,
+    1.9757429581415468984296E-3L, -7.1990767473014147232598E-1L,
+    1.0777257190312272158094E1L, -3.5717684488096787370998E1L,
 };
 static const long double S[4] = {
-/* 1.00000000000000000000E0L,*/
--2.6201045551331104417768E1L,
- 1.9361891836232102174846E2L,
--4.2861221385716144629696E2L,
+    /* 1.00000000000000000000E0L,*/
+    -2.6201045551331104417768E1L, 1.9361891836232102174846E2L,
+    -4.2861221385716144629696E2L,
 };
 /* log2(e) - 1 */
 #define LOG2EA 4.4269504088896340735992e-1L
 
 #define SQRTH 0.70710678118654752440L
 
-long double log2l(long double x)
-{
-	long double y, z;
-	int e;
+long double log2l(long double x) {
+  long double y, z;
+  int e;
 
-	if (isnan(x))
-		return x;
-	if (x == INFINITY)
-		return x;
-	if (x <= 0.0) {
-		if (x == 0.0)
-			return -1/(x*x); /* -inf with divbyzero */
-		return 0/0.0f; /* nan with invalid */
-	}
+  if (isnan(x))
+    return x;
+  if (x == INFINITY)
+    return x;
+  if (x <= 0.0) {
+    if (x == 0.0)
+      return -1 / (x * x); /* -inf with divbyzero */
+    return 0 / 0.0f;       /* nan with invalid */
+  }
 
-	/* separate mantissa from exponent */
-	/* Note, frexp is used so that denormal numbers
-	 * will be handled properly.
-	 */
-	x = frexpl(x, &e);
+  /* separate mantissa from exponent */
+  /* Note, frexp is used so that denormal numbers
+   * will be handled properly.
+   */
+  x = frexpl(x, &e);
 
-	/* logarithm using log(x) = z + z**3 P(z)/Q(z),
-	 * where z = 2(x-1)/x+1)
-	 */
-	if (e > 2 || e < -2) {
-		if (x < SQRTH) {  /* 2(2x-1)/(2x+1) */
-			e -= 1;
-			z = x - 0.5;
-			y = 0.5 * z + 0.5;
-		} else {  /*  2 (x-1)/(x+1)   */
-			z = x - 0.5;
-			z -= 0.5;
-			y = 0.5 * x + 0.5;
-		}
-		x = z / y;
-		z = x*x;
-		y = x * (z * __polevll(z, R, 3) / __p1evll(z, S, 3));
-		goto done;
-	}
+  /* logarithm using log(x) = z + z**3 P(z)/Q(z),
+   * where z = 2(x-1)/x+1)
+   */
+  if (e > 2 || e < -2) {
+    if (x < SQRTH) { /* 2(2x-1)/(2x+1) */
+      e -= 1;
+      z = x - 0.5;
+      y = 0.5 * z + 0.5;
+    } else { /*  2 (x-1)/(x+1)   */
+      z = x - 0.5;
+      z -= 0.5;
+      y = 0.5 * x + 0.5;
+    }
+    x = z / y;
+    z = x * x;
+    y = x * (z * __polevll(z, R, 3) / __p1evll(z, S, 3));
+    goto done;
+  }
 
-	/* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */
-	if (x < SQRTH) {
-		e -= 1;
-		x = 2.0*x - 1.0;
-	} else {
-		x = x - 1.0;
-	}
-	z = x*x;
-	y = x * (z * __polevll(x, P, 6) / __p1evll(x, Q, 7));
-	y = y - 0.5*z;
+  /* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */
+  if (x < SQRTH) {
+    e -= 1;
+    x = 2.0 * x - 1.0;
+  } else {
+    x = x - 1.0;
+  }
+  z = x * x;
+  y = x * (z * __polevll(x, P, 6) / __p1evll(x, Q, 7));
+  y = y - 0.5 * z;
 
 done:
-	/* Multiply log of fraction by log2(e)
-	 * and base 2 exponent by 1
-	 *
-	 * ***CAUTION***
-	 *
-	 * This sequence of operations is critical and it may
-	 * be horribly defeated by some compiler optimizers.
-	 */
-	z = y * LOG2EA;
-	z += x * LOG2EA;
-	z += y;
-	z += x;
-	z += e;
-	return z;
+  /* Multiply log of fraction by log2(e)
+   * and base 2 exponent by 1
+   *
+   * ***CAUTION***
+   *
+   * This sequence of operations is critical and it may
+   * be horribly defeated by some compiler optimizers.
+   */
+  z = y * LOG2EA;
+  z += x * LOG2EA;
+  z += y;
+  z += x;
+  z += e;
+  return z;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-long double log2l(long double x)
-{
-	return log2(x);
+long double log2l(long double x) {
+  return log2(x);
 }
 #endif
diff --git a/fusl/src/math/logb.c b/fusl/src/math/logb.c
index 7f8bdfa..bff5101 100644
--- a/fusl/src/math/logb.c
+++ b/fusl/src/math/logb.c
@@ -2,16 +2,15 @@
 
 /*
 special cases:
-	logb(+-0) = -inf, and raise divbyzero
-	logb(+-inf) = +inf
-	logb(nan) = nan
+        logb(+-0) = -inf, and raise divbyzero
+        logb(+-inf) = +inf
+        logb(nan) = nan
 */
 
-double logb(double x)
-{
-	if (!isfinite(x))
-		return x * x;
-	if (x == 0)
-		return -1/(x*x);
-	return ilogb(x);
+double logb(double x) {
+  if (!isfinite(x))
+    return x * x;
+  if (x == 0)
+    return -1 / (x * x);
+  return ilogb(x);
 }
diff --git a/fusl/src/math/logbf.c b/fusl/src/math/logbf.c
index a0a0b5e..9c42fc7 100644
--- a/fusl/src/math/logbf.c
+++ b/fusl/src/math/logbf.c
@@ -1,10 +1,9 @@
 #include <math.h>
 
-float logbf(float x)
-{
-	if (!isfinite(x))
-		return x * x;
-	if (x == 0)
-		return -1/(x*x);
-	return ilogbf(x);
+float logbf(float x) {
+  if (!isfinite(x))
+    return x * x;
+  if (x == 0)
+    return -1 / (x * x);
+  return ilogbf(x);
 }
diff --git a/fusl/src/math/logbl.c b/fusl/src/math/logbl.c
index 962973a..cfb84c5 100644
--- a/fusl/src/math/logbl.c
+++ b/fusl/src/math/logbl.c
@@ -1,16 +1,14 @@
 #include <math.h>
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double logbl(long double x)
-{
-	return logb(x);
+long double logbl(long double x) {
+  return logb(x);
 }
 #else
-long double logbl(long double x)
-{
-	if (!isfinite(x))
-		return x * x;
-	if (x == 0)
-		return -1/(x*x);
-	return ilogbl(x);
+long double logbl(long double x) {
+  if (!isfinite(x))
+    return x * x;
+  if (x == 0)
+    return -1 / (x * x);
+  return ilogbl(x);
 }
 #endif
diff --git a/fusl/src/math/logf.c b/fusl/src/math/logf.c
index 52230a1..ae5e6ba 100644
--- a/fusl/src/math/logf.c
+++ b/fusl/src/math/logf.c
@@ -16,54 +16,55 @@
 #include <math.h>
 #include <stdint.h>
 
-static const float
-ln2_hi = 6.9313812256e-01, /* 0x3f317180 */
-ln2_lo = 9.0580006145e-06, /* 0x3717f7d1 */
-/* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */
-Lg1 = 0xaaaaaa.0p-24, /* 0.66666662693 */
-Lg2 = 0xccce13.0p-25, /* 0.40000972152 */
-Lg3 = 0x91e9ee.0p-25, /* 0.28498786688 */
-Lg4 = 0xf89e26.0p-26; /* 0.24279078841 */
+static const float ln2_hi = 6.9313812256e-01, /* 0x3f317180 */
+    ln2_lo = 9.0580006145e-06,                /* 0x3717f7d1 */
+    /* |(log(1+s)-log(1-s))/s - Lg(s)| < 2**-34.24 (~[-4.95e-11, 4.97e-11]). */
+    Lg1 = 0xaaaaaa.0p-24, /* 0.66666662693 */
+    Lg2 = 0xccce13.0p-25, /* 0.40000972152 */
+    Lg3 = 0x91e9ee.0p-25, /* 0.28498786688 */
+    Lg4 = 0xf89e26.0p-26; /* 0.24279078841 */
 
-float logf(float x)
-{
-	union {float f; uint32_t i;} u = {x};
-	float_t hfsq,f,s,z,R,w,t1,t2,dk;
-	uint32_t ix;
-	int k;
+float logf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  float_t hfsq, f, s, z, R, w, t1, t2, dk;
+  uint32_t ix;
+  int k;
 
-	ix = u.i;
-	k = 0;
-	if (ix < 0x00800000 || ix>>31) {  /* x < 2**-126  */
-		if (ix<<1 == 0)
-			return -1/(x*x);  /* log(+-0)=-inf */
-		if (ix>>31)
-			return (x-x)/0.0f; /* log(-#) = NaN */
-		/* subnormal number, scale up x */
-		k -= 25;
-		x *= 0x1p25f;
-		u.f = x;
-		ix = u.i;
-	} else if (ix >= 0x7f800000) {
-		return x;
-	} else if (ix == 0x3f800000)
-		return 0;
+  ix = u.i;
+  k = 0;
+  if (ix < 0x00800000 || ix >> 31) { /* x < 2**-126  */
+    if (ix << 1 == 0)
+      return -1 / (x * x); /* log(+-0)=-inf */
+    if (ix >> 31)
+      return (x - x) / 0.0f; /* log(-#) = NaN */
+    /* subnormal number, scale up x */
+    k -= 25;
+    x *= 0x1p25f;
+    u.f = x;
+    ix = u.i;
+  } else if (ix >= 0x7f800000) {
+    return x;
+  } else if (ix == 0x3f800000)
+    return 0;
 
-	/* reduce x into [sqrt(2)/2, sqrt(2)] */
-	ix += 0x3f800000 - 0x3f3504f3;
-	k += (int)(ix>>23) - 0x7f;
-	ix = (ix&0x007fffff) + 0x3f3504f3;
-	u.i = ix;
-	x = u.f;
+  /* reduce x into [sqrt(2)/2, sqrt(2)] */
+  ix += 0x3f800000 - 0x3f3504f3;
+  k += (int)(ix >> 23) - 0x7f;
+  ix = (ix & 0x007fffff) + 0x3f3504f3;
+  u.i = ix;
+  x = u.f;
 
-	f = x - 1.0f;
-	s = f/(2.0f + f);
-	z = s*s;
-	w = z*z;
-	t1= w*(Lg2+w*Lg4);
-	t2= z*(Lg1+w*Lg3);
-	R = t2 + t1;
-	hfsq = 0.5f*f*f;
-	dk = k;
-	return s*(hfsq+R) + dk*ln2_lo - hfsq + f + dk*ln2_hi;
+  f = x - 1.0f;
+  s = f / (2.0f + f);
+  z = s * s;
+  w = z * z;
+  t1 = w * (Lg2 + w * Lg4);
+  t2 = z * (Lg1 + w * Lg3);
+  R = t2 + t1;
+  hfsq = 0.5f * f * f;
+  dk = k;
+  return s * (hfsq + R) + dk * ln2_lo - hfsq + f + dk * ln2_hi;
 }
diff --git a/fusl/src/math/logl.c b/fusl/src/math/logl.c
index 5d53659..b01c9e6 100644
--- a/fusl/src/math/logl.c
+++ b/fusl/src/math/logl.c
@@ -55,9 +55,8 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double logl(long double x)
-{
-	return log(x);
+long double logl(long double x) {
+  return log(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
 /* Coefficients for log(1+x) = x - x**2/2 + x**3 P(x)/Q(x)
@@ -65,22 +64,16 @@
  * Theoretical peak relative error = 2.32e-20
  */
 static const long double P[] = {
- 4.5270000862445199635215E-5L,
- 4.9854102823193375972212E-1L,
- 6.5787325942061044846969E0L,
- 2.9911919328553073277375E1L,
- 6.0949667980987787057556E1L,
- 5.7112963590585538103336E1L,
- 2.0039553499201281259648E1L,
+    4.5270000862445199635215E-5L, 4.9854102823193375972212E-1L,
+    6.5787325942061044846969E0L,  2.9911919328553073277375E1L,
+    6.0949667980987787057556E1L,  5.7112963590585538103336E1L,
+    2.0039553499201281259648E1L,
 };
 static const long double Q[] = {
-/* 1.0000000000000000000000E0,*/
- 1.5062909083469192043167E1L,
- 8.3047565967967209469434E1L,
- 2.2176239823732856465394E2L,
- 3.0909872225312059774938E2L,
- 2.1642788614495947685003E2L,
- 6.0118660497603843919306E1L,
+    /* 1.0000000000000000000000E0,*/
+    1.5062909083469192043167E1L, 8.3047565967967209469434E1L,
+    2.2176239823732856465394E2L, 3.0909872225312059774938E2L,
+    2.1642788614495947685003E2L, 6.0118660497603843919306E1L,
 };
 
 /* Coefficients for log(x) = z + z^3 P(z^2)/Q(z^2),
@@ -89,87 +82,82 @@
  * Theoretical peak relative error = 6.16e-22
  */
 static const long double R[4] = {
- 1.9757429581415468984296E-3L,
--7.1990767473014147232598E-1L,
- 1.0777257190312272158094E1L,
--3.5717684488096787370998E1L,
+    1.9757429581415468984296E-3L, -7.1990767473014147232598E-1L,
+    1.0777257190312272158094E1L, -3.5717684488096787370998E1L,
 };
 static const long double S[4] = {
-/* 1.00000000000000000000E0L,*/
--2.6201045551331104417768E1L,
- 1.9361891836232102174846E2L,
--4.2861221385716144629696E2L,
+    /* 1.00000000000000000000E0L,*/
+    -2.6201045551331104417768E1L, 1.9361891836232102174846E2L,
+    -4.2861221385716144629696E2L,
 };
 static const long double C1 = 6.9314575195312500000000E-1L;
 static const long double C2 = 1.4286068203094172321215E-6L;
 
 #define SQRTH 0.70710678118654752440L
 
-long double logl(long double x)
-{
-	long double y, z;
-	int e;
+long double logl(long double x) {
+  long double y, z;
+  int e;
 
-	if (isnan(x))
-		return x;
-	if (x == INFINITY)
-		return x;
-	if (x <= 0.0) {
-		if (x == 0.0)
-			return -1/(x*x); /* -inf with divbyzero */
-		return 0/0.0f; /* nan with invalid */
-	}
+  if (isnan(x))
+    return x;
+  if (x == INFINITY)
+    return x;
+  if (x <= 0.0) {
+    if (x == 0.0)
+      return -1 / (x * x); /* -inf with divbyzero */
+    return 0 / 0.0f;       /* nan with invalid */
+  }
 
-	/* separate mantissa from exponent */
-	/* Note, frexp is used so that denormal numbers
-	 * will be handled properly.
-	 */
-	x = frexpl(x, &e);
+  /* separate mantissa from exponent */
+  /* Note, frexp is used so that denormal numbers
+   * will be handled properly.
+   */
+  x = frexpl(x, &e);
 
-	/* logarithm using log(x) = z + z**3 P(z)/Q(z),
-	 * where z = 2(x-1)/(x+1)
-	 */
-	if (e > 2 || e < -2) {
-		if (x < SQRTH) {  /* 2(2x-1)/(2x+1) */
-			e -= 1;
-			z = x - 0.5;
-			y = 0.5 * z + 0.5;
-		} else {  /*  2 (x-1)/(x+1)   */
-			z = x - 0.5;
-			z -= 0.5;
-			y = 0.5 * x  + 0.5;
-		}
-		x = z / y;
-		z = x*x;
-		z = x * (z * __polevll(z, R, 3) / __p1evll(z, S, 3));
-		z = z + e * C2;
-		z = z + x;
-		z = z + e * C1;
-		return z;
-	}
+  /* logarithm using log(x) = z + z**3 P(z)/Q(z),
+   * where z = 2(x-1)/(x+1)
+   */
+  if (e > 2 || e < -2) {
+    if (x < SQRTH) { /* 2(2x-1)/(2x+1) */
+      e -= 1;
+      z = x - 0.5;
+      y = 0.5 * z + 0.5;
+    } else { /*  2 (x-1)/(x+1)   */
+      z = x - 0.5;
+      z -= 0.5;
+      y = 0.5 * x + 0.5;
+    }
+    x = z / y;
+    z = x * x;
+    z = x * (z * __polevll(z, R, 3) / __p1evll(z, S, 3));
+    z = z + e * C2;
+    z = z + x;
+    z = z + e * C1;
+    return z;
+  }
 
-	/* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */
-	if (x < SQRTH) {
-		e -= 1;
-		x = 2.0*x - 1.0;
-	} else {
-		x = x - 1.0;
-	}
-	z = x*x;
-	y = x * (z * __polevll(x, P, 6) / __p1evll(x, Q, 6));
-	y = y + e * C2;
-	z = y - 0.5*z;
-	/* Note, the sum of above terms does not exceed x/4,
-	 * so it contributes at most about 1/4 lsb to the error.
-	 */
-	z = z + x;
-	z = z + e * C1; /* This sum has an error of 1/2 lsb. */
-	return z;
+  /* logarithm using log(1+x) = x - .5x**2 + x**3 P(x)/Q(x) */
+  if (x < SQRTH) {
+    e -= 1;
+    x = 2.0 * x - 1.0;
+  } else {
+    x = x - 1.0;
+  }
+  z = x * x;
+  y = x * (z * __polevll(x, P, 6) / __p1evll(x, Q, 6));
+  y = y + e * C2;
+  z = y - 0.5 * z;
+  /* Note, the sum of above terms does not exceed x/4,
+   * so it contributes at most about 1/4 lsb to the error.
+   */
+  z = z + x;
+  z = z + e * C1; /* This sum has an error of 1/2 lsb. */
+  return z;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-long double logl(long double x)
-{
-	return log(x);
+long double logl(long double x) {
+  return log(x);
 }
 #endif
diff --git a/fusl/src/math/lrint.c b/fusl/src/math/lrint.c
index bdca8b7..9df34eb 100644
--- a/fusl/src/math/lrint.c
+++ b/fusl/src/math/lrint.c
@@ -25,22 +25,20 @@
 as a double.
 */
 
-#if LONG_MAX < 1U<<53 && defined(FE_INEXACT)
-long lrint(double x)
-{
-	#pragma STDC FENV_ACCESS ON
-	int e;
+#if LONG_MAX < 1U << 53 && defined(FE_INEXACT)
+long lrint(double x) {
+#pragma STDC FENV_ACCESS ON
+  int e;
 
-	e = fetestexcept(FE_INEXACT);
-	x = rint(x);
-	if (!e && (x > LONG_MAX || x < LONG_MIN))
-		feclearexcept(FE_INEXACT);
-	/* conversion */
-	return x;
+  e = fetestexcept(FE_INEXACT);
+  x = rint(x);
+  if (!e && (x > LONG_MAX || x < LONG_MIN))
+    feclearexcept(FE_INEXACT);
+  /* conversion */
+  return x;
 }
 #else
-long lrint(double x)
-{
-	return rint(x);
+long lrint(double x) {
+  return rint(x);
 }
 #endif
diff --git a/fusl/src/math/lrintf.c b/fusl/src/math/lrintf.c
index ca0b6a4..f67deb6 100644
--- a/fusl/src/math/lrintf.c
+++ b/fusl/src/math/lrintf.c
@@ -2,7 +2,6 @@
 
 /* uses LONG_MAX > 2^24, see comments in lrint.c */
 
-long lrintf(float x)
-{
-	return rintf(x);
+long lrintf(float x) {
+  return rintf(x);
 }
diff --git a/fusl/src/math/lrintl.c b/fusl/src/math/lrintl.c
index 08cc1ab..36e4bfc 100644
--- a/fusl/src/math/lrintl.c
+++ b/fusl/src/math/lrintl.c
@@ -2,11 +2,9 @@
 #include <fenv.h>
 #include "libm.h"
 
-
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long lrintl(long double x)
-{
-	return lrint(x);
+long lrintl(long double x) {
+  return lrint(x);
 }
 #elif defined(FE_INEXACT)
 /*
@@ -16,21 +14,19 @@
 then x == 2**63 - 0.5 is the only input that overflows and
 raises inexact (with tonearest or upward rounding mode)
 */
-long lrintl(long double x)
-{
-	PRAGMA_STDC_FENV_ACCESS_ON
-	int e;
+long lrintl(long double x) {
+  PRAGMA_STDC_FENV_ACCESS_ON
+  int e;
 
-	e = fetestexcept(FE_INEXACT);
-	x = rintl(x);
-	if (!e && (x > LONG_MAX || x < LONG_MIN))
-		feclearexcept(FE_INEXACT);
-	/* conversion */
-	return x;
+  e = fetestexcept(FE_INEXACT);
+  x = rintl(x);
+  if (!e && (x > LONG_MAX || x < LONG_MIN))
+    feclearexcept(FE_INEXACT);
+  /* conversion */
+  return x;
 }
 #else
-long lrintl(long double x)
-{
-	return rintl(x);
+long lrintl(long double x) {
+  return rintl(x);
 }
 #endif
diff --git a/fusl/src/math/lround.c b/fusl/src/math/lround.c
index b8b7954..d283026 100644
--- a/fusl/src/math/lround.c
+++ b/fusl/src/math/lround.c
@@ -1,6 +1,5 @@
 #include <math.h>
 
-long lround(double x)
-{
-	return round(x);
+long lround(double x) {
+  return round(x);
 }
diff --git a/fusl/src/math/lroundf.c b/fusl/src/math/lroundf.c
index c4707e7..01178aa 100644
--- a/fusl/src/math/lroundf.c
+++ b/fusl/src/math/lroundf.c
@@ -1,6 +1,5 @@
 #include <math.h>
 
-long lroundf(float x)
-{
-	return roundf(x);
+long lroundf(float x) {
+  return roundf(x);
 }
diff --git a/fusl/src/math/lroundl.c b/fusl/src/math/lroundl.c
index 094fdf6..5bb9107 100644
--- a/fusl/src/math/lroundl.c
+++ b/fusl/src/math/lroundl.c
@@ -1,6 +1,5 @@
 #include <math.h>
 
-long lroundl(long double x)
-{
-	return roundl(x);
+long lroundl(long double x) {
+  return roundl(x);
 }
diff --git a/fusl/src/math/modf.c b/fusl/src/math/modf.c
index 1c8a1db..01a1941 100644
--- a/fusl/src/math/modf.c
+++ b/fusl/src/math/modf.c
@@ -1,34 +1,36 @@
 #include "libm.h"
 
-double modf(double x, double *iptr)
-{
-	union {double f; uint64_t i;} u = {x};
-	uint64_t mask;
-	int e = (int)(u.i>>52 & 0x7ff) - 0x3ff;
+double modf(double x, double* iptr) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  uint64_t mask;
+  int e = (int)(u.i >> 52 & 0x7ff) - 0x3ff;
 
-	/* no fractional part */
-	if (e >= 52) {
-		*iptr = x;
-		if (e == 0x400 && u.i<<12 != 0) /* nan */
-			return x;
-		u.i &= 1ULL<<63;
-		return u.f;
-	}
+  /* no fractional part */
+  if (e >= 52) {
+    *iptr = x;
+    if (e == 0x400 && u.i << 12 != 0) /* nan */
+      return x;
+    u.i &= 1ULL << 63;
+    return u.f;
+  }
 
-	/* no integral part*/
-	if (e < 0) {
-		u.i &= 1ULL<<63;
-		*iptr = u.f;
-		return x;
-	}
+  /* no integral part*/
+  if (e < 0) {
+    u.i &= 1ULL << 63;
+    *iptr = u.f;
+    return x;
+  }
 
-	mask = -1ULL>>12>>e;
-	if ((u.i & mask) == 0) {
-		*iptr = x;
-		u.i &= 1ULL<<63;
-		return u.f;
-	}
-	u.i &= ~mask;
-	*iptr = u.f;
-	return x - u.f;
+  mask = -1ULL >> 12 >> e;
+  if ((u.i & mask) == 0) {
+    *iptr = x;
+    u.i &= 1ULL << 63;
+    return u.f;
+  }
+  u.i &= ~mask;
+  *iptr = u.f;
+  return x - u.f;
 }
diff --git a/fusl/src/math/modff.c b/fusl/src/math/modff.c
index 639514e..eae990e 100644
--- a/fusl/src/math/modff.c
+++ b/fusl/src/math/modff.c
@@ -1,34 +1,36 @@
 #include "libm.h"
 
-float modff(float x, float *iptr)
-{
-	union {float f; uint32_t i;} u = {x};
-	uint32_t mask;
-	int e = (int)(u.i>>23 & 0xff) - 0x7f;
+float modff(float x, float* iptr) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  uint32_t mask;
+  int e = (int)(u.i >> 23 & 0xff) - 0x7f;
 
-	/* no fractional part */
-	if (e >= 23) {
-		*iptr = x;
-		if (e == 0x80 && u.i<<9 != 0) { /* nan */
-			return x;
-		}
-		u.i &= 0x80000000;
-		return u.f;
-	}
-	/* no integral part */
-	if (e < 0) {
-		u.i &= 0x80000000;
-		*iptr = u.f;
-		return x;
-	}
+  /* no fractional part */
+  if (e >= 23) {
+    *iptr = x;
+    if (e == 0x80 && u.i << 9 != 0) { /* nan */
+      return x;
+    }
+    u.i &= 0x80000000;
+    return u.f;
+  }
+  /* no integral part */
+  if (e < 0) {
+    u.i &= 0x80000000;
+    *iptr = u.f;
+    return x;
+  }
 
-	mask = 0x007fffff>>e;
-	if ((u.i & mask) == 0) {
-		*iptr = x;
-		u.i &= 0x80000000;
-		return u.f;
-	}
-	u.i &= ~mask;
-	*iptr = u.f;
-	return x - u.f;
+  mask = 0x007fffff >> e;
+  if ((u.i & mask) == 0) {
+    *iptr = x;
+    u.i &= 0x80000000;
+    return u.f;
+  }
+  u.i &= ~mask;
+  *iptr = u.f;
+  return x - u.f;
 }
diff --git a/fusl/src/math/modfl.c b/fusl/src/math/modfl.c
index a47b192..0736e96 100644
--- a/fusl/src/math/modfl.c
+++ b/fusl/src/math/modfl.c
@@ -1,53 +1,51 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double modfl(long double x, long double *iptr)
-{
-	double d;
-	long double r;
+long double modfl(long double x, long double* iptr) {
+  double d;
+  long double r;
 
-	r = modf(x, &d);
-	*iptr = d;
-	return r;
+  r = modf(x, &d);
+  *iptr = d;
+  return r;
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
 
-static const long double toint = 1/LDBL_EPSILON;
+static const long double toint = 1 / LDBL_EPSILON;
 
-long double modfl(long double x, long double *iptr)
-{
-	union ldshape u = {x};
-	int e = (u.i.se & 0x7fff) - 0x3fff;
-	int s = u.i.se >> 15;
-	long double absx;
-	long double y;
+long double modfl(long double x, long double* iptr) {
+  union ldshape u = {x};
+  int e = (u.i.se & 0x7fff) - 0x3fff;
+  int s = u.i.se >> 15;
+  long double absx;
+  long double y;
 
-	/* no fractional part */
-	if (e >= LDBL_MANT_DIG-1) {
-		*iptr = x;
-		if (isnan(x))
-			return x;
-		return s ? -0.0 : 0.0;
-	}
+  /* no fractional part */
+  if (e >= LDBL_MANT_DIG - 1) {
+    *iptr = x;
+    if (isnan(x))
+      return x;
+    return s ? -0.0 : 0.0;
+  }
 
-	/* no integral part*/
-	if (e < 0) {
-		*iptr = s ? -0.0 : 0.0;
-		return x;
-	}
+  /* no integral part*/
+  if (e < 0) {
+    *iptr = s ? -0.0 : 0.0;
+    return x;
+  }
 
-	/* raises spurious inexact */
-	absx = s ? -x : x;
-	y = absx + toint - toint - absx;
-	if (y == 0) {
-		*iptr = x;
-		return s ? -0.0 : 0.0;
-	}
-	if (y > 0)
-		y -= 1;
-	if (s)
-		y = -y;
-	*iptr = x + y;
-	return -y;
+  /* raises spurious inexact */
+  absx = s ? -x : x;
+  y = absx + toint - toint - absx;
+  if (y == 0) {
+    *iptr = x;
+    return s ? -0.0 : 0.0;
+  }
+  if (y > 0)
+    y -= 1;
+  if (s)
+    y = -y;
+  *iptr = x + y;
+  return -y;
 }
 #endif
diff --git a/fusl/src/math/nan.c b/fusl/src/math/nan.c
index 9e0826c..a25ee75 100644
--- a/fusl/src/math/nan.c
+++ b/fusl/src/math/nan.c
@@ -1,6 +1,5 @@
 #include <math.h>
 
-double nan(const char *s)
-{
-	return NAN;
+double nan(const char* s) {
+  return NAN;
 }
diff --git a/fusl/src/math/nanf.c b/fusl/src/math/nanf.c
index 752ce54..dafe127 100644
--- a/fusl/src/math/nanf.c
+++ b/fusl/src/math/nanf.c
@@ -1,6 +1,5 @@
 #include <math.h>
 
-float nanf(const char *s)
-{
-	return NAN;
+float nanf(const char* s) {
+  return NAN;
 }
diff --git a/fusl/src/math/nanl.c b/fusl/src/math/nanl.c
index 969af56..692645f 100644
--- a/fusl/src/math/nanl.c
+++ b/fusl/src/math/nanl.c
@@ -1,6 +1,5 @@
 #include <math.h>
 
-long double nanl(const char *s)
-{
-	return NAN;
+long double nanl(const char* s) {
+  return NAN;
 }
diff --git a/fusl/src/math/nearbyint.c b/fusl/src/math/nearbyint.c
index b1c867f..6fc574e 100644
--- a/fusl/src/math/nearbyint.c
+++ b/fusl/src/math/nearbyint.c
@@ -4,18 +4,17 @@
 
 /* nearbyint is the same as rint, but it must not raise the inexact exception */
 
-double nearbyint(double x)
-{
+double nearbyint(double x) {
 #ifdef FE_INEXACT
-	PRAGMA_STDC_FENV_ACCESS_ON
-	int e;
+  PRAGMA_STDC_FENV_ACCESS_ON
+  int e;
 
-	e = fetestexcept(FE_INEXACT);
+  e = fetestexcept(FE_INEXACT);
 #endif
-	x = rint(x);
+  x = rint(x);
 #ifdef FE_INEXACT
-	if (!e)
-		feclearexcept(FE_INEXACT);
+  if (!e)
+    feclearexcept(FE_INEXACT);
 #endif
-	return x;
+  return x;
 }
diff --git a/fusl/src/math/nearbyintf.c b/fusl/src/math/nearbyintf.c
index 7c0d374..d8dc470 100644
--- a/fusl/src/math/nearbyintf.c
+++ b/fusl/src/math/nearbyintf.c
@@ -2,18 +2,17 @@
 #include <math.h>
 #include "libm.h"
 
-float nearbyintf(float x)
-{
+float nearbyintf(float x) {
 #ifdef FE_INEXACT
-	PRAGMA_STDC_FENV_ACCESS_ON
-	int e;
+  PRAGMA_STDC_FENV_ACCESS_ON
+  int e;
 
-	e = fetestexcept(FE_INEXACT);
+  e = fetestexcept(FE_INEXACT);
 #endif
-	x = rintf(x);
+  x = rintf(x);
 #ifdef FE_INEXACT
-	if (!e)
-		feclearexcept(FE_INEXACT);
+  if (!e)
+    feclearexcept(FE_INEXACT);
 #endif
-	return x;
+  return x;
 }
diff --git a/fusl/src/math/nearbyintl.c b/fusl/src/math/nearbyintl.c
index 82aeadd..89f6700 100644
--- a/fusl/src/math/nearbyintl.c
+++ b/fusl/src/math/nearbyintl.c
@@ -3,25 +3,23 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double nearbyintl(long double x)
-{
-	return nearbyint(x);
+long double nearbyintl(long double x) {
+  return nearbyint(x);
 }
 #else
 #include <fenv.h>
-long double nearbyintl(long double x)
-{
+long double nearbyintl(long double x) {
 #ifdef FE_INEXACT
-	PRAGMA_STDC_FENV_ACCESS_ON
-	int e;
+  PRAGMA_STDC_FENV_ACCESS_ON
+  int e;
 
-	e = fetestexcept(FE_INEXACT);
+  e = fetestexcept(FE_INEXACT);
 #endif
-	x = rintl(x);
+  x = rintl(x);
 #ifdef FE_INEXACT
-	if (!e)
-		feclearexcept(FE_INEXACT);
+  if (!e)
+    feclearexcept(FE_INEXACT);
 #endif
-	return x;
+  return x;
 }
 #endif
diff --git a/fusl/src/math/nextafter.c b/fusl/src/math/nextafter.c
index ab5795a..8f51f95 100644
--- a/fusl/src/math/nextafter.c
+++ b/fusl/src/math/nextafter.c
@@ -1,31 +1,33 @@
 #include "libm.h"
 
-double nextafter(double x, double y)
-{
-	union {double f; uint64_t i;} ux={x}, uy={y};
-	uint64_t ax, ay;
-	int e;
+double nextafter(double x, double y) {
+  union {
+    double f;
+    uint64_t i;
+  } ux = {x}, uy = {y};
+  uint64_t ax, ay;
+  int e;
 
-	if (isnan(x) || isnan(y))
-		return x + y;
-	if (ux.i == uy.i)
-		return y;
-	ax = ux.i & -1ULL/2;
-	ay = uy.i & -1ULL/2;
-	if (ax == 0) {
-		if (ay == 0)
-			return y;
-		ux.i = (uy.i & 1ULL<<63) | 1;
-	} else if (ax > ay || ((ux.i ^ uy.i) & 1ULL<<63))
-		ux.i--;
-	else
-		ux.i++;
-	e = ux.i >> 52 & 0x7ff;
-	/* raise overflow if ux.f is infinite and x is finite */
-	if (e == 0x7ff)
-		FORCE_EVAL(x+x);
-	/* raise underflow if ux.f is subnormal or zero */
-	if (e == 0)
-		FORCE_EVAL(x*x + ux.f*ux.f);
-	return ux.f;
+  if (isnan(x) || isnan(y))
+    return x + y;
+  if (ux.i == uy.i)
+    return y;
+  ax = ux.i & -1ULL / 2;
+  ay = uy.i & -1ULL / 2;
+  if (ax == 0) {
+    if (ay == 0)
+      return y;
+    ux.i = (uy.i & 1ULL << 63) | 1;
+  } else if (ax > ay || ((ux.i ^ uy.i) & 1ULL << 63))
+    ux.i--;
+  else
+    ux.i++;
+  e = ux.i >> 52 & 0x7ff;
+  /* raise overflow if ux.f is infinite and x is finite */
+  if (e == 0x7ff)
+    FORCE_EVAL(x + x);
+  /* raise underflow if ux.f is subnormal or zero */
+  if (e == 0)
+    FORCE_EVAL(x * x + ux.f * ux.f);
+  return ux.f;
 }
diff --git a/fusl/src/math/nextafterf.c b/fusl/src/math/nextafterf.c
index 75a09f7..57ec9f0 100644
--- a/fusl/src/math/nextafterf.c
+++ b/fusl/src/math/nextafterf.c
@@ -1,30 +1,32 @@
 #include "libm.h"
 
-float nextafterf(float x, float y)
-{
-	union {float f; uint32_t i;} ux={x}, uy={y};
-	uint32_t ax, ay, e;
+float nextafterf(float x, float y) {
+  union {
+    float f;
+    uint32_t i;
+  } ux = {x}, uy = {y};
+  uint32_t ax, ay, e;
 
-	if (isnan(x) || isnan(y))
-		return x + y;
-	if (ux.i == uy.i)
-		return y;
-	ax = ux.i & 0x7fffffff;
-	ay = uy.i & 0x7fffffff;
-	if (ax == 0) {
-		if (ay == 0)
-			return y;
-		ux.i = (uy.i & 0x80000000) | 1;
-	} else if (ax > ay || ((ux.i ^ uy.i) & 0x80000000))
-		ux.i--;
-	else
-		ux.i++;
-	e = ux.i & 0x7f800000;
-	/* raise overflow if ux.f is infinite and x is finite */
-	if (e == 0x7f800000)
-		FORCE_EVAL(x+x);
-	/* raise underflow if ux.f is subnormal or zero */
-	if (e == 0)
-		FORCE_EVAL(x*x + ux.f*ux.f);
-	return ux.f;
+  if (isnan(x) || isnan(y))
+    return x + y;
+  if (ux.i == uy.i)
+    return y;
+  ax = ux.i & 0x7fffffff;
+  ay = uy.i & 0x7fffffff;
+  if (ax == 0) {
+    if (ay == 0)
+      return y;
+    ux.i = (uy.i & 0x80000000) | 1;
+  } else if (ax > ay || ((ux.i ^ uy.i) & 0x80000000))
+    ux.i--;
+  else
+    ux.i++;
+  e = ux.i & 0x7f800000;
+  /* raise overflow if ux.f is infinite and x is finite */
+  if (e == 0x7f800000)
+    FORCE_EVAL(x + x);
+  /* raise underflow if ux.f is subnormal or zero */
+  if (e == 0)
+    FORCE_EVAL(x * x + ux.f * ux.f);
+  return ux.f;
 }
diff --git a/fusl/src/math/nextafterl.c b/fusl/src/math/nextafterl.c
index 37e858f..3394b75 100644
--- a/fusl/src/math/nextafterl.c
+++ b/fusl/src/math/nextafterl.c
@@ -1,75 +1,72 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double nextafterl(long double x, long double y)
-{
-	return nextafter(x, y);
+long double nextafterl(long double x, long double y) {
+  return nextafter(x, y);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
-long double nextafterl(long double x, long double y)
-{
-	union ldshape ux, uy;
+long double nextafterl(long double x, long double y) {
+  union ldshape ux, uy;
 
-	if (isnan(x) || isnan(y))
-		return x + y;
-	if (x == y)
-		return y;
-	ux.f = x;
-	if (x == 0) {
-		uy.f = y;
-		ux.i.m = 1;
-		ux.i.se = uy.i.se & 0x8000;
-	} else if ((x < y) == !(ux.i.se & 0x8000)) {
-		ux.i.m++;
-		if (ux.i.m << 1 == 0) {
-			ux.i.m = 1ULL << 63;
-			ux.i.se++;
-		}
-	} else {
-		if (ux.i.m << 1 == 0) {
-			ux.i.se--;
-			if (ux.i.se)
-				ux.i.m = 0;
-		}
-		ux.i.m--;
-	}
-	/* raise overflow if ux is infinite and x is finite */
-	if ((ux.i.se & 0x7fff) == 0x7fff)
-		return x + x;
-	/* raise underflow if ux is subnormal or zero */
-	if ((ux.i.se & 0x7fff) == 0)
-		FORCE_EVAL(x*x + ux.f*ux.f);
-	return ux.f;
+  if (isnan(x) || isnan(y))
+    return x + y;
+  if (x == y)
+    return y;
+  ux.f = x;
+  if (x == 0) {
+    uy.f = y;
+    ux.i.m = 1;
+    ux.i.se = uy.i.se & 0x8000;
+  } else if ((x < y) == !(ux.i.se & 0x8000)) {
+    ux.i.m++;
+    if (ux.i.m << 1 == 0) {
+      ux.i.m = 1ULL << 63;
+      ux.i.se++;
+    }
+  } else {
+    if (ux.i.m << 1 == 0) {
+      ux.i.se--;
+      if (ux.i.se)
+        ux.i.m = 0;
+    }
+    ux.i.m--;
+  }
+  /* raise overflow if ux is infinite and x is finite */
+  if ((ux.i.se & 0x7fff) == 0x7fff)
+    return x + x;
+  /* raise underflow if ux is subnormal or zero */
+  if ((ux.i.se & 0x7fff) == 0)
+    FORCE_EVAL(x * x + ux.f * ux.f);
+  return ux.f;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
-long double nextafterl(long double x, long double y)
-{
-	union ldshape ux, uy;
+long double nextafterl(long double x, long double y) {
+  union ldshape ux, uy;
 
-	if (isnan(x) || isnan(y))
-		return x + y;
-	if (x == y)
-		return y;
-	ux.f = x;
-	if (x == 0) {
-		uy.f = y;
-		ux.i.lo = 1;
-		ux.i.se = uy.i.se & 0x8000;
-	} else if ((x < y) == !(ux.i.se & 0x8000)) {
-		ux.i2.lo++;
-		if (ux.i2.lo == 0)
-			ux.i2.hi++;
-	} else {
-		if (ux.i2.lo == 0)
-			ux.i2.hi--;
-		ux.i2.lo--;
-	}
-	/* raise overflow if ux is infinite and x is finite */
-	if ((ux.i.se & 0x7fff) == 0x7fff)
-		return x + x;
-	/* raise underflow if ux is subnormal or zero */
-	if ((ux.i.se & 0x7fff) == 0)
-		FORCE_EVAL(x*x + ux.f*ux.f);
-	return ux.f;
+  if (isnan(x) || isnan(y))
+    return x + y;
+  if (x == y)
+    return y;
+  ux.f = x;
+  if (x == 0) {
+    uy.f = y;
+    ux.i.lo = 1;
+    ux.i.se = uy.i.se & 0x8000;
+  } else if ((x < y) == !(ux.i.se & 0x8000)) {
+    ux.i2.lo++;
+    if (ux.i2.lo == 0)
+      ux.i2.hi++;
+  } else {
+    if (ux.i2.lo == 0)
+      ux.i2.hi--;
+    ux.i2.lo--;
+  }
+  /* raise overflow if ux is infinite and x is finite */
+  if ((ux.i.se & 0x7fff) == 0x7fff)
+    return x + x;
+  /* raise underflow if ux is subnormal or zero */
+  if ((ux.i.se & 0x7fff) == 0)
+    FORCE_EVAL(x * x + ux.f * ux.f);
+  return ux.f;
 }
 #endif
diff --git a/fusl/src/math/nexttoward.c b/fusl/src/math/nexttoward.c
index 827ee5c..7cdee83 100644
--- a/fusl/src/math/nexttoward.c
+++ b/fusl/src/math/nexttoward.c
@@ -1,42 +1,43 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-double nexttoward(double x, long double y)
-{
-	return nextafter(x, y);
+double nexttoward(double x, long double y) {
+  return nextafter(x, y);
 }
 #else
-double nexttoward(double x, long double y)
-{
-	union {double f; uint64_t i;} ux = {x};
-	int e;
+double nexttoward(double x, long double y) {
+  union {
+    double f;
+    uint64_t i;
+  } ux = {x};
+  int e;
 
-	if (isnan(x) || isnan(y))
-		return x + y;
-	if (x == y)
-		return y;
-	if (x == 0) {
-		ux.i = 1;
-		if (signbit(y))
-			ux.i |= 1ULL<<63;
-	} else if (x < y) {
-		if (signbit(x))
-			ux.i--;
-		else
-			ux.i++;
-	} else {
-		if (signbit(x))
-			ux.i++;
-		else
-			ux.i--;
-	}
-	e = ux.i>>52 & 0x7ff;
-	/* raise overflow if ux.f is infinite and x is finite */
-	if (e == 0x7ff)
-		FORCE_EVAL(x+x);
-	/* raise underflow if ux.f is subnormal or zero */
-	if (e == 0)
-		FORCE_EVAL(x*x + ux.f*ux.f);
-	return ux.f;
+  if (isnan(x) || isnan(y))
+    return x + y;
+  if (x == y)
+    return y;
+  if (x == 0) {
+    ux.i = 1;
+    if (signbit(y))
+      ux.i |= 1ULL << 63;
+  } else if (x < y) {
+    if (signbit(x))
+      ux.i--;
+    else
+      ux.i++;
+  } else {
+    if (signbit(x))
+      ux.i++;
+    else
+      ux.i--;
+  }
+  e = ux.i >> 52 & 0x7ff;
+  /* raise overflow if ux.f is infinite and x is finite */
+  if (e == 0x7ff)
+    FORCE_EVAL(x + x);
+  /* raise underflow if ux.f is subnormal or zero */
+  if (e == 0)
+    FORCE_EVAL(x * x + ux.f * ux.f);
+  return ux.f;
 }
 #endif
diff --git a/fusl/src/math/nexttowardf.c b/fusl/src/math/nexttowardf.c
index bbf172f..f004e99 100644
--- a/fusl/src/math/nexttowardf.c
+++ b/fusl/src/math/nexttowardf.c
@@ -1,35 +1,37 @@
 #include "libm.h"
 
-float nexttowardf(float x, long double y)
-{
-	union {float f; uint32_t i;} ux = {x};
-	uint32_t e;
+float nexttowardf(float x, long double y) {
+  union {
+    float f;
+    uint32_t i;
+  } ux = {x};
+  uint32_t e;
 
-	if (isnan(x) || isnan(y))
-		return x + y;
-	if (x == y)
-		return y;
-	if (x == 0) {
-		ux.i = 1;
-		if (signbit(y))
-			ux.i |= 0x80000000;
-	} else if (x < y) {
-		if (signbit(x))
-			ux.i--;
-		else
-			ux.i++;
-	} else {
-		if (signbit(x))
-			ux.i++;
-		else
-			ux.i--;
-	}
-	e = ux.i & 0x7f800000;
-	/* raise overflow if ux.f is infinite and x is finite */
-	if (e == 0x7f800000)
-		FORCE_EVAL(x+x);
-	/* raise underflow if ux.f is subnormal or zero */
-	if (e == 0)
-		FORCE_EVAL(x*x + ux.f*ux.f);
-	return ux.f;
+  if (isnan(x) || isnan(y))
+    return x + y;
+  if (x == y)
+    return y;
+  if (x == 0) {
+    ux.i = 1;
+    if (signbit(y))
+      ux.i |= 0x80000000;
+  } else if (x < y) {
+    if (signbit(x))
+      ux.i--;
+    else
+      ux.i++;
+  } else {
+    if (signbit(x))
+      ux.i++;
+    else
+      ux.i--;
+  }
+  e = ux.i & 0x7f800000;
+  /* raise overflow if ux.f is infinite and x is finite */
+  if (e == 0x7f800000)
+    FORCE_EVAL(x + x);
+  /* raise underflow if ux.f is subnormal or zero */
+  if (e == 0)
+    FORCE_EVAL(x * x + ux.f * ux.f);
+  return ux.f;
 }
diff --git a/fusl/src/math/nexttowardl.c b/fusl/src/math/nexttowardl.c
index 67a6340..132909d 100644
--- a/fusl/src/math/nexttowardl.c
+++ b/fusl/src/math/nexttowardl.c
@@ -1,6 +1,5 @@
 #include <math.h>
 
-long double nexttowardl(long double x, long double y)
-{
-	return nextafterl(x, y);
+long double nexttowardl(long double x, long double y) {
+  return nextafterl(x, y);
 }
diff --git a/fusl/src/math/pow.c b/fusl/src/math/pow.c
index b66f632..7a9f1a6 100644
--- a/fusl/src/math/pow.c
+++ b/fusl/src/math/pow.c
@@ -31,14 +31,17 @@
  *      9.  -1          ** +-INF is 1
  *      10. +0 ** (+anything except 0, NAN)               is +0
  *      11. -0 ** (+anything except 0, NAN, odd integer)  is +0
- *      12. +0 ** (-anything except 0, NAN)               is +INF, raise divbyzero
- *      13. -0 ** (-anything except 0, NAN, odd integer)  is +INF, raise divbyzero
+ *      12. +0 ** (-anything except 0, NAN)               is +INF, raise
+ * divbyzero
+ *      13. -0 ** (-anything except 0, NAN, odd integer)  is +INF, raise
+ * divbyzero
  *      14. -0 ** (+odd integer) is -0
  *      15. -0 ** (-odd integer) is -INF, raise divbyzero
  *      16. +INF ** (+anything except 0,NAN) is +INF
  *      17. +INF ** (-anything except 0,NAN) is +0
  *      18. -INF ** (+odd integer) is -INF
- *      19. -INF ** (anything) = -0 ** (-anything), (anything except odd integer)
+ *      19. -INF ** (anything) = -0 ** (-anything), (anything except odd
+ * integer)
  *      20. (anything) ** 1 is (anything)
  *      21. (anything) ** -1 is 1/(anything)
  *      22. (-anything) ** (integer) is (-1)**(integer)*(+anything**integer)
@@ -59,270 +62,285 @@
 
 #include "libm.h"
 
-static const double
-bp[]   = {1.0, 1.5,},
-dp_h[] = { 0.0, 5.84962487220764160156e-01,}, /* 0x3FE2B803, 0x40000000 */
-dp_l[] = { 0.0, 1.35003920212974897128e-08,}, /* 0x3E4CFDEB, 0x43CFD006 */
-two53  =  9007199254740992.0, /* 0x43400000, 0x00000000 */
-huge   =  1.0e300,
-tiny   =  1.0e-300,
-/* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */
-L1 =  5.99999999999994648725e-01, /* 0x3FE33333, 0x33333303 */
-L2 =  4.28571428578550184252e-01, /* 0x3FDB6DB6, 0xDB6FABFF */
-L3 =  3.33333329818377432918e-01, /* 0x3FD55555, 0x518F264D */
-L4 =  2.72728123808534006489e-01, /* 0x3FD17460, 0xA91D4101 */
-L5 =  2.30660745775561754067e-01, /* 0x3FCD864A, 0x93C9DB65 */
-L6 =  2.06975017800338417784e-01, /* 0x3FCA7E28, 0x4A454EEF */
-P1 =  1.66666666666666019037e-01, /* 0x3FC55555, 0x5555553E */
-P2 = -2.77777777770155933842e-03, /* 0xBF66C16C, 0x16BEBD93 */
-P3 =  6.61375632143793436117e-05, /* 0x3F11566A, 0xAF25DE2C */
-P4 = -1.65339022054652515390e-06, /* 0xBEBBBD41, 0xC5D26BF1 */
-P5 =  4.13813679705723846039e-08, /* 0x3E663769, 0x72BEA4D0 */
-lg2     =  6.93147180559945286227e-01, /* 0x3FE62E42, 0xFEFA39EF */
-lg2_h   =  6.93147182464599609375e-01, /* 0x3FE62E43, 0x00000000 */
-lg2_l   = -1.90465429995776804525e-09, /* 0xBE205C61, 0x0CA86C39 */
-ovt     =  8.0085662595372944372e-017, /* -(1024-log2(ovfl+.5ulp)) */
-cp      =  9.61796693925975554329e-01, /* 0x3FEEC709, 0xDC3A03FD =2/(3ln2) */
-cp_h    =  9.61796700954437255859e-01, /* 0x3FEEC709, 0xE0000000 =(float)cp */
-cp_l    = -7.02846165095275826516e-09, /* 0xBE3E2FE0, 0x145B01F5 =tail of cp_h*/
-ivln2   =  1.44269504088896338700e+00, /* 0x3FF71547, 0x652B82FE =1/ln2 */
-ivln2_h =  1.44269502162933349609e+00, /* 0x3FF71547, 0x60000000 =24b 1/ln2*/
-ivln2_l =  1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
+static const double bp[] =
+    {
+        1.0, 1.5,
+},
+                    dp_h[] =
+                        {
+                            0.0, 5.84962487220764160156e-01,
+}, /* 0x3FE2B803, 0x40000000 */
+    dp_l[] =
+        {
+            0.0, 1.35003920212974897128e-08,
+},                              /* 0x3E4CFDEB, 0x43CFD006 */
+    two53 = 9007199254740992.0, /* 0x43400000, 0x00000000 */
+    huge = 1.0e300,
+                    tiny = 1.0e-300,
+                    /* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */
+    L1 = 5.99999999999994648725e-01,     /* 0x3FE33333, 0x33333303 */
+    L2 = 4.28571428578550184252e-01,     /* 0x3FDB6DB6, 0xDB6FABFF */
+    L3 = 3.33333329818377432918e-01,     /* 0x3FD55555, 0x518F264D */
+    L4 = 2.72728123808534006489e-01,     /* 0x3FD17460, 0xA91D4101 */
+    L5 = 2.30660745775561754067e-01,     /* 0x3FCD864A, 0x93C9DB65 */
+    L6 = 2.06975017800338417784e-01,     /* 0x3FCA7E28, 0x4A454EEF */
+    P1 = 1.66666666666666019037e-01,     /* 0x3FC55555, 0x5555553E */
+    P2 = -2.77777777770155933842e-03,    /* 0xBF66C16C, 0x16BEBD93 */
+    P3 = 6.61375632143793436117e-05,     /* 0x3F11566A, 0xAF25DE2C */
+    P4 = -1.65339022054652515390e-06,    /* 0xBEBBBD41, 0xC5D26BF1 */
+    P5 = 4.13813679705723846039e-08,     /* 0x3E663769, 0x72BEA4D0 */
+    lg2 = 6.93147180559945286227e-01,    /* 0x3FE62E42, 0xFEFA39EF */
+    lg2_h = 6.93147182464599609375e-01,  /* 0x3FE62E43, 0x00000000 */
+    lg2_l = -1.90465429995776804525e-09, /* 0xBE205C61, 0x0CA86C39 */
+    ovt = 8.0085662595372944372e-017,    /* -(1024-log2(ovfl+.5ulp)) */
+    cp = 9.61796693925975554329e-01,     /* 0x3FEEC709, 0xDC3A03FD =2/(3ln2) */
+    cp_h = 9.61796700954437255859e-01,   /* 0x3FEEC709, 0xE0000000 =(float)cp */
+    cp_l =
+        -7.02846165095275826516e-09, /* 0xBE3E2FE0, 0x145B01F5 =tail of cp_h*/
+    ivln2 = 1.44269504088896338700e+00,   /* 0x3FF71547, 0x652B82FE =1/ln2 */
+    ivln2_h = 1.44269502162933349609e+00, /* 0x3FF71547, 0x60000000 =24b 1/ln2*/
+    ivln2_l =
+        1.92596299112661746887e-08; /* 0x3E54AE0B, 0xF85DDF44 =1/ln2 tail*/
 
-double pow(double x, double y)
-{
-	double z,ax,z_h,z_l,p_h,p_l;
-	double y1,t1,t2,r,s,t,u,v,w;
-	int32_t i,j,k,yisint,n;
-	int32_t hx,hy,ix,iy;
-	uint32_t lx,ly;
+double pow(double x, double y) {
+  double z, ax, z_h, z_l, p_h, p_l;
+  double y1, t1, t2, r, s, t, u, v, w;
+  int32_t i, j, k, yisint, n;
+  int32_t hx, hy, ix, iy;
+  uint32_t lx, ly;
 
-	EXTRACT_WORDS(hx, lx, x);
-	EXTRACT_WORDS(hy, ly, y);
-	ix = hx & 0x7fffffff;
-	iy = hy & 0x7fffffff;
+  EXTRACT_WORDS(hx, lx, x);
+  EXTRACT_WORDS(hy, ly, y);
+  ix = hx & 0x7fffffff;
+  iy = hy & 0x7fffffff;
 
-	/* x**0 = 1, even if x is NaN */
-	if ((iy|ly) == 0)
-		return 1.0;
-	/* 1**y = 1, even if y is NaN */
-	if (hx == 0x3ff00000 && lx == 0)
-		return 1.0;
-	/* NaN if either arg is NaN */
-	if (ix > 0x7ff00000 || (ix == 0x7ff00000 && lx != 0) ||
-	    iy > 0x7ff00000 || (iy == 0x7ff00000 && ly != 0))
-		return x + y;
+  /* x**0 = 1, even if x is NaN */
+  if ((iy | ly) == 0)
+    return 1.0;
+  /* 1**y = 1, even if y is NaN */
+  if (hx == 0x3ff00000 && lx == 0)
+    return 1.0;
+  /* NaN if either arg is NaN */
+  if (ix > 0x7ff00000 || (ix == 0x7ff00000 && lx != 0) || iy > 0x7ff00000 ||
+      (iy == 0x7ff00000 && ly != 0))
+    return x + y;
 
-	/* determine if y is an odd int when x < 0
-	 * yisint = 0       ... y is not an integer
-	 * yisint = 1       ... y is an odd int
-	 * yisint = 2       ... y is an even int
-	 */
-	yisint = 0;
-	if (hx < 0) {
-		if (iy >= 0x43400000)
-			yisint = 2; /* even integer y */
-		else if (iy >= 0x3ff00000) {
-			k = (iy>>20) - 0x3ff;  /* exponent */
-			if (k > 20) {
-				j = ly>>(52-k);
-				if ((j<<(52-k)) == ly)
-					yisint = 2 - (j&1);
-			} else if (ly == 0) {
-				j = iy>>(20-k);
-				if ((j<<(20-k)) == iy)
-					yisint = 2 - (j&1);
-			}
-		}
-	}
+  /* determine if y is an odd int when x < 0
+   * yisint = 0       ... y is not an integer
+   * yisint = 1       ... y is an odd int
+   * yisint = 2       ... y is an even int
+   */
+  yisint = 0;
+  if (hx < 0) {
+    if (iy >= 0x43400000)
+      yisint = 2; /* even integer y */
+    else if (iy >= 0x3ff00000) {
+      k = (iy >> 20) - 0x3ff; /* exponent */
+      if (k > 20) {
+        j = ly >> (52 - k);
+        if ((j << (52 - k)) == ly)
+          yisint = 2 - (j & 1);
+      } else if (ly == 0) {
+        j = iy >> (20 - k);
+        if ((j << (20 - k)) == iy)
+          yisint = 2 - (j & 1);
+      }
+    }
+  }
 
-	/* special value of y */
-	if (ly == 0) {
-		if (iy == 0x7ff00000) {  /* y is +-inf */
-			if (((ix-0x3ff00000)|lx) == 0)  /* (-1)**+-inf is 1 */
-				return 1.0;
-			else if (ix >= 0x3ff00000) /* (|x|>1)**+-inf = inf,0 */
-				return hy >= 0 ? y : 0.0;
-			else                       /* (|x|<1)**+-inf = 0,inf */
-				return hy >= 0 ? 0.0 : -y;
-		}
-		if (iy == 0x3ff00000) {    /* y is +-1 */
-			if (hy >= 0)
-				return x;
-			y = 1/x;
-#if FLT_EVAL_METHOD!=0
-			{
-				union {double f; uint64_t i;} u = {y};
-				uint64_t i = u.i & -1ULL/2;
-				if (i>>52 == 0 && (i&(i-1)))
-					FORCE_EVAL((float)y);
-			}
+  /* special value of y */
+  if (ly == 0) {
+    if (iy == 0x7ff00000) {              /* y is +-inf */
+      if (((ix - 0x3ff00000) | lx) == 0) /* (-1)**+-inf is 1 */
+        return 1.0;
+      else if (ix >= 0x3ff00000) /* (|x|>1)**+-inf = inf,0 */
+        return hy >= 0 ? y : 0.0;
+      else /* (|x|<1)**+-inf = 0,inf */
+        return hy >= 0 ? 0.0 : -y;
+    }
+    if (iy == 0x3ff00000) { /* y is +-1 */
+      if (hy >= 0)
+        return x;
+      y = 1 / x;
+#if FLT_EVAL_METHOD != 0
+      {
+        union {
+          double f;
+          uint64_t i;
+        } u = {y};
+        uint64_t i = u.i & -1ULL / 2;
+        if (i >> 52 == 0 && (i & (i - 1)))
+          FORCE_EVAL((float)y);
+      }
 #endif
-			return y;
-		}
-		if (hy == 0x40000000)    /* y is 2 */
-			return x*x;
-		if (hy == 0x3fe00000) {  /* y is 0.5 */
-			if (hx >= 0)     /* x >= +0 */
-				return sqrt(x);
-		}
-	}
+      return y;
+    }
+    if (hy == 0x40000000) /* y is 2 */
+      return x * x;
+    if (hy == 0x3fe00000) { /* y is 0.5 */
+      if (hx >= 0)          /* x >= +0 */
+        return sqrt(x);
+    }
+  }
 
-	ax = fabs(x);
-	/* special value of x */
-	if (lx == 0) {
-		if (ix == 0x7ff00000 || ix == 0 || ix == 0x3ff00000) { /* x is +-0,+-inf,+-1 */
-			z = ax;
-			if (hy < 0)   /* z = (1/|x|) */
-				z = 1.0/z;
-			if (hx < 0) {
-				if (((ix-0x3ff00000)|yisint) == 0) {
-					z = (z-z)/(z-z); /* (-1)**non-int is NaN */
-				} else if (yisint == 1)
-					z = -z;          /* (x<0)**odd = -(|x|**odd) */
-			}
-			return z;
-		}
-	}
+  ax = fabs(x);
+  /* special value of x */
+  if (lx == 0) {
+    if (ix == 0x7ff00000 || ix == 0 ||
+        ix == 0x3ff00000) { /* x is +-0,+-inf,+-1 */
+      z = ax;
+      if (hy < 0) /* z = (1/|x|) */
+        z = 1.0 / z;
+      if (hx < 0) {
+        if (((ix - 0x3ff00000) | yisint) == 0) {
+          z = (z - z) / (z - z); /* (-1)**non-int is NaN */
+        } else if (yisint == 1)
+          z = -z; /* (x<0)**odd = -(|x|**odd) */
+      }
+      return z;
+    }
+  }
 
-	s = 1.0; /* sign of result */
-	if (hx < 0) {
-		if (yisint == 0) /* (x<0)**(non-int) is NaN */
-			return (x-x)/(x-x);
-		if (yisint == 1) /* (x<0)**(odd int) */
-			s = -1.0;
-	}
+  s = 1.0; /* sign of result */
+  if (hx < 0) {
+    if (yisint == 0) /* (x<0)**(non-int) is NaN */
+      return (x - x) / (x - x);
+    if (yisint == 1) /* (x<0)**(odd int) */
+      s = -1.0;
+  }
 
-	/* |y| is huge */
-	if (iy > 0x41e00000) { /* if |y| > 2**31 */
-		if (iy > 0x43f00000) {  /* if |y| > 2**64, must o/uflow */
-			if (ix <= 0x3fefffff)
-				return hy < 0 ? huge*huge : tiny*tiny;
-			if (ix >= 0x3ff00000)
-				return hy > 0 ? huge*huge : tiny*tiny;
-		}
-		/* over/underflow if x is not close to one */
-		if (ix < 0x3fefffff)
-			return hy < 0 ? s*huge*huge : s*tiny*tiny;
-		if (ix > 0x3ff00000)
-			return hy > 0 ? s*huge*huge : s*tiny*tiny;
-		/* now |1-x| is tiny <= 2**-20, suffice to compute
-		   log(x) by x-x^2/2+x^3/3-x^4/4 */
-		t = ax - 1.0;       /* t has 20 trailing zeros */
-		w = (t*t)*(0.5 - t*(0.3333333333333333333333-t*0.25));
-		u = ivln2_h*t;      /* ivln2_h has 21 sig. bits */
-		v = t*ivln2_l - w*ivln2;
-		t1 = u + v;
-		SET_LOW_WORD(t1, 0);
-		t2 = v - (t1-u);
-	} else {
-		double ss,s2,s_h,s_l,t_h,t_l;
-		n = 0;
-		/* take care subnormal number */
-		if (ix < 0x00100000) {
-			ax *= two53;
-			n -= 53;
-			GET_HIGH_WORD(ix,ax);
-		}
-		n += ((ix)>>20) - 0x3ff;
-		j = ix & 0x000fffff;
-		/* determine interval */
-		ix = j | 0x3ff00000;   /* normalize ix */
-		if (j <= 0x3988E)      /* |x|<sqrt(3/2) */
-			k = 0;
-		else if (j < 0xBB67A)  /* |x|<sqrt(3)   */
-			k = 1;
-		else {
-			k = 0;
-			n += 1;
-			ix -= 0x00100000;
-		}
-		SET_HIGH_WORD(ax, ix);
+  /* |y| is huge */
+  if (iy > 0x41e00000) {   /* if |y| > 2**31 */
+    if (iy > 0x43f00000) { /* if |y| > 2**64, must o/uflow */
+      if (ix <= 0x3fefffff)
+        return hy < 0 ? huge * huge : tiny * tiny;
+      if (ix >= 0x3ff00000)
+        return hy > 0 ? huge * huge : tiny * tiny;
+    }
+    /* over/underflow if x is not close to one */
+    if (ix < 0x3fefffff)
+      return hy < 0 ? s * huge * huge : s * tiny * tiny;
+    if (ix > 0x3ff00000)
+      return hy > 0 ? s * huge * huge : s * tiny * tiny;
+    /* now |1-x| is tiny <= 2**-20, suffice to compute
+       log(x) by x-x^2/2+x^3/3-x^4/4 */
+    t = ax - 1.0; /* t has 20 trailing zeros */
+    w = (t * t) * (0.5 - t * (0.3333333333333333333333 - t * 0.25));
+    u = ivln2_h * t; /* ivln2_h has 21 sig. bits */
+    v = t * ivln2_l - w * ivln2;
+    t1 = u + v;
+    SET_LOW_WORD(t1, 0);
+    t2 = v - (t1 - u);
+  } else {
+    double ss, s2, s_h, s_l, t_h, t_l;
+    n = 0;
+    /* take care subnormal number */
+    if (ix < 0x00100000) {
+      ax *= two53;
+      n -= 53;
+      GET_HIGH_WORD(ix, ax);
+    }
+    n += ((ix) >> 20) - 0x3ff;
+    j = ix & 0x000fffff;
+    /* determine interval */
+    ix = j | 0x3ff00000; /* normalize ix */
+    if (j <= 0x3988E)    /* |x|<sqrt(3/2) */
+      k = 0;
+    else if (j < 0xBB67A) /* |x|<sqrt(3)   */
+      k = 1;
+    else {
+      k = 0;
+      n += 1;
+      ix -= 0x00100000;
+    }
+    SET_HIGH_WORD(ax, ix);
 
-		/* compute ss = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
-		u = ax - bp[k];        /* bp[0]=1.0, bp[1]=1.5 */
-		v = 1.0/(ax+bp[k]);
-		ss = u*v;
-		s_h = ss;
-		SET_LOW_WORD(s_h, 0);
-		/* t_h=ax+bp[k] High */
-		t_h = 0.0;
-		SET_HIGH_WORD(t_h, ((ix>>1)|0x20000000) + 0x00080000 + (k<<18));
-		t_l = ax - (t_h-bp[k]);
-		s_l = v*((u-s_h*t_h)-s_h*t_l);
-		/* compute log(ax) */
-		s2 = ss*ss;
-		r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6)))));
-		r += s_l*(s_h+ss);
-		s2 = s_h*s_h;
-		t_h = 3.0 + s2 + r;
-		SET_LOW_WORD(t_h, 0);
-		t_l = r - ((t_h-3.0)-s2);
-		/* u+v = ss*(1+...) */
-		u = s_h*t_h;
-		v = s_l*t_h + t_l*ss;
-		/* 2/(3log2)*(ss+...) */
-		p_h = u + v;
-		SET_LOW_WORD(p_h, 0);
-		p_l = v - (p_h-u);
-		z_h = cp_h*p_h;        /* cp_h+cp_l = 2/(3*log2) */
-		z_l = cp_l*p_h+p_l*cp + dp_l[k];
-		/* log2(ax) = (ss+..)*2/(3*log2) = n + dp_h + z_h + z_l */
-		t = (double)n;
-		t1 = ((z_h + z_l) + dp_h[k]) + t;
-		SET_LOW_WORD(t1, 0);
-		t2 = z_l - (((t1 - t) - dp_h[k]) - z_h);
-	}
+    /* compute ss = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
+    u = ax - bp[k]; /* bp[0]=1.0, bp[1]=1.5 */
+    v = 1.0 / (ax + bp[k]);
+    ss = u * v;
+    s_h = ss;
+    SET_LOW_WORD(s_h, 0);
+    /* t_h=ax+bp[k] High */
+    t_h = 0.0;
+    SET_HIGH_WORD(t_h, ((ix >> 1) | 0x20000000) + 0x00080000 + (k << 18));
+    t_l = ax - (t_h - bp[k]);
+    s_l = v * ((u - s_h * t_h) - s_h * t_l);
+    /* compute log(ax) */
+    s2 = ss * ss;
+    r = s2 * s2 *
+        (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));
+    r += s_l * (s_h + ss);
+    s2 = s_h * s_h;
+    t_h = 3.0 + s2 + r;
+    SET_LOW_WORD(t_h, 0);
+    t_l = r - ((t_h - 3.0) - s2);
+    /* u+v = ss*(1+...) */
+    u = s_h * t_h;
+    v = s_l * t_h + t_l * ss;
+    /* 2/(3log2)*(ss+...) */
+    p_h = u + v;
+    SET_LOW_WORD(p_h, 0);
+    p_l = v - (p_h - u);
+    z_h = cp_h * p_h; /* cp_h+cp_l = 2/(3*log2) */
+    z_l = cp_l * p_h + p_l * cp + dp_l[k];
+    /* log2(ax) = (ss+..)*2/(3*log2) = n + dp_h + z_h + z_l */
+    t = (double)n;
+    t1 = ((z_h + z_l) + dp_h[k]) + t;
+    SET_LOW_WORD(t1, 0);
+    t2 = z_l - (((t1 - t) - dp_h[k]) - z_h);
+  }
 
-	/* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
-	y1 = y;
-	SET_LOW_WORD(y1, 0);
-	p_l = (y-y1)*t1 + y*t2;
-	p_h = y1*t1;
-	z = p_l + p_h;
-	EXTRACT_WORDS(j, i, z);
-	if (j >= 0x40900000) {                      /* z >= 1024 */
-		if (((j-0x40900000)|i) != 0)        /* if z > 1024 */
-			return s*huge*huge;         /* overflow */
-		if (p_l + ovt > z - p_h)
-			return s*huge*huge;         /* overflow */
-	} else if ((j&0x7fffffff) >= 0x4090cc00) {  /* z <= -1075 */  // FIXME: instead of abs(j) use unsigned j
-		if (((j-0xc090cc00)|i) != 0)        /* z < -1075 */
-			return s*tiny*tiny;         /* underflow */
-		if (p_l <= z - p_h)
-			return s*tiny*tiny;         /* underflow */
-	}
-	/*
-	 * compute 2**(p_h+p_l)
-	 */
-	i = j & 0x7fffffff;
-	k = (i>>20) - 0x3ff;
-	n = 0;
-	if (i > 0x3fe00000) {  /* if |z| > 0.5, set n = [z+0.5] */
-		n = j + (0x00100000>>(k+1));
-		k = ((n&0x7fffffff)>>20) - 0x3ff;  /* new k for n */
-		t = 0.0;
-		SET_HIGH_WORD(t, n & ~(0x000fffff>>k));
-		n = ((n&0x000fffff)|0x00100000)>>(20-k);
-		if (j < 0)
-			n = -n;
-		p_h -= t;
-	}
-	t = p_l + p_h;
-	SET_LOW_WORD(t, 0);
-	u = t*lg2_h;
-	v = (p_l-(t-p_h))*lg2 + t*lg2_l;
-	z = u + v;
-	w = v - (z-u);
-	t = z*z;
-	t1 = z - t*(P1+t*(P2+t*(P3+t*(P4+t*P5))));
-	r = (z*t1)/(t1-2.0) - (w + z*w);
-	z = 1.0 - (r-z);
-	GET_HIGH_WORD(j, z);
-	j += n<<20;
-	if ((j>>20) <= 0)  /* subnormal output */
-		z = scalbn(z,n);
-	else
-		SET_HIGH_WORD(z, j);
-	return s*z;
+  /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
+  y1 = y;
+  SET_LOW_WORD(y1, 0);
+  p_l = (y - y1) * t1 + y * t2;
+  p_h = y1 * t1;
+  z = p_l + p_h;
+  EXTRACT_WORDS(j, i, z);
+  if (j >= 0x40900000) {             /* z >= 1024 */
+    if (((j - 0x40900000) | i) != 0) /* if z > 1024 */
+      return s * huge * huge;        /* overflow */
+    if (p_l + ovt > z - p_h)
+      return s * huge * huge; /* overflow */
+  } else if ((j & 0x7fffffff) >= 0x4090cc00) {
+    /* z <= -1075 */                 // FIXME: instead of abs(j) use unsigned j
+    if (((j - 0xc090cc00) | i) != 0) /* z < -1075 */
+      return s * tiny * tiny;        /* underflow */
+    if (p_l <= z - p_h)
+      return s * tiny * tiny; /* underflow */
+  }
+  /*
+   * compute 2**(p_h+p_l)
+   */
+  i = j & 0x7fffffff;
+  k = (i >> 20) - 0x3ff;
+  n = 0;
+  if (i > 0x3fe00000) { /* if |z| > 0.5, set n = [z+0.5] */
+    n = j + (0x00100000 >> (k + 1));
+    k = ((n & 0x7fffffff) >> 20) - 0x3ff; /* new k for n */
+    t = 0.0;
+    SET_HIGH_WORD(t, n & ~(0x000fffff >> k));
+    n = ((n & 0x000fffff) | 0x00100000) >> (20 - k);
+    if (j < 0)
+      n = -n;
+    p_h -= t;
+  }
+  t = p_l + p_h;
+  SET_LOW_WORD(t, 0);
+  u = t * lg2_h;
+  v = (p_l - (t - p_h)) * lg2 + t * lg2_l;
+  z = u + v;
+  w = v - (z - u);
+  t = z * z;
+  t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));
+  r = (z * t1) / (t1 - 2.0) - (w + z * w);
+  z = 1.0 - (r - z);
+  GET_HIGH_WORD(j, z);
+  j += n << 20;
+  if ((j >> 20) <= 0) /* subnormal output */
+    z = scalbn(z, n);
+  else
+    SET_HIGH_WORD(z, j);
+  return s * z;
 }
diff --git a/fusl/src/math/powf.c b/fusl/src/math/powf.c
index 427c896..ee4bd98 100644
--- a/fusl/src/math/powf.c
+++ b/fusl/src/math/powf.c
@@ -15,245 +15,257 @@
 
 #include "libm.h"
 
-static const float
-bp[]   = {1.0, 1.5,},
-dp_h[] = { 0.0, 5.84960938e-01,}, /* 0x3f15c000 */
-dp_l[] = { 0.0, 1.56322085e-06,}, /* 0x35d1cfdc */
-two24  =  16777216.0,  /* 0x4b800000 */
-huge   =  1.0e30,
-tiny   =  1.0e-30,
-/* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */
-L1 =  6.0000002384e-01, /* 0x3f19999a */
-L2 =  4.2857143283e-01, /* 0x3edb6db7 */
-L3 =  3.3333334327e-01, /* 0x3eaaaaab */
-L4 =  2.7272811532e-01, /* 0x3e8ba305 */
-L5 =  2.3066075146e-01, /* 0x3e6c3255 */
-L6 =  2.0697501302e-01, /* 0x3e53f142 */
-P1 =  1.6666667163e-01, /* 0x3e2aaaab */
-P2 = -2.7777778450e-03, /* 0xbb360b61 */
-P3 =  6.6137559770e-05, /* 0x388ab355 */
-P4 = -1.6533901999e-06, /* 0xb5ddea0e */
-P5 =  4.1381369442e-08, /* 0x3331bb4c */
-lg2     =  6.9314718246e-01, /* 0x3f317218 */
-lg2_h   =  6.93145752e-01,   /* 0x3f317200 */
-lg2_l   =  1.42860654e-06,   /* 0x35bfbe8c */
-ovt     =  4.2995665694e-08, /* -(128-log2(ovfl+.5ulp)) */
-cp      =  9.6179670095e-01, /* 0x3f76384f =2/(3ln2) */
-cp_h    =  9.6191406250e-01, /* 0x3f764000 =12b cp */
-cp_l    = -1.1736857402e-04, /* 0xb8f623c6 =tail of cp_h */
-ivln2   =  1.4426950216e+00, /* 0x3fb8aa3b =1/ln2 */
-ivln2_h =  1.4426879883e+00, /* 0x3fb8aa00 =16b 1/ln2*/
-ivln2_l =  7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/
+static const float bp[] =
+    {
+        1.0, 1.5,
+},
+                   dp_h[] =
+                       {
+                           0.0, 5.84960938e-01,
+}, /* 0x3f15c000 */
+    dp_l[] =
+        {
+            0.0, 1.56322085e-06,
+},                      /* 0x35d1cfdc */
+    two24 = 16777216.0, /* 0x4b800000 */
+    huge = 1.0e30,
+                   tiny = 1.0e-30,
+                   /* poly coefs for (3/2)*(log(x)-2s-2/3*s**3 */
+    L1 = 6.0000002384e-01,      /* 0x3f19999a */
+    L2 = 4.2857143283e-01,      /* 0x3edb6db7 */
+    L3 = 3.3333334327e-01,      /* 0x3eaaaaab */
+    L4 = 2.7272811532e-01,      /* 0x3e8ba305 */
+    L5 = 2.3066075146e-01,      /* 0x3e6c3255 */
+    L6 = 2.0697501302e-01,      /* 0x3e53f142 */
+    P1 = 1.6666667163e-01,      /* 0x3e2aaaab */
+    P2 = -2.7777778450e-03,     /* 0xbb360b61 */
+    P3 = 6.6137559770e-05,      /* 0x388ab355 */
+    P4 = -1.6533901999e-06,     /* 0xb5ddea0e */
+    P5 = 4.1381369442e-08,      /* 0x3331bb4c */
+    lg2 = 6.9314718246e-01,     /* 0x3f317218 */
+    lg2_h = 6.93145752e-01,     /* 0x3f317200 */
+    lg2_l = 1.42860654e-06,     /* 0x35bfbe8c */
+    ovt = 4.2995665694e-08,     /* -(128-log2(ovfl+.5ulp)) */
+    cp = 9.6179670095e-01,      /* 0x3f76384f =2/(3ln2) */
+    cp_h = 9.6191406250e-01,    /* 0x3f764000 =12b cp */
+    cp_l = -1.1736857402e-04,   /* 0xb8f623c6 =tail of cp_h */
+    ivln2 = 1.4426950216e+00,   /* 0x3fb8aa3b =1/ln2 */
+    ivln2_h = 1.4426879883e+00, /* 0x3fb8aa00 =16b 1/ln2*/
+    ivln2_l = 7.0526075433e-06; /* 0x36eca570 =1/ln2 tail*/
 
-float powf(float x, float y)
-{
-	float z,ax,z_h,z_l,p_h,p_l;
-	float y1,t1,t2,r,s,sn,t,u,v,w;
-	int32_t i,j,k,yisint,n;
-	int32_t hx,hy,ix,iy,is;
+float powf(float x, float y) {
+  float z, ax, z_h, z_l, p_h, p_l;
+  float y1, t1, t2, r, s, sn, t, u, v, w;
+  int32_t i, j, k, yisint, n;
+  int32_t hx, hy, ix, iy, is;
 
-	GET_FLOAT_WORD(hx, x);
-	GET_FLOAT_WORD(hy, y);
-	ix = hx & 0x7fffffff;
-	iy = hy & 0x7fffffff;
+  GET_FLOAT_WORD(hx, x);
+  GET_FLOAT_WORD(hy, y);
+  ix = hx & 0x7fffffff;
+  iy = hy & 0x7fffffff;
 
-	/* x**0 = 1, even if x is NaN */
-	if (iy == 0)
-		return 1.0f;
-	/* 1**y = 1, even if y is NaN */
-	if (hx == 0x3f800000)
-		return 1.0f;
-	/* NaN if either arg is NaN */
-	if (ix > 0x7f800000 || iy > 0x7f800000)
-		return x + y;
+  /* x**0 = 1, even if x is NaN */
+  if (iy == 0)
+    return 1.0f;
+  /* 1**y = 1, even if y is NaN */
+  if (hx == 0x3f800000)
+    return 1.0f;
+  /* NaN if either arg is NaN */
+  if (ix > 0x7f800000 || iy > 0x7f800000)
+    return x + y;
 
-	/* determine if y is an odd int when x < 0
-	 * yisint = 0       ... y is not an integer
-	 * yisint = 1       ... y is an odd int
-	 * yisint = 2       ... y is an even int
-	 */
-	yisint  = 0;
-	if (hx < 0) {
-		if (iy >= 0x4b800000)
-			yisint = 2; /* even integer y */
-		else if (iy >= 0x3f800000) {
-			k = (iy>>23) - 0x7f;         /* exponent */
-			j = iy>>(23-k);
-			if ((j<<(23-k)) == iy)
-				yisint = 2 - (j & 1);
-		}
-	}
+  /* determine if y is an odd int when x < 0
+   * yisint = 0       ... y is not an integer
+   * yisint = 1       ... y is an odd int
+   * yisint = 2       ... y is an even int
+   */
+  yisint = 0;
+  if (hx < 0) {
+    if (iy >= 0x4b800000)
+      yisint = 2; /* even integer y */
+    else if (iy >= 0x3f800000) {
+      k = (iy >> 23) - 0x7f; /* exponent */
+      j = iy >> (23 - k);
+      if ((j << (23 - k)) == iy)
+        yisint = 2 - (j & 1);
+    }
+  }
 
-	/* special value of y */
-	if (iy == 0x7f800000) {  /* y is +-inf */
-		if (ix == 0x3f800000)      /* (-1)**+-inf is 1 */
-			return 1.0f;
-		else if (ix > 0x3f800000)  /* (|x|>1)**+-inf = inf,0 */
-			return hy >= 0 ? y : 0.0f;
-		else                       /* (|x|<1)**+-inf = 0,inf */
-			return hy >= 0 ? 0.0f: -y;
-	}
-	if (iy == 0x3f800000)    /* y is +-1 */
-		return hy >= 0 ? x : 1.0f/x;
-	if (hy == 0x40000000)    /* y is 2 */
-		return x*x;
-	if (hy == 0x3f000000) {  /* y is  0.5 */
-		if (hx >= 0)     /* x >= +0 */
-			return sqrtf(x);
-	}
+  /* special value of y */
+  if (iy == 0x7f800000) { /* y is +-inf */
+    if (ix == 0x3f800000) /* (-1)**+-inf is 1 */
+      return 1.0f;
+    else if (ix > 0x3f800000) /* (|x|>1)**+-inf = inf,0 */
+      return hy >= 0 ? y : 0.0f;
+    else /* (|x|<1)**+-inf = 0,inf */
+      return hy >= 0 ? 0.0f : -y;
+  }
+  if (iy == 0x3f800000) /* y is +-1 */
+    return hy >= 0 ? x : 1.0f / x;
+  if (hy == 0x40000000) /* y is 2 */
+    return x * x;
+  if (hy == 0x3f000000) { /* y is  0.5 */
+    if (hx >= 0)          /* x >= +0 */
+      return sqrtf(x);
+  }
 
-	ax = fabsf(x);
-	/* special value of x */
-	if (ix == 0x7f800000 || ix == 0 || ix == 0x3f800000) { /* x is +-0,+-inf,+-1 */
-		z = ax;
-		if (hy < 0)  /* z = (1/|x|) */
-			z = 1.0f/z;
-		if (hx < 0) {
-			if (((ix-0x3f800000)|yisint) == 0) {
-				z = (z-z)/(z-z); /* (-1)**non-int is NaN */
-			} else if (yisint == 1)
-				z = -z;          /* (x<0)**odd = -(|x|**odd) */
-		}
-		return z;
-	}
+  ax = fabsf(x);
+  /* special value of x */
+  if (ix == 0x7f800000 || ix == 0 ||
+      ix == 0x3f800000) { /* x is +-0,+-inf,+-1 */
+    z = ax;
+    if (hy < 0) /* z = (1/|x|) */
+      z = 1.0f / z;
+    if (hx < 0) {
+      if (((ix - 0x3f800000) | yisint) == 0) {
+        z = (z - z) / (z - z); /* (-1)**non-int is NaN */
+      } else if (yisint == 1)
+        z = -z; /* (x<0)**odd = -(|x|**odd) */
+    }
+    return z;
+  }
 
-	sn = 1.0f; /* sign of result */
-	if (hx < 0) {
-		if (yisint == 0) /* (x<0)**(non-int) is NaN */
-			return (x-x)/(x-x);
-		if (yisint == 1) /* (x<0)**(odd int) */
-			sn = -1.0f;
-	}
+  sn = 1.0f; /* sign of result */
+  if (hx < 0) {
+    if (yisint == 0) /* (x<0)**(non-int) is NaN */
+      return (x - x) / (x - x);
+    if (yisint == 1) /* (x<0)**(odd int) */
+      sn = -1.0f;
+  }
 
-	/* |y| is huge */
-	if (iy > 0x4d000000) { /* if |y| > 2**27 */
-		/* over/underflow if x is not close to one */
-		if (ix < 0x3f7ffff8)
-			return hy < 0 ? sn*huge*huge : sn*tiny*tiny;
-		if (ix > 0x3f800007)
-			return hy > 0 ? sn*huge*huge : sn*tiny*tiny;
-		/* now |1-x| is tiny <= 2**-20, suffice to compute
-		   log(x) by x-x^2/2+x^3/3-x^4/4 */
-		t = ax - 1;     /* t has 20 trailing zeros */
-		w = (t*t)*(0.5f - t*(0.333333333333f - t*0.25f));
-		u = ivln2_h*t;  /* ivln2_h has 16 sig. bits */
-		v = t*ivln2_l - w*ivln2;
-		t1 = u + v;
-		GET_FLOAT_WORD(is, t1);
-		SET_FLOAT_WORD(t1, is & 0xfffff000);
-		t2 = v - (t1-u);
-	} else {
-		float s2,s_h,s_l,t_h,t_l;
-		n = 0;
-		/* take care subnormal number */
-		if (ix < 0x00800000) {
-			ax *= two24;
-			n -= 24;
-			GET_FLOAT_WORD(ix, ax);
-		}
-		n += ((ix)>>23) - 0x7f;
-		j = ix & 0x007fffff;
-		/* determine interval */
-		ix = j | 0x3f800000;     /* normalize ix */
-		if (j <= 0x1cc471)       /* |x|<sqrt(3/2) */
-			k = 0;
-		else if (j < 0x5db3d7)   /* |x|<sqrt(3)   */
-			k = 1;
-		else {
-			k = 0;
-			n += 1;
-			ix -= 0x00800000;
-		}
-		SET_FLOAT_WORD(ax, ix);
+  /* |y| is huge */
+  if (iy > 0x4d000000) { /* if |y| > 2**27 */
+    /* over/underflow if x is not close to one */
+    if (ix < 0x3f7ffff8)
+      return hy < 0 ? sn * huge * huge : sn * tiny * tiny;
+    if (ix > 0x3f800007)
+      return hy > 0 ? sn * huge * huge : sn * tiny * tiny;
+    /* now |1-x| is tiny <= 2**-20, suffice to compute
+       log(x) by x-x^2/2+x^3/3-x^4/4 */
+    t = ax - 1; /* t has 20 trailing zeros */
+    w = (t * t) * (0.5f - t * (0.333333333333f - t * 0.25f));
+    u = ivln2_h * t; /* ivln2_h has 16 sig. bits */
+    v = t * ivln2_l - w * ivln2;
+    t1 = u + v;
+    GET_FLOAT_WORD(is, t1);
+    SET_FLOAT_WORD(t1, is & 0xfffff000);
+    t2 = v - (t1 - u);
+  } else {
+    float s2, s_h, s_l, t_h, t_l;
+    n = 0;
+    /* take care subnormal number */
+    if (ix < 0x00800000) {
+      ax *= two24;
+      n -= 24;
+      GET_FLOAT_WORD(ix, ax);
+    }
+    n += ((ix) >> 23) - 0x7f;
+    j = ix & 0x007fffff;
+    /* determine interval */
+    ix = j | 0x3f800000; /* normalize ix */
+    if (j <= 0x1cc471)   /* |x|<sqrt(3/2) */
+      k = 0;
+    else if (j < 0x5db3d7) /* |x|<sqrt(3)   */
+      k = 1;
+    else {
+      k = 0;
+      n += 1;
+      ix -= 0x00800000;
+    }
+    SET_FLOAT_WORD(ax, ix);
 
-		/* compute s = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
-		u = ax - bp[k];   /* bp[0]=1.0, bp[1]=1.5 */
-		v = 1.0f/(ax+bp[k]);
-		s = u*v;
-		s_h = s;
-		GET_FLOAT_WORD(is, s_h);
-		SET_FLOAT_WORD(s_h, is & 0xfffff000);
-		/* t_h=ax+bp[k] High */
-		is = ((ix>>1) & 0xfffff000) | 0x20000000;
-		SET_FLOAT_WORD(t_h, is + 0x00400000 + (k<<21));
-		t_l = ax - (t_h - bp[k]);
-		s_l = v*((u - s_h*t_h) - s_h*t_l);
-		/* compute log(ax) */
-		s2 = s*s;
-		r = s2*s2*(L1+s2*(L2+s2*(L3+s2*(L4+s2*(L5+s2*L6)))));
-		r += s_l*(s_h+s);
-		s2 = s_h*s_h;
-		t_h = 3.0f + s2 + r;
-		GET_FLOAT_WORD(is, t_h);
-		SET_FLOAT_WORD(t_h, is & 0xfffff000);
-		t_l = r - ((t_h - 3.0f) - s2);
-		/* u+v = s*(1+...) */
-		u = s_h*t_h;
-		v = s_l*t_h + t_l*s;
-		/* 2/(3log2)*(s+...) */
-		p_h = u + v;
-		GET_FLOAT_WORD(is, p_h);
-		SET_FLOAT_WORD(p_h, is & 0xfffff000);
-		p_l = v - (p_h - u);
-		z_h = cp_h*p_h;  /* cp_h+cp_l = 2/(3*log2) */
-		z_l = cp_l*p_h + p_l*cp+dp_l[k];
-		/* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */
-		t = (float)n;
-		t1 = (((z_h + z_l) + dp_h[k]) + t);
-		GET_FLOAT_WORD(is, t1);
-		SET_FLOAT_WORD(t1, is & 0xfffff000);
-		t2 = z_l - (((t1 - t) - dp_h[k]) - z_h);
-	}
+    /* compute s = s_h+s_l = (x-1)/(x+1) or (x-1.5)/(x+1.5) */
+    u = ax - bp[k]; /* bp[0]=1.0, bp[1]=1.5 */
+    v = 1.0f / (ax + bp[k]);
+    s = u * v;
+    s_h = s;
+    GET_FLOAT_WORD(is, s_h);
+    SET_FLOAT_WORD(s_h, is & 0xfffff000);
+    /* t_h=ax+bp[k] High */
+    is = ((ix >> 1) & 0xfffff000) | 0x20000000;
+    SET_FLOAT_WORD(t_h, is + 0x00400000 + (k << 21));
+    t_l = ax - (t_h - bp[k]);
+    s_l = v * ((u - s_h * t_h) - s_h * t_l);
+    /* compute log(ax) */
+    s2 = s * s;
+    r = s2 * s2 *
+        (L1 + s2 * (L2 + s2 * (L3 + s2 * (L4 + s2 * (L5 + s2 * L6)))));
+    r += s_l * (s_h + s);
+    s2 = s_h * s_h;
+    t_h = 3.0f + s2 + r;
+    GET_FLOAT_WORD(is, t_h);
+    SET_FLOAT_WORD(t_h, is & 0xfffff000);
+    t_l = r - ((t_h - 3.0f) - s2);
+    /* u+v = s*(1+...) */
+    u = s_h * t_h;
+    v = s_l * t_h + t_l * s;
+    /* 2/(3log2)*(s+...) */
+    p_h = u + v;
+    GET_FLOAT_WORD(is, p_h);
+    SET_FLOAT_WORD(p_h, is & 0xfffff000);
+    p_l = v - (p_h - u);
+    z_h = cp_h * p_h; /* cp_h+cp_l = 2/(3*log2) */
+    z_l = cp_l * p_h + p_l * cp + dp_l[k];
+    /* log2(ax) = (s+..)*2/(3*log2) = n + dp_h + z_h + z_l */
+    t = (float)n;
+    t1 = (((z_h + z_l) + dp_h[k]) + t);
+    GET_FLOAT_WORD(is, t1);
+    SET_FLOAT_WORD(t1, is & 0xfffff000);
+    t2 = z_l - (((t1 - t) - dp_h[k]) - z_h);
+  }
 
-	/* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
-	GET_FLOAT_WORD(is, y);
-	SET_FLOAT_WORD(y1, is & 0xfffff000);
-	p_l = (y-y1)*t1 + y*t2;
-	p_h = y1*t1;
-	z = p_l + p_h;
-	GET_FLOAT_WORD(j, z);
-	if (j > 0x43000000)          /* if z > 128 */
-		return sn*huge*huge;  /* overflow */
-	else if (j == 0x43000000) {  /* if z == 128 */
-		if (p_l + ovt > z - p_h)
-			return sn*huge*huge;  /* overflow */
-	} else if ((j&0x7fffffff) > 0x43160000)  /* z < -150 */ // FIXME: check should be  (uint32_t)j > 0xc3160000
-		return sn*tiny*tiny;  /* underflow */
-	else if (j == 0xc3160000) {  /* z == -150 */
-		if (p_l <= z-p_h)
-			return sn*tiny*tiny;  /* underflow */
-	}
-	/*
-	 * compute 2**(p_h+p_l)
-	 */
-	i = j & 0x7fffffff;
-	k = (i>>23) - 0x7f;
-	n = 0;
-	if (i > 0x3f000000) {   /* if |z| > 0.5, set n = [z+0.5] */
-		n = j + (0x00800000>>(k+1));
-		k = ((n&0x7fffffff)>>23) - 0x7f;  /* new k for n */
-		SET_FLOAT_WORD(t, n & ~(0x007fffff>>k));
-		n = ((n&0x007fffff)|0x00800000)>>(23-k);
-		if (j < 0)
-			n = -n;
-		p_h -= t;
-	}
-	t = p_l + p_h;
-	GET_FLOAT_WORD(is, t);
-	SET_FLOAT_WORD(t, is & 0xffff8000);
-	u = t*lg2_h;
-	v = (p_l-(t-p_h))*lg2 + t*lg2_l;
-	z = u + v;
-	w = v - (z - u);
-	t = z*z;
-	t1 = z - t*(P1+t*(P2+t*(P3+t*(P4+t*P5))));
-	r = (z*t1)/(t1-2.0f) - (w+z*w);
-	z = 1.0f - (r - z);
-	GET_FLOAT_WORD(j, z);
-	j += n<<23;
-	if ((j>>23) <= 0)  /* subnormal output */
-		z = scalbnf(z, n);
-	else
-		SET_FLOAT_WORD(z, j);
-	return sn*z;
+  /* split up y into y1+y2 and compute (y1+y2)*(t1+t2) */
+  GET_FLOAT_WORD(is, y);
+  SET_FLOAT_WORD(y1, is & 0xfffff000);
+  p_l = (y - y1) * t1 + y * t2;
+  p_h = y1 * t1;
+  z = p_l + p_h;
+  GET_FLOAT_WORD(j, z);
+  if (j > 0x43000000)         /* if z > 128 */
+    return sn * huge * huge;  /* overflow */
+  else if (j == 0x43000000) { /* if z == 128 */
+    if (p_l + ovt > z - p_h)
+      return sn * huge * huge;                              /* overflow */
+  } else if ((j & 0x7fffffff) > 0x43160000) /* z < -150 */  // FIXME: check
+                                                            // should be
+                                                            // (uint32_t)j >
+                                                            // 0xc3160000
+    return sn * tiny * tiny;                                /* underflow */
+  else if (j == 0xc3160000) {                               /* z == -150 */
+    if (p_l <= z - p_h)
+      return sn * tiny * tiny; /* underflow */
+  }
+  /*
+   * compute 2**(p_h+p_l)
+   */
+  i = j & 0x7fffffff;
+  k = (i >> 23) - 0x7f;
+  n = 0;
+  if (i > 0x3f000000) { /* if |z| > 0.5, set n = [z+0.5] */
+    n = j + (0x00800000 >> (k + 1));
+    k = ((n & 0x7fffffff) >> 23) - 0x7f; /* new k for n */
+    SET_FLOAT_WORD(t, n & ~(0x007fffff >> k));
+    n = ((n & 0x007fffff) | 0x00800000) >> (23 - k);
+    if (j < 0)
+      n = -n;
+    p_h -= t;
+  }
+  t = p_l + p_h;
+  GET_FLOAT_WORD(is, t);
+  SET_FLOAT_WORD(t, is & 0xffff8000);
+  u = t * lg2_h;
+  v = (p_l - (t - p_h)) * lg2 + t * lg2_l;
+  z = u + v;
+  w = v - (z - u);
+  t = z * z;
+  t1 = z - t * (P1 + t * (P2 + t * (P3 + t * (P4 + t * P5))));
+  r = (z * t1) / (t1 - 2.0f) - (w + z * w);
+  z = 1.0f - (r - z);
+  GET_FLOAT_WORD(j, z);
+  j += n << 23;
+  if ((j >> 23) <= 0) /* subnormal output */
+    z = scalbnf(z, n);
+  else
+    SET_FLOAT_WORD(z, j);
+  return sn * z;
 }
diff --git a/fusl/src/math/powl.c b/fusl/src/math/powl.c
index 5b6da07..d7737b0 100644
--- a/fusl/src/math/powl.c
+++ b/fusl/src/math/powl.c
@@ -70,9 +70,8 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double powl(long double x, long double y)
-{
-	return pow(x, y);
+long double powl(long double x, long double y) {
+  return pow(x, y);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
 
@@ -83,91 +82,61 @@
  * on the domain  2^(-1/32) - 1  <=  x  <=  2^(1/32) - 1
  */
 static const long double P[] = {
- 8.3319510773868690346226E-4L,
- 4.9000050881978028599627E-1L,
- 1.7500123722550302671919E0L,
- 1.4000100839971580279335E0L,
+    8.3319510773868690346226E-4L, 4.9000050881978028599627E-1L,
+    1.7500123722550302671919E0L, 1.4000100839971580279335E0L,
 };
 static const long double Q[] = {
-/* 1.0000000000000000000000E0L,*/
- 5.2500282295834889175431E0L,
- 8.4000598057587009834666E0L,
- 4.2000302519914740834728E0L,
+    /* 1.0000000000000000000000E0L,*/
+    5.2500282295834889175431E0L, 8.4000598057587009834666E0L,
+    4.2000302519914740834728E0L,
 };
 /* A[i] = 2^(-i/32), rounded to IEEE long double precision.
  * If i is even, A[i] + B[i/2] gives additional accuracy.
  */
 static const long double A[33] = {
- 1.0000000000000000000000E0L,
- 9.7857206208770013448287E-1L,
- 9.5760328069857364691013E-1L,
- 9.3708381705514995065011E-1L,
- 9.1700404320467123175367E-1L,
- 8.9735453750155359320742E-1L,
- 8.7812608018664974155474E-1L,
- 8.5930964906123895780165E-1L,
- 8.4089641525371454301892E-1L,
- 8.2287773907698242225554E-1L,
- 8.0524516597462715409607E-1L,
- 7.8799042255394324325455E-1L,
- 7.7110541270397041179298E-1L,
- 7.5458221379671136985669E-1L,
- 7.3841307296974965571198E-1L,
- 7.2259040348852331001267E-1L,
- 7.0710678118654752438189E-1L,
- 6.9195494098191597746178E-1L,
- 6.7712777346844636413344E-1L,
- 6.6261832157987064729696E-1L,
- 6.4841977732550483296079E-1L,
- 6.3452547859586661129850E-1L,
- 6.2092890603674202431705E-1L,
- 6.0762367999023443907803E-1L,
- 5.9460355750136053334378E-1L,
- 5.8186242938878875689693E-1L,
- 5.6939431737834582684856E-1L,
- 5.5719337129794626814472E-1L,
- 5.4525386633262882960438E-1L,
- 5.3357020033841180906486E-1L,
- 5.2213689121370692017331E-1L,
- 5.1094857432705833910408E-1L,
- 5.0000000000000000000000E-1L,
+    1.0000000000000000000000E0L,  9.7857206208770013448287E-1L,
+    9.5760328069857364691013E-1L, 9.3708381705514995065011E-1L,
+    9.1700404320467123175367E-1L, 8.9735453750155359320742E-1L,
+    8.7812608018664974155474E-1L, 8.5930964906123895780165E-1L,
+    8.4089641525371454301892E-1L, 8.2287773907698242225554E-1L,
+    8.0524516597462715409607E-1L, 7.8799042255394324325455E-1L,
+    7.7110541270397041179298E-1L, 7.5458221379671136985669E-1L,
+    7.3841307296974965571198E-1L, 7.2259040348852331001267E-1L,
+    7.0710678118654752438189E-1L, 6.9195494098191597746178E-1L,
+    6.7712777346844636413344E-1L, 6.6261832157987064729696E-1L,
+    6.4841977732550483296079E-1L, 6.3452547859586661129850E-1L,
+    6.2092890603674202431705E-1L, 6.0762367999023443907803E-1L,
+    5.9460355750136053334378E-1L, 5.8186242938878875689693E-1L,
+    5.6939431737834582684856E-1L, 5.5719337129794626814472E-1L,
+    5.4525386633262882960438E-1L, 5.3357020033841180906486E-1L,
+    5.2213689121370692017331E-1L, 5.1094857432705833910408E-1L,
+    5.0000000000000000000000E-1L,
 };
 static const long double B[17] = {
- 0.0000000000000000000000E0L,
- 2.6176170809902549338711E-20L,
--1.0126791927256478897086E-20L,
- 1.3438228172316276937655E-21L,
- 1.2207982955417546912101E-20L,
--6.3084814358060867200133E-21L,
- 1.3164426894366316434230E-20L,
--1.8527916071632873716786E-20L,
- 1.8950325588932570796551E-20L,
- 1.5564775779538780478155E-20L,
- 6.0859793637556860974380E-21L,
--2.0208749253662532228949E-20L,
- 1.4966292219224761844552E-20L,
- 3.3540909728056476875639E-21L,
--8.6987564101742849540743E-22L,
--1.2327176863327626135542E-20L,
- 0.0000000000000000000000E0L,
+    0.0000000000000000000000E0L,    2.6176170809902549338711E-20L,
+    -1.0126791927256478897086E-20L, 1.3438228172316276937655E-21L,
+    1.2207982955417546912101E-20L,  -6.3084814358060867200133E-21L,
+    1.3164426894366316434230E-20L,  -1.8527916071632873716786E-20L,
+    1.8950325588932570796551E-20L,  1.5564775779538780478155E-20L,
+    6.0859793637556860974380E-21L,  -2.0208749253662532228949E-20L,
+    1.4966292219224761844552E-20L,  3.3540909728056476875639E-21L,
+    -8.6987564101742849540743E-22L, -1.2327176863327626135542E-20L,
+    0.0000000000000000000000E0L,
 };
 
 /* 2^x = 1 + x P(x),
  * on the interval -1/32 <= x <= 0
  */
 static const long double R[] = {
- 1.5089970579127659901157E-5L,
- 1.5402715328927013076125E-4L,
- 1.3333556028915671091390E-3L,
- 9.6181291046036762031786E-3L,
- 5.5504108664798463044015E-2L,
- 2.4022650695910062854352E-1L,
- 6.9314718055994530931447E-1L,
+    1.5089970579127659901157E-5L, 1.5402715328927013076125E-4L,
+    1.3333556028915671091390E-3L, 9.6181291046036762031786E-3L,
+    5.5504108664798463044015E-2L, 2.4022650695910062854352E-1L,
+    6.9314718055994530931447E-1L,
 };
 
-#define MEXP (NXT*16384.0L)
+#define MEXP (NXT * 16384.0L)
 /* The following if denormal numbers are supported, else -MEXP: */
-#define MNEXP (-NXT*(16384.0L+64.0L))
+#define MNEXP (-NXT * (16384.0L + 64.0L))
 /* log2(e) - 1 */
 #define LOG2EA 0.44269504088896340735992L
 
@@ -191,231 +160,228 @@
 static long double reducl(long double);
 static long double powil(long double, int);
 
-long double powl(long double x, long double y)
-{
-	/* double F, Fa, Fb, G, Ga, Gb, H, Ha, Hb */
-	int i, nflg, iyflg, yoddint;
-	long e;
-	volatile long double z=0;
-	long double w=0, W=0, Wa=0, Wb=0, ya=0, yb=0, u=0;
+long double powl(long double x, long double y) {
+  /* double F, Fa, Fb, G, Ga, Gb, H, Ha, Hb */
+  int i, nflg, iyflg, yoddint;
+  long e;
+  volatile long double z = 0;
+  long double w = 0, W = 0, Wa = 0, Wb = 0, ya = 0, yb = 0, u = 0;
 
-	/* make sure no invalid exception is raised by nan comparision */
-	if (isnan(x)) {
-		if (!isnan(y) && y == 0.0)
-			return 1.0;
-		return x;
-	}
-	if (isnan(y)) {
-		if (x == 1.0)
-			return 1.0;
-		return y;
-	}
-	if (x == 1.0)
-		return 1.0; /* 1**y = 1, even if y is nan */
-	if (x == -1.0 && !isfinite(y))
-		return 1.0; /* -1**inf = 1 */
-	if (y == 0.0)
-		return 1.0; /* x**0 = 1, even if x is nan */
-	if (y == 1.0)
-		return x;
-	if (y >= LDBL_MAX) {
-		if (x > 1.0 || x < -1.0)
-			return INFINITY;
-		if (x != 0.0)
-			return 0.0;
-	}
-	if (y <= -LDBL_MAX) {
-		if (x > 1.0 || x < -1.0)
-			return 0.0;
-		if (x != 0.0 || y == -INFINITY)
-			return INFINITY;
-	}
-	if (x >= LDBL_MAX) {
-		if (y > 0.0)
-			return INFINITY;
-		return 0.0;
-	}
+  /* make sure no invalid exception is raised by nan comparision */
+  if (isnan(x)) {
+    if (!isnan(y) && y == 0.0)
+      return 1.0;
+    return x;
+  }
+  if (isnan(y)) {
+    if (x == 1.0)
+      return 1.0;
+    return y;
+  }
+  if (x == 1.0)
+    return 1.0; /* 1**y = 1, even if y is nan */
+  if (x == -1.0 && !isfinite(y))
+    return 1.0; /* -1**inf = 1 */
+  if (y == 0.0)
+    return 1.0; /* x**0 = 1, even if x is nan */
+  if (y == 1.0)
+    return x;
+  if (y >= LDBL_MAX) {
+    if (x > 1.0 || x < -1.0)
+      return INFINITY;
+    if (x != 0.0)
+      return 0.0;
+  }
+  if (y <= -LDBL_MAX) {
+    if (x > 1.0 || x < -1.0)
+      return 0.0;
+    if (x != 0.0 || y == -INFINITY)
+      return INFINITY;
+  }
+  if (x >= LDBL_MAX) {
+    if (y > 0.0)
+      return INFINITY;
+    return 0.0;
+  }
 
-	w = floorl(y);
+  w = floorl(y);
 
-	/* Set iyflg to 1 if y is an integer. */
-	iyflg = 0;
-	if (w == y)
-		iyflg = 1;
+  /* Set iyflg to 1 if y is an integer. */
+  iyflg = 0;
+  if (w == y)
+    iyflg = 1;
 
-	/* Test for odd integer y. */
-	yoddint = 0;
-	if (iyflg) {
-		ya = fabsl(y);
-		ya = floorl(0.5 * ya);
-		yb = 0.5 * fabsl(w);
-		if( ya != yb )
-			yoddint = 1;
-	}
+  /* Test for odd integer y. */
+  yoddint = 0;
+  if (iyflg) {
+    ya = fabsl(y);
+    ya = floorl(0.5 * ya);
+    yb = 0.5 * fabsl(w);
+    if (ya != yb)
+      yoddint = 1;
+  }
 
-	if (x <= -LDBL_MAX) {
-		if (y > 0.0) {
-			if (yoddint)
-				return -INFINITY;
-			return INFINITY;
-		}
-		if (y < 0.0) {
-			if (yoddint)
-				return -0.0;
-			return 0.0;
-		}
-	}
-	nflg = 0; /* (x<0)**(odd int) */
-	if (x <= 0.0) {
-		if (x == 0.0) {
-			if (y < 0.0) {
-				if (signbit(x) && yoddint)
-					/* (-0.0)**(-odd int) = -inf, divbyzero */
-					return -1.0/0.0;
-				/* (+-0.0)**(negative) = inf, divbyzero */
-				return 1.0/0.0;
-			}
-			if (signbit(x) && yoddint)
-				return -0.0;
-			return 0.0;
-		}
-		if (iyflg == 0)
-			return (x - x) / (x - x); /* (x<0)**(non-int) is NaN */
-		/* (x<0)**(integer) */
-		if (yoddint)
-			nflg = 1; /* negate result */
-		x = -x;
-	}
-	/* (+integer)**(integer)  */
-	if (iyflg && floorl(x) == x && fabsl(y) < 32768.0) {
-		w = powil(x, (int)y);
-		return nflg ? -w : w;
-	}
+  if (x <= -LDBL_MAX) {
+    if (y > 0.0) {
+      if (yoddint)
+        return -INFINITY;
+      return INFINITY;
+    }
+    if (y < 0.0) {
+      if (yoddint)
+        return -0.0;
+      return 0.0;
+    }
+  }
+  nflg = 0; /* (x<0)**(odd int) */
+  if (x <= 0.0) {
+    if (x == 0.0) {
+      if (y < 0.0) {
+        if (signbit(x) && yoddint)
+          /* (-0.0)**(-odd int) = -inf, divbyzero */
+          return -1.0 / 0.0;
+        /* (+-0.0)**(negative) = inf, divbyzero */
+        return 1.0 / 0.0;
+      }
+      if (signbit(x) && yoddint)
+        return -0.0;
+      return 0.0;
+    }
+    if (iyflg == 0)
+      return (x - x) / (x - x); /* (x<0)**(non-int) is NaN */
+    /* (x<0)**(integer) */
+    if (yoddint)
+      nflg = 1; /* negate result */
+    x = -x;
+  }
+  /* (+integer)**(integer)  */
+  if (iyflg && floorl(x) == x && fabsl(y) < 32768.0) {
+    w = powil(x, (int)y);
+    return nflg ? -w : w;
+  }
 
-	/* separate significand from exponent */
-	x = frexpl(x, &i);
-	e = i;
+  /* separate significand from exponent */
+  x = frexpl(x, &i);
+  e = i;
 
-	/* find significand in antilog table A[] */
-	i = 1;
-	if (x <= A[17])
-		i = 17;
-	if (x <= A[i+8])
-		i += 8;
-	if (x <= A[i+4])
-		i += 4;
-	if (x <= A[i+2])
-		i += 2;
-	if (x >= A[1])
-		i = -1;
-	i += 1;
+  /* find significand in antilog table A[] */
+  i = 1;
+  if (x <= A[17])
+    i = 17;
+  if (x <= A[i + 8])
+    i += 8;
+  if (x <= A[i + 4])
+    i += 4;
+  if (x <= A[i + 2])
+    i += 2;
+  if (x >= A[1])
+    i = -1;
+  i += 1;
 
-	/* Find (x - A[i])/A[i]
-	 * in order to compute log(x/A[i]):
-	 *
-	 * log(x) = log( a x/a ) = log(a) + log(x/a)
-	 *
-	 * log(x/a) = log(1+v),  v = x/a - 1 = (x-a)/a
-	 */
-	x -= A[i];
-	x -= B[i/2];
-	x /= A[i];
+  /* Find (x - A[i])/A[i]
+   * in order to compute log(x/A[i]):
+   *
+   * log(x) = log( a x/a ) = log(a) + log(x/a)
+   *
+   * log(x/a) = log(1+v),  v = x/a - 1 = (x-a)/a
+   */
+  x -= A[i];
+  x -= B[i / 2];
+  x /= A[i];
 
-	/* rational approximation for log(1+v):
-	 *
-	 * log(1+v)  =  v  -  v**2/2  +  v**3 P(v) / Q(v)
-	 */
-	z = x*x;
-	w = x * (z * __polevll(x, P, 3) / __p1evll(x, Q, 3));
-	w = w - 0.5*z;
+  /* rational approximation for log(1+v):
+   *
+   * log(1+v)  =  v  -  v**2/2  +  v**3 P(v) / Q(v)
+   */
+  z = x * x;
+  w = x * (z * __polevll(x, P, 3) / __p1evll(x, Q, 3));
+  w = w - 0.5 * z;
 
-	/* Convert to base 2 logarithm:
-	 * multiply by log2(e) = 1 + LOG2EA
-	 */
-	z = LOG2EA * w;
-	z += w;
-	z += LOG2EA * x;
-	z += x;
+  /* Convert to base 2 logarithm:
+   * multiply by log2(e) = 1 + LOG2EA
+   */
+  z = LOG2EA * w;
+  z += w;
+  z += LOG2EA * x;
+  z += x;
 
-	/* Compute exponent term of the base 2 logarithm. */
-	w = -i;
-	w /= NXT;
-	w += e;
-	/* Now base 2 log of x is w + z. */
+  /* Compute exponent term of the base 2 logarithm. */
+  w = -i;
+  w /= NXT;
+  w += e;
+  /* Now base 2 log of x is w + z. */
 
-	/* Multiply base 2 log by y, in extended precision. */
+  /* Multiply base 2 log by y, in extended precision. */
 
-	/* separate y into large part ya
-	 * and small part yb less than 1/NXT
-	 */
-	ya = reducl(y);
-	yb = y - ya;
+  /* separate y into large part ya
+   * and small part yb less than 1/NXT
+   */
+  ya = reducl(y);
+  yb = y - ya;
 
-	/* (w+z)(ya+yb)
-	 * = w*ya + w*yb + z*y
-	 */
-	F = z * y  +  w * yb;
-	Fa = reducl(F);
-	Fb = F - Fa;
+  /* (w+z)(ya+yb)
+   * = w*ya + w*yb + z*y
+   */
+  F = z * y + w * yb;
+  Fa = reducl(F);
+  Fb = F - Fa;
 
-	G = Fa + w * ya;
-	Ga = reducl(G);
-	Gb = G - Ga;
+  G = Fa + w * ya;
+  Ga = reducl(G);
+  Gb = G - Ga;
 
-	H = Fb + Gb;
-	Ha = reducl(H);
-	w = (Ga + Ha) * NXT;
+  H = Fb + Gb;
+  Ha = reducl(H);
+  w = (Ga + Ha) * NXT;
 
-	/* Test the power of 2 for overflow */
-	if (w > MEXP)
-		return huge * huge;  /* overflow */
-	if (w < MNEXP)
-		return twom10000 * twom10000;  /* underflow */
+  /* Test the power of 2 for overflow */
+  if (w > MEXP)
+    return huge * huge; /* overflow */
+  if (w < MNEXP)
+    return twom10000 * twom10000; /* underflow */
 
-	e = w;
-	Hb = H - Ha;
+  e = w;
+  Hb = H - Ha;
 
-	if (Hb > 0.0) {
-		e += 1;
-		Hb -= 1.0/NXT;  /*0.0625L;*/
-	}
+  if (Hb > 0.0) {
+    e += 1;
+    Hb -= 1.0 / NXT; /*0.0625L;*/
+  }
 
-	/* Now the product y * log2(x)  =  Hb + e/NXT.
-	 *
-	 * Compute base 2 exponential of Hb,
-	 * where -0.0625 <= Hb <= 0.
-	 */
-	z = Hb * __polevll(Hb, R, 6);  /*  z = 2**Hb - 1  */
+  /* Now the product y * log2(x)  =  Hb + e/NXT.
+   *
+   * Compute base 2 exponential of Hb,
+   * where -0.0625 <= Hb <= 0.
+   */
+  z = Hb * __polevll(Hb, R, 6); /*  z = 2**Hb - 1  */
 
-	/* Express e/NXT as an integer plus a negative number of (1/NXT)ths.
-	 * Find lookup table entry for the fractional power of 2.
-	 */
-	if (e < 0)
-		i = 0;
-	else
-		i = 1;
-	i = e/NXT + i;
-	e = NXT*i - e;
-	w = A[e];
-	z = w * z;  /*  2**-e * ( 1 + (2**Hb-1) )  */
-	z = z + w;
-	z = scalbnl(z, i);  /* multiply by integer power of 2 */
+  /* Express e/NXT as an integer plus a negative number of (1/NXT)ths.
+   * Find lookup table entry for the fractional power of 2.
+   */
+  if (e < 0)
+    i = 0;
+  else
+    i = 1;
+  i = e / NXT + i;
+  e = NXT * i - e;
+  w = A[e];
+  z = w * z; /*  2**-e * ( 1 + (2**Hb-1) )  */
+  z = z + w;
+  z = scalbnl(z, i); /* multiply by integer power of 2 */
 
-	if (nflg)
-		z = -z;
-	return z;
+  if (nflg)
+    z = -z;
+  return z;
 }
 
-
 /* Find a multiple of 1/NXT that is within 1/NXT of x. */
-static long double reducl(long double x)
-{
-	long double t;
+static long double reducl(long double x) {
+  long double t;
 
-	t = x * NXT;
-	t = floorl(t);
-	t = t / NXT;
-	return t;
+  t = x * NXT;
+  t = floorl(t);
+  t = t / NXT;
+  return t;
 }
 
 /*
@@ -450,73 +416,71 @@
  * Returns MAXNUM on overflow, zero on underflow.
  */
 
-static long double powil(long double x, int nn)
-{
-	long double ww, y;
-	long double s;
-	int n, e, sign, lx;
+static long double powil(long double x, int nn) {
+  long double ww, y;
+  long double s;
+  int n, e, sign, lx;
 
-	if (nn == 0)
-		return 1.0;
+  if (nn == 0)
+    return 1.0;
 
-	if (nn < 0) {
-		sign = -1;
-		n = -nn;
-	} else {
-		sign = 1;
-		n = nn;
-	}
+  if (nn < 0) {
+    sign = -1;
+    n = -nn;
+  } else {
+    sign = 1;
+    n = nn;
+  }
 
-	/* Overflow detection */
+  /* Overflow detection */
 
-	/* Calculate approximate logarithm of answer */
-	s = x;
-	s = frexpl( s, &lx);
-	e = (lx - 1)*n;
-	if ((e == 0) || (e > 64) || (e < -64)) {
-		s = (s - 7.0710678118654752e-1L) / (s +  7.0710678118654752e-1L);
-		s = (2.9142135623730950L * s - 0.5 + lx) * nn * LOGE2L;
-	} else {
-		s = LOGE2L * e;
-	}
+  /* Calculate approximate logarithm of answer */
+  s = x;
+  s = frexpl(s, &lx);
+  e = (lx - 1) * n;
+  if ((e == 0) || (e > 64) || (e < -64)) {
+    s = (s - 7.0710678118654752e-1L) / (s + 7.0710678118654752e-1L);
+    s = (2.9142135623730950L * s - 0.5 + lx) * nn * LOGE2L;
+  } else {
+    s = LOGE2L * e;
+  }
 
-	if (s > MAXLOGL)
-		return huge * huge;  /* overflow */
+  if (s > MAXLOGL)
+    return huge * huge; /* overflow */
 
-	if (s < MINLOGL)
-		return twom10000 * twom10000;  /* underflow */
-	/* Handle tiny denormal answer, but with less accuracy
-	 * since roundoff error in 1.0/x will be amplified.
-	 * The precise demarcation should be the gradual underflow threshold.
-	 */
-	if (s < -MAXLOGL+2.0) {
-		x = 1.0/x;
-		sign = -sign;
-	}
+  if (s < MINLOGL)
+    return twom10000 * twom10000; /* underflow */
+  /* Handle tiny denormal answer, but with less accuracy
+   * since roundoff error in 1.0/x will be amplified.
+   * The precise demarcation should be the gradual underflow threshold.
+   */
+  if (s < -MAXLOGL + 2.0) {
+    x = 1.0 / x;
+    sign = -sign;
+  }
 
-	/* First bit of the power */
-	if (n & 1)
-		y = x;
-	else
-		y = 1.0;
+  /* First bit of the power */
+  if (n & 1)
+    y = x;
+  else
+    y = 1.0;
 
-	ww = x;
-	n >>= 1;
-	while (n) {
-		ww = ww * ww;   /* arg to the 2-to-the-kth power */
-		if (n & 1)     /* if that bit is set, then include in product */
-			y *= ww;
-		n >>= 1;
-	}
+  ww = x;
+  n >>= 1;
+  while (n) {
+    ww = ww * ww; /* arg to the 2-to-the-kth power */
+    if (n & 1)    /* if that bit is set, then include in product */
+      y *= ww;
+    n >>= 1;
+  }
 
-	if (sign < 0)
-		y = 1.0/y;
-	return y;
+  if (sign < 0)
+    y = 1.0 / y;
+  return y;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-long double powl(long double x, long double y)
-{
-	return pow(x, y);
+long double powl(long double x, long double y) {
+  return pow(x, y);
 }
 #endif
diff --git a/fusl/src/math/remainder.c b/fusl/src/math/remainder.c
index 6cd089c..ac85ee7 100644
--- a/fusl/src/math/remainder.c
+++ b/fusl/src/math/remainder.c
@@ -1,10 +1,9 @@
 #include <math.h>
 #include "libc.h"
 
-double remainder(double x, double y)
-{
-	int q;
-	return remquo(x, y, &q);
+double remainder(double x, double y) {
+  int q;
+  return remquo(x, y, &q);
 }
 
 weak_alias(remainder, drem);
diff --git a/fusl/src/math/remainderf.c b/fusl/src/math/remainderf.c
index 420d3bf..e336961 100644
--- a/fusl/src/math/remainderf.c
+++ b/fusl/src/math/remainderf.c
@@ -1,10 +1,9 @@
 #include <math.h>
 #include "libc.h"
 
-float remainderf(float x, float y)
-{
-	int q;
-	return remquof(x, y, &q);
+float remainderf(float x, float y) {
+  int q;
+  return remquof(x, y, &q);
 }
 
 weak_alias(remainderf, dremf);
diff --git a/fusl/src/math/remainderl.c b/fusl/src/math/remainderl.c
index 2a13c1d..039926c 100644
--- a/fusl/src/math/remainderl.c
+++ b/fusl/src/math/remainderl.c
@@ -2,14 +2,12 @@
 #include <float.h>
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double remainderl(long double x, long double y)
-{
-	return remainder(x, y);
+long double remainderl(long double x, long double y) {
+  return remainder(x, y);
 }
 #else
-long double remainderl(long double x, long double y)
-{
-	int q;
-	return remquol(x, y, &q);
+long double remainderl(long double x, long double y) {
+  int q;
+  return remquol(x, y, &q);
 }
 #endif
diff --git a/fusl/src/math/remquo.c b/fusl/src/math/remquo.c
index 59d5ad5..9436d29 100644
--- a/fusl/src/math/remquo.c
+++ b/fusl/src/math/remquo.c
@@ -1,82 +1,87 @@
 #include <math.h>
 #include <stdint.h>
 
-double remquo(double x, double y, int *quo)
-{
-	union {double f; uint64_t i;} ux = {x}, uy = {y};
-	int ex = ux.i>>52 & 0x7ff;
-	int ey = uy.i>>52 & 0x7ff;
-	int sx = ux.i>>63;
-	int sy = uy.i>>63;
-	uint32_t q;
-	uint64_t i;
-	uint64_t uxi = ux.i;
+double remquo(double x, double y, int* quo) {
+  union {
+    double f;
+    uint64_t i;
+  } ux = {x}, uy = {y};
+  int ex = ux.i >> 52 & 0x7ff;
+  int ey = uy.i >> 52 & 0x7ff;
+  int sx = ux.i >> 63;
+  int sy = uy.i >> 63;
+  uint32_t q;
+  uint64_t i;
+  uint64_t uxi = ux.i;
 
-	*quo = 0;
-	if (uy.i<<1 == 0 || isnan(y) || ex == 0x7ff)
-		return (x*y)/(x*y);
-	if (ux.i<<1 == 0)
-		return x;
+  *quo = 0;
+  if (uy.i << 1 == 0 || isnan(y) || ex == 0x7ff)
+    return (x * y) / (x * y);
+  if (ux.i << 1 == 0)
+    return x;
 
-	/* normalize x and y */
-	if (!ex) {
-		for (i = uxi<<12; i>>63 == 0; ex--, i <<= 1);
-		uxi <<= -ex + 1;
-	} else {
-		uxi &= -1ULL >> 12;
-		uxi |= 1ULL << 52;
-	}
-	if (!ey) {
-		for (i = uy.i<<12; i>>63 == 0; ey--, i <<= 1);
-		uy.i <<= -ey + 1;
-	} else {
-		uy.i &= -1ULL >> 12;
-		uy.i |= 1ULL << 52;
-	}
+  /* normalize x and y */
+  if (!ex) {
+    for (i = uxi << 12; i >> 63 == 0; ex--, i <<= 1)
+      ;
+    uxi <<= -ex + 1;
+  } else {
+    uxi &= -1ULL >> 12;
+    uxi |= 1ULL << 52;
+  }
+  if (!ey) {
+    for (i = uy.i << 12; i >> 63 == 0; ey--, i <<= 1)
+      ;
+    uy.i <<= -ey + 1;
+  } else {
+    uy.i &= -1ULL >> 12;
+    uy.i |= 1ULL << 52;
+  }
 
-	q = 0;
-	if (ex < ey) {
-		if (ex+1 == ey)
-			goto end;
-		return x;
-	}
+  q = 0;
+  if (ex < ey) {
+    if (ex + 1 == ey)
+      goto end;
+    return x;
+  }
 
-	/* x mod y */
-	for (; ex > ey; ex--) {
-		i = uxi - uy.i;
-		if (i >> 63 == 0) {
-			uxi = i;
-			q++;
-		}
-		uxi <<= 1;
-		q <<= 1;
-	}
-	i = uxi - uy.i;
-	if (i >> 63 == 0) {
-		uxi = i;
-		q++;
-	}
-	if (uxi == 0)
-		ex = -60;
-	else
-		for (; uxi>>52 == 0; uxi <<= 1, ex--);
+  /* x mod y */
+  for (; ex > ey; ex--) {
+    i = uxi - uy.i;
+    if (i >> 63 == 0) {
+      uxi = i;
+      q++;
+    }
+    uxi <<= 1;
+    q <<= 1;
+  }
+  i = uxi - uy.i;
+  if (i >> 63 == 0) {
+    uxi = i;
+    q++;
+  }
+  if (uxi == 0)
+    ex = -60;
+  else
+    for (; uxi >> 52 == 0; uxi <<= 1, ex--)
+      ;
 end:
-	/* scale result and decide between |x| and |x|-|y| */
-	if (ex > 0) {
-		uxi -= 1ULL << 52;
-		uxi |= (uint64_t)ex << 52;
-	} else {
-		uxi >>= -ex + 1;
-	}
-	ux.i = uxi;
-	x = ux.f;
-	if (sy)
-		y = -y;
-	if (ex == ey || (ex+1 == ey && (2*x > y || (2*x == y && q%2)))) {
-		x -= y;
-		q++;
-	}
-	q &= 0x7fffffff;
-	*quo = sx^sy ? -(int)q : (int)q;
-	return sx ? -x : x;
+  /* scale result and decide between |x| and |x|-|y| */
+  if (ex > 0) {
+    uxi -= 1ULL << 52;
+    uxi |= (uint64_t)ex << 52;
+  } else {
+    uxi >>= -ex + 1;
+  }
+  ux.i = uxi;
+  x = ux.f;
+  if (sy)
+    y = -y;
+  if (ex == ey || (ex + 1 == ey && (2 * x > y || (2 * x == y && q % 2)))) {
+    x -= y;
+    q++;
+  }
+  q &= 0x7fffffff;
+  *quo = sx ^ sy ? -(int)q : (int)q;
+  return sx ? -x : x;
 }
diff --git a/fusl/src/math/remquof.c b/fusl/src/math/remquof.c
index 2f41ff7..0725096 100644
--- a/fusl/src/math/remquof.c
+++ b/fusl/src/math/remquof.c
@@ -1,82 +1,87 @@
 #include <math.h>
 #include <stdint.h>
 
-float remquof(float x, float y, int *quo)
-{
-	union {float f; uint32_t i;} ux = {x}, uy = {y};
-	int ex = ux.i>>23 & 0xff;
-	int ey = uy.i>>23 & 0xff;
-	int sx = ux.i>>31;
-	int sy = uy.i>>31;
-	uint32_t q;
-	uint32_t i;
-	uint32_t uxi = ux.i;
+float remquof(float x, float y, int* quo) {
+  union {
+    float f;
+    uint32_t i;
+  } ux = {x}, uy = {y};
+  int ex = ux.i >> 23 & 0xff;
+  int ey = uy.i >> 23 & 0xff;
+  int sx = ux.i >> 31;
+  int sy = uy.i >> 31;
+  uint32_t q;
+  uint32_t i;
+  uint32_t uxi = ux.i;
 
-	*quo = 0;
-	if (uy.i<<1 == 0 || isnan(y) || ex == 0xff)
-		return (x*y)/(x*y);
-	if (ux.i<<1 == 0)
-		return x;
+  *quo = 0;
+  if (uy.i << 1 == 0 || isnan(y) || ex == 0xff)
+    return (x * y) / (x * y);
+  if (ux.i << 1 == 0)
+    return x;
 
-	/* normalize x and y */
-	if (!ex) {
-		for (i = uxi<<9; i>>31 == 0; ex--, i <<= 1);
-		uxi <<= -ex + 1;
-	} else {
-		uxi &= -1U >> 9;
-		uxi |= 1U << 23;
-	}
-	if (!ey) {
-		for (i = uy.i<<9; i>>31 == 0; ey--, i <<= 1);
-		uy.i <<= -ey + 1;
-	} else {
-		uy.i &= -1U >> 9;
-		uy.i |= 1U << 23;
-	}
+  /* normalize x and y */
+  if (!ex) {
+    for (i = uxi << 9; i >> 31 == 0; ex--, i <<= 1)
+      ;
+    uxi <<= -ex + 1;
+  } else {
+    uxi &= -1U >> 9;
+    uxi |= 1U << 23;
+  }
+  if (!ey) {
+    for (i = uy.i << 9; i >> 31 == 0; ey--, i <<= 1)
+      ;
+    uy.i <<= -ey + 1;
+  } else {
+    uy.i &= -1U >> 9;
+    uy.i |= 1U << 23;
+  }
 
-	q = 0;
-	if (ex < ey) {
-		if (ex+1 == ey)
-			goto end;
-		return x;
-	}
+  q = 0;
+  if (ex < ey) {
+    if (ex + 1 == ey)
+      goto end;
+    return x;
+  }
 
-	/* x mod y */
-	for (; ex > ey; ex--) {
-		i = uxi - uy.i;
-		if (i >> 31 == 0) {
-			uxi = i;
-			q++;
-		}
-		uxi <<= 1;
-		q <<= 1;
-	}
-	i = uxi - uy.i;
-	if (i >> 31 == 0) {
-		uxi = i;
-		q++;
-	}
-	if (uxi == 0)
-		ex = -30;
-	else
-		for (; uxi>>23 == 0; uxi <<= 1, ex--);
+  /* x mod y */
+  for (; ex > ey; ex--) {
+    i = uxi - uy.i;
+    if (i >> 31 == 0) {
+      uxi = i;
+      q++;
+    }
+    uxi <<= 1;
+    q <<= 1;
+  }
+  i = uxi - uy.i;
+  if (i >> 31 == 0) {
+    uxi = i;
+    q++;
+  }
+  if (uxi == 0)
+    ex = -30;
+  else
+    for (; uxi >> 23 == 0; uxi <<= 1, ex--)
+      ;
 end:
-	/* scale result and decide between |x| and |x|-|y| */
-	if (ex > 0) {
-		uxi -= 1U << 23;
-		uxi |= (uint32_t)ex << 23;
-	} else {
-		uxi >>= -ex + 1;
-	}
-	ux.i = uxi;
-	x = ux.f;
-	if (sy)
-		y = -y;
-	if (ex == ey || (ex+1 == ey && (2*x > y || (2*x == y && q%2)))) {
-		x -= y;
-		q++;
-	}
-	q &= 0x7fffffff;
-	*quo = sx^sy ? -(int)q : (int)q;
-	return sx ? -x : x;
+  /* scale result and decide between |x| and |x|-|y| */
+  if (ex > 0) {
+    uxi -= 1U << 23;
+    uxi |= (uint32_t)ex << 23;
+  } else {
+    uxi >>= -ex + 1;
+  }
+  ux.i = uxi;
+  x = ux.f;
+  if (sy)
+    y = -y;
+  if (ex == ey || (ex + 1 == ey && (2 * x > y || (2 * x == y && q % 2)))) {
+    x -= y;
+    q++;
+  }
+  q &= 0x7fffffff;
+  *quo = sx ^ sy ? -(int)q : (int)q;
+  return sx ? -x : x;
 }
diff --git a/fusl/src/math/remquol.c b/fusl/src/math/remquol.c
index 9b065c0..d4cf47f 100644
--- a/fusl/src/math/remquol.c
+++ b/fusl/src/math/remquol.c
@@ -1,124 +1,124 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double remquol(long double x, long double y, int *quo)
-{
-	return remquo(x, y, quo);
+long double remquol(long double x, long double y, int* quo) {
+  return remquo(x, y, quo);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
-long double remquol(long double x, long double y, int *quo)
-{
-	union ldshape ux = {x}, uy = {y};
-	int ex = ux.i.se & 0x7fff;
-	int ey = uy.i.se & 0x7fff;
-	int sx = ux.i.se >> 15;
-	int sy = uy.i.se >> 15;
-	uint32_t q;
+long double remquol(long double x, long double y, int* quo) {
+  union ldshape ux = {x}, uy = {y};
+  int ex = ux.i.se & 0x7fff;
+  int ey = uy.i.se & 0x7fff;
+  int sx = ux.i.se >> 15;
+  int sy = uy.i.se >> 15;
+  uint32_t q;
 
-	*quo = 0;
-	if (y == 0 || isnan(y) || ex == 0x7fff)
-		return (x*y)/(x*y);
-	if (x == 0)
-		return x;
+  *quo = 0;
+  if (y == 0 || isnan(y) || ex == 0x7fff)
+    return (x * y) / (x * y);
+  if (x == 0)
+    return x;
 
-	/* normalize x and y */
-	if (!ex) {
-		ux.i.se = ex;
-		ux.f *= 0x1p120f;
-		ex = ux.i.se - 120;
-	}
-	if (!ey) {
-		uy.i.se = ey;
-		uy.f *= 0x1p120f;
-		ey = uy.i.se - 120;
-	}
+  /* normalize x and y */
+  if (!ex) {
+    ux.i.se = ex;
+    ux.f *= 0x1p120f;
+    ex = ux.i.se - 120;
+  }
+  if (!ey) {
+    uy.i.se = ey;
+    uy.f *= 0x1p120f;
+    ey = uy.i.se - 120;
+  }
 
-	q = 0;
-	if (ex >= ey) {
-		/* x mod y */
+  q = 0;
+  if (ex >= ey) {
+/* x mod y */
 #if LDBL_MANT_DIG == 64
-		uint64_t i, mx, my;
-		mx = ux.i.m;
-		my = uy.i.m;
-		for (; ex > ey; ex--) {
-			i = mx - my;
-			if (mx >= my) {
-				mx = 2*i;
-				q++;
-				q <<= 1;
-			} else if (2*mx < mx) {
-				mx = 2*mx - my;
-				q <<= 1;
-				q++;
-			} else {
-				mx = 2*mx;
-				q <<= 1;
-			}
-		}
-		i = mx - my;
-		if (mx >= my) {
-			mx = i;
-			q++;
-		}
-		if (mx == 0)
-			ex = -120;
-		else
-			for (; mx >> 63 == 0; mx *= 2, ex--);
-		ux.i.m = mx;
+    uint64_t i, mx, my;
+    mx = ux.i.m;
+    my = uy.i.m;
+    for (; ex > ey; ex--) {
+      i = mx - my;
+      if (mx >= my) {
+        mx = 2 * i;
+        q++;
+        q <<= 1;
+      } else if (2 * mx < mx) {
+        mx = 2 * mx - my;
+        q <<= 1;
+        q++;
+      } else {
+        mx = 2 * mx;
+        q <<= 1;
+      }
+    }
+    i = mx - my;
+    if (mx >= my) {
+      mx = i;
+      q++;
+    }
+    if (mx == 0)
+      ex = -120;
+    else
+      for (; mx >> 63 == 0; mx *= 2, ex--)
+        ;
+    ux.i.m = mx;
 #elif LDBL_MANT_DIG == 113
-		uint64_t hi, lo, xhi, xlo, yhi, ylo;
-		xhi = (ux.i2.hi & -1ULL>>16) | 1ULL<<48;
-		yhi = (uy.i2.hi & -1ULL>>16) | 1ULL<<48;
-		xlo = ux.i2.lo;
-		ylo = ux.i2.lo;
-		for (; ex > ey; ex--) {
-			hi = xhi - yhi;
-			lo = xlo - ylo;
-			if (xlo < ylo)
-				hi -= 1;
-			if (hi >> 63 == 0) {
-				xhi = 2*hi + (lo>>63);
-				xlo = 2*lo;
-				q++;
-			} else {
-				xhi = 2*xhi + (xlo>>63);
-				xlo = 2*xlo;
-			}
-			q <<= 1;
-		}
-		hi = xhi - yhi;
-		lo = xlo - ylo;
-		if (xlo < ylo)
-			hi -= 1;
-		if (hi >> 63 == 0) {
-			xhi = hi;
-			xlo = lo;
-			q++;
-		}
-		if ((xhi|xlo) == 0)
-			ex = -120;
-		else
-			for (; xhi >> 48 == 0; xhi = 2*xhi + (xlo>>63), xlo = 2*xlo, ex--);
-		ux.i2.hi = xhi;
-		ux.i2.lo = xlo;
+    uint64_t hi, lo, xhi, xlo, yhi, ylo;
+    xhi = (ux.i2.hi & -1ULL >> 16) | 1ULL << 48;
+    yhi = (uy.i2.hi & -1ULL >> 16) | 1ULL << 48;
+    xlo = ux.i2.lo;
+    ylo = ux.i2.lo;
+    for (; ex > ey; ex--) {
+      hi = xhi - yhi;
+      lo = xlo - ylo;
+      if (xlo < ylo)
+        hi -= 1;
+      if (hi >> 63 == 0) {
+        xhi = 2 * hi + (lo >> 63);
+        xlo = 2 * lo;
+        q++;
+      } else {
+        xhi = 2 * xhi + (xlo >> 63);
+        xlo = 2 * xlo;
+      }
+      q <<= 1;
+    }
+    hi = xhi - yhi;
+    lo = xlo - ylo;
+    if (xlo < ylo)
+      hi -= 1;
+    if (hi >> 63 == 0) {
+      xhi = hi;
+      xlo = lo;
+      q++;
+    }
+    if ((xhi | xlo) == 0)
+      ex = -120;
+    else
+      for (; xhi >> 48 == 0; xhi = 2 * xhi + (xlo >> 63), xlo = 2 * xlo, ex--)
+        ;
+    ux.i2.hi = xhi;
+    ux.i2.lo = xlo;
 #endif
-	}
+  }
 
-	/* scale result and decide between |x| and |x|-|y| */
-	if (ex <= 0) {
-		ux.i.se = ex + 120;
-		ux.f *= 0x1p-120f;
-	} else
-		ux.i.se = ex;
-	x = ux.f;
-	if (sy)
-		y = -y;
-	if (ex == ey || (ex+1 == ey && (2*x > y || (2*x == y && q%2)))) {
-		x -= y;
-		q++;
-	}
-	q &= 0x7fffffff;
-	*quo = sx^sy ? -(int)q : (int)q;
-	return sx ? -x : x;
+  /* scale result and decide between |x| and |x|-|y| */
+  if (ex <= 0) {
+    ux.i.se = ex + 120;
+    ux.f *= 0x1p-120f;
+  } else
+    ux.i.se = ex;
+  x = ux.f;
+  if (sy)
+    y = -y;
+  if (ex == ey || (ex + 1 == ey && (2 * x > y || (2 * x == y && q % 2)))) {
+    x -= y;
+    q++;
+  }
+  q &= 0x7fffffff;
+  *quo = sx ^ sy ? -(int)q : (int)q;
+  return sx ? -x : x;
 }
 #endif
diff --git a/fusl/src/math/rint.c b/fusl/src/math/rint.c
index fbba390..8d2447e 100644
--- a/fusl/src/math/rint.c
+++ b/fusl/src/math/rint.c
@@ -2,27 +2,29 @@
 #include <math.h>
 #include <stdint.h>
 
-#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1
+#if FLT_EVAL_METHOD == 0 || FLT_EVAL_METHOD == 1
 #define EPS DBL_EPSILON
-#elif FLT_EVAL_METHOD==2
+#elif FLT_EVAL_METHOD == 2
 #define EPS LDBL_EPSILON
 #endif
-static const double_t toint = 1/EPS;
+static const double_t toint = 1 / EPS;
 
-double rint(double x)
-{
-	union {double f; uint64_t i;} u = {x};
-	int e = u.i>>52 & 0x7ff;
-	int s = u.i>>63;
-	double_t y;
+double rint(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  int e = u.i >> 52 & 0x7ff;
+  int s = u.i >> 63;
+  double_t y;
 
-	if (e >= 0x3ff+52)
-		return x;
-	if (s)
-		y = x - toint + toint;
-	else
-		y = x + toint - toint;
-	if (y == 0)
-		return s ? -0.0 : 0;
-	return y;
+  if (e >= 0x3ff + 52)
+    return x;
+  if (s)
+    y = x - toint + toint;
+  else
+    y = x + toint - toint;
+  if (y == 0)
+    return s ? -0.0 : 0;
+  return y;
 }
diff --git a/fusl/src/math/rintf.c b/fusl/src/math/rintf.c
index 9047688..0ed0ecc 100644
--- a/fusl/src/math/rintf.c
+++ b/fusl/src/math/rintf.c
@@ -2,29 +2,31 @@
 #include <math.h>
 #include <stdint.h>
 
-#if FLT_EVAL_METHOD==0
+#if FLT_EVAL_METHOD == 0
 #define EPS FLT_EPSILON
-#elif FLT_EVAL_METHOD==1
+#elif FLT_EVAL_METHOD == 1
 #define EPS DBL_EPSILON
-#elif FLT_EVAL_METHOD==2
+#elif FLT_EVAL_METHOD == 2
 #define EPS LDBL_EPSILON
 #endif
-static const float_t toint = 1/EPS;
+static const float_t toint = 1 / EPS;
 
-float rintf(float x)
-{
-	union {float f; uint32_t i;} u = {x};
-	int e = u.i>>23 & 0xff;
-	int s = u.i>>31;
-	float_t y;
+float rintf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  int e = u.i >> 23 & 0xff;
+  int s = u.i >> 31;
+  float_t y;
 
-	if (e >= 0x7f+23)
-		return x;
-	if (s)
-		y = x - toint + toint;
-	else
-		y = x + toint - toint;
-	if (y == 0)
-		return s ? -0.0f : 0.0f;
-	return y;
+  if (e >= 0x7f + 23)
+    return x;
+  if (s)
+    y = x - toint + toint;
+  else
+    y = x + toint - toint;
+  if (y == 0)
+    return s ? -0.0f : 0.0f;
+  return y;
 }
diff --git a/fusl/src/math/rintl.c b/fusl/src/math/rintl.c
index 374327d..e5b5267 100644
--- a/fusl/src/math/rintl.c
+++ b/fusl/src/math/rintl.c
@@ -1,29 +1,27 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double rintl(long double x)
-{
-	return rint(x);
+long double rintl(long double x) {
+  return rint(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
 
-static const long double toint = 1/LDBL_EPSILON;
+static const long double toint = 1 / LDBL_EPSILON;
 
-long double rintl(long double x)
-{
-	union ldshape u = {x};
-	int e = u.i.se & 0x7fff;
-	int s = u.i.se >> 15;
-	long double y;
+long double rintl(long double x) {
+  union ldshape u = {x};
+  int e = u.i.se & 0x7fff;
+  int s = u.i.se >> 15;
+  long double y;
 
-	if (e >= 0x3fff+LDBL_MANT_DIG-1)
-		return x;
-	if (s)
-		y = x - toint + toint;
-	else
-		y = x + toint - toint;
-	if (y == 0)
-		return 0*x;
-	return y;
+  if (e >= 0x3fff + LDBL_MANT_DIG - 1)
+    return x;
+  if (s)
+    y = x - toint + toint;
+  else
+    y = x + toint - toint;
+  if (y == 0)
+    return 0 * x;
+  return y;
 }
 #endif
diff --git a/fusl/src/math/round.c b/fusl/src/math/round.c
index 130d58d..ad1baa8 100644
--- a/fusl/src/math/round.c
+++ b/fusl/src/math/round.c
@@ -1,35 +1,37 @@
 #include "libm.h"
 
-#if FLT_EVAL_METHOD==0 || FLT_EVAL_METHOD==1
+#if FLT_EVAL_METHOD == 0 || FLT_EVAL_METHOD == 1
 #define EPS DBL_EPSILON
-#elif FLT_EVAL_METHOD==2
+#elif FLT_EVAL_METHOD == 2
 #define EPS LDBL_EPSILON
 #endif
-static const double_t toint = 1/EPS;
+static const double_t toint = 1 / EPS;
 
-double round(double x)
-{
-	union {double f; uint64_t i;} u = {x};
-	int e = u.i >> 52 & 0x7ff;
-	double_t y;
+double round(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  int e = u.i >> 52 & 0x7ff;
+  double_t y;
 
-	if (e >= 0x3ff+52)
-		return x;
-	if (u.i >> 63)
-		x = -x;
-	if (e < 0x3ff-1) {
-		/* raise inexact if x!=0 */
-		FORCE_EVAL(x + toint);
-		return 0*u.f;
-	}
-	y = x + toint - toint - x;
-	if (y > 0.5)
-		y = y + x - 1;
-	else if (y <= -0.5)
-		y = y + x + 1;
-	else
-		y = y + x;
-	if (u.i >> 63)
-		y = -y;
-	return y;
+  if (e >= 0x3ff + 52)
+    return x;
+  if (u.i >> 63)
+    x = -x;
+  if (e < 0x3ff - 1) {
+    /* raise inexact if x!=0 */
+    FORCE_EVAL(x + toint);
+    return 0 * u.f;
+  }
+  y = x + toint - toint - x;
+  if (y > 0.5)
+    y = y + x - 1;
+  else if (y <= -0.5)
+    y = y + x + 1;
+  else
+    y = y + x;
+  if (u.i >> 63)
+    y = -y;
+  return y;
 }
diff --git a/fusl/src/math/roundf.c b/fusl/src/math/roundf.c
index e8210af..55a38dd 100644
--- a/fusl/src/math/roundf.c
+++ b/fusl/src/math/roundf.c
@@ -1,36 +1,38 @@
 #include "libm.h"
 
-#if FLT_EVAL_METHOD==0
+#if FLT_EVAL_METHOD == 0
 #define EPS FLT_EPSILON
-#elif FLT_EVAL_METHOD==1
+#elif FLT_EVAL_METHOD == 1
 #define EPS DBL_EPSILON
-#elif FLT_EVAL_METHOD==2
+#elif FLT_EVAL_METHOD == 2
 #define EPS LDBL_EPSILON
 #endif
-static const float_t toint = 1/EPS;
+static const float_t toint = 1 / EPS;
 
-float roundf(float x)
-{
-	union {float f; uint32_t i;} u = {x};
-	int e = u.i >> 23 & 0xff;
-	float_t y;
+float roundf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  int e = u.i >> 23 & 0xff;
+  float_t y;
 
-	if (e >= 0x7f+23)
-		return x;
-	if (u.i >> 31)
-		x = -x;
-	if (e < 0x7f-1) {
-		FORCE_EVAL(x + toint);
-		return 0*u.f;
-	}
-	y = x + toint - toint - x;
-	if (y > 0.5f)
-		y = y + x - 1;
-	else if (y <= -0.5f)
-		y = y + x + 1;
-	else
-		y = y + x;
-	if (u.i >> 31)
-		y = -y;
-	return y;
+  if (e >= 0x7f + 23)
+    return x;
+  if (u.i >> 31)
+    x = -x;
+  if (e < 0x7f - 1) {
+    FORCE_EVAL(x + toint);
+    return 0 * u.f;
+  }
+  y = x + toint - toint - x;
+  if (y > 0.5f)
+    y = y + x - 1;
+  else if (y <= -0.5f)
+    y = y + x + 1;
+  else
+    y = y + x;
+  if (u.i >> 31)
+    y = -y;
+  return y;
 }
diff --git a/fusl/src/math/roundl.c b/fusl/src/math/roundl.c
index f4ff682..adb580a 100644
--- a/fusl/src/math/roundl.c
+++ b/fusl/src/math/roundl.c
@@ -1,37 +1,35 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double roundl(long double x)
-{
-	return round(x);
+long double roundl(long double x) {
+  return round(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
 
-static const long double toint = 1/LDBL_EPSILON;
+static const long double toint = 1 / LDBL_EPSILON;
 
-long double roundl(long double x)
-{
-	union ldshape u = {x};
-	int e = u.i.se & 0x7fff;
-	long double y;
+long double roundl(long double x) {
+  union ldshape u = {x};
+  int e = u.i.se & 0x7fff;
+  long double y;
 
-	if (e >= 0x3fff+LDBL_MANT_DIG-1)
-		return x;
-	if (u.i.se >> 15)
-		x = -x;
-	if (e < 0x3fff-1) {
-		FORCE_EVAL(x + toint);
-		return 0*u.f;
-	}
-	y = x + toint - toint - x;
-	if (y > 0.5)
-		y = y + x - 1;
-	else if (y <= -0.5)
-		y = y + x + 1;
-	else
-		y = y + x;
-	if (u.i.se >> 15)
-		y = -y;
-	return y;
+  if (e >= 0x3fff + LDBL_MANT_DIG - 1)
+    return x;
+  if (u.i.se >> 15)
+    x = -x;
+  if (e < 0x3fff - 1) {
+    FORCE_EVAL(x + toint);
+    return 0 * u.f;
+  }
+  y = x + toint - toint - x;
+  if (y > 0.5)
+    y = y + x - 1;
+  else if (y <= -0.5)
+    y = y + x + 1;
+  else
+    y = y + x;
+  if (u.i.se >> 15)
+    y = -y;
+  return y;
 }
 #endif
diff --git a/fusl/src/math/scalb.c b/fusl/src/math/scalb.c
index efe69e6..49cdb5a 100644
--- a/fusl/src/math/scalb.c
+++ b/fusl/src/math/scalb.c
@@ -18,18 +18,20 @@
 #define _GNU_SOURCE
 #include <math.h>
 
-double scalb(double x, double fn)
-{
-	if (isnan(x) || isnan(fn))
-		return x*fn;
-	if (!isfinite(fn)) {
-		if (fn > 0.0)
-			return x*fn;
-		else
-			return x/(-fn);
-	}
-	if (rint(fn) != fn) return (fn-fn)/(fn-fn);
-	if ( fn > 65000.0) return scalbn(x, 65000);
-	if (-fn > 65000.0) return scalbn(x,-65000);
-	return scalbn(x,(int)fn);
+double scalb(double x, double fn) {
+  if (isnan(x) || isnan(fn))
+    return x * fn;
+  if (!isfinite(fn)) {
+    if (fn > 0.0)
+      return x * fn;
+    else
+      return x / (-fn);
+  }
+  if (rint(fn) != fn)
+    return (fn - fn) / (fn - fn);
+  if (fn > 65000.0)
+    return scalbn(x, 65000);
+  if (-fn > 65000.0)
+    return scalbn(x, -65000);
+  return scalbn(x, (int)fn);
 }
diff --git a/fusl/src/math/scalbf.c b/fusl/src/math/scalbf.c
index f44ed5b..d0f2831 100644
--- a/fusl/src/math/scalbf.c
+++ b/fusl/src/math/scalbf.c
@@ -16,17 +16,20 @@
 #define _GNU_SOURCE
 #include <math.h>
 
-float scalbf(float x, float fn)
-{
-	if (isnan(x) || isnan(fn)) return x*fn;
-	if (!isfinite(fn)) {
-		if (fn > 0.0f)
-			return x*fn;
-		else
-			return x/(-fn);
-	}
-	if (rintf(fn) != fn) return (fn-fn)/(fn-fn);
-	if ( fn > 65000.0f) return scalbnf(x, 65000);
-	if (-fn > 65000.0f) return scalbnf(x,-65000);
-	return scalbnf(x,(int)fn);
+float scalbf(float x, float fn) {
+  if (isnan(x) || isnan(fn))
+    return x * fn;
+  if (!isfinite(fn)) {
+    if (fn > 0.0f)
+      return x * fn;
+    else
+      return x / (-fn);
+  }
+  if (rintf(fn) != fn)
+    return (fn - fn) / (fn - fn);
+  if (fn > 65000.0f)
+    return scalbnf(x, 65000);
+  if (-fn > 65000.0f)
+    return scalbnf(x, -65000);
+  return scalbnf(x, (int)fn);
 }
diff --git a/fusl/src/math/scalbln.c b/fusl/src/math/scalbln.c
index e6f3f19..fc59ea9 100644
--- a/fusl/src/math/scalbln.c
+++ b/fusl/src/math/scalbln.c
@@ -1,11 +1,10 @@
 #include <limits.h>
 #include <math.h>
 
-double scalbln(double x, long n)
-{
-	if (n > INT_MAX)
-		n = INT_MAX;
-	else if (n < INT_MIN)
-		n = INT_MIN;
-	return scalbn(x, n);
+double scalbln(double x, long n) {
+  if (n > INT_MAX)
+    n = INT_MAX;
+  else if (n < INT_MIN)
+    n = INT_MIN;
+  return scalbn(x, n);
 }
diff --git a/fusl/src/math/scalblnf.c b/fusl/src/math/scalblnf.c
index d8e8166..8eb6fc4 100644
--- a/fusl/src/math/scalblnf.c
+++ b/fusl/src/math/scalblnf.c
@@ -1,11 +1,10 @@
 #include <limits.h>
 #include <math.h>
 
-float scalblnf(float x, long n)
-{
-	if (n > INT_MAX)
-		n = INT_MAX;
-	else if (n < INT_MIN)
-		n = INT_MIN;
-	return scalbnf(x, n);
+float scalblnf(float x, long n) {
+  if (n > INT_MAX)
+    n = INT_MAX;
+  else if (n < INT_MIN)
+    n = INT_MIN;
+  return scalbnf(x, n);
 }
diff --git a/fusl/src/math/scalblnl.c b/fusl/src/math/scalblnl.c
index 854c51c..7a0084f 100644
--- a/fusl/src/math/scalblnl.c
+++ b/fusl/src/math/scalblnl.c
@@ -3,17 +3,15 @@
 #include <float.h>
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double scalblnl(long double x, long n)
-{
-	return scalbln(x, n);
+long double scalblnl(long double x, long n) {
+  return scalbln(x, n);
 }
 #else
-long double scalblnl(long double x, long n)
-{
-	if (n > INT_MAX)
-		n = INT_MAX;
-	else if (n < INT_MIN)
-		n = INT_MIN;
-	return scalbnl(x, n);
+long double scalblnl(long double x, long n) {
+  if (n > INT_MAX)
+    n = INT_MAX;
+  else if (n < INT_MIN)
+    n = INT_MIN;
+  return scalbnl(x, n);
 }
 #endif
diff --git a/fusl/src/math/scalbn.c b/fusl/src/math/scalbn.c
index 530e07c..acfc13d 100644
--- a/fusl/src/math/scalbn.c
+++ b/fusl/src/math/scalbn.c
@@ -1,31 +1,33 @@
 #include <math.h>
 #include <stdint.h>
 
-double scalbn(double x, int n)
-{
-	union {double f; uint64_t i;} u;
-	double_t y = x;
+double scalbn(double x, int n) {
+  union {
+    double f;
+    uint64_t i;
+  } u;
+  double_t y = x;
 
-	if (n > 1023) {
-		y *= 0x1p1023;
-		n -= 1023;
-		if (n > 1023) {
-			y *= 0x1p1023;
-			n -= 1023;
-			if (n > 1023)
-				n = 1023;
-		}
-	} else if (n < -1022) {
-		y *= 0x1p-1022;
-		n += 1022;
-		if (n < -1022) {
-			y *= 0x1p-1022;
-			n += 1022;
-			if (n < -1022)
-				n = -1022;
-		}
-	}
-	u.i = (uint64_t)(0x3ff+n)<<52;
-	x = y * u.f;
-	return x;
+  if (n > 1023) {
+    y *= 0x1p1023;
+    n -= 1023;
+    if (n > 1023) {
+      y *= 0x1p1023;
+      n -= 1023;
+      if (n > 1023)
+        n = 1023;
+    }
+  } else if (n < -1022) {
+    y *= 0x1p-1022;
+    n += 1022;
+    if (n < -1022) {
+      y *= 0x1p-1022;
+      n += 1022;
+      if (n < -1022)
+        n = -1022;
+    }
+  }
+  u.i = (uint64_t)(0x3ff + n) << 52;
+  x = y * u.f;
+  return x;
 }
diff --git a/fusl/src/math/scalbnf.c b/fusl/src/math/scalbnf.c
index 0b62c3c..473792d 100644
--- a/fusl/src/math/scalbnf.c
+++ b/fusl/src/math/scalbnf.c
@@ -1,31 +1,33 @@
 #include <math.h>
 #include <stdint.h>
 
-float scalbnf(float x, int n)
-{
-	union {float f; uint32_t i;} u;
-	float_t y = x;
+float scalbnf(float x, int n) {
+  union {
+    float f;
+    uint32_t i;
+  } u;
+  float_t y = x;
 
-	if (n > 127) {
-		y *= 0x1p127f;
-		n -= 127;
-		if (n > 127) {
-			y *= 0x1p127f;
-			n -= 127;
-			if (n > 127)
-				n = 127;
-		}
-	} else if (n < -126) {
-		y *= 0x1p-126f;
-		n += 126;
-		if (n < -126) {
-			y *= 0x1p-126f;
-			n += 126;
-			if (n < -126)
-				n = -126;
-		}
-	}
-	u.i = (uint32_t)(0x7f+n)<<23;
-	x = y * u.f;
-	return x;
+  if (n > 127) {
+    y *= 0x1p127f;
+    n -= 127;
+    if (n > 127) {
+      y *= 0x1p127f;
+      n -= 127;
+      if (n > 127)
+        n = 127;
+    }
+  } else if (n < -126) {
+    y *= 0x1p-126f;
+    n += 126;
+    if (n < -126) {
+      y *= 0x1p-126f;
+      n += 126;
+      if (n < -126)
+        n = -126;
+    }
+  }
+  u.i = (uint32_t)(0x7f + n) << 23;
+  x = y * u.f;
+  return x;
 }
diff --git a/fusl/src/math/scalbnl.c b/fusl/src/math/scalbnl.c
index 08a4c58..9a03ef7 100644
--- a/fusl/src/math/scalbnl.c
+++ b/fusl/src/math/scalbnl.c
@@ -1,36 +1,34 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double scalbnl(long double x, int n)
-{
-	return scalbn(x, n);
+long double scalbnl(long double x, int n) {
+  return scalbn(x, n);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
-long double scalbnl(long double x, int n)
-{
-	union ldshape u;
+long double scalbnl(long double x, int n) {
+  union ldshape u;
 
-	if (n > 16383) {
-		x *= 0x1p16383L;
-		n -= 16383;
-		if (n > 16383) {
-			x *= 0x1p16383L;
-			n -= 16383;
-			if (n > 16383)
-				n = 16383;
-		}
-	} else if (n < -16382) {
-		x *= 0x1p-16382L;
-		n += 16382;
-		if (n < -16382) {
-			x *= 0x1p-16382L;
-			n += 16382;
-			if (n < -16382)
-				n = -16382;
-		}
-	}
-	u.f = 1.0;
-	u.i.se = 0x3fff + n;
-	return x * u.f;
+  if (n > 16383) {
+    x *= 0x1p16383L;
+    n -= 16383;
+    if (n > 16383) {
+      x *= 0x1p16383L;
+      n -= 16383;
+      if (n > 16383)
+        n = 16383;
+    }
+  } else if (n < -16382) {
+    x *= 0x1p-16382L;
+    n += 16382;
+    if (n < -16382) {
+      x *= 0x1p-16382L;
+      n += 16382;
+      if (n < -16382)
+        n = -16382;
+    }
+  }
+  u.f = 1.0;
+  u.i.se = 0x3fff + n;
+  return x * u.f;
 }
 #endif
diff --git a/fusl/src/math/significand.c b/fusl/src/math/significand.c
index 40d9aa9..e5d5bbe 100644
--- a/fusl/src/math/significand.c
+++ b/fusl/src/math/significand.c
@@ -1,7 +1,6 @@
 #define _GNU_SOURCE
 #include <math.h>
 
-double significand(double x)
-{
-	return scalbn(x, -ilogb(x));
+double significand(double x) {
+  return scalbn(x, -ilogb(x));
 }
diff --git a/fusl/src/math/significandf.c b/fusl/src/math/significandf.c
index 8a697e1..119aa3a 100644
--- a/fusl/src/math/significandf.c
+++ b/fusl/src/math/significandf.c
@@ -1,7 +1,6 @@
 #define _GNU_SOURCE
 #include <math.h>
 
-float significandf(float x)
-{
-	return scalbnf(x, -ilogbf(x));
+float significandf(float x) {
+  return scalbnf(x, -ilogbf(x));
 }
diff --git a/fusl/src/math/sin.c b/fusl/src/math/sin.c
index 055e215..e44c00c 100644
--- a/fusl/src/math/sin.c
+++ b/fusl/src/math/sin.c
@@ -42,37 +42,39 @@
 
 #include "libm.h"
 
-double sin(double x)
-{
-	double y[2];
-	uint32_t ix;
-	unsigned n;
+double sin(double x) {
+  double y[2];
+  uint32_t ix;
+  unsigned n;
 
-	/* High word of x. */
-	GET_HIGH_WORD(ix, x);
-	ix &= 0x7fffffff;
+  /* High word of x. */
+  GET_HIGH_WORD(ix, x);
+  ix &= 0x7fffffff;
 
-	/* |x| ~< pi/4 */
-	if (ix <= 0x3fe921fb) {
-		if (ix < 0x3e500000) {  /* |x| < 2**-26 */
-			/* raise inexact if x != 0 and underflow if subnormal*/
-			FORCE_EVAL(ix < 0x00100000 ? x/0x1p120f : x+0x1p120f);
-			return x;
-		}
-		return __sin(x, 0.0, 0);
-	}
+  /* |x| ~< pi/4 */
+  if (ix <= 0x3fe921fb) {
+    if (ix < 0x3e500000) { /* |x| < 2**-26 */
+      /* raise inexact if x != 0 and underflow if subnormal*/
+      FORCE_EVAL(ix < 0x00100000 ? x / 0x1p120f : x + 0x1p120f);
+      return x;
+    }
+    return __sin(x, 0.0, 0);
+  }
 
-	/* sin(Inf or NaN) is NaN */
-	if (ix >= 0x7ff00000)
-		return x - x;
+  /* sin(Inf or NaN) is NaN */
+  if (ix >= 0x7ff00000)
+    return x - x;
 
-	/* argument reduction needed */
-	n = __rem_pio2(x, y);
-	switch (n&3) {
-	case 0: return  __sin(y[0], y[1], 1);
-	case 1: return  __cos(y[0], y[1]);
-	case 2: return -__sin(y[0], y[1], 1);
-	default:
-		return -__cos(y[0], y[1]);
-	}
+  /* argument reduction needed */
+  n = __rem_pio2(x, y);
+  switch (n & 3) {
+    case 0:
+      return __sin(y[0], y[1], 1);
+    case 1:
+      return __cos(y[0], y[1]);
+    case 2:
+      return -__sin(y[0], y[1], 1);
+    default:
+      return -__cos(y[0], y[1]);
+  }
 }
diff --git a/fusl/src/math/sincos.c b/fusl/src/math/sincos.c
index 35b2d92..33d74fc 100644
--- a/fusl/src/math/sincos.c
+++ b/fusl/src/math/sincos.c
@@ -13,57 +13,56 @@
 #define _GNU_SOURCE
 #include "libm.h"
 
-void sincos(double x, double *sin, double *cos)
-{
-	double y[2], s, c;
-	uint32_t ix;
-	unsigned n;
+void sincos(double x, double* sin, double* cos) {
+  double y[2], s, c;
+  uint32_t ix;
+  unsigned n;
 
-	GET_HIGH_WORD(ix, x);
-	ix &= 0x7fffffff;
+  GET_HIGH_WORD(ix, x);
+  ix &= 0x7fffffff;
 
-	/* |x| ~< pi/4 */
-	if (ix <= 0x3fe921fb) {
-		/* if |x| < 2**-27 * sqrt(2) */
-		if (ix < 0x3e46a09e) {
-			/* raise inexact if x!=0 and underflow if subnormal */
-			FORCE_EVAL(ix < 0x00100000 ? x/0x1p120f : x+0x1p120f);
-			*sin = x;
-			*cos = 1.0;
-			return;
-		}
-		*sin = __sin(x, 0.0, 0);
-		*cos = __cos(x, 0.0);
-		return;
-	}
+  /* |x| ~< pi/4 */
+  if (ix <= 0x3fe921fb) {
+    /* if |x| < 2**-27 * sqrt(2) */
+    if (ix < 0x3e46a09e) {
+      /* raise inexact if x!=0 and underflow if subnormal */
+      FORCE_EVAL(ix < 0x00100000 ? x / 0x1p120f : x + 0x1p120f);
+      *sin = x;
+      *cos = 1.0;
+      return;
+    }
+    *sin = __sin(x, 0.0, 0);
+    *cos = __cos(x, 0.0);
+    return;
+  }
 
-	/* sincos(Inf or NaN) is NaN */
-	if (ix >= 0x7ff00000) {
-		*sin = *cos = x - x;
-		return;
-	}
+  /* sincos(Inf or NaN) is NaN */
+  if (ix >= 0x7ff00000) {
+    *sin = *cos = x - x;
+    return;
+  }
 
-	/* argument reduction needed */
-	n = __rem_pio2(x, y);
-	s = __sin(y[0], y[1], 1);
-	c = __cos(y[0], y[1]);
-	switch (n&3) {
-	case 0:
-		*sin = s;
-		*cos = c;
-		break;
-	case 1:
-		*sin = c;
-		*cos = -s;
-		break;
-	case 2:
-		*sin = -s;
-		*cos = -c;
-		break;
-	case 3:
-	default:
-		*sin = -c;
-		*cos = s;
-		break;
-	}
+  /* argument reduction needed */
+  n = __rem_pio2(x, y);
+  s = __sin(y[0], y[1], 1);
+  c = __cos(y[0], y[1]);
+  switch (n & 3) {
+    case 0:
+      *sin = s;
+      *cos = c;
+      break;
+    case 1:
+      *sin = c;
+      *cos = -s;
+      break;
+    case 2:
+      *sin = -s;
+      *cos = -c;
+      break;
+    case 3:
+    default:
+      *sin = -c;
+      *cos = s;
+      break;
+  }
 }
diff --git a/fusl/src/math/sincosf.c b/fusl/src/math/sincosf.c
index f8ca723..11feeab 100644
--- a/fusl/src/math/sincosf.c
+++ b/fusl/src/math/sincosf.c
@@ -18,100 +18,98 @@
 #include "libm.h"
 
 /* Small multiples of pi/2 rounded to double precision. */
-static const double
-s1pio2 = 1*M_PI_2, /* 0x3FF921FB, 0x54442D18 */
-s2pio2 = 2*M_PI_2, /* 0x400921FB, 0x54442D18 */
-s3pio2 = 3*M_PI_2, /* 0x4012D97C, 0x7F3321D2 */
-s4pio2 = 4*M_PI_2; /* 0x401921FB, 0x54442D18 */
+static const double s1pio2 = 1 * M_PI_2, /* 0x3FF921FB, 0x54442D18 */
+    s2pio2 = 2 * M_PI_2,                 /* 0x400921FB, 0x54442D18 */
+    s3pio2 = 3 * M_PI_2,                 /* 0x4012D97C, 0x7F3321D2 */
+    s4pio2 = 4 * M_PI_2;                 /* 0x401921FB, 0x54442D18 */
 
-void sincosf(float x, float *sin, float *cos)
-{
-	double y;
-	float_t s, c;
-	uint32_t ix;
-	unsigned n, sign;
+void sincosf(float x, float* sin, float* cos) {
+  double y;
+  float_t s, c;
+  uint32_t ix;
+  unsigned n, sign;
 
-	GET_FLOAT_WORD(ix, x);
-	sign = ix >> 31;
-	ix &= 0x7fffffff;
+  GET_FLOAT_WORD(ix, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
 
-	/* |x| ~<= pi/4 */
-	if (ix <= 0x3f490fda) {
-		/* |x| < 2**-12 */
-		if (ix < 0x39800000) {
-			/* raise inexact if x!=0 and underflow if subnormal */
-			FORCE_EVAL(ix < 0x00100000 ? x/0x1p120f : x+0x1p120f);
-			*sin = x;
-			*cos = 1.0f;
-			return;
-		}
-		*sin = __sindf(x);
-		*cos = __cosdf(x);
-		return;
-	}
+  /* |x| ~<= pi/4 */
+  if (ix <= 0x3f490fda) {
+    /* |x| < 2**-12 */
+    if (ix < 0x39800000) {
+      /* raise inexact if x!=0 and underflow if subnormal */
+      FORCE_EVAL(ix < 0x00100000 ? x / 0x1p120f : x + 0x1p120f);
+      *sin = x;
+      *cos = 1.0f;
+      return;
+    }
+    *sin = __sindf(x);
+    *cos = __cosdf(x);
+    return;
+  }
 
-	/* |x| ~<= 5*pi/4 */
-	if (ix <= 0x407b53d1) {
-		if (ix <= 0x4016cbe3) {  /* |x| ~<= 3pi/4 */
-			if (sign) {
-				*sin = -__cosdf(x + s1pio2);
-				*cos = __sindf(x + s1pio2);
-			} else {
-				*sin = __cosdf(s1pio2 - x);
-				*cos = __sindf(s1pio2 - x);
-			}
-			return;
-		}
-		/* -sin(x+c) is not correct if x+c could be 0: -0 vs +0 */
-		*sin = -__sindf(sign ? x + s2pio2 : x - s2pio2);
-		*cos = -__cosdf(sign ? x + s2pio2 : x - s2pio2);
-		return;
-	}
+  /* |x| ~<= 5*pi/4 */
+  if (ix <= 0x407b53d1) {
+    if (ix <= 0x4016cbe3) { /* |x| ~<= 3pi/4 */
+      if (sign) {
+        *sin = -__cosdf(x + s1pio2);
+        *cos = __sindf(x + s1pio2);
+      } else {
+        *sin = __cosdf(s1pio2 - x);
+        *cos = __sindf(s1pio2 - x);
+      }
+      return;
+    }
+    /* -sin(x+c) is not correct if x+c could be 0: -0 vs +0 */
+    *sin = -__sindf(sign ? x + s2pio2 : x - s2pio2);
+    *cos = -__cosdf(sign ? x + s2pio2 : x - s2pio2);
+    return;
+  }
 
-	/* |x| ~<= 9*pi/4 */
-	if (ix <= 0x40e231d5) {
-		if (ix <= 0x40afeddf) {  /* |x| ~<= 7*pi/4 */
-			if (sign) {
-				*sin = __cosdf(x + s3pio2);
-				*cos = -__sindf(x + s3pio2);
-			} else {
-				*sin = -__cosdf(x - s3pio2);
-				*cos = __sindf(x - s3pio2);
-			}
-			return;
-		}
-		*sin = __sindf(sign ? x + s4pio2 : x - s4pio2);
-		*cos = __cosdf(sign ? x + s4pio2 : x - s4pio2);
-		return;
-	}
+  /* |x| ~<= 9*pi/4 */
+  if (ix <= 0x40e231d5) {
+    if (ix <= 0x40afeddf) { /* |x| ~<= 7*pi/4 */
+      if (sign) {
+        *sin = __cosdf(x + s3pio2);
+        *cos = -__sindf(x + s3pio2);
+      } else {
+        *sin = -__cosdf(x - s3pio2);
+        *cos = __sindf(x - s3pio2);
+      }
+      return;
+    }
+    *sin = __sindf(sign ? x + s4pio2 : x - s4pio2);
+    *cos = __cosdf(sign ? x + s4pio2 : x - s4pio2);
+    return;
+  }
 
-	/* sin(Inf or NaN) is NaN */
-	if (ix >= 0x7f800000) {
-		*sin = *cos = x - x;
-		return;
-	}
+  /* sin(Inf or NaN) is NaN */
+  if (ix >= 0x7f800000) {
+    *sin = *cos = x - x;
+    return;
+  }
 
-	/* general argument reduction needed */
-	n = __rem_pio2f(x, &y);
-	s = __sindf(y);
-	c = __cosdf(y);
-	switch (n&3) {
-	case 0:
-		*sin = s;
-		*cos = c;
-		break;
-	case 1:
-		*sin = c;
-		*cos = -s;
-		break;
-	case 2:
-		*sin = -s;
-		*cos = -c;
-		break;
-	case 3:
-	default:
-		*sin = -c;
-		*cos = s;
-		break;
-	}
+  /* general argument reduction needed */
+  n = __rem_pio2f(x, &y);
+  s = __sindf(y);
+  c = __cosdf(y);
+  switch (n & 3) {
+    case 0:
+      *sin = s;
+      *cos = c;
+      break;
+    case 1:
+      *sin = c;
+      *cos = -s;
+      break;
+    case 2:
+      *sin = -s;
+      *cos = -c;
+      break;
+    case 3:
+    default:
+      *sin = -c;
+      *cos = s;
+      break;
+  }
 }
diff --git a/fusl/src/math/sincosl.c b/fusl/src/math/sincosl.c
index d3ac1c4..a4f6c28 100644
--- a/fusl/src/math/sincosl.c
+++ b/fusl/src/math/sincosl.c
@@ -2,59 +2,58 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-void sincosl(long double x, long double *sin, long double *cos)
-{
-	double sind, cosd;
-	sincos(x, &sind, &cosd);
-	*sin = sind;
-	*cos = cosd;
+void sincosl(long double x, long double* sin, long double* cos) {
+  double sind, cosd;
+  sincos(x, &sind, &cosd);
+  *sin = sind;
+  *cos = cosd;
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
-void sincosl(long double x, long double *sin, long double *cos)
-{
-	union ldshape u = {x};
-	unsigned n;
-	long double y[2], s, c;
+void sincosl(long double x, long double* sin, long double* cos) {
+  union ldshape u = {x};
+  unsigned n;
+  long double y[2], s, c;
 
-	u.i.se &= 0x7fff;
-	if (u.i.se == 0x7fff) {
-		*sin = *cos = x - x;
-		return;
-	}
-	if (u.f < M_PI_4) {
-		if (u.i.se < 0x3fff - LDBL_MANT_DIG) {
-			/* raise underflow if subnormal */
-			if (u.i.se == 0) FORCE_EVAL(x*0x1p-120f);
-			*sin = x;
-			/* raise inexact if x!=0 */
-			*cos = 1.0 + x;
-			return;
-		}
-		*sin = __sinl(x, 0, 0);
-		*cos = __cosl(x, 0);
-		return;
-	}
-	n = __rem_pio2l(x, y);
-	s = __sinl(y[0], y[1], 1);
-	c = __cosl(y[0], y[1]);
-	switch (n & 3) {
-	case 0:
-		*sin = s;
-		*cos = c;
-		break;
-	case 1:
-		*sin = c;
-		*cos = -s;
-		break;
-	case 2:
-		*sin = -s;
-		*cos = -c;
-		break;
-	case 3:
-	default:
-		*sin = -c;
-		*cos = s;
-		break;
-	}
+  u.i.se &= 0x7fff;
+  if (u.i.se == 0x7fff) {
+    *sin = *cos = x - x;
+    return;
+  }
+  if (u.f < M_PI_4) {
+    if (u.i.se < 0x3fff - LDBL_MANT_DIG) {
+      /* raise underflow if subnormal */
+      if (u.i.se == 0)
+        FORCE_EVAL(x * 0x1p-120f);
+      *sin = x;
+      /* raise inexact if x!=0 */
+      *cos = 1.0 + x;
+      return;
+    }
+    *sin = __sinl(x, 0, 0);
+    *cos = __cosl(x, 0);
+    return;
+  }
+  n = __rem_pio2l(x, y);
+  s = __sinl(y[0], y[1], 1);
+  c = __cosl(y[0], y[1]);
+  switch (n & 3) {
+    case 0:
+      *sin = s;
+      *cos = c;
+      break;
+    case 1:
+      *sin = c;
+      *cos = -s;
+      break;
+    case 2:
+      *sin = -s;
+      *cos = -c;
+      break;
+    case 3:
+    default:
+      *sin = -c;
+      *cos = s;
+      break;
+  }
 }
 #endif
diff --git a/fusl/src/math/sinf.c b/fusl/src/math/sinf.c
index 64e39f5..7893625 100644
--- a/fusl/src/math/sinf.c
+++ b/fusl/src/math/sinf.c
@@ -17,60 +17,61 @@
 #include "libm.h"
 
 /* Small multiples of pi/2 rounded to double precision. */
-static const double
-s1pio2 = 1*M_PI_2, /* 0x3FF921FB, 0x54442D18 */
-s2pio2 = 2*M_PI_2, /* 0x400921FB, 0x54442D18 */
-s3pio2 = 3*M_PI_2, /* 0x4012D97C, 0x7F3321D2 */
-s4pio2 = 4*M_PI_2; /* 0x401921FB, 0x54442D18 */
+static const double s1pio2 = 1 * M_PI_2, /* 0x3FF921FB, 0x54442D18 */
+    s2pio2 = 2 * M_PI_2,                 /* 0x400921FB, 0x54442D18 */
+    s3pio2 = 3 * M_PI_2,                 /* 0x4012D97C, 0x7F3321D2 */
+    s4pio2 = 4 * M_PI_2;                 /* 0x401921FB, 0x54442D18 */
 
-float sinf(float x)
-{
-	double y;
-	uint32_t ix;
-	int n, sign;
+float sinf(float x) {
+  double y;
+  uint32_t ix;
+  int n, sign;
 
-	GET_FLOAT_WORD(ix, x);
-	sign = ix >> 31;
-	ix &= 0x7fffffff;
+  GET_FLOAT_WORD(ix, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
 
-	if (ix <= 0x3f490fda) {  /* |x| ~<= pi/4 */
-		if (ix < 0x39800000) {  /* |x| < 2**-12 */
-			/* raise inexact if x!=0 and underflow if subnormal */
-			FORCE_EVAL(ix < 0x00800000 ? x/0x1p120f : x+0x1p120f);
-			return x;
-		}
-		return __sindf(x);
-	}
-	if (ix <= 0x407b53d1) {  /* |x| ~<= 5*pi/4 */
-		if (ix <= 0x4016cbe3) {  /* |x| ~<= 3pi/4 */
-			if (sign)
-				return -__cosdf(x + s1pio2);
-			else
-				return __cosdf(x - s1pio2);
-		}
-		return __sindf(sign ? -(x + s2pio2) : -(x - s2pio2));
-	}
-	if (ix <= 0x40e231d5) {  /* |x| ~<= 9*pi/4 */
-		if (ix <= 0x40afeddf) {  /* |x| ~<= 7*pi/4 */
-			if (sign)
-				return __cosdf(x + s3pio2);
-			else
-				return -__cosdf(x - s3pio2);
-		}
-		return __sindf(sign ? x + s4pio2 : x - s4pio2);
-	}
+  if (ix <= 0x3f490fda) {  /* |x| ~<= pi/4 */
+    if (ix < 0x39800000) { /* |x| < 2**-12 */
+      /* raise inexact if x!=0 and underflow if subnormal */
+      FORCE_EVAL(ix < 0x00800000 ? x / 0x1p120f : x + 0x1p120f);
+      return x;
+    }
+    return __sindf(x);
+  }
+  if (ix <= 0x407b53d1) {   /* |x| ~<= 5*pi/4 */
+    if (ix <= 0x4016cbe3) { /* |x| ~<= 3pi/4 */
+      if (sign)
+        return -__cosdf(x + s1pio2);
+      else
+        return __cosdf(x - s1pio2);
+    }
+    return __sindf(sign ? -(x + s2pio2) : -(x - s2pio2));
+  }
+  if (ix <= 0x40e231d5) {   /* |x| ~<= 9*pi/4 */
+    if (ix <= 0x40afeddf) { /* |x| ~<= 7*pi/4 */
+      if (sign)
+        return __cosdf(x + s3pio2);
+      else
+        return -__cosdf(x - s3pio2);
+    }
+    return __sindf(sign ? x + s4pio2 : x - s4pio2);
+  }
 
-	/* sin(Inf or NaN) is NaN */
-	if (ix >= 0x7f800000)
-		return x - x;
+  /* sin(Inf or NaN) is NaN */
+  if (ix >= 0x7f800000)
+    return x - x;
 
-	/* general argument reduction needed */
-	n = __rem_pio2f(x, &y);
-	switch (n&3) {
-	case 0: return  __sindf(y);
-	case 1: return  __cosdf(y);
-	case 2: return  __sindf(-y);
-	default:
-		return -__cosdf(y);
-	}
+  /* general argument reduction needed */
+  n = __rem_pio2f(x, &y);
+  switch (n & 3) {
+    case 0:
+      return __sindf(y);
+    case 1:
+      return __cosdf(y);
+    case 2:
+      return __sindf(-y);
+    default:
+      return -__cosdf(y);
+  }
 }
diff --git a/fusl/src/math/sinh.c b/fusl/src/math/sinh.c
index 00022c4..c94e59c 100644
--- a/fusl/src/math/sinh.c
+++ b/fusl/src/math/sinh.c
@@ -4,36 +4,38 @@
  *         = (exp(x)-1 + (exp(x)-1)/exp(x))/2
  *         = x + x^3/6 + o(x^5)
  */
-double sinh(double x)
-{
-	union {double f; uint64_t i;} u = {.f = x};
-	uint32_t w;
-	double t, h, absx;
+double sinh(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {.f = x};
+  uint32_t w;
+  double t, h, absx;
 
-	h = 0.5;
-	if (u.i >> 63)
-		h = -h;
-	/* |x| */
-	u.i &= (uint64_t)-1/2;
-	absx = u.f;
-	w = u.i >> 32;
+  h = 0.5;
+  if (u.i >> 63)
+    h = -h;
+  /* |x| */
+  u.i &= (uint64_t)-1 / 2;
+  absx = u.f;
+  w = u.i >> 32;
 
-	/* |x| < log(DBL_MAX) */
-	if (w < 0x40862e42) {
-		t = expm1(absx);
-		if (w < 0x3ff00000) {
-			if (w < 0x3ff00000 - (26<<20))
-				/* note: inexact and underflow are raised by expm1 */
-				/* note: this branch avoids spurious underflow */
-				return x;
-			return h*(2*t - t*t/(t+1));
-		}
-		/* note: |x|>log(0x1p26)+eps could be just h*exp(x) */
-		return h*(t + t/(t+1));
-	}
+  /* |x| < log(DBL_MAX) */
+  if (w < 0x40862e42) {
+    t = expm1(absx);
+    if (w < 0x3ff00000) {
+      if (w < 0x3ff00000 - (26 << 20))
+        /* note: inexact and underflow are raised by expm1 */
+        /* note: this branch avoids spurious underflow */
+        return x;
+      return h * (2 * t - t * t / (t + 1));
+    }
+    /* note: |x|>log(0x1p26)+eps could be just h*exp(x) */
+    return h * (t + t / (t + 1));
+  }
 
-	/* |x| > log(DBL_MAX) or nan */
-	/* note: the result is stored to handle overflow */
-	t = 2*h*__expo2(absx);
-	return t;
+  /* |x| > log(DBL_MAX) or nan */
+  /* note: the result is stored to handle overflow */
+  t = 2 * h * __expo2(absx);
+  return t;
 }
diff --git a/fusl/src/math/sinhf.c b/fusl/src/math/sinhf.c
index 6ad19ea..705ba77 100644
--- a/fusl/src/math/sinhf.c
+++ b/fusl/src/math/sinhf.c
@@ -1,31 +1,33 @@
 #include "libm.h"
 
-float sinhf(float x)
-{
-	union {float f; uint32_t i;} u = {.f = x};
-	uint32_t w;
-	float t, h, absx;
+float sinhf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {.f = x};
+  uint32_t w;
+  float t, h, absx;
 
-	h = 0.5;
-	if (u.i >> 31)
-		h = -h;
-	/* |x| */
-	u.i &= 0x7fffffff;
-	absx = u.f;
-	w = u.i;
+  h = 0.5;
+  if (u.i >> 31)
+    h = -h;
+  /* |x| */
+  u.i &= 0x7fffffff;
+  absx = u.f;
+  w = u.i;
 
-	/* |x| < log(FLT_MAX) */
-	if (w < 0x42b17217) {
-		t = expm1f(absx);
-		if (w < 0x3f800000) {
-			if (w < 0x3f800000 - (12<<23))
-				return x;
-			return h*(2*t - t*t/(t+1));
-		}
-		return h*(t + t/(t+1));
-	}
+  /* |x| < log(FLT_MAX) */
+  if (w < 0x42b17217) {
+    t = expm1f(absx);
+    if (w < 0x3f800000) {
+      if (w < 0x3f800000 - (12 << 23))
+        return x;
+      return h * (2 * t - t * t / (t + 1));
+    }
+    return h * (t + t / (t + 1));
+  }
 
-	/* |x| > logf(FLT_MAX) or nan */
-	t = 2*h*__expo2f(absx);
-	return t;
+  /* |x| > logf(FLT_MAX) or nan */
+  t = 2 * h * __expo2f(absx);
+  return t;
 }
diff --git a/fusl/src/math/sinhl.c b/fusl/src/math/sinhl.c
index b305d4d..4ef2c17 100644
--- a/fusl/src/math/sinhl.c
+++ b/fusl/src/math/sinhl.c
@@ -1,43 +1,40 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double sinhl(long double x)
-{
-	return sinh(x);
+long double sinhl(long double x) {
+  return sinh(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
-long double sinhl(long double x)
-{
-	union ldshape u = {x};
-	unsigned ex = u.i.se & 0x7fff;
-	long double h, t, absx;
+long double sinhl(long double x) {
+  union ldshape u = {x};
+  unsigned ex = u.i.se & 0x7fff;
+  long double h, t, absx;
 
-	h = 0.5;
-	if (u.i.se & 0x8000)
-		h = -h;
-	/* |x| */
-	u.i.se = ex;
-	absx = u.f;
+  h = 0.5;
+  if (u.i.se & 0x8000)
+    h = -h;
+  /* |x| */
+  u.i.se = ex;
+  absx = u.f;
 
-	/* |x| < log(LDBL_MAX) */
-	if (ex < 0x3fff+13 || (ex == 0x3fff+13 && u.i.m>>32 < 0xb17217f7)) {
-		t = expm1l(absx);
-		if (ex < 0x3fff) {
-			if (ex < 0x3fff-32)
-				return x;
-			return h*(2*t - t*t/(1+t));
-		}
-		return h*(t + t/(t+1));
-	}
+  /* |x| < log(LDBL_MAX) */
+  if (ex < 0x3fff + 13 || (ex == 0x3fff + 13 && u.i.m >> 32 < 0xb17217f7)) {
+    t = expm1l(absx);
+    if (ex < 0x3fff) {
+      if (ex < 0x3fff - 32)
+        return x;
+      return h * (2 * t - t * t / (1 + t));
+    }
+    return h * (t + t / (t + 1));
+  }
 
-	/* |x| > log(LDBL_MAX) or nan */
-	t = expl(0.5*absx);
-	return h*t*t;
+  /* |x| > log(LDBL_MAX) or nan */
+  t = expl(0.5 * absx);
+  return h * t * t;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-long double sinhl(long double x)
-{
-	return sinh(x);
+long double sinhl(long double x) {
+  return sinh(x);
 }
 #endif
diff --git a/fusl/src/math/sinl.c b/fusl/src/math/sinl.c
index 9c0b16e..e755374 100644
--- a/fusl/src/math/sinl.c
+++ b/fusl/src/math/sinl.c
@@ -1,41 +1,39 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double sinl(long double x)
-{
-	return sin(x);
+long double sinl(long double x) {
+  return sin(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
-long double sinl(long double x)
-{
-	union ldshape u = {x};
-	unsigned n;
-	long double y[2], hi, lo;
+long double sinl(long double x) {
+  union ldshape u = {x};
+  unsigned n;
+  long double y[2], hi, lo;
 
-	u.i.se &= 0x7fff;
-	if (u.i.se == 0x7fff)
-		return x - x;
-	if (u.f < M_PI_4) {
-		if (u.i.se < 0x3fff - LDBL_MANT_DIG/2) {
-			/* raise inexact if x!=0 and underflow if subnormal */
-			FORCE_EVAL(u.i.se == 0 ? x*0x1p-120f : x+0x1p120f);
-			return x;
-		}
-		return __sinl(x, 0.0, 0);
-	}
-	n = __rem_pio2l(x, y);
-	hi = y[0];
-	lo = y[1];
-	switch (n & 3) {
-	case 0:
-		return __sinl(hi, lo, 1);
-	case 1:
-		return __cosl(hi, lo);
-	case 2:
-		return -__sinl(hi, lo, 1);
-	case 3:
-	default:
-		return -__cosl(hi, lo);
-	}
+  u.i.se &= 0x7fff;
+  if (u.i.se == 0x7fff)
+    return x - x;
+  if (u.f < M_PI_4) {
+    if (u.i.se < 0x3fff - LDBL_MANT_DIG / 2) {
+      /* raise inexact if x!=0 and underflow if subnormal */
+      FORCE_EVAL(u.i.se == 0 ? x * 0x1p-120f : x + 0x1p120f);
+      return x;
+    }
+    return __sinl(x, 0.0, 0);
+  }
+  n = __rem_pio2l(x, y);
+  hi = y[0];
+  lo = y[1];
+  switch (n & 3) {
+    case 0:
+      return __sinl(hi, lo, 1);
+    case 1:
+      return __cosl(hi, lo);
+    case 2:
+      return -__sinl(hi, lo, 1);
+    case 3:
+    default:
+      return -__cosl(hi, lo);
+  }
 }
 #endif
diff --git a/fusl/src/math/sqrt.c b/fusl/src/math/sqrt.c
index b277567..ff184fa 100644
--- a/fusl/src/math/sqrt.c
+++ b/fusl/src/math/sqrt.c
@@ -80,106 +80,105 @@
 
 static const double tiny = 1.0e-300;
 
-double sqrt(double x)
-{
-	double z;
-	int32_t sign = (int)0x80000000;
-	int32_t ix0,s0,q,m,t,i;
-	uint32_t r,t1,s1,ix1,q1;
+double sqrt(double x) {
+  double z;
+  int32_t sign = (int)0x80000000;
+  int32_t ix0, s0, q, m, t, i;
+  uint32_t r, t1, s1, ix1, q1;
 
-	EXTRACT_WORDS(ix0, ix1, x);
+  EXTRACT_WORDS(ix0, ix1, x);
 
-	/* take care of Inf and NaN */
-	if ((ix0&0x7ff00000) == 0x7ff00000) {
-		return x*x + x;  /* sqrt(NaN)=NaN, sqrt(+inf)=+inf, sqrt(-inf)=sNaN */
-	}
-	/* take care of zero */
-	if (ix0 <= 0) {
-		if (((ix0&~sign)|ix1) == 0)
-			return x;  /* sqrt(+-0) = +-0 */
-		if (ix0 < 0)
-			return (x-x)/(x-x);  /* sqrt(-ve) = sNaN */
-	}
-	/* normalize x */
-	m = ix0>>20;
-	if (m == 0) {  /* subnormal x */
-		while (ix0 == 0) {
-			m -= 21;
-			ix0 |= (ix1>>11);
-			ix1 <<= 21;
-		}
-		for (i=0; (ix0&0x00100000) == 0; i++)
-			ix0<<=1;
-		m -= i - 1;
-		ix0 |= ix1>>(32-i);
-		ix1 <<= i;
-	}
-	m -= 1023;    /* unbias exponent */
-	ix0 = (ix0&0x000fffff)|0x00100000;
-	if (m & 1) {  /* odd m, double x to make it even */
-		ix0 += ix0 + ((ix1&sign)>>31);
-		ix1 += ix1;
-	}
-	m >>= 1;      /* m = [m/2] */
+  /* take care of Inf and NaN */
+  if ((ix0 & 0x7ff00000) == 0x7ff00000) {
+    return x * x + x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf, sqrt(-inf)=sNaN */
+  }
+  /* take care of zero */
+  if (ix0 <= 0) {
+    if (((ix0 & ~sign) | ix1) == 0)
+      return x; /* sqrt(+-0) = +-0 */
+    if (ix0 < 0)
+      return (x - x) / (x - x); /* sqrt(-ve) = sNaN */
+  }
+  /* normalize x */
+  m = ix0 >> 20;
+  if (m == 0) { /* subnormal x */
+    while (ix0 == 0) {
+      m -= 21;
+      ix0 |= (ix1 >> 11);
+      ix1 <<= 21;
+    }
+    for (i = 0; (ix0 & 0x00100000) == 0; i++)
+      ix0 <<= 1;
+    m -= i - 1;
+    ix0 |= ix1 >> (32 - i);
+    ix1 <<= i;
+  }
+  m -= 1023; /* unbias exponent */
+  ix0 = (ix0 & 0x000fffff) | 0x00100000;
+  if (m & 1) { /* odd m, double x to make it even */
+    ix0 += ix0 + ((ix1 & sign) >> 31);
+    ix1 += ix1;
+  }
+  m >>= 1; /* m = [m/2] */
 
-	/* generate sqrt(x) bit by bit */
-	ix0 += ix0 + ((ix1&sign)>>31);
-	ix1 += ix1;
-	q = q1 = s0 = s1 = 0;  /* [q,q1] = sqrt(x) */
-	r = 0x00200000;        /* r = moving bit from right to left */
+  /* generate sqrt(x) bit by bit */
+  ix0 += ix0 + ((ix1 & sign) >> 31);
+  ix1 += ix1;
+  q = q1 = s0 = s1 = 0; /* [q,q1] = sqrt(x) */
+  r = 0x00200000;       /* r = moving bit from right to left */
 
-	while (r != 0) {
-		t = s0 + r;
-		if (t <= ix0) {
-			s0   = t + r;
-			ix0 -= t;
-			q   += r;
-		}
-		ix0 += ix0 + ((ix1&sign)>>31);
-		ix1 += ix1;
-		r >>= 1;
-	}
+  while (r != 0) {
+    t = s0 + r;
+    if (t <= ix0) {
+      s0 = t + r;
+      ix0 -= t;
+      q += r;
+    }
+    ix0 += ix0 + ((ix1 & sign) >> 31);
+    ix1 += ix1;
+    r >>= 1;
+  }
 
-	r = sign;
-	while (r != 0) {
-		t1 = s1 + r;
-		t  = s0;
-		if (t < ix0 || (t == ix0 && t1 <= ix1)) {
-			s1 = t1 + r;
-			if ((t1&sign) == sign && (s1&sign) == 0)
-				s0++;
-			ix0 -= t;
-			if (ix1 < t1)
-				ix0--;
-			ix1 -= t1;
-			q1 += r;
-		}
-		ix0 += ix0 + ((ix1&sign)>>31);
-		ix1 += ix1;
-		r >>= 1;
-	}
+  r = sign;
+  while (r != 0) {
+    t1 = s1 + r;
+    t = s0;
+    if (t < ix0 || (t == ix0 && t1 <= ix1)) {
+      s1 = t1 + r;
+      if ((t1 & sign) == sign && (s1 & sign) == 0)
+        s0++;
+      ix0 -= t;
+      if (ix1 < t1)
+        ix0--;
+      ix1 -= t1;
+      q1 += r;
+    }
+    ix0 += ix0 + ((ix1 & sign) >> 31);
+    ix1 += ix1;
+    r >>= 1;
+  }
 
-	/* use floating add to find out rounding direction */
-	if ((ix0|ix1) != 0) {
-		z = 1.0 - tiny; /* raise inexact flag */
-		if (z >= 1.0) {
-			z = 1.0 + tiny;
-			if (q1 == (uint32_t)0xffffffff) {
-				q1 = 0;
-				q++;
-			} else if (z > 1.0) {
-				if (q1 == (uint32_t)0xfffffffe)
-					q++;
-				q1 += 2;
-			} else
-				q1 += q1 & 1;
-		}
-	}
-	ix0 = (q>>1) + 0x3fe00000;
-	ix1 = q1>>1;
-	if (q&1)
-		ix1 |= sign;
-	ix0 += m << 20;
-	INSERT_WORDS(z, ix0, ix1);
-	return z;
+  /* use floating add to find out rounding direction */
+  if ((ix0 | ix1) != 0) {
+    z = 1.0 - tiny; /* raise inexact flag */
+    if (z >= 1.0) {
+      z = 1.0 + tiny;
+      if (q1 == (uint32_t)0xffffffff) {
+        q1 = 0;
+        q++;
+      } else if (z > 1.0) {
+        if (q1 == (uint32_t)0xfffffffe)
+          q++;
+        q1 += 2;
+      } else
+        q1 += q1 & 1;
+    }
+  }
+  ix0 = (q >> 1) + 0x3fe00000;
+  ix1 = q1 >> 1;
+  if (q & 1)
+    ix1 |= sign;
+  ix0 += m << 20;
+  INSERT_WORDS(z, ix0, ix1);
+  return z;
 }
diff --git a/fusl/src/math/sqrtf.c b/fusl/src/math/sqrtf.c
index 28cb4ad..329a00a 100644
--- a/fusl/src/math/sqrtf.c
+++ b/fusl/src/math/sqrtf.c
@@ -17,68 +17,67 @@
 
 static const float tiny = 1.0e-30;
 
-float sqrtf(float x)
-{
-	float z;
-	int32_t sign = (int)0x80000000;
-	int32_t ix,s,q,m,t,i;
-	uint32_t r;
+float sqrtf(float x) {
+  float z;
+  int32_t sign = (int)0x80000000;
+  int32_t ix, s, q, m, t, i;
+  uint32_t r;
 
-	GET_FLOAT_WORD(ix, x);
+  GET_FLOAT_WORD(ix, x);
 
-	/* take care of Inf and NaN */
-	if ((ix&0x7f800000) == 0x7f800000)
-		return x*x + x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf, sqrt(-inf)=sNaN */
+  /* take care of Inf and NaN */
+  if ((ix & 0x7f800000) == 0x7f800000)
+    return x * x + x; /* sqrt(NaN)=NaN, sqrt(+inf)=+inf, sqrt(-inf)=sNaN */
 
-	/* take care of zero */
-	if (ix <= 0) {
-		if ((ix&~sign) == 0)
-			return x;  /* sqrt(+-0) = +-0 */
-		if (ix < 0)
-			return (x-x)/(x-x);  /* sqrt(-ve) = sNaN */
-	}
-	/* normalize x */
-	m = ix>>23;
-	if (m == 0) {  /* subnormal x */
-		for (i = 0; (ix&0x00800000) == 0; i++)
-			ix<<=1;
-		m -= i - 1;
-	}
-	m -= 127;  /* unbias exponent */
-	ix = (ix&0x007fffff)|0x00800000;
-	if (m&1)  /* odd m, double x to make it even */
-		ix += ix;
-	m >>= 1;  /* m = [m/2] */
+  /* take care of zero */
+  if (ix <= 0) {
+    if ((ix & ~sign) == 0)
+      return x; /* sqrt(+-0) = +-0 */
+    if (ix < 0)
+      return (x - x) / (x - x); /* sqrt(-ve) = sNaN */
+  }
+  /* normalize x */
+  m = ix >> 23;
+  if (m == 0) { /* subnormal x */
+    for (i = 0; (ix & 0x00800000) == 0; i++)
+      ix <<= 1;
+    m -= i - 1;
+  }
+  m -= 127; /* unbias exponent */
+  ix = (ix & 0x007fffff) | 0x00800000;
+  if (m & 1) /* odd m, double x to make it even */
+    ix += ix;
+  m >>= 1; /* m = [m/2] */
 
-	/* generate sqrt(x) bit by bit */
-	ix += ix;
-	q = s = 0;       /* q = sqrt(x) */
-	r = 0x01000000;  /* r = moving bit from right to left */
+  /* generate sqrt(x) bit by bit */
+  ix += ix;
+  q = s = 0;      /* q = sqrt(x) */
+  r = 0x01000000; /* r = moving bit from right to left */
 
-	while (r != 0) {
-		t = s + r;
-		if (t <= ix) {
-			s = t+r;
-			ix -= t;
-			q += r;
-		}
-		ix += ix;
-		r >>= 1;
-	}
+  while (r != 0) {
+    t = s + r;
+    if (t <= ix) {
+      s = t + r;
+      ix -= t;
+      q += r;
+    }
+    ix += ix;
+    r >>= 1;
+  }
 
-	/* use floating add to find out rounding direction */
-	if (ix != 0) {
-		z = 1.0f - tiny; /* raise inexact flag */
-		if (z >= 1.0f) {
-			z = 1.0f + tiny;
-			if (z > 1.0f)
-				q += 2;
-			else
-				q += q & 1;
-		}
-	}
-	ix = (q>>1) + 0x3f000000;
-	ix += m << 23;
-	SET_FLOAT_WORD(z, ix);
-	return z;
+  /* use floating add to find out rounding direction */
+  if (ix != 0) {
+    z = 1.0f - tiny; /* raise inexact flag */
+    if (z >= 1.0f) {
+      z = 1.0f + tiny;
+      if (z > 1.0f)
+        q += 2;
+      else
+        q += q & 1;
+    }
+  }
+  ix = (q >> 1) + 0x3f000000;
+  ix += m << 23;
+  SET_FLOAT_WORD(z, ix);
+  return z;
 }
diff --git a/fusl/src/math/sqrtl.c b/fusl/src/math/sqrtl.c
index 83a8f80..f21f907 100644
--- a/fusl/src/math/sqrtl.c
+++ b/fusl/src/math/sqrtl.c
@@ -1,7 +1,6 @@
 #include <math.h>
 
-long double sqrtl(long double x)
-{
-	/* FIXME: implement in C, this is for LDBL_MANT_DIG == 64 only */
-	return sqrt(x);
+long double sqrtl(long double x) {
+  /* FIXME: implement in C, this is for LDBL_MANT_DIG == 64 only */
+  return sqrt(x);
 }
diff --git a/fusl/src/math/tan.c b/fusl/src/math/tan.c
index 9c724a4..b1da8a4 100644
--- a/fusl/src/math/tan.c
+++ b/fusl/src/math/tan.c
@@ -41,30 +41,29 @@
 
 #include "libm.h"
 
-double tan(double x)
-{
-	double y[2];
-	uint32_t ix;
-	unsigned n;
+double tan(double x) {
+  double y[2];
+  uint32_t ix;
+  unsigned n;
 
-	GET_HIGH_WORD(ix, x);
-	ix &= 0x7fffffff;
+  GET_HIGH_WORD(ix, x);
+  ix &= 0x7fffffff;
 
-	/* |x| ~< pi/4 */
-	if (ix <= 0x3fe921fb) {
-		if (ix < 0x3e400000) { /* |x| < 2**-27 */
-			/* raise inexact if x!=0 and underflow if subnormal */
-			FORCE_EVAL(ix < 0x00100000 ? x/0x1p120f : x+0x1p120f);
-			return x;
-		}
-		return __tan(x, 0.0, 0);
-	}
+  /* |x| ~< pi/4 */
+  if (ix <= 0x3fe921fb) {
+    if (ix < 0x3e400000) { /* |x| < 2**-27 */
+      /* raise inexact if x!=0 and underflow if subnormal */
+      FORCE_EVAL(ix < 0x00100000 ? x / 0x1p120f : x + 0x1p120f);
+      return x;
+    }
+    return __tan(x, 0.0, 0);
+  }
 
-	/* tan(Inf or NaN) is NaN */
-	if (ix >= 0x7ff00000)
-		return x - x;
+  /* tan(Inf or NaN) is NaN */
+  if (ix >= 0x7ff00000)
+    return x - x;
 
-	/* argument reduction */
-	n = __rem_pio2(x, y);
-	return __tan(y[0], y[1], n&1);
+  /* argument reduction */
+  n = __rem_pio2(x, y);
+  return __tan(y[0], y[1], n & 1);
 }
diff --git a/fusl/src/math/tanf.c b/fusl/src/math/tanf.c
index aba1977..04d86c3 100644
--- a/fusl/src/math/tanf.c
+++ b/fusl/src/math/tanf.c
@@ -17,48 +17,46 @@
 #include "libm.h"
 
 /* Small multiples of pi/2 rounded to double precision. */
-static const double
-t1pio2 = 1*M_PI_2, /* 0x3FF921FB, 0x54442D18 */
-t2pio2 = 2*M_PI_2, /* 0x400921FB, 0x54442D18 */
-t3pio2 = 3*M_PI_2, /* 0x4012D97C, 0x7F3321D2 */
-t4pio2 = 4*M_PI_2; /* 0x401921FB, 0x54442D18 */
+static const double t1pio2 = 1 * M_PI_2, /* 0x3FF921FB, 0x54442D18 */
+    t2pio2 = 2 * M_PI_2,                 /* 0x400921FB, 0x54442D18 */
+    t3pio2 = 3 * M_PI_2,                 /* 0x4012D97C, 0x7F3321D2 */
+    t4pio2 = 4 * M_PI_2;                 /* 0x401921FB, 0x54442D18 */
 
-float tanf(float x)
-{
-	double y;
-	uint32_t ix;
-	unsigned n, sign;
+float tanf(float x) {
+  double y;
+  uint32_t ix;
+  unsigned n, sign;
 
-	GET_FLOAT_WORD(ix, x);
-	sign = ix >> 31;
-	ix &= 0x7fffffff;
+  GET_FLOAT_WORD(ix, x);
+  sign = ix >> 31;
+  ix &= 0x7fffffff;
 
-	if (ix <= 0x3f490fda) {  /* |x| ~<= pi/4 */
-		if (ix < 0x39800000) {  /* |x| < 2**-12 */
-			/* raise inexact if x!=0 and underflow if subnormal */
-			FORCE_EVAL(ix < 0x00800000 ? x/0x1p120f : x+0x1p120f);
-			return x;
-		}
-		return __tandf(x, 0);
-	}
-	if (ix <= 0x407b53d1) {  /* |x| ~<= 5*pi/4 */
-		if (ix <= 0x4016cbe3)  /* |x| ~<= 3pi/4 */
-			return __tandf((sign ? x+t1pio2 : x-t1pio2), 1);
-		else
-			return __tandf((sign ? x+t2pio2 : x-t2pio2), 0);
-	}
-	if (ix <= 0x40e231d5) {  /* |x| ~<= 9*pi/4 */
-		if (ix <= 0x40afeddf)  /* |x| ~<= 7*pi/4 */
-			return __tandf((sign ? x+t3pio2 : x-t3pio2), 1);
-		else
-			return __tandf((sign ? x+t4pio2 : x-t4pio2), 0);
-	}
+  if (ix <= 0x3f490fda) {  /* |x| ~<= pi/4 */
+    if (ix < 0x39800000) { /* |x| < 2**-12 */
+      /* raise inexact if x!=0 and underflow if subnormal */
+      FORCE_EVAL(ix < 0x00800000 ? x / 0x1p120f : x + 0x1p120f);
+      return x;
+    }
+    return __tandf(x, 0);
+  }
+  if (ix <= 0x407b53d1) { /* |x| ~<= 5*pi/4 */
+    if (ix <= 0x4016cbe3) /* |x| ~<= 3pi/4 */
+      return __tandf((sign ? x + t1pio2 : x - t1pio2), 1);
+    else
+      return __tandf((sign ? x + t2pio2 : x - t2pio2), 0);
+  }
+  if (ix <= 0x40e231d5) { /* |x| ~<= 9*pi/4 */
+    if (ix <= 0x40afeddf) /* |x| ~<= 7*pi/4 */
+      return __tandf((sign ? x + t3pio2 : x - t3pio2), 1);
+    else
+      return __tandf((sign ? x + t4pio2 : x - t4pio2), 0);
+  }
 
-	/* tan(Inf or NaN) is NaN */
-	if (ix >= 0x7f800000)
-		return x - x;
+  /* tan(Inf or NaN) is NaN */
+  if (ix >= 0x7f800000)
+    return x - x;
 
-	/* argument reduction */
-	n = __rem_pio2f(x, &y);
-	return __tandf(y, n&1);
+  /* argument reduction */
+  n = __rem_pio2f(x, &y);
+  return __tandf(y, n & 1);
 }
diff --git a/fusl/src/math/tanh.c b/fusl/src/math/tanh.c
index 20d6dbc..13fe2f6 100644
--- a/fusl/src/math/tanh.c
+++ b/fusl/src/math/tanh.c
@@ -4,42 +4,45 @@
  *         = (exp(2*x) - 1)/(exp(2*x) - 1 + 2)
  *         = (1 - exp(-2*x))/(exp(-2*x) - 1 + 2)
  */
-double tanh(double x)
-{
-	union {double f; uint64_t i;} u = {.f = x};
-	uint32_t w;
-	int sign;
-	double_t t;
+double tanh(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {.f = x};
+  uint32_t w;
+  int sign;
+  double_t t;
 
-	/* x = |x| */
-	sign = u.i >> 63;
-	u.i &= (uint64_t)-1/2;
-	x = u.f;
-	w = u.i >> 32;
+  /* x = |x| */
+  sign = u.i >> 63;
+  u.i &= (uint64_t)-1 / 2;
+  x = u.f;
+  w = u.i >> 32;
 
-	if (w > 0x3fe193ea) {
-		/* |x| > log(3)/2 ~= 0.5493 or nan */
-		if (w > 0x40340000) {
-			/* |x| > 20 or nan */
-			/* note: this branch avoids raising overflow */
-			t = 1 - 0/x;
-		} else {
-			t = expm1(2*x);
-			t = 1 - 2/(t+2);
-		}
-	} else if (w > 0x3fd058ae) {
-		/* |x| > log(5/3)/2 ~= 0.2554 */
-		t = expm1(2*x);
-		t = t/(t+2);
-	} else if (w >= 0x00100000) {
-		/* |x| >= 0x1p-1022, up to 2ulp error in [0.1,0.2554] */
-		t = expm1(-2*x);
-		t = -t/(t+2);
-	} else {
-		/* |x| is subnormal */
-		/* note: the branch above would not raise underflow in [0x1p-1023,0x1p-1022) */
-		FORCE_EVAL((float)x);
-		t = x;
-	}
-	return sign ? -t : t;
+  if (w > 0x3fe193ea) {
+    /* |x| > log(3)/2 ~= 0.5493 or nan */
+    if (w > 0x40340000) {
+      /* |x| > 20 or nan */
+      /* note: this branch avoids raising overflow */
+      t = 1 - 0 / x;
+    } else {
+      t = expm1(2 * x);
+      t = 1 - 2 / (t + 2);
+    }
+  } else if (w > 0x3fd058ae) {
+    /* |x| > log(5/3)/2 ~= 0.2554 */
+    t = expm1(2 * x);
+    t = t / (t + 2);
+  } else if (w >= 0x00100000) {
+    /* |x| >= 0x1p-1022, up to 2ulp error in [0.1,0.2554] */
+    t = expm1(-2 * x);
+    t = -t / (t + 2);
+  } else {
+    /* |x| is subnormal */
+    /* note: the branch above would not raise underflow in [0x1p-1023,0x1p-1022)
+     */
+    FORCE_EVAL((float)x);
+    t = x;
+  }
+  return sign ? -t : t;
 }
diff --git a/fusl/src/math/tanhf.c b/fusl/src/math/tanhf.c
index 10636fb..7c57ccf 100644
--- a/fusl/src/math/tanhf.c
+++ b/fusl/src/math/tanhf.c
@@ -1,39 +1,41 @@
 #include "libm.h"
 
-float tanhf(float x)
-{
-	union {float f; uint32_t i;} u = {.f = x};
-	uint32_t w;
-	int sign;
-	float t;
+float tanhf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {.f = x};
+  uint32_t w;
+  int sign;
+  float t;
 
-	/* x = |x| */
-	sign = u.i >> 31;
-	u.i &= 0x7fffffff;
-	x = u.f;
-	w = u.i;
+  /* x = |x| */
+  sign = u.i >> 31;
+  u.i &= 0x7fffffff;
+  x = u.f;
+  w = u.i;
 
-	if (w > 0x3f0c9f54) {
-		/* |x| > log(3)/2 ~= 0.5493 or nan */
-		if (w > 0x41200000) {
-			/* |x| > 10 */
-			t = 1 + 0/x;
-		} else {
-			t = expm1f(2*x);
-			t = 1 - 2/(t+2);
-		}
-	} else if (w > 0x3e82c578) {
-		/* |x| > log(5/3)/2 ~= 0.2554 */
-		t = expm1f(2*x);
-		t = t/(t+2);
-	} else if (w >= 0x00800000) {
-		/* |x| >= 0x1p-126 */
-		t = expm1f(-2*x);
-		t = -t/(t+2);
-	} else {
-		/* |x| is subnormal */
-		FORCE_EVAL(x*x);
-		t = x;
-	}
-	return sign ? -t : t;
+  if (w > 0x3f0c9f54) {
+    /* |x| > log(3)/2 ~= 0.5493 or nan */
+    if (w > 0x41200000) {
+      /* |x| > 10 */
+      t = 1 + 0 / x;
+    } else {
+      t = expm1f(2 * x);
+      t = 1 - 2 / (t + 2);
+    }
+  } else if (w > 0x3e82c578) {
+    /* |x| > log(5/3)/2 ~= 0.2554 */
+    t = expm1f(2 * x);
+    t = t / (t + 2);
+  } else if (w >= 0x00800000) {
+    /* |x| >= 0x1p-126 */
+    t = expm1f(-2 * x);
+    t = -t / (t + 2);
+  } else {
+    /* |x| is subnormal */
+    FORCE_EVAL(x * x);
+    t = x;
+  }
+  return sign ? -t : t;
 }
diff --git a/fusl/src/math/tanhl.c b/fusl/src/math/tanhl.c
index 4e1aa9f..64389b1 100644
--- a/fusl/src/math/tanhl.c
+++ b/fusl/src/math/tanhl.c
@@ -1,48 +1,45 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double tanhl(long double x)
-{
-	return tanh(x);
+long double tanhl(long double x) {
+  return tanh(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
-long double tanhl(long double x)
-{
-	union ldshape u = {x};
-	unsigned ex = u.i.se & 0x7fff;
-	unsigned sign = u.i.se & 0x8000;
-	uint32_t w;
-	long double t;
+long double tanhl(long double x) {
+  union ldshape u = {x};
+  unsigned ex = u.i.se & 0x7fff;
+  unsigned sign = u.i.se & 0x8000;
+  uint32_t w;
+  long double t;
 
-	/* x = |x| */
-	u.i.se = ex;
-	x = u.f;
-	w = u.i.m >> 32;
+  /* x = |x| */
+  u.i.se = ex;
+  x = u.f;
+  w = u.i.m >> 32;
 
-	if (ex > 0x3ffe || (ex == 0x3ffe && w > 0x8c9f53d5)) {
-		/* |x| > log(3)/2 ~= 0.5493 or nan */
-		if (ex >= 0x3fff+5) {
-			/* |x| >= 32 */
-			t = 1 + 0/(x + 0x1p-120f);
-		} else {
-			t = expm1l(2*x);
-			t = 1 - 2/(t+2);
-		}
-	} else if (ex > 0x3ffd || (ex == 0x3ffd && w > 0x82c577d4)) {
-		/* |x| > log(5/3)/2 ~= 0.2554 */
-		t = expm1l(2*x);
-		t = t/(t+2);
-	} else {
-		/* |x| is small */
-		t = expm1l(-2*x);
-		t = -t/(t+2);
-	}
-	return sign ? -t : t;
+  if (ex > 0x3ffe || (ex == 0x3ffe && w > 0x8c9f53d5)) {
+    /* |x| > log(3)/2 ~= 0.5493 or nan */
+    if (ex >= 0x3fff + 5) {
+      /* |x| >= 32 */
+      t = 1 + 0 / (x + 0x1p-120f);
+    } else {
+      t = expm1l(2 * x);
+      t = 1 - 2 / (t + 2);
+    }
+  } else if (ex > 0x3ffd || (ex == 0x3ffd && w > 0x82c577d4)) {
+    /* |x| > log(5/3)/2 ~= 0.2554 */
+    t = expm1l(2 * x);
+    t = t / (t + 2);
+  } else {
+    /* |x| is small */
+    t = expm1l(-2 * x);
+    t = -t / (t + 2);
+  }
+  return sign ? -t : t;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-long double tanhl(long double x)
-{
-	return tanh(x);
+long double tanhl(long double x) {
+  return tanh(x);
 }
 #endif
diff --git a/fusl/src/math/tanl.c b/fusl/src/math/tanl.c
index 6af0671..7888309 100644
--- a/fusl/src/math/tanl.c
+++ b/fusl/src/math/tanl.c
@@ -1,29 +1,27 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double tanl(long double x)
-{
-	return tan(x);
+long double tanl(long double x) {
+  return tan(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
-long double tanl(long double x)
-{
-	union ldshape u = {x};
-	long double y[2];
-	unsigned n;
+long double tanl(long double x) {
+  union ldshape u = {x};
+  long double y[2];
+  unsigned n;
 
-	u.i.se &= 0x7fff;
-	if (u.i.se == 0x7fff)
-		return x - x;
-	if (u.f < M_PI_4) {
-		if (u.i.se < 0x3fff - LDBL_MANT_DIG/2) {
-			/* raise inexact if x!=0 and underflow if subnormal */
-			FORCE_EVAL(u.i.se == 0 ? x*0x1p-120f : x+0x1p120f);
-			return x;
-		}
-		return __tanl(x, 0, 0);
-	}
-	n = __rem_pio2l(x, y);
-	return __tanl(y[0], y[1], n&1);
+  u.i.se &= 0x7fff;
+  if (u.i.se == 0x7fff)
+    return x - x;
+  if (u.f < M_PI_4) {
+    if (u.i.se < 0x3fff - LDBL_MANT_DIG / 2) {
+      /* raise inexact if x!=0 and underflow if subnormal */
+      FORCE_EVAL(u.i.se == 0 ? x * 0x1p-120f : x + 0x1p120f);
+      return x;
+    }
+    return __tanl(x, 0, 0);
+  }
+  n = __rem_pio2l(x, y);
+  return __tanl(y[0], y[1], n & 1);
 }
 #endif
diff --git a/fusl/src/math/tgamma.c b/fusl/src/math/tgamma.c
index 28f6e0f..feb0616 100644
--- a/fusl/src/math/tgamma.c
+++ b/fusl/src/math/tgamma.c
@@ -27,147 +27,166 @@
 static const double pi = 3.141592653589793238462643383279502884;
 
 /* sin(pi x) with x > 0x1p-100, if sin(pi*x)==0 the sign is arbitrary */
-static double sinpi(double x)
-{
-	int n;
+static double sinpi(double x) {
+  int n;
 
-	/* argument reduction: x = |x| mod 2 */
-	/* spurious inexact when x is odd int */
-	x = x * 0.5;
-	x = 2 * (x - floor(x));
+  /* argument reduction: x = |x| mod 2 */
+  /* spurious inexact when x is odd int */
+  x = x * 0.5;
+  x = 2 * (x - floor(x));
 
-	/* reduce x into [-.25,.25] */
-	n = 4 * x;
-	n = (n+1)/2;
-	x -= n * 0.5;
+  /* reduce x into [-.25,.25] */
+  n = 4 * x;
+  n = (n + 1) / 2;
+  x -= n * 0.5;
 
-	x *= pi;
-	switch (n) {
-	default: /* case 4 */
-	case 0:
-		return __sin(x, 0, 0);
-	case 1:
-		return __cos(x, 0);
-	case 2:
-		return __sin(-x, 0, 0);
-	case 3:
-		return -__cos(x, 0);
-	}
+  x *= pi;
+  switch (n) {
+    default: /* case 4 */
+    case 0:
+      return __sin(x, 0, 0);
+    case 1:
+      return __cos(x, 0);
+    case 2:
+      return __sin(-x, 0, 0);
+    case 3:
+      return -__cos(x, 0);
+  }
 }
 
 #define N 12
-//static const double g = 6.024680040776729583740234375;
+// static const double g = 6.024680040776729583740234375;
 static const double gmhalf = 5.524680040776729583740234375;
-static const double Snum[N+1] = {
-	23531376880.410759688572007674451636754734846804940,
-	42919803642.649098768957899047001988850926355848959,
-	35711959237.355668049440185451547166705960488635843,
-	17921034426.037209699919755754458931112671403265390,
-	6039542586.3520280050642916443072979210699388420708,
-	1439720407.3117216736632230727949123939715485786772,
-	248874557.86205415651146038641322942321632125127801,
-	31426415.585400194380614231628318205362874684987640,
-	2876370.6289353724412254090516208496135991145378768,
-	186056.26539522349504029498971604569928220784236328,
-	8071.6720023658162106380029022722506138218516325024,
-	210.82427775157934587250973392071336271166969580291,
-	2.5066282746310002701649081771338373386264310793408,
+static const double Snum[N + 1] = {
+    23531376880.410759688572007674451636754734846804940,
+    42919803642.649098768957899047001988850926355848959,
+    35711959237.355668049440185451547166705960488635843,
+    17921034426.037209699919755754458931112671403265390,
+    6039542586.3520280050642916443072979210699388420708,
+    1439720407.3117216736632230727949123939715485786772,
+    248874557.86205415651146038641322942321632125127801,
+    31426415.585400194380614231628318205362874684987640,
+    2876370.6289353724412254090516208496135991145378768,
+    186056.26539522349504029498971604569928220784236328,
+    8071.6720023658162106380029022722506138218516325024,
+    210.82427775157934587250973392071336271166969580291,
+    2.5066282746310002701649081771338373386264310793408,
 };
-static const double Sden[N+1] = {
-	0, 39916800, 120543840, 150917976, 105258076, 45995730, 13339535,
-	2637558, 357423, 32670, 1925, 66, 1,
+static const double Sden[N + 1] = {
+    0,       39916800, 120543840, 150917976, 105258076, 45995730, 13339535,
+    2637558, 357423,   32670,     1925,      66,        1,
 };
 /* n! for small integer n */
 static const double fact[] = {
-	1, 1, 2, 6, 24, 120, 720, 5040.0, 40320.0, 362880.0, 3628800.0, 39916800.0,
-	479001600.0, 6227020800.0, 87178291200.0, 1307674368000.0, 20922789888000.0,
-	355687428096000.0, 6402373705728000.0, 121645100408832000.0,
-	2432902008176640000.0, 51090942171709440000.0, 1124000727777607680000.0,
+    1,
+    1,
+    2,
+    6,
+    24,
+    120,
+    720,
+    5040.0,
+    40320.0,
+    362880.0,
+    3628800.0,
+    39916800.0,
+    479001600.0,
+    6227020800.0,
+    87178291200.0,
+    1307674368000.0,
+    20922789888000.0,
+    355687428096000.0,
+    6402373705728000.0,
+    121645100408832000.0,
+    2432902008176640000.0,
+    51090942171709440000.0,
+    1124000727777607680000.0,
 };
 
 /* S(x) rational function for positive x */
-static double S(double x)
-{
-	double_t num = 0, den = 0;
-	int i;
+static double S(double x) {
+  double_t num = 0, den = 0;
+  int i;
 
-	/* to avoid overflow handle large x differently */
-	if (x < 8)
-		for (i = N; i >= 0; i--) {
-			num = num * x + Snum[i];
-			den = den * x + Sden[i];
-		}
-	else
-		for (i = 0; i <= N; i++) {
-			num = num / x + Snum[i];
-			den = den / x + Sden[i];
-		}
-	return num/den;
+  /* to avoid overflow handle large x differently */
+  if (x < 8)
+    for (i = N; i >= 0; i--) {
+      num = num * x + Snum[i];
+      den = den * x + Sden[i];
+    }
+  else
+    for (i = 0; i <= N; i++) {
+      num = num / x + Snum[i];
+      den = den / x + Sden[i];
+    }
+  return num / den;
 }
 
-double tgamma(double x)
-{
-	union {double f; uint64_t i;} u = {x};
-	double absx, y;
-	double_t dy, z, r;
-	uint32_t ix = u.i>>32 & 0x7fffffff;
-	int sign = u.i>>63;
+double tgamma(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  double absx, y;
+  double_t dy, z, r;
+  uint32_t ix = u.i >> 32 & 0x7fffffff;
+  int sign = u.i >> 63;
 
-	/* special cases */
-	if (ix >= 0x7ff00000)
-		/* tgamma(nan)=nan, tgamma(inf)=inf, tgamma(-inf)=nan with invalid */
-		return x + INFINITY;
-	if (ix < (0x3ff-54)<<20)
-		/* |x| < 2^-54: tgamma(x) ~ 1/x, +-0 raises div-by-zero */
-		return 1/x;
+  /* special cases */
+  if (ix >= 0x7ff00000)
+    /* tgamma(nan)=nan, tgamma(inf)=inf, tgamma(-inf)=nan with invalid */
+    return x + INFINITY;
+  if (ix < (0x3ff - 54) << 20)
+    /* |x| < 2^-54: tgamma(x) ~ 1/x, +-0 raises div-by-zero */
+    return 1 / x;
 
-	/* integer arguments */
-	/* raise inexact when non-integer */
-	if (x == floor(x)) {
-		if (sign)
-			return 0/0.0;
-		if (x <= sizeof fact/sizeof *fact)
-			return fact[(int)x - 1];
-	}
+  /* integer arguments */
+  /* raise inexact when non-integer */
+  if (x == floor(x)) {
+    if (sign)
+      return 0 / 0.0;
+    if (x <= sizeof fact / sizeof *fact)
+      return fact[(int)x - 1];
+  }
 
-	/* x >= 172: tgamma(x)=inf with overflow */
-	/* x =< -184: tgamma(x)=+-0 with underflow */
-	if (ix >= 0x40670000) { /* |x| >= 184 */
-		if (sign) {
-			FORCE_EVAL((float)(0x1p-126/x));
-			if (floor(x) * 0.5 == floor(x * 0.5))
-				return 0;
-			return -0.0;
-		}
-		x *= 0x1p1023;
-		return x;
-	}
+  /* x >= 172: tgamma(x)=inf with overflow */
+  /* x =< -184: tgamma(x)=+-0 with underflow */
+  if (ix >= 0x40670000) { /* |x| >= 184 */
+    if (sign) {
+      FORCE_EVAL((float)(0x1p-126 / x));
+      if (floor(x) * 0.5 == floor(x * 0.5))
+        return 0;
+      return -0.0;
+    }
+    x *= 0x1p1023;
+    return x;
+  }
 
-	absx = sign ? -x : x;
+  absx = sign ? -x : x;
 
-	/* handle the error of x + g - 0.5 */
-	y = absx + gmhalf;
-	if (absx > gmhalf) {
-		dy = y - absx;
-		dy -= gmhalf;
-	} else {
-		dy = y - gmhalf;
-		dy -= absx;
-	}
+  /* handle the error of x + g - 0.5 */
+  y = absx + gmhalf;
+  if (absx > gmhalf) {
+    dy = y - absx;
+    dy -= gmhalf;
+  } else {
+    dy = y - gmhalf;
+    dy -= absx;
+  }
 
-	z = absx - 0.5;
-	r = S(absx) * exp(-y);
-	if (x < 0) {
-		/* reflection formula for negative x */
-		/* sinpi(absx) is not 0, integers are already handled */
-		r = -pi / (sinpi(absx) * absx * r);
-		dy = -dy;
-		z = -z;
-	}
-	r += dy * (gmhalf+0.5) * r / y;
-	z = pow(y, 0.5*z);
-	y = r * z * z;
-	return y;
+  z = absx - 0.5;
+  r = S(absx) * exp(-y);
+  if (x < 0) {
+    /* reflection formula for negative x */
+    /* sinpi(absx) is not 0, integers are already handled */
+    r = -pi / (sinpi(absx) * absx * r);
+    dy = -dy;
+    z = -z;
+  }
+  r += dy * (gmhalf + 0.5) * r / y;
+  z = pow(y, 0.5 * z);
+  y = r * z * z;
+  return y;
 }
 
 #if 0
diff --git a/fusl/src/math/tgammaf.c b/fusl/src/math/tgammaf.c
index b4ca51c..6d8d33f 100644
--- a/fusl/src/math/tgammaf.c
+++ b/fusl/src/math/tgammaf.c
@@ -1,6 +1,5 @@
 #include <math.h>
 
-float tgammaf(float x)
-{
-	return tgamma(x);
+float tgammaf(float x) {
+  return tgamma(x);
 }
diff --git a/fusl/src/math/tgammal.c b/fusl/src/math/tgammal.c
index 5336c5b..9708929 100644
--- a/fusl/src/math/tgammal.c
+++ b/fusl/src/math/tgammal.c
@@ -51,9 +51,8 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double tgammal(long double x)
-{
-	return tgamma(x);
+long double tgammal(long double x) {
+  return tgamma(x);
 }
 #elif LDBL_MANT_DIG == 64 && LDBL_MAX_EXP == 16384
 /*
@@ -65,25 +64,17 @@
 Relative error spread =  8.4e-23
 */
 static const long double P[8] = {
- 4.212760487471622013093E-5L,
- 4.542931960608009155600E-4L,
- 4.092666828394035500949E-3L,
- 2.385363243461108252554E-2L,
- 1.113062816019361559013E-1L,
- 3.629515436640239168939E-1L,
- 8.378004301573126728826E-1L,
- 1.000000000000000000009E0L,
+    4.212760487471622013093E-5L, 4.542931960608009155600E-4L,
+    4.092666828394035500949E-3L, 2.385363243461108252554E-2L,
+    1.113062816019361559013E-1L, 3.629515436640239168939E-1L,
+    8.378004301573126728826E-1L, 1.000000000000000000009E0L,
 };
 static const long double Q[9] = {
--1.397148517476170440917E-5L,
- 2.346584059160635244282E-4L,
--1.237799246653152231188E-3L,
--7.955933682494738320586E-4L,
- 2.773706565840072979165E-2L,
--4.633887671244534213831E-2L,
--2.243510905670329164562E-1L,
- 4.150160950588455434583E-1L,
- 9.999999999999999999908E-1L,
+    -1.397148517476170440917E-5L, 2.346584059160635244282E-4L,
+    -1.237799246653152231188E-3L, -7.955933682494738320586E-4L,
+    2.773706565840072979165E-2L,  -4.633887671244534213831E-2L,
+    -2.243510905670329164562E-1L, 4.150160950588455434583E-1L,
+    9.999999999999999999908E-1L,
 };
 
 /*
@@ -122,15 +113,11 @@
 Relative error spread =  8.8e-4
 */
 static const long double STIR[9] = {
- 7.147391378143610789273E-4L,
--2.363848809501759061727E-5L,
--5.950237554056330156018E-4L,
- 6.989332260623193171870E-5L,
- 7.840334842744753003862E-4L,
--2.294719747873185405699E-4L,
--2.681327161876304418288E-3L,
- 3.472222222230075327854E-3L,
- 8.333333333333331800504E-2L,
+    7.147391378143610789273E-4L,  -2.363848809501759061727E-5L,
+    -5.950237554056330156018E-4L, 6.989332260623193171870E-5L,
+    7.840334842744753003862E-4L,  -2.294719747873185405699E-4L,
+    -2.681327161876304418288E-3L, 3.472222222230075327854E-3L,
+    8.333333333333331800504E-2L,
 };
 
 #define MAXSTIR 1024.0L
@@ -142,15 +129,11 @@
  * Peak relative error 4.2e-23
  */
 static const long double S[9] = {
--1.193945051381510095614E-3L,
- 7.220599478036909672331E-3L,
--9.622023360406271645744E-3L,
--4.219773360705915470089E-2L,
- 1.665386113720805206758E-1L,
--4.200263503403344054473E-2L,
--6.558780715202540684668E-1L,
- 5.772156649015328608253E-1L,
- 1.000000000000000000000E0L,
+    -1.193945051381510095614E-3L, 7.220599478036909672331E-3L,
+    -9.622023360406271645744E-3L, -4.219773360705915470089E-2L,
+    1.665386113720805206758E-1L,  -4.200263503403344054473E-2L,
+    -6.558780715202540684668E-1L, 5.772156649015328608253E-1L,
+    1.000000000000000000000E0L,
 };
 
 /* 1/tgamma(-x) = z P(z)
@@ -160,122 +143,118 @@
  * Relative error spread =  2.5e-24
  */
 static const long double SN[9] = {
- 1.133374167243894382010E-3L,
- 7.220837261893170325704E-3L,
- 9.621911155035976733706E-3L,
--4.219773343731191721664E-2L,
--1.665386113944413519335E-1L,
--4.200263503402112910504E-2L,
- 6.558780715202536547116E-1L,
- 5.772156649015328608727E-1L,
--1.000000000000000000000E0L,
+    1.133374167243894382010E-3L,  7.220837261893170325704E-3L,
+    9.621911155035976733706E-3L,  -4.219773343731191721664E-2L,
+    -1.665386113944413519335E-1L, -4.200263503402112910504E-2L,
+    6.558780715202536547116E-1L,  5.772156649015328608727E-1L,
+    -1.000000000000000000000E0L,
 };
 
 static const long double PIL = 3.1415926535897932384626L;
 
 /* Gamma function computed by Stirling's formula.
  */
-static long double stirf(long double x)
-{
-	long double y, w, v;
+static long double stirf(long double x) {
+  long double y, w, v;
 
-	w = 1.0/x;
-	/* For large x, use rational coefficients from the analytical expansion.  */
-	if (x > 1024.0)
-		w = (((((6.97281375836585777429E-5L * w
-		 + 7.84039221720066627474E-4L) * w
-		 - 2.29472093621399176955E-4L) * w
-		 - 2.68132716049382716049E-3L) * w
-		 + 3.47222222222222222222E-3L) * w
-		 + 8.33333333333333333333E-2L) * w
-		 + 1.0;
-	else
-		w = 1.0 + w * __polevll(w, STIR, 8);
-	y = expl(x);
-	if (x > MAXSTIR) { /* Avoid overflow in pow() */
-		v = powl(x, 0.5L * x - 0.25L);
-		y = v * (v / y);
-	} else {
-		y = powl(x, x - 0.5L) / y;
-	}
-	y = SQTPI * y * w;
-	return y;
+  w = 1.0 / x;
+  /* For large x, use rational coefficients from the analytical expansion.  */
+  if (x > 1024.0)
+    w = (((((6.97281375836585777429E-5L * w + 7.84039221720066627474E-4L) * w -
+            2.29472093621399176955E-4L) *
+               w -
+           2.68132716049382716049E-3L) *
+              w +
+          3.47222222222222222222E-3L) *
+             w +
+         8.33333333333333333333E-2L) *
+            w +
+        1.0;
+  else
+    w = 1.0 + w * __polevll(w, STIR, 8);
+  y = expl(x);
+  if (x > MAXSTIR) { /* Avoid overflow in pow() */
+    v = powl(x, 0.5L * x - 0.25L);
+    y = v * (v / y);
+  } else {
+    y = powl(x, x - 0.5L) / y;
+  }
+  y = SQTPI * y * w;
+  return y;
 }
 
-long double tgammal(long double x)
-{
-	long double p, q, z;
+long double tgammal(long double x) {
+  long double p, q, z;
 
-	if (!isfinite(x))
-		return x + INFINITY;
+  if (!isfinite(x))
+    return x + INFINITY;
 
-	q = fabsl(x);
-	if (q > 13.0) {
-		if (x < 0.0) {
-			p = floorl(q);
-			z = q - p;
-			if (z == 0)
-				return 0 / z;
-			if (q > MAXGAML) {
-				z = 0;
-			} else {
-				if (z > 0.5) {
-					p += 1.0;
-					z = q - p;
-				}
-				z = q * sinl(PIL * z);
-				z = fabsl(z) * stirf(q);
-				z = PIL/z;
-			}
-			if (0.5 * p == floorl(q * 0.5))
-				z = -z;
-		} else if (x > MAXGAML) {
-			z = x * 0x1p16383L;
-		} else {
-			z = stirf(x);
-		}
-		return z;
-	}
+  q = fabsl(x);
+  if (q > 13.0) {
+    if (x < 0.0) {
+      p = floorl(q);
+      z = q - p;
+      if (z == 0)
+        return 0 / z;
+      if (q > MAXGAML) {
+        z = 0;
+      } else {
+        if (z > 0.5) {
+          p += 1.0;
+          z = q - p;
+        }
+        z = q * sinl(PIL * z);
+        z = fabsl(z) * stirf(q);
+        z = PIL / z;
+      }
+      if (0.5 * p == floorl(q * 0.5))
+        z = -z;
+    } else if (x > MAXGAML) {
+      z = x * 0x1p16383L;
+    } else {
+      z = stirf(x);
+    }
+    return z;
+  }
 
-	z = 1.0;
-	while (x >= 3.0) {
-		x -= 1.0;
-		z *= x;
-	}
-	while (x < -0.03125L) {
-		z /= x;
-		x += 1.0;
-	}
-	if (x <= 0.03125L)
-		goto small;
-	while (x < 2.0) {
-		z /= x;
-		x += 1.0;
-	}
-	if (x == 2.0)
-		return z;
+  z = 1.0;
+  while (x >= 3.0) {
+    x -= 1.0;
+    z *= x;
+  }
+  while (x < -0.03125L) {
+    z /= x;
+    x += 1.0;
+  }
+  if (x <= 0.03125L)
+    goto small;
+  while (x < 2.0) {
+    z /= x;
+    x += 1.0;
+  }
+  if (x == 2.0)
+    return z;
 
-	x -= 2.0;
-	p = __polevll(x, P, 7);
-	q = __polevll(x, Q, 8);
-	z = z * p / q;
-	return z;
+  x -= 2.0;
+  p = __polevll(x, P, 7);
+  q = __polevll(x, Q, 8);
+  z = z * p / q;
+  return z;
 
 small:
-	/* z==1 if x was originally +-0 */
-	if (x == 0 && z != 1)
-		return x / x;
-	if (x < 0.0) {
-		x = -x;
-		q = z / (x * __polevll(x, SN, 8));
-	} else
-		q = z / (x * __polevll(x, S, 8));
-	return q;
+  /* z==1 if x was originally +-0 */
+  if (x == 0 && z != 1)
+    return x / x;
+  if (x < 0.0) {
+    x = -x;
+    q = z / (x * __polevll(x, SN, 8));
+  } else
+    q = z / (x * __polevll(x, S, 8));
+  return q;
 }
 #elif LDBL_MANT_DIG == 113 && LDBL_MAX_EXP == 16384
 // TODO: broken implementation to make things compile
-long double tgammal(long double x)
-{
-	return tgamma(x);
+long double tgammal(long double x) {
+  return tgamma(x);
 }
 #endif
diff --git a/fusl/src/math/trunc.c b/fusl/src/math/trunc.c
index d13711b..48c3589 100644
--- a/fusl/src/math/trunc.c
+++ b/fusl/src/math/trunc.c
@@ -1,19 +1,21 @@
 #include "libm.h"
 
-double trunc(double x)
-{
-	union {double f; uint64_t i;} u = {x};
-	int e = (int)(u.i >> 52 & 0x7ff) - 0x3ff + 12;
-	uint64_t m;
+double trunc(double x) {
+  union {
+    double f;
+    uint64_t i;
+  } u = {x};
+  int e = (int)(u.i >> 52 & 0x7ff) - 0x3ff + 12;
+  uint64_t m;
 
-	if (e >= 52 + 12)
-		return x;
-	if (e < 12)
-		e = 1;
-	m = -1ULL >> e;
-	if ((u.i & m) == 0)
-		return x;
-	FORCE_EVAL(x + 0x1p120f);
-	u.i &= ~m;
-	return u.f;
+  if (e >= 52 + 12)
+    return x;
+  if (e < 12)
+    e = 1;
+  m = -1ULL >> e;
+  if ((u.i & m) == 0)
+    return x;
+  FORCE_EVAL(x + 0x1p120f);
+  u.i &= ~m;
+  return u.f;
 }
diff --git a/fusl/src/math/truncf.c b/fusl/src/math/truncf.c
index 1a7d03c..a703662 100644
--- a/fusl/src/math/truncf.c
+++ b/fusl/src/math/truncf.c
@@ -1,19 +1,21 @@
 #include "libm.h"
 
-float truncf(float x)
-{
-	union {float f; uint32_t i;} u = {x};
-	int e = (int)(u.i >> 23 & 0xff) - 0x7f + 9;
-	uint32_t m;
+float truncf(float x) {
+  union {
+    float f;
+    uint32_t i;
+  } u = {x};
+  int e = (int)(u.i >> 23 & 0xff) - 0x7f + 9;
+  uint32_t m;
 
-	if (e >= 23 + 9)
-		return x;
-	if (e < 9)
-		e = 1;
-	m = -1U >> e;
-	if ((u.i & m) == 0)
-		return x;
-	FORCE_EVAL(x + 0x1p120f);
-	u.i &= ~m;
-	return u.f;
+  if (e >= 23 + 9)
+    return x;
+  if (e < 9)
+    e = 1;
+  m = -1U >> e;
+  if ((u.i & m) == 0)
+    return x;
+  FORCE_EVAL(x + 0x1p120f);
+  u.i &= ~m;
+  return u.f;
 }
diff --git a/fusl/src/math/truncl.c b/fusl/src/math/truncl.c
index f07b193..ba2b8f4 100644
--- a/fusl/src/math/truncl.c
+++ b/fusl/src/math/truncl.c
@@ -1,34 +1,32 @@
 #include "libm.h"
 
 #if LDBL_MANT_DIG == 53 && LDBL_MAX_EXP == 1024
-long double truncl(long double x)
-{
-	return trunc(x);
+long double truncl(long double x) {
+  return trunc(x);
 }
 #elif (LDBL_MANT_DIG == 64 || LDBL_MANT_DIG == 113) && LDBL_MAX_EXP == 16384
 
-static const long double toint = 1/LDBL_EPSILON;
+static const long double toint = 1 / LDBL_EPSILON;
 
-long double truncl(long double x)
-{
-	union ldshape u = {x};
-	int e = u.i.se & 0x7fff;
-	int s = u.i.se >> 15;
-	long double y;
+long double truncl(long double x) {
+  union ldshape u = {x};
+  int e = u.i.se & 0x7fff;
+  int s = u.i.se >> 15;
+  long double y;
 
-	if (e >= 0x3fff+LDBL_MANT_DIG-1)
-		return x;
-	if (e <= 0x3fff-1) {
-		FORCE_EVAL(x + 0x1p120f);
-		return x*0;
-	}
-	/* y = int(|x|) - |x|, where int(|x|) is an integer neighbor of |x| */
-	if (s)
-		x = -x;
-	y = x + toint - toint - x;
-	if (y > 0)
-		y -= 1;
-	x += y;
-	return s ? -x : x;
+  if (e >= 0x3fff + LDBL_MANT_DIG - 1)
+    return x;
+  if (e <= 0x3fff - 1) {
+    FORCE_EVAL(x + 0x1p120f);
+    return x * 0;
+  }
+  /* y = int(|x|) - |x|, where int(|x|) is an integer neighbor of |x| */
+  if (s)
+    x = -x;
+  y = x + toint - toint - x;
+  if (y > 0)
+    y -= 1;
+  x += y;
+  return s ? -x : x;
 }
 #endif
diff --git a/fusl/src/misc/a64l.c b/fusl/src/misc/a64l.c
index 86aeefe..9ffc403 100644
--- a/fusl/src/misc/a64l.c
+++ b/fusl/src/misc/a64l.c
@@ -3,24 +3,22 @@
 #include <stdint.h>
 
 static const char digits[] =
-	"./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+    "./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
 
-long a64l(const char *s)
-{
-	int e;
-	uint32_t x = 0;
-	for (e=0; e<36 && *s; e+=6, s++)
-		x |= (strchr(digits, *s)-digits)<<e;
-	return x;
+long a64l(const char* s) {
+  int e;
+  uint32_t x = 0;
+  for (e = 0; e < 36 && *s; e += 6, s++)
+    x |= (strchr(digits, *s) - digits) << e;
+  return x;
 }
 
-char *l64a(long x0)
-{
-	static char s[7];
-	char *p;
-	uint32_t x = x0;
-	for (p=s; x; p++, x>>=6)
-		*p = digits[x&63];
-	*p = 0;
-	return s;
+char* l64a(long x0) {
+  static char s[7];
+  char* p;
+  uint32_t x = x0;
+  for (p = s; x; p++, x >>= 6)
+    *p = digits[x & 63];
+  *p = 0;
+  return s;
 }
diff --git a/fusl/src/misc/basename.c b/fusl/src/misc/basename.c
index cc4f778..0c693d7 100644
--- a/fusl/src/misc/basename.c
+++ b/fusl/src/misc/basename.c
@@ -2,14 +2,16 @@
 #include <libgen.h>
 #include "libc.h"
 
-char *basename(char *s)
-{
-	size_t i;
-	if (!s || !*s) return ".";
-	i = strlen(s)-1;
-	for (; i&&s[i]=='/'; i--) s[i] = 0;
-	for (; i&&s[i-1]!='/'; i--);
-	return s+i;
+char* basename(char* s) {
+  size_t i;
+  if (!s || !*s)
+    return ".";
+  i = strlen(s) - 1;
+  for (; i && s[i] == '/'; i--)
+    s[i] = 0;
+  for (; i && s[i - 1] != '/'; i--)
+    ;
+  return s + i;
 }
 
 weak_alias(basename, __xpg_basename);
diff --git a/fusl/src/misc/dirname.c b/fusl/src/misc/dirname.c
index dd57088..9d2e0cf 100644
--- a/fusl/src/misc/dirname.c
+++ b/fusl/src/misc/dirname.c
@@ -1,14 +1,20 @@
 #include <string.h>
 #include <libgen.h>
 
-char *dirname(char *s)
-{
-	size_t i;
-	if (!s || !*s) return ".";
-	i = strlen(s)-1;
-	for (; s[i]=='/'; i--) if (!i) return "/";
-	for (; s[i]!='/'; i--) if (!i) return ".";
-	for (; s[i]=='/'; i--) if (!i) return "/";
-	s[i+1] = 0;
-	return s;
+char* dirname(char* s) {
+  size_t i;
+  if (!s || !*s)
+    return ".";
+  i = strlen(s) - 1;
+  for (; s[i] == '/'; i--)
+    if (!i)
+      return "/";
+  for (; s[i] != '/'; i--)
+    if (!i)
+      return ".";
+  for (; s[i] == '/'; i--)
+    if (!i)
+      return "/";
+  s[i + 1] = 0;
+  return s;
 }
diff --git a/fusl/src/misc/ffs.c b/fusl/src/misc/ffs.c
index 673ce5a..6d2994f 100644
--- a/fusl/src/misc/ffs.c
+++ b/fusl/src/misc/ffs.c
@@ -1,7 +1,6 @@
 #include <strings.h>
 #include "atomic.h"
 
-int ffs(int i)
-{
-	return i ? a_ctz_l(i)+1 : 0;
+int ffs(int i) {
+  return i ? a_ctz_l(i) + 1 : 0;
 }
diff --git a/fusl/src/misc/ffsl.c b/fusl/src/misc/ffsl.c
index 0105c66..179321b 100644
--- a/fusl/src/misc/ffsl.c
+++ b/fusl/src/misc/ffsl.c
@@ -1,7 +1,6 @@
 #include <strings.h>
 #include "atomic.h"
 
-int ffsl(long i)
-{
-	return i ? a_ctz_l(i)+1 : 0;
+int ffsl(long i) {
+  return i ? a_ctz_l(i) + 1 : 0;
 }
diff --git a/fusl/src/misc/ffsll.c b/fusl/src/misc/ffsll.c
index 0c5ced8..0084361 100644
--- a/fusl/src/misc/ffsll.c
+++ b/fusl/src/misc/ffsll.c
@@ -1,7 +1,6 @@
 #include <strings.h>
 #include "atomic.h"
 
-int ffsll(long long i)
-{
-	return i ? a_ctz_64(i)+1 : 0;
+int ffsll(long long i) {
+  return i ? a_ctz_64(i) + 1 : 0;
 }
diff --git a/fusl/src/misc/fmtmsg.c b/fusl/src/misc/fmtmsg.c
index 69170b2..03b84e1 100644
--- a/fusl/src/misc/fmtmsg.c
+++ b/fusl/src/misc/fmtmsg.c
@@ -13,78 +13,84 @@
  * If lstr is the first part of bstr, check that the next char in bstr
  * is either \0 or :
  */
-static int _strcolcmp(const char *lstr, const char *bstr)
-{
-	size_t i = 0;
-	while (lstr[i] && bstr[i] && (bstr[i] == lstr[i])) i++;
-	if ( lstr[i] || (bstr[i] && bstr[i] != ':')) return 1;
-	return 0;
+static int _strcolcmp(const char* lstr, const char* bstr) {
+  size_t i = 0;
+  while (lstr[i] && bstr[i] && (bstr[i] == lstr[i]))
+    i++;
+  if (lstr[i] || (bstr[i] && bstr[i] != ':'))
+    return 1;
+  return 0;
 }
 
-int fmtmsg(long classification, const char *label, int severity,
-           const char *text, const char *action, const char *tag)
-{
-	int ret = 0, i, consolefd, verb = 0;
-	char *errstring = MM_NULLSEV, *cmsg = getenv("MSGVERB");
-	char *const msgs[] = {
-		"label", "severity", "text", "action", "tag", NULL
-	};
-	int cs;
+int fmtmsg(long classification,
+           const char* label,
+           int severity,
+           const char* text,
+           const char* action,
+           const char* tag) {
+  int ret = 0, i, consolefd, verb = 0;
+  char *errstring = MM_NULLSEV, *cmsg = getenv("MSGVERB");
+  char* const msgs[] = {"label", "severity", "text", "action", "tag", NULL};
+  int cs;
 
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
 
-	if (severity == MM_HALT) errstring = "HALT: ";
-	else if (severity == MM_ERROR) errstring = "ERROR: ";
-	else if (severity == MM_WARNING) errstring = "WARNING: ";
-	else if (severity == MM_INFO) errstring = "INFO: ";
+  if (severity == MM_HALT)
+    errstring = "HALT: ";
+  else if (severity == MM_ERROR)
+    errstring = "ERROR: ";
+  else if (severity == MM_WARNING)
+    errstring = "WARNING: ";
+  else if (severity == MM_INFO)
+    errstring = "INFO: ";
 
-	if (classification & MM_CONSOLE) {
-		consolefd = open("/dev/console", O_WRONLY);
-		if (consolefd < 0) {
-			ret = MM_NOCON;
-		} else {
-			if (dprintf(consolefd, "%s%s%s%s%s%s%s%s\n",
-			            label?label:"", label?": ":"",
-			            severity?errstring:"", text?text:"",
-			            action?"\nTO FIX: ":"",
-			            action?action:"", action?" ":"",
-			            tag?tag:"" )<1)
-				ret = MM_NOCON;
-			close(consolefd);
-		}
-	}
+  if (classification & MM_CONSOLE) {
+    consolefd = open("/dev/console", O_WRONLY);
+    if (consolefd < 0) {
+      ret = MM_NOCON;
+    } else {
+      if (dprintf(consolefd, "%s%s%s%s%s%s%s%s\n", label ? label : "",
+                  label ? ": " : "", severity ? errstring : "",
+                  text ? text : "", action ? "\nTO FIX: " : "",
+                  action ? action : "", action ? " " : "", tag ? tag : "") < 1)
+        ret = MM_NOCON;
+      close(consolefd);
+    }
+  }
 
-	if (classification & MM_PRINT) {
-		while (cmsg && cmsg[0]) {
-			for(i=0; msgs[i]; i++) {
-				if (!_strcolcmp(msgs[i], cmsg)) break;
-			}
-			if (msgs[i] == NULL) {
-				//ignore MSGVERB-unrecognized component
-				verb = 0xFF;
-				break;
-			} else {
-				verb |= (1 << i);
-				cmsg = strchr(cmsg, ':');
-				if (cmsg) cmsg++;
-			}
-		}
-		if (!verb) verb = 0xFF;
-		if (dprintf(2, "%s%s%s%s%s%s%s%s\n",
-		            (verb&1 && label) ? label : "",
-		            (verb&1 && label) ? ": " : "",
-		            (verb&2 && severity) ? errstring : "",
-		            (verb&4 && text) ? text : "",
-		            (verb&8 && action) ? "\nTO FIX: " : "",
-		            (verb&8 && action) ? action : "",
-		            (verb&8 && action) ? " " : "",
-		            (verb&16 && tag) ? tag : "" ) < 1)
-			ret |= MM_NOMSG;
-	}
-	if ((ret & (MM_NOCON|MM_NOMSG)) == (MM_NOCON|MM_NOMSG))
-		ret = MM_NOTOK;
+  if (classification & MM_PRINT) {
+    while (cmsg && cmsg[0]) {
+      for (i = 0; msgs[i]; i++) {
+        if (!_strcolcmp(msgs[i], cmsg))
+          break;
+      }
+      if (msgs[i] == NULL) {
+        // ignore MSGVERB-unrecognized component
+        verb = 0xFF;
+        break;
+      } else {
+        verb |= (1 << i);
+        cmsg = strchr(cmsg, ':');
+        if (cmsg)
+          cmsg++;
+      }
+    }
+    if (!verb)
+      verb = 0xFF;
+    if (dprintf(2, "%s%s%s%s%s%s%s%s\n", (verb & 1 && label) ? label : "",
+                (verb & 1 && label) ? ": " : "",
+                (verb & 2 && severity) ? errstring : "",
+                (verb & 4 && text) ? text : "",
+                (verb & 8 && action) ? "\nTO FIX: " : "",
+                (verb & 8 && action) ? action : "",
+                (verb & 8 && action) ? " " : "",
+                (verb & 16 && tag) ? tag : "") < 1)
+      ret |= MM_NOMSG;
+  }
+  if ((ret & (MM_NOCON | MM_NOMSG)) == (MM_NOCON | MM_NOMSG))
+    ret = MM_NOTOK;
 
-	pthread_setcancelstate(cs, 0);
+  pthread_setcancelstate(cs, 0);
 
-	return ret;
+  return ret;
 }
diff --git a/fusl/src/misc/forkpty.c b/fusl/src/misc/forkpty.c
index caf13ad..15f18b8 100644
--- a/fusl/src/misc/forkpty.c
+++ b/fusl/src/misc/forkpty.c
@@ -6,52 +6,57 @@
 #include <sys/wait.h>
 #include <pthread.h>
 
-int forkpty(int *pm, char *name, const struct termios *tio, const struct winsize *ws)
-{
-	int m, s, ec=0, p[2], cs;
-	pid_t pid=-1;
-	sigset_t set, oldset;
+int forkpty(int* pm,
+            char* name,
+            const struct termios* tio,
+            const struct winsize* ws) {
+  int m, s, ec = 0, p[2], cs;
+  pid_t pid = -1;
+  sigset_t set, oldset;
 
-	if (openpty(&m, &s, name, tio, ws) < 0) return -1;
+  if (openpty(&m, &s, name, tio, ws) < 0)
+    return -1;
 
-	sigfillset(&set);
-	pthread_sigmask(SIG_BLOCK, &set, &oldset);
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  sigfillset(&set);
+  pthread_sigmask(SIG_BLOCK, &set, &oldset);
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
 
-	if (pipe2(p, O_CLOEXEC)) {
-		close(s);
-		goto out;
-	}
+  if (pipe2(p, O_CLOEXEC)) {
+    close(s);
+    goto out;
+  }
 
-	pid = fork();
-	if (!pid) {
-		close(m);
-		close(p[0]);
-		if (login_tty(s)) {
-			write(p[1], &errno, sizeof errno);
-			_exit(127);
-		}
-		close(p[1]);
-		pthread_setcancelstate(cs, 0);
-		pthread_sigmask(SIG_SETMASK, &oldset, 0);
-		return 0;
-	}
-	close(s);
-	close(p[1]);
-	if (read(p[0], &ec, sizeof ec) > 0) {
-		int status;
-		waitpid(pid, &status, 0);
-		pid = -1;
-		errno = ec;
-	}
-	close(p[0]);
+  pid = fork();
+  if (!pid) {
+    close(m);
+    close(p[0]);
+    if (login_tty(s)) {
+      write(p[1], &errno, sizeof errno);
+      _exit(127);
+    }
+    close(p[1]);
+    pthread_setcancelstate(cs, 0);
+    pthread_sigmask(SIG_SETMASK, &oldset, 0);
+    return 0;
+  }
+  close(s);
+  close(p[1]);
+  if (read(p[0], &ec, sizeof ec) > 0) {
+    int status;
+    waitpid(pid, &status, 0);
+    pid = -1;
+    errno = ec;
+  }
+  close(p[0]);
 
 out:
-	if (pid > 0) *pm = m;
-	else close(m);
+  if (pid > 0)
+    *pm = m;
+  else
+    close(m);
 
-	pthread_setcancelstate(cs, 0);
-	pthread_sigmask(SIG_SETMASK, &oldset, 0);
+  pthread_setcancelstate(cs, 0);
+  pthread_sigmask(SIG_SETMASK, &oldset, 0);
 
-	return pid;
+  return pid;
 }
diff --git a/fusl/src/misc/get_current_dir_name.c b/fusl/src/misc/get_current_dir_name.c
index 782cddc..02b57a6 100644
--- a/fusl/src/misc/get_current_dir_name.c
+++ b/fusl/src/misc/get_current_dir_name.c
@@ -5,11 +5,11 @@
 #include <unistd.h>
 #include <sys/stat.h>
 
-char *get_current_dir_name(void) {
-	struct stat a, b;
-	char *res = getenv("PWD");
-	if (res && *res && !stat(res, &a) && !stat(".", &b)
-	    && (a.st_dev == b.st_dev) && (a.st_ino == b.st_ino))
-		return strdup(res);
-	return getcwd(0, 0);
+char* get_current_dir_name(void) {
+  struct stat a, b;
+  char* res = getenv("PWD");
+  if (res && *res && !stat(res, &a) && !stat(".", &b) &&
+      (a.st_dev == b.st_dev) && (a.st_ino == b.st_ino))
+    return strdup(res);
+  return getcwd(0, 0);
 }
diff --git a/fusl/src/misc/getauxval.c b/fusl/src/misc/getauxval.c
index b846c80..15adf5f 100644
--- a/fusl/src/misc/getauxval.c
+++ b/fusl/src/misc/getauxval.c
@@ -2,12 +2,13 @@
 #include <errno.h>
 #include "libc.h"
 
-unsigned long getauxval(unsigned long item)
-{
-	size_t *auxv = libc.auxv;
-	if (item == AT_SECURE) return libc.secure;
-	for (; *auxv; auxv+=2)
-		if (*auxv==item) return auxv[1];
-	errno = ENOENT;
-	return 0;
+unsigned long getauxval(unsigned long item) {
+  size_t* auxv = libc.auxv;
+  if (item == AT_SECURE)
+    return libc.secure;
+  for (; *auxv; auxv += 2)
+    if (*auxv == item)
+      return auxv[1];
+  errno = ENOENT;
+  return 0;
 }
diff --git a/fusl/src/misc/getdomainname.c b/fusl/src/misc/getdomainname.c
index 59df566..458754d 100644
--- a/fusl/src/misc/getdomainname.c
+++ b/fusl/src/misc/getdomainname.c
@@ -4,14 +4,13 @@
 #include <string.h>
 #include <errno.h>
 
-int getdomainname(char *name, size_t len)
-{
-	struct utsname temp;
-	uname(&temp);
-	if (!len || strlen(temp.domainname) >= len) {
-		errno = EINVAL;
-		return -1;
-	}
-	strcpy(name, temp.domainname);
-	return 0;
+int getdomainname(char* name, size_t len) {
+  struct utsname temp;
+  uname(&temp);
+  if (!len || strlen(temp.domainname) >= len) {
+    errno = EINVAL;
+    return -1;
+  }
+  strcpy(name, temp.domainname);
+  return 0;
 }
diff --git a/fusl/src/misc/gethostid.c b/fusl/src/misc/gethostid.c
index ea65611..efe1855 100644
--- a/fusl/src/misc/gethostid.c
+++ b/fusl/src/misc/gethostid.c
@@ -1,4 +1,3 @@
-long gethostid()
-{
-	return 0;
+long gethostid() {
+  return 0;
 }
diff --git a/fusl/src/misc/getopt.c b/fusl/src/misc/getopt.c
index 9217983..a2c8739 100644
--- a/fusl/src/misc/getopt.c
+++ b/fusl/src/misc/getopt.c
@@ -6,98 +6,99 @@
 #include "libc.h"
 #include "locale_impl.h"
 
-char *optarg;
-int optind=1, opterr=1, optopt, __optpos, __optreset=0;
+char* optarg;
+int optind = 1, opterr = 1, optopt, __optpos, __optreset = 0;
 
 #define optpos __optpos
 weak_alias(__optreset, optreset);
 
-void __getopt_msg(const char *a, const char *b, const char *c, size_t l)
-{
-	FILE *f = stderr;
-	b = __lctrans_cur(b);
-	flockfile(f);
-	fwrite(a, strlen(a), 1, f)
-	&& fwrite(b, strlen(b), 1, f)
-	&& fwrite(c, l, 1, f)
-	&& putc('\n', f);
-	funlockfile(f);
+void __getopt_msg(const char* a, const char* b, const char* c, size_t l) {
+  FILE* f = stderr;
+  b = __lctrans_cur(b);
+  flockfile(f);
+  fwrite(a, strlen(a), 1, f) && fwrite(b, strlen(b), 1, f) &&
+      fwrite(c, l, 1, f) && putc('\n', f);
+  funlockfile(f);
 }
 
-int getopt(int argc, char * const argv[], const char *optstring)
-{
-	int i;
-	wchar_t c, d;
-	int k, l;
-	char *optchar;
+int getopt(int argc, char* const argv[], const char* optstring) {
+  int i;
+  wchar_t c, d;
+  int k, l;
+  char* optchar;
 
-	if (!optind || __optreset) {
-		__optreset = 0;
-		__optpos = 0;
-		optind = 1;
-	}
+  if (!optind || __optreset) {
+    __optreset = 0;
+    __optpos = 0;
+    optind = 1;
+  }
 
-	if (optind >= argc || !argv[optind])
-		return -1;
+  if (optind >= argc || !argv[optind])
+    return -1;
 
-	if (argv[optind][0] != '-') {
-		if (optstring[0] == '-') {
-			optarg = argv[optind++];
-			return 1;
-		}
-		return -1;
-	}
+  if (argv[optind][0] != '-') {
+    if (optstring[0] == '-') {
+      optarg = argv[optind++];
+      return 1;
+    }
+    return -1;
+  }
 
-	if (!argv[optind][1])
-		return -1;
+  if (!argv[optind][1])
+    return -1;
 
-	if (argv[optind][1] == '-' && !argv[optind][2])
-		return optind++, -1;
+  if (argv[optind][1] == '-' && !argv[optind][2])
+    return optind++, -1;
 
-	if (!optpos) optpos++;
-	if ((k = mbtowc(&c, argv[optind]+optpos, MB_LEN_MAX)) < 0) {
-		k = 1;
-		c = 0xfffd; /* replacement char */
-	}
-	optchar = argv[optind]+optpos;
-	optopt = c;
-	optpos += k;
+  if (!optpos)
+    optpos++;
+  if ((k = mbtowc(&c, argv[optind] + optpos, MB_LEN_MAX)) < 0) {
+    k = 1;
+    c = 0xfffd; /* replacement char */
+  }
+  optchar = argv[optind] + optpos;
+  optopt = c;
+  optpos += k;
 
-	if (!argv[optind][optpos]) {
-		optind++;
-		optpos = 0;
-	}
+  if (!argv[optind][optpos]) {
+    optind++;
+    optpos = 0;
+  }
 
-	if (optstring[0] == '-' || optstring[0] == '+')
-		optstring++;
+  if (optstring[0] == '-' || optstring[0] == '+')
+    optstring++;
 
-	i = 0;
-	d = 0;
-	do {
-		l = mbtowc(&d, optstring+i, MB_LEN_MAX);
-		if (l>0) i+=l; else i++;
-	} while (l && d != c);
+  i = 0;
+  d = 0;
+  do {
+    l = mbtowc(&d, optstring + i, MB_LEN_MAX);
+    if (l > 0)
+      i += l;
+    else
+      i++;
+  } while (l && d != c);
 
-	if (d != c) {
-		if (optstring[0] != ':' && opterr)
-			__getopt_msg(argv[0], ": unrecognized option: ", optchar, k);
-		return '?';
-	}
-	if (optstring[i] == ':') {
-		if (optstring[i+1] == ':') optarg = 0;
-		else if (optind >= argc) {
-			if (optstring[0] == ':') return ':';
-			if (opterr) __getopt_msg(argv[0],
-				": option requires an argument: ",
-				optchar, k);
-			return '?';
-		}
-		if (optstring[i+1] != ':' || optpos) {
-			optarg = argv[optind++] + optpos;
-			optpos = 0;
-		}
-	}
-	return c;
+  if (d != c) {
+    if (optstring[0] != ':' && opterr)
+      __getopt_msg(argv[0], ": unrecognized option: ", optchar, k);
+    return '?';
+  }
+  if (optstring[i] == ':') {
+    if (optstring[i + 1] == ':')
+      optarg = 0;
+    else if (optind >= argc) {
+      if (optstring[0] == ':')
+        return ':';
+      if (opterr)
+        __getopt_msg(argv[0], ": option requires an argument: ", optchar, k);
+      return '?';
+    }
+    if (optstring[i + 1] != ':' || optpos) {
+      optarg = argv[optind++] + optpos;
+      optpos = 0;
+    }
+  }
+  return c;
 }
 
 weak_alias(getopt, __posix_getopt);
diff --git a/fusl/src/misc/getopt_long.c b/fusl/src/misc/getopt_long.c
index 480c001..c7595bd 100644
--- a/fusl/src/misc/getopt_long.c
+++ b/fusl/src/misc/getopt_long.c
@@ -6,126 +6,146 @@
 
 extern int __optpos, __optreset;
 
-static void permute(char *const *argv, int dest, int src)
-{
-	char **av = (char **)argv;
-	char *tmp = av[src];
-	int i;
-	for (i=src; i>dest; i--)
-		av[i] = av[i-1];
-	av[dest] = tmp;
+static void permute(char* const* argv, int dest, int src) {
+  char** av = (char**)argv;
+  char* tmp = av[src];
+  int i;
+  for (i = src; i > dest; i--)
+    av[i] = av[i - 1];
+  av[dest] = tmp;
 }
 
-void __getopt_msg(const char *, const char *, const char *, size_t);
+void __getopt_msg(const char*, const char*, const char*, size_t);
 
-static int __getopt_long_core(int argc, char *const *argv, const char *optstring, const struct option *longopts, int *idx, int longonly);
+static int __getopt_long_core(int argc,
+                              char* const* argv,
+                              const char* optstring,
+                              const struct option* longopts,
+                              int* idx,
+                              int longonly);
 
-static int __getopt_long(int argc, char *const *argv, const char *optstring, const struct option *longopts, int *idx, int longonly)
-{
-	int ret, skipped, resumed;
-	if (!optind || __optreset) {
-		__optreset = 0;
-		__optpos = 0;
-		optind = 1;
-	}
-	if (optind >= argc || !argv[optind]) return -1;
-	skipped = optind;
-	if (optstring[0] != '+' && optstring[0] != '-') {
-		int i;
-		for (i=optind; ; i++) {
-			if (i >= argc || !argv[i]) return -1;
-			if (argv[i][0] == '-' && argv[i][1]) break;
-		}
-		optind = i;
-	}
-	resumed = optind;
-	ret = __getopt_long_core(argc, argv, optstring, longopts, idx, longonly);
-	if (resumed > skipped) {
-		int i, cnt = optind-resumed;
-		for (i=0; i<cnt; i++)
-			permute(argv, skipped, optind-1);
-		optind = skipped + cnt;
-	}
-	return ret;
+static int __getopt_long(int argc,
+                         char* const* argv,
+                         const char* optstring,
+                         const struct option* longopts,
+                         int* idx,
+                         int longonly) {
+  int ret, skipped, resumed;
+  if (!optind || __optreset) {
+    __optreset = 0;
+    __optpos = 0;
+    optind = 1;
+  }
+  if (optind >= argc || !argv[optind])
+    return -1;
+  skipped = optind;
+  if (optstring[0] != '+' && optstring[0] != '-') {
+    int i;
+    for (i = optind;; i++) {
+      if (i >= argc || !argv[i])
+        return -1;
+      if (argv[i][0] == '-' && argv[i][1])
+        break;
+    }
+    optind = i;
+  }
+  resumed = optind;
+  ret = __getopt_long_core(argc, argv, optstring, longopts, idx, longonly);
+  if (resumed > skipped) {
+    int i, cnt = optind - resumed;
+    for (i = 0; i < cnt; i++)
+      permute(argv, skipped, optind - 1);
+    optind = skipped + cnt;
+  }
+  return ret;
 }
 
-static int __getopt_long_core(int argc, char *const *argv, const char *optstring, const struct option *longopts, int *idx, int longonly)
-{
-	optarg = 0;
-	if (longopts && argv[optind][0] == '-' &&
-		((longonly && argv[optind][1]) ||
-		 (argv[optind][1] == '-' && argv[optind][2])))
-	{
-		int colon = optstring[optstring[0]=='+'||optstring[0]=='-']==':';
-		int i, cnt, match;
-		char *opt;
-		for (cnt=i=0; longopts[i].name; i++) {
-			const char *name = longopts[i].name;
-			opt = argv[optind]+1;
-			if (*opt == '-') opt++;
-			for (; *name && *name == *opt; name++, opt++);
-			if (*opt && *opt != '=') continue;
-			match = i;
-			if (!*name) {
-				cnt = 1;
-				break;
-			}
-			cnt++;
-		}
-		if (cnt==1) {
-			i = match;
-			optind++;
-			optopt = longopts[i].val;
-			if (*opt == '=') {
-				if (!longopts[i].has_arg) {
-					if (colon || !opterr)
-						return '?';
-					__getopt_msg(argv[0],
-						": option does not take an argument: ",
-						longopts[i].name,
-						strlen(longopts[i].name));
-					return '?';
-				}
-				optarg = opt+1;
-			} else if (longopts[i].has_arg == required_argument) {
-				if (!(optarg = argv[optind])) {
-					if (colon) return ':';
-					if (!opterr) return '?';
-					__getopt_msg(argv[0],
-						": option requires an argument: ",
-						longopts[i].name,
-						strlen(longopts[i].name));
-					return '?';
-				}
-				optind++;
-			}
-			if (idx) *idx = i;
-			if (longopts[i].flag) {
-				*longopts[i].flag = longopts[i].val;
-				return 0;
-			}
-			return longopts[i].val;
-		}
-		if (argv[optind][1] == '-') {
-			if (!colon && opterr)
-				__getopt_msg(argv[0], cnt ?
-					": option is ambiguous: " :
-					": unrecognized option: ",
-					argv[optind]+2,
-					strlen(argv[optind]+2));
-			optind++;
-			return '?';
-		}
-	}
-	return getopt(argc, argv, optstring);
+static int __getopt_long_core(int argc,
+                              char* const* argv,
+                              const char* optstring,
+                              const struct option* longopts,
+                              int* idx,
+                              int longonly) {
+  optarg = 0;
+  if (longopts && argv[optind][0] == '-' &&
+      ((longonly && argv[optind][1]) ||
+       (argv[optind][1] == '-' && argv[optind][2]))) {
+    int colon = optstring[optstring[0] == '+' || optstring[0] == '-'] == ':';
+    int i, cnt, match;
+    char* opt;
+    for (cnt = i = 0; longopts[i].name; i++) {
+      const char* name = longopts[i].name;
+      opt = argv[optind] + 1;
+      if (*opt == '-')
+        opt++;
+      for (; *name && *name == *opt; name++, opt++)
+        ;
+      if (*opt && *opt != '=')
+        continue;
+      match = i;
+      if (!*name) {
+        cnt = 1;
+        break;
+      }
+      cnt++;
+    }
+    if (cnt == 1) {
+      i = match;
+      optind++;
+      optopt = longopts[i].val;
+      if (*opt == '=') {
+        if (!longopts[i].has_arg) {
+          if (colon || !opterr)
+            return '?';
+          __getopt_msg(argv[0], ": option does not take an argument: ",
+                       longopts[i].name, strlen(longopts[i].name));
+          return '?';
+        }
+        optarg = opt + 1;
+      } else if (longopts[i].has_arg == required_argument) {
+        if (!(optarg = argv[optind])) {
+          if (colon)
+            return ':';
+          if (!opterr)
+            return '?';
+          __getopt_msg(argv[0], ": option requires an argument: ",
+                       longopts[i].name, strlen(longopts[i].name));
+          return '?';
+        }
+        optind++;
+      }
+      if (idx)
+        *idx = i;
+      if (longopts[i].flag) {
+        *longopts[i].flag = longopts[i].val;
+        return 0;
+      }
+      return longopts[i].val;
+    }
+    if (argv[optind][1] == '-') {
+      if (!colon && opterr)
+        __getopt_msg(argv[0], cnt ? ": option is ambiguous: "
+                                  : ": unrecognized option: ",
+                     argv[optind] + 2, strlen(argv[optind] + 2));
+      optind++;
+      return '?';
+    }
+  }
+  return getopt(argc, argv, optstring);
 }
 
-int getopt_long(int argc, char *const *argv, const char *optstring, const struct option *longopts, int *idx)
-{
-	return __getopt_long(argc, argv, optstring, longopts, idx, 0);
+int getopt_long(int argc,
+                char* const* argv,
+                const char* optstring,
+                const struct option* longopts,
+                int* idx) {
+  return __getopt_long(argc, argv, optstring, longopts, idx, 0);
 }
 
-int getopt_long_only(int argc, char *const *argv, const char *optstring, const struct option *longopts, int *idx)
-{
-	return __getopt_long(argc, argv, optstring, longopts, idx, 1);
+int getopt_long_only(int argc,
+                     char* const* argv,
+                     const char* optstring,
+                     const struct option* longopts,
+                     int* idx) {
+  return __getopt_long(argc, argv, optstring, longopts, idx, 1);
 }
diff --git a/fusl/src/misc/getpriority.c b/fusl/src/misc/getpriority.c
index 5c0b168..db67652 100644
--- a/fusl/src/misc/getpriority.c
+++ b/fusl/src/misc/getpriority.c
@@ -1,9 +1,9 @@
 #include <sys/resource.h>
 #include "syscall.h"
 
-int getpriority(int which, id_t who)
-{
-	int ret = syscall(SYS_getpriority, which, who);
-	if (ret < 0) return ret;
-	return 20-ret;
+int getpriority(int which, id_t who) {
+  int ret = syscall(SYS_getpriority, which, who);
+  if (ret < 0)
+    return ret;
+  return 20 - ret;
 }
diff --git a/fusl/src/misc/getresgid.c b/fusl/src/misc/getresgid.c
index d00d9a9..9c370e3 100644
--- a/fusl/src/misc/getresgid.c
+++ b/fusl/src/misc/getresgid.c
@@ -2,7 +2,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int getresgid(gid_t *rgid, gid_t *egid, gid_t *sgid)
-{
-	return syscall(SYS_getresgid, rgid, egid, sgid);
+int getresgid(gid_t* rgid, gid_t* egid, gid_t* sgid) {
+  return syscall(SYS_getresgid, rgid, egid, sgid);
 }
diff --git a/fusl/src/misc/getresuid.c b/fusl/src/misc/getresuid.c
index d75d5d4..dd82f0c 100644
--- a/fusl/src/misc/getresuid.c
+++ b/fusl/src/misc/getresuid.c
@@ -2,7 +2,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int getresuid(uid_t *ruid, uid_t *euid, uid_t *suid)
-{
-	return syscall(SYS_getresuid, ruid, euid, suid);
+int getresuid(uid_t* ruid, uid_t* euid, uid_t* suid) {
+  return syscall(SYS_getresuid, ruid, euid, suid);
 }
diff --git a/fusl/src/misc/getrlimit.c b/fusl/src/misc/getrlimit.c
index b073677..febf292 100644
--- a/fusl/src/misc/getrlimit.c
+++ b/fusl/src/misc/getrlimit.c
@@ -3,25 +3,28 @@
 #include "syscall.h"
 #include "libc.h"
 
-#define FIX(x) do{ if ((x)>=SYSCALL_RLIM_INFINITY) (x)=RLIM_INFINITY; }while(0)
+#define FIX(x)                        \
+  do {                                \
+    if ((x) >= SYSCALL_RLIM_INFINITY) \
+      (x) = RLIM_INFINITY;            \
+  } while (0)
 
-int getrlimit(int resource, struct rlimit *rlim)
-{
-	unsigned long k_rlim[2];
-	int ret = syscall(SYS_prlimit64, 0, resource, 0, rlim);
-	if (!ret) {
-		FIX(rlim->rlim_cur);
-		FIX(rlim->rlim_max);
-	}
-	if (!ret || errno != ENOSYS)
-		return ret;
-	if (syscall(SYS_getrlimit, resource, k_rlim) < 0)
-		return -1;
-	rlim->rlim_cur = k_rlim[0] == -1UL ? RLIM_INFINITY : k_rlim[0];
-	rlim->rlim_max = k_rlim[1] == -1UL ? RLIM_INFINITY : k_rlim[1];
-	FIX(rlim->rlim_cur);
-	FIX(rlim->rlim_max);
-	return 0;
+int getrlimit(int resource, struct rlimit* rlim) {
+  unsigned long k_rlim[2];
+  int ret = syscall(SYS_prlimit64, 0, resource, 0, rlim);
+  if (!ret) {
+    FIX(rlim->rlim_cur);
+    FIX(rlim->rlim_max);
+  }
+  if (!ret || errno != ENOSYS)
+    return ret;
+  if (syscall(SYS_getrlimit, resource, k_rlim) < 0)
+    return -1;
+  rlim->rlim_cur = k_rlim[0] == -1UL ? RLIM_INFINITY : k_rlim[0];
+  rlim->rlim_max = k_rlim[1] == -1UL ? RLIM_INFINITY : k_rlim[1];
+  FIX(rlim->rlim_cur);
+  FIX(rlim->rlim_max);
+  return 0;
 }
 
 LFS64(getrlimit);
diff --git a/fusl/src/misc/getrusage.c b/fusl/src/misc/getrusage.c
index 0aaf0ac..a2b4516 100644
--- a/fusl/src/misc/getrusage.c
+++ b/fusl/src/misc/getrusage.c
@@ -1,7 +1,6 @@
 #include <sys/resource.h>
 #include "syscall.h"
 
-int getrusage(int who, struct rusage *ru)
-{
-	return syscall(SYS_getrusage, who, ru);
+int getrusage(int who, struct rusage* ru) {
+  return syscall(SYS_getrusage, who, ru);
 }
diff --git a/fusl/src/misc/getsubopt.c b/fusl/src/misc/getsubopt.c
index 53ee957..accb582 100644
--- a/fusl/src/misc/getsubopt.c
+++ b/fusl/src/misc/getsubopt.c
@@ -1,23 +1,26 @@
 #include <stdlib.h>
 #include <string.h>
 
-int getsubopt(char **opt, char *const *keys, char **val)
-{
-	char *s = *opt;
-	int i;
+int getsubopt(char** opt, char* const* keys, char** val) {
+  char* s = *opt;
+  int i;
 
-	*val = NULL;
-	*opt = strchr(s, ',');
-	if (*opt) *(*opt)++ = 0;
-	else *opt = s + strlen(s);
+  *val = NULL;
+  *opt = strchr(s, ',');
+  if (*opt)
+    *(*opt)++ = 0;
+  else
+    *opt = s + strlen(s);
 
-	for (i=0; keys[i]; i++) {
-		size_t l = strlen(keys[i]);
-		if (strncmp(keys[i], s, l)) continue;
-		if (s[l] == '=')
-			*val = s + l + 1;
-		else if (s[l]) continue;
-		return i;
-	}
-	return -1;
+  for (i = 0; keys[i]; i++) {
+    size_t l = strlen(keys[i]);
+    if (strncmp(keys[i], s, l))
+      continue;
+    if (s[l] == '=')
+      *val = s + l + 1;
+    else if (s[l])
+      continue;
+    return i;
+  }
+  return -1;
 }
diff --git a/fusl/src/misc/initgroups.c b/fusl/src/misc/initgroups.c
index 922a958..38ba5e9 100644
--- a/fusl/src/misc/initgroups.c
+++ b/fusl/src/misc/initgroups.c
@@ -2,10 +2,10 @@
 #include <grp.h>
 #include <limits.h>
 
-int initgroups(const char *user, gid_t gid)
-{
-	gid_t groups[NGROUPS_MAX];
-	int count = NGROUPS_MAX;
-	if (getgrouplist(user, gid, groups, &count) < 0) return -1;
-	return setgroups(count, groups);
+int initgroups(const char* user, gid_t gid) {
+  gid_t groups[NGROUPS_MAX];
+  int count = NGROUPS_MAX;
+  if (getgrouplist(user, gid, groups, &count) < 0)
+    return -1;
+  return setgroups(count, groups);
 }
diff --git a/fusl/src/misc/ioctl.c b/fusl/src/misc/ioctl.c
index 5a41f0e..2264c4b 100644
--- a/fusl/src/misc/ioctl.c
+++ b/fusl/src/misc/ioctl.c
@@ -2,12 +2,11 @@
 #include <stdarg.h>
 #include "syscall.h"
 
-int ioctl(int fd, int req, ...)
-{
-	void *arg;
-	va_list ap;
-	va_start(ap, req);
-	arg = va_arg(ap, void *);
-	va_end(ap);
-	return syscall(SYS_ioctl, fd, req, arg);
+int ioctl(int fd, int req, ...) {
+  void* arg;
+  va_list ap;
+  va_start(ap, req);
+  arg = va_arg(ap, void*);
+  va_end(ap);
+  return syscall(SYS_ioctl, fd, req, arg);
 }
diff --git a/fusl/src/misc/issetugid.c b/fusl/src/misc/issetugid.c
index 6ffd930..8507461 100644
--- a/fusl/src/misc/issetugid.c
+++ b/fusl/src/misc/issetugid.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "libc.h"
 
-int issetugid(void)
-{
-	return libc.secure;
+int issetugid(void) {
+  return libc.secure;
 }
diff --git a/fusl/src/misc/lockf.c b/fusl/src/misc/lockf.c
index d8f82ef..8f389ac 100644
--- a/fusl/src/misc/lockf.c
+++ b/fusl/src/misc/lockf.c
@@ -3,31 +3,28 @@
 #include <errno.h>
 #include "libc.h"
 
-int lockf(int fd, int op, off_t size)
-{
-	struct flock l = {
-		.l_type = F_WRLCK,
-		.l_whence = SEEK_CUR,
-		.l_len = size,
-	};
-	switch (op) {
-	case F_TEST:
-		l.l_type = F_RDLCK;
-		if (fcntl(fd, F_GETLK, &l) < 0)
-			return -1;
-		if (l.l_type == F_UNLCK || l.l_pid == getpid())
-			return 0;
-		errno = EACCES;
-		return -1;
-	case F_ULOCK:
-		l.l_type = F_UNLCK;
-	case F_TLOCK:
-		return fcntl(fd, F_SETLK, &l);
-	case F_LOCK:
-		return fcntl(fd, F_SETLKW, &l);
-	}
-	errno = EINVAL;
-	return -1;
+int lockf(int fd, int op, off_t size) {
+  struct flock l = {
+      .l_type = F_WRLCK, .l_whence = SEEK_CUR, .l_len = size,
+  };
+  switch (op) {
+    case F_TEST:
+      l.l_type = F_RDLCK;
+      if (fcntl(fd, F_GETLK, &l) < 0)
+        return -1;
+      if (l.l_type == F_UNLCK || l.l_pid == getpid())
+        return 0;
+      errno = EACCES;
+      return -1;
+    case F_ULOCK:
+      l.l_type = F_UNLCK;
+    case F_TLOCK:
+      return fcntl(fd, F_SETLK, &l);
+    case F_LOCK:
+      return fcntl(fd, F_SETLKW, &l);
+  }
+  errno = EINVAL;
+  return -1;
 }
 
 LFS64(lockf);
diff --git a/fusl/src/misc/login_tty.c b/fusl/src/misc/login_tty.c
index f0be0a0..5022e60 100644
--- a/fusl/src/misc/login_tty.c
+++ b/fusl/src/misc/login_tty.c
@@ -2,13 +2,14 @@
 #include <sys/ioctl.h>
 #include <unistd.h>
 
-int login_tty(int fd)
-{
-	setsid();
-	if (ioctl(fd, TIOCSCTTY, (char *)0)) return -1;
-	dup2(fd, 0);
-	dup2(fd, 1);
-	dup2(fd, 2);
-	if (fd>2) close(fd);
-	return 0;
+int login_tty(int fd) {
+  setsid();
+  if (ioctl(fd, TIOCSCTTY, (char*)0))
+    return -1;
+  dup2(fd, 0);
+  dup2(fd, 1);
+  dup2(fd, 2);
+  if (fd > 2)
+    close(fd);
+  return 0;
 }
diff --git a/fusl/src/misc/mntent.c b/fusl/src/misc/mntent.c
index a16d652..1c64764 100644
--- a/fusl/src/misc/mntent.c
+++ b/fusl/src/misc/mntent.c
@@ -3,66 +3,66 @@
 #include <mntent.h>
 #include <errno.h>
 
-FILE *setmntent(const char *name, const char *mode)
-{
-	return fopen(name, mode);
+FILE* setmntent(const char* name, const char* mode) {
+  return fopen(name, mode);
 }
 
-int endmntent(FILE *f)
-{
-	if (f) fclose(f);
-	return 1;
+int endmntent(FILE* f) {
+  if (f)
+    fclose(f);
+  return 1;
 }
 
-struct mntent *getmntent_r(FILE *f, struct mntent *mnt, char *linebuf, int buflen)
-{
-	int cnt, n[8];
+struct mntent* getmntent_r(FILE* f,
+                           struct mntent* mnt,
+                           char* linebuf,
+                           int buflen) {
+  int cnt, n[8];
 
-	mnt->mnt_freq = 0;
-	mnt->mnt_passno = 0;
+  mnt->mnt_freq = 0;
+  mnt->mnt_passno = 0;
 
-	do {
-		fgets(linebuf, buflen, f);
-		if (feof(f) || ferror(f)) return 0;
-		if (!strchr(linebuf, '\n')) {
-			fscanf(f, "%*[^\n]%*[\n]");
-			errno = ERANGE;
-			return 0;
-		}
-		cnt = sscanf(linebuf, " %n%*s%n %n%*s%n %n%*s%n %n%*s%n %d %d",
-			n, n+1, n+2, n+3, n+4, n+5, n+6, n+7,
-			&mnt->mnt_freq, &mnt->mnt_passno);
-	} while (cnt < 2 || linebuf[n[0]] == '#');
+  do {
+    fgets(linebuf, buflen, f);
+    if (feof(f) || ferror(f))
+      return 0;
+    if (!strchr(linebuf, '\n')) {
+      fscanf(f, "%*[^\n]%*[\n]");
+      errno = ERANGE;
+      return 0;
+    }
+    cnt = sscanf(linebuf, " %n%*s%n %n%*s%n %n%*s%n %n%*s%n %d %d", n, n + 1,
+                 n + 2, n + 3, n + 4, n + 5, n + 6, n + 7, &mnt->mnt_freq,
+                 &mnt->mnt_passno);
+  } while (cnt < 2 || linebuf[n[0]] == '#');
 
-	linebuf[n[1]] = 0;
-	linebuf[n[3]] = 0;
-	linebuf[n[5]] = 0;
-	linebuf[n[7]] = 0;
+  linebuf[n[1]] = 0;
+  linebuf[n[3]] = 0;
+  linebuf[n[5]] = 0;
+  linebuf[n[7]] = 0;
 
-	mnt->mnt_fsname = linebuf+n[0];
-	mnt->mnt_dir = linebuf+n[2];
-	mnt->mnt_type = linebuf+n[4];
-	mnt->mnt_opts = linebuf+n[6];
+  mnt->mnt_fsname = linebuf + n[0];
+  mnt->mnt_dir = linebuf + n[2];
+  mnt->mnt_type = linebuf + n[4];
+  mnt->mnt_opts = linebuf + n[6];
 
-	return mnt;
+  return mnt;
 }
 
-struct mntent *getmntent(FILE *f)
-{
-	static char linebuf[256];
-	static struct mntent mnt;
-	return getmntent_r(f, &mnt, linebuf, sizeof linebuf);
+struct mntent* getmntent(FILE* f) {
+  static char linebuf[256];
+  static struct mntent mnt;
+  return getmntent_r(f, &mnt, linebuf, sizeof linebuf);
 }
 
-int addmntent(FILE *f, const struct mntent *mnt)
-{
-	if (fseek(f, 0, SEEK_END)) return 1;
-	return fprintf(f, "%s\t%s\t%s\t%s\t%d\t%d\n",
-		mnt->mnt_fsname, mnt->mnt_dir, mnt->mnt_type, mnt->mnt_opts,
-		mnt->mnt_freq, mnt->mnt_passno) < 0;
+int addmntent(FILE* f, const struct mntent* mnt) {
+  if (fseek(f, 0, SEEK_END))
+    return 1;
+  return fprintf(f, "%s\t%s\t%s\t%s\t%d\t%d\n", mnt->mnt_fsname, mnt->mnt_dir,
+                 mnt->mnt_type, mnt->mnt_opts, mnt->mnt_freq,
+                 mnt->mnt_passno) < 0;
 }
 
-char *hasmntopt(const struct mntent *mnt, const char *opt)
-{
-	return strstr(mnt->mnt_opts, opt);
+char* hasmntopt(const struct mntent* mnt, const char* opt) {
+  return strstr(mnt->mnt_opts, opt);
 }
diff --git a/fusl/src/misc/nftw.c b/fusl/src/misc/nftw.c
index efb2b89..778943f 100644
--- a/fusl/src/misc/nftw.c
+++ b/fusl/src/misc/nftw.c
@@ -8,116 +8,127 @@
 #include <pthread.h>
 #include "libc.h"
 
-struct history
-{
-	struct history *chain;
-	dev_t dev;
-	ino_t ino;
-	int level;
-	int base;
+struct history {
+  struct history* chain;
+  dev_t dev;
+  ino_t ino;
+  int level;
+  int base;
 };
 
 #undef dirfd
-#define dirfd(d) (*(int *)d)
+#define dirfd(d) (*(int*)d)
 
-static int do_nftw(char *path, int (*fn)(const char *, const struct stat *, int, struct FTW *), int fd_limit, int flags, struct history *h)
-{
-	size_t l = strlen(path), j = l && path[l-1]=='/' ? l-1 : l;
-	struct stat st;
-	struct history new;
-	int type;
-	int r;
-	struct FTW lev;
-	char *name;
+static int do_nftw(char* path,
+                   int (*fn)(const char*, const struct stat*, int, struct FTW*),
+                   int fd_limit,
+                   int flags,
+                   struct history* h) {
+  size_t l = strlen(path), j = l && path[l - 1] == '/' ? l - 1 : l;
+  struct stat st;
+  struct history new;
+  int type;
+  int r;
+  struct FTW lev;
+  char* name;
 
-	if ((flags & FTW_PHYS) ? lstat(path, &st) : stat(path, &st) < 0) {
-		if (!(flags & FTW_PHYS) && errno==ENOENT && !lstat(path, &st))
-			type = FTW_SLN;
-		else if (errno != EACCES) return -1;
-		else type = FTW_NS;
-	} else if (S_ISDIR(st.st_mode)) {
-		if (access(path, R_OK) < 0) type = FTW_DNR;
-		else if (flags & FTW_DEPTH) type = FTW_DP;
-		else type = FTW_D;
-	} else if (S_ISLNK(st.st_mode)) {
-		if (flags & FTW_PHYS) type = FTW_SL;
-		else type = FTW_SLN;
-	} else {
-		type = FTW_F;
-	}
+  if ((flags & FTW_PHYS) ? lstat(path, &st) : stat(path, &st) < 0) {
+    if (!(flags & FTW_PHYS) && errno == ENOENT && !lstat(path, &st))
+      type = FTW_SLN;
+    else if (errno != EACCES)
+      return -1;
+    else
+      type = FTW_NS;
+  } else if (S_ISDIR(st.st_mode)) {
+    if (access(path, R_OK) < 0)
+      type = FTW_DNR;
+    else if (flags & FTW_DEPTH)
+      type = FTW_DP;
+    else
+      type = FTW_D;
+  } else if (S_ISLNK(st.st_mode)) {
+    if (flags & FTW_PHYS)
+      type = FTW_SL;
+    else
+      type = FTW_SLN;
+  } else {
+    type = FTW_F;
+  }
 
-	if ((flags & FTW_MOUNT) && h && st.st_dev != h->dev)
-		return 0;
-	
-	new.chain = h;
-	new.dev = st.st_dev;
-	new.ino = st.st_ino;
-	new.level = h ? h->level+1 : 0;
-	new.base = l+1;
-	
-	lev.level = new.level;
-	lev.base = h ? h->base : (name=strrchr(path, '/')) ? name-path : 0;
+  if ((flags & FTW_MOUNT) && h && st.st_dev != h->dev)
+    return 0;
 
-	if (!(flags & FTW_DEPTH) && (r=fn(path, &st, type, &lev)))
-		return r;
+  new.chain = h;
+  new.dev = st.st_dev;
+  new.ino = st.st_ino;
+  new.level = h ? h->level + 1 : 0;
+  new.base = l + 1;
 
-	for (; h; h = h->chain)
-		if (h->dev == st.st_dev && h->ino == st.st_ino)
-			return 0;
+  lev.level = new.level;
+  lev.base = h ? h->base : (name = strrchr(path, '/')) ? name - path : 0;
 
-	if ((type == FTW_D || type == FTW_DP) && fd_limit) {
-		DIR *d = opendir(path);
-		if (d) {
-			struct dirent *de;
-			while ((de = readdir(d))) {
-				if (de->d_name[0] == '.'
-				 && (!de->d_name[1]
-				  || (de->d_name[1]=='.'
-				   && !de->d_name[2]))) continue;
-				if (strlen(de->d_name) >= PATH_MAX-l) {
-					errno = ENAMETOOLONG;
-					closedir(d);
-					return -1;
-				}
-				path[j]='/';
-				strcpy(path+j+1, de->d_name);
-				if ((r=do_nftw(path, fn, fd_limit-1, flags, &new))) {
-					closedir(d);
-					return r;
-				}
-			}
-			closedir(d);
-		} else if (errno != EACCES) {
-			return -1;
-		}
-	}
+  if (!(flags & FTW_DEPTH) && (r = fn(path, &st, type, &lev)))
+    return r;
 
-	path[l] = 0;
-	if ((flags & FTW_DEPTH) && (r=fn(path, &st, type, &lev)))
-		return r;
+  for (; h; h = h->chain)
+    if (h->dev == st.st_dev && h->ino == st.st_ino)
+      return 0;
 
-	return 0;
+  if ((type == FTW_D || type == FTW_DP) && fd_limit) {
+    DIR* d = opendir(path);
+    if (d) {
+      struct dirent* de;
+      while ((de = readdir(d))) {
+        if (de->d_name[0] == '.' &&
+            (!de->d_name[1] || (de->d_name[1] == '.' && !de->d_name[2])))
+          continue;
+        if (strlen(de->d_name) >= PATH_MAX - l) {
+          errno = ENAMETOOLONG;
+          closedir(d);
+          return -1;
+        }
+        path[j] = '/';
+        strcpy(path + j + 1, de->d_name);
+        if ((r = do_nftw(path, fn, fd_limit - 1, flags, &new))) {
+          closedir(d);
+          return r;
+        }
+      }
+      closedir(d);
+    } else if (errno != EACCES) {
+      return -1;
+    }
+  }
+
+  path[l] = 0;
+  if ((flags & FTW_DEPTH) && (r = fn(path, &st, type, &lev)))
+    return r;
+
+  return 0;
 }
 
-int nftw(const char *path, int (*fn)(const char *, const struct stat *, int, struct FTW *), int fd_limit, int flags)
-{
-	int r, cs;
-	size_t l;
-	char pathbuf[PATH_MAX+1];
+int nftw(const char* path,
+         int (*fn)(const char*, const struct stat*, int, struct FTW*),
+         int fd_limit,
+         int flags) {
+  int r, cs;
+  size_t l;
+  char pathbuf[PATH_MAX + 1];
 
-	if (fd_limit <= 0) return 0;
+  if (fd_limit <= 0)
+    return 0;
 
-	l = strlen(path);
-	if (l > PATH_MAX) {
-		errno = ENAMETOOLONG;
-		return -1;
-	}
-	memcpy(pathbuf, path, l+1);
-	
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-	r = do_nftw(pathbuf, fn, fd_limit, flags, NULL);
-	pthread_setcancelstate(cs, 0);
-	return r;
+  l = strlen(path);
+  if (l > PATH_MAX) {
+    errno = ENAMETOOLONG;
+    return -1;
+  }
+  memcpy(pathbuf, path, l + 1);
+
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  r = do_nftw(pathbuf, fn, fd_limit, flags, NULL);
+  pthread_setcancelstate(cs, 0);
+  return r;
 }
 
 LFS64(nftw);
diff --git a/fusl/src/misc/openpty.c b/fusl/src/misc/openpty.c
index c107406..d9dd67f 100644
--- a/fusl/src/misc/openpty.c
+++ b/fusl/src/misc/openpty.c
@@ -7,34 +7,41 @@
 
 /* Nonstandard, but vastly superior to the standard functions */
 
-int openpty(int *pm, int *ps, char *name, const struct termios *tio, const struct winsize *ws)
-{
-	int m, s, n=0, cs;
-	char buf[20];
+int openpty(int* pm,
+            int* ps,
+            char* name,
+            const struct termios* tio,
+            const struct winsize* ws) {
+  int m, s, n = 0, cs;
+  char buf[20];
 
-	m = open("/dev/ptmx", O_RDWR|O_NOCTTY);
-	if (m < 0) return -1;
+  m = open("/dev/ptmx", O_RDWR | O_NOCTTY);
+  if (m < 0)
+    return -1;
 
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
 
-	if (ioctl(m, TIOCSPTLCK, &n) || ioctl (m, TIOCGPTN, &n))
-		goto fail;
+  if (ioctl(m, TIOCSPTLCK, &n) || ioctl(m, TIOCGPTN, &n))
+    goto fail;
 
-	if (!name) name = buf;
-	snprintf(name, sizeof buf, "/dev/pts/%d", n);
-	if ((s = open(name, O_RDWR|O_NOCTTY)) < 0)
-		goto fail;
+  if (!name)
+    name = buf;
+  snprintf(name, sizeof buf, "/dev/pts/%d", n);
+  if ((s = open(name, O_RDWR | O_NOCTTY)) < 0)
+    goto fail;
 
-	if (tio) tcsetattr(s, TCSANOW, tio);
-	if (ws) ioctl(s, TIOCSWINSZ, ws);
+  if (tio)
+    tcsetattr(s, TCSANOW, tio);
+  if (ws)
+    ioctl(s, TIOCSWINSZ, ws);
 
-	*pm = m;
-	*ps = s;
+  *pm = m;
+  *ps = s;
 
-	pthread_setcancelstate(cs, 0);
-	return 0;
+  pthread_setcancelstate(cs, 0);
+  return 0;
 fail:
-	close(m);
-	pthread_setcancelstate(cs, 0);
-	return -1;
+  close(m);
+  pthread_setcancelstate(cs, 0);
+  return -1;
 }
diff --git a/fusl/src/misc/ptsname.c b/fusl/src/misc/ptsname.c
index a347792..41a6411 100644
--- a/fusl/src/misc/ptsname.c
+++ b/fusl/src/misc/ptsname.c
@@ -1,15 +1,14 @@
 #include <stdlib.h>
 #include <errno.h>
 
-int __ptsname_r(int, char *, size_t);
+int __ptsname_r(int, char*, size_t);
 
-char *ptsname(int fd)
-{
-	static char buf[9 + sizeof(int)*3 + 1];
-	int err = __ptsname_r(fd, buf, sizeof buf);
-	if (err) {
-		errno = err;
-		return 0;
-	}
-	return buf;
+char* ptsname(int fd) {
+  static char buf[9 + sizeof(int) * 3 + 1];
+  int err = __ptsname_r(fd, buf, sizeof buf);
+  if (err) {
+    errno = err;
+    return 0;
+  }
+  return buf;
 }
diff --git a/fusl/src/misc/pty.c b/fusl/src/misc/pty.c
index b395d2c..03d02ee 100644
--- a/fusl/src/misc/pty.c
+++ b/fusl/src/misc/pty.c
@@ -6,29 +6,28 @@
 #include "libc.h"
 #include "syscall.h"
 
-int posix_openpt(int flags)
-{
-	return open("/dev/ptmx", flags);
+int posix_openpt(int flags) {
+  return open("/dev/ptmx", flags);
 }
 
-int grantpt(int fd)
-{
-	return 0;
+int grantpt(int fd) {
+  return 0;
 }
 
-int unlockpt(int fd)
-{
-	int unlock = 0;
-	return ioctl(fd, TIOCSPTLCK, &unlock);
+int unlockpt(int fd) {
+  int unlock = 0;
+  return ioctl(fd, TIOCSPTLCK, &unlock);
 }
 
-int __ptsname_r(int fd, char *buf, size_t len)
-{
-	int pty, err;
-	if (!buf) len = 0;
-	if ((err = __syscall(SYS_ioctl, fd, TIOCGPTN, &pty))) return -err;
-	if (snprintf(buf, len, "/dev/pts/%d", pty) >= len) return ERANGE;
-	return 0;
+int __ptsname_r(int fd, char* buf, size_t len) {
+  int pty, err;
+  if (!buf)
+    len = 0;
+  if ((err = __syscall(SYS_ioctl, fd, TIOCGPTN, &pty)))
+    return -err;
+  if (snprintf(buf, len, "/dev/pts/%d", pty) >= len)
+    return ERANGE;
+  return 0;
 }
 
 weak_alias(__ptsname_r, ptsname_r);
diff --git a/fusl/src/misc/realpath.c b/fusl/src/misc/realpath.c
index 88c849c..0343188 100644
--- a/fusl/src/misc/realpath.c
+++ b/fusl/src/misc/realpath.c
@@ -7,39 +7,41 @@
 #include <string.h>
 #include "syscall.h"
 
-void __procfdname(char *, unsigned);
+void __procfdname(char*, unsigned);
 
-char *realpath(const char *restrict filename, char *restrict resolved)
-{
-	int fd;
-	ssize_t r;
-	struct stat st1, st2;
-	char buf[15+3*sizeof(int)];
-	char tmp[PATH_MAX];
+char* realpath(const char* restrict filename, char* restrict resolved) {
+  int fd;
+  ssize_t r;
+  struct stat st1, st2;
+  char buf[15 + 3 * sizeof(int)];
+  char tmp[PATH_MAX];
 
-	if (!filename) {
-		errno = EINVAL;
-		return 0;
-	}
+  if (!filename) {
+    errno = EINVAL;
+    return 0;
+  }
 
-	fd = sys_open(filename, O_PATH|O_NONBLOCK|O_CLOEXEC);
-	if (fd < 0) return 0;
-	__procfdname(buf, fd);
+  fd = sys_open(filename, O_PATH | O_NONBLOCK | O_CLOEXEC);
+  if (fd < 0)
+    return 0;
+  __procfdname(buf, fd);
 
-	r = readlink(buf, tmp, sizeof tmp - 1);
-	if (r < 0) goto err;
-	tmp[r] = 0;
+  r = readlink(buf, tmp, sizeof tmp - 1);
+  if (r < 0)
+    goto err;
+  tmp[r] = 0;
 
-	fstat(fd, &st1);
-	r = stat(tmp, &st2);
-	if (r<0 || st1.st_dev != st2.st_dev || st1.st_ino != st2.st_ino) {
-		if (!r) errno = ELOOP;
-		goto err;
-	}
+  fstat(fd, &st1);
+  r = stat(tmp, &st2);
+  if (r < 0 || st1.st_dev != st2.st_dev || st1.st_ino != st2.st_ino) {
+    if (!r)
+      errno = ELOOP;
+    goto err;
+  }
 
-	__syscall(SYS_close, fd);
-	return resolved ? strcpy(resolved, tmp) : strdup(tmp);
+  __syscall(SYS_close, fd);
+  return resolved ? strcpy(resolved, tmp) : strdup(tmp);
 err:
-	__syscall(SYS_close, fd);
-	return 0;
+  __syscall(SYS_close, fd);
+  return 0;
 }
diff --git a/fusl/src/misc/setdomainname.c b/fusl/src/misc/setdomainname.c
index 22d3f74..20bb18f 100644
--- a/fusl/src/misc/setdomainname.c
+++ b/fusl/src/misc/setdomainname.c
@@ -2,7 +2,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int setdomainname(const char *name, size_t len)
-{
-	return syscall(SYS_setdomainname, name, len);
+int setdomainname(const char* name, size_t len) {
+  return syscall(SYS_setdomainname, name, len);
 }
diff --git a/fusl/src/misc/setpriority.c b/fusl/src/misc/setpriority.c
index 3098cdf..3f023c2 100644
--- a/fusl/src/misc/setpriority.c
+++ b/fusl/src/misc/setpriority.c
@@ -1,7 +1,6 @@
 #include <sys/resource.h>
 #include "syscall.h"
 
-int setpriority(int which, id_t who, int prio)
-{
-	return syscall(SYS_setpriority, which, who, prio);
+int setpriority(int which, id_t who, int prio) {
+  return syscall(SYS_setpriority, which, who, prio);
 }
diff --git a/fusl/src/misc/setrlimit.c b/fusl/src/misc/setrlimit.c
index 7130d71..617c9f6 100644
--- a/fusl/src/misc/setrlimit.c
+++ b/fusl/src/misc/setrlimit.c
@@ -3,48 +3,52 @@
 #include "syscall.h"
 #include "libc.h"
 
-#define MIN(a, b) ((a)<(b) ? (a) : (b))
-#define FIX(x) do{ if ((x)>=SYSCALL_RLIM_INFINITY) (x)=RLIM_INFINITY; }while(0)
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
+#define FIX(x)                        \
+  do {                                \
+    if ((x) >= SYSCALL_RLIM_INFINITY) \
+      (x) = RLIM_INFINITY;            \
+  } while (0)
 
-int __setrlimit(int resource, const struct rlimit *rlim)
-{
-	unsigned long k_rlim[2];
-	struct rlimit tmp;
-	if (SYSCALL_RLIM_INFINITY != RLIM_INFINITY) {
-		tmp = *rlim;
-		FIX(tmp.rlim_cur);
-		FIX(tmp.rlim_max);
-		rlim = &tmp;
-	}
-	int ret = __syscall(SYS_prlimit64, 0, resource, rlim, 0);
-	if (ret != -ENOSYS) return ret;
-	k_rlim[0] = MIN(rlim->rlim_cur, MIN(-1UL, SYSCALL_RLIM_INFINITY));
-	k_rlim[1] = MIN(rlim->rlim_max, MIN(-1UL, SYSCALL_RLIM_INFINITY));
-	return __syscall(SYS_setrlimit, resource, k_rlim);
+int __setrlimit(int resource, const struct rlimit* rlim) {
+  unsigned long k_rlim[2];
+  struct rlimit tmp;
+  if (SYSCALL_RLIM_INFINITY != RLIM_INFINITY) {
+    tmp = *rlim;
+    FIX(tmp.rlim_cur);
+    FIX(tmp.rlim_max);
+    rlim = &tmp;
+  }
+  int ret = __syscall(SYS_prlimit64, 0, resource, rlim, 0);
+  if (ret != -ENOSYS)
+    return ret;
+  k_rlim[0] = MIN(rlim->rlim_cur, MIN(-1UL, SYSCALL_RLIM_INFINITY));
+  k_rlim[1] = MIN(rlim->rlim_max, MIN(-1UL, SYSCALL_RLIM_INFINITY));
+  return __syscall(SYS_setrlimit, resource, k_rlim);
 }
 
 struct ctx {
-	const struct rlimit *rlim;
-	int res;
-	int err;
+  const struct rlimit* rlim;
+  int res;
+  int err;
 };
 
-static void do_setrlimit(void *p)
-{
-	struct ctx *c = p;
-	if (c->err>0) return;
-	c->err = -__setrlimit(c->res, c->rlim);
+static void do_setrlimit(void* p) {
+  struct ctx* c = p;
+  if (c->err > 0)
+    return;
+  c->err = -__setrlimit(c->res, c->rlim);
 }
 
-int setrlimit(int resource, const struct rlimit *rlim)
-{
-	struct ctx c = { .res = resource, .rlim = rlim, .err = -1 };
-	__synccall(do_setrlimit, &c);
-	if (c.err) {
-		if (c.err>0) errno = c.err;
-		return -1;
-	}
-	return 0;
+int setrlimit(int resource, const struct rlimit* rlim) {
+  struct ctx c = {.res = resource, .rlim = rlim, .err = -1};
+  __synccall(do_setrlimit, &c);
+  if (c.err) {
+    if (c.err > 0)
+      errno = c.err;
+    return -1;
+  }
+  return 0;
 }
 
 LFS64(setrlimit);
diff --git a/fusl/src/misc/syscall.c b/fusl/src/misc/syscall.c
index 9d435a9..f73a616 100644
--- a/fusl/src/misc/syscall.c
+++ b/fusl/src/misc/syscall.c
@@ -3,17 +3,16 @@
 
 #undef syscall
 
-long syscall(long n, ...)
-{
-	va_list ap;
-	syscall_arg_t a,b,c,d,e,f;
-	va_start(ap, n);
-	a=va_arg(ap, syscall_arg_t);
-	b=va_arg(ap, syscall_arg_t);
-	c=va_arg(ap, syscall_arg_t);
-	d=va_arg(ap, syscall_arg_t);
-	e=va_arg(ap, syscall_arg_t);
-	f=va_arg(ap, syscall_arg_t);
-	va_end(ap);
-	return __syscall_ret(__syscall(n,a,b,c,d,e,f));
+long syscall(long n, ...) {
+  va_list ap;
+  syscall_arg_t a, b, c, d, e, f;
+  va_start(ap, n);
+  a = va_arg(ap, syscall_arg_t);
+  b = va_arg(ap, syscall_arg_t);
+  c = va_arg(ap, syscall_arg_t);
+  d = va_arg(ap, syscall_arg_t);
+  e = va_arg(ap, syscall_arg_t);
+  f = va_arg(ap, syscall_arg_t);
+  va_end(ap);
+  return __syscall_ret(__syscall(n, a, b, c, d, e, f));
 }
diff --git a/fusl/src/misc/syslog.c b/fusl/src/misc/syslog.c
index 12ca5e4..3ca6d45 100644
--- a/fusl/src/misc/syslog.c
+++ b/fusl/src/misc/syslog.c
@@ -18,128 +18,127 @@
 static int log_mask = 0xff;
 static int log_fd = -1;
 
-int setlogmask(int maskpri)
-{
-	LOCK(lock);
-	int ret = log_mask;
-	if (maskpri) log_mask = maskpri;
-	UNLOCK(lock);
-	return ret;
+int setlogmask(int maskpri) {
+  LOCK(lock);
+  int ret = log_mask;
+  if (maskpri)
+    log_mask = maskpri;
+  UNLOCK(lock);
+  return ret;
 }
 
 static const struct {
-	short sun_family;
-	char sun_path[9];
-} log_addr = {
-	AF_UNIX,
-	"/dev/log"
-};
+  short sun_family;
+  char sun_path[9];
+} log_addr = {AF_UNIX, "/dev/log"};
 
-void closelog(void)
-{
-	int cs;
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-	LOCK(lock);
-	close(log_fd);
-	log_fd = -1;
-	UNLOCK(lock);
-	pthread_setcancelstate(cs, 0);
+void closelog(void) {
+  int cs;
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  LOCK(lock);
+  close(log_fd);
+  log_fd = -1;
+  UNLOCK(lock);
+  pthread_setcancelstate(cs, 0);
 }
 
-static void __openlog()
-{
-	log_fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0);
-	if (log_fd >= 0) connect(log_fd, (void *)&log_addr, sizeof log_addr);
+static void __openlog() {
+  log_fd = socket(AF_UNIX, SOCK_DGRAM | SOCK_CLOEXEC, 0);
+  if (log_fd >= 0)
+    connect(log_fd, (void*)&log_addr, sizeof log_addr);
 }
 
-void openlog(const char *ident, int opt, int facility)
-{
-	int cs;
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-	LOCK(lock);
+void openlog(const char* ident, int opt, int facility) {
+  int cs;
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  LOCK(lock);
 
-	if (ident) {
-		size_t n = strnlen(ident, sizeof log_ident - 1);
-		memcpy(log_ident, ident, n);
-		log_ident[n] = 0;
-	} else {
-		log_ident[0] = 0;
-	}
-	log_opt = opt;
-	log_facility = facility;
+  if (ident) {
+    size_t n = strnlen(ident, sizeof log_ident - 1);
+    memcpy(log_ident, ident, n);
+    log_ident[n] = 0;
+  } else {
+    log_ident[0] = 0;
+  }
+  log_opt = opt;
+  log_facility = facility;
 
-	if ((opt & LOG_NDELAY) && log_fd<0) __openlog();
+  if ((opt & LOG_NDELAY) && log_fd < 0)
+    __openlog();
 
-	UNLOCK(lock);
-	pthread_setcancelstate(cs, 0);
+  UNLOCK(lock);
+  pthread_setcancelstate(cs, 0);
 }
 
-static int is_lost_conn(int e)
-{
-	return e==ECONNREFUSED || e==ECONNRESET || e==ENOTCONN || e==EPIPE;
+static int is_lost_conn(int e) {
+  return e == ECONNREFUSED || e == ECONNRESET || e == ENOTCONN || e == EPIPE;
 }
 
-static void _vsyslog(int priority, const char *message, va_list ap)
-{
-	char timebuf[16];
-	time_t now;
-	struct tm tm;
-	char buf[1024];
-	int errno_save = errno;
-	int pid;
-	int l, l2;
-	int hlen;
-	int fd;
+static void _vsyslog(int priority, const char* message, va_list ap) {
+  char timebuf[16];
+  time_t now;
+  struct tm tm;
+  char buf[1024];
+  int errno_save = errno;
+  int pid;
+  int l, l2;
+  int hlen;
+  int fd;
 
-	if (log_fd < 0) __openlog();
+  if (log_fd < 0)
+    __openlog();
 
-	if (!(priority & LOG_FACMASK)) priority |= log_facility;
+  if (!(priority & LOG_FACMASK))
+    priority |= log_facility;
 
-	now = time(NULL);
-	gmtime_r(&now, &tm);
-	strftime(timebuf, sizeof timebuf, "%b %e %T", &tm);
+  now = time(NULL);
+  gmtime_r(&now, &tm);
+  strftime(timebuf, sizeof timebuf, "%b %e %T", &tm);
 
-	pid = (log_opt & LOG_PID) ? getpid() : 0;
-	l = snprintf(buf, sizeof buf, "<%d>%s %n%s%s%.0d%s: ",
-		priority, timebuf, &hlen, log_ident,
-		pid ? "[" : "", pid, pid ? "]" : "");
-	errno = errno_save;
-	l2 = vsnprintf(buf+l, sizeof buf - l, message, ap);
-	if (l2 >= 0) {
-		if (l2 >= sizeof buf - l) l = sizeof buf - 1;
-		else l += l2;
-		if (buf[l-1] != '\n') buf[l++] = '\n';
-		if (send(log_fd, buf, l, 0) < 0 && (!is_lost_conn(errno)
-		    || connect(log_fd, (void *)&log_addr, sizeof log_addr) < 0
-		    || send(log_fd, buf, l, 0) < 0)
-		    && (log_opt & LOG_CONS)) {
-			fd = open("/dev/console", O_WRONLY|O_NOCTTY|O_CLOEXEC);
-			if (fd >= 0) {
-				dprintf(fd, "%.*s", l-hlen, buf+hlen);
-				close(fd);
-			}
-		}
-		if (log_opt & LOG_PERROR) dprintf(2, "%.*s", l-hlen, buf+hlen);
-	}
+  pid = (log_opt & LOG_PID) ? getpid() : 0;
+  l = snprintf(buf, sizeof buf, "<%d>%s %n%s%s%.0d%s: ", priority, timebuf,
+               &hlen, log_ident, pid ? "[" : "", pid, pid ? "]" : "");
+  errno = errno_save;
+  l2 = vsnprintf(buf + l, sizeof buf - l, message, ap);
+  if (l2 >= 0) {
+    if (l2 >= sizeof buf - l)
+      l = sizeof buf - 1;
+    else
+      l += l2;
+    if (buf[l - 1] != '\n')
+      buf[l++] = '\n';
+    if (send(log_fd, buf, l, 0) < 0 &&
+        (!is_lost_conn(errno) ||
+         connect(log_fd, (void*)&log_addr, sizeof log_addr) < 0 ||
+         send(log_fd, buf, l, 0) < 0) &&
+        (log_opt & LOG_CONS)) {
+      fd = open("/dev/console", O_WRONLY | O_NOCTTY | O_CLOEXEC);
+      if (fd >= 0) {
+        dprintf(fd, "%.*s", l - hlen, buf + hlen);
+        close(fd);
+      }
+    }
+    if (log_opt & LOG_PERROR)
+      dprintf(2, "%.*s", l - hlen, buf + hlen);
+  }
 }
 
-void __vsyslog(int priority, const char *message, va_list ap)
-{
-	int cs;
-	if (!(log_mask & LOG_MASK(priority&7)) || (priority&~0x3ff)) return;
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-	LOCK(lock);
-	_vsyslog(priority, message, ap);
-	UNLOCK(lock);
-	pthread_setcancelstate(cs, 0);
+void __vsyslog(int priority, const char* message, va_list ap) {
+  int cs;
+  if (!(log_mask & LOG_MASK(priority & 7)) || (priority & ~0x3ff))
+    return;
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  LOCK(lock);
+  _vsyslog(priority, message, ap);
+  UNLOCK(lock);
+  pthread_setcancelstate(cs, 0);
 }
 
-void syslog(int priority, const char *message, ...)
-{
-	va_list ap;
-	va_start(ap, message);
-	__vsyslog(priority, message, ap);
-	va_end(ap);
+void syslog(int priority, const char* message, ...) {
+  va_list ap;
+  va_start(ap, message);
+  __vsyslog(priority, message, ap);
+  va_end(ap);
 }
 
 weak_alias(__vsyslog, vsyslog);
diff --git a/fusl/src/misc/uname.c b/fusl/src/misc/uname.c
index 55ea342..3fd35de 100644
--- a/fusl/src/misc/uname.c
+++ b/fusl/src/misc/uname.c
@@ -1,7 +1,6 @@
 #include <sys/utsname.h>
 #include "syscall.h"
 
-int uname(struct utsname *uts)
-{
-	return syscall(SYS_uname, uts);
+int uname(struct utsname* uts) {
+  return syscall(SYS_uname, uts);
 }
diff --git a/fusl/src/misc/wordexp.c b/fusl/src/misc/wordexp.c
index db39b5b..87a1ba2 100644
--- a/fusl/src/misc/wordexp.c
+++ b/fusl/src/misc/wordexp.c
@@ -11,183 +11,198 @@
 #include <fcntl.h>
 #include "pthread_impl.h"
 
-static void reap(pid_t pid)
-{
-	int status;
-	for (;;) {
-		if (waitpid(pid, &status, 0) < 0) {
-			if (errno != EINTR) return;
-		} else {
-			if (WIFEXITED(status)) return;
-		}
-	}
+static void reap(pid_t pid) {
+  int status;
+  for (;;) {
+    if (waitpid(pid, &status, 0) < 0) {
+      if (errno != EINTR)
+        return;
+    } else {
+      if (WIFEXITED(status))
+        return;
+    }
+  }
 }
 
-static char *getword(FILE *f)
-{
-	char *s = 0;
-	return getdelim(&s, (size_t [1]){0}, 0, f) < 0 ? 0 : s;
+static char* getword(FILE* f) {
+  char* s = 0;
+  return getdelim(&s, (size_t[1]){0}, 0, f) < 0 ? 0 : s;
 }
 
-static int do_wordexp(const char *s, wordexp_t *we, int flags)
-{
-	size_t i, l;
-	int sq=0, dq=0;
-	size_t np=0;
-	char *w, **tmp;
-	char *redir = (flags & WRDE_SHOWERR) ? "" : "2>/dev/null";
-	int err = 0;
-	FILE *f;
-	size_t wc = 0;
-	char **wv = 0;
-	int p[2];
-	pid_t pid;
-	sigset_t set;
+static int do_wordexp(const char* s, wordexp_t* we, int flags) {
+  size_t i, l;
+  int sq = 0, dq = 0;
+  size_t np = 0;
+  char *w, **tmp;
+  char* redir = (flags & WRDE_SHOWERR) ? "" : "2>/dev/null";
+  int err = 0;
+  FILE* f;
+  size_t wc = 0;
+  char** wv = 0;
+  int p[2];
+  pid_t pid;
+  sigset_t set;
 
-	if (flags & WRDE_REUSE) wordfree(we);
+  if (flags & WRDE_REUSE)
+    wordfree(we);
 
-	if (flags & WRDE_NOCMD) for (i=0; s[i]; i++) switch (s[i]) {
-	case '\\':
-		if (!sq) i++;
-		break;
-	case '\'':
-		if (!dq) sq^=1;
-		break;
-	case '"':
-		if (!sq) dq^=1;
-		break;
-	case '(':
-		if (np) {
-			np++;
-			break;
-		}
-	case ')':
-		if (np) {
-			np--;
-			break;
-		}
-	case '\n':
-	case '|':
-	case '&':
-	case ';':
-	case '<':
-	case '>':
-	case '{':
-	case '}':
-		if (!(sq|dq|np)) return WRDE_BADCHAR;
-		break;
-	case '$':
-		if (sq) break;
-		if (s[i+1]=='(' && s[i+2]=='(') {
-			i += 2;
-			np += 2;
-			break;
-		} else if (s[i+1] != '(') break;
-	case '`':
-		if (sq) break;
-		return WRDE_CMDSUB;
-	}
+  if (flags & WRDE_NOCMD)
+    for (i = 0; s[i]; i++)
+      switch (s[i]) {
+        case '\\':
+          if (!sq)
+            i++;
+          break;
+        case '\'':
+          if (!dq)
+            sq ^= 1;
+          break;
+        case '"':
+          if (!sq)
+            dq ^= 1;
+          break;
+        case '(':
+          if (np) {
+            np++;
+            break;
+          }
+        case ')':
+          if (np) {
+            np--;
+            break;
+          }
+        case '\n':
+        case '|':
+        case '&':
+        case ';':
+        case '<':
+        case '>':
+        case '{':
+        case '}':
+          if (!(sq | dq | np))
+            return WRDE_BADCHAR;
+          break;
+        case '$':
+          if (sq)
+            break;
+          if (s[i + 1] == '(' && s[i + 2] == '(') {
+            i += 2;
+            np += 2;
+            break;
+          } else if (s[i + 1] != '(')
+            break;
+        case '`':
+          if (sq)
+            break;
+          return WRDE_CMDSUB;
+      }
 
-	if (flags & WRDE_APPEND) {
-		wc = we->we_wordc;
-		wv = we->we_wordv;
-	}
+  if (flags & WRDE_APPEND) {
+    wc = we->we_wordc;
+    wv = we->we_wordv;
+  }
 
-	i = wc;
-	if (flags & WRDE_DOOFFS) {
-		if (we->we_offs > SIZE_MAX/sizeof(void *)/4)
-			goto nospace;
-		i += we->we_offs;
-	} else {
-		we->we_offs = 0;
-	}
+  i = wc;
+  if (flags & WRDE_DOOFFS) {
+    if (we->we_offs > SIZE_MAX / sizeof(void*) / 4)
+      goto nospace;
+    i += we->we_offs;
+  } else {
+    we->we_offs = 0;
+  }
 
-	if (pipe2(p, O_CLOEXEC) < 0) goto nospace;
-	__block_all_sigs(&set);
-	pid = fork();
-	__restore_sigs(&set);
-	if (pid < 0) {
-		close(p[0]);
-		close(p[1]);
-		goto nospace;
-	}
-	if (!pid) {
-		if (p[1] == 1) fcntl(1, F_SETFD, 0);
-		else dup2(p[1], 1);
-		execl("/bin/sh", "sh", "-c",
-			"eval \"printf %s\\\\\\\\0 x $1 $2\"",
-			"sh", s, redir, (char *)0);
-		_exit(1);
-	}
-	close(p[1]);
-	
-	f = fdopen(p[0], "r");
-	if (!f) {
-		close(p[0]);
-		kill(pid, SIGKILL);
-		reap(pid);
-		goto nospace;
-	}
+  if (pipe2(p, O_CLOEXEC) < 0)
+    goto nospace;
+  __block_all_sigs(&set);
+  pid = fork();
+  __restore_sigs(&set);
+  if (pid < 0) {
+    close(p[0]);
+    close(p[1]);
+    goto nospace;
+  }
+  if (!pid) {
+    if (p[1] == 1)
+      fcntl(1, F_SETFD, 0);
+    else
+      dup2(p[1], 1);
+    execl("/bin/sh", "sh", "-c", "eval \"printf %s\\\\\\\\0 x $1 $2\"", "sh", s,
+          redir, (char*)0);
+    _exit(1);
+  }
+  close(p[1]);
 
-	l = wv ? i+1 : 0;
+  f = fdopen(p[0], "r");
+  if (!f) {
+    close(p[0]);
+    kill(pid, SIGKILL);
+    reap(pid);
+    goto nospace;
+  }
 
-	free(getword(f));
-	if (feof(f)) {
-		fclose(f);
-		reap(pid);
-		return WRDE_SYNTAX;
-	}
+  l = wv ? i + 1 : 0;
 
-	while ((w = getword(f))) {
-		if (i+1 >= l) {
-			l += l/2+10;
-			tmp = realloc(wv, l*sizeof(char *));
-			if (!tmp) break;
-			wv = tmp;
-		}
-		wv[i++] = w;
-		wv[i] = 0;
-	}
-	if (!feof(f)) err = WRDE_NOSPACE;
+  free(getword(f));
+  if (feof(f)) {
+    fclose(f);
+    reap(pid);
+    return WRDE_SYNTAX;
+  }
 
-	fclose(f);
-	reap(pid);
+  while ((w = getword(f))) {
+    if (i + 1 >= l) {
+      l += l / 2 + 10;
+      tmp = realloc(wv, l * sizeof(char*));
+      if (!tmp)
+        break;
+      wv = tmp;
+    }
+    wv[i++] = w;
+    wv[i] = 0;
+  }
+  if (!feof(f))
+    err = WRDE_NOSPACE;
 
-	if (!wv) wv = calloc(i+1, sizeof *wv);
+  fclose(f);
+  reap(pid);
 
-	we->we_wordv = wv;
-	we->we_wordc = i;
+  if (!wv)
+    wv = calloc(i + 1, sizeof *wv);
 
-	if (flags & WRDE_DOOFFS) {
-		if (wv) for (i=we->we_offs; i; i--)
-			we->we_wordv[i-1] = 0;
-		we->we_wordc -= we->we_offs;
-	}
-	return err;
+  we->we_wordv = wv;
+  we->we_wordc = i;
+
+  if (flags & WRDE_DOOFFS) {
+    if (wv)
+      for (i = we->we_offs; i; i--)
+        we->we_wordv[i - 1] = 0;
+    we->we_wordc -= we->we_offs;
+  }
+  return err;
 
 nospace:
-	if (!(flags & WRDE_APPEND)) {
-		we->we_wordc = 0;
-		we->we_wordv = 0;
-	}
-	return WRDE_NOSPACE;
+  if (!(flags & WRDE_APPEND)) {
+    we->we_wordc = 0;
+    we->we_wordv = 0;
+  }
+  return WRDE_NOSPACE;
 }
 
-int wordexp(const char *restrict s, wordexp_t *restrict we, int flags)
-{
-	int r, cs;
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-	r = do_wordexp(s, we, flags);
-	pthread_setcancelstate(cs, 0);
-	return r;
+int wordexp(const char* restrict s, wordexp_t* restrict we, int flags) {
+  int r, cs;
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  r = do_wordexp(s, we, flags);
+  pthread_setcancelstate(cs, 0);
+  return r;
 }
 
-void wordfree(wordexp_t *we)
-{
-	size_t i;
-	if (!we->we_wordv) return;
-	for (i=0; i<we->we_wordc; i++) free(we->we_wordv[we->we_offs+i]);
-	free(we->we_wordv);
-	we->we_wordv = 0;
-	we->we_wordc = 0;
+void wordfree(wordexp_t* we) {
+  size_t i;
+  if (!we->we_wordv)
+    return;
+  for (i = 0; i < we->we_wordc; i++)
+    free(we->we_wordv[we->we_offs + i]);
+  free(we->we_wordv);
+  we->we_wordv = 0;
+  we->we_wordc = 0;
 }
diff --git a/fusl/src/mman/madvise.c b/fusl/src/mman/madvise.c
index f80926b..d3d6a7b 100644
--- a/fusl/src/mman/madvise.c
+++ b/fusl/src/mman/madvise.c
@@ -2,9 +2,8 @@
 #include "syscall.h"
 #include "libc.h"
 
-int __madvise(void *addr, size_t len, int advice)
-{
-	return syscall(SYS_madvise, addr, len, advice);
+int __madvise(void* addr, size_t len, int advice) {
+  return syscall(SYS_madvise, addr, len, advice);
 }
 
 weak_alias(__madvise, madvise);
diff --git a/fusl/src/mman/mincore.c b/fusl/src/mman/mincore.c
index 4bb19f8..d5da45e 100644
--- a/fusl/src/mman/mincore.c
+++ b/fusl/src/mman/mincore.c
@@ -2,7 +2,6 @@
 #include <sys/mman.h>
 #include "syscall.h"
 
-int mincore (void *addr, size_t len, unsigned char *vec)
-{
-	return syscall(SYS_mincore, addr, len, vec);
+int mincore(void* addr, size_t len, unsigned char* vec) {
+  return syscall(SYS_mincore, addr, len, vec);
 }
diff --git a/fusl/src/mman/mlock.c b/fusl/src/mman/mlock.c
index e683a44..0e8321c 100644
--- a/fusl/src/mman/mlock.c
+++ b/fusl/src/mman/mlock.c
@@ -1,7 +1,6 @@
 #include <sys/mman.h>
 #include "syscall.h"
 
-int mlock(const void *addr, size_t len)
-{
-	return syscall(SYS_mlock, addr, len);
+int mlock(const void* addr, size_t len) {
+  return syscall(SYS_mlock, addr, len);
 }
diff --git a/fusl/src/mman/mlockall.c b/fusl/src/mman/mlockall.c
index 0ba4e66..a1955c8 100644
--- a/fusl/src/mman/mlockall.c
+++ b/fusl/src/mman/mlockall.c
@@ -1,7 +1,6 @@
 #include <sys/mman.h>
 #include "syscall.h"
 
-int mlockall(int flags)
-{
-	return syscall(SYS_mlockall, flags);
+int mlockall(int flags) {
+  return syscall(SYS_mlockall, flags);
 }
diff --git a/fusl/src/mman/mmap.c b/fusl/src/mman/mmap.c
index d51655a..19b4551 100644
--- a/fusl/src/mman/mmap.c
+++ b/fusl/src/mman/mmap.c
@@ -6,29 +6,28 @@
 #include "syscall.h"
 #include "libc.h"
 
-static void dummy(void) { }
+static void dummy(void) {}
 weak_alias(dummy, __vm_wait);
 
 #define UNIT SYSCALL_MMAP2_UNIT
-#define OFF_MASK ((-0x2000ULL << (8*sizeof(long)-1)) | (UNIT-1))
+#define OFF_MASK ((-0x2000ULL << (8 * sizeof(long) - 1)) | (UNIT - 1))
 
-void *__mmap(void *start, size_t len, int prot, int flags, int fd, off_t off)
-{
-	if (off & OFF_MASK) {
-		errno = EINVAL;
-		return MAP_FAILED;
-	}
-	if (len >= PTRDIFF_MAX) {
-		errno = ENOMEM;
-		return MAP_FAILED;
-	}
-	if (flags & MAP_FIXED) {
-		__vm_wait();
-	}
+void* __mmap(void* start, size_t len, int prot, int flags, int fd, off_t off) {
+  if (off & OFF_MASK) {
+    errno = EINVAL;
+    return MAP_FAILED;
+  }
+  if (len >= PTRDIFF_MAX) {
+    errno = ENOMEM;
+    return MAP_FAILED;
+  }
+  if (flags & MAP_FIXED) {
+    __vm_wait();
+  }
 #ifdef SYS_mmap2
-	return (void *)syscall(SYS_mmap2, start, len, prot, flags, fd, off/UNIT);
+  return (void*)syscall(SYS_mmap2, start, len, prot, flags, fd, off / UNIT);
 #else
-	return (void *)syscall(SYS_mmap, start, len, prot, flags, fd, off);
+  return (void*)syscall(SYS_mmap, start, len, prot, flags, fd, off);
 #endif
 }
 
diff --git a/fusl/src/mman/mprotect.c b/fusl/src/mman/mprotect.c
index 535787b..2a3212c 100644
--- a/fusl/src/mman/mprotect.c
+++ b/fusl/src/mman/mprotect.c
@@ -2,12 +2,11 @@
 #include "libc.h"
 #include "syscall.h"
 
-int __mprotect(void *addr, size_t len, int prot)
-{
-	size_t start, end;
-	start = (size_t)addr & -PAGE_SIZE;
-	end = (size_t)((char *)addr + len + PAGE_SIZE-1) & -PAGE_SIZE;
-	return syscall(SYS_mprotect, start, end-start, prot);
+int __mprotect(void* addr, size_t len, int prot) {
+  size_t start, end;
+  start = (size_t)addr & -PAGE_SIZE;
+  end = (size_t)((char*)addr + len + PAGE_SIZE - 1) & -PAGE_SIZE;
+  return syscall(SYS_mprotect, start, end - start, prot);
 }
 
 weak_alias(__mprotect, mprotect);
diff --git a/fusl/src/mman/mremap.c b/fusl/src/mman/mremap.c
index ce4e8ea..3070cea 100644
--- a/fusl/src/mman/mremap.c
+++ b/fusl/src/mman/mremap.c
@@ -7,27 +7,27 @@
 #include "syscall.h"
 #include "libc.h"
 
-static void dummy(void) { }
+static void dummy(void) {}
 weak_alias(dummy, __vm_wait);
 
-void *__mremap(void *old_addr, size_t old_len, size_t new_len, int flags, ...)
-{
-	va_list ap;
-	void *new_addr = 0;
+void* __mremap(void* old_addr, size_t old_len, size_t new_len, int flags, ...) {
+  va_list ap;
+  void* new_addr = 0;
 
-	if (new_len >= PTRDIFF_MAX) {
-		errno = ENOMEM;
-		return MAP_FAILED;
-	}
+  if (new_len >= PTRDIFF_MAX) {
+    errno = ENOMEM;
+    return MAP_FAILED;
+  }
 
-	if (flags & MREMAP_FIXED) {
-		__vm_wait();
-		va_start(ap, flags);
-		new_addr = va_arg(ap, void *);
-		va_end(ap);
-	}
+  if (flags & MREMAP_FIXED) {
+    __vm_wait();
+    va_start(ap, flags);
+    new_addr = va_arg(ap, void*);
+    va_end(ap);
+  }
 
-	return (void *)syscall(SYS_mremap, old_addr, old_len, new_len, flags, new_addr);
+  return (void*)syscall(SYS_mremap, old_addr, old_len, new_len, flags,
+                        new_addr);
 }
 
 weak_alias(__mremap, mremap);
diff --git a/fusl/src/mman/msync.c b/fusl/src/mman/msync.c
index fcd8cdf..d0720e4 100644
--- a/fusl/src/mman/msync.c
+++ b/fusl/src/mman/msync.c
@@ -1,7 +1,6 @@
 #include <sys/mman.h>
 #include "syscall.h"
 
-int msync(void *start, size_t len, int flags)
-{
-	return syscall_cp(SYS_msync, start, len, flags);
+int msync(void* start, size_t len, int flags) {
+  return syscall_cp(SYS_msync, start, len, flags);
 }
diff --git a/fusl/src/mman/munlock.c b/fusl/src/mman/munlock.c
index 2cccef0..73aadaf 100644
--- a/fusl/src/mman/munlock.c
+++ b/fusl/src/mman/munlock.c
@@ -1,7 +1,6 @@
 #include <sys/mman.h>
 #include "syscall.h"
 
-int munlock(const void *addr, size_t len)
-{
-	return syscall(SYS_munlock, addr, len);
+int munlock(const void* addr, size_t len) {
+  return syscall(SYS_munlock, addr, len);
 }
diff --git a/fusl/src/mman/munlockall.c b/fusl/src/mman/munlockall.c
index 6e9d39d..66a5b4e 100644
--- a/fusl/src/mman/munlockall.c
+++ b/fusl/src/mman/munlockall.c
@@ -1,7 +1,6 @@
 #include <sys/mman.h>
 #include "syscall.h"
 
-int munlockall(void)
-{
-	return syscall(SYS_munlockall);
+int munlockall(void) {
+  return syscall(SYS_munlockall);
 }
diff --git a/fusl/src/mman/munmap.c b/fusl/src/mman/munmap.c
index 3f711ee..41fa30a 100644
--- a/fusl/src/mman/munmap.c
+++ b/fusl/src/mman/munmap.c
@@ -2,13 +2,12 @@
 #include "syscall.h"
 #include "libc.h"
 
-static void dummy(void) { }
+static void dummy(void) {}
 weak_alias(dummy, __vm_wait);
 
-int __munmap(void *start, size_t len)
-{
-	__vm_wait();
-	return syscall(SYS_munmap, start, len);
+int __munmap(void* start, size_t len) {
+  __vm_wait();
+  return syscall(SYS_munmap, start, len);
 }
 
 weak_alias(__munmap, munmap);
diff --git a/fusl/src/mman/posix_madvise.c b/fusl/src/mman/posix_madvise.c
index e5e5acb..59c4984 100644
--- a/fusl/src/mman/posix_madvise.c
+++ b/fusl/src/mman/posix_madvise.c
@@ -2,8 +2,8 @@
 #include <sys/mman.h>
 #include "syscall.h"
 
-int posix_madvise(void *addr, size_t len, int advice)
-{
-	if (advice == MADV_DONTNEED) return 0;
-	return -__syscall(SYS_madvise, addr, len, advice);
+int posix_madvise(void* addr, size_t len, int advice) {
+  if (advice == MADV_DONTNEED)
+    return 0;
+  return -__syscall(SYS_madvise, addr, len, advice);
 }
diff --git a/fusl/src/mman/shm_open.c b/fusl/src/mman/shm_open.c
index d042a5a..e8bdf21 100644
--- a/fusl/src/mman/shm_open.c
+++ b/fusl/src/mman/shm_open.c
@@ -6,40 +6,40 @@
 #include <limits.h>
 #include <pthread.h>
 
-char *__strchrnul(const char *, int);
+char* __strchrnul(const char*, int);
 
-char *__shm_mapname(const char *name, char *buf)
-{
-	char *p;
-	while (*name == '/') name++;
-	if (*(p = __strchrnul(name, '/')) || p==name ||
-	    (p-name <= 2 && name[0]=='.' && p[-1]=='.')) {
-		errno = EINVAL;
-		return 0;
-	}
-	if (p-name > NAME_MAX) {
-		errno = ENAMETOOLONG;
-		return 0;
-	}
-	memcpy(buf, "/dev/shm/", 9);
-	memcpy(buf+9, name, p-name+1);
-	return buf;
+char* __shm_mapname(const char* name, char* buf) {
+  char* p;
+  while (*name == '/')
+    name++;
+  if (*(p = __strchrnul(name, '/')) || p == name ||
+      (p - name <= 2 && name[0] == '.' && p[-1] == '.')) {
+    errno = EINVAL;
+    return 0;
+  }
+  if (p - name > NAME_MAX) {
+    errno = ENAMETOOLONG;
+    return 0;
+  }
+  memcpy(buf, "/dev/shm/", 9);
+  memcpy(buf + 9, name, p - name + 1);
+  return buf;
 }
 
-int shm_open(const char *name, int flag, mode_t mode)
-{
-	int cs;
-	char buf[NAME_MAX+10];
-	if (!(name = __shm_mapname(name, buf))) return -1;
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-	int fd = open(name, flag|O_NOFOLLOW|O_CLOEXEC|O_NONBLOCK, mode);
-	pthread_setcancelstate(cs, 0);
-	return fd;
+int shm_open(const char* name, int flag, mode_t mode) {
+  int cs;
+  char buf[NAME_MAX + 10];
+  if (!(name = __shm_mapname(name, buf)))
+    return -1;
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  int fd = open(name, flag | O_NOFOLLOW | O_CLOEXEC | O_NONBLOCK, mode);
+  pthread_setcancelstate(cs, 0);
+  return fd;
 }
 
-int shm_unlink(const char *name)
-{
-	char buf[NAME_MAX+10];
-	if (!(name = __shm_mapname(name, buf))) return -1;
-	return unlink(name);
+int shm_unlink(const char* name) {
+  char buf[NAME_MAX + 10];
+  if (!(name = __shm_mapname(name, buf)))
+    return -1;
+  return unlink(name);
 }
diff --git a/fusl/src/mq/mq_close.c b/fusl/src/mq/mq_close.c
index a61f094..11e5456 100644
--- a/fusl/src/mq/mq_close.c
+++ b/fusl/src/mq/mq_close.c
@@ -1,7 +1,6 @@
 #include <mqueue.h>
 #include "syscall.h"
 
-int mq_close(mqd_t mqd)
-{
-	return syscall(SYS_close, mqd);
+int mq_close(mqd_t mqd) {
+  return syscall(SYS_close, mqd);
 }
diff --git a/fusl/src/mq/mq_getattr.c b/fusl/src/mq/mq_getattr.c
index dce1806..a749ab3 100644
--- a/fusl/src/mq/mq_getattr.c
+++ b/fusl/src/mq/mq_getattr.c
@@ -1,7 +1,6 @@
 #include <mqueue.h>
 #include "syscall.h"
 
-int mq_getattr(mqd_t mqd, struct mq_attr *attr)
-{
-	return mq_setattr(mqd, 0, attr);
+int mq_getattr(mqd_t mqd, struct mq_attr* attr) {
+  return mq_setattr(mqd, 0, attr);
 }
diff --git a/fusl/src/mq/mq_notify.c b/fusl/src/mq/mq_notify.c
index 221591c..a73ddb7 100644
--- a/fusl/src/mq/mq_notify.c
+++ b/fusl/src/mq/mq_notify.c
@@ -7,67 +7,68 @@
 #include "syscall.h"
 
 struct args {
-	pthread_barrier_t barrier;
-	int sock;
-	const struct sigevent *sev;
+  pthread_barrier_t barrier;
+  int sock;
+  const struct sigevent* sev;
 };
 
-static void *start(void *p)
-{
-	struct args *args = p;
-	char buf[32];
-	ssize_t n;
-	int s = args->sock;
-	void (*func)(union sigval) = args->sev->sigev_notify_function;
-	union sigval val = args->sev->sigev_value;
+static void* start(void* p) {
+  struct args* args = p;
+  char buf[32];
+  ssize_t n;
+  int s = args->sock;
+  void (*func)(union sigval) = args->sev->sigev_notify_function;
+  union sigval val = args->sev->sigev_value;
 
-	pthread_barrier_wait(&args->barrier);
-	n = recv(s, buf, sizeof(buf), MSG_NOSIGNAL|MSG_WAITALL);
-	close(s);
-	if (n==sizeof buf && buf[sizeof buf - 1] == 1)
-		func(val);
-	return 0;
+  pthread_barrier_wait(&args->barrier);
+  n = recv(s, buf, sizeof(buf), MSG_NOSIGNAL | MSG_WAITALL);
+  close(s);
+  if (n == sizeof buf && buf[sizeof buf - 1] == 1)
+    func(val);
+  return 0;
 }
 
-int mq_notify(mqd_t mqd, const struct sigevent *sev)
-{
-	struct args args = { .sev = sev };
-	pthread_attr_t attr;
-	pthread_t td;
-	int s;
-	struct sigevent sev2;
-	static const char zeros[32];
+int mq_notify(mqd_t mqd, const struct sigevent* sev) {
+  struct args args = {.sev = sev};
+  pthread_attr_t attr;
+  pthread_t td;
+  int s;
+  struct sigevent sev2;
+  static const char zeros[32];
 
-	if (!sev || sev->sigev_notify != SIGEV_THREAD)
-		return syscall(SYS_mq_notify, mqd, sev);
+  if (!sev || sev->sigev_notify != SIGEV_THREAD)
+    return syscall(SYS_mq_notify, mqd, sev);
 
-	s = socket(AF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, 0);
-	if (s < 0) return -1;
-	args.sock = s;
+  s = socket(AF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, 0);
+  if (s < 0)
+    return -1;
+  args.sock = s;
 
-	if (sev->sigev_notify_attributes) attr = *sev->sigev_notify_attributes;
-	else pthread_attr_init(&attr);
-	pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-	pthread_barrier_init(&args.barrier, 0, 2);
+  if (sev->sigev_notify_attributes)
+    attr = *sev->sigev_notify_attributes;
+  else
+    pthread_attr_init(&attr);
+  pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+  pthread_barrier_init(&args.barrier, 0, 2);
 
-	if (pthread_create(&td, &attr, start, &args)) {
-		__syscall(SYS_close, s);
-		errno = EAGAIN;
-		return -1;
-	}
+  if (pthread_create(&td, &attr, start, &args)) {
+    __syscall(SYS_close, s);
+    errno = EAGAIN;
+    return -1;
+  }
 
-	pthread_barrier_wait(&args.barrier);
-	pthread_barrier_destroy(&args.barrier);
+  pthread_barrier_wait(&args.barrier);
+  pthread_barrier_destroy(&args.barrier);
 
-	sev2.sigev_notify = SIGEV_THREAD;
-	sev2.sigev_signo = s;
-	sev2.sigev_value.sival_ptr = (void *)&zeros;
+  sev2.sigev_notify = SIGEV_THREAD;
+  sev2.sigev_signo = s;
+  sev2.sigev_value.sival_ptr = (void*)&zeros;
 
-	if (syscall(SYS_mq_notify, mqd, &sev2) < 0) {
-		pthread_cancel(td);
-		__syscall(SYS_close, s);
-		return -1;
-	}
+  if (syscall(SYS_mq_notify, mqd, &sev2) < 0) {
+    pthread_cancel(td);
+    __syscall(SYS_close, s);
+    return -1;
+  }
 
-	return 0;
+  return 0;
 }
diff --git a/fusl/src/mq/mq_open.c b/fusl/src/mq/mq_open.c
index aa91d58..3a60504 100644
--- a/fusl/src/mq/mq_open.c
+++ b/fusl/src/mq/mq_open.c
@@ -3,17 +3,17 @@
 #include <stdarg.h>
 #include "syscall.h"
 
-mqd_t mq_open(const char *name, int flags, ...)
-{
-	mode_t mode = 0;
-	struct mq_attr *attr = 0;
-	if (*name == '/') name++;
-	if (flags & O_CREAT) {
-		va_list ap;
-		va_start(ap, flags);
-		mode = va_arg(ap, mode_t);
-		attr = va_arg(ap, struct mq_attr *);
-		va_end(ap);
-	}
-	return syscall(SYS_mq_open, name, flags, mode, attr);
+mqd_t mq_open(const char* name, int flags, ...) {
+  mode_t mode = 0;
+  struct mq_attr* attr = 0;
+  if (*name == '/')
+    name++;
+  if (flags & O_CREAT) {
+    va_list ap;
+    va_start(ap, flags);
+    mode = va_arg(ap, mode_t);
+    attr = va_arg(ap, struct mq_attr*);
+    va_end(ap);
+  }
+  return syscall(SYS_mq_open, name, flags, mode, attr);
 }
diff --git a/fusl/src/mq/mq_receive.c b/fusl/src/mq/mq_receive.c
index 0b1bb4e..611dc2a 100644
--- a/fusl/src/mq/mq_receive.c
+++ b/fusl/src/mq/mq_receive.c
@@ -1,6 +1,5 @@
 #include <mqueue.h>
 
-ssize_t mq_receive(mqd_t mqd, char *msg, size_t len, unsigned *prio)
-{
-	return mq_timedreceive(mqd, msg, len, prio, 0);
+ssize_t mq_receive(mqd_t mqd, char* msg, size_t len, unsigned* prio) {
+  return mq_timedreceive(mqd, msg, len, prio, 0);
 }
diff --git a/fusl/src/mq/mq_send.c b/fusl/src/mq/mq_send.c
index 1acb1b7..ec95ac9 100644
--- a/fusl/src/mq/mq_send.c
+++ b/fusl/src/mq/mq_send.c
@@ -1,6 +1,5 @@
 #include <mqueue.h>
 
-int mq_send(mqd_t mqd, const char *msg, size_t len, unsigned prio)
-{
-	return mq_timedsend(mqd, msg, len, prio, 0);
+int mq_send(mqd_t mqd, const char* msg, size_t len, unsigned prio) {
+  return mq_timedsend(mqd, msg, len, prio, 0);
 }
diff --git a/fusl/src/mq/mq_setattr.c b/fusl/src/mq/mq_setattr.c
index eae022e..814dbe7 100644
--- a/fusl/src/mq/mq_setattr.c
+++ b/fusl/src/mq/mq_setattr.c
@@ -1,7 +1,8 @@
 #include <mqueue.h>
 #include "syscall.h"
 
-int mq_setattr(mqd_t mqd, const struct mq_attr *restrict new, struct mq_attr *restrict old)
-{
-	return syscall(SYS_mq_getsetattr, mqd, new, old);
+int mq_setattr(mqd_t mqd,
+               const struct mq_attr* restrict new,
+               struct mq_attr* restrict old) {
+  return syscall(SYS_mq_getsetattr, mqd, new, old);
 }
diff --git a/fusl/src/mq/mq_timedreceive.c b/fusl/src/mq/mq_timedreceive.c
index 2cef6a8..6856cee 100644
--- a/fusl/src/mq/mq_timedreceive.c
+++ b/fusl/src/mq/mq_timedreceive.c
@@ -1,7 +1,10 @@
 #include <mqueue.h>
 #include "syscall.h"
 
-ssize_t mq_timedreceive(mqd_t mqd, char *restrict msg, size_t len, unsigned *restrict prio, const struct timespec *restrict at)
-{
-	return syscall_cp(SYS_mq_timedreceive, mqd, msg, len, prio, at);
+ssize_t mq_timedreceive(mqd_t mqd,
+                        char* restrict msg,
+                        size_t len,
+                        unsigned* restrict prio,
+                        const struct timespec* restrict at) {
+  return syscall_cp(SYS_mq_timedreceive, mqd, msg, len, prio, at);
 }
diff --git a/fusl/src/mq/mq_timedsend.c b/fusl/src/mq/mq_timedsend.c
index 1c00aa0..dc0e2dc 100644
--- a/fusl/src/mq/mq_timedsend.c
+++ b/fusl/src/mq/mq_timedsend.c
@@ -1,7 +1,10 @@
 #include <mqueue.h>
 #include "syscall.h"
 
-int mq_timedsend(mqd_t mqd, const char *msg, size_t len, unsigned prio, const struct timespec *at)
-{
-	return syscall_cp(SYS_mq_timedsend, mqd, msg, len, prio, at);
+int mq_timedsend(mqd_t mqd,
+                 const char* msg,
+                 size_t len,
+                 unsigned prio,
+                 const struct timespec* at) {
+  return syscall_cp(SYS_mq_timedsend, mqd, msg, len, prio, at);
 }
diff --git a/fusl/src/mq/mq_unlink.c b/fusl/src/mq/mq_unlink.c
index 6a08a4c..36815ed 100644
--- a/fusl/src/mq/mq_unlink.c
+++ b/fusl/src/mq/mq_unlink.c
@@ -2,15 +2,16 @@
 #include <errno.h>
 #include "syscall.h"
 
-int mq_unlink(const char *name)
-{
-	int ret;
-	if (*name == '/') name++;
-	ret = __syscall(SYS_mq_unlink, name);
-	if (ret < 0) {
-		if (ret == -EPERM) ret = -EACCES;
-		errno = -ret;
-		return -1;
-	}
-	return ret;
+int mq_unlink(const char* name) {
+  int ret;
+  if (*name == '/')
+    name++;
+  ret = __syscall(SYS_mq_unlink, name);
+  if (ret < 0) {
+    if (ret == -EPERM)
+      ret = -EACCES;
+    errno = -ret;
+    return -1;
+  }
+  return ret;
 }
diff --git a/fusl/src/multibyte/btowc.c b/fusl/src/multibyte/btowc.c
index 8acd0a2..bc16450 100644
--- a/fusl/src/multibyte/btowc.c
+++ b/fusl/src/multibyte/btowc.c
@@ -3,8 +3,7 @@
 #include <stdlib.h>
 #include "internal.h"
 
-wint_t btowc(int c)
-{
-	int b = (unsigned char)c;
-	return b<128U ? b : (MB_CUR_MAX==1 && c!=EOF) ? CODEUNIT(c) : WEOF;
+wint_t btowc(int c) {
+  int b = (unsigned char)c;
+  return b < 128U ? b : (MB_CUR_MAX == 1 && c != EOF) ? CODEUNIT(c) : WEOF;
 }
diff --git a/fusl/src/multibyte/c16rtomb.c b/fusl/src/multibyte/c16rtomb.c
index 5ebfbc2..e3baa02 100644
--- a/fusl/src/multibyte/c16rtomb.c
+++ b/fusl/src/multibyte/c16rtomb.c
@@ -2,34 +2,37 @@
 #include <errno.h>
 #include <wchar.h>
 
-size_t c16rtomb(char *restrict s, char16_t c16, mbstate_t *restrict ps)
-{
-	static unsigned internal_state;
-	if (!ps) ps = (void *)&internal_state;
-	unsigned *x = (unsigned *)ps;
-	wchar_t wc;
+size_t c16rtomb(char* restrict s, char16_t c16, mbstate_t* restrict ps) {
+  static unsigned internal_state;
+  if (!ps)
+    ps = (void*)&internal_state;
+  unsigned* x = (unsigned*)ps;
+  wchar_t wc;
 
-	if (!s) {
-		if (*x) goto ilseq;
-		return 1;
-	}
+  if (!s) {
+    if (*x)
+      goto ilseq;
+    return 1;
+  }
 
-	if (!*x && c16 - 0xd800u < 0x400) {
-		*x = (c16 - 0xd7c0) << 10;
-		return 0;
-	}
+  if (!*x && c16 - 0xd800u < 0x400) {
+    *x = (c16 - 0xd7c0) << 10;
+    return 0;
+  }
 
-	if (*x) {
-		if (c16 - 0xdc00u >= 0x400) goto ilseq;
-		else wc = *x + c16 - 0xdc00;
-		*x = 0;
-	} else {
-		wc = c16;
-	}
-	return wcrtomb(s, wc, 0);
+  if (*x) {
+    if (c16 - 0xdc00u >= 0x400)
+      goto ilseq;
+    else
+      wc = *x + c16 - 0xdc00;
+    *x = 0;
+  } else {
+    wc = c16;
+  }
+  return wcrtomb(s, wc, 0);
 
 ilseq:
-	*x = 0;
-	errno = EILSEQ;
-	return -1;
+  *x = 0;
+  errno = EILSEQ;
+  return -1;
 }
diff --git a/fusl/src/multibyte/c32rtomb.c b/fusl/src/multibyte/c32rtomb.c
index 6785132..8db928a 100644
--- a/fusl/src/multibyte/c32rtomb.c
+++ b/fusl/src/multibyte/c32rtomb.c
@@ -1,7 +1,6 @@
 #include <uchar.h>
 #include <wchar.h>
 
-size_t c32rtomb(char *restrict s, char32_t c32, mbstate_t *restrict ps)
-{
-	return wcrtomb(s, c32, ps);
+size_t c32rtomb(char* restrict s, char32_t c32, mbstate_t* restrict ps) {
+  return wcrtomb(s, c32, ps);
 }
diff --git a/fusl/src/multibyte/internal.c b/fusl/src/multibyte/internal.c
index bbdc415..acfa8ab 100644
--- a/fusl/src/multibyte/internal.c
+++ b/fusl/src/multibyte/internal.c
@@ -1,4 +1,4 @@
-/* 
+/*
  * This code was written by Rich Felker in 2010; no copyright is claimed.
  * This code is in the public domain. Attribution is appreciated but
  * unnecessary.
@@ -6,27 +6,20 @@
 
 #include "internal.h"
 
-#define C(x) ( x<2 ? -1 : ( R(0x80,0xc0) | x ) )
-#define D(x) C((x+16))
-#define E(x) ( ( x==0 ? R(0xa0,0xc0) : \
-                 x==0xd ? R(0x80,0xa0) : \
-                 R(0x80,0xc0) ) \
-             | ( R(0x80,0xc0) >> 6 ) \
-             | x )
-#define F(x) ( ( x>=5 ? 0 : \
-                 x==0 ? R(0x90,0xc0) : \
-                 x==4 ? R(0x80,0xa0) : \
-                 R(0x80,0xc0) ) \
-             | ( R(0x80,0xc0) >> 6 ) \
-             | ( R(0x80,0xc0) >> 12 ) \
-             | x )
+#define C(x) (x < 2 ? -1 : (R(0x80, 0xc0) | x))
+#define D(x) C((x + 16))
+#define E(x)                                                             \
+  ((x == 0 ? R(0xa0, 0xc0) : x == 0xd ? R(0x80, 0xa0) : R(0x80, 0xc0)) | \
+   (R(0x80, 0xc0) >> 6) | x)
+#define F(x)                                                        \
+  ((x >= 5 ? 0 : x == 0 ? R(0x90, 0xc0) : x == 4 ? R(0x80, 0xa0)    \
+                                                 : R(0x80, 0xc0)) | \
+   (R(0x80, 0xc0) >> 6) | (R(0x80, 0xc0) >> 12) | x)
 
 const uint32_t bittab[] = {
-	              C(0x2),C(0x3),C(0x4),C(0x5),C(0x6),C(0x7),
-	C(0x8),C(0x9),C(0xa),C(0xb),C(0xc),C(0xd),C(0xe),C(0xf),
-	D(0x0),D(0x1),D(0x2),D(0x3),D(0x4),D(0x5),D(0x6),D(0x7),
-	D(0x8),D(0x9),D(0xa),D(0xb),D(0xc),D(0xd),D(0xe),D(0xf),
-	E(0x0),E(0x1),E(0x2),E(0x3),E(0x4),E(0x5),E(0x6),E(0x7),
-	E(0x8),E(0x9),E(0xa),E(0xb),E(0xc),E(0xd),E(0xe),E(0xf),
-	F(0x0),F(0x1),F(0x2),F(0x3),F(0x4)
-};
+    C(0x2), C(0x3), C(0x4), C(0x5), C(0x6), C(0x7), C(0x8), C(0x9), C(0xa),
+    C(0xb), C(0xc), C(0xd), C(0xe), C(0xf), D(0x0), D(0x1), D(0x2), D(0x3),
+    D(0x4), D(0x5), D(0x6), D(0x7), D(0x8), D(0x9), D(0xa), D(0xb), D(0xc),
+    D(0xd), D(0xe), D(0xf), E(0x0), E(0x1), E(0x2), E(0x3), E(0x4), E(0x5),
+    E(0x6), E(0x7), E(0x8), E(0x9), E(0xa), E(0xb), E(0xc), E(0xd), E(0xe),
+    E(0xf), F(0x0), F(0x1), F(0x2), F(0x3), F(0x4)};
diff --git a/fusl/src/multibyte/internal.h b/fusl/src/multibyte/internal.h
index 51308f4..4427ace 100644
--- a/fusl/src/multibyte/internal.h
+++ b/fusl/src/multibyte/internal.h
@@ -1,4 +1,4 @@
-/* 
+/*
  * This code was written by Rich Felker in 2010; no copyright is claimed.
  * This code is in the public domain. Attribution is appreciated but
  * unnecessary.
@@ -15,11 +15,12 @@
 
 /* Upper 6 state bits are a negative integer offset to bound-check next byte */
 /*    equivalent to: ( (b-0x80) | (b+offset) ) & ~0x3f      */
-#define OOB(c,b) (((((b)>>3)-0x10)|(((b)>>3)+((int32_t)(c)>>26))) & ~7)
+#define OOB(c, b) \
+  (((((b) >> 3) - 0x10) | (((b) >> 3) + ((int32_t)(c) >> 26))) & ~7)
 
 /* Interval [a,b). Either a must be 80 or b must be c0, lower 3 bits clear. */
-#define R(a,b) ((uint32_t)((a==0x80 ? 0x40u-b : 0u-a) << 23))
-#define FAILSTATE R(0x80,0x80)
+#define R(a, b) ((uint32_t)((a == 0x80 ? 0x40u - b : 0u - a) << 23))
+#define FAILSTATE R(0x80, 0x80)
 
 #define SA 0xc2u
 #define SB 0xf4u
diff --git a/fusl/src/multibyte/mblen.c b/fusl/src/multibyte/mblen.c
index 96b47b1..f52a156 100644
--- a/fusl/src/multibyte/mblen.c
+++ b/fusl/src/multibyte/mblen.c
@@ -1,4 +1,4 @@
-/* 
+/*
  * This code was written by Rich Felker in 2010; no copyright is claimed.
  * This code is in the public domain. Attribution is appreciated but
  * unnecessary.
@@ -6,7 +6,6 @@
 
 #include <stdlib.h>
 
-int mblen(const char *s, size_t n)
-{
-	return mbtowc(0, s, n);
+int mblen(const char* s, size_t n) {
+  return mbtowc(0, s, n);
 }
diff --git a/fusl/src/multibyte/mbrlen.c b/fusl/src/multibyte/mbrlen.c
index 3a5a743..1a52f84 100644
--- a/fusl/src/multibyte/mbrlen.c
+++ b/fusl/src/multibyte/mbrlen.c
@@ -1,4 +1,4 @@
-/* 
+/*
  * This code was written by Rich Felker in 2010; no copyright is claimed.
  * This code is in the public domain. Attribution is appreciated but
  * unnecessary.
@@ -6,8 +6,7 @@
 
 #include <wchar.h>
 
-size_t mbrlen(const char *restrict s, size_t n, mbstate_t *restrict st)
-{
-	static unsigned internal;
-	return mbrtowc(0, s, n, st ? st : (mbstate_t *)&internal);
+size_t mbrlen(const char* restrict s, size_t n, mbstate_t* restrict st) {
+  static unsigned internal;
+  return mbrtowc(0, s, n, st ? st : (mbstate_t*)&internal);
 }
diff --git a/fusl/src/multibyte/mbrtoc16.c b/fusl/src/multibyte/mbrtoc16.c
index 765ff90..3274e58 100644
--- a/fusl/src/multibyte/mbrtoc16.c
+++ b/fusl/src/multibyte/mbrtoc16.c
@@ -1,30 +1,36 @@
 #include <uchar.h>
 #include <wchar.h>
 
-size_t mbrtoc16(char16_t *restrict pc16, const char *restrict s, size_t n, mbstate_t *restrict ps)
-{
-	static unsigned internal_state;
-	if (!ps) ps = (void *)&internal_state;
-	unsigned *pending = (unsigned *)ps;
+size_t mbrtoc16(char16_t* restrict pc16,
+                const char* restrict s,
+                size_t n,
+                mbstate_t* restrict ps) {
+  static unsigned internal_state;
+  if (!ps)
+    ps = (void*)&internal_state;
+  unsigned* pending = (unsigned*)ps;
 
-	if (!s) return mbrtoc16(0, "", 1, ps);
+  if (!s)
+    return mbrtoc16(0, "", 1, ps);
 
-	/* mbrtowc states for partial UTF-8 characters have the high bit set;
-	 * we use nonzero states without high bit for pending surrogates. */
-	if ((int)*pending > 0) {
- 		if (pc16) *pc16 = *pending;
-		*pending = 0;
-		return -3;
-	}
+  /* mbrtowc states for partial UTF-8 characters have the high bit set;
+   * we use nonzero states without high bit for pending surrogates. */
+  if ((int)*pending > 0) {
+    if (pc16)
+      *pc16 = *pending;
+    *pending = 0;
+    return -3;
+  }
 
-	wchar_t wc;
-	size_t ret = mbrtowc(&wc, s, n, ps);
-	if (ret <= 4) {
-		if (wc >= 0x10000) {
-			*pending = (wc & 0x3ff) + 0xdc00;
-			wc = 0xd7c0 + (wc >> 10);
-		}
-		if (pc16) *pc16 = wc;
-	}
-	return ret;
+  wchar_t wc;
+  size_t ret = mbrtowc(&wc, s, n, ps);
+  if (ret <= 4) {
+    if (wc >= 0x10000) {
+      *pending = (wc & 0x3ff) + 0xdc00;
+      wc = 0xd7c0 + (wc >> 10);
+    }
+    if (pc16)
+      *pc16 = wc;
+  }
+  return ret;
 }
diff --git a/fusl/src/multibyte/mbrtoc32.c b/fusl/src/multibyte/mbrtoc32.c
index 9b6b236..e68380d 100644
--- a/fusl/src/multibyte/mbrtoc32.c
+++ b/fusl/src/multibyte/mbrtoc32.c
@@ -1,13 +1,18 @@
 #include <uchar.h>
 #include <wchar.h>
 
-size_t mbrtoc32(char32_t *restrict pc32, const char *restrict s, size_t n, mbstate_t *restrict ps)
-{
-	static unsigned internal_state;
-	if (!ps) ps = (void *)&internal_state;
-	if (!s) return mbrtoc32(0, "", 1, ps);
-	wchar_t wc;
-	size_t ret = mbrtowc(&wc, s, n, ps);
-	if (ret <= 4 && pc32) *pc32 = wc;
-	return ret;
+size_t mbrtoc32(char32_t* restrict pc32,
+                const char* restrict s,
+                size_t n,
+                mbstate_t* restrict ps) {
+  static unsigned internal_state;
+  if (!ps)
+    ps = (void*)&internal_state;
+  if (!s)
+    return mbrtoc32(0, "", 1, ps);
+  wchar_t wc;
+  size_t ret = mbrtowc(&wc, s, n, ps);
+  if (ret <= 4 && pc32)
+    *pc32 = wc;
+  return ret;
 }
diff --git a/fusl/src/multibyte/mbrtowc.c b/fusl/src/multibyte/mbrtowc.c
index ca7da70..8bd49ec 100644
--- a/fusl/src/multibyte/mbrtowc.c
+++ b/fusl/src/multibyte/mbrtowc.c
@@ -1,4 +1,4 @@
-/* 
+/*
  * This code was written by Rich Felker in 2010; no copyright is claimed.
  * This code is in the public domain. Attribution is appreciated but
  * unnecessary.
@@ -9,49 +9,62 @@
 #include <errno.h>
 #include "internal.h"
 
-size_t mbrtowc(wchar_t *restrict wc, const char *restrict src, size_t n, mbstate_t *restrict st)
-{
-	static unsigned internal_state;
-	unsigned c;
-	const unsigned char *s = (const void *)src;
-	const unsigned N = n;
-	wchar_t dummy;
+size_t mbrtowc(wchar_t* restrict wc,
+               const char* restrict src,
+               size_t n,
+               mbstate_t* restrict st) {
+  static unsigned internal_state;
+  unsigned c;
+  const unsigned char* s = (const void*)src;
+  const unsigned N = n;
+  wchar_t dummy;
 
-	if (!st) st = (void *)&internal_state;
-	c = *(unsigned *)st;
-	
-	if (!s) {
-		if (c) goto ilseq;
-		return 0;
-	} else if (!wc) wc = &dummy;
+  if (!st)
+    st = (void*)&internal_state;
+  c = *(unsigned*)st;
 
-	if (!n) return -2;
-	if (!c) {
-		if (*s < 0x80) return !!(*wc = *s);
-		if (MB_CUR_MAX==1) return (*wc = CODEUNIT(*s)), 1;
-		if (*s-SA > SB-SA) goto ilseq;
-		c = bittab[*s++-SA]; n--;
-	}
+  if (!s) {
+    if (c)
+      goto ilseq;
+    return 0;
+  } else if (!wc)
+    wc = &dummy;
 
-	if (n) {
-		if (OOB(c,*s)) goto ilseq;
-loop:
-		c = c<<6 | *s++-0x80; n--;
-		if (!(c&(1U<<31))) {
-			*(unsigned *)st = 0;
-			*wc = c;
-			return N-n;
-		}
-		if (n) {
-			if (*s-0x80u >= 0x40) goto ilseq;
-			goto loop;
-		}
-	}
+  if (!n)
+    return -2;
+  if (!c) {
+    if (*s < 0x80)
+      return !!(*wc = *s);
+    if (MB_CUR_MAX == 1)
+      return (*wc = CODEUNIT(*s)), 1;
+    if (*s - SA > SB - SA)
+      goto ilseq;
+    c = bittab[*s++ - SA];
+    n--;
+  }
 
-	*(unsigned *)st = c;
-	return -2;
+  if (n) {
+    if (OOB(c, *s))
+      goto ilseq;
+  loop:
+    c = c << 6 | *s++ - 0x80;
+    n--;
+    if (!(c & (1U << 31))) {
+      *(unsigned*)st = 0;
+      *wc = c;
+      return N - n;
+    }
+    if (n) {
+      if (*s - 0x80u >= 0x40)
+        goto ilseq;
+      goto loop;
+    }
+  }
+
+  *(unsigned*)st = c;
+  return -2;
 ilseq:
-	*(unsigned *)st = 0;
-	errno = EILSEQ;
-	return -1;
+  *(unsigned*)st = 0;
+  errno = EILSEQ;
+  return -1;
 }
diff --git a/fusl/src/multibyte/mbsinit.c b/fusl/src/multibyte/mbsinit.c
index e001d84..51cc386 100644
--- a/fusl/src/multibyte/mbsinit.c
+++ b/fusl/src/multibyte/mbsinit.c
@@ -1,4 +1,4 @@
-/* 
+/*
  * This code was written by Rich Felker in 2010; no copyright is claimed.
  * This code is in the public domain. Attribution is appreciated but
  * unnecessary.
@@ -6,7 +6,6 @@
 
 #include <wchar.h>
 
-int mbsinit(const mbstate_t *st)
-{
-	return !st || !*(unsigned *)st;
+int mbsinit(const mbstate_t* st) {
+  return !st || !*(unsigned*)st;
 }
diff --git a/fusl/src/multibyte/mbsnrtowcs.c b/fusl/src/multibyte/mbsnrtowcs.c
index 68b9960..169d319 100644
--- a/fusl/src/multibyte/mbsnrtowcs.c
+++ b/fusl/src/multibyte/mbsnrtowcs.c
@@ -1,4 +1,4 @@
-/* 
+/*
  * This code was written by Rich Felker in 2010; no copyright is claimed.
  * This code is in the public domain. Attribution is appreciated but
  * unnecessary.
@@ -6,54 +6,64 @@
 
 #include <wchar.h>
 
-size_t mbsnrtowcs(wchar_t *restrict wcs, const char **restrict src, size_t n, size_t wn, mbstate_t *restrict st)
-{
-	size_t l, cnt=0, n2;
-	wchar_t *ws, wbuf[256];
-	const char *s = *src;
+size_t mbsnrtowcs(wchar_t* restrict wcs,
+                  const char** restrict src,
+                  size_t n,
+                  size_t wn,
+                  mbstate_t* restrict st) {
+  size_t l, cnt = 0, n2;
+  wchar_t *ws, wbuf[256];
+  const char* s = *src;
 
-	if (!wcs) ws = wbuf, wn = sizeof wbuf / sizeof *wbuf;
-	else ws = wcs;
+  if (!wcs)
+    ws = wbuf, wn = sizeof wbuf / sizeof *wbuf;
+  else
+    ws = wcs;
 
-	/* making sure output buffer size is at most n/4 will ensure
-	 * that mbsrtowcs never reads more than n input bytes. thus
-	 * we can use mbsrtowcs as long as it's practical.. */
+  /* making sure output buffer size is at most n/4 will ensure
+   * that mbsrtowcs never reads more than n input bytes. thus
+   * we can use mbsrtowcs as long as it's practical.. */
 
-	while ( s && wn && ( (n2=n/4)>=wn || n2>32 ) ) {
-		if (n2>=wn) n2=wn;
-		n -= n2;
-		l = mbsrtowcs(ws, &s, n2, st);
-		if (!(l+1)) {
-			cnt = l;
-			wn = 0;
-			break;
-		}
-		if (ws != wbuf) {
-			ws += l;
-			wn -= l;
-		}
-		cnt += l;
-	}
-	if (s) while (wn && n) {
-		l = mbrtowc(ws, s, n, st);
-		if (l+2<=2) {
-			if (!(l+1)) {
-				cnt = l;
-				break;
-			}
-			if (!l) {
-				s = 0;
-				break;
-			}
-			/* have to roll back partial character */
-			*(unsigned *)st = 0;
-			break;
-		}
-		s += l; n -= l;
-		/* safe - this loop runs fewer than sizeof(wbuf)/8 times */
-		ws++; wn--;
-		cnt++;
-	}
-	if (wcs) *src = s;
-	return cnt;
+  while (s && wn && ((n2 = n / 4) >= wn || n2 > 32)) {
+    if (n2 >= wn)
+      n2 = wn;
+    n -= n2;
+    l = mbsrtowcs(ws, &s, n2, st);
+    if (!(l + 1)) {
+      cnt = l;
+      wn = 0;
+      break;
+    }
+    if (ws != wbuf) {
+      ws += l;
+      wn -= l;
+    }
+    cnt += l;
+  }
+  if (s)
+    while (wn && n) {
+      l = mbrtowc(ws, s, n, st);
+      if (l + 2 <= 2) {
+        if (!(l + 1)) {
+          cnt = l;
+          break;
+        }
+        if (!l) {
+          s = 0;
+          break;
+        }
+        /* have to roll back partial character */
+        *(unsigned*)st = 0;
+        break;
+      }
+      s += l;
+      n -= l;
+      /* safe - this loop runs fewer than sizeof(wbuf)/8 times */
+      ws++;
+      wn--;
+      cnt++;
+    }
+  if (wcs)
+    *src = s;
+  return cnt;
 }
diff --git a/fusl/src/multibyte/mbsrtowcs.c b/fusl/src/multibyte/mbsrtowcs.c
index e23083d..679ae31 100644
--- a/fusl/src/multibyte/mbsrtowcs.c
+++ b/fusl/src/multibyte/mbsrtowcs.c
@@ -1,4 +1,4 @@
-/* 
+/*
  * This code was written by Rich Felker in 2010; no copyright is claimed.
  * This code is in the public domain. Attribution is appreciated but
  * unnecessary.
@@ -11,110 +11,139 @@
 #include <stdlib.h>
 #include "internal.h"
 
-size_t mbsrtowcs(wchar_t *restrict ws, const char **restrict src, size_t wn, mbstate_t *restrict st)
-{
-	const unsigned char *s = (const void *)*src;
-	size_t wn0 = wn;
-	unsigned c = 0;
+size_t mbsrtowcs(wchar_t* restrict ws,
+                 const char** restrict src,
+                 size_t wn,
+                 mbstate_t* restrict st) {
+  const unsigned char* s = (const void*)*src;
+  size_t wn0 = wn;
+  unsigned c = 0;
 
-	if (st && (c = *(unsigned *)st)) {
-		if (ws) {
-			*(unsigned *)st = 0;
-			goto resume;
-		} else {
-			goto resume0;
-		}
-	}
+  if (st && (c = *(unsigned*)st)) {
+    if (ws) {
+      *(unsigned*)st = 0;
+      goto resume;
+    } else {
+      goto resume0;
+    }
+  }
 
-	if (MB_CUR_MAX==1) {
-		if (!ws) return strlen((const char *)s);
-		for (;;) {
-			if (!wn) {
-				*src = (const void *)s;
-				return wn0;
-			}
-			if (!*s) break;
-			c = *s++;
-			*ws++ = CODEUNIT(c);
-			wn--;
-		}
-		*ws = 0;
-		*src = 0;
-		return wn0-wn;
-	}
+  if (MB_CUR_MAX == 1) {
+    if (!ws)
+      return strlen((const char*)s);
+    for (;;) {
+      if (!wn) {
+        *src = (const void*)s;
+        return wn0;
+      }
+      if (!*s)
+        break;
+      c = *s++;
+      *ws++ = CODEUNIT(c);
+      wn--;
+    }
+    *ws = 0;
+    *src = 0;
+    return wn0 - wn;
+  }
 
-	if (!ws) for (;;) {
-		if (*s-1u < 0x7f && (uintptr_t)s%4 == 0) {
-			while (!(( *(uint32_t*)s | *(uint32_t*)s-0x01010101) & 0x80808080)) {
-				s += 4;
-				wn -= 4;
-			}
-		}
-		if (*s-1u < 0x7f) {
-			s++;
-			wn--;
-			continue;
-		}
-		if (*s-SA > SB-SA) break;
-		c = bittab[*s++-SA];
-resume0:
-		if (OOB(c,*s)) { s--; break; }
-		s++;
-		if (c&(1U<<25)) {
-			if (*s-0x80u >= 0x40) { s-=2; break; }
-			s++;
-			if (c&(1U<<19)) {
-				if (*s-0x80u >= 0x40) { s-=3; break; }
-				s++;
-			}
-		}
-		wn--;
-		c = 0;
-	} else for (;;) {
-		if (!wn) {
-			*src = (const void *)s;
-			return wn0;
-		}
-		if (*s-1u < 0x7f && (uintptr_t)s%4 == 0) {
-			while (wn>=5 && !(( *(uint32_t*)s | *(uint32_t*)s-0x01010101) & 0x80808080)) {
-				*ws++ = *s++;
-				*ws++ = *s++;
-				*ws++ = *s++;
-				*ws++ = *s++;
-				wn -= 4;
-			}
-		}
-		if (*s-1u < 0x7f) {
-			*ws++ = *s++;
-			wn--;
-			continue;
-		}
-		if (*s-SA > SB-SA) break;
-		c = bittab[*s++-SA];
-resume:
-		if (OOB(c,*s)) { s--; break; }
-		c = (c<<6) | *s++-0x80;
-		if (c&(1U<<31)) {
-			if (*s-0x80u >= 0x40) { s-=2; break; }
-			c = (c<<6) | *s++-0x80;
-			if (c&(1U<<31)) {
-				if (*s-0x80u >= 0x40) { s-=3; break; }
-				c = (c<<6) | *s++-0x80;
-			}
-		}
-		*ws++ = c;
-		wn--;
-		c = 0;
-	}
+  if (!ws)
+    for (;;) {
+      if (*s - 1u < 0x7f && (uintptr_t)s % 4 == 0) {
+        while (!((*(uint32_t*)s | *(uint32_t*)s - 0x01010101) & 0x80808080)) {
+          s += 4;
+          wn -= 4;
+        }
+      }
+      if (*s - 1u < 0x7f) {
+        s++;
+        wn--;
+        continue;
+      }
+      if (*s - SA > SB - SA)
+        break;
+      c = bittab[*s++ - SA];
+    resume0:
+      if (OOB(c, *s)) {
+        s--;
+        break;
+      }
+      s++;
+      if (c & (1U << 25)) {
+        if (*s - 0x80u >= 0x40) {
+          s -= 2;
+          break;
+        }
+        s++;
+        if (c & (1U << 19)) {
+          if (*s - 0x80u >= 0x40) {
+            s -= 3;
+            break;
+          }
+          s++;
+        }
+      }
+      wn--;
+      c = 0;
+    }
+  else
+    for (;;) {
+      if (!wn) {
+        *src = (const void*)s;
+        return wn0;
+      }
+      if (*s - 1u < 0x7f && (uintptr_t)s % 4 == 0) {
+        while (wn >= 5 &&
+               !((*(uint32_t*)s | *(uint32_t*)s - 0x01010101) & 0x80808080)) {
+          *ws++ = *s++;
+          *ws++ = *s++;
+          *ws++ = *s++;
+          *ws++ = *s++;
+          wn -= 4;
+        }
+      }
+      if (*s - 1u < 0x7f) {
+        *ws++ = *s++;
+        wn--;
+        continue;
+      }
+      if (*s - SA > SB - SA)
+        break;
+      c = bittab[*s++ - SA];
+    resume:
+      if (OOB(c, *s)) {
+        s--;
+        break;
+      }
+      c = (c << 6) | *s++ - 0x80;
+      if (c & (1U << 31)) {
+        if (*s - 0x80u >= 0x40) {
+          s -= 2;
+          break;
+        }
+        c = (c << 6) | *s++ - 0x80;
+        if (c & (1U << 31)) {
+          if (*s - 0x80u >= 0x40) {
+            s -= 3;
+            break;
+          }
+          c = (c << 6) | *s++ - 0x80;
+        }
+      }
+      *ws++ = c;
+      wn--;
+      c = 0;
+    }
 
-	if (!c && !*s) {
-		if (ws) {
-			*ws = 0;
-			*src = 0;
-		}
-		return wn0-wn;
-	}
-	errno = EILSEQ;
-	if (ws) *src = (const void *)s;
-	return -1;
+  if (!c && !*s) {
+    if (ws) {
+      *ws = 0;
+      *src = 0;
+    }
+    return wn0 - wn;
+  }
+  errno = EILSEQ;
+  if (ws)
+    *src = (const void*)s;
+  return -1;
 }
diff --git a/fusl/src/multibyte/mbstowcs.c b/fusl/src/multibyte/mbstowcs.c
index dc0d459..e208661 100644
--- a/fusl/src/multibyte/mbstowcs.c
+++ b/fusl/src/multibyte/mbstowcs.c
@@ -1,7 +1,6 @@
 #include <stdlib.h>
 #include <wchar.h>
 
-size_t mbstowcs(wchar_t *restrict ws, const char *restrict s, size_t wn)
-{
-	return mbsrtowcs(ws, (void*)&s, wn, 0);
+size_t mbstowcs(wchar_t* restrict ws, const char* restrict s, size_t wn) {
+  return mbsrtowcs(ws, (void*)&s, wn, 0);
 }
diff --git a/fusl/src/multibyte/mbtowc.c b/fusl/src/multibyte/mbtowc.c
index 71a9506..30fd78f 100644
--- a/fusl/src/multibyte/mbtowc.c
+++ b/fusl/src/multibyte/mbtowc.c
@@ -1,4 +1,4 @@
-/* 
+/*
  * This code was written by Rich Felker in 2010; no copyright is claimed.
  * This code is in the public domain. Attribution is appreciated but
  * unnecessary.
@@ -9,45 +9,54 @@
 #include <errno.h>
 #include "internal.h"
 
-int mbtowc(wchar_t *restrict wc, const char *restrict src, size_t n)
-{
-	unsigned c;
-	const unsigned char *s = (const void *)src;
-	wchar_t dummy;
+int mbtowc(wchar_t* restrict wc, const char* restrict src, size_t n) {
+  unsigned c;
+  const unsigned char* s = (const void*)src;
+  wchar_t dummy;
 
-	if (!s) return 0;
-	if (!n) goto ilseq;
-	if (!wc) wc = &dummy;
+  if (!s)
+    return 0;
+  if (!n)
+    goto ilseq;
+  if (!wc)
+    wc = &dummy;
 
-	if (*s < 0x80) return !!(*wc = *s);
-	if (MB_CUR_MAX==1) return (*wc = CODEUNIT(*s)), 1;
-	if (*s-SA > SB-SA) goto ilseq;
-	c = bittab[*s++-SA];
+  if (*s < 0x80)
+    return !!(*wc = *s);
+  if (MB_CUR_MAX == 1)
+    return (*wc = CODEUNIT(*s)), 1;
+  if (*s - SA > SB - SA)
+    goto ilseq;
+  c = bittab[*s++ - SA];
 
-	/* Avoid excessive checks against n: If shifting the state n-1
-	 * times does not clear the high bit, then the value of n is
-	 * insufficient to read a character */
-	if (n<4 && ((c<<(6*n-6)) & (1U<<31))) goto ilseq;
+  /* Avoid excessive checks against n: If shifting the state n-1
+   * times does not clear the high bit, then the value of n is
+   * insufficient to read a character */
+  if (n < 4 && ((c << (6 * n - 6)) & (1U << 31)))
+    goto ilseq;
 
-	if (OOB(c,*s)) goto ilseq;
-	c = c<<6 | *s++-0x80;
-	if (!(c&(1U<<31))) {
-		*wc = c;
-		return 2;
-	}
+  if (OOB(c, *s))
+    goto ilseq;
+  c = c << 6 | *s++ - 0x80;
+  if (!(c & (1U << 31))) {
+    *wc = c;
+    return 2;
+  }
 
-	if (*s-0x80u >= 0x40) goto ilseq;
-	c = c<<6 | *s++-0x80;
-	if (!(c&(1U<<31))) {
-		*wc = c;
-		return 3;
-	}
+  if (*s - 0x80u >= 0x40)
+    goto ilseq;
+  c = c << 6 | *s++ - 0x80;
+  if (!(c & (1U << 31))) {
+    *wc = c;
+    return 3;
+  }
 
-	if (*s-0x80u >= 0x40) goto ilseq;
-	*wc = c<<6 | *s++-0x80;
-	return 4;
+  if (*s - 0x80u >= 0x40)
+    goto ilseq;
+  *wc = c << 6 | *s++ - 0x80;
+  return 4;
 
 ilseq:
-	errno = EILSEQ;
-	return -1;
+  errno = EILSEQ;
+  return -1;
 }
diff --git a/fusl/src/multibyte/wcrtomb.c b/fusl/src/multibyte/wcrtomb.c
index ddc37a5..68c8f46 100644
--- a/fusl/src/multibyte/wcrtomb.c
+++ b/fusl/src/multibyte/wcrtomb.c
@@ -1,4 +1,4 @@
-/* 
+/*
  * This code was written by Rich Felker in 2010; no copyright is claimed.
  * This code is in the public domain. Attribution is appreciated but
  * unnecessary.
@@ -9,35 +9,35 @@
 #include <errno.h>
 #include "internal.h"
 
-size_t wcrtomb(char *restrict s, wchar_t wc, mbstate_t *restrict st)
-{
-	if (!s) return 1;
-	if ((unsigned)wc < 0x80) {
-		*s = wc;
-		return 1;
-	} else if (MB_CUR_MAX == 1) {
-		if (!IS_CODEUNIT(wc)) {
-			errno = EILSEQ;
-			return -1;
-		}
-		*s = wc;
-		return 1;
-	} else if ((unsigned)wc < 0x800) {
-		*s++ = 0xc0 | (wc>>6);
-		*s = 0x80 | (wc&0x3f);
-		return 2;
-	} else if ((unsigned)wc < 0xd800 || (unsigned)wc-0xe000 < 0x2000) {
-		*s++ = 0xe0 | (wc>>12);
-		*s++ = 0x80 | ((wc>>6)&0x3f);
-		*s = 0x80 | (wc&0x3f);
-		return 3;
-	} else if ((unsigned)wc-0x10000 < 0x100000) {
-		*s++ = 0xf0 | (wc>>18);
-		*s++ = 0x80 | ((wc>>12)&0x3f);
-		*s++ = 0x80 | ((wc>>6)&0x3f);
-		*s = 0x80 | (wc&0x3f);
-		return 4;
-	}
-	errno = EILSEQ;
-	return -1;
+size_t wcrtomb(char* restrict s, wchar_t wc, mbstate_t* restrict st) {
+  if (!s)
+    return 1;
+  if ((unsigned)wc < 0x80) {
+    *s = wc;
+    return 1;
+  } else if (MB_CUR_MAX == 1) {
+    if (!IS_CODEUNIT(wc)) {
+      errno = EILSEQ;
+      return -1;
+    }
+    *s = wc;
+    return 1;
+  } else if ((unsigned)wc < 0x800) {
+    *s++ = 0xc0 | (wc >> 6);
+    *s = 0x80 | (wc & 0x3f);
+    return 2;
+  } else if ((unsigned)wc < 0xd800 || (unsigned)wc - 0xe000 < 0x2000) {
+    *s++ = 0xe0 | (wc >> 12);
+    *s++ = 0x80 | ((wc >> 6) & 0x3f);
+    *s = 0x80 | (wc & 0x3f);
+    return 3;
+  } else if ((unsigned)wc - 0x10000 < 0x100000) {
+    *s++ = 0xf0 | (wc >> 18);
+    *s++ = 0x80 | ((wc >> 12) & 0x3f);
+    *s++ = 0x80 | ((wc >> 6) & 0x3f);
+    *s = 0x80 | (wc & 0x3f);
+    return 4;
+  }
+  errno = EILSEQ;
+  return -1;
 }
diff --git a/fusl/src/multibyte/wcsnrtombs.c b/fusl/src/multibyte/wcsnrtombs.c
index ee4a534..fa2d7e7 100644
--- a/fusl/src/multibyte/wcsnrtombs.c
+++ b/fusl/src/multibyte/wcsnrtombs.c
@@ -1,4 +1,4 @@
-/* 
+/*
  * This code was written by Rich Felker in 2010; no copyright is claimed.
  * This code is in the public domain. Attribution is appreciated but
  * unnecessary.
@@ -6,42 +6,54 @@
 
 #include <wchar.h>
 
-size_t wcsnrtombs(char *restrict dst, const wchar_t **restrict wcs, size_t wn, size_t n, mbstate_t *restrict st)
-{
-	size_t l, cnt=0, n2;
-	char *s, buf[256];
-	const wchar_t *ws = *wcs;
+size_t wcsnrtombs(char* restrict dst,
+                  const wchar_t** restrict wcs,
+                  size_t wn,
+                  size_t n,
+                  mbstate_t* restrict st) {
+  size_t l, cnt = 0, n2;
+  char *s, buf[256];
+  const wchar_t* ws = *wcs;
 
-	if (!dst) s = buf, n = sizeof buf;
-	else s = dst;
+  if (!dst)
+    s = buf, n = sizeof buf;
+  else
+    s = dst;
 
-	while ( ws && n && ( (n2=wn)>=n || n2>32 ) ) {
-		if (n2>=n) n2=n;
-		wn -= n2;
-		l = wcsrtombs(s, &ws, n2, 0);
-		if (!(l+1)) {
-			cnt = l;
-			n = 0;
-			break;
-		}
-		if (s != buf) {
-			s += l;
-			n -= l;
-		}
-		cnt += l;
-	}
-	if (ws) while (n && wn) {
-		l = wcrtomb(s, *ws, 0);
-		if ((l+1)<=1) {
-			if (!l) ws = 0;
-			else cnt = l;
-			break;
-		}
-		ws++; wn--;
-		/* safe - this loop runs fewer than sizeof(buf) times */
-		s+=l; n-=l;
-		cnt += l;
-	}
-	if (dst) *wcs = ws;
-	return cnt;
+  while (ws && n && ((n2 = wn) >= n || n2 > 32)) {
+    if (n2 >= n)
+      n2 = n;
+    wn -= n2;
+    l = wcsrtombs(s, &ws, n2, 0);
+    if (!(l + 1)) {
+      cnt = l;
+      n = 0;
+      break;
+    }
+    if (s != buf) {
+      s += l;
+      n -= l;
+    }
+    cnt += l;
+  }
+  if (ws)
+    while (n && wn) {
+      l = wcrtomb(s, *ws, 0);
+      if ((l + 1) <= 1) {
+        if (!l)
+          ws = 0;
+        else
+          cnt = l;
+        break;
+      }
+      ws++;
+      wn--;
+      /* safe - this loop runs fewer than sizeof(buf) times */
+      s += l;
+      n -= l;
+      cnt += l;
+    }
+  if (dst)
+    *wcs = ws;
+  return cnt;
 }
diff --git a/fusl/src/multibyte/wcsrtombs.c b/fusl/src/multibyte/wcsrtombs.c
index 30be415..97cd4f4 100644
--- a/fusl/src/multibyte/wcsrtombs.c
+++ b/fusl/src/multibyte/wcsrtombs.c
@@ -1,4 +1,4 @@
-/* 
+/*
  * This code was written by Rich Felker in 2010; no copyright is claimed.
  * This code is in the public domain. Attribution is appreciated but
  * unnecessary.
@@ -6,56 +6,63 @@
 
 #include <wchar.h>
 
-size_t wcsrtombs(char *restrict s, const wchar_t **restrict ws, size_t n, mbstate_t *restrict st)
-{
-	const wchar_t *ws2;
-	char buf[4];
-	size_t N = n, l;
-	if (!s) {
-		for (n=0, ws2=*ws; *ws2; ws2++) {
-			if (*ws2 >= 0x80u) {
-				l = wcrtomb(buf, *ws2, 0);
-				if (!(l+1)) return -1;
-				n += l;
-			} else n++;
-		}
-		return n;
-	}
-	while (n>=4) {
-		if (**ws-1u >= 0x7fu) {
-			if (!**ws) {
-				*s = 0;
-				*ws = 0;
-				return N-n;
-			}
-			l = wcrtomb(s, **ws, 0);
-			if (!(l+1)) return -1;
-			s += l;
-			n -= l;
-		} else {
-			*s++ = **ws;
-			n--;
-		}
-		(*ws)++;
-	}
-	while (n) {
-		if (**ws-1u >= 0x7fu) {
-			if (!**ws) {
-				*s = 0;
-				*ws = 0;
-				return N-n;
-			}
-			l = wcrtomb(buf, **ws, 0);
-			if (!(l+1)) return -1;
-			if (l>n) return N-n;
-			wcrtomb(s, **ws, 0);
-			s += l;
-			n -= l;
-		} else {
-			*s++ = **ws;
-			n--;
-		}
-		(*ws)++;
-	}
-	return N;
+size_t wcsrtombs(char* restrict s,
+                 const wchar_t** restrict ws,
+                 size_t n,
+                 mbstate_t* restrict st) {
+  const wchar_t* ws2;
+  char buf[4];
+  size_t N = n, l;
+  if (!s) {
+    for (n = 0, ws2 = *ws; *ws2; ws2++) {
+      if (*ws2 >= 0x80u) {
+        l = wcrtomb(buf, *ws2, 0);
+        if (!(l + 1))
+          return -1;
+        n += l;
+      } else
+        n++;
+    }
+    return n;
+  }
+  while (n >= 4) {
+    if (**ws - 1u >= 0x7fu) {
+      if (!**ws) {
+        *s = 0;
+        *ws = 0;
+        return N - n;
+      }
+      l = wcrtomb(s, **ws, 0);
+      if (!(l + 1))
+        return -1;
+      s += l;
+      n -= l;
+    } else {
+      *s++ = **ws;
+      n--;
+    }
+    (*ws)++;
+  }
+  while (n) {
+    if (**ws - 1u >= 0x7fu) {
+      if (!**ws) {
+        *s = 0;
+        *ws = 0;
+        return N - n;
+      }
+      l = wcrtomb(buf, **ws, 0);
+      if (!(l + 1))
+        return -1;
+      if (l > n)
+        return N - n;
+      wcrtomb(s, **ws, 0);
+      s += l;
+      n -= l;
+    } else {
+      *s++ = **ws;
+      n--;
+    }
+    (*ws)++;
+  }
+  return N;
 }
diff --git a/fusl/src/multibyte/wcstombs.c b/fusl/src/multibyte/wcstombs.c
index ab15287..3f438da 100644
--- a/fusl/src/multibyte/wcstombs.c
+++ b/fusl/src/multibyte/wcstombs.c
@@ -1,7 +1,6 @@
 #include <stdlib.h>
 #include <wchar.h>
 
-size_t wcstombs(char *restrict s, const wchar_t *restrict ws, size_t n)
-{
-	return wcsrtombs(s, &(const wchar_t *){ws}, n, 0);
+size_t wcstombs(char* restrict s, const wchar_t* restrict ws, size_t n) {
+  return wcsrtombs(s, &(const wchar_t*){ws}, n, 0);
 }
diff --git a/fusl/src/multibyte/wctob.c b/fusl/src/multibyte/wctob.c
index 4aeda6a..3be4b4c 100644
--- a/fusl/src/multibyte/wctob.c
+++ b/fusl/src/multibyte/wctob.c
@@ -2,9 +2,10 @@
 #include <stdlib.h>
 #include "internal.h"
 
-int wctob(wint_t c)
-{
-	if (c < 128U) return c;
-	if (MB_CUR_MAX==1 && IS_CODEUNIT(c)) return (unsigned char)c;
-	return EOF;
+int wctob(wint_t c) {
+  if (c < 128U)
+    return c;
+  if (MB_CUR_MAX == 1 && IS_CODEUNIT(c))
+    return (unsigned char)c;
+  return EOF;
 }
diff --git a/fusl/src/multibyte/wctomb.c b/fusl/src/multibyte/wctomb.c
index de7ed84..786bd22 100644
--- a/fusl/src/multibyte/wctomb.c
+++ b/fusl/src/multibyte/wctomb.c
@@ -1,4 +1,4 @@
-/* 
+/*
  * This code was written by Rich Felker in 2010; no copyright is claimed.
  * This code is in the public domain. Attribution is appreciated but
  * unnecessary.
@@ -7,8 +7,8 @@
 #include <stdlib.h>
 #include <wchar.h>
 
-int wctomb(char *s, wchar_t wc)
-{
-	if (!s) return 0;
-	return wcrtomb(s, wc, 0);
+int wctomb(char* s, wchar_t wc) {
+  if (!s)
+    return 0;
+  return wcrtomb(s, wc, 0);
 }
diff --git a/fusl/src/network/accept.c b/fusl/src/network/accept.c
index 521e9ef..4a25af3 100644
--- a/fusl/src/network/accept.c
+++ b/fusl/src/network/accept.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int accept(int fd, struct sockaddr *restrict addr, socklen_t *restrict len)
-{
-	return socketcall_cp(accept, fd, addr, len, 0, 0, 0);
+int accept(int fd, struct sockaddr* restrict addr, socklen_t* restrict len) {
+  return socketcall_cp(accept, fd, addr, len, 0, 0, 0);
 }
diff --git a/fusl/src/network/accept4.c b/fusl/src/network/accept4.c
index 285d858..11f627c 100644
--- a/fusl/src/network/accept4.c
+++ b/fusl/src/network/accept4.c
@@ -5,16 +5,21 @@
 #include "syscall.h"
 #include "libc.h"
 
-int accept4(int fd, struct sockaddr *restrict addr, socklen_t *restrict len, int flg)
-{
-	if (!flg) return accept(fd, addr, len);
-	int ret = socketcall_cp(accept4, fd, addr, len, flg, 0, 0);
-	if (ret>=0 || (errno != ENOSYS && errno != EINVAL)) return ret;
-	ret = accept(fd, addr, len);
-	if (ret<0) return ret;
-	if (flg & SOCK_CLOEXEC)
-		__syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC);
-	if (flg & SOCK_NONBLOCK)
-		__syscall(SYS_fcntl, ret, F_SETFL, O_NONBLOCK);
-	return ret;
+int accept4(int fd,
+            struct sockaddr* restrict addr,
+            socklen_t* restrict len,
+            int flg) {
+  if (!flg)
+    return accept(fd, addr, len);
+  int ret = socketcall_cp(accept4, fd, addr, len, flg, 0, 0);
+  if (ret >= 0 || (errno != ENOSYS && errno != EINVAL))
+    return ret;
+  ret = accept(fd, addr, len);
+  if (ret < 0)
+    return ret;
+  if (flg & SOCK_CLOEXEC)
+    __syscall(SYS_fcntl, ret, F_SETFD, FD_CLOEXEC);
+  if (flg & SOCK_NONBLOCK)
+    __syscall(SYS_fcntl, ret, F_SETFL, O_NONBLOCK);
+  return ret;
 }
diff --git a/fusl/src/network/bind.c b/fusl/src/network/bind.c
index 07bb669a..624bf13 100644
--- a/fusl/src/network/bind.c
+++ b/fusl/src/network/bind.c
@@ -1,7 +1,6 @@
 #include <sys/socket.h>
 #include "syscall.h"
 
-int bind(int fd, const struct sockaddr *addr, socklen_t len)
-{
-	return socketcall(bind, fd, addr, len, 0, 0, 0);
+int bind(int fd, const struct sockaddr* addr, socklen_t len) {
+  return socketcall(bind, fd, addr, len, 0, 0, 0);
 }
diff --git a/fusl/src/network/connect.c b/fusl/src/network/connect.c
index 57f01a1..170a120 100644
--- a/fusl/src/network/connect.c
+++ b/fusl/src/network/connect.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int connect(int fd, const struct sockaddr *addr, socklen_t len)
-{
-	return socketcall_cp(connect, fd, addr, len, 0, 0, 0);
+int connect(int fd, const struct sockaddr* addr, socklen_t len) {
+  return socketcall_cp(connect, fd, addr, len, 0, 0, 0);
 }
diff --git a/fusl/src/network/dn_comp.c b/fusl/src/network/dn_comp.c
index a17d434..20bd230 100644
--- a/fusl/src/network/dn_comp.c
+++ b/fusl/src/network/dn_comp.c
@@ -5,106 +5,127 @@
 /* RFC 1035 message compression */
 
 /* label start offsets of a compressed domain name s */
-static int getoffs(short *offs, const unsigned char *base, const unsigned char *s)
-{
-	int i=0;
-	for (;;) {
-		while (*s & 0xc0) {
-			if ((*s & 0xc0) != 0xc0) return 0;
-			s = base + ((s[0]&0x3f)<<8 | s[1]);
-		}
-		if (!*s) return i;
-		if (s-base >= 0x4000) return 0;
-		offs[i++] = s-base;
-		s += *s + 1;
-	}
+static int getoffs(short* offs,
+                   const unsigned char* base,
+                   const unsigned char* s) {
+  int i = 0;
+  for (;;) {
+    while (*s & 0xc0) {
+      if ((*s & 0xc0) != 0xc0)
+        return 0;
+      s = base + ((s[0] & 0x3f) << 8 | s[1]);
+    }
+    if (!*s)
+      return i;
+    if (s - base >= 0x4000)
+      return 0;
+    offs[i++] = s - base;
+    s += *s + 1;
+  }
 }
 
 /* label lengths of an ascii domain name s */
-static int getlens(unsigned char *lens, const char *s, int l)
-{
-	int i=0,j=0,k=0;
-	for (;;) {
-		for (; j<l && s[j]!='.'; j++);
-		if (j-k-1u > 62) return 0;
-		lens[i++] = j-k;
-		if (j==l) return i;
-		k = ++j;
-	}
+static int getlens(unsigned char* lens, const char* s, int l) {
+  int i = 0, j = 0, k = 0;
+  for (;;) {
+    for (; j < l && s[j] != '.'; j++)
+      ;
+    if (j - k - 1u > 62)
+      return 0;
+    lens[i++] = j - k;
+    if (j == l)
+      return i;
+    k = ++j;
+  }
 }
 
 /* longest suffix match of an ascii domain with a compressed domain name dn */
-static int match(int *offset, const unsigned char *base, const unsigned char *dn,
-	const char *end, const unsigned char *lens, int nlen)
-{
-	int l, o, m=0;
-	short offs[128];
-	int noff = getoffs(offs, base, dn);
-	if (!noff) return 0;
-	for (;;) {
-		l = lens[--nlen];
-		o = offs[--noff];
-		end -= l;
-		if (l != base[o] || memcmp(base+o+1, end, l))
-			return m;
-		*offset = o;
-		m += l;
-		if (nlen) m++;
-		if (!nlen || !noff) return m;
-		end--;
-	}
+static int match(int* offset,
+                 const unsigned char* base,
+                 const unsigned char* dn,
+                 const char* end,
+                 const unsigned char* lens,
+                 int nlen) {
+  int l, o, m = 0;
+  short offs[128];
+  int noff = getoffs(offs, base, dn);
+  if (!noff)
+    return 0;
+  for (;;) {
+    l = lens[--nlen];
+    o = offs[--noff];
+    end -= l;
+    if (l != base[o] || memcmp(base + o + 1, end, l))
+      return m;
+    *offset = o;
+    m += l;
+    if (nlen)
+      m++;
+    if (!nlen || !noff)
+      return m;
+    end--;
+  }
 }
 
-int __dn_comp(const char *src, unsigned char *dst, int space, unsigned char **dnptrs, unsigned char **lastdnptr)
-{
-	int i, j, n, m=0, offset, bestlen=0, bestoff;
-	unsigned char lens[127];
-	unsigned char **p;
-	const char *end;
-	size_t l = strnlen(src, 255);
-	if (l && src[l-1] == '.') l--;
-	if (l>253 || space<=0) return -1;
-	if (!l) {
-		*dst = 0;
-		return 1;
-	}
-	end = src+l;
-	n = getlens(lens, src, l);
-	if (!n) return -1;
+int __dn_comp(const char* src,
+              unsigned char* dst,
+              int space,
+              unsigned char** dnptrs,
+              unsigned char** lastdnptr) {
+  int i, j, n, m = 0, offset, bestlen = 0, bestoff;
+  unsigned char lens[127];
+  unsigned char** p;
+  const char* end;
+  size_t l = strnlen(src, 255);
+  if (l && src[l - 1] == '.')
+    l--;
+  if (l > 253 || space <= 0)
+    return -1;
+  if (!l) {
+    *dst = 0;
+    return 1;
+  }
+  end = src + l;
+  n = getlens(lens, src, l);
+  if (!n)
+    return -1;
 
-	p = dnptrs;
-	if (p && *p) for (p++; *p; p++) {
-		m = match(&offset, *dnptrs, *p, end, lens, n);
-		if (m > bestlen) {
-			bestlen = m;
-			bestoff = offset;
-			if (m == l)
-				break;
-		}
-	}
+  p = dnptrs;
+  if (p && *p)
+    for (p++; *p; p++) {
+      m = match(&offset, *dnptrs, *p, end, lens, n);
+      if (m > bestlen) {
+        bestlen = m;
+        bestoff = offset;
+        if (m == l)
+          break;
+      }
+    }
 
-	/* encode unmatched part */
-	if (space < l-bestlen+2+(bestlen-1 < l-1)) return -1;
-	memcpy(dst+1, src, l-bestlen);
-	for (i=j=0; i<l-bestlen; i+=lens[j++]+1)
-		dst[i] = lens[j];
+  /* encode unmatched part */
+  if (space < l - bestlen + 2 + (bestlen - 1 < l - 1))
+    return -1;
+  memcpy(dst + 1, src, l - bestlen);
+  for (i = j = 0; i < l - bestlen; i += lens[j++] + 1)
+    dst[i] = lens[j];
 
-	/* add tail */
-	if (bestlen) {
-		dst[i++] = 0xc0 | bestoff>>8;
-		dst[i++] = bestoff;
-	} else
-		dst[i++] = 0;
+  /* add tail */
+  if (bestlen) {
+    dst[i++] = 0xc0 | bestoff >> 8;
+    dst[i++] = bestoff;
+  } else
+    dst[i++] = 0;
 
-	/* save dst pointer */
-	if (i>2 && lastdnptr && dnptrs && *dnptrs) {
-		while (*p) p++;
-		if (p+1 < lastdnptr) {
-			*p++ = dst;
-			*p=0;
-		}
-	}
-	return i;
+  /* save dst pointer */
+  if (i > 2 && lastdnptr && dnptrs && *dnptrs) {
+    while (*p)
+      p++;
+    if (p + 1 < lastdnptr) {
+      *p++ = dst;
+      *p = 0;
+    }
+  }
+  return i;
 }
 
 weak_alias(__dn_comp, dn_comp);
diff --git a/fusl/src/network/dn_expand.c b/fusl/src/network/dn_expand.c
index d9b3393..68da088 100644
--- a/fusl/src/network/dn_expand.c
+++ b/fusl/src/network/dn_expand.c
@@ -1,34 +1,45 @@
 #include <resolv.h>
 #include "libc.h"
 
-int __dn_expand(const unsigned char *base, const unsigned char *end, const unsigned char *src, char *dest, int space)
-{
-	const unsigned char *p = src;
-	char *dend, *dbegin = dest;
-	int len = -1, i, j;
-	if (p==end || space <= 0) return -1;
-	dend = dest + (space > 254 ? 254 : space);
-	/* detect reference loop using an iteration counter */
-	for (i=0; i < end-base; i+=2) {
-		/* loop invariants: p<end, dest<dend */
-		if (*p & 0xc0) {
-			if (p+1==end) return -1;
-			j = ((p[0] & 0x3f) << 8) | p[1];
-			if (len < 0) len = p+2-src;
-			if (j >= end-base) return -1;
-			p = base+j;
-		} else if (*p) {
-			if (dest != dbegin) *dest++ = '.';
-			j = *p++;
-			if (j >= end-p || j >= dend-dest) return -1;
-			while (j--) *dest++ = *p++;
-		} else {
-			*dest = 0;
-			if (len < 0) len = p+1-src;
-			return len;
-		}
-	}
-	return -1;
+int __dn_expand(const unsigned char* base,
+                const unsigned char* end,
+                const unsigned char* src,
+                char* dest,
+                int space) {
+  const unsigned char* p = src;
+  char *dend, *dbegin = dest;
+  int len = -1, i, j;
+  if (p == end || space <= 0)
+    return -1;
+  dend = dest + (space > 254 ? 254 : space);
+  /* detect reference loop using an iteration counter */
+  for (i = 0; i < end - base; i += 2) {
+    /* loop invariants: p<end, dest<dend */
+    if (*p & 0xc0) {
+      if (p + 1 == end)
+        return -1;
+      j = ((p[0] & 0x3f) << 8) | p[1];
+      if (len < 0)
+        len = p + 2 - src;
+      if (j >= end - base)
+        return -1;
+      p = base + j;
+    } else if (*p) {
+      if (dest != dbegin)
+        *dest++ = '.';
+      j = *p++;
+      if (j >= end - p || j >= dend - dest)
+        return -1;
+      while (j--)
+        *dest++ = *p++;
+    } else {
+      *dest = 0;
+      if (len < 0)
+        len = p + 1 - src;
+      return len;
+    }
+  }
+  return -1;
 }
 
 weak_alias(__dn_expand, dn_expand);
diff --git a/fusl/src/network/dn_skipname.c b/fusl/src/network/dn_skipname.c
index 86999fc..cd046b0 100644
--- a/fusl/src/network/dn_skipname.c
+++ b/fusl/src/network/dn_skipname.c
@@ -1,13 +1,15 @@
 #include <resolv.h>
 
-int dn_skipname(const unsigned char *s, const unsigned char *end)
-{
-	const unsigned char *p;
-	for (p=s; p<end; p++)
-		if (!*p) return p-s+1;
-		else if (*p>=192) {
-			if (p+1<end) return p-s+2;
-			else break;
-		}
-	return -1;
+int dn_skipname(const unsigned char* s, const unsigned char* end) {
+  const unsigned char* p;
+  for (p = s; p < end; p++)
+    if (!*p)
+      return p - s + 1;
+    else if (*p >= 192) {
+      if (p + 1 < end)
+        return p - s + 2;
+      else
+        break;
+    }
+  return -1;
 }
diff --git a/fusl/src/network/dns_parse.c b/fusl/src/network/dns_parse.c
index 0c7a601..da86899 100644
--- a/fusl/src/network/dns_parse.c
+++ b/fusl/src/network/dns_parse.c
@@ -1,32 +1,41 @@
 #include <string.h>
 
-int __dns_parse(const unsigned char *r, int rlen, int (*callback)(void *, int, const void *, int, const void *), void *ctx)
-{
-	int qdcount, ancount;
-	const unsigned char *p;
-	int len;
+int __dns_parse(const unsigned char* r,
+                int rlen,
+                int (*callback)(void*, int, const void*, int, const void*),
+                void* ctx) {
+  int qdcount, ancount;
+  const unsigned char* p;
+  int len;
 
-	if (rlen<12) return -1;
-	if ((r[3]&15)) return 0;
-	p = r+12;
-	qdcount = r[4]*256 + r[5];
-	ancount = r[6]*256 + r[7];
-	if (qdcount+ancount > 64) return -1;
-	while (qdcount--) {
-		while (p-r < rlen && *p-1U < 127) p++;
-		if (*p>193 || (*p==193 && p[1]>254) || p>r+rlen-6)
-			return -1;
-		p += 5 + !!*p;
-	}
-	while (ancount--) {
-		while (p-r < rlen && *p-1U < 127) p++;
-		if (*p>193 || (*p==193 && p[1]>254) || p>r+rlen-6)
-			return -1;
-		p += 1 + !!*p;
-		len = p[8]*256 + p[9];
-		if (p+len > r+rlen) return -1;
-		if (callback(ctx, p[1], p+10, len, r) < 0) return -1;
-		p += 10 + len;
-	}
-	return 0;
+  if (rlen < 12)
+    return -1;
+  if ((r[3] & 15))
+    return 0;
+  p = r + 12;
+  qdcount = r[4] * 256 + r[5];
+  ancount = r[6] * 256 + r[7];
+  if (qdcount + ancount > 64)
+    return -1;
+  while (qdcount--) {
+    while (p - r < rlen && *p - 1U < 127)
+      p++;
+    if (*p > 193 || (*p == 193 && p[1] > 254) || p > r + rlen - 6)
+      return -1;
+    p += 5 + !!*p;
+  }
+  while (ancount--) {
+    while (p - r < rlen && *p - 1U < 127)
+      p++;
+    if (*p > 193 || (*p == 193 && p[1] > 254) || p > r + rlen - 6)
+      return -1;
+    p += 1 + !!*p;
+    len = p[8] * 256 + p[9];
+    if (p + len > r + rlen)
+      return -1;
+    if (callback(ctx, p[1], p + 10, len, r) < 0)
+      return -1;
+    p += 10 + len;
+  }
+  return 0;
 }
diff --git a/fusl/src/network/ent.c b/fusl/src/network/ent.c
index ececdc4..27e08ab 100644
--- a/fusl/src/network/ent.c
+++ b/fusl/src/network/ent.c
@@ -1,17 +1,12 @@
 #include "libc.h"
 
-void sethostent(int x)
-{
+void sethostent(int x) {}
+
+void* gethostent() {
+  return 0;
 }
 
-void *gethostent()
-{
-	return 0;
-}
-
-void endhostent(void)
-{
-}
+void endhostent(void) {}
 
 weak_alias(sethostent, setnetent);
 weak_alias(gethostent, getnetent);
diff --git a/fusl/src/network/ether.c b/fusl/src/network/ether.c
index 4304a97..8fd674d 100644
--- a/fusl/src/network/ether.c
+++ b/fusl/src/network/ether.c
@@ -2,57 +2,56 @@
 #include <netinet/ether.h>
 #include <stdio.h>
 
-struct ether_addr *ether_aton_r (const char *x, struct ether_addr *p_a)
-{
-	struct ether_addr a;
-	char *y;
-	for (int ii = 0; ii < 6; ii++) {
-		unsigned long int n;
-		if (ii != 0) {
-			if (x[0] != ':') return 0; /* bad format */
-			else x++;
-		}
-		n = strtoul (x, &y, 16);
-		x = y;
-		if (n > 0xFF) return 0; /* bad byte */
-		a.ether_addr_octet[ii] = n;
-	}
-	if (x[0] != 0) return 0; /* bad format */
-	*p_a = a;
-	return p_a;
+struct ether_addr* ether_aton_r(const char* x, struct ether_addr* p_a) {
+  struct ether_addr a;
+  char* y;
+  for (int ii = 0; ii < 6; ii++) {
+    unsigned long int n;
+    if (ii != 0) {
+      if (x[0] != ':')
+        return 0; /* bad format */
+      else
+        x++;
+    }
+    n = strtoul(x, &y, 16);
+    x = y;
+    if (n > 0xFF)
+      return 0; /* bad byte */
+    a.ether_addr_octet[ii] = n;
+  }
+  if (x[0] != 0)
+    return 0; /* bad format */
+  *p_a = a;
+  return p_a;
 }
 
-struct ether_addr *ether_aton (const char *x)
-{
-	static struct ether_addr a;
-	return ether_aton_r (x, &a);
+struct ether_addr* ether_aton(const char* x) {
+  static struct ether_addr a;
+  return ether_aton_r(x, &a);
 }
 
-char *ether_ntoa_r (const struct ether_addr *p_a, char *x) {
-	char *y;
-	y = x;
-	for (int ii = 0; ii < 6; ii++) {
-		x += sprintf (x, ii == 0 ? "%.2X" : ":%.2X", p_a->ether_addr_octet[ii]);
-	}
-	return y;
+char* ether_ntoa_r(const struct ether_addr* p_a, char* x) {
+  char* y;
+  y = x;
+  for (int ii = 0; ii < 6; ii++) {
+    x += sprintf(x, ii == 0 ? "%.2X" : ":%.2X", p_a->ether_addr_octet[ii]);
+  }
+  return y;
 }
 
-char *ether_ntoa (const struct ether_addr *p_a) {
-	static char x[18];
-	return ether_ntoa_r (p_a, x);
+char* ether_ntoa(const struct ether_addr* p_a) {
+  static char x[18];
+  return ether_ntoa_r(p_a, x);
 }
 
-int ether_line(const char *l, struct ether_addr *e, char *hostname)
-{
-	return -1;
+int ether_line(const char* l, struct ether_addr* e, char* hostname) {
+  return -1;
 }
 
-int ether_ntohost(char *hostname, const struct ether_addr *e)
-{
-	return -1;
+int ether_ntohost(char* hostname, const struct ether_addr* e) {
+  return -1;
 }
 
-int ether_hostton(const char *hostname, struct ether_addr *e)
-{
-	return -1;
+int ether_hostton(const char* hostname, struct ether_addr* e) {
+  return -1;
 }
diff --git a/fusl/src/network/freeaddrinfo.c b/fusl/src/network/freeaddrinfo.c
index df3798a..f32b003 100644
--- a/fusl/src/network/freeaddrinfo.c
+++ b/fusl/src/network/freeaddrinfo.c
@@ -1,7 +1,6 @@
 #include <stdlib.h>
 #include <netdb.h>
 
-void freeaddrinfo(struct addrinfo *p)
-{
-	free(p);
+void freeaddrinfo(struct addrinfo* p) {
+  free(p);
 }
diff --git a/fusl/src/network/gai_strerror.c b/fusl/src/network/gai_strerror.c
index 9596580..e367e0c 100644
--- a/fusl/src/network/gai_strerror.c
+++ b/fusl/src/network/gai_strerror.c
@@ -2,24 +2,26 @@
 #include "locale_impl.h"
 
 static const char msgs[] =
-	"Invalid flags\0"
-	"Name does not resolve\0"
-	"Try again\0"
-	"Non-recoverable error\0"
-	"Unknown error\0"
-	"Unrecognized address family or invalid length\0"
-	"Unrecognized socket type\0"
-	"Unrecognized service\0"
-	"Unknown error\0"
-	"Out of memory\0"
-	"System error\0"
-	"Overflow\0"
-	"\0Unknown error";
+    "Invalid flags\0"
+    "Name does not resolve\0"
+    "Try again\0"
+    "Non-recoverable error\0"
+    "Unknown error\0"
+    "Unrecognized address family or invalid length\0"
+    "Unrecognized socket type\0"
+    "Unrecognized service\0"
+    "Unknown error\0"
+    "Out of memory\0"
+    "System error\0"
+    "Overflow\0"
+    "\0Unknown error";
 
-const char *gai_strerror(int ecode)
-{
-	const char *s;
-	for (s=msgs, ecode++; ecode && *s; ecode++, s++) for (; *s; s++);
-	if (!*s) s++;
-	return LCTRANS_CUR(s);
+const char* gai_strerror(int ecode) {
+  const char* s;
+  for (s = msgs, ecode++; ecode && *s; ecode++, s++)
+    for (; *s; s++)
+      ;
+  if (!*s)
+    s++;
+  return LCTRANS_CUR(s);
 }
diff --git a/fusl/src/network/getaddrinfo.c b/fusl/src/network/getaddrinfo.c
index b9439f7..7e9dab5 100644
--- a/fusl/src/network/getaddrinfo.c
+++ b/fusl/src/network/getaddrinfo.c
@@ -5,88 +5,95 @@
 #include <string.h>
 #include "lookup.h"
 
-int getaddrinfo(const char *restrict host, const char *restrict serv, const struct addrinfo *restrict hint, struct addrinfo **restrict res)
-{
-	struct service ports[MAXSERVS];
-	struct address addrs[MAXADDRS];
-	char canon[256], *outcanon;
-	int nservs, naddrs, nais, canon_len, i, j, k;
-	int family = AF_UNSPEC, flags = 0, proto = 0, socktype = 0;
-	struct aibuf {
-		struct addrinfo ai;
-		union sa {
-			struct sockaddr_in sin;
-			struct sockaddr_in6 sin6;
-		} sa;
-	} *out;
+int getaddrinfo(const char* restrict host,
+                const char* restrict serv,
+                const struct addrinfo* restrict hint,
+                struct addrinfo** restrict res) {
+  struct service ports[MAXSERVS];
+  struct address addrs[MAXADDRS];
+  char canon[256], *outcanon;
+  int nservs, naddrs, nais, canon_len, i, j, k;
+  int family = AF_UNSPEC, flags = 0, proto = 0, socktype = 0;
+  struct aibuf {
+    struct addrinfo ai;
+    union sa {
+      struct sockaddr_in sin;
+      struct sockaddr_in6 sin6;
+    } sa;
+  } * out;
 
-	if (!host && !serv) return EAI_NONAME;
+  if (!host && !serv)
+    return EAI_NONAME;
 
-	if (hint) {
-		family = hint->ai_family;
-		flags = hint->ai_flags;
-		proto = hint->ai_protocol;
-		socktype = hint->ai_socktype;
+  if (hint) {
+    family = hint->ai_family;
+    flags = hint->ai_flags;
+    proto = hint->ai_protocol;
+    socktype = hint->ai_socktype;
 
-		const int mask = AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST |
-			AI_V4MAPPED | AI_ALL | AI_ADDRCONFIG | AI_NUMERICSERV;
-		if ((flags & mask) != flags)
-			return EAI_BADFLAGS;
+    const int mask = AI_PASSIVE | AI_CANONNAME | AI_NUMERICHOST | AI_V4MAPPED |
+                     AI_ALL | AI_ADDRCONFIG | AI_NUMERICSERV;
+    if ((flags & mask) != flags)
+      return EAI_BADFLAGS;
 
-		switch (family) {
-		case AF_INET:
-		case AF_INET6:
-		case AF_UNSPEC:
-			break;
-		default:
-			return EAI_FAMILY;
-		}
-	}
+    switch (family) {
+      case AF_INET:
+      case AF_INET6:
+      case AF_UNSPEC:
+        break;
+      default:
+        return EAI_FAMILY;
+    }
+  }
 
-	nservs = __lookup_serv(ports, serv, proto, socktype, flags);
-	if (nservs < 0) return nservs;
+  nservs = __lookup_serv(ports, serv, proto, socktype, flags);
+  if (nservs < 0)
+    return nservs;
 
-	naddrs = __lookup_name(addrs, canon, host, family, flags);
-	if (naddrs < 0) return naddrs;
+  naddrs = __lookup_name(addrs, canon, host, family, flags);
+  if (naddrs < 0)
+    return naddrs;
 
-	nais = nservs * naddrs;
-	canon_len = strlen(canon);
-	out = calloc(1, nais * sizeof(*out) + canon_len + 1);
-	if (!out) return EAI_MEMORY;
+  nais = nservs * naddrs;
+  canon_len = strlen(canon);
+  out = calloc(1, nais * sizeof(*out) + canon_len + 1);
+  if (!out)
+    return EAI_MEMORY;
 
-	if (canon_len) {
-		outcanon = (void *)&out[nais];
-		memcpy(outcanon, canon, canon_len+1);
-	} else {
-		outcanon = 0;
-	}
+  if (canon_len) {
+    outcanon = (void*)&out[nais];
+    memcpy(outcanon, canon, canon_len + 1);
+  } else {
+    outcanon = 0;
+  }
 
-	for (k=i=0; i<naddrs; i++) for (j=0; j<nservs; j++, k++) {
-		out[k].ai = (struct addrinfo){
-			.ai_family = addrs[i].family,
-			.ai_socktype = ports[j].socktype,
-			.ai_protocol = ports[j].proto,
-			.ai_addrlen = addrs[i].family == AF_INET
-				? sizeof(struct sockaddr_in)
-				: sizeof(struct sockaddr_in6),
-			.ai_addr = (void *)&out[k].sa,
-			.ai_canonname = outcanon,
-			.ai_next = &out[k+1].ai };
-		switch (addrs[i].family) {
-		case AF_INET:
-			out[k].sa.sin.sin_family = AF_INET;
-			out[k].sa.sin.sin_port = htons(ports[j].port);
-			memcpy(&out[k].sa.sin.sin_addr, &addrs[i].addr, 4);
-			break;
-		case AF_INET6:
-			out[k].sa.sin6.sin6_family = AF_INET6;
-			out[k].sa.sin6.sin6_port = htons(ports[j].port);
-			out[k].sa.sin6.sin6_scope_id = addrs[i].scopeid;
-			memcpy(&out[k].sa.sin6.sin6_addr, &addrs[i].addr, 16);
-			break;			
-		}
-	}
-	out[nais-1].ai.ai_next = 0;
-	*res = &out->ai;
-	return 0;
+  for (k = i = 0; i < naddrs; i++)
+    for (j = 0; j < nservs; j++, k++) {
+      out[k].ai =
+          (struct addrinfo){.ai_family = addrs[i].family,
+                            .ai_socktype = ports[j].socktype,
+                            .ai_protocol = ports[j].proto,
+                            .ai_addrlen = addrs[i].family == AF_INET
+                                              ? sizeof(struct sockaddr_in)
+                                              : sizeof(struct sockaddr_in6),
+                            .ai_addr = (void*)&out[k].sa,
+                            .ai_canonname = outcanon,
+                            .ai_next = &out[k + 1].ai};
+      switch (addrs[i].family) {
+        case AF_INET:
+          out[k].sa.sin.sin_family = AF_INET;
+          out[k].sa.sin.sin_port = htons(ports[j].port);
+          memcpy(&out[k].sa.sin.sin_addr, &addrs[i].addr, 4);
+          break;
+        case AF_INET6:
+          out[k].sa.sin6.sin6_family = AF_INET6;
+          out[k].sa.sin6.sin6_port = htons(ports[j].port);
+          out[k].sa.sin6.sin6_scope_id = addrs[i].scopeid;
+          memcpy(&out[k].sa.sin6.sin6_addr, &addrs[i].addr, 16);
+          break;
+      }
+    }
+  out[nais - 1].ai.ai_next = 0;
+  *res = &out->ai;
+  return 0;
 }
diff --git a/fusl/src/network/gethostbyaddr.c b/fusl/src/network/gethostbyaddr.c
index 598e224..4836fbf 100644
--- a/fusl/src/network/gethostbyaddr.c
+++ b/fusl/src/network/gethostbyaddr.c
@@ -4,21 +4,20 @@
 #include <errno.h>
 #include <stdlib.h>
 
-struct hostent *gethostbyaddr(const void *a, socklen_t l, int af)
-{
-	static struct hostent *h;
-	size_t size = 63;
-	struct hostent *res;
-	int err;
-	do {
-		free(h);
-		h = malloc(size+=size+1);
-		if (!h) {
-			h_errno = NO_RECOVERY;
-			return 0;
-		}
-		err = gethostbyaddr_r(a, l, af, h,
-			(void *)(h+1), size-sizeof *h, &res, &h_errno);
-	} while (err == ERANGE);
-	return err ? 0 : h;
+struct hostent* gethostbyaddr(const void* a, socklen_t l, int af) {
+  static struct hostent* h;
+  size_t size = 63;
+  struct hostent* res;
+  int err;
+  do {
+    free(h);
+    h = malloc(size += size + 1);
+    if (!h) {
+      h_errno = NO_RECOVERY;
+      return 0;
+    }
+    err = gethostbyaddr_r(a, l, af, h, (void*)(h + 1), size - sizeof *h, &res,
+                          &h_errno);
+  } while (err == ERANGE);
+  return err ? 0 : h;
 }
diff --git a/fusl/src/network/gethostbyaddr_r.c b/fusl/src/network/gethostbyaddr_r.c
index 66e0330..07b895c 100644
--- a/fusl/src/network/gethostbyaddr_r.c
+++ b/fusl/src/network/gethostbyaddr_r.c
@@ -7,64 +7,72 @@
 #include <errno.h>
 #include <inttypes.h>
 
-int gethostbyaddr_r(const void *a, socklen_t l, int af,
-	struct hostent *h, char *buf, size_t buflen,
-	struct hostent **res, int *err)
-{
-	union {
-		struct sockaddr_in sin;
-		struct sockaddr_in6 sin6;
-	} sa = { .sin.sin_family = af };
-	socklen_t sl = af==AF_INET6 ? sizeof sa.sin6 : sizeof sa.sin;
-	int i;
+int gethostbyaddr_r(const void* a,
+                    socklen_t l,
+                    int af,
+                    struct hostent* h,
+                    char* buf,
+                    size_t buflen,
+                    struct hostent** res,
+                    int* err) {
+  union {
+    struct sockaddr_in sin;
+    struct sockaddr_in6 sin6;
+  } sa = {.sin.sin_family = af};
+  socklen_t sl = af == AF_INET6 ? sizeof sa.sin6 : sizeof sa.sin;
+  int i;
 
-	*res = 0;
+  *res = 0;
 
-	/* Load address argument into sockaddr structure */
-	if (af==AF_INET6 && l==16) memcpy(&sa.sin6.sin6_addr, a, 16);
-	else if (af==AF_INET && l==4) memcpy(&sa.sin.sin_addr, a, 4);
-	else {
-		*err = NO_RECOVERY;
-		return EINVAL;
-	}
+  /* Load address argument into sockaddr structure */
+  if (af == AF_INET6 && l == 16)
+    memcpy(&sa.sin6.sin6_addr, a, 16);
+  else if (af == AF_INET && l == 4)
+    memcpy(&sa.sin.sin_addr, a, 4);
+  else {
+    *err = NO_RECOVERY;
+    return EINVAL;
+  }
 
-	/* Align buffer and check for space for pointers and ip address */
-	i = (uintptr_t)buf & sizeof(char *)-1;
-	if (!i) i = sizeof(char *);
-	if (buflen <= 5*sizeof(char *)-i + l) return ERANGE;
-	buf += sizeof(char *)-i;
-	buflen -= 5*sizeof(char *)-i + l;
+  /* Align buffer and check for space for pointers and ip address */
+  i = (uintptr_t)buf & sizeof(char*) - 1;
+  if (!i)
+    i = sizeof(char*);
+  if (buflen <= 5 * sizeof(char*) - i + l)
+    return ERANGE;
+  buf += sizeof(char*) - i;
+  buflen -= 5 * sizeof(char*) - i + l;
 
-	h->h_addr_list = (void *)buf;
-	buf += 2*sizeof(char *);
-	h->h_aliases = (void *)buf;
-	buf += 2*sizeof(char *);
+  h->h_addr_list = (void*)buf;
+  buf += 2 * sizeof(char*);
+  h->h_aliases = (void*)buf;
+  buf += 2 * sizeof(char*);
 
-	h->h_addr_list[0] = buf;
-	memcpy(h->h_addr_list[0], a, l);
-	buf += l;
-	h->h_addr_list[1] = 0;
-	h->h_aliases[0] = buf;
-	h->h_aliases[1] = 0;
+  h->h_addr_list[0] = buf;
+  memcpy(h->h_addr_list[0], a, l);
+  buf += l;
+  h->h_addr_list[1] = 0;
+  h->h_aliases[0] = buf;
+  h->h_aliases[1] = 0;
 
-	switch (getnameinfo((void *)&sa, sl, buf, buflen, 0, 0, 0)) {
-	case EAI_AGAIN:
-		*err = TRY_AGAIN;
-		return EAGAIN;
-	case EAI_OVERFLOW:
-		return ERANGE;
-	default:
-	case EAI_MEMORY:
-	case EAI_SYSTEM:
-	case EAI_FAIL:
-		*err = NO_RECOVERY;
-		return errno;
-	case 0:
-		break;
-	}
+  switch (getnameinfo((void*)&sa, sl, buf, buflen, 0, 0, 0)) {
+    case EAI_AGAIN:
+      *err = TRY_AGAIN;
+      return EAGAIN;
+    case EAI_OVERFLOW:
+      return ERANGE;
+    default:
+    case EAI_MEMORY:
+    case EAI_SYSTEM:
+    case EAI_FAIL:
+      *err = NO_RECOVERY;
+      return errno;
+    case 0:
+      break;
+  }
 
-	h->h_addrtype = af;
-	h->h_name = h->h_aliases[0];
-	*res = h;
-	return 0;
+  h->h_addrtype = af;
+  h->h_name = h->h_aliases[0];
+  *res = h;
+  return 0;
 }
diff --git a/fusl/src/network/gethostbyname.c b/fusl/src/network/gethostbyname.c
index 5088a51..bf4a601 100644
--- a/fusl/src/network/gethostbyname.c
+++ b/fusl/src/network/gethostbyname.c
@@ -5,9 +5,8 @@
 #include <string.h>
 #include <netinet/in.h>
 
-struct hostent *gethostbyname(const char *name)
-{
-	return gethostbyname2(name, AF_INET);
+struct hostent* gethostbyname(const char* name) {
+  return gethostbyname2(name, AF_INET);
 }
 
 #if 0
diff --git a/fusl/src/network/gethostbyname2.c b/fusl/src/network/gethostbyname2.c
index dc9d662..7cd1d40 100644
--- a/fusl/src/network/gethostbyname2.c
+++ b/fusl/src/network/gethostbyname2.c
@@ -5,21 +5,20 @@
 #include <errno.h>
 #include <stdlib.h>
 
-struct hostent *gethostbyname2(const char *name, int af)
-{
-	static struct hostent *h;
-	size_t size = 63;
-	struct hostent *res;
-	int err;
-	do {
-		free(h);
-		h = malloc(size+=size+1);
-		if (!h) {
-			h_errno = NO_RECOVERY;
-			return 0;
-		}
-		err = gethostbyname2_r(name, af, h,
-			(void *)(h+1), size-sizeof *h, &res, &h_errno);
-	} while (err == ERANGE);
-	return err ? 0 : h;
+struct hostent* gethostbyname2(const char* name, int af) {
+  static struct hostent* h;
+  size_t size = 63;
+  struct hostent* res;
+  int err;
+  do {
+    free(h);
+    h = malloc(size += size + 1);
+    if (!h) {
+      h_errno = NO_RECOVERY;
+      return 0;
+    }
+    err = gethostbyname2_r(name, af, h, (void*)(h + 1), size - sizeof *h, &res,
+                           &h_errno);
+  } while (err == ERANGE);
+  return err ? 0 : h;
 }
diff --git a/fusl/src/network/gethostbyname2_r.c b/fusl/src/network/gethostbyname2_r.c
index 81f71d2..d5eea23 100644
--- a/fusl/src/network/gethostbyname2_r.c
+++ b/fusl/src/network/gethostbyname2_r.c
@@ -8,75 +8,81 @@
 #include <stdint.h>
 #include "lookup.h"
 
-int gethostbyname2_r(const char *name, int af,
-	struct hostent *h, char *buf, size_t buflen,
-	struct hostent **res, int *err)
-{
-	struct address addrs[MAXADDRS];
-	char canon[256];
-	int i, cnt;
-	size_t align, need;
+int gethostbyname2_r(const char* name,
+                     int af,
+                     struct hostent* h,
+                     char* buf,
+                     size_t buflen,
+                     struct hostent** res,
+                     int* err) {
+  struct address addrs[MAXADDRS];
+  char canon[256];
+  int i, cnt;
+  size_t align, need;
 
-	*res = 0;
-	cnt = __lookup_name(addrs, canon, name, af, AI_CANONNAME);
-	if (cnt<0) switch (cnt) {
-	case EAI_NONAME:
-		*err = HOST_NOT_FOUND;
-		return ENOENT;
-	case EAI_AGAIN:
-		*err = TRY_AGAIN;
-		return EAGAIN;
-	default:
-	case EAI_FAIL:
-		*err = NO_RECOVERY;
-		return EBADMSG;
-	case EAI_MEMORY:
-	case EAI_SYSTEM:
-		*err = NO_RECOVERY;
-		return errno;
-	case 0:
-		break;
-	}
+  *res = 0;
+  cnt = __lookup_name(addrs, canon, name, af, AI_CANONNAME);
+  if (cnt < 0)
+    switch (cnt) {
+      case EAI_NONAME:
+        *err = HOST_NOT_FOUND;
+        return ENOENT;
+      case EAI_AGAIN:
+        *err = TRY_AGAIN;
+        return EAGAIN;
+      default:
+      case EAI_FAIL:
+        *err = NO_RECOVERY;
+        return EBADMSG;
+      case EAI_MEMORY:
+      case EAI_SYSTEM:
+        *err = NO_RECOVERY;
+        return errno;
+      case 0:
+        break;
+    }
 
-	h->h_addrtype = af;
-	h->h_length = af==AF_INET6 ? 16 : 4;
+  h->h_addrtype = af;
+  h->h_length = af == AF_INET6 ? 16 : 4;
 
-	/* Align buffer */
-	align = -(uintptr_t)buf & sizeof(char *)-1;
+  /* Align buffer */
+  align = -(uintptr_t)buf & sizeof(char*) - 1;
 
-	need = 4*sizeof(char *);
-	need += (cnt + 1) * (sizeof(char *) + h->h_length);
-	need += strlen(name)+1;
-	need += strlen(canon)+1;
-	need += align;
+  need = 4 * sizeof(char*);
+  need += (cnt + 1) * (sizeof(char*) + h->h_length);
+  need += strlen(name) + 1;
+  need += strlen(canon) + 1;
+  need += align;
 
-	if (need > buflen) return ERANGE;
+  if (need > buflen)
+    return ERANGE;
 
-	buf += align;
-	h->h_aliases = (void *)buf;
-	buf += 3*sizeof(char *);
-	h->h_addr_list = (void *)buf;
-	buf += (cnt+1)*sizeof(char *);
+  buf += align;
+  h->h_aliases = (void*)buf;
+  buf += 3 * sizeof(char*);
+  h->h_addr_list = (void*)buf;
+  buf += (cnt + 1) * sizeof(char*);
 
-	h->h_name = h->h_aliases[0] = buf;
-	strcpy(h->h_name, canon);
-	buf += strlen(h->h_name)+1;
+  h->h_name = h->h_aliases[0] = buf;
+  strcpy(h->h_name, canon);
+  buf += strlen(h->h_name) + 1;
 
-	if (strcmp(h->h_name, name)) {
-		h->h_aliases[1] = buf;
-		strcpy(h->h_aliases[1], name);
-		buf += strlen(h->h_aliases[1])+1;
-	} else h->h_aliases[1] = 0;
+  if (strcmp(h->h_name, name)) {
+    h->h_aliases[1] = buf;
+    strcpy(h->h_aliases[1], name);
+    buf += strlen(h->h_aliases[1]) + 1;
+  } else
+    h->h_aliases[1] = 0;
 
-	h->h_aliases[2] = 0;
+  h->h_aliases[2] = 0;
 
-	for (i=0; i<cnt; i++) {
-		h->h_addr_list[i] = (void *)buf;
-		buf += h->h_length;
-		memcpy(h->h_addr_list[i], addrs[i].addr, h->h_length);
-	}
-	h->h_addr_list[i] = 0;
+  for (i = 0; i < cnt; i++) {
+    h->h_addr_list[i] = (void*)buf;
+    buf += h->h_length;
+    memcpy(h->h_addr_list[i], addrs[i].addr, h->h_length);
+  }
+  h->h_addr_list[i] = 0;
 
-	*res = h;
-	return 0;
+  *res = h;
+  return 0;
 }
diff --git a/fusl/src/network/gethostbyname_r.c b/fusl/src/network/gethostbyname_r.c
index cd87254..ed6fa29 100644
--- a/fusl/src/network/gethostbyname_r.c
+++ b/fusl/src/network/gethostbyname_r.c
@@ -3,9 +3,11 @@
 #include <sys/socket.h>
 #include <netdb.h>
 
-int gethostbyname_r(const char *name,
-	struct hostent *h, char *buf, size_t buflen,
-	struct hostent **res, int *err)
-{
-	return gethostbyname2_r(name, AF_INET, h, buf, buflen, res, err);
+int gethostbyname_r(const char* name,
+                    struct hostent* h,
+                    char* buf,
+                    size_t buflen,
+                    struct hostent** res,
+                    int* err) {
+  return gethostbyname2_r(name, AF_INET, h, buf, buflen, res, err);
 }
diff --git a/fusl/src/network/getifaddrs.c b/fusl/src/network/getifaddrs.c
index fed75bd..51cbaa1 100644
--- a/fusl/src/network/getifaddrs.c
+++ b/fusl/src/network/getifaddrs.c
@@ -16,201 +16,230 @@
  * longer than sockaddr_ll.ssl_addr[8] can hold. Use this hack struct
  * to extend ssl_addr - callers should be able to still use it. */
 struct sockaddr_ll_hack {
-	unsigned short sll_family, sll_protocol;
-	int sll_ifindex;
-	unsigned short sll_hatype;
-	unsigned char sll_pkttype, sll_halen;
-	unsigned char sll_addr[24];
+  unsigned short sll_family, sll_protocol;
+  int sll_ifindex;
+  unsigned short sll_hatype;
+  unsigned char sll_pkttype, sll_halen;
+  unsigned char sll_addr[24];
 };
 
 union sockany {
-	struct sockaddr sa;
-	struct sockaddr_ll_hack ll;
-	struct sockaddr_in v4;
-	struct sockaddr_in6 v6;
+  struct sockaddr sa;
+  struct sockaddr_ll_hack ll;
+  struct sockaddr_in v4;
+  struct sockaddr_in6 v6;
 };
 
 struct ifaddrs_storage {
-	struct ifaddrs ifa;
-	struct ifaddrs_storage *hash_next;
-	union sockany addr, netmask, ifu;
-	unsigned int index;
-	char name[IFNAMSIZ+1];
+  struct ifaddrs ifa;
+  struct ifaddrs_storage* hash_next;
+  union sockany addr, netmask, ifu;
+  unsigned int index;
+  char name[IFNAMSIZ + 1];
 };
 
 struct ifaddrs_ctx {
-	struct ifaddrs_storage *first;
-	struct ifaddrs_storage *last;
-	struct ifaddrs_storage *hash[IFADDRS_HASH_SIZE];
+  struct ifaddrs_storage* first;
+  struct ifaddrs_storage* last;
+  struct ifaddrs_storage* hash[IFADDRS_HASH_SIZE];
 };
 
-void freeifaddrs(struct ifaddrs *ifp)
-{
-	struct ifaddrs *n;
-	while (ifp) {
-		n = ifp->ifa_next;
-		free(ifp);
-		ifp = n;
-	}
+void freeifaddrs(struct ifaddrs* ifp) {
+  struct ifaddrs* n;
+  while (ifp) {
+    n = ifp->ifa_next;
+    free(ifp);
+    ifp = n;
+  }
 }
 
-static void copy_addr(struct sockaddr **r, int af, union sockany *sa, void *addr, size_t addrlen, int ifindex)
-{
-	uint8_t *dst;
-	int len;
+static void copy_addr(struct sockaddr** r,
+                      int af,
+                      union sockany* sa,
+                      void* addr,
+                      size_t addrlen,
+                      int ifindex) {
+  uint8_t* dst;
+  int len;
 
-	switch (af) {
-	case AF_INET:
-		dst = (uint8_t*) &sa->v4.sin_addr;
-		len = 4;
-		break;
-	case AF_INET6:
-		dst = (uint8_t*) &sa->v6.sin6_addr;
-		len = 16;
-		if (IN6_IS_ADDR_LINKLOCAL(addr) || IN6_IS_ADDR_MC_LINKLOCAL(addr))
-			sa->v6.sin6_scope_id = ifindex;
-		break;
-	default:
-		return;
-	}
-	if (addrlen < len) return;
-	sa->sa.sa_family = af;
-	memcpy(dst, addr, len);
-	*r = &sa->sa;
+  switch (af) {
+    case AF_INET:
+      dst = (uint8_t*)&sa->v4.sin_addr;
+      len = 4;
+      break;
+    case AF_INET6:
+      dst = (uint8_t*)&sa->v6.sin6_addr;
+      len = 16;
+      if (IN6_IS_ADDR_LINKLOCAL(addr) || IN6_IS_ADDR_MC_LINKLOCAL(addr))
+        sa->v6.sin6_scope_id = ifindex;
+      break;
+    default:
+      return;
+  }
+  if (addrlen < len)
+    return;
+  sa->sa.sa_family = af;
+  memcpy(dst, addr, len);
+  *r = &sa->sa;
 }
 
-static void gen_netmask(struct sockaddr **r, int af, union sockany *sa, int prefixlen)
-{
-	uint8_t addr[16] = {0};
-	int i;
+static void gen_netmask(struct sockaddr** r,
+                        int af,
+                        union sockany* sa,
+                        int prefixlen) {
+  uint8_t addr[16] = {0};
+  int i;
 
-	if (prefixlen > 8*sizeof(addr)) prefixlen = 8*sizeof(addr);
-	i = prefixlen / 8;
-	memset(addr, 0xff, i);
-	if (i < sizeof(addr)) addr[i++] = 0xff << (8 - (prefixlen % 8));
-	copy_addr(r, af, sa, addr, sizeof(addr), 0);
+  if (prefixlen > 8 * sizeof(addr))
+    prefixlen = 8 * sizeof(addr);
+  i = prefixlen / 8;
+  memset(addr, 0xff, i);
+  if (i < sizeof(addr))
+    addr[i++] = 0xff << (8 - (prefixlen % 8));
+  copy_addr(r, af, sa, addr, sizeof(addr), 0);
 }
 
-static void copy_lladdr(struct sockaddr **r, union sockany *sa, void *addr, size_t addrlen, int ifindex, unsigned short hatype)
-{
-	if (addrlen > sizeof(sa->ll.sll_addr)) return;
-	sa->ll.sll_family = AF_PACKET;
-	sa->ll.sll_ifindex = ifindex;
-	sa->ll.sll_hatype = hatype;
-	sa->ll.sll_halen = addrlen;
-	memcpy(sa->ll.sll_addr, addr, addrlen);
-	*r = &sa->sa;
+static void copy_lladdr(struct sockaddr** r,
+                        union sockany* sa,
+                        void* addr,
+                        size_t addrlen,
+                        int ifindex,
+                        unsigned short hatype) {
+  if (addrlen > sizeof(sa->ll.sll_addr))
+    return;
+  sa->ll.sll_family = AF_PACKET;
+  sa->ll.sll_ifindex = ifindex;
+  sa->ll.sll_hatype = hatype;
+  sa->ll.sll_halen = addrlen;
+  memcpy(sa->ll.sll_addr, addr, addrlen);
+  *r = &sa->sa;
 }
 
-static int netlink_msg_to_ifaddr(void *pctx, struct nlmsghdr *h)
-{
-	struct ifaddrs_ctx *ctx = pctx;
-	struct ifaddrs_storage *ifs, *ifs0;
-	struct ifinfomsg *ifi = NLMSG_DATA(h);
-	struct ifaddrmsg *ifa = NLMSG_DATA(h);
-	struct rtattr *rta;
-	int stats_len = 0;
+static int netlink_msg_to_ifaddr(void* pctx, struct nlmsghdr* h) {
+  struct ifaddrs_ctx* ctx = pctx;
+  struct ifaddrs_storage *ifs, *ifs0;
+  struct ifinfomsg* ifi = NLMSG_DATA(h);
+  struct ifaddrmsg* ifa = NLMSG_DATA(h);
+  struct rtattr* rta;
+  int stats_len = 0;
 
-	if (h->nlmsg_type == RTM_NEWLINK) {
-		for (rta = NLMSG_RTA(h, sizeof(*ifi)); NLMSG_RTAOK(rta, h); rta = RTA_NEXT(rta)) {
-			if (rta->rta_type != IFLA_STATS) continue;
-			stats_len = RTA_DATALEN(rta);
-			break;
-		}
-	} else {
-		for (ifs0 = ctx->hash[ifa->ifa_index % IFADDRS_HASH_SIZE]; ifs0; ifs0 = ifs0->hash_next)
-			if (ifs0->index == ifa->ifa_index)
-				break;
-		if (!ifs0) return 0;
-	}
+  if (h->nlmsg_type == RTM_NEWLINK) {
+    for (rta = NLMSG_RTA(h, sizeof(*ifi)); NLMSG_RTAOK(rta, h);
+         rta = RTA_NEXT(rta)) {
+      if (rta->rta_type != IFLA_STATS)
+        continue;
+      stats_len = RTA_DATALEN(rta);
+      break;
+    }
+  } else {
+    for (ifs0 = ctx->hash[ifa->ifa_index % IFADDRS_HASH_SIZE]; ifs0;
+         ifs0 = ifs0->hash_next)
+      if (ifs0->index == ifa->ifa_index)
+        break;
+    if (!ifs0)
+      return 0;
+  }
 
-	ifs = calloc(1, sizeof(struct ifaddrs_storage) + stats_len);
-	if (ifs == 0) return -1;
+  ifs = calloc(1, sizeof(struct ifaddrs_storage) + stats_len);
+  if (ifs == 0)
+    return -1;
 
-	if (h->nlmsg_type == RTM_NEWLINK) {
-		ifs->index = ifi->ifi_index;
-		ifs->ifa.ifa_flags = ifi->ifi_flags;
+  if (h->nlmsg_type == RTM_NEWLINK) {
+    ifs->index = ifi->ifi_index;
+    ifs->ifa.ifa_flags = ifi->ifi_flags;
 
-		for (rta = NLMSG_RTA(h, sizeof(*ifi)); NLMSG_RTAOK(rta, h); rta = RTA_NEXT(rta)) {
-			switch (rta->rta_type) {
-			case IFLA_IFNAME:
-				if (RTA_DATALEN(rta) < sizeof(ifs->name)) {
-					memcpy(ifs->name, RTA_DATA(rta), RTA_DATALEN(rta));
-					ifs->ifa.ifa_name = ifs->name;
-				}
-				break;
-			case IFLA_ADDRESS:
-				copy_lladdr(&ifs->ifa.ifa_addr, &ifs->addr, RTA_DATA(rta), RTA_DATALEN(rta), ifi->ifi_index, ifi->ifi_type);
-				break;
-			case IFLA_BROADCAST:
-				copy_lladdr(&ifs->ifa.ifa_broadaddr, &ifs->ifu, RTA_DATA(rta), RTA_DATALEN(rta), ifi->ifi_index, ifi->ifi_type);
-				break;
-			case IFLA_STATS:
-				ifs->ifa.ifa_data = (void*)(ifs+1);
-				memcpy(ifs->ifa.ifa_data, RTA_DATA(rta), RTA_DATALEN(rta));
-				break;
-			}
-		}
-		if (ifs->ifa.ifa_name) {
-			unsigned int bucket = ifs->index % IFADDRS_HASH_SIZE;
-			ifs->hash_next = ctx->hash[bucket];
-			ctx->hash[bucket] = ifs;
-		}
-	} else {
-		ifs->ifa.ifa_name = ifs0->ifa.ifa_name;
-		ifs->ifa.ifa_flags = ifs0->ifa.ifa_flags;
-		for (rta = NLMSG_RTA(h, sizeof(*ifa)); NLMSG_RTAOK(rta, h); rta = RTA_NEXT(rta)) {
-			switch (rta->rta_type) {
-			case IFA_ADDRESS:
-				/* If ifa_addr is already set we, received an IFA_LOCAL before
-				 * so treat this as destination address */
-				if (ifs->ifa.ifa_addr)
-					copy_addr(&ifs->ifa.ifa_dstaddr, ifa->ifa_family, &ifs->ifu, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
-				else
-					copy_addr(&ifs->ifa.ifa_addr, ifa->ifa_family, &ifs->addr, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
-				break;
-			case IFA_BROADCAST:
-				copy_addr(&ifs->ifa.ifa_broadaddr, ifa->ifa_family, &ifs->ifu, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
-				break;
-			case IFA_LOCAL:
-				/* If ifa_addr is set and we get IFA_LOCAL, assume we have
-				 * a point-to-point network. Move address to correct field. */
-				if (ifs->ifa.ifa_addr) {
-					ifs->ifu = ifs->addr;
-					ifs->ifa.ifa_dstaddr = &ifs->ifu.sa;
-					memset(&ifs->addr, 0, sizeof(ifs->addr));
-				}
-				copy_addr(&ifs->ifa.ifa_addr, ifa->ifa_family, &ifs->addr, RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
-				break;
-			case IFA_LABEL:
-				if (RTA_DATALEN(rta) < sizeof(ifs->name)) {
-					memcpy(ifs->name, RTA_DATA(rta), RTA_DATALEN(rta));
-					ifs->ifa.ifa_name = ifs->name;
-				}
-				break;
-			}
-		}
-		if (ifs->ifa.ifa_addr)
-			gen_netmask(&ifs->ifa.ifa_netmask, ifa->ifa_family, &ifs->netmask, ifa->ifa_prefixlen);
-	}
+    for (rta = NLMSG_RTA(h, sizeof(*ifi)); NLMSG_RTAOK(rta, h);
+         rta = RTA_NEXT(rta)) {
+      switch (rta->rta_type) {
+        case IFLA_IFNAME:
+          if (RTA_DATALEN(rta) < sizeof(ifs->name)) {
+            memcpy(ifs->name, RTA_DATA(rta), RTA_DATALEN(rta));
+            ifs->ifa.ifa_name = ifs->name;
+          }
+          break;
+        case IFLA_ADDRESS:
+          copy_lladdr(&ifs->ifa.ifa_addr, &ifs->addr, RTA_DATA(rta),
+                      RTA_DATALEN(rta), ifi->ifi_index, ifi->ifi_type);
+          break;
+        case IFLA_BROADCAST:
+          copy_lladdr(&ifs->ifa.ifa_broadaddr, &ifs->ifu, RTA_DATA(rta),
+                      RTA_DATALEN(rta), ifi->ifi_index, ifi->ifi_type);
+          break;
+        case IFLA_STATS:
+          ifs->ifa.ifa_data = (void*)(ifs + 1);
+          memcpy(ifs->ifa.ifa_data, RTA_DATA(rta), RTA_DATALEN(rta));
+          break;
+      }
+    }
+    if (ifs->ifa.ifa_name) {
+      unsigned int bucket = ifs->index % IFADDRS_HASH_SIZE;
+      ifs->hash_next = ctx->hash[bucket];
+      ctx->hash[bucket] = ifs;
+    }
+  } else {
+    ifs->ifa.ifa_name = ifs0->ifa.ifa_name;
+    ifs->ifa.ifa_flags = ifs0->ifa.ifa_flags;
+    for (rta = NLMSG_RTA(h, sizeof(*ifa)); NLMSG_RTAOK(rta, h);
+         rta = RTA_NEXT(rta)) {
+      switch (rta->rta_type) {
+        case IFA_ADDRESS:
+          /* If ifa_addr is already set we, received an IFA_LOCAL before
+           * so treat this as destination address */
+          if (ifs->ifa.ifa_addr)
+            copy_addr(&ifs->ifa.ifa_dstaddr, ifa->ifa_family, &ifs->ifu,
+                      RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
+          else
+            copy_addr(&ifs->ifa.ifa_addr, ifa->ifa_family, &ifs->addr,
+                      RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
+          break;
+        case IFA_BROADCAST:
+          copy_addr(&ifs->ifa.ifa_broadaddr, ifa->ifa_family, &ifs->ifu,
+                    RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
+          break;
+        case IFA_LOCAL:
+          /* If ifa_addr is set and we get IFA_LOCAL, assume we have
+           * a point-to-point network. Move address to correct field. */
+          if (ifs->ifa.ifa_addr) {
+            ifs->ifu = ifs->addr;
+            ifs->ifa.ifa_dstaddr = &ifs->ifu.sa;
+            memset(&ifs->addr, 0, sizeof(ifs->addr));
+          }
+          copy_addr(&ifs->ifa.ifa_addr, ifa->ifa_family, &ifs->addr,
+                    RTA_DATA(rta), RTA_DATALEN(rta), ifa->ifa_index);
+          break;
+        case IFA_LABEL:
+          if (RTA_DATALEN(rta) < sizeof(ifs->name)) {
+            memcpy(ifs->name, RTA_DATA(rta), RTA_DATALEN(rta));
+            ifs->ifa.ifa_name = ifs->name;
+          }
+          break;
+      }
+    }
+    if (ifs->ifa.ifa_addr)
+      gen_netmask(&ifs->ifa.ifa_netmask, ifa->ifa_family, &ifs->netmask,
+                  ifa->ifa_prefixlen);
+  }
 
-	if (ifs->ifa.ifa_name) {
-		if (!ctx->first) ctx->first = ifs;
-		if (ctx->last) ctx->last->ifa.ifa_next = &ifs->ifa;
-		ctx->last = ifs;
-	} else {
-		free(ifs);
-	}
-	return 0;
+  if (ifs->ifa.ifa_name) {
+    if (!ctx->first)
+      ctx->first = ifs;
+    if (ctx->last)
+      ctx->last->ifa.ifa_next = &ifs->ifa;
+    ctx->last = ifs;
+  } else {
+    free(ifs);
+  }
+  return 0;
 }
 
-int getifaddrs(struct ifaddrs **ifap)
-{
-	struct ifaddrs_ctx _ctx, *ctx = &_ctx;
-	int r;
-	memset(ctx, 0, sizeof *ctx);
-	r = __rtnetlink_enumerate(AF_UNSPEC, AF_UNSPEC, netlink_msg_to_ifaddr, ctx);
-	if (r == 0) *ifap = &ctx->first->ifa;
-	else freeifaddrs(&ctx->first->ifa);
-	return r;
+int getifaddrs(struct ifaddrs** ifap) {
+  struct ifaddrs_ctx _ctx, *ctx = &_ctx;
+  int r;
+  memset(ctx, 0, sizeof *ctx);
+  r = __rtnetlink_enumerate(AF_UNSPEC, AF_UNSPEC, netlink_msg_to_ifaddr, ctx);
+  if (r == 0)
+    *ifap = &ctx->first->ifa;
+  else
+    freeifaddrs(&ctx->first->ifa);
+  return r;
 }
diff --git a/fusl/src/network/getnameinfo.c b/fusl/src/network/getnameinfo.c
index 5e6fae3..5de7ef8 100644
--- a/fusl/src/network/getnameinfo.c
+++ b/fusl/src/network/getnameinfo.c
@@ -10,193 +10,228 @@
 #include "lookup.h"
 #include "stdio_impl.h"
 
-int __dns_parse(const unsigned char *, int, int (*)(void *, int, const void *, int, const void *), void *);
-int __dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int);
-int __res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int);
-int __res_send(const unsigned char *, int, unsigned char *, int);
+int __dns_parse(const unsigned char*,
+                int,
+                int (*)(void*, int, const void*, int, const void*),
+                void*);
+int __dn_expand(const unsigned char*,
+                const unsigned char*,
+                const unsigned char*,
+                char*,
+                int);
+int __res_mkquery(int,
+                  const char*,
+                  int,
+                  int,
+                  const unsigned char*,
+                  int,
+                  const unsigned char*,
+                  unsigned char*,
+                  int);
+int __res_send(const unsigned char*, int, unsigned char*, int);
 
 #define PTR_MAX (64 + sizeof ".in-addr.arpa")
 #define RR_PTR 12
 
-static char *itoa(char *p, unsigned x) {
-	p += 3*sizeof(int);
-	*--p = 0;
-	do {
-		*--p = '0' + x % 10;
-		x /= 10;
-	} while (x);
-	return p;
+static char* itoa(char* p, unsigned x) {
+  p += 3 * sizeof(int);
+  *--p = 0;
+  do {
+    *--p = '0' + x % 10;
+    x /= 10;
+  } while (x);
+  return p;
 }
 
-static void mkptr4(char *s, const unsigned char *ip)
-{
-	sprintf(s, "%d.%d.%d.%d.in-addr.arpa",
-		ip[3], ip[2], ip[1], ip[0]);
+static void mkptr4(char* s, const unsigned char* ip) {
+  sprintf(s, "%d.%d.%d.%d.in-addr.arpa", ip[3], ip[2], ip[1], ip[0]);
 }
 
-static void mkptr6(char *s, const unsigned char *ip)
-{
-	static const char xdigits[] = "0123456789abcdef";
-	int i;
-	for (i=15; i>=0; i--) {
-		*s++ = xdigits[ip[i]&15]; *s++ = '.';
-		*s++ = xdigits[ip[i]>>4]; *s++ = '.';
-	}
-	strcpy(s, "ip6.arpa");
+static void mkptr6(char* s, const unsigned char* ip) {
+  static const char xdigits[] = "0123456789abcdef";
+  int i;
+  for (i = 15; i >= 0; i--) {
+    *s++ = xdigits[ip[i] & 15];
+    *s++ = '.';
+    *s++ = xdigits[ip[i] >> 4];
+    *s++ = '.';
+  }
+  strcpy(s, "ip6.arpa");
 }
 
-static void reverse_hosts(char *buf, const unsigned char *a, unsigned scopeid, int family)
-{
-	char line[512], *p, *z;
-	unsigned char _buf[1032], atmp[16];
-	struct address iplit;
-	FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf);
-	if (!f) return;
-	if (family == AF_INET) {
-		memcpy(atmp+12, a, 4);
-		memcpy(atmp, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12);
-		a = atmp;
-	}
-	while (fgets(line, sizeof line, f)) {
-		if ((p=strchr(line, '#'))) *p++='\n', *p=0;
+static void reverse_hosts(char* buf,
+                          const unsigned char* a,
+                          unsigned scopeid,
+                          int family) {
+  char line[512], *p, *z;
+  unsigned char _buf[1032], atmp[16];
+  struct address iplit;
+  FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf);
+  if (!f)
+    return;
+  if (family == AF_INET) {
+    memcpy(atmp + 12, a, 4);
+    memcpy(atmp, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12);
+    a = atmp;
+  }
+  while (fgets(line, sizeof line, f)) {
+    if ((p = strchr(line, '#')))
+      *p++ = '\n', *p = 0;
 
-		for (p=line; *p && !isspace(*p); p++);
-		*p++ = 0;
-		if (__lookup_ipliteral(&iplit, line, AF_UNSPEC)<=0)
-			continue;
+    for (p = line; *p && !isspace(*p); p++)
+      ;
+    *p++ = 0;
+    if (__lookup_ipliteral(&iplit, line, AF_UNSPEC) <= 0)
+      continue;
 
-		if (iplit.family == AF_INET) {
-			memcpy(iplit.addr+12, iplit.addr, 4);
-			memcpy(iplit.addr, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12);
-			iplit.scopeid = 0;
-		}
+    if (iplit.family == AF_INET) {
+      memcpy(iplit.addr + 12, iplit.addr, 4);
+      memcpy(iplit.addr, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12);
+      iplit.scopeid = 0;
+    }
 
-		if (memcmp(a, iplit.addr, 16) || iplit.scopeid != scopeid)
-			continue;
-			
-		for (; *p && isspace(*p); p++);
-		for (z=p; *z && !isspace(*z); z++);
-		*z = 0;
-		if (z-p < 256) {
-			memcpy(buf, p, z-p+1);
-			break;
-		}
-	}
-	__fclose_ca(f);
+    if (memcmp(a, iplit.addr, 16) || iplit.scopeid != scopeid)
+      continue;
+
+    for (; *p && isspace(*p); p++)
+      ;
+    for (z = p; *z && !isspace(*z); z++)
+      ;
+    *z = 0;
+    if (z - p < 256) {
+      memcpy(buf, p, z - p + 1);
+      break;
+    }
+  }
+  __fclose_ca(f);
 }
 
-static void reverse_services(char *buf, int port, int dgram)
-{
-	unsigned long svport;
-	char line[128], *p, *z;
-	unsigned char _buf[1032];
-	FILE _f, *f = __fopen_rb_ca("/etc/services", &_f, _buf, sizeof _buf);
-	if (!f) return;
-	while (fgets(line, sizeof line, f)) {
-		if ((p=strchr(line, '#'))) *p++='\n', *p=0;
+static void reverse_services(char* buf, int port, int dgram) {
+  unsigned long svport;
+  char line[128], *p, *z;
+  unsigned char _buf[1032];
+  FILE _f, *f = __fopen_rb_ca("/etc/services", &_f, _buf, sizeof _buf);
+  if (!f)
+    return;
+  while (fgets(line, sizeof line, f)) {
+    if ((p = strchr(line, '#')))
+      *p++ = '\n', *p = 0;
 
-		for (p=line; *p && !isspace(*p); p++);
-		if (!*p) continue;
-		*p++ = 0;
-		svport = strtoul(p, &z, 10);
+    for (p = line; *p && !isspace(*p); p++)
+      ;
+    if (!*p)
+      continue;
+    *p++ = 0;
+    svport = strtoul(p, &z, 10);
 
-		if (svport != port || z==p) continue;
-		if (dgram && strncmp(z, "/udp", 4)) continue;
-		if (!dgram && strncmp(z, "/tcp", 4)) continue;
-		if (p-line > 32) continue;
+    if (svport != port || z == p)
+      continue;
+    if (dgram && strncmp(z, "/udp", 4))
+      continue;
+    if (!dgram && strncmp(z, "/tcp", 4))
+      continue;
+    if (p - line > 32)
+      continue;
 
-		memcpy(buf, line, p-line);
-		break;
-	}
-	__fclose_ca(f);
+    memcpy(buf, line, p - line);
+    break;
+  }
+  __fclose_ca(f);
 }
 
-static int dns_parse_callback(void *c, int rr, const void *data, int len, const void *packet)
-{
-	if (rr != RR_PTR) return 0;
-	if (__dn_expand(packet, (const unsigned char *)packet + 512,
-	    data, c, 256) <= 0)
-		*(char *)c = 0;
-	return 0;
-	
+static int dns_parse_callback(void* c,
+                              int rr,
+                              const void* data,
+                              int len,
+                              const void* packet) {
+  if (rr != RR_PTR)
+    return 0;
+  if (__dn_expand(packet, (const unsigned char*)packet + 512, data, c, 256) <=
+      0)
+    *(char*)c = 0;
+  return 0;
 }
 
-int getnameinfo(const struct sockaddr *restrict sa, socklen_t sl,
-	char *restrict node, socklen_t nodelen,
-	char *restrict serv, socklen_t servlen,
-	int flags)
-{
-	char ptr[PTR_MAX];
-	char buf[256], num[3*sizeof(int)+1];
-	int af = sa->sa_family;
-	unsigned char *a;
-	unsigned scopeid;
+int getnameinfo(const struct sockaddr* restrict sa,
+                socklen_t sl,
+                char* restrict node,
+                socklen_t nodelen,
+                char* restrict serv,
+                socklen_t servlen,
+                int flags) {
+  char ptr[PTR_MAX];
+  char buf[256], num[3 * sizeof(int) + 1];
+  int af = sa->sa_family;
+  unsigned char* a;
+  unsigned scopeid;
 
-	switch (af) {
-	case AF_INET:
-		a = (void *)&((struct sockaddr_in *)sa)->sin_addr;
-		if (sl < sizeof(struct sockaddr_in)) return EAI_FAMILY;
-		mkptr4(ptr, a);
-		scopeid = 0;
-		break;
-	case AF_INET6:
-		a = (void *)&((struct sockaddr_in6 *)sa)->sin6_addr;
-		if (sl < sizeof(struct sockaddr_in6)) return EAI_FAMILY;
-		if (memcmp(a, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12))
-			mkptr6(ptr, a);
-		else
-			mkptr4(ptr, a+12);
-		scopeid = ((struct sockaddr_in6 *)sa)->sin6_scope_id;
-		break;
-	default:
-		return EAI_FAMILY;
-	}
+  switch (af) {
+    case AF_INET:
+      a = (void*)&((struct sockaddr_in*)sa)->sin_addr;
+      if (sl < sizeof(struct sockaddr_in))
+        return EAI_FAMILY;
+      mkptr4(ptr, a);
+      scopeid = 0;
+      break;
+    case AF_INET6:
+      a = (void*)&((struct sockaddr_in6*)sa)->sin6_addr;
+      if (sl < sizeof(struct sockaddr_in6))
+        return EAI_FAMILY;
+      if (memcmp(a, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12))
+        mkptr6(ptr, a);
+      else
+        mkptr4(ptr, a + 12);
+      scopeid = ((struct sockaddr_in6*)sa)->sin6_scope_id;
+      break;
+    default:
+      return EAI_FAMILY;
+  }
 
-	if (node && nodelen) {
-		buf[0] = 0;
-		if (!(flags & NI_NUMERICHOST)) {
-			reverse_hosts(buf, a, scopeid, af);
-		}
-		if (!*buf && !(flags & NI_NUMERICHOST)) {
-			unsigned char query[18+PTR_MAX], reply[512];
-			int qlen = __res_mkquery(0, ptr, 1, RR_PTR,
-				0, 0, 0, query, sizeof query);
-			int rlen = __res_send(query, qlen, reply, sizeof reply);
-			buf[0] = 0;
-			if (rlen > 0)
-				__dns_parse(reply, rlen, dns_parse_callback, buf);
-		}
-		if (!*buf) {
-			if (flags & NI_NAMEREQD) return EAI_NONAME;
-			inet_ntop(af, a, buf, sizeof buf);
-			if (scopeid) {
-				char *p = 0, tmp[IF_NAMESIZE+1];
-				if (!(flags & NI_NUMERICSCOPE) &&
-				    (IN6_IS_ADDR_LINKLOCAL(a) ||
-				     IN6_IS_ADDR_MC_LINKLOCAL(a)))
-					p = if_indextoname(scopeid, tmp+1);
-				if (!p)
-					p = itoa(num, scopeid);
-				*--p = '%';
-				strcat(buf, p);
-			}
-		}
-		if (strlen(buf) >= nodelen) return EAI_OVERFLOW;
-		strcpy(node, buf);
-	}
+  if (node && nodelen) {
+    buf[0] = 0;
+    if (!(flags & NI_NUMERICHOST)) {
+      reverse_hosts(buf, a, scopeid, af);
+    }
+    if (!*buf && !(flags & NI_NUMERICHOST)) {
+      unsigned char query[18 + PTR_MAX], reply[512];
+      int qlen = __res_mkquery(0, ptr, 1, RR_PTR, 0, 0, 0, query, sizeof query);
+      int rlen = __res_send(query, qlen, reply, sizeof reply);
+      buf[0] = 0;
+      if (rlen > 0)
+        __dns_parse(reply, rlen, dns_parse_callback, buf);
+    }
+    if (!*buf) {
+      if (flags & NI_NAMEREQD)
+        return EAI_NONAME;
+      inet_ntop(af, a, buf, sizeof buf);
+      if (scopeid) {
+        char *p = 0, tmp[IF_NAMESIZE + 1];
+        if (!(flags & NI_NUMERICSCOPE) &&
+            (IN6_IS_ADDR_LINKLOCAL(a) || IN6_IS_ADDR_MC_LINKLOCAL(a)))
+          p = if_indextoname(scopeid, tmp + 1);
+        if (!p)
+          p = itoa(num, scopeid);
+        *--p = '%';
+        strcat(buf, p);
+      }
+    }
+    if (strlen(buf) >= nodelen)
+      return EAI_OVERFLOW;
+    strcpy(node, buf);
+  }
 
-	if (serv && servlen) {
-		char *p = buf;
-		int port = ntohs(((struct sockaddr_in *)sa)->sin_port);
-		buf[0] = 0;
-		if (!(flags & NI_NUMERICSERV))
-			reverse_services(buf, port, flags & NI_DGRAM);
-		if (!*p)
-			p = itoa(num, port);
-		if (strlen(p) >= servlen)
-			return EAI_OVERFLOW;
-		strcpy(serv, p);
-	}
+  if (serv && servlen) {
+    char* p = buf;
+    int port = ntohs(((struct sockaddr_in*)sa)->sin_port);
+    buf[0] = 0;
+    if (!(flags & NI_NUMERICSERV))
+      reverse_services(buf, port, flags & NI_DGRAM);
+    if (!*p)
+      p = itoa(num, port);
+    if (strlen(p) >= servlen)
+      return EAI_OVERFLOW;
+    strcpy(serv, p);
+  }
 
-	return 0;
+  return 0;
 }
diff --git a/fusl/src/network/getpeername.c b/fusl/src/network/getpeername.c
index 6567b45..82cb017 100644
--- a/fusl/src/network/getpeername.c
+++ b/fusl/src/network/getpeername.c
@@ -1,7 +1,8 @@
 #include <sys/socket.h>
 #include "syscall.h"
 
-int getpeername(int fd, struct sockaddr *restrict addr, socklen_t *restrict len)
-{
-	return socketcall(getpeername, fd, addr, len, 0, 0, 0);
+int getpeername(int fd,
+                struct sockaddr* restrict addr,
+                socklen_t* restrict len) {
+  return socketcall(getpeername, fd, addr, len, 0, 0, 0);
 }
diff --git a/fusl/src/network/getservbyname.c b/fusl/src/network/getservbyname.c
index dd30376..a666cc0 100644
--- a/fusl/src/network/getservbyname.c
+++ b/fusl/src/network/getservbyname.c
@@ -1,12 +1,11 @@
 #define _GNU_SOURCE
 #include <netdb.h>
 
-struct servent *getservbyname(const char *name, const char *prots)
-{
-	static struct servent se;
-	static char *buf[2];
-	struct servent *res;
-	if (getservbyname_r(name, prots, &se, (void *)buf, sizeof buf, &res))
-		return 0;
-	return &se;
+struct servent* getservbyname(const char* name, const char* prots) {
+  static struct servent se;
+  static char* buf[2];
+  struct servent* res;
+  if (getservbyname_r(name, prots, &se, (void*)buf, sizeof buf, &res))
+    return 0;
+  return &se;
 }
diff --git a/fusl/src/network/getservbyname_r.c b/fusl/src/network/getservbyname_r.c
index 056c2f3..63d9617 100644
--- a/fusl/src/network/getservbyname_r.c
+++ b/fusl/src/network/getservbyname_r.c
@@ -7,41 +7,54 @@
 #include <string.h>
 #include "lookup.h"
 
-#define ALIGN (sizeof(struct { char a; char *b; }) - sizeof(char *))
+#define ALIGN      \
+  (sizeof(struct { \
+     char a;       \
+     char* b;      \
+   }) -            \
+   sizeof(char*))
 
-int getservbyname_r(const char *name, const char *prots,
-	struct servent *se, char *buf, size_t buflen, struct servent **res)
-{
-	struct service servs[MAXSERVS];
-	int cnt, proto, align;
+int getservbyname_r(const char* name,
+                    const char* prots,
+                    struct servent* se,
+                    char* buf,
+                    size_t buflen,
+                    struct servent** res) {
+  struct service servs[MAXSERVS];
+  int cnt, proto, align;
 
-	/* Align buffer */
-	align = -(uintptr_t)buf & ALIGN-1;
-	if (buflen < 2*sizeof(char *)+align)
-		return ERANGE;
-	buf += align;
+  /* Align buffer */
+  align = -(uintptr_t)buf & ALIGN - 1;
+  if (buflen < 2 * sizeof(char*) + align)
+    return ERANGE;
+  buf += align;
 
-	if (!prots) proto = 0;
-	else if (!strcmp(prots, "tcp")) proto = IPPROTO_TCP;
-	else if (!strcmp(prots, "udp")) proto = IPPROTO_UDP;
-	else return EINVAL;
+  if (!prots)
+    proto = 0;
+  else if (!strcmp(prots, "tcp"))
+    proto = IPPROTO_TCP;
+  else if (!strcmp(prots, "udp"))
+    proto = IPPROTO_UDP;
+  else
+    return EINVAL;
 
-	cnt = __lookup_serv(servs, name, proto, 0, 0);
-	if (cnt<0) switch (cnt) {
-	case EAI_MEMORY:
-	case EAI_SYSTEM:
-		return ENOMEM;
-	default:
-		return ENOENT;
-	}
+  cnt = __lookup_serv(servs, name, proto, 0, 0);
+  if (cnt < 0)
+    switch (cnt) {
+      case EAI_MEMORY:
+      case EAI_SYSTEM:
+        return ENOMEM;
+      default:
+        return ENOENT;
+    }
 
-	se->s_name = (char *)name;
-	se->s_aliases = (void *)buf;
-	se->s_aliases[0] = se->s_name;
-	se->s_aliases[1] = 0;
-	se->s_port = htons(servs[0].port);
-	se->s_proto = servs[0].proto == IPPROTO_TCP ? "tcp" : "udp";
+  se->s_name = (char*)name;
+  se->s_aliases = (void*)buf;
+  se->s_aliases[0] = se->s_name;
+  se->s_aliases[1] = 0;
+  se->s_port = htons(servs[0].port);
+  se->s_proto = servs[0].proto == IPPROTO_TCP ? "tcp" : "udp";
 
-	*res = se;
-	return 0;
+  *res = se;
+  return 0;
 }
diff --git a/fusl/src/network/getservbyport.c b/fusl/src/network/getservbyport.c
index c9ecbb1..db62149 100644
--- a/fusl/src/network/getservbyport.c
+++ b/fusl/src/network/getservbyport.c
@@ -1,12 +1,11 @@
 #define _GNU_SOURCE
 #include <netdb.h>
 
-struct servent *getservbyport(int port, const char *prots)
-{
-	static struct servent se;
-	static long buf[32/sizeof(long)];
-	struct servent *res;
-	if (getservbyport_r(port, prots, &se, (void *)buf, sizeof buf, &res))
-		return 0;
-	return &se;
+struct servent* getservbyport(int port, const char* prots) {
+  static struct servent se;
+  static long buf[32 / sizeof(long)];
+  struct servent* res;
+  if (getservbyport_r(port, prots, &se, (void*)buf, sizeof buf, &res))
+    return 0;
+  return &se;
 }
diff --git a/fusl/src/network/getservbyport_r.c b/fusl/src/network/getservbyport_r.c
index a0a7cae..bc0b548 100644
--- a/fusl/src/network/getservbyport_r.c
+++ b/fusl/src/network/getservbyport_r.c
@@ -6,50 +6,55 @@
 #include <errno.h>
 #include <string.h>
 
-int getservbyport_r(int port, const char *prots,
-	struct servent *se, char *buf, size_t buflen, struct servent **res)
-{
-	int i;
-	struct sockaddr_in sin = {
-		.sin_family = AF_INET,
-		.sin_port = port,
-	};
+int getservbyport_r(int port,
+                    const char* prots,
+                    struct servent* se,
+                    char* buf,
+                    size_t buflen,
+                    struct servent** res) {
+  int i;
+  struct sockaddr_in sin = {
+      .sin_family = AF_INET, .sin_port = port,
+  };
 
-	if (!prots) {
-		int r = getservbyport_r(port, "tcp", se, buf, buflen, res);
-		if (r) r = getservbyport_r(port, "udp", se, buf, buflen, res);
-		return r;
-	}
+  if (!prots) {
+    int r = getservbyport_r(port, "tcp", se, buf, buflen, res);
+    if (r)
+      r = getservbyport_r(port, "udp", se, buf, buflen, res);
+    return r;
+  }
 
-	/* Align buffer */
-	i = (uintptr_t)buf & sizeof(char *)-1;
-	if (!i) i = sizeof(char *);
-	if (buflen < 3*sizeof(char *)-i)
-		return ERANGE;
-	buf += sizeof(char *)-i;
-	buflen -= sizeof(char *)-i;
+  /* Align buffer */
+  i = (uintptr_t)buf & sizeof(char*) - 1;
+  if (!i)
+    i = sizeof(char*);
+  if (buflen < 3 * sizeof(char*) - i)
+    return ERANGE;
+  buf += sizeof(char*) - i;
+  buflen -= sizeof(char*) - i;
 
-	if (strcmp(prots, "tcp") && strcmp(prots, "udp")) return EINVAL;
+  if (strcmp(prots, "tcp") && strcmp(prots, "udp"))
+    return EINVAL;
 
-	se->s_port = port;
-	se->s_proto = (char *)prots;
-	se->s_aliases = (void *)buf;
-	buf += 2*sizeof(char *);
-	buflen -= 2*sizeof(char *);
-	se->s_aliases[1] = 0;
-	se->s_aliases[0] = se->s_name = buf;
+  se->s_port = port;
+  se->s_proto = (char*)prots;
+  se->s_aliases = (void*)buf;
+  buf += 2 * sizeof(char*);
+  buflen -= 2 * sizeof(char*);
+  se->s_aliases[1] = 0;
+  se->s_aliases[0] = se->s_name = buf;
 
-	switch (getnameinfo((void *)&sin, sizeof sin, 0, 0, buf, buflen,
-		strcmp(prots, "udp") ? 0 : NI_DGRAM)) {
-	case EAI_MEMORY:
-	case EAI_SYSTEM:
-		return ENOMEM;
-	default:
-		return ENOENT;
-	case 0:
-		break;
-	}
+  switch (getnameinfo((void*)&sin, sizeof sin, 0, 0, buf, buflen,
+                      strcmp(prots, "udp") ? 0 : NI_DGRAM)) {
+    case EAI_MEMORY:
+    case EAI_SYSTEM:
+      return ENOMEM;
+    default:
+      return ENOENT;
+    case 0:
+      break;
+  }
 
-	*res = se;
-	return 0;
+  *res = se;
+  return 0;
 }
diff --git a/fusl/src/network/getsockname.c b/fusl/src/network/getsockname.c
index 7885fc1..2d8d2b6 100644
--- a/fusl/src/network/getsockname.c
+++ b/fusl/src/network/getsockname.c
@@ -1,7 +1,8 @@
 #include <sys/socket.h>
 #include "syscall.h"
 
-int getsockname(int fd, struct sockaddr *restrict addr, socklen_t *restrict len)
-{
-	return socketcall(getsockname, fd, addr, len, 0, 0, 0);
+int getsockname(int fd,
+                struct sockaddr* restrict addr,
+                socklen_t* restrict len) {
+  return socketcall(getsockname, fd, addr, len, 0, 0, 0);
 }
diff --git a/fusl/src/network/getsockopt.c b/fusl/src/network/getsockopt.c
index 28079d8..d4713bd 100644
--- a/fusl/src/network/getsockopt.c
+++ b/fusl/src/network/getsockopt.c
@@ -1,7 +1,10 @@
 #include <sys/socket.h>
 #include "syscall.h"
 
-int getsockopt(int fd, int level, int optname, void *restrict optval, socklen_t *restrict optlen)
-{
-	return socketcall(getsockopt, fd, level, optname, optval, optlen, 0);
+int getsockopt(int fd,
+               int level,
+               int optname,
+               void* restrict optval,
+               socklen_t* restrict optlen) {
+  return socketcall(getsockopt, fd, level, optname, optval, optlen, 0);
 }
diff --git a/fusl/src/network/h_errno.c b/fusl/src/network/h_errno.c
index 4f700ce..7741a53 100644
--- a/fusl/src/network/h_errno.c
+++ b/fusl/src/network/h_errno.c
@@ -3,7 +3,6 @@
 #undef h_errno
 int h_errno;
 
-int *__h_errno_location(void)
-{
-	return &h_errno;
+int* __h_errno_location(void) {
+  return &h_errno;
 }
diff --git a/fusl/src/network/herror.c b/fusl/src/network/herror.c
index 65f25ff..2261d22 100644
--- a/fusl/src/network/herror.c
+++ b/fusl/src/network/herror.c
@@ -2,7 +2,7 @@
 #include <stdio.h>
 #include <netdb.h>
 
-void herror(const char *msg)
-{
-	fprintf(stderr, "%s%s%s", msg?msg:"", msg?": ":"", hstrerror(h_errno));
+void herror(const char* msg) {
+  fprintf(stderr, "%s%s%s", msg ? msg : "", msg ? ": " : "",
+          hstrerror(h_errno));
 }
diff --git a/fusl/src/network/hstrerror.c b/fusl/src/network/hstrerror.c
index a4d001c..561bd54 100644
--- a/fusl/src/network/hstrerror.c
+++ b/fusl/src/network/hstrerror.c
@@ -3,16 +3,18 @@
 #include "locale_impl.h"
 
 static const char msgs[] =
-	"Host not found\0"
-	"Try again\0"
-	"Non-recoverable error\0"
-	"Address not available\0"
-	"\0Unknown error";
+    "Host not found\0"
+    "Try again\0"
+    "Non-recoverable error\0"
+    "Address not available\0"
+    "\0Unknown error";
 
-const char *hstrerror(int ecode)
-{
-	const char *s;
-	for (s=msgs, ecode--; ecode && *s; ecode--, s++) for (; *s; s++);
-	if (!*s) s++;
-	return LCTRANS_CUR(s);
+const char* hstrerror(int ecode) {
+  const char* s;
+  for (s = msgs, ecode--; ecode && *s; ecode--, s++)
+    for (; *s; s++)
+      ;
+  if (!*s)
+    s++;
+  return LCTRANS_CUR(s);
 }
diff --git a/fusl/src/network/htonl.c b/fusl/src/network/htonl.c
index 6622d16..64653f4 100644
--- a/fusl/src/network/htonl.c
+++ b/fusl/src/network/htonl.c
@@ -1,8 +1,10 @@
 #include <netinet/in.h>
 #include <byteswap.h>
 
-uint32_t htonl(uint32_t n)
-{
-	union { int i; char c; } u = { 1 };
-	return u.c ? bswap_32(n) : n;
+uint32_t htonl(uint32_t n) {
+  union {
+    int i;
+    char c;
+  } u = {1};
+  return u.c ? bswap_32(n) : n;
 }
diff --git a/fusl/src/network/htons.c b/fusl/src/network/htons.c
index 03a3a1d..31dc13e 100644
--- a/fusl/src/network/htons.c
+++ b/fusl/src/network/htons.c
@@ -1,8 +1,10 @@
 #include <netinet/in.h>
 #include <byteswap.h>
 
-uint16_t htons(uint16_t n)
-{
-	union { int i; char c; } u = { 1 };
-	return u.c ? bswap_16(n) : n;
+uint16_t htons(uint16_t n) {
+  union {
+    int i;
+    char c;
+  } u = {1};
+  return u.c ? bswap_16(n) : n;
 }
diff --git a/fusl/src/network/if_freenameindex.c b/fusl/src/network/if_freenameindex.c
index 89bafcc..3132d77 100644
--- a/fusl/src/network/if_freenameindex.c
+++ b/fusl/src/network/if_freenameindex.c
@@ -1,7 +1,6 @@
 #include <net/if.h>
 #include <stdlib.h>
 
-void if_freenameindex(struct if_nameindex *idx)
-{
-	free(idx);
+void if_freenameindex(struct if_nameindex* idx) {
+  free(idx);
 }
diff --git a/fusl/src/network/if_indextoname.c b/fusl/src/network/if_indextoname.c
index 6ee7f13..26a33b1 100644
--- a/fusl/src/network/if_indextoname.c
+++ b/fusl/src/network/if_indextoname.c
@@ -5,14 +5,14 @@
 #include <string.h>
 #include "syscall.h"
 
-char *if_indextoname(unsigned index, char *name)
-{
-	struct ifreq ifr;
-	int fd, r;
+char* if_indextoname(unsigned index, char* name) {
+  struct ifreq ifr;
+  int fd, r;
 
-	if ((fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) return 0;
-	ifr.ifr_ifindex = index;
-	r = ioctl(fd, SIOCGIFNAME, &ifr);
-	__syscall(SYS_close, fd);
-	return r < 0 ? 0 : strncpy(name, ifr.ifr_name, IF_NAMESIZE);
+  if ((fd = socket(AF_UNIX, SOCK_DGRAM | SOCK_CLOEXEC, 0)) < 0)
+    return 0;
+  ifr.ifr_ifindex = index;
+  r = ioctl(fd, SIOCGIFNAME, &ifr);
+  __syscall(SYS_close, fd);
+  return r < 0 ? 0 : strncpy(name, ifr.ifr_name, IF_NAMESIZE);
 }
diff --git a/fusl/src/network/if_nameindex.c b/fusl/src/network/if_nameindex.c
index 2deaef7..db1f384 100644
--- a/fusl/src/network/if_nameindex.c
+++ b/fusl/src/network/if_nameindex.c
@@ -10,105 +10,109 @@
 #define IFADDRS_HASH_SIZE 64
 
 struct ifnamemap {
-	unsigned int hash_next;
-	unsigned int index;
-	unsigned char namelen;
-	char name[IFNAMSIZ];
+  unsigned int hash_next;
+  unsigned int index;
+  unsigned char namelen;
+  char name[IFNAMSIZ];
 };
 
 struct ifnameindexctx {
-	unsigned int num, allocated, str_bytes;
-	struct ifnamemap *list;
-	unsigned int hash[IFADDRS_HASH_SIZE];
+  unsigned int num, allocated, str_bytes;
+  struct ifnamemap* list;
+  unsigned int hash[IFADDRS_HASH_SIZE];
 };
 
-static int netlink_msg_to_nameindex(void *pctx, struct nlmsghdr *h)
-{
-	struct ifnameindexctx *ctx = pctx;
-	struct ifnamemap *map;
-	struct rtattr *rta;
-	unsigned int i;
-	int index, type, namelen, bucket;
+static int netlink_msg_to_nameindex(void* pctx, struct nlmsghdr* h) {
+  struct ifnameindexctx* ctx = pctx;
+  struct ifnamemap* map;
+  struct rtattr* rta;
+  unsigned int i;
+  int index, type, namelen, bucket;
 
-	if (h->nlmsg_type == RTM_NEWLINK) {
-		struct ifinfomsg *ifi = NLMSG_DATA(h);
-		index = ifi->ifi_index;
-		type = IFLA_IFNAME;
-		rta = NLMSG_RTA(h, sizeof(*ifi));
-	} else {
-		struct ifaddrmsg *ifa = NLMSG_DATA(h);
-		index = ifa->ifa_index;
-		type = IFA_LABEL;
-		rta = NLMSG_RTA(h, sizeof(*ifa));
-	}
-	for (; NLMSG_RTAOK(rta, h); rta = RTA_NEXT(rta)) {
-		if (rta->rta_type != type) continue;
+  if (h->nlmsg_type == RTM_NEWLINK) {
+    struct ifinfomsg* ifi = NLMSG_DATA(h);
+    index = ifi->ifi_index;
+    type = IFLA_IFNAME;
+    rta = NLMSG_RTA(h, sizeof(*ifi));
+  } else {
+    struct ifaddrmsg* ifa = NLMSG_DATA(h);
+    index = ifa->ifa_index;
+    type = IFA_LABEL;
+    rta = NLMSG_RTA(h, sizeof(*ifa));
+  }
+  for (; NLMSG_RTAOK(rta, h); rta = RTA_NEXT(rta)) {
+    if (rta->rta_type != type)
+      continue;
 
-		namelen = RTA_DATALEN(rta) - 1;
-		if (namelen > IFNAMSIZ) return 0;
+    namelen = RTA_DATALEN(rta) - 1;
+    if (namelen > IFNAMSIZ)
+      return 0;
 
-		/* suppress duplicates */
-		bucket = index % IFADDRS_HASH_SIZE;
-		i = ctx->hash[bucket];
-		while (i) {
-			map = &ctx->list[i-1];
-			if (map->index == index &&
-			    map->namelen == namelen &&
-			    memcmp(map->name, RTA_DATA(rta), namelen) == 0)
-				return 0;
-			i = map->hash_next;
-		}
+    /* suppress duplicates */
+    bucket = index % IFADDRS_HASH_SIZE;
+    i = ctx->hash[bucket];
+    while (i) {
+      map = &ctx->list[i - 1];
+      if (map->index == index && map->namelen == namelen &&
+          memcmp(map->name, RTA_DATA(rta), namelen) == 0)
+        return 0;
+      i = map->hash_next;
+    }
 
-		if (ctx->num >= ctx->allocated) {
-			size_t a = ctx->allocated ? ctx->allocated * 2 + 1 : 8;
-			if (a > SIZE_MAX/sizeof *map) return -1;
-			map = realloc(ctx->list, a * sizeof *map);
-			if (!map) return -1;
-			ctx->list = map;
-			ctx->allocated = a;
-		}
-		map = &ctx->list[ctx->num];
-		map->index = index;
-		map->namelen = namelen;
-		memcpy(map->name, RTA_DATA(rta), namelen);
-		ctx->str_bytes += namelen + 1;
-		ctx->num++;
-		map->hash_next = ctx->hash[bucket];
-		ctx->hash[bucket] = ctx->num;
-		return 0;
-	}
-	return 0;
+    if (ctx->num >= ctx->allocated) {
+      size_t a = ctx->allocated ? ctx->allocated * 2 + 1 : 8;
+      if (a > SIZE_MAX / sizeof *map)
+        return -1;
+      map = realloc(ctx->list, a * sizeof *map);
+      if (!map)
+        return -1;
+      ctx->list = map;
+      ctx->allocated = a;
+    }
+    map = &ctx->list[ctx->num];
+    map->index = index;
+    map->namelen = namelen;
+    memcpy(map->name, RTA_DATA(rta), namelen);
+    ctx->str_bytes += namelen + 1;
+    ctx->num++;
+    map->hash_next = ctx->hash[bucket];
+    ctx->hash[bucket] = ctx->num;
+    return 0;
+  }
+  return 0;
 }
 
-struct if_nameindex *if_nameindex()
-{
-	struct ifnameindexctx _ctx, *ctx = &_ctx;
-	struct if_nameindex *ifs = 0, *d;
-	struct ifnamemap *s;
-	char *p;
-	int i;
-	int cs;
+struct if_nameindex* if_nameindex() {
+  struct ifnameindexctx _ctx, *ctx = &_ctx;
+  struct if_nameindex *ifs = 0, *d;
+  struct ifnamemap* s;
+  char* p;
+  int i;
+  int cs;
 
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-	memset(ctx, 0, sizeof(*ctx));
-	if (__rtnetlink_enumerate(AF_UNSPEC, AF_INET, netlink_msg_to_nameindex, ctx) < 0) goto err;
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  memset(ctx, 0, sizeof(*ctx));
+  if (__rtnetlink_enumerate(AF_UNSPEC, AF_INET, netlink_msg_to_nameindex, ctx) <
+      0)
+    goto err;
 
-	ifs = malloc(sizeof(struct if_nameindex[ctx->num+1]) + ctx->str_bytes);
-	if (!ifs) goto err;
+  ifs = malloc(sizeof(struct if_nameindex[ctx->num + 1]) + ctx->str_bytes);
+  if (!ifs)
+    goto err;
 
-	p = (char*)(ifs + ctx->num + 1);
-	for (i = ctx->num, d = ifs, s = ctx->list; i; i--, s++, d++) {
-		d->if_index = s->index;
-		d->if_name = p;
-		memcpy(p, s->name, s->namelen);
-		p += s->namelen;
-		*p++ = 0;
-	}
-	d->if_index = 0;
-	d->if_name = 0;
+  p = (char*)(ifs + ctx->num + 1);
+  for (i = ctx->num, d = ifs, s = ctx->list; i; i--, s++, d++) {
+    d->if_index = s->index;
+    d->if_name = p;
+    memcpy(p, s->name, s->namelen);
+    p += s->namelen;
+    *p++ = 0;
+  }
+  d->if_index = 0;
+  d->if_name = 0;
 err:
-	pthread_setcancelstate(cs, 0);
-	free(ctx->list);
-	errno = ENOBUFS;
-	return ifs;
+  pthread_setcancelstate(cs, 0);
+  free(ctx->list);
+  errno = ENOBUFS;
+  return ifs;
 }
diff --git a/fusl/src/network/if_nametoindex.c b/fusl/src/network/if_nametoindex.c
index 331413c..02d2389 100644
--- a/fusl/src/network/if_nametoindex.c
+++ b/fusl/src/network/if_nametoindex.c
@@ -5,14 +5,14 @@
 #include <string.h>
 #include "syscall.h"
 
-unsigned if_nametoindex(const char *name)
-{
-	struct ifreq ifr;
-	int fd, r;
+unsigned if_nametoindex(const char* name) {
+  struct ifreq ifr;
+  int fd, r;
 
-	if ((fd = socket(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0)) < 0) return 0;
-	strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name);
-	r = ioctl(fd, SIOCGIFINDEX, &ifr);
-	__syscall(SYS_close, fd);
-	return r < 0 ? 0 : ifr.ifr_ifindex;
+  if ((fd = socket(AF_UNIX, SOCK_DGRAM | SOCK_CLOEXEC, 0)) < 0)
+    return 0;
+  strncpy(ifr.ifr_name, name, sizeof ifr.ifr_name);
+  r = ioctl(fd, SIOCGIFINDEX, &ifr);
+  __syscall(SYS_close, fd);
+  return r < 0 ? 0 : ifr.ifr_ifindex;
 }
diff --git a/fusl/src/network/inet_addr.c b/fusl/src/network/inet_addr.c
index 10b21f2..13e313b 100644
--- a/fusl/src/network/inet_addr.c
+++ b/fusl/src/network/inet_addr.c
@@ -2,11 +2,11 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 
-int __inet_aton(const char *, struct in_addr *);
+int __inet_aton(const char*, struct in_addr*);
 
-in_addr_t inet_addr(const char *p)
-{
-	struct in_addr a;
-	if (!__inet_aton(p, &a)) return -1;
-	return a.s_addr;
+in_addr_t inet_addr(const char* p) {
+  struct in_addr a;
+  if (!__inet_aton(p, &a))
+    return -1;
+  return a.s_addr;
 }
diff --git a/fusl/src/network/inet_aton.c b/fusl/src/network/inet_aton.c
index 0f9a45f..65d730b 100644
--- a/fusl/src/network/inet_aton.c
+++ b/fusl/src/network/inet_aton.c
@@ -4,38 +4,40 @@
 #include <arpa/inet.h>
 #include "libc.h"
 
-int __inet_aton(const char *s0, struct in_addr *dest)
-{
-	const char *s = s0;
-	unsigned char *d = (void *)dest;
-	unsigned long a[4] = { 0 };
-	char *z;
-	int i;
+int __inet_aton(const char* s0, struct in_addr* dest) {
+  const char* s = s0;
+  unsigned char* d = (void*)dest;
+  unsigned long a[4] = {0};
+  char* z;
+  int i;
 
-	for (i=0; i<4; i++) {
-		a[i] = strtoul(s, &z, 0);
-		if (z==s || (*z && *z != '.') || !isdigit(*s))
-			return 0;
-		if (!*z) break;
-		s=z+1;
-	}
-	if (i==4) return 0;
-	switch (i) {
-	case 0:
-		a[1] = a[0] & 0xffffff;
-		a[0] >>= 24;
-	case 1:
-		a[2] = a[1] & 0xffff;
-		a[1] >>= 16;
-	case 2:
-		a[3] = a[2] & 0xff;
-		a[2] >>= 8;
-	}
-	for (i=0; i<4; i++) {
-		if (a[i] > 255) return 0;
-		d[i] = a[i];
-	}
-	return 1;
+  for (i = 0; i < 4; i++) {
+    a[i] = strtoul(s, &z, 0);
+    if (z == s || (*z && *z != '.') || !isdigit(*s))
+      return 0;
+    if (!*z)
+      break;
+    s = z + 1;
+  }
+  if (i == 4)
+    return 0;
+  switch (i) {
+    case 0:
+      a[1] = a[0] & 0xffffff;
+      a[0] >>= 24;
+    case 1:
+      a[2] = a[1] & 0xffff;
+      a[1] >>= 16;
+    case 2:
+      a[3] = a[2] & 0xff;
+      a[2] >>= 8;
+  }
+  for (i = 0; i < 4; i++) {
+    if (a[i] > 255)
+      return 0;
+    d[i] = a[i];
+  }
+  return 1;
 }
 
 weak_alias(__inet_aton, inet_aton);
diff --git a/fusl/src/network/inet_legacy.c b/fusl/src/network/inet_legacy.c
index 621b47b..8ff40f3 100644
--- a/fusl/src/network/inet_legacy.c
+++ b/fusl/src/network/inet_legacy.c
@@ -2,31 +2,34 @@
 #include <netinet/in.h>
 #include <arpa/inet.h>
 
-in_addr_t inet_network(const char *p)
-{
-	return ntohl(inet_addr(p));
+in_addr_t inet_network(const char* p) {
+  return ntohl(inet_addr(p));
 }
 
-struct in_addr inet_makeaddr(in_addr_t n, in_addr_t h)
-{
-	if (n < 256) h |= n<<24;
-	else if (n < 65536) h |= n<<16;
-	else h |= n<<8;
-	return (struct in_addr){ h };
+struct in_addr inet_makeaddr(in_addr_t n, in_addr_t h) {
+  if (n < 256)
+    h |= n << 24;
+  else if (n < 65536)
+    h |= n << 16;
+  else
+    h |= n << 8;
+  return (struct in_addr){h};
 }
 
-in_addr_t inet_lnaof(struct in_addr in)
-{
-	uint32_t h = in.s_addr;
-	if (h>>24 < 128) return h & 0xffffff;
-	if (h>>24 < 192) return h & 0xffff;
-	return h & 0xff;
+in_addr_t inet_lnaof(struct in_addr in) {
+  uint32_t h = in.s_addr;
+  if (h >> 24 < 128)
+    return h & 0xffffff;
+  if (h >> 24 < 192)
+    return h & 0xffff;
+  return h & 0xff;
 }
 
-in_addr_t inet_netof(struct in_addr in)
-{
-	uint32_t h = in.s_addr;
-	if (h>>24 < 128) return h >> 24;
-	if (h>>24 < 192) return h >> 16;
-	return h >> 8;
+in_addr_t inet_netof(struct in_addr in) {
+  uint32_t h = in.s_addr;
+  if (h >> 24 < 128)
+    return h >> 24;
+  if (h >> 24 < 192)
+    return h >> 16;
+  return h >> 8;
 }
diff --git a/fusl/src/network/inet_ntoa.c b/fusl/src/network/inet_ntoa.c
index 71411e0..31ce26d 100644
--- a/fusl/src/network/inet_ntoa.c
+++ b/fusl/src/network/inet_ntoa.c
@@ -1,10 +1,9 @@
 #include <arpa/inet.h>
 #include <stdio.h>
 
-char *inet_ntoa(struct in_addr in)
-{
-	static char buf[16];
-	unsigned char *a = (void *)&in;
-	snprintf(buf, sizeof buf, "%d.%d.%d.%d", a[0], a[1], a[2], a[3]);
-	return buf;
+char* inet_ntoa(struct in_addr in) {
+  static char buf[16];
+  unsigned char* a = (void*)&in;
+  snprintf(buf, sizeof buf, "%d.%d.%d.%d", a[0], a[1], a[2], a[3]);
+  return buf;
 }
diff --git a/fusl/src/network/inet_ntop.c b/fusl/src/network/inet_ntop.c
index 14f9f4c..c518d4a 100644
--- a/fusl/src/network/inet_ntop.c
+++ b/fusl/src/network/inet_ntop.c
@@ -4,51 +4,51 @@
 #include <stdio.h>
 #include <string.h>
 
-const char *inet_ntop(int af, const void *restrict a0, char *restrict s, socklen_t l)
-{
-	const unsigned char *a = a0;
-	int i, j, max, best;
-	char buf[100];
+const char* inet_ntop(int af,
+                      const void* restrict a0,
+                      char* restrict s,
+                      socklen_t l) {
+  const unsigned char* a = a0;
+  int i, j, max, best;
+  char buf[100];
 
-	switch (af) {
-	case AF_INET:
-		if (snprintf(s, l, "%d.%d.%d.%d", a[0],a[1],a[2],a[3]) < l)
-			return s;
-		break;
-	case AF_INET6:
-		if (memcmp(a, "\0\0\0\0\0\0\0\0\0\0\377\377", 12))
-			snprintf(buf, sizeof buf,
-				"%x:%x:%x:%x:%x:%x:%x:%x",
-				256*a[0]+a[1],256*a[2]+a[3],
-				256*a[4]+a[5],256*a[6]+a[7],
-				256*a[8]+a[9],256*a[10]+a[11],
-				256*a[12]+a[13],256*a[14]+a[15]);
-		else
-			snprintf(buf, sizeof buf,
-				"%x:%x:%x:%x:%x:%x:%d.%d.%d.%d",
-				256*a[0]+a[1],256*a[2]+a[3],
-				256*a[4]+a[5],256*a[6]+a[7],
-				256*a[8]+a[9],256*a[10]+a[11],
-				a[12],a[13],a[14],a[15]);
-		/* Replace longest /(^0|:)[:0]{2,}/ with "::" */
-		for (i=best=0, max=2; buf[i]; i++) {
-			if (i && buf[i] != ':') continue;
-			j = strspn(buf+i, ":0");
-			if (j>max) best=i, max=j;
-		}
-		if (max>2) {
-			buf[best] = buf[best+1] = ':';
-			memmove(buf+best+2, buf+best+max, i-best-max+1);
-		}
-		if (strlen(buf) < l) {
-			strcpy(s, buf);
-			return s;
-		}
-		break;
-	default:
-		errno = EAFNOSUPPORT;
-		return 0;
-	}
-	errno = ENOSPC;
-	return 0;
+  switch (af) {
+    case AF_INET:
+      if (snprintf(s, l, "%d.%d.%d.%d", a[0], a[1], a[2], a[3]) < l)
+        return s;
+      break;
+    case AF_INET6:
+      if (memcmp(a, "\0\0\0\0\0\0\0\0\0\0\377\377", 12))
+        snprintf(buf, sizeof buf, "%x:%x:%x:%x:%x:%x:%x:%x", 256 * a[0] + a[1],
+                 256 * a[2] + a[3], 256 * a[4] + a[5], 256 * a[6] + a[7],
+                 256 * a[8] + a[9], 256 * a[10] + a[11], 256 * a[12] + a[13],
+                 256 * a[14] + a[15]);
+      else
+        snprintf(buf, sizeof buf, "%x:%x:%x:%x:%x:%x:%d.%d.%d.%d",
+                 256 * a[0] + a[1], 256 * a[2] + a[3], 256 * a[4] + a[5],
+                 256 * a[6] + a[7], 256 * a[8] + a[9], 256 * a[10] + a[11],
+                 a[12], a[13], a[14], a[15]);
+      /* Replace longest /(^0|:)[:0]{2,}/ with "::" */
+      for (i = best = 0, max = 2; buf[i]; i++) {
+        if (i && buf[i] != ':')
+          continue;
+        j = strspn(buf + i, ":0");
+        if (j > max)
+          best = i, max = j;
+      }
+      if (max > 2) {
+        buf[best] = buf[best + 1] = ':';
+        memmove(buf + best + 2, buf + best + max, i - best - max + 1);
+      }
+      if (strlen(buf) < l) {
+        strcpy(s, buf);
+        return s;
+      }
+      break;
+    default:
+      errno = EAFNOSUPPORT;
+      return 0;
+  }
+  errno = ENOSPC;
+  return 0;
 }
diff --git a/fusl/src/network/inet_pton.c b/fusl/src/network/inet_pton.c
index d36c368..d3a5997 100644
--- a/fusl/src/network/inet_pton.c
+++ b/fusl/src/network/inet_pton.c
@@ -4,68 +4,80 @@
 #include <errno.h>
 #include <string.h>
 
-static int hexval(unsigned c)
-{
-	if (c-'0'<10) return c-'0';
-	c |= 32;
-	if (c-'a'<6) return c-'a'+10;
-	return -1;
+static int hexval(unsigned c) {
+  if (c - '0' < 10)
+    return c - '0';
+  c |= 32;
+  if (c - 'a' < 6)
+    return c - 'a' + 10;
+  return -1;
 }
 
-int inet_pton(int af, const char *restrict s, void *restrict a0)
-{
-	uint16_t ip[8];
-	unsigned char *a = a0;
-	int i, j, v, d, brk=-1, need_v4=0;
+int inet_pton(int af, const char* restrict s, void* restrict a0) {
+  uint16_t ip[8];
+  unsigned char* a = a0;
+  int i, j, v, d, brk = -1, need_v4 = 0;
 
-	if (af==AF_INET) {
-		for (i=0; i<4; i++) {
-			for (v=j=0; j<3 && isdigit(s[j]); j++)
-				v = 10*v + s[j]-'0';
-			if (j==0 || (j>1 && s[0]=='0') || v>255) return 0;
-			a[i] = v;
-			if (s[j]==0 && i==3) return 1;
-			if (s[j]!='.') return 0;
-			s += j+1;
-		}
-		return 0;
-	} else if (af!=AF_INET6) {
-		errno = EAFNOSUPPORT;
-		return -1;
-	}
+  if (af == AF_INET) {
+    for (i = 0; i < 4; i++) {
+      for (v = j = 0; j < 3 && isdigit(s[j]); j++)
+        v = 10 * v + s[j] - '0';
+      if (j == 0 || (j > 1 && s[0] == '0') || v > 255)
+        return 0;
+      a[i] = v;
+      if (s[j] == 0 && i == 3)
+        return 1;
+      if (s[j] != '.')
+        return 0;
+      s += j + 1;
+    }
+    return 0;
+  } else if (af != AF_INET6) {
+    errno = EAFNOSUPPORT;
+    return -1;
+  }
 
-	if (*s==':' && *++s!=':') return 0;
+  if (*s == ':' && *++s != ':')
+    return 0;
 
-	for (i=0; ; i++) {
-		if (s[0]==':' && brk<0) {
-			brk=i;
-			ip[i&7]=0;
-			if (!*++s) break;
-			if (i==7) return 0;
-			continue;
-		}
-		for (v=j=0; j<4 && (d=hexval(s[j]))>=0; j++)
-			v=16*v+d;
-		if (j==0) return 0;
-		ip[i&7] = v;
-		if (!s[j] && (brk>=0 || i==7)) break;
-		if (i==7) return 0;
-		if (s[j]!=':') {
-			if (s[j]!='.' || (i<6 && brk<0)) return 0;
-			need_v4=1;
-			i++;
-			break;
-		}
-		s += j+1;
-	}
-	if (brk>=0) {
-		memmove(ip+brk+7-i, ip+brk, 2*(i+1-brk));
-		for (j=0; j<7-i; j++) ip[brk+j] = 0;
-	}
-	for (j=0; j<8; j++) {
-		*a++ = ip[j]>>8;
-		*a++ = ip[j];
-	}
-	if (need_v4 && inet_pton(AF_INET, (void *)s, a-4) <= 0) return 0;
-	return 1;
+  for (i = 0;; i++) {
+    if (s[0] == ':' && brk < 0) {
+      brk = i;
+      ip[i & 7] = 0;
+      if (!*++s)
+        break;
+      if (i == 7)
+        return 0;
+      continue;
+    }
+    for (v = j = 0; j < 4 && (d = hexval(s[j])) >= 0; j++)
+      v = 16 * v + d;
+    if (j == 0)
+      return 0;
+    ip[i & 7] = v;
+    if (!s[j] && (brk >= 0 || i == 7))
+      break;
+    if (i == 7)
+      return 0;
+    if (s[j] != ':') {
+      if (s[j] != '.' || (i < 6 && brk < 0))
+        return 0;
+      need_v4 = 1;
+      i++;
+      break;
+    }
+    s += j + 1;
+  }
+  if (brk >= 0) {
+    memmove(ip + brk + 7 - i, ip + brk, 2 * (i + 1 - brk));
+    for (j = 0; j < 7 - i; j++)
+      ip[brk + j] = 0;
+  }
+  for (j = 0; j < 8; j++) {
+    *a++ = ip[j] >> 8;
+    *a++ = ip[j];
+  }
+  if (need_v4 && inet_pton(AF_INET, (void*)s, a - 4) <= 0)
+    return 0;
+  return 1;
 }
diff --git a/fusl/src/network/listen.c b/fusl/src/network/listen.c
index f84ad03..f26d2d4 100644
--- a/fusl/src/network/listen.c
+++ b/fusl/src/network/listen.c
@@ -1,7 +1,6 @@
 #include <sys/socket.h>
 #include "syscall.h"
 
-int listen(int fd, int backlog)
-{
-	return socketcall(listen, fd, backlog, 0, 0, 0, 0);
+int listen(int fd, int backlog) {
+  return socketcall(listen, fd, backlog, 0, 0, 0, 0);
 }
diff --git a/fusl/src/network/lookup.h b/fusl/src/network/lookup.h
index 0468edb..deb1826 100644
--- a/fusl/src/network/lookup.h
+++ b/fusl/src/network/lookup.h
@@ -5,23 +5,23 @@
 #include <stddef.h>
 
 struct address {
-	int family;
-	unsigned scopeid;
-	uint8_t addr[16];
-	int sortkey;
+  int family;
+  unsigned scopeid;
+  uint8_t addr[16];
+  int sortkey;
 };
 
 struct service {
-	uint16_t port;
-	unsigned char proto, socktype;
+  uint16_t port;
+  unsigned char proto, socktype;
 };
 
 #define MAXNS 3
 
 struct resolvconf {
-	struct address ns[MAXNS];
-	unsigned nns, attempts, ndots;
-	unsigned timeout;
+  struct address ns[MAXNS];
+  unsigned nns, attempts, ndots;
+  unsigned timeout;
 };
 
 /* The limit of 48 results is a non-sharp bound on the number of addresses
@@ -30,10 +30,20 @@
 #define MAXADDRS 48
 #define MAXSERVS 2
 
-int __lookup_serv(struct service buf[static MAXSERVS], const char *name, int proto, int socktype, int flags);
-int __lookup_name(struct address buf[static MAXADDRS], char canon[static 256], const char *name, int family, int flags);
-int __lookup_ipliteral(struct address buf[static 1], const char *name, int family);
+int __lookup_serv(struct service buf[static MAXSERVS],
+                  const char* name,
+                  int proto,
+                  int socktype,
+                  int flags);
+int __lookup_name(struct address buf[static MAXADDRS],
+                  char canon[static 256],
+                  const char* name,
+                  int family,
+                  int flags);
+int __lookup_ipliteral(struct address buf[static 1],
+                       const char* name,
+                       int family);
 
-int __get_resolv_conf(struct resolvconf *, char *, size_t);
+int __get_resolv_conf(struct resolvconf*, char*, size_t);
 
 #endif
diff --git a/fusl/src/network/lookup_ipliteral.c b/fusl/src/network/lookup_ipliteral.c
index 8ed1460..8beffa6 100644
--- a/fusl/src/network/lookup_ipliteral.c
+++ b/fusl/src/network/lookup_ipliteral.c
@@ -9,49 +9,53 @@
 #include <ctype.h>
 #include "lookup.h"
 
-int __inet_aton(const char *, struct in_addr *);
+int __inet_aton(const char*, struct in_addr*);
 
-int __lookup_ipliteral(struct address buf[static 1], const char *name, int family)
-{
-	struct in_addr a4;
-	struct in6_addr a6;
-	if (__inet_aton(name, &a4) > 0) {
-		if (family == AF_INET6) /* wrong family */
-			return EAI_NONAME;
-		memcpy(&buf[0].addr, &a4, sizeof a4);
-		buf[0].family = AF_INET;
-		buf[0].scopeid = 0;
-		return 1;
-	}
+int __lookup_ipliteral(struct address buf[static 1],
+                       const char* name,
+                       int family) {
+  struct in_addr a4;
+  struct in6_addr a6;
+  if (__inet_aton(name, &a4) > 0) {
+    if (family == AF_INET6) /* wrong family */
+      return EAI_NONAME;
+    memcpy(&buf[0].addr, &a4, sizeof a4);
+    buf[0].family = AF_INET;
+    buf[0].scopeid = 0;
+    return 1;
+  }
 
-	char tmp[64];
-	char *p = strchr(name, '%'), *z;
-	unsigned long long scopeid = 0;
-	if (p && p-name < 64) {
-		memcpy(tmp, name, p-name);
-		tmp[p-name] = 0;
-		name = tmp;
-	}
+  char tmp[64];
+  char *p = strchr(name, '%'), *z;
+  unsigned long long scopeid = 0;
+  if (p && p - name < 64) {
+    memcpy(tmp, name, p - name);
+    tmp[p - name] = 0;
+    name = tmp;
+  }
 
-	if (inet_pton(AF_INET6, name, &a6) <= 0)
-		return 0;
-	if (family == AF_INET) /* wrong family */
-		return EAI_NONAME;
+  if (inet_pton(AF_INET6, name, &a6) <= 0)
+    return 0;
+  if (family == AF_INET) /* wrong family */
+    return EAI_NONAME;
 
-	memcpy(&buf[0].addr, &a6, sizeof a6);
-	buf[0].family = AF_INET6;
-	if (p) {
-		if (isdigit(*++p)) scopeid = strtoull(p, &z, 10);
-		else z = p-1;
-		if (*z) {
-			if (!IN6_IS_ADDR_LINKLOCAL(&a6) &&
-			    !IN6_IS_ADDR_MC_LINKLOCAL(&a6))
-				return EAI_NONAME;
-			scopeid = if_nametoindex(p);
-			if (!scopeid) return EAI_NONAME;
-		}
-		if (scopeid > UINT_MAX) return EAI_NONAME;
-	}
-	buf[0].scopeid = scopeid;
-	return 1;
+  memcpy(&buf[0].addr, &a6, sizeof a6);
+  buf[0].family = AF_INET6;
+  if (p) {
+    if (isdigit(*++p))
+      scopeid = strtoull(p, &z, 10);
+    else
+      z = p - 1;
+    if (*z) {
+      if (!IN6_IS_ADDR_LINKLOCAL(&a6) && !IN6_IS_ADDR_MC_LINKLOCAL(&a6))
+        return EAI_NONAME;
+      scopeid = if_nametoindex(p);
+      if (!scopeid)
+        return EAI_NONAME;
+    }
+    if (scopeid > UINT_MAX)
+      return EAI_NONAME;
+  }
+  buf[0].scopeid = scopeid;
+  return 1;
 }
diff --git a/fusl/src/network/lookup_name.c b/fusl/src/network/lookup_name.c
index a26ad53..b1f2487 100644
--- a/fusl/src/network/lookup_name.c
+++ b/fusl/src/network/lookup_name.c
@@ -14,200 +14,261 @@
 #include "stdio_impl.h"
 #include "syscall.h"
 
-static int is_valid_hostname(const char *host)
-{
-	const unsigned char *s;
-	if (strnlen(host, 255)-1 >= 254 || mbstowcs(0, host, 0) == -1) return 0;
-	for (s=(void *)host; *s>=0x80 || *s=='.' || *s=='-' || isalnum(*s); s++);
-	return !*s;
+static int is_valid_hostname(const char* host) {
+  const unsigned char* s;
+  if (strnlen(host, 255) - 1 >= 254 || mbstowcs(0, host, 0) == -1)
+    return 0;
+  for (s = (void*)host; *s >= 0x80 || *s == '.' || *s == '-' || isalnum(*s);
+       s++)
+    ;
+  return !*s;
 }
 
-static int name_from_null(struct address buf[static 2], const char *name, int family, int flags)
-{
-	int cnt = 0;
-	if (name) return 0;
-	if (flags & AI_PASSIVE) {
-		if (family != AF_INET6)
-			buf[cnt++] = (struct address){ .family = AF_INET };
-		if (family != AF_INET)
-			buf[cnt++] = (struct address){ .family = AF_INET6 };
-	} else {
-		if (family != AF_INET6)
-			buf[cnt++] = (struct address){ .family = AF_INET, .addr = { 127,0,0,1 } };
-		if (family != AF_INET)
-			buf[cnt++] = (struct address){ .family = AF_INET6, .addr = { [15] = 1 } };
-	}
-	return cnt;
+static int name_from_null(struct address buf[static 2],
+                          const char* name,
+                          int family,
+                          int flags) {
+  int cnt = 0;
+  if (name)
+    return 0;
+  if (flags & AI_PASSIVE) {
+    if (family != AF_INET6)
+      buf[cnt++] = (struct address){.family = AF_INET};
+    if (family != AF_INET)
+      buf[cnt++] = (struct address){.family = AF_INET6};
+  } else {
+    if (family != AF_INET6)
+      buf[cnt++] = (struct address){.family = AF_INET, .addr = {127, 0, 0, 1}};
+    if (family != AF_INET)
+      buf[cnt++] = (struct address){.family = AF_INET6, .addr = {[15] = 1}};
+  }
+  return cnt;
 }
 
-static int name_from_numeric(struct address buf[static 1], const char *name, int family)
-{
-	return __lookup_ipliteral(buf, name, family);
+static int name_from_numeric(struct address buf[static 1],
+                             const char* name,
+                             int family) {
+  return __lookup_ipliteral(buf, name, family);
 }
 
-static int name_from_hosts(struct address buf[static MAXADDRS], char canon[static 256], const char *name, int family)
-{
-	char line[512];
-	size_t l = strlen(name);
-	int cnt = 0;
-	unsigned char _buf[1032];
-	FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf);
-	if (!f) switch (errno) {
-	case ENOENT:
-	case ENOTDIR:
-	case EACCES:
-		return 0;
-	default:
-		return EAI_SYSTEM;
-	}
-	while (fgets(line, sizeof line, f) && cnt < MAXADDRS) {
-		char *p, *z;
+static int name_from_hosts(struct address buf[static MAXADDRS],
+                           char canon[static 256],
+                           const char* name,
+                           int family) {
+  char line[512];
+  size_t l = strlen(name);
+  int cnt = 0;
+  unsigned char _buf[1032];
+  FILE _f, *f = __fopen_rb_ca("/etc/hosts", &_f, _buf, sizeof _buf);
+  if (!f)
+    switch (errno) {
+      case ENOENT:
+      case ENOTDIR:
+      case EACCES:
+        return 0;
+      default:
+        return EAI_SYSTEM;
+    }
+  while (fgets(line, sizeof line, f) && cnt < MAXADDRS) {
+    char *p, *z;
 
-		if ((p=strchr(line, '#'))) *p++='\n', *p=0;
-		for(p=line+1; (p=strstr(p, name)) &&
-			(!isspace(p[-1]) || !isspace(p[l])); p++);
-		if (!p) continue;
+    if ((p = strchr(line, '#')))
+      *p++ = '\n', *p = 0;
+    for (p = line + 1;
+         (p = strstr(p, name)) && (!isspace(p[-1]) || !isspace(p[l])); p++)
+      ;
+    if (!p)
+      continue;
 
-		/* Isolate IP address to parse */
-		for (p=line; *p && !isspace(*p); p++);
-		*p++ = 0;
-		if (name_from_numeric(buf+cnt, line, family))
-			cnt++;
+    /* Isolate IP address to parse */
+    for (p = line; *p && !isspace(*p); p++)
+      ;
+    *p++ = 0;
+    if (name_from_numeric(buf + cnt, line, family))
+      cnt++;
 
-		/* Extract first name as canonical name */
-		for (; *p && isspace(*p); p++);
-		for (z=p; *z && !isspace(*z); z++);
-		*z = 0;
-		if (is_valid_hostname(p)) memcpy(canon, p, z-p+1);
-	}
-	__fclose_ca(f);
-	return cnt;
+    /* Extract first name as canonical name */
+    for (; *p && isspace(*p); p++)
+      ;
+    for (z = p; *z && !isspace(*z); z++)
+      ;
+    *z = 0;
+    if (is_valid_hostname(p))
+      memcpy(canon, p, z - p + 1);
+  }
+  __fclose_ca(f);
+  return cnt;
 }
 
 struct dpc_ctx {
-	struct address *addrs;
-	char *canon;
-	int cnt;
+  struct address* addrs;
+  char* canon;
+  int cnt;
 };
 
-int __dns_parse(const unsigned char *, int, int (*)(void *, int, const void *, int, const void *), void *);
-int __dn_expand(const unsigned char *, const unsigned char *, const unsigned char *, char *, int);
-int __res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int);
-int __res_msend_rc(int, const unsigned char *const *, const int *, unsigned char *const *, int *, int, const struct resolvconf *);
+int __dns_parse(const unsigned char*,
+                int,
+                int (*)(void*, int, const void*, int, const void*),
+                void*);
+int __dn_expand(const unsigned char*,
+                const unsigned char*,
+                const unsigned char*,
+                char*,
+                int);
+int __res_mkquery(int,
+                  const char*,
+                  int,
+                  int,
+                  const unsigned char*,
+                  int,
+                  const unsigned char*,
+                  unsigned char*,
+                  int);
+int __res_msend_rc(int,
+                   const unsigned char* const*,
+                   const int*,
+                   unsigned char* const*,
+                   int*,
+                   int,
+                   const struct resolvconf*);
 
 #define RR_A 1
 #define RR_CNAME 5
 #define RR_AAAA 28
 
-static int dns_parse_callback(void *c, int rr, const void *data, int len, const void *packet)
-{
-	char tmp[256];
-	struct dpc_ctx *ctx = c;
-	switch (rr) {
-	case RR_A:
-		if (len != 4) return -1;
-		ctx->addrs[ctx->cnt].family = AF_INET;
-		ctx->addrs[ctx->cnt].scopeid = 0;
-		memcpy(ctx->addrs[ctx->cnt++].addr, data, 4);
-		break;
-	case RR_AAAA:
-		if (len != 16) return -1;
-		ctx->addrs[ctx->cnt].family = AF_INET6;
-		ctx->addrs[ctx->cnt].scopeid = 0;
-		memcpy(ctx->addrs[ctx->cnt++].addr, data, 16);
-		break;
-	case RR_CNAME:
-		if (__dn_expand(packet, (const unsigned char *)packet + 512,
-		    data, tmp, sizeof tmp) > 0 && is_valid_hostname(tmp))
-			strcpy(ctx->canon, tmp);
-		break;
-	}
-	return 0;
+static int dns_parse_callback(void* c,
+                              int rr,
+                              const void* data,
+                              int len,
+                              const void* packet) {
+  char tmp[256];
+  struct dpc_ctx* ctx = c;
+  switch (rr) {
+    case RR_A:
+      if (len != 4)
+        return -1;
+      ctx->addrs[ctx->cnt].family = AF_INET;
+      ctx->addrs[ctx->cnt].scopeid = 0;
+      memcpy(ctx->addrs[ctx->cnt++].addr, data, 4);
+      break;
+    case RR_AAAA:
+      if (len != 16)
+        return -1;
+      ctx->addrs[ctx->cnt].family = AF_INET6;
+      ctx->addrs[ctx->cnt].scopeid = 0;
+      memcpy(ctx->addrs[ctx->cnt++].addr, data, 16);
+      break;
+    case RR_CNAME:
+      if (__dn_expand(packet, (const unsigned char*)packet + 512, data, tmp,
+                      sizeof tmp) > 0 &&
+          is_valid_hostname(tmp))
+        strcpy(ctx->canon, tmp);
+      break;
+  }
+  return 0;
 }
 
-static int name_from_dns(struct address buf[static MAXADDRS], char canon[static 256], const char *name, int family, const struct resolvconf *conf)
-{
-	unsigned char qbuf[2][280], abuf[2][512];
-	const unsigned char *qp[2] = { qbuf[0], qbuf[1] };
-	unsigned char *ap[2] = { abuf[0], abuf[1] };
-	int qlens[2], alens[2];
-	int i, nq = 0;
-	struct dpc_ctx ctx = { .addrs = buf, .canon = canon };
+static int name_from_dns(struct address buf[static MAXADDRS],
+                         char canon[static 256],
+                         const char* name,
+                         int family,
+                         const struct resolvconf* conf) {
+  unsigned char qbuf[2][280], abuf[2][512];
+  const unsigned char* qp[2] = {qbuf[0], qbuf[1]};
+  unsigned char* ap[2] = {abuf[0], abuf[1]};
+  int qlens[2], alens[2];
+  int i, nq = 0;
+  struct dpc_ctx ctx = {.addrs = buf, .canon = canon};
 
-	if (family != AF_INET6) {
-		qlens[nq] = __res_mkquery(0, name, 1, RR_A, 0, 0, 0,
-			qbuf[nq], sizeof *qbuf);
-		nq++;
-	}
-	if (family != AF_INET) {
-		qlens[nq] = __res_mkquery(0, name, 1, RR_AAAA, 0, 0, 0,
-			qbuf[nq], sizeof *qbuf);
-		nq++;
-	}
+  if (family != AF_INET6) {
+    qlens[nq] =
+        __res_mkquery(0, name, 1, RR_A, 0, 0, 0, qbuf[nq], sizeof *qbuf);
+    nq++;
+  }
+  if (family != AF_INET) {
+    qlens[nq] =
+        __res_mkquery(0, name, 1, RR_AAAA, 0, 0, 0, qbuf[nq], sizeof *qbuf);
+    nq++;
+  }
 
-	if (__res_msend_rc(nq, qp, qlens, ap, alens, sizeof *abuf, conf) < 0)
-		return EAI_SYSTEM;
+  if (__res_msend_rc(nq, qp, qlens, ap, alens, sizeof *abuf, conf) < 0)
+    return EAI_SYSTEM;
 
-	for (i=0; i<nq; i++)
-		__dns_parse(abuf[i], alens[i], dns_parse_callback, &ctx);
+  for (i = 0; i < nq; i++)
+    __dns_parse(abuf[i], alens[i], dns_parse_callback, &ctx);
 
-	if (ctx.cnt) return ctx.cnt;
-	if (alens[0] < 4 || (abuf[0][3] & 15) == 2) return EAI_AGAIN;
-	if ((abuf[0][3] & 15) == 0) return EAI_NONAME;
-	if ((abuf[0][3] & 15) == 3) return 0;
-	return EAI_FAIL;
+  if (ctx.cnt)
+    return ctx.cnt;
+  if (alens[0] < 4 || (abuf[0][3] & 15) == 2)
+    return EAI_AGAIN;
+  if ((abuf[0][3] & 15) == 0)
+    return EAI_NONAME;
+  if ((abuf[0][3] & 15) == 3)
+    return 0;
+  return EAI_FAIL;
 }
 
-static int name_from_dns_search(struct address buf[static MAXADDRS], char canon[static 256], const char *name, int family)
-{
-	char search[256];
-	struct resolvconf conf;
-	size_t l, dots;
-	char *p, *z;
+static int name_from_dns_search(struct address buf[static MAXADDRS],
+                                char canon[static 256],
+                                const char* name,
+                                int family) {
+  char search[256];
+  struct resolvconf conf;
+  size_t l, dots;
+  char *p, *z;
 
-	if (__get_resolv_conf(&conf, search, sizeof search) < 0) return -1;
+  if (__get_resolv_conf(&conf, search, sizeof search) < 0)
+    return -1;
 
-	/* Count dots, suppress search when >=ndots or name ends in
-	 * a dot, which is an explicit request for global scope. */
-	for (dots=l=0; name[l]; l++) if (name[l]=='.') dots++;
-	if (dots >= conf.ndots || name[l-1]=='.') *search = 0;
+  /* Count dots, suppress search when >=ndots or name ends in
+   * a dot, which is an explicit request for global scope. */
+  for (dots = l = 0; name[l]; l++)
+    if (name[l] == '.')
+      dots++;
+  if (dots >= conf.ndots || name[l - 1] == '.')
+    *search = 0;
 
-	/* This can never happen; the caller already checked length. */
-	if (l >= 256) return EAI_NONAME;
+  /* This can never happen; the caller already checked length. */
+  if (l >= 256)
+    return EAI_NONAME;
 
-	/* Name with search domain appended is setup in canon[]. This both
-	 * provides the desired default canonical name (if the requested
-	 * name is not a CNAME record) and serves as a buffer for passing
-	 * the full requested name to name_from_dns. */
-	memcpy(canon, name, l);
-	canon[l] = '.';
+  /* Name with search domain appended is setup in canon[]. This both
+   * provides the desired default canonical name (if the requested
+   * name is not a CNAME record) and serves as a buffer for passing
+   * the full requested name to name_from_dns. */
+  memcpy(canon, name, l);
+  canon[l] = '.';
 
-	for (p=search; *p; p=z) {
-		for (; isspace(*p); p++);
-		for (z=p; *z && !isspace(*z); z++);
-		if (z==p) break;
-		if (z-p < 256 - l - 1) {
-			memcpy(canon+l+1, p, z-p);
-			canon[z-p+1+l] = 0;
-			int cnt = name_from_dns(buf, canon, canon, family, &conf);
-			if (cnt) return cnt;
-		}
-	}
+  for (p = search; *p; p = z) {
+    for (; isspace(*p); p++)
+      ;
+    for (z = p; *z && !isspace(*z); z++)
+      ;
+    if (z == p)
+      break;
+    if (z - p < 256 - l - 1) {
+      memcpy(canon + l + 1, p, z - p);
+      canon[z - p + 1 + l] = 0;
+      int cnt = name_from_dns(buf, canon, canon, family, &conf);
+      if (cnt)
+        return cnt;
+    }
+  }
 
-	canon[l] = 0;
-	return name_from_dns(buf, canon, name, family, &conf);
+  canon[l] = 0;
+  return name_from_dns(buf, canon, name, family, &conf);
 }
 
 static const struct policy {
-	unsigned char addr[16];
-	unsigned char len, mask;
-	unsigned char prec, label;
+  unsigned char addr[16];
+  unsigned char len, mask;
+  unsigned char prec, label;
 } defpolicy[] = {
-	{ "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1", 15, 0xff, 50, 0 },
-	{ "\0\0\0\0\0\0\0\0\0\0\xff\xff", 11, 0xff, 35, 4 },
-	{ "\x20\2", 1, 0xff, 30, 2 },
-	{ "\x20\1", 3, 0xff, 5, 5 },
-	{ "\xfc", 0, 0xfe, 3, 13 },
+    {"\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\1", 15, 0xff, 50, 0},
+    {"\0\0\0\0\0\0\0\0\0\0\xff\xff", 11, 0xff, 35, 4},
+    {"\x20\2", 1, 0xff, 30, 2},
+    {"\x20\1", 3, 0xff, 5, 5},
+    {"\xfc", 0, 0xfe, 3, 13},
 #if 0
 	/* These are deprecated and/or returned to the address
 	 * pool, so despite the RFC, treating them as special
@@ -216,172 +277,181 @@
 	{ "\xfe\xc0", 1, 0xc0, 1, 11 },
 	{ "\x3f\xfe", 1, 0xff, 1, 12 },
 #endif
-	/* Last rule must match all addresses to stop loop. */
-	{ "", 0, 0, 40, 1 },
+    /* Last rule must match all addresses to stop loop. */
+    {"", 0, 0, 40, 1},
 };
 
-static const struct policy *policyof(const struct in6_addr *a)
-{
-	int i;
-	for (i=0; ; i++) {
-		if (memcmp(a->s6_addr, defpolicy[i].addr, defpolicy[i].len))
-			continue;
-		if ((a->s6_addr[defpolicy[i].len] & defpolicy[i].mask)
-		    != defpolicy[i].addr[defpolicy[i].len])
-			continue;
-		return defpolicy+i;
-	}
+static const struct policy* policyof(const struct in6_addr* a) {
+  int i;
+  for (i = 0;; i++) {
+    if (memcmp(a->s6_addr, defpolicy[i].addr, defpolicy[i].len))
+      continue;
+    if ((a->s6_addr[defpolicy[i].len] & defpolicy[i].mask) !=
+        defpolicy[i].addr[defpolicy[i].len])
+      continue;
+    return defpolicy + i;
+  }
 }
 
-static int labelof(const struct in6_addr *a)
-{
-	return policyof(a)->label;
+static int labelof(const struct in6_addr* a) {
+  return policyof(a)->label;
 }
 
-static int scopeof(const struct in6_addr *a)
-{
-	if (IN6_IS_ADDR_MULTICAST(a)) return a->s6_addr[1] & 15;
-	if (IN6_IS_ADDR_LINKLOCAL(a)) return 2;
-	if (IN6_IS_ADDR_LOOPBACK(a)) return 2;
-	if (IN6_IS_ADDR_SITELOCAL(a)) return 5;
-	return 14;
+static int scopeof(const struct in6_addr* a) {
+  if (IN6_IS_ADDR_MULTICAST(a))
+    return a->s6_addr[1] & 15;
+  if (IN6_IS_ADDR_LINKLOCAL(a))
+    return 2;
+  if (IN6_IS_ADDR_LOOPBACK(a))
+    return 2;
+  if (IN6_IS_ADDR_SITELOCAL(a))
+    return 5;
+  return 14;
 }
 
-static int prefixmatch(const struct in6_addr *s, const struct in6_addr *d)
-{
-	/* FIXME: The common prefix length should be limited to no greater
-	 * than the nominal length of the prefix portion of the source
-	 * address. However the definition of the source prefix length is
-	 * not clear and thus this limiting is not yet implemented. */
-	unsigned i;
-	for (i=0; i<128 && !((s->s6_addr[i/8]^d->s6_addr[i/8])&(128>>(i%8))); i++);
-	return i;
+static int prefixmatch(const struct in6_addr* s, const struct in6_addr* d) {
+  /* FIXME: The common prefix length should be limited to no greater
+   * than the nominal length of the prefix portion of the source
+   * address. However the definition of the source prefix length is
+   * not clear and thus this limiting is not yet implemented. */
+  unsigned i;
+  for (i = 0;
+       i < 128 && !((s->s6_addr[i / 8] ^ d->s6_addr[i / 8]) & (128 >> (i % 8)));
+       i++)
+    ;
+  return i;
 }
 
-#define DAS_USABLE              0x40000000
-#define DAS_MATCHINGSCOPE       0x20000000
-#define DAS_MATCHINGLABEL       0x10000000
-#define DAS_PREC_SHIFT          20
-#define DAS_SCOPE_SHIFT         16
-#define DAS_PREFIX_SHIFT        8
-#define DAS_ORDER_SHIFT         0
+#define DAS_USABLE 0x40000000
+#define DAS_MATCHINGSCOPE 0x20000000
+#define DAS_MATCHINGLABEL 0x10000000
+#define DAS_PREC_SHIFT 20
+#define DAS_SCOPE_SHIFT 16
+#define DAS_PREFIX_SHIFT 8
+#define DAS_ORDER_SHIFT 0
 
-static int addrcmp(const void *_a, const void *_b)
-{
-	const struct address *a = _a, *b = _b;
-	return b->sortkey - a->sortkey;
+static int addrcmp(const void* _a, const void* _b) {
+  const struct address *a = _a, *b = _b;
+  return b->sortkey - a->sortkey;
 }
 
-int __lookup_name(struct address buf[static MAXADDRS], char canon[static 256], const char *name, int family, int flags)
-{
-	int cnt = 0, i, j;
+int __lookup_name(struct address buf[static MAXADDRS],
+                  char canon[static 256],
+                  const char* name,
+                  int family,
+                  int flags) {
+  int cnt = 0, i, j;
 
-	*canon = 0;
-	if (name) {
-		/* reject empty name and check len so it fits into temp bufs */
-		size_t l = strnlen(name, 255);
-		if (l-1 >= 254)
-			return EAI_NONAME;
-		memcpy(canon, name, l+1);
-	}
+  *canon = 0;
+  if (name) {
+    /* reject empty name and check len so it fits into temp bufs */
+    size_t l = strnlen(name, 255);
+    if (l - 1 >= 254)
+      return EAI_NONAME;
+    memcpy(canon, name, l + 1);
+  }
 
-	/* Procedurally, a request for v6 addresses with the v4-mapped
-	 * flag set is like a request for unspecified family, followed
-	 * by filtering of the results. */
-	if (flags & AI_V4MAPPED) {
-		if (family == AF_INET6) family = AF_UNSPEC;
-		else flags -= AI_V4MAPPED;
-	}
+  /* Procedurally, a request for v6 addresses with the v4-mapped
+   * flag set is like a request for unspecified family, followed
+   * by filtering of the results. */
+  if (flags & AI_V4MAPPED) {
+    if (family == AF_INET6)
+      family = AF_UNSPEC;
+    else
+      flags -= AI_V4MAPPED;
+  }
 
-	/* Try each backend until there's at least one result. */
-	cnt = name_from_null(buf, name, family, flags);
-	if (!cnt) cnt = name_from_numeric(buf, name, family);
-	if (!cnt && !(flags & AI_NUMERICHOST)) {
-		cnt = name_from_hosts(buf, canon, name, family);
-		if (!cnt) cnt = name_from_dns_search(buf, canon, name, family);
-	}
-	if (cnt<=0) return cnt ? cnt : EAI_NONAME;
+  /* Try each backend until there's at least one result. */
+  cnt = name_from_null(buf, name, family, flags);
+  if (!cnt)
+    cnt = name_from_numeric(buf, name, family);
+  if (!cnt && !(flags & AI_NUMERICHOST)) {
+    cnt = name_from_hosts(buf, canon, name, family);
+    if (!cnt)
+      cnt = name_from_dns_search(buf, canon, name, family);
+  }
+  if (cnt <= 0)
+    return cnt ? cnt : EAI_NONAME;
 
-	/* Filter/transform results for v4-mapped lookup, if requested. */
-	if (flags & AI_V4MAPPED) {
-		if (!(flags & AI_ALL)) {
-			/* If any v6 results exist, remove v4 results. */
-			for (i=0; i<cnt && buf[i].family != AF_INET6; i++);
-			if (i<cnt) {
-				for (j=0; i<cnt; i++) {
-					if (buf[i].family == AF_INET6)
-						buf[j++] = buf[i];
-				}
-				cnt = i = j;
-			}
-		}
-		/* Translate any remaining v4 results to v6 */
-		for (i=0; i<cnt; i++) {
-			if (buf[i].family != AF_INET) continue;
-			memcpy(buf[i].addr+12, buf[i].addr, 4);
-			memcpy(buf[i].addr, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12);
-			buf[i].family = AF_INET6;
-		}
-	}
+  /* Filter/transform results for v4-mapped lookup, if requested. */
+  if (flags & AI_V4MAPPED) {
+    if (!(flags & AI_ALL)) {
+      /* If any v6 results exist, remove v4 results. */
+      for (i = 0; i < cnt && buf[i].family != AF_INET6; i++)
+        ;
+      if (i < cnt) {
+        for (j = 0; i < cnt; i++) {
+          if (buf[i].family == AF_INET6)
+            buf[j++] = buf[i];
+        }
+        cnt = i = j;
+      }
+    }
+    /* Translate any remaining v4 results to v6 */
+    for (i = 0; i < cnt; i++) {
+      if (buf[i].family != AF_INET)
+        continue;
+      memcpy(buf[i].addr + 12, buf[i].addr, 4);
+      memcpy(buf[i].addr, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12);
+      buf[i].family = AF_INET6;
+    }
+  }
 
-	/* No further processing is needed if there are fewer than 2
-	 * results or if there are only IPv4 results. */
-	if (cnt<2 || family==AF_INET) return cnt;
-	for (i=0; buf[i].family == AF_INET; i++)
-		if (i==cnt) return cnt;
+  /* No further processing is needed if there are fewer than 2
+   * results or if there are only IPv4 results. */
+  if (cnt < 2 || family == AF_INET)
+    return cnt;
+  for (i = 0; buf[i].family == AF_INET; i++)
+    if (i == cnt)
+      return cnt;
 
-	int cs;
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  int cs;
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
 
-	/* The following implements a subset of RFC 3484/6724 destination
-	 * address selection by generating a single 31-bit sort key for
-	 * each address. Rules 3, 4, and 7 are omitted for having
-	 * excessive runtime and code size cost and dubious benefit.
-	 * So far the label/precedence table cannot be customized. */
-	for (i=0; i<cnt; i++) {
-		int key = 0;
-		struct sockaddr_in6 sa, da = {
-			.sin6_family = AF_INET6,
-			.sin6_scope_id = buf[i].scopeid,
-			.sin6_port = 65535
-		};
-		if (buf[i].family == AF_INET6) {
-			memcpy(da.sin6_addr.s6_addr, buf[i].addr, 16);
-		} else {
-			memcpy(da.sin6_addr.s6_addr,
-				"\0\0\0\0\0\0\0\0\0\0\xff\xff", 12);
-			memcpy(da.sin6_addr.s6_addr+12, buf[i].addr, 4);
-		}
-		const struct policy *dpolicy = policyof(&da.sin6_addr);
-		int dscope = scopeof(&da.sin6_addr);
-		int dlabel = dpolicy->label;
-		int dprec = dpolicy->prec;
-		int prefixlen = 0;
-		int fd = socket(AF_INET6, SOCK_DGRAM|SOCK_CLOEXEC, IPPROTO_UDP);
-		if (fd >= 0) {
-			if (!connect(fd, (void *)&da, sizeof da)) {
-				key |= DAS_USABLE;
-				if (!getsockname(fd, (void *)&sa,
-				    &(socklen_t){sizeof sa})) {
-					if (dscope == scopeof(&sa.sin6_addr))
-						key |= DAS_MATCHINGSCOPE;
-					if (dlabel == labelof(&sa.sin6_addr))
-						key |= DAS_MATCHINGLABEL;
-					prefixlen = prefixmatch(&sa.sin6_addr,
-						&da.sin6_addr);
-				}
-			}
-			close(fd);
-		}
-		key |= dprec << DAS_PREC_SHIFT;
-		key |= (15-dscope) << DAS_SCOPE_SHIFT;
-		key |= prefixlen << DAS_PREFIX_SHIFT;
-		key |= (MAXADDRS-i) << DAS_ORDER_SHIFT;
-		buf[i].sortkey = key;
-	}
-	qsort(buf, cnt, sizeof *buf, addrcmp);
+  /* The following implements a subset of RFC 3484/6724 destination
+   * address selection by generating a single 31-bit sort key for
+   * each address. Rules 3, 4, and 7 are omitted for having
+   * excessive runtime and code size cost and dubious benefit.
+   * So far the label/precedence table cannot be customized. */
+  for (i = 0; i < cnt; i++) {
+    int key = 0;
+    struct sockaddr_in6 sa, da = {.sin6_family = AF_INET6,
+                                  .sin6_scope_id = buf[i].scopeid,
+                                  .sin6_port = 65535};
+    if (buf[i].family == AF_INET6) {
+      memcpy(da.sin6_addr.s6_addr, buf[i].addr, 16);
+    } else {
+      memcpy(da.sin6_addr.s6_addr, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12);
+      memcpy(da.sin6_addr.s6_addr + 12, buf[i].addr, 4);
+    }
+    const struct policy* dpolicy = policyof(&da.sin6_addr);
+    int dscope = scopeof(&da.sin6_addr);
+    int dlabel = dpolicy->label;
+    int dprec = dpolicy->prec;
+    int prefixlen = 0;
+    int fd = socket(AF_INET6, SOCK_DGRAM | SOCK_CLOEXEC, IPPROTO_UDP);
+    if (fd >= 0) {
+      if (!connect(fd, (void*)&da, sizeof da)) {
+        key |= DAS_USABLE;
+        if (!getsockname(fd, (void*)&sa, &(socklen_t){sizeof sa})) {
+          if (dscope == scopeof(&sa.sin6_addr))
+            key |= DAS_MATCHINGSCOPE;
+          if (dlabel == labelof(&sa.sin6_addr))
+            key |= DAS_MATCHINGLABEL;
+          prefixlen = prefixmatch(&sa.sin6_addr, &da.sin6_addr);
+        }
+      }
+      close(fd);
+    }
+    key |= dprec << DAS_PREC_SHIFT;
+    key |= (15 - dscope) << DAS_SCOPE_SHIFT;
+    key |= prefixlen << DAS_PREFIX_SHIFT;
+    key |= (MAXADDRS - i) << DAS_ORDER_SHIFT;
+    buf[i].sortkey = key;
+  }
+  qsort(buf, cnt, sizeof *buf, addrcmp);
 
-	pthread_setcancelstate(cs, 0);
+  pthread_setcancelstate(cs, 0);
 
-	return cnt;
+  return cnt;
 }
diff --git a/fusl/src/network/lookup_serv.c b/fusl/src/network/lookup_serv.c
index 66ebaea..42c991d 100644
--- a/fusl/src/network/lookup_serv.c
+++ b/fusl/src/network/lookup_serv.c
@@ -8,106 +8,122 @@
 #include "lookup.h"
 #include "stdio_impl.h"
 
-int __lookup_serv(struct service buf[static MAXSERVS], const char *name, int proto, int socktype, int flags)
-{
-	char line[128];
-	int cnt = 0;
-	char *p, *z = "";
-	unsigned long port = 0;
+int __lookup_serv(struct service buf[static MAXSERVS],
+                  const char* name,
+                  int proto,
+                  int socktype,
+                  int flags) {
+  char line[128];
+  int cnt = 0;
+  char *p, *z = "";
+  unsigned long port = 0;
 
-	switch (socktype) {
-	case SOCK_STREAM:
-		switch (proto) {
-		case 0:
-			proto = IPPROTO_TCP;
-		case IPPROTO_TCP:
-			break;
-		default:
-			return EAI_SERVICE;
-		}
-		break;
-	case SOCK_DGRAM:
-		switch (proto) {
-		case 0:
-			proto = IPPROTO_UDP;
-		case IPPROTO_UDP:
-			break;
-		default:
-			return EAI_SERVICE;
-		}
-	case 0:
-		break;
-	default:
-		if (name) return EAI_SERVICE;
-		buf[0].port = 0;
-		buf[0].proto = proto;
-		buf[0].socktype = socktype;
-		return 1;
-	}
+  switch (socktype) {
+    case SOCK_STREAM:
+      switch (proto) {
+        case 0:
+          proto = IPPROTO_TCP;
+        case IPPROTO_TCP:
+          break;
+        default:
+          return EAI_SERVICE;
+      }
+      break;
+    case SOCK_DGRAM:
+      switch (proto) {
+        case 0:
+          proto = IPPROTO_UDP;
+        case IPPROTO_UDP:
+          break;
+        default:
+          return EAI_SERVICE;
+      }
+    case 0:
+      break;
+    default:
+      if (name)
+        return EAI_SERVICE;
+      buf[0].port = 0;
+      buf[0].proto = proto;
+      buf[0].socktype = socktype;
+      return 1;
+  }
 
-	if (name) {
-		if (!*name) return EAI_SERVICE;
-		port = strtoul(name, &z, 10);
-	}
-	if (!*z) {
-		if (port > 65535) return EAI_SERVICE;
-		if (proto != IPPROTO_UDP) {
-			buf[cnt].port = port;
-			buf[cnt].socktype = SOCK_STREAM;
-			buf[cnt++].proto = IPPROTO_TCP;
-		}
-		if (proto != IPPROTO_TCP) {
-			buf[cnt].port = port;
-			buf[cnt].socktype = SOCK_DGRAM;
-			buf[cnt++].proto = IPPROTO_UDP;
-		}
-		return cnt;
-	}
+  if (name) {
+    if (!*name)
+      return EAI_SERVICE;
+    port = strtoul(name, &z, 10);
+  }
+  if (!*z) {
+    if (port > 65535)
+      return EAI_SERVICE;
+    if (proto != IPPROTO_UDP) {
+      buf[cnt].port = port;
+      buf[cnt].socktype = SOCK_STREAM;
+      buf[cnt++].proto = IPPROTO_TCP;
+    }
+    if (proto != IPPROTO_TCP) {
+      buf[cnt].port = port;
+      buf[cnt].socktype = SOCK_DGRAM;
+      buf[cnt++].proto = IPPROTO_UDP;
+    }
+    return cnt;
+  }
 
-	if (flags & AI_NUMERICSERV) return EAI_SERVICE;
+  if (flags & AI_NUMERICSERV)
+    return EAI_SERVICE;
 
-	size_t l = strlen(name);
+  size_t l = strlen(name);
 
-	unsigned char _buf[1032];
-	FILE _f, *f = __fopen_rb_ca("/etc/services", &_f, _buf, sizeof _buf);
-	if (!f) switch (errno) {
-	case ENOENT:
-	case ENOTDIR:
-	case EACCES:
-		return EAI_SERVICE;
-	default:
-		return EAI_SYSTEM;
-	}
+  unsigned char _buf[1032];
+  FILE _f, *f = __fopen_rb_ca("/etc/services", &_f, _buf, sizeof _buf);
+  if (!f)
+    switch (errno) {
+      case ENOENT:
+      case ENOTDIR:
+      case EACCES:
+        return EAI_SERVICE;
+      default:
+        return EAI_SYSTEM;
+    }
 
-	while (fgets(line, sizeof line, f) && cnt < MAXSERVS) {
-		if ((p=strchr(line, '#'))) *p++='\n', *p=0;
+  while (fgets(line, sizeof line, f) && cnt < MAXSERVS) {
+    if ((p = strchr(line, '#')))
+      *p++ = '\n', *p = 0;
 
-		/* Find service name */
-		for(p=line; (p=strstr(p, name)); p++) {
-			if (p>line && !isspace(p[-1])) continue;
-			if (p[l] && !isspace(p[l])) continue;
-			break;
-		}
-		if (!p) continue;
+    /* Find service name */
+    for (p = line; (p = strstr(p, name)); p++) {
+      if (p > line && !isspace(p[-1]))
+        continue;
+      if (p[l] && !isspace(p[l]))
+        continue;
+      break;
+    }
+    if (!p)
+      continue;
 
-		/* Skip past canonical name at beginning of line */
-		for (p=line; *p && !isspace(*p); p++);
+    /* Skip past canonical name at beginning of line */
+    for (p = line; *p && !isspace(*p); p++)
+      ;
 
-		port = strtoul(p, &z, 10);
-		if (port > 65535 || z==p) continue;
-		if (!strncmp(z, "/udp", 4)) {
-			if (proto == IPPROTO_TCP) continue;
-			buf[cnt].port = port;
-			buf[cnt].socktype = SOCK_DGRAM;
-			buf[cnt++].proto = IPPROTO_UDP;
-		}
-		if (!strncmp(z, "/tcp", 4)) {
-			if (proto == IPPROTO_UDP) continue;
-			buf[cnt].port = port;
-			buf[cnt].socktype = SOCK_STREAM;
-			buf[cnt++].proto = IPPROTO_TCP;
-		}
-	}
-	__fclose_ca(f);
-	return cnt > 0 ? cnt : EAI_SERVICE;
+    port = strtoul(p, &z, 10);
+    if (port > 65535 || z == p)
+      continue;
+    if (!strncmp(z, "/udp", 4)) {
+      if (proto == IPPROTO_TCP)
+        continue;
+      buf[cnt].port = port;
+      buf[cnt].socktype = SOCK_DGRAM;
+      buf[cnt++].proto = IPPROTO_UDP;
+    }
+    if (!strncmp(z, "/tcp", 4)) {
+      if (proto == IPPROTO_UDP)
+        continue;
+      buf[cnt].port = port;
+      buf[cnt].socktype = SOCK_STREAM;
+      buf[cnt++].proto = IPPROTO_TCP;
+    }
+  }
+  __fclose_ca(f);
+  return cnt > 0 ? cnt : EAI_SERVICE;
 }
diff --git a/fusl/src/network/netlink.c b/fusl/src/network/netlink.c
index 94dba7f..7225136 100644
--- a/fusl/src/network/netlink.c
+++ b/fusl/src/network/netlink.c
@@ -4,49 +4,61 @@
 #include <sys/socket.h>
 #include "netlink.h"
 
-static int __netlink_enumerate(int fd, unsigned int seq, int type, int af,
-	int (*cb)(void *ctx, struct nlmsghdr *h), void *ctx)
-{
-	struct nlmsghdr *h;
-	union {
-		uint8_t buf[8192];
-		struct {
-			struct nlmsghdr nlh;
-			struct rtgenmsg g;
-		} req;
-		struct nlmsghdr reply;
-	} u;
-	int r, ret;
+static int __netlink_enumerate(int fd,
+                               unsigned int seq,
+                               int type,
+                               int af,
+                               int (*cb)(void* ctx, struct nlmsghdr* h),
+                               void* ctx) {
+  struct nlmsghdr* h;
+  union {
+    uint8_t buf[8192];
+    struct {
+      struct nlmsghdr nlh;
+      struct rtgenmsg g;
+    } req;
+    struct nlmsghdr reply;
+  } u;
+  int r, ret;
 
-	memset(&u.req, 0, sizeof(u.req));
-	u.req.nlh.nlmsg_len = sizeof(u.req);
-	u.req.nlh.nlmsg_type = type;
-	u.req.nlh.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST;
-	u.req.nlh.nlmsg_seq = seq;
-	u.req.g.rtgen_family = af;
-	r = send(fd, &u.req, sizeof(u.req), 0);
-	if (r < 0) return r;
+  memset(&u.req, 0, sizeof(u.req));
+  u.req.nlh.nlmsg_len = sizeof(u.req);
+  u.req.nlh.nlmsg_type = type;
+  u.req.nlh.nlmsg_flags = NLM_F_DUMP | NLM_F_REQUEST;
+  u.req.nlh.nlmsg_seq = seq;
+  u.req.g.rtgen_family = af;
+  r = send(fd, &u.req, sizeof(u.req), 0);
+  if (r < 0)
+    return r;
 
-	while (1) {
-		r = recv(fd, u.buf, sizeof(u.buf), MSG_DONTWAIT);
-		if (r <= 0) return -1;
-		for (h = &u.reply; NLMSG_OK(h, (void*)&u.buf[r]); h = NLMSG_NEXT(h)) {
-			if (h->nlmsg_type == NLMSG_DONE) return 0;
-			if (h->nlmsg_type == NLMSG_ERROR) return -1;
-			ret = cb(ctx, h);
-			if (ret) return ret;
-		}
-	}
+  while (1) {
+    r = recv(fd, u.buf, sizeof(u.buf), MSG_DONTWAIT);
+    if (r <= 0)
+      return -1;
+    for (h = &u.reply; NLMSG_OK(h, (void*)&u.buf[r]); h = NLMSG_NEXT(h)) {
+      if (h->nlmsg_type == NLMSG_DONE)
+        return 0;
+      if (h->nlmsg_type == NLMSG_ERROR)
+        return -1;
+      ret = cb(ctx, h);
+      if (ret)
+        return ret;
+    }
+  }
 }
 
-int __rtnetlink_enumerate(int link_af, int addr_af, int (*cb)(void *ctx, struct nlmsghdr *h), void *ctx)
-{
-	int fd, r;
+int __rtnetlink_enumerate(int link_af,
+                          int addr_af,
+                          int (*cb)(void* ctx, struct nlmsghdr* h),
+                          void* ctx) {
+  int fd, r;
 
-	fd = socket(PF_NETLINK, SOCK_RAW|SOCK_CLOEXEC, NETLINK_ROUTE);
-	if (fd < 0) return -1;
-	r = __netlink_enumerate(fd, 1, RTM_GETLINK, link_af, cb, ctx);
-	if (!r) r = __netlink_enumerate(fd, 2, RTM_GETADDR, addr_af, cb, ctx);
-	__syscall(SYS_close,fd);
-	return r;
+  fd = socket(PF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, NETLINK_ROUTE);
+  if (fd < 0)
+    return -1;
+  r = __netlink_enumerate(fd, 1, RTM_GETLINK, link_af, cb, ctx);
+  if (!r)
+    r = __netlink_enumerate(fd, 2, RTM_GETADDR, addr_af, cb, ctx);
+  __syscall(SYS_close, fd);
+  return r;
 }
diff --git a/fusl/src/network/netlink.h b/fusl/src/network/netlink.h
index 20700ac..6007f95 100644
--- a/fusl/src/network/netlink.h
+++ b/fusl/src/network/netlink.h
@@ -5,90 +5,97 @@
 #define NETLINK_ROUTE 0
 
 struct nlmsghdr {
-	uint32_t	nlmsg_len;
-	uint16_t	nlmsg_type;
-	uint16_t	nlmsg_flags;
-	uint32_t	nlmsg_seq;
-	uint32_t	nlmsg_pid;
+  uint32_t nlmsg_len;
+  uint16_t nlmsg_type;
+  uint16_t nlmsg_flags;
+  uint32_t nlmsg_seq;
+  uint32_t nlmsg_pid;
 };
 
-#define NLM_F_REQUEST	1
-#define NLM_F_MULTI	2
-#define NLM_F_ACK	4
+#define NLM_F_REQUEST 1
+#define NLM_F_MULTI 2
+#define NLM_F_ACK 4
 
-#define NLM_F_ROOT	0x100
-#define NLM_F_MATCH	0x200
-#define NLM_F_ATOMIC	0x400
-#define NLM_F_DUMP	(NLM_F_ROOT|NLM_F_MATCH)
+#define NLM_F_ROOT 0x100
+#define NLM_F_MATCH 0x200
+#define NLM_F_ATOMIC 0x400
+#define NLM_F_DUMP (NLM_F_ROOT | NLM_F_MATCH)
 
-#define NLMSG_NOOP	0x1
-#define NLMSG_ERROR	0x2
-#define NLMSG_DONE	0x3
-#define NLMSG_OVERRUN	0x4
+#define NLMSG_NOOP 0x1
+#define NLMSG_ERROR 0x2
+#define NLMSG_DONE 0x3
+#define NLMSG_OVERRUN 0x4
 
 /* linux/rtnetlink.h */
 
-#define RTM_NEWLINK	16
-#define RTM_GETLINK	18
-#define RTM_NEWADDR	20
-#define RTM_GETADDR	22
+#define RTM_NEWLINK 16
+#define RTM_GETLINK 18
+#define RTM_NEWADDR 20
+#define RTM_GETADDR 22
 
 struct rtattr {
-	unsigned short	rta_len;
-	unsigned short	rta_type;
+  unsigned short rta_len;
+  unsigned short rta_type;
 };
 
 struct rtgenmsg {
-	unsigned char	rtgen_family;
+  unsigned char rtgen_family;
 };
 
 struct ifinfomsg {
-	unsigned char	ifi_family;
-	unsigned char	__ifi_pad;
-	unsigned short	ifi_type;
-	int		ifi_index;
-	unsigned	ifi_flags;
-	unsigned	ifi_change;
+  unsigned char ifi_family;
+  unsigned char __ifi_pad;
+  unsigned short ifi_type;
+  int ifi_index;
+  unsigned ifi_flags;
+  unsigned ifi_change;
 };
 
 /* linux/if_link.h */
 
-#define IFLA_ADDRESS	1
-#define IFLA_BROADCAST	2
-#define IFLA_IFNAME	3
-#define IFLA_STATS	7
+#define IFLA_ADDRESS 1
+#define IFLA_BROADCAST 2
+#define IFLA_IFNAME 3
+#define IFLA_STATS 7
 
 /* linux/if_addr.h */
 
 struct ifaddrmsg {
-	uint8_t		ifa_family;
-	uint8_t		ifa_prefixlen;
-	uint8_t		ifa_flags;
-	uint8_t		ifa_scope;
-	uint32_t	ifa_index;
+  uint8_t ifa_family;
+  uint8_t ifa_prefixlen;
+  uint8_t ifa_flags;
+  uint8_t ifa_scope;
+  uint32_t ifa_index;
 };
 
-#define IFA_ADDRESS	1
-#define IFA_LOCAL	2
-#define IFA_LABEL	3
-#define IFA_BROADCAST	4
+#define IFA_ADDRESS 1
+#define IFA_LOCAL 2
+#define IFA_LABEL 3
+#define IFA_BROADCAST 4
 
 /* musl */
 
-#define NETLINK_ALIGN(len)	(((len)+3) & ~3)
-#define NLMSG_DATA(nlh)		((void*)((char*)(nlh)+sizeof(struct nlmsghdr)))
-#define NLMSG_DATALEN(nlh)	((nlh)->nlmsg_len-sizeof(struct nlmsghdr))
-#define NLMSG_DATAEND(nlh)	((char*)(nlh)+(nlh)->nlmsg_len)
-#define NLMSG_NEXT(nlh)		(struct nlmsghdr*)((char*)(nlh)+NETLINK_ALIGN((nlh)->nlmsg_len))
-#define NLMSG_OK(nlh,end)	((char*)(end)-(char*)(nlh) >= sizeof(struct nlmsghdr))
+#define NETLINK_ALIGN(len) (((len) + 3) & ~3)
+#define NLMSG_DATA(nlh) ((void*)((char*)(nlh) + sizeof(struct nlmsghdr)))
+#define NLMSG_DATALEN(nlh) ((nlh)->nlmsg_len - sizeof(struct nlmsghdr))
+#define NLMSG_DATAEND(nlh) ((char*)(nlh) + (nlh)->nlmsg_len)
+#define NLMSG_NEXT(nlh) \
+  (struct nlmsghdr*)((char*)(nlh) + NETLINK_ALIGN((nlh)->nlmsg_len))
+#define NLMSG_OK(nlh, end) \
+  ((char*)(end) - (char*)(nlh) >= sizeof(struct nlmsghdr))
 
-#define RTA_DATA(rta)		((void*)((char*)(rta)+sizeof(struct rtattr)))
-#define RTA_DATALEN(rta)	((rta)->rta_len-sizeof(struct rtattr))
-#define RTA_DATAEND(rta)	((char*)(rta)+(rta)->rta_len)
-#define RTA_NEXT(rta)		(struct rtattr*)((char*)(rta)+NETLINK_ALIGN((rta)->rta_len))
-#define RTA_OK(nlh,end)		((char*)(end)-(char*)(rta) >= sizeof(struct rtattr))
+#define RTA_DATA(rta) ((void*)((char*)(rta) + sizeof(struct rtattr)))
+#define RTA_DATALEN(rta) ((rta)->rta_len - sizeof(struct rtattr))
+#define RTA_DATAEND(rta) ((char*)(rta) + (rta)->rta_len)
+#define RTA_NEXT(rta) \
+  (struct rtattr*)((char*)(rta) + NETLINK_ALIGN((rta)->rta_len))
+#define RTA_OK(nlh, end) ((char*)(end) - (char*)(rta) >= sizeof(struct rtattr))
 
-#define NLMSG_RTA(nlh,len)	((void*)((char*)(nlh)+sizeof(struct nlmsghdr)+NETLINK_ALIGN(len)))
-#define NLMSG_RTAOK(rta,nlh)	RTA_OK(rta,NLMSG_DATAEND(nlh))
+#define NLMSG_RTA(nlh, len) \
+  ((void*)((char*)(nlh) + sizeof(struct nlmsghdr) + NETLINK_ALIGN(len)))
+#define NLMSG_RTAOK(rta, nlh) RTA_OK(rta, NLMSG_DATAEND(nlh))
 
-int __rtnetlink_enumerate(int link_af, int addr_af, int (*cb)(void *ctx, struct nlmsghdr *h), void *ctx);
+int __rtnetlink_enumerate(int link_af,
+                          int addr_af,
+                          int (*cb)(void* ctx, struct nlmsghdr* h),
+                          void* ctx);
diff --git a/fusl/src/network/netname.c b/fusl/src/network/netname.c
index ba6e665..23f924e 100644
--- a/fusl/src/network/netname.c
+++ b/fusl/src/network/netname.c
@@ -1,12 +1,9 @@
 #include <netdb.h>
 
-struct netent *getnetbyaddr(uint32_t net, int type)
-{
-	return 0;
+struct netent* getnetbyaddr(uint32_t net, int type) {
+  return 0;
 }
 
-struct netent *getnetbyname(const char *name)
-{
-	return 0;
+struct netent* getnetbyname(const char* name) {
+  return 0;
 }
-
diff --git a/fusl/src/network/ns_parse.c b/fusl/src/network/ns_parse.c
index 687082b..cfbe2e7 100644
--- a/fusl/src/network/ns_parse.c
+++ b/fusl/src/network/ns_parse.c
@@ -5,166 +5,171 @@
 #include <arpa/nameser.h>
 
 const struct _ns_flagdata _ns_flagdata[16] = {
-	{ 0x8000, 15 },
-	{ 0x7800, 11 },
-	{ 0x0400, 10 },
-	{ 0x0200, 9 },
-	{ 0x0100, 8 },
-	{ 0x0080, 7 },
-	{ 0x0040, 6 },
-	{ 0x0020, 5 },
-	{ 0x0010, 4 },
-	{ 0x000f, 0 },
-	{ 0x0000, 0 },
-	{ 0x0000, 0 },
-	{ 0x0000, 0 },
-	{ 0x0000, 0 },
-	{ 0x0000, 0 },
-	{ 0x0000, 0 },
+    {0x8000, 15}, {0x7800, 11}, {0x0400, 10}, {0x0200, 9},
+    {0x0100, 8},  {0x0080, 7},  {0x0040, 6},  {0x0020, 5},
+    {0x0010, 4},  {0x000f, 0},  {0x0000, 0},  {0x0000, 0},
+    {0x0000, 0},  {0x0000, 0},  {0x0000, 0},  {0x0000, 0},
 };
 
-unsigned ns_get16(const unsigned char *cp)
-{
-	return cp[0]<<8 | cp[1];
+unsigned ns_get16(const unsigned char* cp) {
+  return cp[0] << 8 | cp[1];
 }
 
-unsigned long ns_get32(const unsigned char *cp)
-{
-	return (unsigned)cp[0]<<24 | cp[1]<<16 | cp[2]<<8 | cp[3];
+unsigned long ns_get32(const unsigned char* cp) {
+  return (unsigned)cp[0] << 24 | cp[1] << 16 | cp[2] << 8 | cp[3];
 }
 
-void ns_put16(unsigned s, unsigned char *cp)
-{
-	*cp++ = s>>8;
-	*cp++ = s;
+void ns_put16(unsigned s, unsigned char* cp) {
+  *cp++ = s >> 8;
+  *cp++ = s;
 }
 
-void ns_put32(unsigned long l, unsigned char *cp)
-{
-	*cp++ = l>>24;
-	*cp++ = l>>16;
-	*cp++ = l>>8;
-	*cp++ = l;
+void ns_put32(unsigned long l, unsigned char* cp) {
+  *cp++ = l >> 24;
+  *cp++ = l >> 16;
+  *cp++ = l >> 8;
+  *cp++ = l;
 }
 
-int ns_initparse(const unsigned char *msg, int msglen, ns_msg *handle)
-{
-	int i, r;
+int ns_initparse(const unsigned char* msg, int msglen, ns_msg* handle) {
+  int i, r;
 
-	handle->_msg = msg;
-	handle->_eom = msg + msglen;
-	if (msglen < (2 + ns_s_max) * NS_INT16SZ) goto bad;
-	NS_GET16(handle->_id, msg);
-	NS_GET16(handle->_flags, msg);
-	for (i = 0; i < ns_s_max; i++) NS_GET16(handle->_counts[i], msg);
-	for (i = 0; i < ns_s_max; i++) {
-		if (handle->_counts[i]) {
-			handle->_sections[i] = msg;
-			r = ns_skiprr(msg, handle->_eom, i, handle->_counts[i]);
-			if (r < 0) return -1;
-			msg += r;
-		} else {
-			handle->_sections[i] = NULL;
-		}
-	}
-	if (msg != handle->_eom) goto bad;
-	handle->_sect = ns_s_max;
-	handle->_rrnum = -1;
-	handle->_msg_ptr = NULL;
-	return 0;
+  handle->_msg = msg;
+  handle->_eom = msg + msglen;
+  if (msglen < (2 + ns_s_max) * NS_INT16SZ)
+    goto bad;
+  NS_GET16(handle->_id, msg);
+  NS_GET16(handle->_flags, msg);
+  for (i = 0; i < ns_s_max; i++)
+    NS_GET16(handle->_counts[i], msg);
+  for (i = 0; i < ns_s_max; i++) {
+    if (handle->_counts[i]) {
+      handle->_sections[i] = msg;
+      r = ns_skiprr(msg, handle->_eom, i, handle->_counts[i]);
+      if (r < 0)
+        return -1;
+      msg += r;
+    } else {
+      handle->_sections[i] = NULL;
+    }
+  }
+  if (msg != handle->_eom)
+    goto bad;
+  handle->_sect = ns_s_max;
+  handle->_rrnum = -1;
+  handle->_msg_ptr = NULL;
+  return 0;
 bad:
-	errno = EMSGSIZE;
-	return -1;
+  errno = EMSGSIZE;
+  return -1;
 }
 
-int ns_skiprr(const unsigned char *ptr, const unsigned char *eom, ns_sect section, int count)
-{
-	const unsigned char *p = ptr;
-	int r;
+int ns_skiprr(const unsigned char* ptr,
+              const unsigned char* eom,
+              ns_sect section,
+              int count) {
+  const unsigned char* p = ptr;
+  int r;
 
-	while (count--) {
-		r = dn_skipname(p, eom);
-		if (r < 0) goto bad;
-		if (r + 2 * NS_INT16SZ > eom - p) goto bad;
-		p += r + 2 * NS_INT16SZ;
-		if (section != ns_s_qd) {
-			if (NS_INT32SZ + NS_INT16SZ > eom - p) goto bad;
-			p += NS_INT32SZ;
-			NS_GET16(r, p);
-			if (r > eom - p) goto bad;
-			p += r;
-		}
-	}
-	return p - ptr;
+  while (count--) {
+    r = dn_skipname(p, eom);
+    if (r < 0)
+      goto bad;
+    if (r + 2 * NS_INT16SZ > eom - p)
+      goto bad;
+    p += r + 2 * NS_INT16SZ;
+    if (section != ns_s_qd) {
+      if (NS_INT32SZ + NS_INT16SZ > eom - p)
+        goto bad;
+      p += NS_INT32SZ;
+      NS_GET16(r, p);
+      if (r > eom - p)
+        goto bad;
+      p += r;
+    }
+  }
+  return p - ptr;
 bad:
-	errno = EMSGSIZE;
-	return -1;
+  errno = EMSGSIZE;
+  return -1;
 }
 
-int ns_parserr(ns_msg *handle, ns_sect section, int rrnum, ns_rr *rr)
-{
-	int r;
+int ns_parserr(ns_msg* handle, ns_sect section, int rrnum, ns_rr* rr) {
+  int r;
 
-	if ((int)section < 0 || section >= ns_s_max) goto bad;
-	if (section != handle->_sect) {
-		handle->_sect = section;
-		handle->_rrnum = 0;
-		handle->_msg_ptr = handle->_sections[section];
-	}
-	if (rrnum == -1) rrnum = handle->_rrnum;
-	if (rrnum < 0 || rrnum >= handle->_counts[section]) goto bad;
-	if (rrnum < handle->_rrnum) {
-		handle->_rrnum = 0;
-		handle->_msg_ptr = handle->_sections[section];
-	}
-	if (rrnum > handle->_rrnum) {
-		r = ns_skiprr(handle->_msg_ptr, handle->_eom, section, rrnum - handle->_rrnum);
-		if (r < 0) return -1;
-		handle->_msg_ptr += r;
-		handle->_rrnum = rrnum;
-	}
-	r = ns_name_uncompress(handle->_msg, handle->_eom, handle->_msg_ptr, rr->name, NS_MAXDNAME);
-	if (r < 0) return -1;
-	handle->_msg_ptr += r;
-	if (2 * NS_INT16SZ > handle->_eom - handle->_msg_ptr) goto size;
-	NS_GET16(rr->type, handle->_msg_ptr);
-	NS_GET16(rr->rr_class, handle->_msg_ptr);
-	if (section != ns_s_qd) {
-		if (NS_INT32SZ + NS_INT16SZ > handle->_eom - handle->_msg_ptr) goto size;
-		NS_GET32(rr->ttl, handle->_msg_ptr);
-		NS_GET16(rr->rdlength, handle->_msg_ptr);
-		if (rr->rdlength > handle->_eom - handle->_msg_ptr) goto size;
-		rr->rdata = handle->_msg_ptr;
-		handle->_msg_ptr += rr->rdlength;
-	} else {
-		rr->ttl = 0;
-		rr->rdlength = 0;
-		rr->rdata = NULL;
-	}
-	handle->_rrnum++;
-	if (handle->_rrnum > handle->_counts[section]) {
-		handle->_sect = section + 1;
-		if (handle->_sect == ns_s_max) {
-			handle->_rrnum = -1;
-			handle->_msg_ptr = NULL;
-		} else {
-			handle->_rrnum = 0;
-		}
-	}
-	return 0;
+  if ((int)section < 0 || section >= ns_s_max)
+    goto bad;
+  if (section != handle->_sect) {
+    handle->_sect = section;
+    handle->_rrnum = 0;
+    handle->_msg_ptr = handle->_sections[section];
+  }
+  if (rrnum == -1)
+    rrnum = handle->_rrnum;
+  if (rrnum < 0 || rrnum >= handle->_counts[section])
+    goto bad;
+  if (rrnum < handle->_rrnum) {
+    handle->_rrnum = 0;
+    handle->_msg_ptr = handle->_sections[section];
+  }
+  if (rrnum > handle->_rrnum) {
+    r = ns_skiprr(handle->_msg_ptr, handle->_eom, section,
+                  rrnum - handle->_rrnum);
+    if (r < 0)
+      return -1;
+    handle->_msg_ptr += r;
+    handle->_rrnum = rrnum;
+  }
+  r = ns_name_uncompress(handle->_msg, handle->_eom, handle->_msg_ptr, rr->name,
+                         NS_MAXDNAME);
+  if (r < 0)
+    return -1;
+  handle->_msg_ptr += r;
+  if (2 * NS_INT16SZ > handle->_eom - handle->_msg_ptr)
+    goto size;
+  NS_GET16(rr->type, handle->_msg_ptr);
+  NS_GET16(rr->rr_class, handle->_msg_ptr);
+  if (section != ns_s_qd) {
+    if (NS_INT32SZ + NS_INT16SZ > handle->_eom - handle->_msg_ptr)
+      goto size;
+    NS_GET32(rr->ttl, handle->_msg_ptr);
+    NS_GET16(rr->rdlength, handle->_msg_ptr);
+    if (rr->rdlength > handle->_eom - handle->_msg_ptr)
+      goto size;
+    rr->rdata = handle->_msg_ptr;
+    handle->_msg_ptr += rr->rdlength;
+  } else {
+    rr->ttl = 0;
+    rr->rdlength = 0;
+    rr->rdata = NULL;
+  }
+  handle->_rrnum++;
+  if (handle->_rrnum > handle->_counts[section]) {
+    handle->_sect = section + 1;
+    if (handle->_sect == ns_s_max) {
+      handle->_rrnum = -1;
+      handle->_msg_ptr = NULL;
+    } else {
+      handle->_rrnum = 0;
+    }
+  }
+  return 0;
 bad:
-	errno = ENODEV;
-	return -1;
+  errno = ENODEV;
+  return -1;
 size:
-	errno = EMSGSIZE;
-	return -1;
+  errno = EMSGSIZE;
+  return -1;
 }
 
-int ns_name_uncompress(const unsigned char *msg, const unsigned char *eom,
-                       const unsigned char *src, char *dst, size_t dstsiz)
-{
-	int r;
-	r = dn_expand(msg, eom, src, dst, dstsiz);
-	if (r < 0) errno = EMSGSIZE;
-	return r;
+int ns_name_uncompress(const unsigned char* msg,
+                       const unsigned char* eom,
+                       const unsigned char* src,
+                       char* dst,
+                       size_t dstsiz) {
+  int r;
+  r = dn_expand(msg, eom, src, dst, dstsiz);
+  if (r < 0)
+    errno = EMSGSIZE;
+  return r;
 }
diff --git a/fusl/src/network/ntohl.c b/fusl/src/network/ntohl.c
index d6fce45..4139a83 100644
--- a/fusl/src/network/ntohl.c
+++ b/fusl/src/network/ntohl.c
@@ -1,8 +1,10 @@
 #include <netinet/in.h>
 #include <byteswap.h>
 
-uint32_t ntohl(uint32_t n)
-{
-	union { int i; char c; } u = { 1 };
-	return u.c ? bswap_32(n) : n;
+uint32_t ntohl(uint32_t n) {
+  union {
+    int i;
+    char c;
+  } u = {1};
+  return u.c ? bswap_32(n) : n;
 }
diff --git a/fusl/src/network/ntohs.c b/fusl/src/network/ntohs.c
index 745cef4..ee93ad6 100644
--- a/fusl/src/network/ntohs.c
+++ b/fusl/src/network/ntohs.c
@@ -1,8 +1,10 @@
 #include <netinet/in.h>
 #include <byteswap.h>
 
-uint16_t ntohs(uint16_t n)
-{
-	union { int i; char c; } u = { 1 };
-	return u.c ? bswap_16(n) : n;
+uint16_t ntohs(uint16_t n) {
+  union {
+    int i;
+    char c;
+  } u = {1};
+  return u.c ? bswap_16(n) : n;
 }
diff --git a/fusl/src/network/proto.c b/fusl/src/network/proto.c
index a42d145..e91df30 100644
--- a/fusl/src/network/proto.c
+++ b/fusl/src/network/proto.c
@@ -5,80 +5,77 @@
 
 static int idx;
 static const unsigned char protos[] = {
-	"\000ip\0"
-	"\001icmp\0"
-	"\002igmp\0"
-	"\003ggp\0"
-	"\004ipencap\0"
-	"\005st\0"
-	"\006tcp\0"
-	"\008egp\0"
-	"\014pup\0"
-	"\021udp\0"
-	"\024hmp\0"
-	"\026xns-idp\0"
-	"\033rdp\0"
-	"\035iso-tp4\0"
-	"\044xtp\0"
-	"\045ddp\0"
-	"\046idpr-cmtp\0"
-	"\051ipv6\0"
-	"\053ipv6-route\0"
-	"\054ipv6-frag\0"
-	"\055idrp\0"
-	"\056rsvp\0"
-	"\057gre\0"
-	"\062esp\0"
-	"\063ah\0"
-	"\071skip\0"
-	"\072ipv6-icmp\0"
-	"\073ipv6-nonxt\0"
-	"\074ipv6-opts\0"
-	"\111rspf\0"
-	"\121vmtp\0"
-	"\131ospf\0"
-	"\136ipip\0"
-	"\142encap\0"
-	"\147pim\0"
-	"\377raw"
-};
+    "\000ip\0"
+    "\001icmp\0"
+    "\002igmp\0"
+    "\003ggp\0"
+    "\004ipencap\0"
+    "\005st\0"
+    "\006tcp\0"
+    "\008egp\0"
+    "\014pup\0"
+    "\021udp\0"
+    "\024hmp\0"
+    "\026xns-idp\0"
+    "\033rdp\0"
+    "\035iso-tp4\0"
+    "\044xtp\0"
+    "\045ddp\0"
+    "\046idpr-cmtp\0"
+    "\051ipv6\0"
+    "\053ipv6-route\0"
+    "\054ipv6-frag\0"
+    "\055idrp\0"
+    "\056rsvp\0"
+    "\057gre\0"
+    "\062esp\0"
+    "\063ah\0"
+    "\071skip\0"
+    "\072ipv6-icmp\0"
+    "\073ipv6-nonxt\0"
+    "\074ipv6-opts\0"
+    "\111rspf\0"
+    "\121vmtp\0"
+    "\131ospf\0"
+    "\136ipip\0"
+    "\142encap\0"
+    "\147pim\0"
+    "\377raw"};
 
-void endprotoent(void)
-{
-	idx = 0;
+void endprotoent(void) {
+  idx = 0;
 }
 
-void setprotoent(int stayopen)
-{
-	idx = 0;
+void setprotoent(int stayopen) {
+  idx = 0;
 }
 
-struct protoent *getprotoent(void)
-{
-	static struct protoent p;
-	static const char *aliases;
-	if (idx >= sizeof protos) return NULL;
-	p.p_proto = protos[idx];
-	p.p_name = (char *)&protos[idx+1];
-	p.p_aliases = (char **)&aliases;
-	idx += strlen(p.p_name) + 2;
-	return &p;
+struct protoent* getprotoent(void) {
+  static struct protoent p;
+  static const char* aliases;
+  if (idx >= sizeof protos)
+    return NULL;
+  p.p_proto = protos[idx];
+  p.p_name = (char*)&protos[idx + 1];
+  p.p_aliases = (char**)&aliases;
+  idx += strlen(p.p_name) + 2;
+  return &p;
 }
 
-struct protoent *getprotobyname(const char *name)
-{
-	struct protoent *p;
-	endprotoent();
-	do p = getprotoent();
-	while (p && strcmp(name, p->p_name));
-	return p;
+struct protoent* getprotobyname(const char* name) {
+  struct protoent* p;
+  endprotoent();
+  do
+    p = getprotoent();
+  while (p && strcmp(name, p->p_name));
+  return p;
 }
 
-struct protoent *getprotobynumber(int num)
-{
-	struct protoent *p;
-	endprotoent();
-	do p = getprotoent();
-	while (p && p->p_proto != num);
-	return p;
+struct protoent* getprotobynumber(int num) {
+  struct protoent* p;
+  endprotoent();
+  do
+    p = getprotoent();
+  while (p && p->p_proto != num);
+  return p;
 }
diff --git a/fusl/src/network/recv.c b/fusl/src/network/recv.c
index 5970048..8b6b05c 100644
--- a/fusl/src/network/recv.c
+++ b/fusl/src/network/recv.c
@@ -1,6 +1,5 @@
 #include <sys/socket.h>
 
-ssize_t recv(int fd, void *buf, size_t len, int flags)
-{
-	return recvfrom(fd, buf, len, flags, 0, 0);
+ssize_t recv(int fd, void* buf, size_t len, int flags) {
+  return recvfrom(fd, buf, len, flags, 0, 0);
 }
diff --git a/fusl/src/network/recvfrom.c b/fusl/src/network/recvfrom.c
index 436f344..a0345f8 100644
--- a/fusl/src/network/recvfrom.c
+++ b/fusl/src/network/recvfrom.c
@@ -2,7 +2,11 @@
 #include "syscall.h"
 #include "libc.h"
 
-ssize_t recvfrom(int fd, void *restrict buf, size_t len, int flags, struct sockaddr *restrict addr, socklen_t *restrict alen)
-{
-	return socketcall_cp(recvfrom, fd, buf, len, flags, addr, alen);
+ssize_t recvfrom(int fd,
+                 void* restrict buf,
+                 size_t len,
+                 int flags,
+                 struct sockaddr* restrict addr,
+                 socklen_t* restrict alen) {
+  return socketcall_cp(recvfrom, fd, buf, len, flags, addr, alen);
 }
diff --git a/fusl/src/network/recvmmsg.c b/fusl/src/network/recvmmsg.c
index 58b1b2f..f24d60b 100644
--- a/fusl/src/network/recvmmsg.c
+++ b/fusl/src/network/recvmmsg.c
@@ -3,13 +3,16 @@
 #include <limits.h>
 #include "syscall.h"
 
-int recvmmsg(int fd, struct mmsghdr *msgvec, unsigned int vlen, unsigned int flags, struct timespec *timeout)
-{
+int recvmmsg(int fd,
+             struct mmsghdr* msgvec,
+             unsigned int vlen,
+             unsigned int flags,
+             struct timespec* timeout) {
 #if LONG_MAX > INT_MAX
-	struct mmsghdr *mh = msgvec;
-	unsigned int i;
-	for (i = vlen; i; i--, mh++)
-		mh->msg_hdr.__pad1 = mh->msg_hdr.__pad2 = 0;
+  struct mmsghdr* mh = msgvec;
+  unsigned int i;
+  for (i = vlen; i; i--, mh++)
+    mh->msg_hdr.__pad1 = mh->msg_hdr.__pad2 = 0;
 #endif
-	return syscall_cp(SYS_recvmmsg, fd, msgvec, vlen, flags, timeout);
+  return syscall_cp(SYS_recvmmsg, fd, msgvec, vlen, flags, timeout);
 }
diff --git a/fusl/src/network/recvmsg.c b/fusl/src/network/recvmsg.c
index 4f52665..cf37273 100644
--- a/fusl/src/network/recvmsg.c
+++ b/fusl/src/network/recvmsg.c
@@ -3,20 +3,20 @@
 #include "syscall.h"
 #include "libc.h"
 
-ssize_t recvmsg(int fd, struct msghdr *msg, int flags)
-{
-	ssize_t r;
+ssize_t recvmsg(int fd, struct msghdr* msg, int flags) {
+  ssize_t r;
 #if LONG_MAX > INT_MAX
-	struct msghdr h, *orig = msg;
-	if (msg) {
-		h = *msg;
-		h.__pad1 = h.__pad2 = 0;
-		msg = &h;
-	}
+  struct msghdr h, *orig = msg;
+  if (msg) {
+    h = *msg;
+    h.__pad1 = h.__pad2 = 0;
+    msg = &h;
+  }
 #endif
-	r = socketcall_cp(recvmsg, fd, msg, flags, 0, 0, 0);
+  r = socketcall_cp(recvmsg, fd, msg, flags, 0, 0, 0);
 #if LONG_MAX > INT_MAX
-	if (orig) *orig = h;
+  if (orig)
+    *orig = h;
 #endif
-	return r;
+  return r;
 }
diff --git a/fusl/src/network/res_init.c b/fusl/src/network/res_init.c
index 5dba9df..cdb6456 100644
--- a/fusl/src/network/res_init.c
+++ b/fusl/src/network/res_init.c
@@ -1,6 +1,5 @@
 #include <resolv.h>
 
-int res_init()
-{
-	return 0;
+int res_init() {
+  return 0;
 }
diff --git a/fusl/src/network/res_mkquery.c b/fusl/src/network/res_mkquery.c
index ec4568a..15f7d1d 100644
--- a/fusl/src/network/res_mkquery.c
+++ b/fusl/src/network/res_mkquery.c
@@ -3,42 +3,50 @@
 #include <time.h>
 #include "libc.h"
 
-int __res_mkquery(int op, const char *dname, int class, int type,
-	const unsigned char *data, int datalen,
-	const unsigned char *newrr, unsigned char *buf, int buflen)
-{
-	int id, i, j;
-	unsigned char q[280];
-	struct timespec ts;
-	size_t l = strnlen(dname, 255);
-	int n;
+int __res_mkquery(int op,
+                  const char* dname,
+                  int class,
+                  int type,
+                  const unsigned char* data,
+                  int datalen,
+                  const unsigned char* newrr,
+                  unsigned char* buf,
+                  int buflen) {
+  int id, i, j;
+  unsigned char q[280];
+  struct timespec ts;
+  size_t l = strnlen(dname, 255);
+  int n;
 
-	if (l && dname[l-1]=='.') l--;
-	n = 17+l+!!l;
-	if (l>253 || buflen<n || op>15u || class>255u || type>255u)
-		return -1;
+  if (l && dname[l - 1] == '.')
+    l--;
+  n = 17 + l + !!l;
+  if (l > 253 || buflen < n || op > 15u || class > 255u || type > 255u)
+    return -1;
 
-	/* Construct query template - ID will be filled later */
-	memset(q, 0, n);
-	q[2] = op*8 + 1;
-	q[5] = 1;
-	memcpy((char *)q+13, dname, l);
-	for (i=13; q[i]; i=j+1) {
-		for (j=i; q[j] && q[j] != '.'; j++);
-		if (j-i-1u > 62u) return -1;
-		q[i-1] = j-i;
-	}
-	q[i+1] = type;
-	q[i+3] = class;
+  /* Construct query template - ID will be filled later */
+  memset(q, 0, n);
+  q[2] = op * 8 + 1;
+  q[5] = 1;
+  memcpy((char*)q + 13, dname, l);
+  for (i = 13; q[i]; i = j + 1) {
+    for (j = i; q[j] && q[j] != '.'; j++)
+      ;
+    if (j - i - 1u > 62u)
+      return -1;
+    q[i - 1] = j - i;
+  }
+  q[i + 1] = type;
+  q[i + 3] = class;
 
-	/* Make a reasonably unpredictable id */
-	clock_gettime(CLOCK_REALTIME, &ts);
-	id = ts.tv_nsec + ts.tv_nsec/65536UL & 0xffff;
-	q[0] = id/256;
-	q[1] = id;
+  /* Make a reasonably unpredictable id */
+  clock_gettime(CLOCK_REALTIME, &ts);
+  id = ts.tv_nsec + ts.tv_nsec / 65536UL & 0xffff;
+  q[0] = id / 256;
+  q[1] = id;
 
-	memcpy(buf, q, n);
-	return n;
+  memcpy(buf, q, n);
+  return n;
 }
 
 weak_alias(__res_mkquery, res_mkquery);
diff --git a/fusl/src/network/res_msend.c b/fusl/src/network/res_msend.c
index a47d18d..babd383 100644
--- a/fusl/src/network/res_msend.c
+++ b/fusl/src/network/res_msend.c
@@ -14,172 +14,180 @@
 #include "syscall.h"
 #include "lookup.h"
 
-static void cleanup(void *p)
-{
-	__syscall(SYS_close, (intptr_t)p);
+static void cleanup(void* p) {
+  __syscall(SYS_close, (intptr_t)p);
 }
 
-static unsigned long mtime()
-{
-	struct timespec ts;
-	clock_gettime(CLOCK_REALTIME, &ts);
-	return (unsigned long)ts.tv_sec * 1000
-		+ ts.tv_nsec / 1000000;
+static unsigned long mtime() {
+  struct timespec ts;
+  clock_gettime(CLOCK_REALTIME, &ts);
+  return (unsigned long)ts.tv_sec * 1000 + ts.tv_nsec / 1000000;
 }
 
-int __res_msend_rc(int nqueries, const unsigned char *const *queries,
-	const int *qlens, unsigned char *const *answers, int *alens, int asize,
-	const struct resolvconf *conf)
-{
-	int fd;
-	int timeout, attempts, retry_interval, servfail_retry;
-	union {
-		struct sockaddr_in sin;
-		struct sockaddr_in6 sin6;
-	} sa = {0}, ns[MAXNS] = {{0}};
-	socklen_t sl = sizeof sa.sin;
-	int nns = 0;
-	int family = AF_INET;
-	int rlen;
-	int next;
-	int i, j;
-	int cs;
-	struct pollfd pfd;
-	unsigned long t0, t1, t2;
+int __res_msend_rc(int nqueries,
+                   const unsigned char* const* queries,
+                   const int* qlens,
+                   unsigned char* const* answers,
+                   int* alens,
+                   int asize,
+                   const struct resolvconf* conf) {
+  int fd;
+  int timeout, attempts, retry_interval, servfail_retry;
+  union {
+    struct sockaddr_in sin;
+    struct sockaddr_in6 sin6;
+  } sa = {0}, ns[MAXNS] = {{0}};
+  socklen_t sl = sizeof sa.sin;
+  int nns = 0;
+  int family = AF_INET;
+  int rlen;
+  int next;
+  int i, j;
+  int cs;
+  struct pollfd pfd;
+  unsigned long t0, t1, t2;
 
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
 
-	timeout = 1000*conf->timeout;
-	attempts = conf->attempts;
+  timeout = 1000 * conf->timeout;
+  attempts = conf->attempts;
 
-	nns = conf->nns;
-	for (nns=0; nns<conf->nns; nns++) {
-		const struct address *iplit = &conf->ns[nns];
-		if (iplit->family == AF_INET) {
-			memcpy(&ns[nns].sin.sin_addr, iplit->addr, 4);
-			ns[nns].sin.sin_port = htons(53);
-			ns[nns].sin.sin_family = AF_INET;
-		} else {
-			sl = sizeof sa.sin6;
-			memcpy(&ns[nns].sin6.sin6_addr, iplit->addr, 16);
-			ns[nns].sin6.sin6_port = htons(53);
-			ns[nns].sin6.sin6_scope_id = iplit->scopeid;
-			ns[nns].sin6.sin6_family = family = AF_INET6;
-		}
-	}
+  nns = conf->nns;
+  for (nns = 0; nns < conf->nns; nns++) {
+    const struct address* iplit = &conf->ns[nns];
+    if (iplit->family == AF_INET) {
+      memcpy(&ns[nns].sin.sin_addr, iplit->addr, 4);
+      ns[nns].sin.sin_port = htons(53);
+      ns[nns].sin.sin_family = AF_INET;
+    } else {
+      sl = sizeof sa.sin6;
+      memcpy(&ns[nns].sin6.sin6_addr, iplit->addr, 16);
+      ns[nns].sin6.sin6_port = htons(53);
+      ns[nns].sin6.sin6_scope_id = iplit->scopeid;
+      ns[nns].sin6.sin6_family = family = AF_INET6;
+    }
+  }
 
-	/* Get local address and open/bind a socket */
-	sa.sin.sin_family = family;
-	fd = socket(family, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
+  /* Get local address and open/bind a socket */
+  sa.sin.sin_family = family;
+  fd = socket(family, SOCK_DGRAM | SOCK_CLOEXEC | SOCK_NONBLOCK, 0);
 
-	/* Handle case where system lacks IPv6 support */
-	if (fd < 0 && family == AF_INET6 && errno == EAFNOSUPPORT) {
-		fd = socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0);
-		family = AF_INET;
-	}
-	if (fd < 0 || bind(fd, (void *)&sa, sl) < 0) return -1;
+  /* Handle case where system lacks IPv6 support */
+  if (fd < 0 && family == AF_INET6 && errno == EAFNOSUPPORT) {
+    fd = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC | SOCK_NONBLOCK, 0);
+    family = AF_INET;
+  }
+  if (fd < 0 || bind(fd, (void*)&sa, sl) < 0)
+    return -1;
 
-	/* Past this point, there are no errors. Each individual query will
-	 * yield either no reply (indicated by zero length) or an answer
-	 * packet which is up to the caller to interpret. */
+  /* Past this point, there are no errors. Each individual query will
+   * yield either no reply (indicated by zero length) or an answer
+   * packet which is up to the caller to interpret. */
 
-	pthread_cleanup_push(cleanup, (void *)(intptr_t)fd);
-	pthread_setcancelstate(cs, 0);
+  pthread_cleanup_push(cleanup, (void*)(intptr_t)fd);
+  pthread_setcancelstate(cs, 0);
 
-	/* Convert any IPv4 addresses in a mixed environment to v4-mapped */
-	if (family == AF_INET6) {
-		setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &(int){0}, sizeof 0);
-		for (i=0; i<nns; i++) {
-			if (ns[i].sin.sin_family != AF_INET) continue;
-			memcpy(ns[i].sin6.sin6_addr.s6_addr+12,
-				&ns[i].sin.sin_addr, 4);
-			memcpy(ns[i].sin6.sin6_addr.s6_addr,
-				"\0\0\0\0\0\0\0\0\0\0\xff\xff", 12);
-			ns[i].sin6.sin6_family = AF_INET6;
-			ns[i].sin6.sin6_flowinfo = 0;
-			ns[i].sin6.sin6_scope_id = 0;
-		}
-	}
+  /* Convert any IPv4 addresses in a mixed environment to v4-mapped */
+  if (family == AF_INET6) {
+    setsockopt(fd, IPPROTO_IPV6, IPV6_V6ONLY, &(int){0}, sizeof 0);
+    for (i = 0; i < nns; i++) {
+      if (ns[i].sin.sin_family != AF_INET)
+        continue;
+      memcpy(ns[i].sin6.sin6_addr.s6_addr + 12, &ns[i].sin.sin_addr, 4);
+      memcpy(ns[i].sin6.sin6_addr.s6_addr, "\0\0\0\0\0\0\0\0\0\0\xff\xff", 12);
+      ns[i].sin6.sin6_family = AF_INET6;
+      ns[i].sin6.sin6_flowinfo = 0;
+      ns[i].sin6.sin6_scope_id = 0;
+    }
+  }
 
-	memset(alens, 0, sizeof *alens * nqueries);
+  memset(alens, 0, sizeof *alens * nqueries);
 
-	pfd.fd = fd;
-	pfd.events = POLLIN;
-	retry_interval = timeout / attempts;
-	next = 0;
-	t0 = t2 = mtime();
-	t1 = t2 - retry_interval;
+  pfd.fd = fd;
+  pfd.events = POLLIN;
+  retry_interval = timeout / attempts;
+  next = 0;
+  t0 = t2 = mtime();
+  t1 = t2 - retry_interval;
 
-	for (; t2-t0 < timeout; t2=mtime()) {
-		if (t2-t1 >= retry_interval) {
-			/* Query all configured namservers in parallel */
-			for (i=0; i<nqueries; i++)
-				if (!alens[i])
-					for (j=0; j<nns; j++)
-						sendto(fd, queries[i],
-							qlens[i], MSG_NOSIGNAL,
-							(void *)&ns[j], sl);
-			t1 = t2;
-			servfail_retry = 2 * nqueries;
-		}
+  for (; t2 - t0 < timeout; t2 = mtime()) {
+    if (t2 - t1 >= retry_interval) {
+      /* Query all configured namservers in parallel */
+      for (i = 0; i < nqueries; i++)
+        if (!alens[i])
+          for (j = 0; j < nns; j++)
+            sendto(fd, queries[i], qlens[i], MSG_NOSIGNAL, (void*)&ns[j], sl);
+      t1 = t2;
+      servfail_retry = 2 * nqueries;
+    }
 
-		/* Wait for a response, or until time to retry */
-		if (poll(&pfd, 1, t1+retry_interval-t2) <= 0) continue;
+    /* Wait for a response, or until time to retry */
+    if (poll(&pfd, 1, t1 + retry_interval - t2) <= 0)
+      continue;
 
-		while ((rlen = recvfrom(fd, answers[next], asize, 0,
-		  (void *)&sa, (socklen_t[1]){sl})) >= 0) {
+    while ((rlen = recvfrom(fd, answers[next], asize, 0, (void*)&sa,
+                            (socklen_t[1]){sl})) >= 0) {
+      /* Ignore non-identifiable packets */
+      if (rlen < 4)
+        continue;
 
-			/* Ignore non-identifiable packets */
-			if (rlen < 4) continue;
+      /* Ignore replies from addresses we didn't send to */
+      for (j = 0; j < nns && memcmp(ns + j, &sa, sl); j++)
+        ;
+      if (j == nns)
+        continue;
 
-			/* Ignore replies from addresses we didn't send to */
-			for (j=0; j<nns && memcmp(ns+j, &sa, sl); j++);
-			if (j==nns) continue;
+      /* Find which query this answer goes with, if any */
+      for (i = next; i < nqueries && (answers[next][0] != queries[i][0] ||
+                                      answers[next][1] != queries[i][1]);
+           i++)
+        ;
+      if (i == nqueries)
+        continue;
+      if (alens[i])
+        continue;
 
-			/* Find which query this answer goes with, if any */
-			for (i=next; i<nqueries && (
-				answers[next][0] != queries[i][0] ||
-				answers[next][1] != queries[i][1] ); i++);
-			if (i==nqueries) continue;
-			if (alens[i]) continue;
+      /* Only accept positive or negative responses;
+       * retry immediately on server failure, and ignore
+       * all other codes such as refusal. */
+      switch (answers[next][3] & 15) {
+        case 0:
+        case 3:
+          break;
+        case 2:
+          if (servfail_retry && servfail_retry--)
+            sendto(fd, queries[i], qlens[i], MSG_NOSIGNAL, (void*)&ns[j], sl);
+        default:
+          continue;
+      }
 
-			/* Only accept positive or negative responses;
-			 * retry immediately on server failure, and ignore
-			 * all other codes such as refusal. */
-			switch (answers[next][3] & 15) {
-			case 0:
-			case 3:
-				break;
-			case 2:
-				if (servfail_retry && servfail_retry--)
-					sendto(fd, queries[i],
-						qlens[i], MSG_NOSIGNAL,
-						(void *)&ns[j], sl);
-			default:
-				continue;
-			}
+      /* Store answer in the right slot, or update next
+       * available temp slot if it's already in place. */
+      alens[i] = rlen;
+      if (i == next)
+        for (; next < nqueries && alens[next]; next++)
+          ;
+      else
+        memcpy(answers[i], answers[next], rlen);
 
-			/* Store answer in the right slot, or update next
-			 * available temp slot if it's already in place. */
-			alens[i] = rlen;
-			if (i == next)
-				for (; next<nqueries && alens[next]; next++);
-			else
-				memcpy(answers[i], answers[next], rlen);
-
-			if (next == nqueries) goto out;
-		}
-	}
+      if (next == nqueries)
+        goto out;
+    }
+  }
 out:
-	pthread_cleanup_pop(1);
+  pthread_cleanup_pop(1);
 
-	return 0;
+  return 0;
 }
 
-int __res_msend(int nqueries, const unsigned char *const *queries,
-	const int *qlens, unsigned char *const *answers, int *alens, int asize)
-{
-	struct resolvconf conf;
-	if (__get_resolv_conf(&conf, 0, 0) < 0) return -1;
-	return __res_msend_rc(nqueries, queries, qlens, answers, alens, asize, &conf);
+int __res_msend(int nqueries,
+                const unsigned char* const* queries,
+                const int* qlens,
+                unsigned char* const* answers,
+                int* alens,
+                int asize) {
+  struct resolvconf conf;
+  if (__get_resolv_conf(&conf, 0, 0) < 0)
+    return -1;
+  return __res_msend_rc(nqueries, queries, qlens, answers, alens, asize, &conf);
 }
diff --git a/fusl/src/network/res_query.c b/fusl/src/network/res_query.c
index 2b4e4bb..9f37c13 100644
--- a/fusl/src/network/res_query.c
+++ b/fusl/src/network/res_query.c
@@ -2,15 +2,27 @@
 #include <netdb.h>
 #include "libc.h"
 
-int __res_mkquery(int, const char *, int, int, const unsigned char *, int, const unsigned char*, unsigned char *, int);
-int __res_send(const unsigned char *, int, unsigned char *, int);
+int __res_mkquery(int,
+                  const char*,
+                  int,
+                  int,
+                  const unsigned char*,
+                  int,
+                  const unsigned char*,
+                  unsigned char*,
+                  int);
+int __res_send(const unsigned char*, int, unsigned char*, int);
 
-int __res_query(const char *name, int class, int type, unsigned char *dest, int len)
-{
-	unsigned char q[280];
-	int ql = __res_mkquery(0, name, class, type, 0, 0, 0, q, sizeof q);
-	if (ql < 0) return ql;
-	return __res_send(q, ql, dest, len);
+int __res_query(const char* name,
+                int class,
+                int type,
+                unsigned char* dest,
+                int len) {
+  unsigned char q[280];
+  int ql = __res_mkquery(0, name, class, type, 0, 0, 0, q, sizeof q);
+  if (ql < 0)
+    return ql;
+  return __res_send(q, ql, dest, len);
 }
 
 weak_alias(__res_query, res_query);
diff --git a/fusl/src/network/res_querydomain.c b/fusl/src/network/res_querydomain.c
index 727e6f6..983918d 100644
--- a/fusl/src/network/res_querydomain.c
+++ b/fusl/src/network/res_querydomain.c
@@ -1,14 +1,19 @@
 #include <resolv.h>
 #include <string.h>
 
-int res_querydomain(const char *name, const char *domain, int class, int type, unsigned char *dest, int len)
-{
-	char tmp[255];
-	size_t nl = strnlen(name, 255);
-	size_t dl = strnlen(domain, 255);
-	if (nl+dl+1 > 254) return -1;
-	memcpy(tmp, name, nl);
-	tmp[nl] = '.';
-	memcpy(tmp+nl+1, domain, dl+1);
-	return res_query(tmp, class, type, dest, len);
+int res_querydomain(const char* name,
+                    const char* domain,
+                    int class,
+                    int type,
+                    unsigned char* dest,
+                    int len) {
+  char tmp[255];
+  size_t nl = strnlen(name, 255);
+  size_t dl = strnlen(domain, 255);
+  if (nl + dl + 1 > 254)
+    return -1;
+  memcpy(tmp, name, nl);
+  tmp[nl] = '.';
+  memcpy(tmp + nl + 1, domain, dl + 1);
+  return res_query(tmp, class, type, dest, len);
 }
diff --git a/fusl/src/network/res_send.c b/fusl/src/network/res_send.c
index 19cfe0f..c4b9348 100644
--- a/fusl/src/network/res_send.c
+++ b/fusl/src/network/res_send.c
@@ -1,12 +1,19 @@
 #include <resolv.h>
 #include "libc.h"
 
-int __res_msend(int, const unsigned char *const *, const int *, unsigned char *const *, int *, int);
+int __res_msend(int,
+                const unsigned char* const*,
+                const int*,
+                unsigned char* const*,
+                int*,
+                int);
 
-int __res_send(const unsigned char *msg, int msglen, unsigned char *answer, int anslen)
-{
-	int r = __res_msend(1, &msg, &msglen, &answer, &anslen, anslen);
-	return r<0 ? r : anslen;
+int __res_send(const unsigned char* msg,
+               int msglen,
+               unsigned char* answer,
+               int anslen) {
+  int r = __res_msend(1, &msg, &msglen, &answer, &anslen, anslen);
+  return r < 0 ? r : anslen;
 }
 
 weak_alias(__res_send, res_send);
diff --git a/fusl/src/network/res_state.c b/fusl/src/network/res_state.c
index 5c42cda..4492c79 100644
--- a/fusl/src/network/res_state.c
+++ b/fusl/src/network/res_state.c
@@ -2,8 +2,7 @@
 
 /* This is completely unused, and exists purely to satisfy broken apps. */
 
-struct __res_state *__res_state()
-{
-	static struct __res_state res;
-	return &res;
+struct __res_state* __res_state() {
+  static struct __res_state res;
+  return &res;
 }
diff --git a/fusl/src/network/resolvconf.c b/fusl/src/network/resolvconf.c
index 2cf1f47..e426bee 100644
--- a/fusl/src/network/resolvconf.c
+++ b/fusl/src/network/resolvconf.c
@@ -5,89 +5,100 @@
 #include <string.h>
 #include <netinet/in.h>
 
-int __get_resolv_conf(struct resolvconf *conf, char *search, size_t search_sz)
-{
-	char line[256];
-	unsigned char _buf[256];
-	FILE *f, _f;
-	int nns = 0;
+int __get_resolv_conf(struct resolvconf* conf, char* search, size_t search_sz) {
+  char line[256];
+  unsigned char _buf[256];
+  FILE *f, _f;
+  int nns = 0;
 
-	conf->ndots = 1;
-	conf->timeout = 5;
-	conf->attempts = 2;
-	if (search) *search = 0;
+  conf->ndots = 1;
+  conf->timeout = 5;
+  conf->attempts = 2;
+  if (search)
+    *search = 0;
 
-	f = __fopen_rb_ca("/etc/resolv.conf", &_f, _buf, sizeof _buf);
-	if (!f) switch (errno) {
-	case ENOENT:
-	case ENOTDIR:
-	case EACCES:
-		goto no_resolv_conf;
-	default:
-		return -1;
-	}
+  f = __fopen_rb_ca("/etc/resolv.conf", &_f, _buf, sizeof _buf);
+  if (!f)
+    switch (errno) {
+      case ENOENT:
+      case ENOTDIR:
+      case EACCES:
+        goto no_resolv_conf;
+      default:
+        return -1;
+    }
 
-	while (fgets(line, sizeof line, f)) {
-		char *p, *z;
-		if (!strchr(line, '\n') && !feof(f)) {
-			/* Ignore lines that get truncated rather than
-			 * potentially misinterpreting them. */
-			int c;
-			do c = getc(f);
-			while (c != '\n' && c != EOF);
-			continue;
-		}
-		if (!strncmp(line, "options", 7) && isspace(line[7])) {
-			p = strstr(line, "ndots:");
-			if (p && isdigit(p[6])) {
-				p += 6;
-				unsigned long x = strtoul(p, &z, 10);
-				if (z != p) conf->ndots = x > 15 ? 15 : x;
-			}
-			p = strstr(line, "attempts:");
-			if (p && isdigit(p[6])) {
-				p += 6;
-				unsigned long x = strtoul(p, &z, 10);
-				if (z != p) conf->attempts = x > 10 ? 10 : x;
-			}
-			p = strstr(line, "timeout:");
-			if (p && (isdigit(p[8]) || p[8]=='.')) {
-				p += 8;
-				unsigned long x = strtoul(p, &z, 10);
-				if (z != p) conf->timeout = x > 60 ? 60 : x;
-			}
-			continue;
-		}
-		if (!strncmp(line, "nameserver", 10) && isspace(line[10])) {
-			if (nns >= MAXNS) continue;
-			for (p=line+11; isspace(*p); p++);
-			for (z=p; *z && !isspace(*z); z++);
-			*z=0;
-			if (__lookup_ipliteral(conf->ns+nns, p, AF_UNSPEC) > 0)
-				nns++;
-			continue;
-		}
+  while (fgets(line, sizeof line, f)) {
+    char *p, *z;
+    if (!strchr(line, '\n') && !feof(f)) {
+      /* Ignore lines that get truncated rather than
+       * potentially misinterpreting them. */
+      int c;
+      do
+        c = getc(f);
+      while (c != '\n' && c != EOF);
+      continue;
+    }
+    if (!strncmp(line, "options", 7) && isspace(line[7])) {
+      p = strstr(line, "ndots:");
+      if (p && isdigit(p[6])) {
+        p += 6;
+        unsigned long x = strtoul(p, &z, 10);
+        if (z != p)
+          conf->ndots = x > 15 ? 15 : x;
+      }
+      p = strstr(line, "attempts:");
+      if (p && isdigit(p[6])) {
+        p += 6;
+        unsigned long x = strtoul(p, &z, 10);
+        if (z != p)
+          conf->attempts = x > 10 ? 10 : x;
+      }
+      p = strstr(line, "timeout:");
+      if (p && (isdigit(p[8]) || p[8] == '.')) {
+        p += 8;
+        unsigned long x = strtoul(p, &z, 10);
+        if (z != p)
+          conf->timeout = x > 60 ? 60 : x;
+      }
+      continue;
+    }
+    if (!strncmp(line, "nameserver", 10) && isspace(line[10])) {
+      if (nns >= MAXNS)
+        continue;
+      for (p = line + 11; isspace(*p); p++)
+        ;
+      for (z = p; *z && !isspace(*z); z++)
+        ;
+      *z = 0;
+      if (__lookup_ipliteral(conf->ns + nns, p, AF_UNSPEC) > 0)
+        nns++;
+      continue;
+    }
 
-		if (!search) continue;
-		if ((strncmp(line, "domain", 6) && strncmp(line, "search", 6))
-		    || !isspace(line[6]))
-			continue;
-		for (p=line+7; isspace(*p); p++);
-		size_t l = strlen(p);
-		/* This can never happen anyway with chosen buffer sizes. */
-		if (l >= search_sz) continue;
-		memcpy(search, p, l+1);
-	}
+    if (!search)
+      continue;
+    if ((strncmp(line, "domain", 6) && strncmp(line, "search", 6)) ||
+        !isspace(line[6]))
+      continue;
+    for (p = line + 7; isspace(*p); p++)
+      ;
+    size_t l = strlen(p);
+    /* This can never happen anyway with chosen buffer sizes. */
+    if (l >= search_sz)
+      continue;
+    memcpy(search, p, l + 1);
+  }
 
-	__fclose_ca(f);
+  __fclose_ca(f);
 
 no_resolv_conf:
-	if (!nns) {
-		__lookup_ipliteral(conf->ns, "127.0.0.1", AF_UNSPEC);
-		nns = 1;
-	}
+  if (!nns) {
+    __lookup_ipliteral(conf->ns, "127.0.0.1", AF_UNSPEC);
+    nns = 1;
+  }
 
-	conf->nns = nns;
+  conf->nns = nns;
 
-	return 0;
+  return 0;
 }
diff --git a/fusl/src/network/send.c b/fusl/src/network/send.c
index 9f10497..7561755 100644
--- a/fusl/src/network/send.c
+++ b/fusl/src/network/send.c
@@ -1,6 +1,5 @@
 #include <sys/socket.h>
 
-ssize_t send(int fd, const void *buf, size_t len, int flags)
-{
-	return sendto(fd, buf, len, flags, 0, 0);
+ssize_t send(int fd, const void* buf, size_t len, int flags) {
+  return sendto(fd, buf, len, flags, 0, 0);
 }
diff --git a/fusl/src/network/sendmmsg.c b/fusl/src/network/sendmmsg.c
index eeae1d0..92dc20a 100644
--- a/fusl/src/network/sendmmsg.c
+++ b/fusl/src/network/sendmmsg.c
@@ -4,27 +4,32 @@
 #include <errno.h>
 #include "syscall.h"
 
-int sendmmsg(int fd, struct mmsghdr *msgvec, unsigned int vlen, unsigned int flags)
-{
+int sendmmsg(int fd,
+             struct mmsghdr* msgvec,
+             unsigned int vlen,
+             unsigned int flags) {
 #if LONG_MAX > INT_MAX
-	/* Can't use the syscall directly because the kernel has the wrong
-	 * idea for the types of msg_iovlen, msg_controllen, and cmsg_len,
-	 * and the cmsg blocks cannot be modified in-place. */
-	int i;
-	if (vlen > IOV_MAX) vlen = IOV_MAX; /* This matches the kernel. */
-	if (!vlen) return 0;
-	for (i=0; i<vlen; i++) {
-		/* As an unfortunate inconsistency, the sendmmsg API uses
-		 * unsigned int for the resulting msg_len, despite sendmsg
-		 * returning ssize_t. However Linux limits the total bytes
-		 * sent by sendmsg to INT_MAX, so the assignment is safe. */
-		ssize_t r = sendmsg(fd, &msgvec[i].msg_hdr, flags);
-		if (r < 0) goto error;
-		msgvec[i].msg_len = r;
-	}
+  /* Can't use the syscall directly because the kernel has the wrong
+   * idea for the types of msg_iovlen, msg_controllen, and cmsg_len,
+   * and the cmsg blocks cannot be modified in-place. */
+  int i;
+  if (vlen > IOV_MAX)
+    vlen = IOV_MAX; /* This matches the kernel. */
+  if (!vlen)
+    return 0;
+  for (i = 0; i < vlen; i++) {
+    /* As an unfortunate inconsistency, the sendmmsg API uses
+     * unsigned int for the resulting msg_len, despite sendmsg
+     * returning ssize_t. However Linux limits the total bytes
+     * sent by sendmsg to INT_MAX, so the assignment is safe. */
+    ssize_t r = sendmsg(fd, &msgvec[i].msg_hdr, flags);
+    if (r < 0)
+      goto error;
+    msgvec[i].msg_len = r;
+  }
 error:
-	return i ? i : -1;
+  return i ? i : -1;
 #else
-	return syscall_cp(SYS_sendmmsg, fd, msgvec, vlen, flags);
+  return syscall_cp(SYS_sendmmsg, fd, msgvec, vlen, flags);
 #endif
 }
diff --git a/fusl/src/network/sendmsg.c b/fusl/src/network/sendmsg.c
index 5f08000..9e730f2 100644
--- a/fusl/src/network/sendmsg.c
+++ b/fusl/src/network/sendmsg.c
@@ -5,26 +5,25 @@
 #include "syscall.h"
 #include "libc.h"
 
-ssize_t sendmsg(int fd, const struct msghdr *msg, int flags)
-{
+ssize_t sendmsg(int fd, const struct msghdr* msg, int flags) {
 #if LONG_MAX > INT_MAX
-	struct msghdr h;
-	struct cmsghdr chbuf[1024/sizeof(struct cmsghdr)+1], *c;
-	if (msg) {
-		h = *msg;
-		h.__pad1 = h.__pad2 = 0;
-		msg = &h;
-		if (h.msg_controllen) {
-			if (h.msg_controllen > 1024) {
-				errno = ENOMEM;
-				return -1;
-			}
-			memcpy(chbuf, h.msg_control, h.msg_controllen);
-			h.msg_control = chbuf;
-			for (c=CMSG_FIRSTHDR(&h); c; c=CMSG_NXTHDR(&h,c))
-				c->__pad1 = 0;
-		}
-	}
+  struct msghdr h;
+  struct cmsghdr chbuf[1024 / sizeof(struct cmsghdr) + 1], *c;
+  if (msg) {
+    h = *msg;
+    h.__pad1 = h.__pad2 = 0;
+    msg = &h;
+    if (h.msg_controllen) {
+      if (h.msg_controllen > 1024) {
+        errno = ENOMEM;
+        return -1;
+      }
+      memcpy(chbuf, h.msg_control, h.msg_controllen);
+      h.msg_control = chbuf;
+      for (c = CMSG_FIRSTHDR(&h); c; c = CMSG_NXTHDR(&h, c))
+        c->__pad1 = 0;
+    }
+  }
 #endif
-	return socketcall_cp(sendmsg, fd, msg, flags, 0, 0, 0);
+  return socketcall_cp(sendmsg, fd, msg, flags, 0, 0, 0);
 }
diff --git a/fusl/src/network/sendto.c b/fusl/src/network/sendto.c
index 899eecf..c3a7367 100644
--- a/fusl/src/network/sendto.c
+++ b/fusl/src/network/sendto.c
@@ -2,7 +2,11 @@
 #include "syscall.h"
 #include "libc.h"
 
-ssize_t sendto(int fd, const void *buf, size_t len, int flags, const struct sockaddr *addr, socklen_t alen)
-{
-	return socketcall_cp(sendto, fd, buf, len, flags, addr, alen);
+ssize_t sendto(int fd,
+               const void* buf,
+               size_t len,
+               int flags,
+               const struct sockaddr* addr,
+               socklen_t alen) {
+  return socketcall_cp(sendto, fd, buf, len, flags, addr, alen);
 }
diff --git a/fusl/src/network/serv.c b/fusl/src/network/serv.c
index 41424e8..dbd0ae8 100644
--- a/fusl/src/network/serv.c
+++ b/fusl/src/network/serv.c
@@ -1,14 +1,9 @@
 #include <netdb.h>
 
-void endservent(void)
-{
-}
+void endservent(void) {}
 
-void setservent(int stayopen)
-{
-}
+void setservent(int stayopen) {}
 
-struct servent *getservent(void)
-{
-	return 0;
+struct servent* getservent(void) {
+  return 0;
 }
diff --git a/fusl/src/network/setsockopt.c b/fusl/src/network/setsockopt.c
index c960c9c..56cdc3d 100644
--- a/fusl/src/network/setsockopt.c
+++ b/fusl/src/network/setsockopt.c
@@ -1,7 +1,10 @@
 #include <sys/socket.h>
 #include "syscall.h"
 
-int setsockopt(int fd, int level, int optname, const void *optval, socklen_t optlen)
-{
-	return socketcall(setsockopt, fd, level, optname, optval, optlen, 0);
+int setsockopt(int fd,
+               int level,
+               int optname,
+               const void* optval,
+               socklen_t optlen) {
+  return socketcall(setsockopt, fd, level, optname, optval, optlen, 0);
 }
diff --git a/fusl/src/network/shutdown.c b/fusl/src/network/shutdown.c
index 10ca21a..f021833 100644
--- a/fusl/src/network/shutdown.c
+++ b/fusl/src/network/shutdown.c
@@ -1,7 +1,6 @@
 #include <sys/socket.h>
 #include "syscall.h"
 
-int shutdown(int fd, int how)
-{
-	return socketcall(shutdown, fd, how, 0, 0, 0, 0);
+int shutdown(int fd, int how) {
+  return socketcall(shutdown, fd, how, 0, 0, 0, 0);
 }
diff --git a/fusl/src/network/sockatmark.c b/fusl/src/network/sockatmark.c
index f474551..48512c1 100644
--- a/fusl/src/network/sockatmark.c
+++ b/fusl/src/network/sockatmark.c
@@ -1,10 +1,9 @@
 #include <sys/socket.h>
 #include <sys/ioctl.h>
 
-int sockatmark(int s)
-{
-	int ret;
-	if (ioctl(s, SIOCATMARK, &ret) < 0)
-		return -1;
-	return ret;
+int sockatmark(int s) {
+  int ret;
+  if (ioctl(s, SIOCATMARK, &ret) < 0)
+    return -1;
+  return ret;
 }
diff --git a/fusl/src/network/socket.c b/fusl/src/network/socket.c
index a2e92d9..ec5fb90 100644
--- a/fusl/src/network/socket.c
+++ b/fusl/src/network/socket.c
@@ -3,19 +3,18 @@
 #include <errno.h>
 #include "syscall.h"
 
-int socket(int domain, int type, int protocol)
-{
-	int s = socketcall(socket, domain, type, protocol, 0, 0, 0);
-	if (s<0 && (errno==EINVAL || errno==EPROTONOSUPPORT)
-	    && (type&(SOCK_CLOEXEC|SOCK_NONBLOCK))) {
-		s = socketcall(socket, domain,
-			type & ~(SOCK_CLOEXEC|SOCK_NONBLOCK),
-			protocol, 0, 0, 0);
-		if (s < 0) return s;
-		if (type & SOCK_CLOEXEC)
-			__syscall(SYS_fcntl, s, F_SETFD, FD_CLOEXEC);
-		if (type & SOCK_NONBLOCK)
-			__syscall(SYS_fcntl, s, F_SETFL, O_NONBLOCK);
-	}
-	return s;
+int socket(int domain, int type, int protocol) {
+  int s = socketcall(socket, domain, type, protocol, 0, 0, 0);
+  if (s < 0 && (errno == EINVAL || errno == EPROTONOSUPPORT) &&
+      (type & (SOCK_CLOEXEC | SOCK_NONBLOCK))) {
+    s = socketcall(socket, domain, type & ~(SOCK_CLOEXEC | SOCK_NONBLOCK),
+                   protocol, 0, 0, 0);
+    if (s < 0)
+      return s;
+    if (type & SOCK_CLOEXEC)
+      __syscall(SYS_fcntl, s, F_SETFD, FD_CLOEXEC);
+    if (type & SOCK_NONBLOCK)
+      __syscall(SYS_fcntl, s, F_SETFL, O_NONBLOCK);
+  }
+  return s;
 }
diff --git a/fusl/src/network/socketpair.c b/fusl/src/network/socketpair.c
index f348962..b2dc231 100644
--- a/fusl/src/network/socketpair.c
+++ b/fusl/src/network/socketpair.c
@@ -3,23 +3,22 @@
 #include <errno.h>
 #include "syscall.h"
 
-int socketpair(int domain, int type, int protocol, int fd[2])
-{
-	int r = socketcall(socketpair, domain, type, protocol, fd, 0, 0);
-	if (r<0 && (errno==EINVAL || errno==EPROTONOSUPPORT)
-	    && (type&(SOCK_CLOEXEC|SOCK_NONBLOCK))) {
-		r = socketcall(socketpair, domain,
-			type & ~(SOCK_CLOEXEC|SOCK_NONBLOCK),
-			protocol, fd, 0, 0);
-		if (r < 0) return r;
-		if (type & SOCK_CLOEXEC) {
-			__syscall(SYS_fcntl, fd[0], F_SETFD, FD_CLOEXEC);
-			__syscall(SYS_fcntl, fd[1], F_SETFD, FD_CLOEXEC);
-		}
-		if (type & SOCK_NONBLOCK) {
-			__syscall(SYS_fcntl, fd[0], F_SETFL, O_NONBLOCK);
-			__syscall(SYS_fcntl, fd[1], F_SETFL, O_NONBLOCK);
-		}
-	}
-	return r;
+int socketpair(int domain, int type, int protocol, int fd[2]) {
+  int r = socketcall(socketpair, domain, type, protocol, fd, 0, 0);
+  if (r < 0 && (errno == EINVAL || errno == EPROTONOSUPPORT) &&
+      (type & (SOCK_CLOEXEC | SOCK_NONBLOCK))) {
+    r = socketcall(socketpair, domain, type & ~(SOCK_CLOEXEC | SOCK_NONBLOCK),
+                   protocol, fd, 0, 0);
+    if (r < 0)
+      return r;
+    if (type & SOCK_CLOEXEC) {
+      __syscall(SYS_fcntl, fd[0], F_SETFD, FD_CLOEXEC);
+      __syscall(SYS_fcntl, fd[1], F_SETFD, FD_CLOEXEC);
+    }
+    if (type & SOCK_NONBLOCK) {
+      __syscall(SYS_fcntl, fd[0], F_SETFL, O_NONBLOCK);
+      __syscall(SYS_fcntl, fd[1], F_SETFL, O_NONBLOCK);
+    }
+  }
+  return r;
 }
diff --git a/fusl/src/passwd/fgetgrent.c b/fusl/src/passwd/fgetgrent.c
index 7d045fd..d6d9c6f 100644
--- a/fusl/src/passwd/fgetgrent.c
+++ b/fusl/src/passwd/fgetgrent.c
@@ -1,12 +1,11 @@
 #define _GNU_SOURCE
 #include "pwf.h"
 
-struct group *fgetgrent(FILE *f)
-{
-	static char *line, **mem;
-	static struct group gr;
-	struct group *res;
-	size_t size=0, nmem=0;
-	__getgrent_a(f, &gr, &line, &size, &mem, &nmem, &res);
-	return res;
+struct group* fgetgrent(FILE* f) {
+  static char *line, **mem;
+  static struct group gr;
+  struct group* res;
+  size_t size = 0, nmem = 0;
+  __getgrent_a(f, &gr, &line, &size, &mem, &nmem, &res);
+  return res;
 }
diff --git a/fusl/src/passwd/fgetpwent.c b/fusl/src/passwd/fgetpwent.c
index fd472a0..fc47afe 100644
--- a/fusl/src/passwd/fgetpwent.c
+++ b/fusl/src/passwd/fgetpwent.c
@@ -1,12 +1,11 @@
 #define _GNU_SOURCE
 #include "pwf.h"
 
-struct passwd *fgetpwent(FILE *f)
-{
-	static char *line;
-	static struct passwd pw;
-	size_t size=0;
-	struct passwd *res;
-	__getpwent_a(f, &pw, &line, &size, &res);
-	return res;
+struct passwd* fgetpwent(FILE* f) {
+  static char* line;
+  static struct passwd pw;
+  size_t size = 0;
+  struct passwd* res;
+  __getpwent_a(f, &pw, &line, &size, &res);
+  return res;
 }
diff --git a/fusl/src/passwd/fgetspent.c b/fusl/src/passwd/fgetspent.c
index 47473bd..b6f2f1e 100644
--- a/fusl/src/passwd/fgetspent.c
+++ b/fusl/src/passwd/fgetspent.c
@@ -1,15 +1,15 @@
 #include "pwf.h"
 #include <pthread.h>
 
-struct spwd *fgetspent(FILE *f)
-{
-	static char *line;
-	static struct spwd sp;
-	size_t size = 0;
-	struct spwd *res = 0;
-	int cs;
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-	if (getline(&line, &size, f) >= 0 && __parsespent(line, &sp) >= 0) res = &sp;
-	pthread_setcancelstate(cs, 0);
-	return res;
+struct spwd* fgetspent(FILE* f) {
+  static char* line;
+  static struct spwd sp;
+  size_t size = 0;
+  struct spwd* res = 0;
+  int cs;
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  if (getline(&line, &size, f) >= 0 && __parsespent(line, &sp) >= 0)
+    res = &sp;
+  pthread_setcancelstate(cs, 0);
+  return res;
 }
diff --git a/fusl/src/passwd/getgr_a.c b/fusl/src/passwd/getgr_a.c
index 5c8308e..60cee36 100644
--- a/fusl/src/passwd/getgr_a.c
+++ b/fusl/src/passwd/getgr_a.c
@@ -5,165 +5,175 @@
 #include "pwf.h"
 #include "nscd.h"
 
-static char *itoa(char *p, uint32_t x)
-{
-	// number of digits in a uint32_t + NUL
-	p += 11;
-	*--p = 0;
-	do {
-		*--p = '0' + x % 10;
-		x /= 10;
-	} while (x);
-	return p;
+static char* itoa(char* p, uint32_t x) {
+  // number of digits in a uint32_t + NUL
+  p += 11;
+  *--p = 0;
+  do {
+    *--p = '0' + x % 10;
+    x /= 10;
+  } while (x);
+  return p;
 }
 
-int __getgr_a(const char *name, gid_t gid, struct group *gr, char **buf, size_t *size, char ***mem, size_t *nmem, struct group **res)
-{
-	FILE *f;
-	int rv = 0;
-	int cs;
+int __getgr_a(const char* name,
+              gid_t gid,
+              struct group* gr,
+              char** buf,
+              size_t* size,
+              char*** mem,
+              size_t* nmem,
+              struct group** res) {
+  FILE* f;
+  int rv = 0;
+  int cs;
 
-	*res = 0;
+  *res = 0;
 
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-	f = fopen("/etc/group", "rbe");
-	if (!f) {
-		rv = errno;
-		goto done;
-	}
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  f = fopen("/etc/group", "rbe");
+  if (!f) {
+    rv = errno;
+    goto done;
+  }
 
-	while (!(rv = __getgrent_a(f, gr, buf, size, mem, nmem, res)) && *res) {
-		if ((name && !strcmp(name, (*res)->gr_name))
-		|| (!name && (*res)->gr_gid == gid)) {
-			break;
-		}
-	}
-	fclose(f);
+  while (!(rv = __getgrent_a(f, gr, buf, size, mem, nmem, res)) && *res) {
+    if ((name && !strcmp(name, (*res)->gr_name)) ||
+        (!name && (*res)->gr_gid == gid)) {
+      break;
+    }
+  }
+  fclose(f);
 
-	if (!*res && (rv == 0 || rv == ENOENT || rv == ENOTDIR)) {
-		int32_t req = name ? GETGRBYNAME : GETGRBYGID;
-		int32_t i;
-		const char *key;
-		int32_t groupbuf[GR_LEN] = {0};
-		size_t len = 0;
-		size_t grlist_len = 0;
-		char gidbuf[11] = {0};
-		int swap = 0;
-		char *ptr;
+  if (!*res && (rv == 0 || rv == ENOENT || rv == ENOTDIR)) {
+    int32_t req = name ? GETGRBYNAME : GETGRBYGID;
+    int32_t i;
+    const char* key;
+    int32_t groupbuf[GR_LEN] = {0};
+    size_t len = 0;
+    size_t grlist_len = 0;
+    char gidbuf[11] = {0};
+    int swap = 0;
+    char* ptr;
 
-		if (name) {
-			key = name;
-		} else {
-			if (gid > UINT32_MAX) {
-				rv = 0;
-				goto done;
-			}
-			key = itoa(gidbuf, gid);
-		}
+    if (name) {
+      key = name;
+    } else {
+      if (gid > UINT32_MAX) {
+        rv = 0;
+        goto done;
+      }
+      key = itoa(gidbuf, gid);
+    }
 
-		f = __nscd_query(req, key, groupbuf, sizeof groupbuf, &swap);
-		if (!f) { rv = errno; goto done; }
+    f = __nscd_query(req, key, groupbuf, sizeof groupbuf, &swap);
+    if (!f) {
+      rv = errno;
+      goto done;
+    }
 
-		if (!groupbuf[GRFOUND]) { rv = 0; goto cleanup_f; }
+    if (!groupbuf[GRFOUND]) {
+      rv = 0;
+      goto cleanup_f;
+    }
 
-		if (!groupbuf[GRNAMELEN] || !groupbuf[GRPASSWDLEN]) {
-			rv = EIO;
-			goto cleanup_f;
-		}
+    if (!groupbuf[GRNAMELEN] || !groupbuf[GRPASSWDLEN]) {
+      rv = EIO;
+      goto cleanup_f;
+    }
 
-		if (groupbuf[GRNAMELEN] > SIZE_MAX - groupbuf[GRPASSWDLEN]) {
-			rv = ENOMEM;
-			goto cleanup_f;
-		}
-		len = groupbuf[GRNAMELEN] + groupbuf[GRPASSWDLEN];
+    if (groupbuf[GRNAMELEN] > SIZE_MAX - groupbuf[GRPASSWDLEN]) {
+      rv = ENOMEM;
+      goto cleanup_f;
+    }
+    len = groupbuf[GRNAMELEN] + groupbuf[GRPASSWDLEN];
 
-		for (i = 0; i < groupbuf[GRMEMCNT]; i++) {
-			uint32_t name_len;
-			if (fread(&name_len, sizeof name_len, 1, f) < 1) {
-				rv = ferror(f) ? errno : EIO;
-				goto cleanup_f;
-			}
-			if (swap) {
-				name_len = bswap_32(name_len);
-			}
-			if (name_len > SIZE_MAX - grlist_len
-			|| name_len > SIZE_MAX - len) {
-				rv = ENOMEM;
-				goto cleanup_f;
-			}
-			len += name_len;
-			grlist_len += name_len;
-		}
+    for (i = 0; i < groupbuf[GRMEMCNT]; i++) {
+      uint32_t name_len;
+      if (fread(&name_len, sizeof name_len, 1, f) < 1) {
+        rv = ferror(f) ? errno : EIO;
+        goto cleanup_f;
+      }
+      if (swap) {
+        name_len = bswap_32(name_len);
+      }
+      if (name_len > SIZE_MAX - grlist_len || name_len > SIZE_MAX - len) {
+        rv = ENOMEM;
+        goto cleanup_f;
+      }
+      len += name_len;
+      grlist_len += name_len;
+    }
 
-		if (len > *size || !*buf) {
-			char *tmp = realloc(*buf, len);
-			if (!tmp) {
-				rv = errno;
-				goto cleanup_f;
-			}
-			*buf = tmp;
-			*size = len;
-		}
+    if (len > *size || !*buf) {
+      char* tmp = realloc(*buf, len);
+      if (!tmp) {
+        rv = errno;
+        goto cleanup_f;
+      }
+      *buf = tmp;
+      *size = len;
+    }
 
-		if (!fread(*buf, len, 1, f)) {
-			rv = ferror(f) ? errno : EIO;
-			goto cleanup_f;
-		}
+    if (!fread(*buf, len, 1, f)) {
+      rv = ferror(f) ? errno : EIO;
+      goto cleanup_f;
+    }
 
-		if (groupbuf[GRMEMCNT] + 1 > *nmem) {
-			if (groupbuf[GRMEMCNT] + 1 > SIZE_MAX/sizeof(char*)) {
-				rv = ENOMEM;
-				goto cleanup_f;
-			}
-			char **tmp = realloc(*mem, (groupbuf[GRMEMCNT]+1)*sizeof(char*));
-			if (!tmp) {
-				rv = errno;
-				goto cleanup_f;
-			}
-			*mem = tmp;
-			*nmem = groupbuf[GRMEMCNT] + 1;
-		}
+    if (groupbuf[GRMEMCNT] + 1 > *nmem) {
+      if (groupbuf[GRMEMCNT] + 1 > SIZE_MAX / sizeof(char*)) {
+        rv = ENOMEM;
+        goto cleanup_f;
+      }
+      char** tmp = realloc(*mem, (groupbuf[GRMEMCNT] + 1) * sizeof(char*));
+      if (!tmp) {
+        rv = errno;
+        goto cleanup_f;
+      }
+      *mem = tmp;
+      *nmem = groupbuf[GRMEMCNT] + 1;
+    }
 
-		if (groupbuf[GRMEMCNT]) {
-			mem[0][0] = *buf + groupbuf[GRNAMELEN] + groupbuf[GRPASSWDLEN];
-			for (ptr = mem[0][0], i = 0; ptr != mem[0][0]+grlist_len; ptr++)
-				if (!*ptr) mem[0][++i] = ptr+1;
-			mem[0][i] = 0;
+    if (groupbuf[GRMEMCNT]) {
+      mem[0][0] = *buf + groupbuf[GRNAMELEN] + groupbuf[GRPASSWDLEN];
+      for (ptr = mem[0][0], i = 0; ptr != mem[0][0] + grlist_len; ptr++)
+        if (!*ptr)
+          mem[0][++i] = ptr + 1;
+      mem[0][i] = 0;
 
-			if (i != groupbuf[GRMEMCNT]) {
-				rv = EIO;
-				goto cleanup_f;
-			}
-		} else {
-			mem[0][0] = 0;
-		}
+      if (i != groupbuf[GRMEMCNT]) {
+        rv = EIO;
+        goto cleanup_f;
+      }
+    } else {
+      mem[0][0] = 0;
+    }
 
-		gr->gr_name = *buf;
-		gr->gr_passwd = gr->gr_name + groupbuf[GRNAMELEN];
-		gr->gr_gid = groupbuf[GRGID];
-		gr->gr_mem = *mem;
+    gr->gr_name = *buf;
+    gr->gr_passwd = gr->gr_name + groupbuf[GRNAMELEN];
+    gr->gr_gid = groupbuf[GRGID];
+    gr->gr_mem = *mem;
 
-		if (gr->gr_passwd[-1]
-		|| gr->gr_passwd[groupbuf[GRPASSWDLEN]-1]) {
-			rv = EIO;
-			goto cleanup_f;
-		}
+    if (gr->gr_passwd[-1] || gr->gr_passwd[groupbuf[GRPASSWDLEN] - 1]) {
+      rv = EIO;
+      goto cleanup_f;
+    }
 
-		if ((name && strcmp(name, gr->gr_name))
-		|| (!name && gid != gr->gr_gid)) {
-			rv = EIO;
-			goto cleanup_f;
-		}
+    if ((name && strcmp(name, gr->gr_name)) || (!name && gid != gr->gr_gid)) {
+      rv = EIO;
+      goto cleanup_f;
+    }
 
-		*res = gr;
+    *res = gr;
 
-cleanup_f:
-		fclose(f);
-		goto done;
-	}
+  cleanup_f:
+    fclose(f);
+    goto done;
+  }
 
 done:
-	pthread_setcancelstate(cs, 0);
-	if (rv) errno = rv;
-	return rv;
+  pthread_setcancelstate(cs, 0);
+  if (rv)
+    errno = rv;
+  return rv;
 }
diff --git a/fusl/src/passwd/getgr_r.c b/fusl/src/passwd/getgr_r.c
index 7246e8a..bd9da3d 100644
--- a/fusl/src/passwd/getgr_r.c
+++ b/fusl/src/passwd/getgr_r.c
@@ -1,48 +1,58 @@
 #include "pwf.h"
 #include <pthread.h>
 
-#define FIX(x) (gr->gr_##x = gr->gr_##x-line+buf)
+#define FIX(x) (gr->gr_##x = gr->gr_##x - line + buf)
 
-static int getgr_r(const char *name, gid_t gid, struct group *gr, char *buf, size_t size, struct group **res)
-{
-	char *line = 0;
-	size_t len = 0;
-	char **mem = 0;
-	size_t nmem = 0;
-	int rv = 0;
-	size_t i;
-	int cs;
+static int getgr_r(const char* name,
+                   gid_t gid,
+                   struct group* gr,
+                   char* buf,
+                   size_t size,
+                   struct group** res) {
+  char* line = 0;
+  size_t len = 0;
+  char** mem = 0;
+  size_t nmem = 0;
+  int rv = 0;
+  size_t i;
+  int cs;
 
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
 
-	rv = __getgr_a(name, gid, gr, &line, &len, &mem, &nmem, res);
-	if (*res && size < len + (nmem+1)*sizeof(char *) + 32) {
-		*res = 0;
-		rv = ERANGE;
-	}
-	if (*res) {
-		buf += (16-(uintptr_t)buf)%16;
-		gr->gr_mem = (void *)buf;
-		buf += (nmem+1)*sizeof(char *);
-		memcpy(buf, line, len);
-		FIX(name);
-		FIX(passwd);
-		for (i=0; mem[i]; i++)
-			gr->gr_mem[i] = mem[i]-line+buf;
-		gr->gr_mem[i] = 0;
-	}
- 	free(mem);
- 	free(line);
-	pthread_setcancelstate(cs, 0);
-	return rv;
+  rv = __getgr_a(name, gid, gr, &line, &len, &mem, &nmem, res);
+  if (*res && size < len + (nmem + 1) * sizeof(char*) + 32) {
+    *res = 0;
+    rv = ERANGE;
+  }
+  if (*res) {
+    buf += (16 - (uintptr_t)buf) % 16;
+    gr->gr_mem = (void*)buf;
+    buf += (nmem + 1) * sizeof(char*);
+    memcpy(buf, line, len);
+    FIX(name);
+    FIX(passwd);
+    for (i = 0; mem[i]; i++)
+      gr->gr_mem[i] = mem[i] - line + buf;
+    gr->gr_mem[i] = 0;
+  }
+  free(mem);
+  free(line);
+  pthread_setcancelstate(cs, 0);
+  return rv;
 }
 
-int getgrnam_r(const char *name, struct group *gr, char *buf, size_t size, struct group **res)
-{
-	return getgr_r(name, 0, gr, buf, size, res);
+int getgrnam_r(const char* name,
+               struct group* gr,
+               char* buf,
+               size_t size,
+               struct group** res) {
+  return getgr_r(name, 0, gr, buf, size, res);
 }
 
-int getgrgid_r(gid_t gid, struct group *gr, char *buf, size_t size, struct group **res)
-{
-	return getgr_r(0, gid, gr, buf, size, res);
+int getgrgid_r(gid_t gid,
+               struct group* gr,
+               char* buf,
+               size_t size,
+               struct group** res) {
+  return getgr_r(0, gid, gr, buf, size, res);
 }
diff --git a/fusl/src/passwd/getgrent.c b/fusl/src/passwd/getgrent.c
index 835b9ab..530e611 100644
--- a/fusl/src/passwd/getgrent.c
+++ b/fusl/src/passwd/getgrent.c
@@ -1,39 +1,38 @@
 #include "pwf.h"
 
-static FILE *f;
+static FILE* f;
 static char *line, **mem;
 static struct group gr;
 
-void setgrent()
-{
-	if (f) fclose(f);
-	f = 0;
+void setgrent() {
+  if (f)
+    fclose(f);
+  f = 0;
 }
 
 weak_alias(setgrent, endgrent);
 
-struct group *getgrent()
-{
-	struct group *res;
-	size_t size=0, nmem=0;
-	if (!f) f = fopen("/etc/group", "rbe");
-	if (!f) return 0;
-	__getgrent_a(f, &gr, &line, &size, &mem, &nmem, &res);
-	return res;
+struct group* getgrent() {
+  struct group* res;
+  size_t size = 0, nmem = 0;
+  if (!f)
+    f = fopen("/etc/group", "rbe");
+  if (!f)
+    return 0;
+  __getgrent_a(f, &gr, &line, &size, &mem, &nmem, &res);
+  return res;
 }
 
-struct group *getgrgid(gid_t gid)
-{
-	struct group *res;
-	size_t size=0, nmem=0;
-	__getgr_a(0, gid, &gr, &line, &size, &mem, &nmem, &res);
-	return res;
+struct group* getgrgid(gid_t gid) {
+  struct group* res;
+  size_t size = 0, nmem = 0;
+  __getgr_a(0, gid, &gr, &line, &size, &mem, &nmem, &res);
+  return res;
 }
 
-struct group *getgrnam(const char *name)
-{
-	struct group *res;
-	size_t size=0, nmem=0;
-	__getgr_a(name, 0, &gr, &line, &size, &mem, &nmem, &res);
-	return res;
+struct group* getgrnam(const char* name) {
+  struct group* res;
+  size_t size = 0, nmem = 0;
+  __getgr_a(name, 0, &gr, &line, &size, &mem, &nmem, &res);
+  return res;
 }
diff --git a/fusl/src/passwd/getgrent_a.c b/fusl/src/passwd/getgrent_a.c
index 7fc389d..14d59e4 100644
--- a/fusl/src/passwd/getgrent_a.c
+++ b/fusl/src/passwd/getgrent_a.c
@@ -1,68 +1,82 @@
 #include "pwf.h"
 #include <pthread.h>
 
-static unsigned atou(char **s)
-{
-	unsigned x;
-	for (x=0; **s-'0'<10U; ++*s) x=10*x+(**s-'0');
-	return x;
+static unsigned atou(char** s) {
+  unsigned x;
+  for (x = 0; **s - '0' < 10U; ++*s)
+    x = 10 * x + (**s - '0');
+  return x;
 }
 
-int __getgrent_a(FILE *f, struct group *gr, char **line, size_t *size, char ***mem, size_t *nmem, struct group **res)
-{
-	ssize_t l;
-	char *s, *mems;
-	size_t i;
-	int rv = 0;
-	int cs;
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-	for (;;) {
-		if ((l=getline(line, size, f)) < 0) {
-			rv = ferror(f) ? errno : 0;
-			free(*line);
-			*line = 0;
-			gr = 0;
-			goto end;
-		}
-		line[0][l-1] = 0;
+int __getgrent_a(FILE* f,
+                 struct group* gr,
+                 char** line,
+                 size_t* size,
+                 char*** mem,
+                 size_t* nmem,
+                 struct group** res) {
+  ssize_t l;
+  char *s, *mems;
+  size_t i;
+  int rv = 0;
+  int cs;
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  for (;;) {
+    if ((l = getline(line, size, f)) < 0) {
+      rv = ferror(f) ? errno : 0;
+      free(*line);
+      *line = 0;
+      gr = 0;
+      goto end;
+    }
+    line[0][l - 1] = 0;
 
-		s = line[0];
-		gr->gr_name = s++;
-		if (!(s = strchr(s, ':'))) continue;
+    s = line[0];
+    gr->gr_name = s++;
+    if (!(s = strchr(s, ':')))
+      continue;
 
-		*s++ = 0; gr->gr_passwd = s;
-		if (!(s = strchr(s, ':'))) continue;
+    *s++ = 0;
+    gr->gr_passwd = s;
+    if (!(s = strchr(s, ':')))
+      continue;
 
-		*s++ = 0; gr->gr_gid = atou(&s);
-		if (*s != ':') continue;
+    *s++ = 0;
+    gr->gr_gid = atou(&s);
+    if (*s != ':')
+      continue;
 
-		*s++ = 0; mems = s;
-		break;
-	}
+    *s++ = 0;
+    mems = s;
+    break;
+  }
 
-	for (*nmem=!!*s; *s; s++)
-		if (*s==',') ++*nmem;
-	free(*mem);
-	*mem = calloc(sizeof(char *), *nmem+1);
-	if (!*mem) {
-		rv = errno;
-		free(*line);
-		*line = 0;
-		gr = 0;
-		goto end;
-	}
-	if (*mems) {
-		mem[0][0] = mems;
-		for (s=mems, i=0; *s; s++)
-			if (*s==',') *s++ = 0, mem[0][++i] = s;
-		mem[0][++i] = 0;
-	} else {
-		mem[0][0] = 0;
-	}
-	gr->gr_mem = *mem;
+  for (*nmem = !!*s; *s; s++)
+    if (*s == ',')
+      ++*nmem;
+  free(*mem);
+  *mem = calloc(sizeof(char*), *nmem + 1);
+  if (!*mem) {
+    rv = errno;
+    free(*line);
+    *line = 0;
+    gr = 0;
+    goto end;
+  }
+  if (*mems) {
+    mem[0][0] = mems;
+    for (s = mems, i = 0; *s; s++)
+      if (*s == ',')
+        *s++ = 0, mem[0][++i] = s;
+    mem[0][++i] = 0;
+  } else {
+    mem[0][0] = 0;
+  }
+  gr->gr_mem = *mem;
 end:
-	pthread_setcancelstate(cs, 0);
-	*res = gr;
-	if(rv) errno = rv;
-	return rv;
+  pthread_setcancelstate(cs, 0);
+  *res = gr;
+  if (rv)
+    errno = rv;
+  return rv;
 }
diff --git a/fusl/src/passwd/getgrouplist.c b/fusl/src/passwd/getgrouplist.c
index 43e5182..0cf95b0 100644
--- a/fusl/src/passwd/getgrouplist.c
+++ b/fusl/src/passwd/getgrouplist.c
@@ -9,72 +9,82 @@
 #include <errno.h>
 #include "nscd.h"
 
-int getgrouplist(const char *user, gid_t gid, gid_t *groups, int *ngroups)
-{
-	int rv, nlim, ret = -1;
-	ssize_t i, n = 1;
-	struct group gr;
-	struct group *res;
-	FILE *f;
-	int swap = 0;
-	int32_t resp[INITGR_LEN];
-	uint32_t *nscdbuf = 0;
-	char *buf = 0;
-	char **mem = 0;
-	size_t nmem = 0;
-	size_t size;
-	nlim = *ngroups;
-	if (nlim >= 1) *groups++ = gid;
+int getgrouplist(const char* user, gid_t gid, gid_t* groups, int* ngroups) {
+  int rv, nlim, ret = -1;
+  ssize_t i, n = 1;
+  struct group gr;
+  struct group* res;
+  FILE* f;
+  int swap = 0;
+  int32_t resp[INITGR_LEN];
+  uint32_t* nscdbuf = 0;
+  char* buf = 0;
+  char** mem = 0;
+  size_t nmem = 0;
+  size_t size;
+  nlim = *ngroups;
+  if (nlim >= 1)
+    *groups++ = gid;
 
-	f = __nscd_query(GETINITGR, user, resp, sizeof resp, &swap);
-	if (!f) goto cleanup;
-	if (resp[INITGRFOUND]) {
-		nscdbuf = calloc(resp[INITGRNGRPS], sizeof(uint32_t));
-		if (!nscdbuf) goto cleanup;
-		if (!fread(nscdbuf, sizeof(*nscdbuf)*resp[INITGRNGRPS], 1, f)) {
-			if (!ferror(f)) errno = EIO;
-			goto cleanup;
-		}
-		if (swap) {
-			for (i = 0; i < resp[INITGRNGRPS]; i++)
-				nscdbuf[i] = bswap_32(nscdbuf[i]);
-		}
-	}
-	fclose(f);
+  f = __nscd_query(GETINITGR, user, resp, sizeof resp, &swap);
+  if (!f)
+    goto cleanup;
+  if (resp[INITGRFOUND]) {
+    nscdbuf = calloc(resp[INITGRNGRPS], sizeof(uint32_t));
+    if (!nscdbuf)
+      goto cleanup;
+    if (!fread(nscdbuf, sizeof(*nscdbuf) * resp[INITGRNGRPS], 1, f)) {
+      if (!ferror(f))
+        errno = EIO;
+      goto cleanup;
+    }
+    if (swap) {
+      for (i = 0; i < resp[INITGRNGRPS]; i++)
+        nscdbuf[i] = bswap_32(nscdbuf[i]);
+    }
+  }
+  fclose(f);
 
-	f = fopen("/etc/group", "rbe");
-	if (!f && errno != ENOENT && errno != ENOTDIR)
-		goto cleanup;
+  f = fopen("/etc/group", "rbe");
+  if (!f && errno != ENOENT && errno != ENOTDIR)
+    goto cleanup;
 
-	if (f) {
-		while (!(rv = __getgrent_a(f, &gr, &buf, &size, &mem, &nmem, &res)) && res) {
-			if (nscdbuf)
-				for (i=0; i < resp[INITGRNGRPS]; i++) {
-					if (nscdbuf[i] == gr.gr_gid) nscdbuf[i] = gid;
-				}
-			for (i=0; gr.gr_mem[i] && strcmp(user, gr.gr_mem[i]); i++);
-			if (!gr.gr_mem[i]) continue;
-			if (++n <= nlim) *groups++ = gr.gr_gid;
-		}
-		if (rv) {
-			errno = rv;
-			goto cleanup;
-		}
-	}
-	if (nscdbuf) {
-		for(i=0; i < resp[INITGRNGRPS]; i++) {
-			if (nscdbuf[i] != gid)
-				if(++n <= nlim) *groups++ = nscdbuf[i];
-		}
-	}
+  if (f) {
+    while (!(rv = __getgrent_a(f, &gr, &buf, &size, &mem, &nmem, &res)) &&
+           res) {
+      if (nscdbuf)
+        for (i = 0; i < resp[INITGRNGRPS]; i++) {
+          if (nscdbuf[i] == gr.gr_gid)
+            nscdbuf[i] = gid;
+        }
+      for (i = 0; gr.gr_mem[i] && strcmp(user, gr.gr_mem[i]); i++)
+        ;
+      if (!gr.gr_mem[i])
+        continue;
+      if (++n <= nlim)
+        *groups++ = gr.gr_gid;
+    }
+    if (rv) {
+      errno = rv;
+      goto cleanup;
+    }
+  }
+  if (nscdbuf) {
+    for (i = 0; i < resp[INITGRNGRPS]; i++) {
+      if (nscdbuf[i] != gid)
+        if (++n <= nlim)
+          *groups++ = nscdbuf[i];
+    }
+  }
 
-	ret = n > nlim ? -1 : n;
-	*ngroups = n;
+  ret = n > nlim ? -1 : n;
+  *ngroups = n;
 
 cleanup:
-	if (f) fclose(f);
-	free(nscdbuf);
-	free(buf);
-	free(mem);
-	return ret;
+  if (f)
+    fclose(f);
+  free(nscdbuf);
+  free(buf);
+  free(mem);
+  return ret;
 }
diff --git a/fusl/src/passwd/getpw_a.c b/fusl/src/passwd/getpw_a.c
index cebdd02..3757566 100644
--- a/fusl/src/passwd/getpw_a.c
+++ b/fusl/src/passwd/getpw_a.c
@@ -5,138 +5,144 @@
 #include "pwf.h"
 #include "nscd.h"
 
-static char *itoa(char *p, uint32_t x)
-{
-	// number of digits in a uint32_t + NUL
-	p += 11;
-	*--p = 0;
-	do {
-		*--p = '0' + x % 10;
-		x /= 10;
-	} while (x);
-	return p;
+static char* itoa(char* p, uint32_t x) {
+  // number of digits in a uint32_t + NUL
+  p += 11;
+  *--p = 0;
+  do {
+    *--p = '0' + x % 10;
+    x /= 10;
+  } while (x);
+  return p;
 }
 
-int __getpw_a(const char *name, uid_t uid, struct passwd *pw, char **buf, size_t *size, struct passwd **res)
-{
-	FILE *f;
-	int cs;
-	int rv = 0;
+int __getpw_a(const char* name,
+              uid_t uid,
+              struct passwd* pw,
+              char** buf,
+              size_t* size,
+              struct passwd** res) {
+  FILE* f;
+  int cs;
+  int rv = 0;
 
-	*res = 0;
+  *res = 0;
 
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
 
-	f = fopen("/etc/passwd", "rbe");
-	if (!f) {
-		rv = errno;
-		goto done;
-	}
+  f = fopen("/etc/passwd", "rbe");
+  if (!f) {
+    rv = errno;
+    goto done;
+  }
 
-	while (!(rv = __getpwent_a(f, pw, buf, size, res)) && *res) {
-		if ((name && !strcmp(name, (*res)->pw_name))
-		|| (!name && (*res)->pw_uid == uid))
-			break;
-	}
-	fclose(f);
+  while (!(rv = __getpwent_a(f, pw, buf, size, res)) && *res) {
+    if ((name && !strcmp(name, (*res)->pw_name)) ||
+        (!name && (*res)->pw_uid == uid))
+      break;
+  }
+  fclose(f);
 
-	if (!*res && (rv == 0 || rv == ENOENT || rv == ENOTDIR)) {
-		int32_t req = name ? GETPWBYNAME : GETPWBYUID;
-		const char *key;
-		int32_t passwdbuf[PW_LEN] = {0};
-		size_t len = 0;
-		char uidbuf[11] = {0};
+  if (!*res && (rv == 0 || rv == ENOENT || rv == ENOTDIR)) {
+    int32_t req = name ? GETPWBYNAME : GETPWBYUID;
+    const char* key;
+    int32_t passwdbuf[PW_LEN] = {0};
+    size_t len = 0;
+    char uidbuf[11] = {0};
 
-		if (name) {
-			key = name;
-		} else {
-			/* uid outside of this range can't be queried with the
-			 * nscd interface, but might happen if uid_t ever
-			 * happens to be a larger type (this is not true as of
-			 * now)
-			 */
-			if(uid > UINT32_MAX) {
-				rv = 0;
-				goto done;
-			}
-			key = itoa(uidbuf, uid);
-		}
+    if (name) {
+      key = name;
+    } else {
+      /* uid outside of this range can't be queried with the
+       * nscd interface, but might happen if uid_t ever
+       * happens to be a larger type (this is not true as of
+       * now)
+       */
+      if (uid > UINT32_MAX) {
+        rv = 0;
+        goto done;
+      }
+      key = itoa(uidbuf, uid);
+    }
 
-		f = __nscd_query(req, key, passwdbuf, sizeof passwdbuf, (int[]){0});
-		if (!f) { rv = errno; goto done; }
+    f = __nscd_query(req, key, passwdbuf, sizeof passwdbuf, (int[]){0});
+    if (!f) {
+      rv = errno;
+      goto done;
+    }
 
-		if(!passwdbuf[PWFOUND]) { rv = 0; goto cleanup_f; }
+    if (!passwdbuf[PWFOUND]) {
+      rv = 0;
+      goto cleanup_f;
+    }
 
-		/* A zero length response from nscd is invalid. We ignore
-		 * invalid responses and just report an error, rather than
-		 * trying to do something with them.
-		 */
-		if (!passwdbuf[PWNAMELEN] || !passwdbuf[PWPASSWDLEN]
-		|| !passwdbuf[PWGECOSLEN] || !passwdbuf[PWDIRLEN]
-		|| !passwdbuf[PWSHELLLEN]) {
-			rv = EIO;
-			goto cleanup_f;
-		}
+    /* A zero length response from nscd is invalid. We ignore
+     * invalid responses and just report an error, rather than
+     * trying to do something with them.
+     */
+    if (!passwdbuf[PWNAMELEN] || !passwdbuf[PWPASSWDLEN] ||
+        !passwdbuf[PWGECOSLEN] || !passwdbuf[PWDIRLEN] ||
+        !passwdbuf[PWSHELLLEN]) {
+      rv = EIO;
+      goto cleanup_f;
+    }
 
-		if ((passwdbuf[PWNAMELEN]|passwdbuf[PWPASSWDLEN]
-		     |passwdbuf[PWGECOSLEN]|passwdbuf[PWDIRLEN]
-		     |passwdbuf[PWSHELLLEN]) >= SIZE_MAX/8) {
-			rv = ENOMEM;
-			goto cleanup_f;
-		}
+    if ((passwdbuf[PWNAMELEN] | passwdbuf[PWPASSWDLEN] | passwdbuf[PWGECOSLEN] |
+         passwdbuf[PWDIRLEN] | passwdbuf[PWSHELLLEN]) >= SIZE_MAX / 8) {
+      rv = ENOMEM;
+      goto cleanup_f;
+    }
 
-		len = passwdbuf[PWNAMELEN] + passwdbuf[PWPASSWDLEN]
-		    + passwdbuf[PWGECOSLEN] + passwdbuf[PWDIRLEN]
-		    + passwdbuf[PWSHELLLEN];
+    len = passwdbuf[PWNAMELEN] + passwdbuf[PWPASSWDLEN] +
+          passwdbuf[PWGECOSLEN] + passwdbuf[PWDIRLEN] + passwdbuf[PWSHELLLEN];
 
-		if (len > *size || !*buf) {
-			char *tmp = realloc(*buf, len);
-			if (!tmp) {
-				rv = errno;
-				goto cleanup_f;
-			}
-			*buf = tmp;
-			*size = len;
-		}
+    if (len > *size || !*buf) {
+      char* tmp = realloc(*buf, len);
+      if (!tmp) {
+        rv = errno;
+        goto cleanup_f;
+      }
+      *buf = tmp;
+      *size = len;
+    }
 
-		if (!fread(*buf, len, 1, f)) {
-			rv = ferror(f) ? errno : EIO;
-			goto cleanup_f;
-		}
+    if (!fread(*buf, len, 1, f)) {
+      rv = ferror(f) ? errno : EIO;
+      goto cleanup_f;
+    }
 
-		pw->pw_name = *buf;
-		pw->pw_passwd = pw->pw_name + passwdbuf[PWNAMELEN];
-		pw->pw_gecos = pw->pw_passwd + passwdbuf[PWPASSWDLEN];
-		pw->pw_dir = pw->pw_gecos + passwdbuf[PWGECOSLEN];
-		pw->pw_shell = pw->pw_dir + passwdbuf[PWDIRLEN];
-		pw->pw_uid = passwdbuf[PWUID];
-		pw->pw_gid = passwdbuf[PWGID];
+    pw->pw_name = *buf;
+    pw->pw_passwd = pw->pw_name + passwdbuf[PWNAMELEN];
+    pw->pw_gecos = pw->pw_passwd + passwdbuf[PWPASSWDLEN];
+    pw->pw_dir = pw->pw_gecos + passwdbuf[PWGECOSLEN];
+    pw->pw_shell = pw->pw_dir + passwdbuf[PWDIRLEN];
+    pw->pw_uid = passwdbuf[PWUID];
+    pw->pw_gid = passwdbuf[PWGID];
 
-		/* Don't assume that nscd made sure to null terminate strings.
-		 * It's supposed to, but malicious nscd should be ignored
-		 * rather than causing a crash.
-		 */
-		if (pw->pw_passwd[-1] || pw->pw_gecos[-1] || pw->pw_dir[-1]
-		|| pw->pw_shell[passwdbuf[PWSHELLLEN]-1]) {
-			rv = EIO;
-			goto cleanup_f;
-		}
+    /* Don't assume that nscd made sure to null terminate strings.
+     * It's supposed to, but malicious nscd should be ignored
+     * rather than causing a crash.
+     */
+    if (pw->pw_passwd[-1] || pw->pw_gecos[-1] || pw->pw_dir[-1] ||
+        pw->pw_shell[passwdbuf[PWSHELLLEN] - 1]) {
+      rv = EIO;
+      goto cleanup_f;
+    }
 
-		if ((name && strcmp(name, pw->pw_name))
-		|| (!name && uid != pw->pw_uid)) {
-			rv = EIO;
-			goto cleanup_f;
-		}
+    if ((name && strcmp(name, pw->pw_name)) || (!name && uid != pw->pw_uid)) {
+      rv = EIO;
+      goto cleanup_f;
+    }
 
-
-		*res = pw;
-cleanup_f:
-		fclose(f);
-		goto done;
-	}
+    *res = pw;
+  cleanup_f:
+    fclose(f);
+    goto done;
+  }
 
 done:
-	pthread_setcancelstate(cs, 0);
-	if (rv) errno = rv;
-	return rv;
+  pthread_setcancelstate(cs, 0);
+  if (rv)
+    errno = rv;
+  return rv;
 }
diff --git a/fusl/src/passwd/getpw_r.c b/fusl/src/passwd/getpw_r.c
index e8cc811..6e2c87d 100644
--- a/fusl/src/passwd/getpw_r.c
+++ b/fusl/src/passwd/getpw_r.c
@@ -1,41 +1,51 @@
 #include "pwf.h"
 #include <pthread.h>
 
-#define FIX(x) (pw->pw_##x = pw->pw_##x-line+buf)
+#define FIX(x) (pw->pw_##x = pw->pw_##x - line + buf)
 
-static int getpw_r(const char *name, uid_t uid, struct passwd *pw, char *buf, size_t size, struct passwd **res)
-{
-	char *line = 0;
-	size_t len = 0;
-	int rv = 0;
-	int cs;
+static int getpw_r(const char* name,
+                   uid_t uid,
+                   struct passwd* pw,
+                   char* buf,
+                   size_t size,
+                   struct passwd** res) {
+  char* line = 0;
+  size_t len = 0;
+  int rv = 0;
+  int cs;
 
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
 
-	rv = __getpw_a(name, uid, pw, &line, &len, res);
-	if (*res && size < len) {
-		*res = 0;
-		rv = ERANGE;
-	}
-	if (*res) {
-		memcpy(buf, line, len);
-		FIX(name);
-		FIX(passwd);
-		FIX(gecos);
-		FIX(dir);
-		FIX(shell);
-	}
- 	free(line);
-	pthread_setcancelstate(cs, 0);
-	return rv;
+  rv = __getpw_a(name, uid, pw, &line, &len, res);
+  if (*res && size < len) {
+    *res = 0;
+    rv = ERANGE;
+  }
+  if (*res) {
+    memcpy(buf, line, len);
+    FIX(name);
+    FIX(passwd);
+    FIX(gecos);
+    FIX(dir);
+    FIX(shell);
+  }
+  free(line);
+  pthread_setcancelstate(cs, 0);
+  return rv;
 }
 
-int getpwnam_r(const char *name, struct passwd *pw, char *buf, size_t size, struct passwd **res)
-{
-	return getpw_r(name, 0, pw, buf, size, res);
+int getpwnam_r(const char* name,
+               struct passwd* pw,
+               char* buf,
+               size_t size,
+               struct passwd** res) {
+  return getpw_r(name, 0, pw, buf, size, res);
 }
 
-int getpwuid_r(uid_t uid, struct passwd *pw, char *buf, size_t size, struct passwd **res)
-{
-	return getpw_r(0, uid, pw, buf, size, res);
+int getpwuid_r(uid_t uid,
+               struct passwd* pw,
+               char* buf,
+               size_t size,
+               struct passwd** res) {
+  return getpw_r(0, uid, pw, buf, size, res);
 }
diff --git a/fusl/src/passwd/getpwent.c b/fusl/src/passwd/getpwent.c
index f2bd516..686bc81 100644
--- a/fusl/src/passwd/getpwent.c
+++ b/fusl/src/passwd/getpwent.c
@@ -1,37 +1,36 @@
 #include "pwf.h"
 
-static FILE *f;
-static char *line;
+static FILE* f;
+static char* line;
 static struct passwd pw;
 static size_t size;
 
-void setpwent()
-{
-	if (f) fclose(f);
-	f = 0;
+void setpwent() {
+  if (f)
+    fclose(f);
+  f = 0;
 }
 
 weak_alias(setpwent, endpwent);
 
-struct passwd *getpwent()
-{
-	struct passwd *res;
-	if (!f) f = fopen("/etc/passwd", "rbe");
-	if (!f) return 0;
-	__getpwent_a(f, &pw, &line, &size, &res);
-	return res;
+struct passwd* getpwent() {
+  struct passwd* res;
+  if (!f)
+    f = fopen("/etc/passwd", "rbe");
+  if (!f)
+    return 0;
+  __getpwent_a(f, &pw, &line, &size, &res);
+  return res;
 }
 
-struct passwd *getpwuid(uid_t uid)
-{
-	struct passwd *res;
-	__getpw_a(0, uid, &pw, &line, &size, &res);
-	return res;
+struct passwd* getpwuid(uid_t uid) {
+  struct passwd* res;
+  __getpw_a(0, uid, &pw, &line, &size, &res);
+  return res;
 }
 
-struct passwd *getpwnam(const char *name)
-{
-	struct passwd *res;
-	__getpw_a(name, 0, &pw, &line, &size, &res);
-	return res;
+struct passwd* getpwnam(const char* name) {
+  struct passwd* res;
+  __getpw_a(name, 0, &pw, &line, &size, &res);
+  return res;
 }
diff --git a/fusl/src/passwd/getpwent_a.c b/fusl/src/passwd/getpwent_a.c
index d1b4b53..b339ca2 100644
--- a/fusl/src/passwd/getpwent_a.c
+++ b/fusl/src/passwd/getpwent_a.c
@@ -1,54 +1,70 @@
 #include "pwf.h"
 #include <pthread.h>
 
-static unsigned atou(char **s)
-{
-	unsigned x;
-	for (x=0; **s-'0'<10U; ++*s) x=10*x+(**s-'0');
-	return x;
+static unsigned atou(char** s) {
+  unsigned x;
+  for (x = 0; **s - '0' < 10U; ++*s)
+    x = 10 * x + (**s - '0');
+  return x;
 }
 
-int __getpwent_a(FILE *f, struct passwd *pw, char **line, size_t *size, struct passwd **res)
-{
-	ssize_t l;
-	char *s;
-	int rv = 0;
-	int cs;
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-	for (;;) {
-		if ((l=getline(line, size, f)) < 0) {
-			rv = ferror(f) ? errno : 0;
-			free(*line);
-			*line = 0;
-			pw = 0;
-			break;
-		}
-		line[0][l-1] = 0;
+int __getpwent_a(FILE* f,
+                 struct passwd* pw,
+                 char** line,
+                 size_t* size,
+                 struct passwd** res) {
+  ssize_t l;
+  char* s;
+  int rv = 0;
+  int cs;
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  for (;;) {
+    if ((l = getline(line, size, f)) < 0) {
+      rv = ferror(f) ? errno : 0;
+      free(*line);
+      *line = 0;
+      pw = 0;
+      break;
+    }
+    line[0][l - 1] = 0;
 
-		s = line[0];
-		pw->pw_name = s++;
-		if (!(s = strchr(s, ':'))) continue;
+    s = line[0];
+    pw->pw_name = s++;
+    if (!(s = strchr(s, ':')))
+      continue;
 
-		*s++ = 0; pw->pw_passwd = s;
-		if (!(s = strchr(s, ':'))) continue;
+    *s++ = 0;
+    pw->pw_passwd = s;
+    if (!(s = strchr(s, ':')))
+      continue;
 
-		*s++ = 0; pw->pw_uid = atou(&s);
-		if (*s != ':') continue;
+    *s++ = 0;
+    pw->pw_uid = atou(&s);
+    if (*s != ':')
+      continue;
 
-		*s++ = 0; pw->pw_gid = atou(&s);
-		if (*s != ':') continue;
+    *s++ = 0;
+    pw->pw_gid = atou(&s);
+    if (*s != ':')
+      continue;
 
-		*s++ = 0; pw->pw_gecos = s;
-		if (!(s = strchr(s, ':'))) continue;
+    *s++ = 0;
+    pw->pw_gecos = s;
+    if (!(s = strchr(s, ':')))
+      continue;
 
-		*s++ = 0; pw->pw_dir = s;
-		if (!(s = strchr(s, ':'))) continue;
+    *s++ = 0;
+    pw->pw_dir = s;
+    if (!(s = strchr(s, ':')))
+      continue;
 
-		*s++ = 0; pw->pw_shell = s;
-		break;
-	}
-	pthread_setcancelstate(cs, 0);
-	*res = pw;
-	if (rv) errno = rv;
-	return rv;
+    *s++ = 0;
+    pw->pw_shell = s;
+    break;
+  }
+  pthread_setcancelstate(cs, 0);
+  *res = pw;
+  if (rv)
+    errno = rv;
+  return rv;
 }
diff --git a/fusl/src/passwd/getspent.c b/fusl/src/passwd/getspent.c
index 8574a48..ddb303b 100644
--- a/fusl/src/passwd/getspent.c
+++ b/fusl/src/passwd/getspent.c
@@ -1,14 +1,9 @@
 #include "pwf.h"
 
-void setspent()
-{
-}
+void setspent() {}
 
-void endspent()
-{
-}
+void endspent() {}
 
-struct spwd *getspent()
-{
-	return 0;
+struct spwd* getspent() {
+  return 0;
 }
diff --git a/fusl/src/passwd/getspnam.c b/fusl/src/passwd/getspnam.c
index 041f896..1ee1127 100644
--- a/fusl/src/passwd/getspnam.c
+++ b/fusl/src/passwd/getspnam.c
@@ -2,16 +2,18 @@
 
 #define LINE_LIM 256
 
-struct spwd *getspnam(const char *name)
-{
-	static struct spwd sp;
-	static char *line;
-	struct spwd *res;
-	int e;
+struct spwd* getspnam(const char* name) {
+  static struct spwd sp;
+  static char* line;
+  struct spwd* res;
+  int e;
 
-	if (!line) line = malloc(LINE_LIM);
-	if (!line) return 0;
-	e = getspnam_r(name, &sp, line, LINE_LIM, &res);
-	if (e) errno = e;
-	return res;
+  if (!line)
+    line = malloc(LINE_LIM);
+  if (!line)
+    return 0;
+  e = getspnam_r(name, &sp, line, LINE_LIM, &res);
+  if (e)
+    errno = e;
+  return res;
 }
diff --git a/fusl/src/passwd/getspnam_r.c b/fusl/src/passwd/getspnam_r.c
index 9233952..df5b4fa 100644
--- a/fusl/src/passwd/getspnam_r.c
+++ b/fusl/src/passwd/getspnam_r.c
@@ -12,105 +12,126 @@
  * file. It also avoids any allocation to prevent memory-exhaustion
  * attacks via huge TCB shadow files. */
 
-static long xatol(char **s)
-{
-	long x;
-	if (**s == ':' || **s == '\n') return -1;
-	for (x=0; **s-'0'<10U; ++*s) x=10*x+(**s-'0');
-	return x;
+static long xatol(char** s) {
+  long x;
+  if (**s == ':' || **s == '\n')
+    return -1;
+  for (x = 0; **s - '0' < 10U; ++*s)
+    x = 10 * x + (**s - '0');
+  return x;
 }
 
-int __parsespent(char *s, struct spwd *sp)
-{
-	sp->sp_namp = s;
-	if (!(s = strchr(s, ':'))) return -1;
-	*s = 0;
+int __parsespent(char* s, struct spwd* sp) {
+  sp->sp_namp = s;
+  if (!(s = strchr(s, ':')))
+    return -1;
+  *s = 0;
 
-	sp->sp_pwdp = ++s;
-	if (!(s = strchr(s, ':'))) return -1;
-	*s = 0;
+  sp->sp_pwdp = ++s;
+  if (!(s = strchr(s, ':')))
+    return -1;
+  *s = 0;
 
-	s++; sp->sp_lstchg = xatol(&s);
-	if (*s != ':') return -1;
+  s++;
+  sp->sp_lstchg = xatol(&s);
+  if (*s != ':')
+    return -1;
 
-	s++; sp->sp_min = xatol(&s);
-	if (*s != ':') return -1;
+  s++;
+  sp->sp_min = xatol(&s);
+  if (*s != ':')
+    return -1;
 
-	s++; sp->sp_max = xatol(&s);
-	if (*s != ':') return -1;
+  s++;
+  sp->sp_max = xatol(&s);
+  if (*s != ':')
+    return -1;
 
-	s++; sp->sp_warn = xatol(&s);
-	if (*s != ':') return -1;
+  s++;
+  sp->sp_warn = xatol(&s);
+  if (*s != ':')
+    return -1;
 
-	s++; sp->sp_inact = xatol(&s);
-	if (*s != ':') return -1;
+  s++;
+  sp->sp_inact = xatol(&s);
+  if (*s != ':')
+    return -1;
 
-	s++; sp->sp_expire = xatol(&s);
-	if (*s != ':') return -1;
+  s++;
+  sp->sp_expire = xatol(&s);
+  if (*s != ':')
+    return -1;
 
-	s++; sp->sp_flag = xatol(&s);
-	if (*s != '\n') return -1;
-	return 0;
+  s++;
+  sp->sp_flag = xatol(&s);
+  if (*s != '\n')
+    return -1;
+  return 0;
 }
 
-static void cleanup(void *p)
-{
-	fclose(p);
+static void cleanup(void* p) {
+  fclose(p);
 }
 
-int getspnam_r(const char *name, struct spwd *sp, char *buf, size_t size, struct spwd **res)
-{
-	char path[20+NAME_MAX];
-	FILE *f = 0;
-	int rv = 0;
-	int fd;
-	size_t k, l = strlen(name);
-	int skip = 0;
-	int cs;
+int getspnam_r(const char* name,
+               struct spwd* sp,
+               char* buf,
+               size_t size,
+               struct spwd** res) {
+  char path[20 + NAME_MAX];
+  FILE* f = 0;
+  int rv = 0;
+  int fd;
+  size_t k, l = strlen(name);
+  int skip = 0;
+  int cs;
 
-	*res = 0;
+  *res = 0;
 
-	/* Disallow potentially-malicious user names */
-	if (*name=='.' || strchr(name, '/') || !l)
-		return EINVAL;
+  /* Disallow potentially-malicious user names */
+  if (*name == '.' || strchr(name, '/') || !l)
+    return EINVAL;
 
-	/* Buffer size must at least be able to hold name, plus some.. */
-	if (size < l+100) return ERANGE;
+  /* Buffer size must at least be able to hold name, plus some.. */
+  if (size < l + 100)
+    return ERANGE;
 
-	/* Protect against truncation */
-	if (snprintf(path, sizeof path, "/etc/tcb/%s/shadow", name) >= sizeof path)
-		return EINVAL;
+  /* Protect against truncation */
+  if (snprintf(path, sizeof path, "/etc/tcb/%s/shadow", name) >= sizeof path)
+    return EINVAL;
 
-	fd = open(path, O_RDONLY|O_NOFOLLOW|O_NONBLOCK|O_CLOEXEC);
-	if (fd >= 0) {
-		struct stat st = { 0 };
-		errno = EINVAL;
-		if (fstat(fd, &st) || !S_ISREG(st.st_mode) || !(f = fdopen(fd, "rb"))) {
-			pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-			close(fd);
-			pthread_setcancelstate(cs, 0);
-			return errno;
-		}
-	} else {
-		f = fopen("/etc/shadow", "rbe");
-		if (!f) return errno;
-	}
+  fd = open(path, O_RDONLY | O_NOFOLLOW | O_NONBLOCK | O_CLOEXEC);
+  if (fd >= 0) {
+    struct stat st = {0};
+    errno = EINVAL;
+    if (fstat(fd, &st) || !S_ISREG(st.st_mode) || !(f = fdopen(fd, "rb"))) {
+      pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+      close(fd);
+      pthread_setcancelstate(cs, 0);
+      return errno;
+    }
+  } else {
+    f = fopen("/etc/shadow", "rbe");
+    if (!f)
+      return errno;
+  }
 
-	pthread_cleanup_push(cleanup, f);
-	while (fgets(buf, size, f) && (k=strlen(buf))>0) {
-		if (skip || strncmp(name, buf, l) || buf[l]!=':') {
-			skip = buf[k-1] != '\n';
-			continue;
-		}
-		if (buf[k-1] != '\n') {
-			rv = ERANGE;
-			break;
-		}
+  pthread_cleanup_push(cleanup, f);
+  while (fgets(buf, size, f) && (k = strlen(buf)) > 0) {
+    if (skip || strncmp(name, buf, l) || buf[l] != ':') {
+      skip = buf[k - 1] != '\n';
+      continue;
+    }
+    if (buf[k - 1] != '\n') {
+      rv = ERANGE;
+      break;
+    }
 
-		if (__parsespent(buf, sp) < 0) continue;
-		*res = sp;
-		break;
-	}
-	pthread_cleanup_pop(1);
-	return rv;
+    if (__parsespent(buf, sp) < 0)
+      continue;
+    *res = sp;
+    break;
+  }
+  pthread_cleanup_pop(1);
+  return rv;
 }
diff --git a/fusl/src/passwd/lckpwdf.c b/fusl/src/passwd/lckpwdf.c
index 2feda61..a79aae4 100644
--- a/fusl/src/passwd/lckpwdf.c
+++ b/fusl/src/passwd/lckpwdf.c
@@ -1,11 +1,9 @@
 #include <shadow.h>
 
-int lckpwdf()
-{
-	return 0;
+int lckpwdf() {
+  return 0;
 }
 
-int ulckpwdf()
-{
-	return 0;
+int ulckpwdf() {
+  return 0;
 }
diff --git a/fusl/src/passwd/nscd.h b/fusl/src/passwd/nscd.h
index 9a53c32..90becfc 100644
--- a/fusl/src/passwd/nscd.h
+++ b/fusl/src/passwd/nscd.h
@@ -39,6 +39,10 @@
 #define INITGRNGRPS 2
 #define INITGR_LEN 3
 
-FILE *__nscd_query(int32_t req, const char *key, int32_t *buf, size_t len, int *swap);
+FILE* __nscd_query(int32_t req,
+                   const char* key,
+                   int32_t* buf,
+                   size_t len,
+                   int* swap);
 
 #endif
diff --git a/fusl/src/passwd/nscd_query.c b/fusl/src/passwd/nscd_query.c
index d38e371..1768b1d 100644
--- a/fusl/src/passwd/nscd_query.c
+++ b/fusl/src/passwd/nscd_query.c
@@ -8,100 +8,96 @@
 #include "nscd.h"
 
 static const struct {
-	short sun_family;
-	char sun_path[21];
-} addr = {
-	AF_UNIX,
-	"/var/run/nscd/socket"
-};
+  short sun_family;
+  char sun_path[21];
+} addr = {AF_UNIX, "/var/run/nscd/socket"};
 
-FILE *__nscd_query(int32_t req, const char *key, int32_t *buf, size_t len, int *swap)
-{
-	size_t i;
-	int fd;
-	FILE *f = 0;
-	int32_t req_buf[REQ_LEN] = {
-		NSCDVERSION,
-		req,
-		strnlen(key,LOGIN_NAME_MAX)+1
-	};
-	struct msghdr msg = {
-		.msg_iov = (struct iovec[]){
-			{&req_buf, sizeof(req_buf)},
-			{(char*)key, strlen(key)+1}
-		},
-		.msg_iovlen = 2
-	};
-	int errno_save = errno;
+FILE* __nscd_query(int32_t req,
+                   const char* key,
+                   int32_t* buf,
+                   size_t len,
+                   int* swap) {
+  size_t i;
+  int fd;
+  FILE* f = 0;
+  int32_t req_buf[REQ_LEN] = {NSCDVERSION, req,
+                              strnlen(key, LOGIN_NAME_MAX) + 1};
+  struct msghdr msg = {
+      .msg_iov = (struct iovec[]){{&req_buf, sizeof(req_buf)},
+                                  {(char*)key, strlen(key) + 1}},
+      .msg_iovlen = 2};
+  int errno_save = errno;
 
-	*swap = 0;
+  *swap = 0;
 retry:
-	memset(buf, 0, len);
-	buf[0] = NSCDVERSION;
+  memset(buf, 0, len);
+  buf[0] = NSCDVERSION;
 
-	fd = socket(PF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
-	if (fd < 0) return NULL;
+  fd = socket(PF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
+  if (fd < 0)
+    return NULL;
 
-	if(!(f = fdopen(fd, "r"))) {
-		close(fd);
-		return 0;
-	}
+  if (!(f = fdopen(fd, "r"))) {
+    close(fd);
+    return 0;
+  }
 
-	if (req_buf[2] > LOGIN_NAME_MAX)
-		return f;
+  if (req_buf[2] > LOGIN_NAME_MAX)
+    return f;
 
-	if (connect(fd, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
-		/* If there isn't a running nscd we simulate a "not found"
-		 * result and the caller is responsible for calling
-		 * fclose on the (unconnected) socket. The value of
-		 * errno must be left unchanged in this case.  */
-		if (errno == EACCES || errno == ECONNREFUSED || errno == ENOENT) {
-			errno = errno_save;
-			return f;
-		}
-		goto error;
-	}
+  if (connect(fd, (struct sockaddr*)&addr, sizeof(addr)) < 0) {
+    /* If there isn't a running nscd we simulate a "not found"
+     * result and the caller is responsible for calling
+     * fclose on the (unconnected) socket. The value of
+     * errno must be left unchanged in this case.  */
+    if (errno == EACCES || errno == ECONNREFUSED || errno == ENOENT) {
+      errno = errno_save;
+      return f;
+    }
+    goto error;
+  }
 
-	if (sendmsg(fd, &msg, MSG_NOSIGNAL) < 0)
-		goto error;
+  if (sendmsg(fd, &msg, MSG_NOSIGNAL) < 0)
+    goto error;
 
-	if (!fread(buf, len, 1, f)) {
-		/* If the VERSION entry mismatches nscd will disconnect. The
-		 * most likely cause is that the endianness mismatched. So, we
-		 * byteswap and try once more. (if we already swapped, just
-		 * fail out)
-		 */
-		if (ferror(f)) goto error;
-		if (!*swap) {
-			fclose(f);
-			for (i = 0; i < sizeof(req_buf)/sizeof(req_buf[0]); i++) {
-				req_buf[i] = bswap_32(req_buf[i]);
-			}
-			*swap = 1;
-			goto retry;
-		} else {
-			errno = EIO;
-			goto error;
-		}
-	}
+  if (!fread(buf, len, 1, f)) {
+    /* If the VERSION entry mismatches nscd will disconnect. The
+     * most likely cause is that the endianness mismatched. So, we
+     * byteswap and try once more. (if we already swapped, just
+     * fail out)
+     */
+    if (ferror(f))
+      goto error;
+    if (!*swap) {
+      fclose(f);
+      for (i = 0; i < sizeof(req_buf) / sizeof(req_buf[0]); i++) {
+        req_buf[i] = bswap_32(req_buf[i]);
+      }
+      *swap = 1;
+      goto retry;
+    } else {
+      errno = EIO;
+      goto error;
+    }
+  }
 
-	if (*swap) {
-		for (i = 0; i < len/sizeof(buf[0]); i++) {
-			buf[i] = bswap_32(buf[i]);
-		}
-	}
+  if (*swap) {
+    for (i = 0; i < len / sizeof(buf[0]); i++) {
+      buf[i] = bswap_32(buf[i]);
+    }
+  }
 
-	/* The first entry in every nscd response is the version number. This
-	 * really shouldn't happen, and is evidence of some form of malformed
-	 * response.
-	 */
-	if(buf[0] != NSCDVERSION) {
-		errno = EIO;
-		goto error;
-	}
+  /* The first entry in every nscd response is the version number. This
+   * really shouldn't happen, and is evidence of some form of malformed
+   * response.
+   */
+  if (buf[0] != NSCDVERSION) {
+    errno = EIO;
+    goto error;
+  }
 
-	return f;
+  return f;
 error:
-	fclose(f);
-	return 0;
+  fclose(f);
+  return 0;
 }
diff --git a/fusl/src/passwd/putgrent.c b/fusl/src/passwd/putgrent.c
index a0b320f..ad9fd3f 100644
--- a/fusl/src/passwd/putgrent.c
+++ b/fusl/src/passwd/putgrent.c
@@ -2,16 +2,18 @@
 #include <grp.h>
 #include <stdio.h>
 
-int putgrent(const struct group *gr, FILE *f)
-{
-	int r;
-	size_t i;
-	flockfile(f);
-	if ((r = fprintf(f, "%s:%s:%d:", gr->gr_name, gr->gr_passwd, gr->gr_gid))<0) goto done;
-	if (gr->gr_mem) for (i=0; gr->gr_mem[i]; i++)
-		if ((r = fprintf(f, "%s%s", i?",":"", gr->gr_mem[i]))<0) goto done;
-	r = fputc('\n', f);
+int putgrent(const struct group* gr, FILE* f) {
+  int r;
+  size_t i;
+  flockfile(f);
+  if ((r = fprintf(f, "%s:%s:%d:", gr->gr_name, gr->gr_passwd, gr->gr_gid)) < 0)
+    goto done;
+  if (gr->gr_mem)
+    for (i = 0; gr->gr_mem[i]; i++)
+      if ((r = fprintf(f, "%s%s", i ? "," : "", gr->gr_mem[i])) < 0)
+        goto done;
+  r = fputc('\n', f);
 done:
-	funlockfile(f);
-	return r<0 ? -1 : 0;
+  funlockfile(f);
+  return r < 0 ? -1 : 0;
 }
diff --git a/fusl/src/passwd/putpwent.c b/fusl/src/passwd/putpwent.c
index 3a02e57..d6739f4 100644
--- a/fusl/src/passwd/putpwent.c
+++ b/fusl/src/passwd/putpwent.c
@@ -2,9 +2,10 @@
 #include <pwd.h>
 #include <stdio.h>
 
-int putpwent(const struct passwd *pw, FILE *f)
-{
-	return fprintf(f, "%s:%s:%d:%d:%s:%s:%s\n",
-		pw->pw_name, pw->pw_passwd, pw->pw_uid, pw->pw_gid,
-		pw->pw_gecos, pw->pw_dir, pw->pw_shell)<0 ? -1 : 0;
+int putpwent(const struct passwd* pw, FILE* f) {
+  return fprintf(f, "%s:%s:%d:%d:%s:%s:%s\n", pw->pw_name, pw->pw_passwd,
+                 pw->pw_uid, pw->pw_gid, pw->pw_gecos, pw->pw_dir,
+                 pw->pw_shell) < 0
+             ? -1
+             : 0;
 }
diff --git a/fusl/src/passwd/putspent.c b/fusl/src/passwd/putspent.c
index 55c41bb..ae7a046 100644
--- a/fusl/src/passwd/putspent.c
+++ b/fusl/src/passwd/putspent.c
@@ -4,10 +4,11 @@
 #define NUM(n) ((n) == -1 ? 0 : -1), ((n) == -1 ? 0 : (n))
 #define STR(s) ((s) ? (s) : "")
 
-int putspent(const struct spwd *sp, FILE *f)
-{
-	return fprintf(f, "%s:%s:%.*ld:%.*ld:%.*ld:%.*ld:%.*ld:%.*ld:%.*lu\n",
-		STR(sp->sp_namp), STR(sp->sp_pwdp), NUM(sp->sp_lstchg),
-		NUM(sp->sp_min), NUM(sp->sp_max), NUM(sp->sp_warn),
-		NUM(sp->sp_inact), NUM(sp->sp_expire), NUM(sp->sp_flag)) < 0 ? -1 : 0;
+int putspent(const struct spwd* sp, FILE* f) {
+  return fprintf(f, "%s:%s:%.*ld:%.*ld:%.*ld:%.*ld:%.*ld:%.*ld:%.*lu\n",
+                 STR(sp->sp_namp), STR(sp->sp_pwdp), NUM(sp->sp_lstchg),
+                 NUM(sp->sp_min), NUM(sp->sp_max), NUM(sp->sp_warn),
+                 NUM(sp->sp_inact), NUM(sp->sp_expire), NUM(sp->sp_flag)) < 0
+             ? -1
+             : 0;
 }
diff --git a/fusl/src/passwd/pwf.h b/fusl/src/passwd/pwf.h
index fc63db2..0b18f0d 100644
--- a/fusl/src/passwd/pwf.h
+++ b/fusl/src/passwd/pwf.h
@@ -8,8 +8,30 @@
 #include <limits.h>
 #include "libc.h"
 
-int __getpwent_a(FILE *f, struct passwd *pw, char **line, size_t *size, struct passwd **res);
-int __getpw_a(const char *name, uid_t uid, struct passwd *pw, char **buf, size_t *size, struct passwd **res);
-int __getgrent_a(FILE *f, struct group *gr, char **line, size_t *size, char ***mem, size_t *nmem, struct group **res);
-int __getgr_a(const char *name, gid_t gid, struct group *gr, char **buf, size_t *size, char ***mem, size_t *nmem, struct group **res);
-int __parsespent(char *s, struct spwd *sp);
+int __getpwent_a(FILE* f,
+                 struct passwd* pw,
+                 char** line,
+                 size_t* size,
+                 struct passwd** res);
+int __getpw_a(const char* name,
+              uid_t uid,
+              struct passwd* pw,
+              char** buf,
+              size_t* size,
+              struct passwd** res);
+int __getgrent_a(FILE* f,
+                 struct group* gr,
+                 char** line,
+                 size_t* size,
+                 char*** mem,
+                 size_t* nmem,
+                 struct group** res);
+int __getgr_a(const char* name,
+              gid_t gid,
+              struct group* gr,
+              char** buf,
+              size_t* size,
+              char*** mem,
+              size_t* nmem,
+              struct group** res);
+int __parsespent(char* s, struct spwd* sp);
diff --git a/fusl/src/prng/__rand48_step.c b/fusl/src/prng/__rand48_step.c
index 3127017..6940f98 100644
--- a/fusl/src/prng/__rand48_step.c
+++ b/fusl/src/prng/__rand48_step.c
@@ -1,13 +1,12 @@
 #include <stdint.h>
 
-uint64_t __rand48_step(unsigned short *xi, unsigned short *lc)
-{
-	uint64_t a, x;
-	x = xi[0] | ((uint32_t)xi[1])<<16 | ((uint64_t)xi[2])<<32;
-	a = lc[0] | ((uint32_t)lc[1])<<16 | ((uint64_t)lc[2])<<32;
-	x = a*x + lc[3];
-	xi[0] = x;
-	xi[1] = x>>16;
-	xi[2] = x>>32;
-	return x & 0xffffffffffffull;
+uint64_t __rand48_step(unsigned short* xi, unsigned short* lc) {
+  uint64_t a, x;
+  x = xi[0] | ((uint32_t)xi[1]) << 16 | ((uint64_t)xi[2]) << 32;
+  a = lc[0] | ((uint32_t)lc[1]) << 16 | ((uint64_t)lc[2]) << 32;
+  x = a * x + lc[3];
+  xi[0] = x;
+  xi[1] = x >> 16;
+  xi[2] = x >> 32;
+  return x & 0xffffffffffffull;
 }
diff --git a/fusl/src/prng/__seed48.c b/fusl/src/prng/__seed48.c
index 05a4539..a218ac3 100644
--- a/fusl/src/prng/__seed48.c
+++ b/fusl/src/prng/__seed48.c
@@ -1 +1 @@
-unsigned short __seed48[7] = { 0, 0, 0, 0xe66d, 0xdeec, 0x5, 0xb };
+unsigned short __seed48[7] = {0, 0, 0, 0xe66d, 0xdeec, 0x5, 0xb};
diff --git a/fusl/src/prng/drand48.c b/fusl/src/prng/drand48.c
index d808353..22a1258 100644
--- a/fusl/src/prng/drand48.c
+++ b/fusl/src/prng/drand48.c
@@ -1,19 +1,17 @@
 #include <stdlib.h>
 #include <inttypes.h>
 
-uint64_t __rand48_step(unsigned short *xi, unsigned short *lc);
+uint64_t __rand48_step(unsigned short* xi, unsigned short* lc);
 extern unsigned short __seed48[7];
 
-double erand48(unsigned short s[3])
-{
-	union {
-		uint64_t u;
-		double f;
-	} x = { 0x3ff0000000000000ULL | __rand48_step(s, __seed48+3)<<4 };
-	return x.f - 1.0;
+double erand48(unsigned short s[3]) {
+  union {
+    uint64_t u;
+    double f;
+  } x = {0x3ff0000000000000ULL | __rand48_step(s, __seed48 + 3) << 4};
+  return x.f - 1.0;
 }
 
-double drand48(void)
-{
-	return erand48(__seed48);
+double drand48(void) {
+  return erand48(__seed48);
 }
diff --git a/fusl/src/prng/lcong48.c b/fusl/src/prng/lcong48.c
index 32b27d4..57bc383 100644
--- a/fusl/src/prng/lcong48.c
+++ b/fusl/src/prng/lcong48.c
@@ -3,7 +3,6 @@
 
 extern unsigned short __seed48[7];
 
-void lcong48(unsigned short p[7])
-{
-	memcpy(__seed48, p, sizeof __seed48);
+void lcong48(unsigned short p[7]) {
+  memcpy(__seed48, p, sizeof __seed48);
 }
diff --git a/fusl/src/prng/lrand48.c b/fusl/src/prng/lrand48.c
index a3c4e4e..1e6ec62 100644
--- a/fusl/src/prng/lrand48.c
+++ b/fusl/src/prng/lrand48.c
@@ -1,15 +1,13 @@
 #include <stdlib.h>
 #include <inttypes.h>
 
-uint64_t __rand48_step(unsigned short *xi, unsigned short *lc);
+uint64_t __rand48_step(unsigned short* xi, unsigned short* lc);
 extern unsigned short __seed48[7];
 
-long nrand48(unsigned short s[3])
-{
-	return __rand48_step(s, __seed48+3) >> 17;
+long nrand48(unsigned short s[3]) {
+  return __rand48_step(s, __seed48 + 3) >> 17;
 }
 
-long lrand48(void)
-{
-	return nrand48(__seed48);
+long lrand48(void) {
+  return nrand48(__seed48);
 }
diff --git a/fusl/src/prng/mrand48.c b/fusl/src/prng/mrand48.c
index ee650fc..a59f3b8 100644
--- a/fusl/src/prng/mrand48.c
+++ b/fusl/src/prng/mrand48.c
@@ -1,15 +1,13 @@
 #include <stdlib.h>
 #include <inttypes.h>
 
-uint64_t __rand48_step(unsigned short *xi, unsigned short *lc);
+uint64_t __rand48_step(unsigned short* xi, unsigned short* lc);
 extern unsigned short __seed48[7];
 
-long jrand48(unsigned short s[3])
-{
-	return __rand48_step(s, __seed48+3) >> 16;
+long jrand48(unsigned short s[3]) {
+  return __rand48_step(s, __seed48 + 3) >> 16;
 }
 
-long mrand48(void)
-{
-	return jrand48(__seed48);
+long mrand48(void) {
+  return jrand48(__seed48);
 }
diff --git a/fusl/src/prng/rand.c b/fusl/src/prng/rand.c
index c000cd2..166e094 100644
--- a/fusl/src/prng/rand.c
+++ b/fusl/src/prng/rand.c
@@ -3,13 +3,11 @@
 
 static uint64_t seed;
 
-void srand(unsigned s)
-{
-	seed = s-1;
+void srand(unsigned s) {
+  seed = s - 1;
 }
 
-int rand(void)
-{
-	seed = 6364136223846793005ULL*seed + 1;
-	return seed>>33;
+int rand(void) {
+  seed = 6364136223846793005ULL * seed + 1;
+  return seed >> 33;
 }
diff --git a/fusl/src/prng/rand_r.c b/fusl/src/prng/rand_r.c
index 638614c..c011454 100644
--- a/fusl/src/prng/rand_r.c
+++ b/fusl/src/prng/rand_r.c
@@ -1,15 +1,13 @@
 #include <stdlib.h>
 
-static unsigned temper(unsigned x)
-{
-	x ^= x>>11;
-	x ^= x<<7 & 0x9D2C5680;
-	x ^= x<<15 & 0xEFC60000;
-	x ^= x>>18;
-	return x;
+static unsigned temper(unsigned x) {
+  x ^= x >> 11;
+  x ^= x << 7 & 0x9D2C5680;
+  x ^= x << 15 & 0xEFC60000;
+  x ^= x >> 18;
+  return x;
 }
 
-int rand_r(unsigned *seed)
-{
-	return temper(*seed = *seed * 1103515245 + 12345)/2;
+int rand_r(unsigned* seed) {
+  return temper(*seed = *seed * 1103515245 + 12345) / 2;
 }
diff --git a/fusl/src/prng/random.c b/fusl/src/prng/random.c
index 7d557d7..3f4bc68 100644
--- a/fusl/src/prng/random.c
+++ b/fusl/src/prng/random.c
@@ -9,114 +9,112 @@
 */
 
 static uint32_t init[] = {
-0x00000000,0x5851f42d,0xc0b18ccf,0xcbb5f646,
-0xc7033129,0x30705b04,0x20fd5db4,0x9a8b7f78,
-0x502959d8,0xab894868,0x6c0356a7,0x88cdb7ff,
-0xb477d43f,0x70a3a52b,0xa8e4baf1,0xfd8341fc,
-0x8ae16fd9,0x742d2f7a,0x0d1f0796,0x76035e09,
-0x40f7702c,0x6fa72ca5,0xaaa84157,0x58a0df74,
-0xc74a0364,0xae533cc4,0x04185faf,0x6de3b115,
-0x0cab8628,0xf043bfa4,0x398150e9,0x37521657};
+    0x00000000, 0x5851f42d, 0xc0b18ccf, 0xcbb5f646, 0xc7033129, 0x30705b04,
+    0x20fd5db4, 0x9a8b7f78, 0x502959d8, 0xab894868, 0x6c0356a7, 0x88cdb7ff,
+    0xb477d43f, 0x70a3a52b, 0xa8e4baf1, 0xfd8341fc, 0x8ae16fd9, 0x742d2f7a,
+    0x0d1f0796, 0x76035e09, 0x40f7702c, 0x6fa72ca5, 0xaaa84157, 0x58a0df74,
+    0xc74a0364, 0xae533cc4, 0x04185faf, 0x6de3b115, 0x0cab8628, 0xf043bfa4,
+    0x398150e9, 0x37521657};
 
 static int n = 31;
 static int i = 3;
 static int j = 0;
-static uint32_t *x = init+1;
+static uint32_t* x = init + 1;
 static volatile int lock[2];
 
 static uint32_t lcg31(uint32_t x) {
-	return (1103515245*x + 12345) & 0x7fffffff;
+  return (1103515245 * x + 12345) & 0x7fffffff;
 }
 
 static uint64_t lcg64(uint64_t x) {
-	return 6364136223846793005ull*x + 1;
+  return 6364136223846793005ull * x + 1;
 }
 
-static void *savestate() {
-	x[-1] = (n<<16)|(i<<8)|j;
-	return x-1;
+static void* savestate() {
+  x[-1] = (n << 16) | (i << 8) | j;
+  return x - 1;
 }
 
-static void loadstate(uint32_t *state) {
-	x = state+1;
-	n = x[-1]>>16;
-	i = (x[-1]>>8)&0xff;
-	j = x[-1]&0xff;
+static void loadstate(uint32_t* state) {
+  x = state + 1;
+  n = x[-1] >> 16;
+  i = (x[-1] >> 8) & 0xff;
+  j = x[-1] & 0xff;
 }
 
 static void __srandom(unsigned seed) {
-	int k;
-	uint64_t s = seed;
+  int k;
+  uint64_t s = seed;
 
-	if (n == 0) {
-		x[0] = s;
-		return;
-	}
-	i = n == 31 || n == 7 ? 3 : 1;
-	j = 0;
-	for (k = 0; k < n; k++) {
-		s = lcg64(s);
-		x[k] = s>>32;
-	}
-	/* make sure x contains at least one odd number */
-	x[0] |= 1;
+  if (n == 0) {
+    x[0] = s;
+    return;
+  }
+  i = n == 31 || n == 7 ? 3 : 1;
+  j = 0;
+  for (k = 0; k < n; k++) {
+    s = lcg64(s);
+    x[k] = s >> 32;
+  }
+  /* make sure x contains at least one odd number */
+  x[0] |= 1;
 }
 
 void srandom(unsigned seed) {
-	LOCK(lock);
-	__srandom(seed);
-	UNLOCK(lock);
+  LOCK(lock);
+  __srandom(seed);
+  UNLOCK(lock);
 }
 
-char *initstate(unsigned seed, char *state, size_t size) {
-	void *old;
+char* initstate(unsigned seed, char* state, size_t size) {
+  void* old;
 
-	if (size < 8)
-		return 0;
-	LOCK(lock);
-	old = savestate();
-	if (size < 32)
-		n = 0;
-	else if (size < 64)
-		n = 7;
-	else if (size < 128)
-		n = 15;
-	else if (size < 256)
-		n = 31;
-	else
-		n = 63;
-	x = (uint32_t*)state + 1;
-	__srandom(seed);
-	savestate();
-	UNLOCK(lock);
-	return old;
+  if (size < 8)
+    return 0;
+  LOCK(lock);
+  old = savestate();
+  if (size < 32)
+    n = 0;
+  else if (size < 64)
+    n = 7;
+  else if (size < 128)
+    n = 15;
+  else if (size < 256)
+    n = 31;
+  else
+    n = 63;
+  x = (uint32_t*)state + 1;
+  __srandom(seed);
+  savestate();
+  UNLOCK(lock);
+  return old;
 }
 
-char *setstate(char *state) {
-	void *old;
+char* setstate(char* state) {
+  void* old;
 
-	LOCK(lock);
-	old = savestate();
-	loadstate((uint32_t*)state);
-	UNLOCK(lock);
-	return old;
+  LOCK(lock);
+  old = savestate();
+  loadstate((uint32_t*)state);
+  UNLOCK(lock);
+  return old;
 }
 
 long random(void) {
-	long k;
+  long k;
 
-	LOCK(lock);
-	if (n == 0) {
-		k = x[0] = lcg31(x[0]);
-		goto end;
-	}
-	x[i] += x[j];
-	k = x[i]>>1;
-	if (++i == n)
-		i = 0;
-	if (++j == n)
-		j = 0;
+  LOCK(lock);
+  if (n == 0) {
+    k = x[0] = lcg31(x[0]);
+    goto end;
+  }
+  x[i] += x[j];
+  k = x[i] >> 1;
+  if (++i == n)
+    i = 0;
+  if (++j == n)
+    j = 0;
 end:
-	UNLOCK(lock);
-	return k;
+  UNLOCK(lock);
+  return k;
 }
diff --git a/fusl/src/prng/seed48.c b/fusl/src/prng/seed48.c
index e0699c0..cdfae19 100644
--- a/fusl/src/prng/seed48.c
+++ b/fusl/src/prng/seed48.c
@@ -3,10 +3,9 @@
 
 extern unsigned short __seed48[7];
 
-unsigned short *seed48(unsigned short *s)
-{
-	static unsigned short p[3];
-	memcpy(p, __seed48, sizeof p);
-	memcpy(__seed48, s, sizeof p);
-	return p;
+unsigned short* seed48(unsigned short* s) {
+  static unsigned short p[3];
+  memcpy(p, __seed48, sizeof p);
+  memcpy(__seed48, s, sizeof p);
+  return p;
 }
diff --git a/fusl/src/prng/srand48.c b/fusl/src/prng/srand48.c
index 0a56f6a..a2cff3c 100644
--- a/fusl/src/prng/srand48.c
+++ b/fusl/src/prng/srand48.c
@@ -1,6 +1,5 @@
 #include <stdlib.h>
 
-void srand48(long seed)
-{
-	seed48((unsigned short [3]){ 0x330e, seed, seed>>16 });
+void srand48(long seed) {
+  seed48((unsigned short[3]){0x330e, seed, seed >> 16});
 }
diff --git a/fusl/src/process/execl.c b/fusl/src/process/execl.c
index 5ee5c81..ee8c93b 100644
--- a/fusl/src/process/execl.c
+++ b/fusl/src/process/execl.c
@@ -1,22 +1,22 @@
 #include <unistd.h>
 #include <stdarg.h>
 
-int execl(const char *path, const char *argv0, ...)
-{
-	int argc;
-	va_list ap;
-	va_start(ap, argv0);
-	for (argc=1; va_arg(ap, const char *); argc++);
-	va_end(ap);
-	{
-		int i;
-		char *argv[argc+1];
-		va_start(ap, argv0);
-		argv[0] = (char *)argv0;
-		for (i=1; i<argc; i++)
-			argv[i] = va_arg(ap, char *);
-		argv[i] = NULL;
-		va_end(ap);
-		return execv(path, argv);
-	}
+int execl(const char* path, const char* argv0, ...) {
+  int argc;
+  va_list ap;
+  va_start(ap, argv0);
+  for (argc = 1; va_arg(ap, const char*); argc++)
+    ;
+  va_end(ap);
+  {
+    int i;
+    char* argv[argc + 1];
+    va_start(ap, argv0);
+    argv[0] = (char*)argv0;
+    for (i = 1; i < argc; i++)
+      argv[i] = va_arg(ap, char*);
+    argv[i] = NULL;
+    va_end(ap);
+    return execv(path, argv);
+  }
 }
diff --git a/fusl/src/process/execle.c b/fusl/src/process/execle.c
index 37ca503..45093d2 100644
--- a/fusl/src/process/execle.c
+++ b/fusl/src/process/execle.c
@@ -1,23 +1,23 @@
 #include <unistd.h>
 #include <stdarg.h>
 
-int execle(const char *path, const char *argv0, ...)
-{
-	int argc;
-	va_list ap;
-	va_start(ap, argv0);
-	for (argc=1; va_arg(ap, const char *); argc++);
-	va_end(ap);
-	{
-		int i;
-		char *argv[argc+1];
-		char **envp;
-		va_start(ap, argv0);
-		argv[0] = (char *)argv0;
-		for (i=1; i<=argc; i++)
-			argv[i] = va_arg(ap, char *);
-		envp = va_arg(ap, char **);
-		va_end(ap);
-		return execve(path, argv, envp);
-	}
+int execle(const char* path, const char* argv0, ...) {
+  int argc;
+  va_list ap;
+  va_start(ap, argv0);
+  for (argc = 1; va_arg(ap, const char*); argc++)
+    ;
+  va_end(ap);
+  {
+    int i;
+    char* argv[argc + 1];
+    char** envp;
+    va_start(ap, argv0);
+    argv[0] = (char*)argv0;
+    for (i = 1; i <= argc; i++)
+      argv[i] = va_arg(ap, char*);
+    envp = va_arg(ap, char**);
+    va_end(ap);
+    return execve(path, argv, envp);
+  }
 }
diff --git a/fusl/src/process/execlp.c b/fusl/src/process/execlp.c
index 5eed886..c71be19 100644
--- a/fusl/src/process/execlp.c
+++ b/fusl/src/process/execlp.c
@@ -1,22 +1,22 @@
 #include <unistd.h>
 #include <stdarg.h>
 
-int execlp(const char *file, const char *argv0, ...)
-{
-	int argc;
-	va_list ap;
-	va_start(ap, argv0);
-	for (argc=1; va_arg(ap, const char *); argc++);
-	va_end(ap);
-	{
-		int i;
-		char *argv[argc+1];
-		va_start(ap, argv0);
-		argv[0] = (char *)argv0;
-		for (i=1; i<argc; i++)
-			argv[i] = va_arg(ap, char *);
-		argv[i] = NULL;
-		va_end(ap);
-		return execvp(file, argv);
-	}
+int execlp(const char* file, const char* argv0, ...) {
+  int argc;
+  va_list ap;
+  va_start(ap, argv0);
+  for (argc = 1; va_arg(ap, const char*); argc++)
+    ;
+  va_end(ap);
+  {
+    int i;
+    char* argv[argc + 1];
+    va_start(ap, argv0);
+    argv[0] = (char*)argv0;
+    for (i = 1; i < argc; i++)
+      argv[i] = va_arg(ap, char*);
+    argv[i] = NULL;
+    va_end(ap);
+    return execvp(file, argv);
+  }
 }
diff --git a/fusl/src/process/execv.c b/fusl/src/process/execv.c
index 2ac0dec..4fa620f 100644
--- a/fusl/src/process/execv.c
+++ b/fusl/src/process/execv.c
@@ -1,8 +1,7 @@
 #include <unistd.h>
 
-extern char **__environ;
+extern char** __environ;
 
-int execv(const char *path, char *const argv[])
-{
-	return execve(path, argv, __environ);
+int execv(const char* path, char* const argv[]) {
+  return execve(path, argv, __environ);
 }
diff --git a/fusl/src/process/execve.c b/fusl/src/process/execve.c
index 70286a1..961cc55 100644
--- a/fusl/src/process/execve.c
+++ b/fusl/src/process/execve.c
@@ -1,8 +1,7 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int execve(const char *path, char *const argv[], char *const envp[])
-{
-	/* do we need to use environ if envp is null? */
-	return syscall(SYS_execve, path, argv, envp);
+int execve(const char* path, char* const argv[], char* const envp[]) {
+  /* do we need to use environ if envp is null? */
+  return syscall(SYS_execve, path, argv, envp);
 }
diff --git a/fusl/src/process/execvp.c b/fusl/src/process/execvp.c
index 3a8bbe8..b02bf7a 100644
--- a/fusl/src/process/execvp.c
+++ b/fusl/src/process/execvp.c
@@ -5,51 +5,57 @@
 #include <limits.h>
 #include "libc.h"
 
-extern char **__environ;
+extern char** __environ;
 
-int __execvpe(const char *file, char *const argv[], char *const envp[])
-{
-	const char *p, *z, *path = getenv("PATH");
-	size_t l, k;
-	int seen_eacces = 0;
+int __execvpe(const char* file, char* const argv[], char* const envp[]) {
+  const char *p, *z, *path = getenv("PATH");
+  size_t l, k;
+  int seen_eacces = 0;
 
-	errno = ENOENT;
-	if (!*file) return -1;
+  errno = ENOENT;
+  if (!*file)
+    return -1;
 
-	if (strchr(file, '/'))
-		return execve(file, argv, envp);
+  if (strchr(file, '/'))
+    return execve(file, argv, envp);
 
-	if (!path) path = "/usr/local/bin:/bin:/usr/bin";
-	k = strnlen(file, NAME_MAX+1);
-	if (k > NAME_MAX) {
-		errno = ENAMETOOLONG;
-		return -1;
-	}
-	l = strnlen(path, PATH_MAX-1)+1;
+  if (!path)
+    path = "/usr/local/bin:/bin:/usr/bin";
+  k = strnlen(file, NAME_MAX + 1);
+  if (k > NAME_MAX) {
+    errno = ENAMETOOLONG;
+    return -1;
+  }
+  l = strnlen(path, PATH_MAX - 1) + 1;
 
-	for(p=path; ; p=z) {
-		char b[l+k+1];
-		z = strchr(p, ':');
-		if (!z) z = p+strlen(p);
-		if (z-p >= l) {
-			if (!*z++) break;
-			continue;
-		}
-		memcpy(b, p, z-p);
-		b[z-p] = '/';
-		memcpy(b+(z-p)+(z>p), file, k+1);
-		execve(b, argv, envp);
-		if (errno == EACCES) seen_eacces = 1;
-		else if (errno != ENOENT) return -1;
-		if (!*z++) break;
-	}
-	if (seen_eacces) errno = EACCES;
-	return -1;
+  for (p = path;; p = z) {
+    char b[l + k + 1];
+    z = strchr(p, ':');
+    if (!z)
+      z = p + strlen(p);
+    if (z - p >= l) {
+      if (!*z++)
+        break;
+      continue;
+    }
+    memcpy(b, p, z - p);
+    b[z - p] = '/';
+    memcpy(b + (z - p) + (z > p), file, k + 1);
+    execve(b, argv, envp);
+    if (errno == EACCES)
+      seen_eacces = 1;
+    else if (errno != ENOENT)
+      return -1;
+    if (!*z++)
+      break;
+  }
+  if (seen_eacces)
+    errno = EACCES;
+  return -1;
 }
 
-int execvp(const char *file, char *const argv[])
-{
-	return __execvpe(file, argv, __environ);
+int execvp(const char* file, char* const argv[]) {
+  return __execvpe(file, argv, __environ);
 }
 
 weak_alias(__execvpe, execvpe);
diff --git a/fusl/src/process/fdop.h b/fusl/src/process/fdop.h
index 00b8751..7b06324 100644
--- a/fusl/src/process/fdop.h
+++ b/fusl/src/process/fdop.h
@@ -3,8 +3,8 @@
 #define FDOP_OPEN 3
 
 struct fdop {
-	struct fdop *next, *prev;
-	int cmd, fd, srcfd, oflag;
-	mode_t mode;
-	char path[];
+  struct fdop *next, *prev;
+  int cmd, fd, srcfd, oflag;
+  mode_t mode;
+  char path[];
 };
diff --git a/fusl/src/process/fexecve.c b/fusl/src/process/fexecve.c
index 6507b42..7bfed55 100644
--- a/fusl/src/process/fexecve.c
+++ b/fusl/src/process/fexecve.c
@@ -1,13 +1,13 @@
 #include <unistd.h>
 #include <errno.h>
 
-void __procfdname(char *, unsigned);
+void __procfdname(char*, unsigned);
 
-int fexecve(int fd, char *const argv[], char *const envp[])
-{
-	char buf[15 + 3*sizeof(int)];
-	__procfdname(buf, fd);
-	execve(buf, argv, envp);
-	if (errno == ENOENT) errno = EBADF;
-	return -1;
+int fexecve(int fd, char* const argv[], char* const envp[]) {
+  char buf[15 + 3 * sizeof(int)];
+  __procfdname(buf, fd);
+  execve(buf, argv, envp);
+  if (errno == ENOENT)
+    errno = EBADF;
+  return -1;
 }
diff --git a/fusl/src/process/fork.c b/fusl/src/process/fork.c
index b96f002..27aae7e 100644
--- a/fusl/src/process/fork.c
+++ b/fusl/src/process/fork.c
@@ -5,31 +5,28 @@
 #include "libc.h"
 #include "pthread_impl.h"
 
-static void dummy(int x)
-{
-}
+static void dummy(int x) {}
 
 weak_alias(dummy, __fork_handler);
 
-pid_t fork(void)
-{
-	pid_t ret;
-	sigset_t set;
-	__fork_handler(-1);
-	__block_all_sigs(&set);
+pid_t fork(void) {
+  pid_t ret;
+  sigset_t set;
+  __fork_handler(-1);
+  __block_all_sigs(&set);
 #ifdef SYS_fork
-	ret = syscall(SYS_fork);
+  ret = syscall(SYS_fork);
 #else
-	ret = syscall(SYS_clone, SIGCHLD, 0);
+  ret = syscall(SYS_clone, SIGCHLD, 0);
 #endif
-	if (!ret) {
-		pthread_t self = __pthread_self();
-		self->tid = __syscall(SYS_gettid);
-		self->robust_list.off = 0;
-		self->robust_list.pending = 0;
-		libc.threads_minus_1 = 0;
-	}
-	__restore_sigs(&set);
-	__fork_handler(!ret);
-	return ret;
+  if (!ret) {
+    pthread_t self = __pthread_self();
+    self->tid = __syscall(SYS_gettid);
+    self->robust_list.off = 0;
+    self->robust_list.pending = 0;
+    libc.threads_minus_1 = 0;
+  }
+  __restore_sigs(&set);
+  __fork_handler(!ret);
+  return ret;
 }
diff --git a/fusl/src/process/posix_spawn.c b/fusl/src/process/posix_spawn.c
index 0bdf71c..9f73271 100644
--- a/fusl/src/process/posix_spawn.c
+++ b/fusl/src/process/posix_spawn.c
@@ -11,185 +11,195 @@
 #include "libc.h"
 
 struct args {
-	int p[2];
-	sigset_t oldmask;
-	const char *path;
-	int (*exec)(const char *, char *const *, char *const *);
-	const posix_spawn_file_actions_t *fa;
-	const posix_spawnattr_t *restrict attr;
-	char *const *argv, *const *envp;
+  int p[2];
+  sigset_t oldmask;
+  const char* path;
+  int (*exec)(const char*, char* const*, char* const*);
+  const posix_spawn_file_actions_t* fa;
+  const posix_spawnattr_t* restrict attr;
+  char *const *argv, *const *envp;
 };
 
-void __get_handler_set(sigset_t *);
+void __get_handler_set(sigset_t*);
 
-static int __sys_dup2(int old, int new)
-{
+static int __sys_dup2(int old, int new) {
 #ifdef SYS_dup2
-	return __syscall(SYS_dup2, old, new);
+  return __syscall(SYS_dup2, old, new);
 #else
-	if (old==new) {
-		int r = __syscall(SYS_fcntl, old, F_GETFD);
-		return r<0 ? r : old;
-	} else {
-		return __syscall(SYS_dup3, old, new, 0);
-	}
+  if (old == new) {
+    int r = __syscall(SYS_fcntl, old, F_GETFD);
+    return r < 0 ? r : old;
+  } else {
+    return __syscall(SYS_dup3, old, new, 0);
+  }
 #endif
 }
 
-static int child(void *args_vp)
-{
-	int i, ret;
-	struct sigaction sa = {0};
-	struct args *args = args_vp;
-	int p = args->p[1];
-	const posix_spawn_file_actions_t *fa = args->fa;
-	const posix_spawnattr_t *restrict attr = args->attr;
-	sigset_t hset;
+static int child(void* args_vp) {
+  int i, ret;
+  struct sigaction sa = {0};
+  struct args* args = args_vp;
+  int p = args->p[1];
+  const posix_spawn_file_actions_t* fa = args->fa;
+  const posix_spawnattr_t* restrict attr = args->attr;
+  sigset_t hset;
 
-	close(args->p[0]);
+  close(args->p[0]);
 
-	/* All signal dispositions must be either SIG_DFL or SIG_IGN
-	 * before signals are unblocked. Otherwise a signal handler
-	 * from the parent might get run in the child while sharing
-	 * memory, with unpredictable and dangerous results. To
-	 * reduce overhead, sigaction has tracked for us which signals
-	 * potentially have a signal handler. */
-	__get_handler_set(&hset);
-	for (i=1; i<_NSIG; i++) {
-		if ((attr->__flags & POSIX_SPAWN_SETSIGDEF)
-		     && sigismember(&attr->__def, i)) {
-			sa.sa_handler = SIG_DFL;
-		} else if (sigismember(&hset, i)) {
-			if (i-32<3U) {
-				sa.sa_handler = SIG_IGN;
-			} else {
-				__libc_sigaction(i, 0, &sa);
-				if (sa.sa_handler==SIG_IGN) continue;
-				sa.sa_handler = SIG_DFL;
-			}
-		} else {
-			continue;
-		}
-		__libc_sigaction(i, &sa, 0);
-	}
+  /* All signal dispositions must be either SIG_DFL or SIG_IGN
+   * before signals are unblocked. Otherwise a signal handler
+   * from the parent might get run in the child while sharing
+   * memory, with unpredictable and dangerous results. To
+   * reduce overhead, sigaction has tracked for us which signals
+   * potentially have a signal handler. */
+  __get_handler_set(&hset);
+  for (i = 1; i < _NSIG; i++) {
+    if ((attr->__flags & POSIX_SPAWN_SETSIGDEF) &&
+        sigismember(&attr->__def, i)) {
+      sa.sa_handler = SIG_DFL;
+    } else if (sigismember(&hset, i)) {
+      if (i - 32 < 3U) {
+        sa.sa_handler = SIG_IGN;
+      } else {
+        __libc_sigaction(i, 0, &sa);
+        if (sa.sa_handler == SIG_IGN)
+          continue;
+        sa.sa_handler = SIG_DFL;
+      }
+    } else {
+      continue;
+    }
+    __libc_sigaction(i, &sa, 0);
+  }
 
-	if (attr->__flags & POSIX_SPAWN_SETPGROUP)
-		if ((ret=__syscall(SYS_setpgid, 0, attr->__pgrp)))
-			goto fail;
+  if (attr->__flags & POSIX_SPAWN_SETPGROUP)
+    if ((ret = __syscall(SYS_setpgid, 0, attr->__pgrp)))
+      goto fail;
 
-	/* Use syscalls directly because the library functions attempt
-	 * to do a multi-threaded synchronized id-change, which would
-	 * trash the parent's state. */
-	if (attr->__flags & POSIX_SPAWN_RESETIDS)
-		if ((ret=__syscall(SYS_setgid, __syscall(SYS_getgid))) ||
-		    (ret=__syscall(SYS_setuid, __syscall(SYS_getuid))) )
-			goto fail;
+  /* Use syscalls directly because the library functions attempt
+   * to do a multi-threaded synchronized id-change, which would
+   * trash the parent's state. */
+  if (attr->__flags & POSIX_SPAWN_RESETIDS)
+    if ((ret = __syscall(SYS_setgid, __syscall(SYS_getgid))) ||
+        (ret = __syscall(SYS_setuid, __syscall(SYS_getuid))))
+      goto fail;
 
-	if (fa && fa->__actions) {
-		struct fdop *op;
-		int fd;
-		for (op = fa->__actions; op->next; op = op->next);
-		for (; op; op = op->prev) {
-			/* It's possible that a file operation would clobber
-			 * the pipe fd used for synchronizing with the
-			 * parent. To avoid that, we dup the pipe onto
-			 * an unoccupied fd. */
-			if (op->fd == p) {
-				ret = __syscall(SYS_dup, p);
-				if (ret < 0) goto fail;
-				__syscall(SYS_close, p);
-				p = ret;
-			}
-			switch(op->cmd) {
-			case FDOP_CLOSE:
-				__syscall(SYS_close, op->fd);
-				break;
-			case FDOP_DUP2:
-				if ((ret=__sys_dup2(op->srcfd, op->fd))<0)
-					goto fail;
-				break;
-			case FDOP_OPEN:
-				fd = __sys_open(op->path, op->oflag, op->mode);
-				if ((ret=fd) < 0) goto fail;
-				if (fd != op->fd) {
-					if ((ret=__sys_dup2(fd, op->fd))<0)
-						goto fail;
-					__syscall(SYS_close, fd);
-				}
-				break;
-			}
-		}
-	}
+  if (fa && fa->__actions) {
+    struct fdop* op;
+    int fd;
+    for (op = fa->__actions; op->next; op = op->next)
+      ;
+    for (; op; op = op->prev) {
+      /* It's possible that a file operation would clobber
+       * the pipe fd used for synchronizing with the
+       * parent. To avoid that, we dup the pipe onto
+       * an unoccupied fd. */
+      if (op->fd == p) {
+        ret = __syscall(SYS_dup, p);
+        if (ret < 0)
+          goto fail;
+        __syscall(SYS_close, p);
+        p = ret;
+      }
+      switch (op->cmd) {
+        case FDOP_CLOSE:
+          __syscall(SYS_close, op->fd);
+          break;
+        case FDOP_DUP2:
+          if ((ret = __sys_dup2(op->srcfd, op->fd)) < 0)
+            goto fail;
+          break;
+        case FDOP_OPEN:
+          fd = __sys_open(op->path, op->oflag, op->mode);
+          if ((ret = fd) < 0)
+            goto fail;
+          if (fd != op->fd) {
+            if ((ret = __sys_dup2(fd, op->fd)) < 0)
+              goto fail;
+            __syscall(SYS_close, fd);
+          }
+          break;
+      }
+    }
+  }
 
-	/* Close-on-exec flag may have been lost if we moved the pipe
-	 * to a different fd. We don't use F_DUPFD_CLOEXEC above because
-	 * it would fail on older kernels and atomicity is not needed --
-	 * in this process there are no threads or signal handlers. */
-	__syscall(SYS_fcntl, p, F_SETFD, FD_CLOEXEC);
+  /* Close-on-exec flag may have been lost if we moved the pipe
+   * to a different fd. We don't use F_DUPFD_CLOEXEC above because
+   * it would fail on older kernels and atomicity is not needed --
+   * in this process there are no threads or signal handlers. */
+  __syscall(SYS_fcntl, p, F_SETFD, FD_CLOEXEC);
 
-	pthread_sigmask(SIG_SETMASK, (attr->__flags & POSIX_SPAWN_SETSIGMASK)
-		? &attr->__mask : &args->oldmask, 0);
+  pthread_sigmask(
+      SIG_SETMASK,
+      (attr->__flags & POSIX_SPAWN_SETSIGMASK) ? &attr->__mask : &args->oldmask,
+      0);
 
-	args->exec(args->path, args->argv, args->envp);
-	ret = -errno;
+  args->exec(args->path, args->argv, args->envp);
+  ret = -errno;
 
 fail:
-	/* Since sizeof errno < PIPE_BUF, the write is atomic. */
-	ret = -ret;
-	if (ret) while (__syscall(SYS_write, p, &ret, sizeof ret) < 0);
-	_exit(127);
+  /* Since sizeof errno < PIPE_BUF, the write is atomic. */
+  ret = -ret;
+  if (ret)
+    while (__syscall(SYS_write, p, &ret, sizeof ret) < 0)
+      ;
+  _exit(127);
 }
 
+int __posix_spawnx(pid_t* restrict res,
+                   const char* restrict path,
+                   int (*exec)(const char*, char* const*, char* const*),
+                   const posix_spawn_file_actions_t* fa,
+                   const posix_spawnattr_t* restrict attr,
+                   char* const argv[restrict],
+                   char* const envp[restrict]) {
+  pid_t pid;
+  char stack[1024];
+  int ec = 0, cs;
+  struct args args;
 
-int __posix_spawnx(pid_t *restrict res, const char *restrict path,
-	int (*exec)(const char *, char *const *, char *const *),
-	const posix_spawn_file_actions_t *fa,
-	const posix_spawnattr_t *restrict attr,
-	char *const argv[restrict], char *const envp[restrict])
-{
-	pid_t pid;
-	char stack[1024];
-	int ec=0, cs;
-	struct args args;
+  if (pipe2(args.p, O_CLOEXEC))
+    return errno;
 
-	if (pipe2(args.p, O_CLOEXEC))
-		return errno;
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
 
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  args.path = path;
+  args.exec = exec;
+  args.fa = fa;
+  args.attr = attr ? attr : &(const posix_spawnattr_t){0};
+  args.argv = argv;
+  args.envp = envp;
+  pthread_sigmask(SIG_BLOCK, SIGALL_SET, &args.oldmask);
 
-	args.path = path;
-	args.exec = exec;
-	args.fa = fa;
-	args.attr = attr ? attr : &(const posix_spawnattr_t){0};
-	args.argv = argv;
-	args.envp = envp;
-	pthread_sigmask(SIG_BLOCK, SIGALL_SET, &args.oldmask);
+  pid = __clone(child, stack + sizeof stack, CLONE_VM | CLONE_VFORK | SIGCHLD,
+                &args);
+  close(args.p[1]);
 
-	pid = __clone(child, stack+sizeof stack,
-		CLONE_VM|CLONE_VFORK|SIGCHLD, &args);
-	close(args.p[1]);
+  if (pid > 0) {
+    if (read(args.p[0], &ec, sizeof ec) != sizeof ec)
+      ec = 0;
+    else
+      waitpid(pid, &(int){0}, 0);
+  } else {
+    ec = -pid;
+  }
 
-	if (pid > 0) {
-		if (read(args.p[0], &ec, sizeof ec) != sizeof ec) ec = 0;
-		else waitpid(pid, &(int){0}, 0);
-	} else {
-		ec = -pid;
-	}
+  close(args.p[0]);
 
-	close(args.p[0]);
+  if (!ec && res)
+    *res = pid;
 
-	if (!ec && res) *res = pid;
+  pthread_sigmask(SIG_SETMASK, &args.oldmask, 0);
+  pthread_setcancelstate(cs, 0);
 
-	pthread_sigmask(SIG_SETMASK, &args.oldmask, 0);
-	pthread_setcancelstate(cs, 0);
-
-	return ec;
+  return ec;
 }
 
-int posix_spawn(pid_t *restrict res, const char *restrict path,
-	const posix_spawn_file_actions_t *fa,
-	const posix_spawnattr_t *restrict attr,
-	char *const argv[restrict], char *const envp[restrict])
-{
-	return __posix_spawnx(res, path, execve, fa, attr, argv, envp);
+int posix_spawn(pid_t* restrict res,
+                const char* restrict path,
+                const posix_spawn_file_actions_t* fa,
+                const posix_spawnattr_t* restrict attr,
+                char* const argv[restrict],
+                char* const envp[restrict]) {
+  return __posix_spawnx(res, path, execve, fa, attr, argv, envp);
 }
diff --git a/fusl/src/process/posix_spawn_file_actions_addclose.c b/fusl/src/process/posix_spawn_file_actions_addclose.c
index cdda597..65bf61a 100644
--- a/fusl/src/process/posix_spawn_file_actions_addclose.c
+++ b/fusl/src/process/posix_spawn_file_actions_addclose.c
@@ -3,14 +3,15 @@
 #include <errno.h>
 #include "fdop.h"
 
-int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t *fa, int fd)
-{
-	struct fdop *op = malloc(sizeof *op);
-	if (!op) return ENOMEM;
-	op->cmd = FDOP_CLOSE;
-	op->fd = fd;
-	if ((op->next = fa->__actions)) op->next->prev = op;
-	op->prev = 0;
-	fa->__actions = op;
-	return 0;
+int posix_spawn_file_actions_addclose(posix_spawn_file_actions_t* fa, int fd) {
+  struct fdop* op = malloc(sizeof *op);
+  if (!op)
+    return ENOMEM;
+  op->cmd = FDOP_CLOSE;
+  op->fd = fd;
+  if ((op->next = fa->__actions))
+    op->next->prev = op;
+  op->prev = 0;
+  fa->__actions = op;
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawn_file_actions_adddup2.c b/fusl/src/process/posix_spawn_file_actions_adddup2.c
index 0367498..b9b7c8b 100644
--- a/fusl/src/process/posix_spawn_file_actions_adddup2.c
+++ b/fusl/src/process/posix_spawn_file_actions_adddup2.c
@@ -3,15 +3,18 @@
 #include <errno.h>
 #include "fdop.h"
 
-int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t *fa, int srcfd, int fd)
-{
-	struct fdop *op = malloc(sizeof *op);
-	if (!op) return ENOMEM;
-	op->cmd = FDOP_DUP2;
-	op->srcfd = srcfd;
-	op->fd = fd;
-	if ((op->next = fa->__actions)) op->next->prev = op;
-	op->prev = 0;
-	fa->__actions = op;
-	return 0;
+int posix_spawn_file_actions_adddup2(posix_spawn_file_actions_t* fa,
+                                     int srcfd,
+                                     int fd) {
+  struct fdop* op = malloc(sizeof *op);
+  if (!op)
+    return ENOMEM;
+  op->cmd = FDOP_DUP2;
+  op->srcfd = srcfd;
+  op->fd = fd;
+  if ((op->next = fa->__actions))
+    op->next->prev = op;
+  op->prev = 0;
+  fa->__actions = op;
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawn_file_actions_addopen.c b/fusl/src/process/posix_spawn_file_actions_addopen.c
index 368922c..d74efbc 100644
--- a/fusl/src/process/posix_spawn_file_actions_addopen.c
+++ b/fusl/src/process/posix_spawn_file_actions_addopen.c
@@ -4,17 +4,22 @@
 #include <errno.h>
 #include "fdop.h"
 
-int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t *restrict fa, int fd, const char *restrict path, int flags, mode_t mode)
-{
-	struct fdop *op = malloc(sizeof *op + strlen(path) + 1);
-	if (!op) return ENOMEM;
-	op->cmd = FDOP_OPEN;
-	op->fd = fd;
-	op->oflag = flags;
-	op->mode = mode;
-	strcpy(op->path, path);
-	if ((op->next = fa->__actions)) op->next->prev = op;
-	op->prev = 0;
-	fa->__actions = op;
-	return 0;
+int posix_spawn_file_actions_addopen(posix_spawn_file_actions_t* restrict fa,
+                                     int fd,
+                                     const char* restrict path,
+                                     int flags,
+                                     mode_t mode) {
+  struct fdop* op = malloc(sizeof *op + strlen(path) + 1);
+  if (!op)
+    return ENOMEM;
+  op->cmd = FDOP_OPEN;
+  op->fd = fd;
+  op->oflag = flags;
+  op->mode = mode;
+  strcpy(op->path, path);
+  if ((op->next = fa->__actions))
+    op->next->prev = op;
+  op->prev = 0;
+  fa->__actions = op;
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawn_file_actions_destroy.c b/fusl/src/process/posix_spawn_file_actions_destroy.c
index 3251bab..4074ccf 100644
--- a/fusl/src/process/posix_spawn_file_actions_destroy.c
+++ b/fusl/src/process/posix_spawn_file_actions_destroy.c
@@ -2,13 +2,12 @@
 #include <stdlib.h>
 #include "fdop.h"
 
-int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t *fa)
-{
-	struct fdop *op = fa->__actions, *next;
-	while (op) {
-		next = op->next;
-		free(op);
-		op = next;
-	}
-	return 0;
+int posix_spawn_file_actions_destroy(posix_spawn_file_actions_t* fa) {
+  struct fdop *op = fa->__actions, *next;
+  while (op) {
+    next = op->next;
+    free(op);
+    op = next;
+  }
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawn_file_actions_init.c b/fusl/src/process/posix_spawn_file_actions_init.c
index 89d5e12..999f70a 100644
--- a/fusl/src/process/posix_spawn_file_actions_init.c
+++ b/fusl/src/process/posix_spawn_file_actions_init.c
@@ -1,7 +1,6 @@
 #include <spawn.h>
 
-int posix_spawn_file_actions_init(posix_spawn_file_actions_t *fa)
-{
-	fa->__actions = 0;
-	return 0;
+int posix_spawn_file_actions_init(posix_spawn_file_actions_t* fa) {
+  fa->__actions = 0;
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawnattr_destroy.c b/fusl/src/process/posix_spawnattr_destroy.c
index fc714a1..8e59b97 100644
--- a/fusl/src/process/posix_spawnattr_destroy.c
+++ b/fusl/src/process/posix_spawnattr_destroy.c
@@ -1,6 +1,5 @@
 #include <spawn.h>
 
-int posix_spawnattr_destroy(posix_spawnattr_t *attr)
-{
-	return 0;
+int posix_spawnattr_destroy(posix_spawnattr_t* attr) {
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawnattr_getflags.c b/fusl/src/process/posix_spawnattr_getflags.c
index aa635dd..1a786c6 100644
--- a/fusl/src/process/posix_spawnattr_getflags.c
+++ b/fusl/src/process/posix_spawnattr_getflags.c
@@ -1,7 +1,7 @@
 #include <spawn.h>
 
-int posix_spawnattr_getflags(const posix_spawnattr_t *restrict attr, short *restrict flags)
-{
-	*flags = attr->__flags;
-	return 0;
+int posix_spawnattr_getflags(const posix_spawnattr_t* restrict attr,
+                             short* restrict flags) {
+  *flags = attr->__flags;
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawnattr_getpgroup.c b/fusl/src/process/posix_spawnattr_getpgroup.c
index 0480527..163c628 100644
--- a/fusl/src/process/posix_spawnattr_getpgroup.c
+++ b/fusl/src/process/posix_spawnattr_getpgroup.c
@@ -1,7 +1,7 @@
 #include <spawn.h>
 
-int posix_spawnattr_getpgroup(const posix_spawnattr_t *restrict attr, pid_t *restrict pgrp)
-{
-	*pgrp = attr->__pgrp;
-	return 0;
+int posix_spawnattr_getpgroup(const posix_spawnattr_t* restrict attr,
+                              pid_t* restrict pgrp) {
+  *pgrp = attr->__pgrp;
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawnattr_getsigdefault.c b/fusl/src/process/posix_spawnattr_getsigdefault.c
index a49050a..7ec6077 100644
--- a/fusl/src/process/posix_spawnattr_getsigdefault.c
+++ b/fusl/src/process/posix_spawnattr_getsigdefault.c
@@ -1,7 +1,7 @@
 #include <spawn.h>
 
-int posix_spawnattr_getsigdefault(const posix_spawnattr_t *restrict attr, sigset_t *restrict def)
-{
-	*def = attr->__def;
-	return 0;
+int posix_spawnattr_getsigdefault(const posix_spawnattr_t* restrict attr,
+                                  sigset_t* restrict def) {
+  *def = attr->__def;
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawnattr_getsigmask.c b/fusl/src/process/posix_spawnattr_getsigmask.c
index f60ad7f..19894c9 100644
--- a/fusl/src/process/posix_spawnattr_getsigmask.c
+++ b/fusl/src/process/posix_spawnattr_getsigmask.c
@@ -1,7 +1,7 @@
 #include <spawn.h>
 
-int posix_spawnattr_getsigmask(const posix_spawnattr_t *restrict attr, sigset_t *restrict mask)
-{
-	*mask = attr->__mask;
-	return 0;
+int posix_spawnattr_getsigmask(const posix_spawnattr_t* restrict attr,
+                               sigset_t* restrict mask) {
+  *mask = attr->__mask;
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawnattr_init.c b/fusl/src/process/posix_spawnattr_init.c
index 0dcd868..cc4a46c 100644
--- a/fusl/src/process/posix_spawnattr_init.c
+++ b/fusl/src/process/posix_spawnattr_init.c
@@ -1,7 +1,6 @@
 #include <spawn.h>
 
-int posix_spawnattr_init(posix_spawnattr_t *attr)
-{
-	*attr = (posix_spawnattr_t){ 0 };
-	return 0;
+int posix_spawnattr_init(posix_spawnattr_t* attr) {
+  *attr = (posix_spawnattr_t){0};
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawnattr_sched.c b/fusl/src/process/posix_spawnattr_sched.c
index 3143635..edf472b 100644
--- a/fusl/src/process/posix_spawnattr_sched.c
+++ b/fusl/src/process/posix_spawnattr_sched.c
@@ -2,24 +2,22 @@
 #include <sched.h>
 #include <errno.h>
 
-int posix_spawnattr_getschedparam(const posix_spawnattr_t *restrict attr,
-	struct sched_param *restrict schedparam)
-{
-	return ENOSYS;
+int posix_spawnattr_getschedparam(const posix_spawnattr_t* restrict attr,
+                                  struct sched_param* restrict schedparam) {
+  return ENOSYS;
 }
 
-int posix_spawnattr_setschedparam(posix_spawnattr_t *restrict attr,
-	const struct sched_param *restrict schedparam)
-{
-	return ENOSYS;
+int posix_spawnattr_setschedparam(posix_spawnattr_t* restrict attr,
+                                  const struct sched_param* restrict
+                                      schedparam) {
+  return ENOSYS;
 }
 
-int posix_spawnattr_getschedpolicy(const posix_spawnattr_t *restrict attr, int *restrict policy)
-{
-	return ENOSYS;
+int posix_spawnattr_getschedpolicy(const posix_spawnattr_t* restrict attr,
+                                   int* restrict policy) {
+  return ENOSYS;
 }
 
-int posix_spawnattr_setschedpolicy(posix_spawnattr_t *attr, int policy)
-{
-	return ENOSYS;
+int posix_spawnattr_setschedpolicy(posix_spawnattr_t* attr, int policy) {
+  return ENOSYS;
 }
diff --git a/fusl/src/process/posix_spawnattr_setflags.c b/fusl/src/process/posix_spawnattr_setflags.c
index f750c04..77d2290 100644
--- a/fusl/src/process/posix_spawnattr_setflags.c
+++ b/fusl/src/process/posix_spawnattr_setflags.c
@@ -1,7 +1,6 @@
 #include <spawn.h>
 
-int posix_spawnattr_setflags(posix_spawnattr_t *attr, short flags)
-{
-	attr->__flags = flags;
-	return 0;
+int posix_spawnattr_setflags(posix_spawnattr_t* attr, short flags) {
+  attr->__flags = flags;
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawnattr_setpgroup.c b/fusl/src/process/posix_spawnattr_setpgroup.c
index f39596a..c619596 100644
--- a/fusl/src/process/posix_spawnattr_setpgroup.c
+++ b/fusl/src/process/posix_spawnattr_setpgroup.c
@@ -1,7 +1,6 @@
 #include <spawn.h>
 
-int posix_spawnattr_setpgroup(posix_spawnattr_t *attr, pid_t pgrp)
-{
-	attr->__pgrp = pgrp;
-	return 0;
+int posix_spawnattr_setpgroup(posix_spawnattr_t* attr, pid_t pgrp) {
+  attr->__pgrp = pgrp;
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawnattr_setsigdefault.c b/fusl/src/process/posix_spawnattr_setsigdefault.c
index 5686972..a5828d3 100644
--- a/fusl/src/process/posix_spawnattr_setsigdefault.c
+++ b/fusl/src/process/posix_spawnattr_setsigdefault.c
@@ -1,7 +1,7 @@
 #include <spawn.h>
 
-int posix_spawnattr_setsigdefault(posix_spawnattr_t *restrict attr, const sigset_t *restrict def)
-{
-	attr->__def = *def;
-	return 0;
+int posix_spawnattr_setsigdefault(posix_spawnattr_t* restrict attr,
+                                  const sigset_t* restrict def) {
+  attr->__def = *def;
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawnattr_setsigmask.c b/fusl/src/process/posix_spawnattr_setsigmask.c
index f2532f8..a49df84 100644
--- a/fusl/src/process/posix_spawnattr_setsigmask.c
+++ b/fusl/src/process/posix_spawnattr_setsigmask.c
@@ -1,7 +1,7 @@
 #include <spawn.h>
 
-int posix_spawnattr_setsigmask(posix_spawnattr_t *restrict attr, const sigset_t *restrict mask)
-{
-	attr->__mask = *mask;
-	return 0;
+int posix_spawnattr_setsigmask(posix_spawnattr_t* restrict attr,
+                               const sigset_t* restrict mask) {
+  attr->__mask = *mask;
+  return 0;
 }
diff --git a/fusl/src/process/posix_spawnp.c b/fusl/src/process/posix_spawnp.c
index 3736000..98f1716 100644
--- a/fusl/src/process/posix_spawnp.c
+++ b/fusl/src/process/posix_spawnp.c
@@ -1,17 +1,21 @@
 #include <spawn.h>
 #include <unistd.h>
 
-int __execvpe(const char *, char *const *, char *const *);
+int __execvpe(const char*, char* const*, char* const*);
 
-int __posix_spawnx(pid_t *restrict, const char *restrict,
-	int (*)(const char *, char *const *, char *const *),
-	const posix_spawn_file_actions_t *,
-	const posix_spawnattr_t *restrict, char *const *restrict, char *const *restrict);
+int __posix_spawnx(pid_t* restrict,
+                   const char* restrict,
+                   int (*)(const char*, char* const*, char* const*),
+                   const posix_spawn_file_actions_t*,
+                   const posix_spawnattr_t* restrict,
+                   char* const* restrict,
+                   char* const* restrict);
 
-int posix_spawnp(pid_t *restrict res, const char *restrict file,
-	const posix_spawn_file_actions_t *fa,
-	const posix_spawnattr_t *restrict attr,
-	char *const argv[restrict], char *const envp[restrict])
-{
-	return __posix_spawnx(res, file, __execvpe, fa, attr, argv, envp);
+int posix_spawnp(pid_t* restrict res,
+                 const char* restrict file,
+                 const posix_spawn_file_actions_t* fa,
+                 const posix_spawnattr_t* restrict attr,
+                 char* const argv[restrict],
+                 char* const envp[restrict]) {
+  return __posix_spawnx(res, file, __execvpe, fa, attr, argv, envp);
 }
diff --git a/fusl/src/process/system.c b/fusl/src/process/system.c
index 8cbdda0..a771203 100644
--- a/fusl/src/process/system.c
+++ b/fusl/src/process/system.c
@@ -7,41 +7,47 @@
 #include "pthread_impl.h"
 #include "libc.h"
 
-extern char **__environ;
+extern char** __environ;
 
-int system(const char *cmd)
-{
-	pid_t pid;
-	sigset_t old, reset;
-	struct sigaction sa = { .sa_handler = SIG_IGN }, oldint, oldquit;
-	int status = 0x7f00, ret;
-	posix_spawnattr_t attr;
+int system(const char* cmd) {
+  pid_t pid;
+  sigset_t old, reset;
+  struct sigaction sa = {.sa_handler = SIG_IGN}, oldint, oldquit;
+  int status = 0x7f00, ret;
+  posix_spawnattr_t attr;
 
-	pthread_testcancel();
+  pthread_testcancel();
 
-	if (!cmd) return 1;
+  if (!cmd)
+    return 1;
 
-	sigaction(SIGINT, &sa, &oldint);
-	sigaction(SIGQUIT, &sa, &oldquit);
-	sigaddset(&sa.sa_mask, SIGCHLD);
-	sigprocmask(SIG_BLOCK, &sa.sa_mask, &old);
+  sigaction(SIGINT, &sa, &oldint);
+  sigaction(SIGQUIT, &sa, &oldquit);
+  sigaddset(&sa.sa_mask, SIGCHLD);
+  sigprocmask(SIG_BLOCK, &sa.sa_mask, &old);
 
-	sigemptyset(&reset);
-	if (oldint.sa_handler != SIG_IGN) sigaddset(&reset, SIGINT);
-	if (oldquit.sa_handler != SIG_IGN) sigaddset(&reset, SIGQUIT);
-	posix_spawnattr_init(&attr);
-	posix_spawnattr_setsigmask(&attr, &old);
-	posix_spawnattr_setsigdefault(&attr, &reset);
-	posix_spawnattr_setflags(&attr, POSIX_SPAWN_SETSIGDEF|POSIX_SPAWN_SETSIGMASK);
-	ret = posix_spawn(&pid, "/bin/sh", 0, &attr,
-		(char *[]){"sh", "-c", (char *)cmd, 0}, __environ);
-	posix_spawnattr_destroy(&attr);
+  sigemptyset(&reset);
+  if (oldint.sa_handler != SIG_IGN)
+    sigaddset(&reset, SIGINT);
+  if (oldquit.sa_handler != SIG_IGN)
+    sigaddset(&reset, SIGQUIT);
+  posix_spawnattr_init(&attr);
+  posix_spawnattr_setsigmask(&attr, &old);
+  posix_spawnattr_setsigdefault(&attr, &reset);
+  posix_spawnattr_setflags(&attr,
+                           POSIX_SPAWN_SETSIGDEF | POSIX_SPAWN_SETSIGMASK);
+  ret = posix_spawn(&pid, "/bin/sh", 0, &attr,
+                    (char* []){"sh", "-c", (char*)cmd, 0}, __environ);
+  posix_spawnattr_destroy(&attr);
 
-	if (!ret) while (waitpid(pid, &status, 0)<0 && errno == EINTR);
-	sigaction(SIGINT, &oldint, NULL);
-	sigaction(SIGQUIT, &oldquit, NULL);
-	sigprocmask(SIG_SETMASK, &old, NULL);
+  if (!ret)
+    while (waitpid(pid, &status, 0) < 0 && errno == EINTR)
+      ;
+  sigaction(SIGINT, &oldint, NULL);
+  sigaction(SIGQUIT, &oldquit, NULL);
+  sigprocmask(SIG_SETMASK, &old, NULL);
 
-	if (ret) errno = ret;
-	return status;
+  if (ret)
+    errno = ret;
+  return status;
 }
diff --git a/fusl/src/process/vfork.c b/fusl/src/process/vfork.c
index ac95465..e301394 100644
--- a/fusl/src/process/vfork.c
+++ b/fusl/src/process/vfork.c
@@ -4,13 +4,12 @@
 #include "syscall.h"
 #include "libc.h"
 
-pid_t __vfork(void)
-{
-	/* vfork syscall cannot be made from C code */
+pid_t __vfork(void) {
+/* vfork syscall cannot be made from C code */
 #ifdef SYS_fork
-	return syscall(SYS_fork);
+  return syscall(SYS_fork);
 #else
-	return syscall(SYS_clone, SIGCHLD, 0);
+  return syscall(SYS_clone, SIGCHLD, 0);
 #endif
 }
 
diff --git a/fusl/src/process/wait.c b/fusl/src/process/wait.c
index 34da102..54c2a65 100644
--- a/fusl/src/process/wait.c
+++ b/fusl/src/process/wait.c
@@ -1,6 +1,5 @@
 #include <sys/wait.h>
 
-pid_t wait(int *status)
-{
-	return waitpid((pid_t)-1, status, 0);
+pid_t wait(int* status) {
+  return waitpid((pid_t)-1, status, 0);
 }
diff --git a/fusl/src/process/waitid.c b/fusl/src/process/waitid.c
index c67feac..b30340a 100644
--- a/fusl/src/process/waitid.c
+++ b/fusl/src/process/waitid.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int waitid(idtype_t type, id_t id, siginfo_t *info, int options)
-{
-	return syscall_cp(SYS_waitid, type, id, info, options, 0);
+int waitid(idtype_t type, id_t id, siginfo_t* info, int options) {
+  return syscall_cp(SYS_waitid, type, id, info, options, 0);
 }
diff --git a/fusl/src/process/waitpid.c b/fusl/src/process/waitpid.c
index f75e31e..6231bf2 100644
--- a/fusl/src/process/waitpid.c
+++ b/fusl/src/process/waitpid.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-pid_t waitpid(pid_t pid, int *status, int options)
-{
-	return syscall_cp(SYS_wait4, pid, status, options, 0);
+pid_t waitpid(pid_t pid, int* status, int options) {
+  return syscall_cp(SYS_wait4, pid, status, options, 0);
 }
diff --git a/fusl/src/regex/fnmatch.c b/fusl/src/regex/fnmatch.c
index 978fff8..98fc605 100644
--- a/fusl/src/regex/fnmatch.c
+++ b/fusl/src/regex/fnmatch.c
@@ -26,296 +26,323 @@
 #define QUESTION -4
 #define STAR -5
 
-static int str_next(const char *str, size_t n, size_t *step)
-{
-	if (!n) {
-		*step = 0;
-		return 0;
-	}
-	if (str[0] >= 128U) {
-		wchar_t wc;
-		int k = mbtowc(&wc, str, n);
-		if (k<0) {
-			*step = 1;
-			return -1;
-		}
-		*step = k;
-		return wc;
-	}
-	*step = 1;
-	return str[0];
+static int str_next(const char* str, size_t n, size_t* step) {
+  if (!n) {
+    *step = 0;
+    return 0;
+  }
+  if (str[0] >= 128U) {
+    wchar_t wc;
+    int k = mbtowc(&wc, str, n);
+    if (k < 0) {
+      *step = 1;
+      return -1;
+    }
+    *step = k;
+    return wc;
+  }
+  *step = 1;
+  return str[0];
 }
 
-static int pat_next(const char *pat, size_t m, size_t *step, int flags)
-{
-	int esc = 0;
-	if (!m || !*pat) {
-		*step = 0;
-		return END;
-	}
-	*step = 1;
-	if (pat[0]=='\\' && pat[1] && !(flags & FNM_NOESCAPE)) {
-		*step = 2;
-		pat++;
-		esc = 1;
-		goto escaped;
-	}
-	if (pat[0]=='[') {
-		size_t k = 1;
-		if (k<m) if (pat[k] == '^' || pat[k] == '!') k++;
-		if (k<m) if (pat[k] == ']') k++;
-		for (; k<m && pat[k] && pat[k]!=']'; k++) {
-			if (k+1<m && pat[k+1] && pat[k]=='[' && (pat[k+1]==':' || pat[k+1]=='.' || pat[k+1]=='=')) {
-				int z = pat[k+1];
-				k+=2;
-				if (k<m && pat[k]) k++;
-				while (k<m && pat[k] && (pat[k-1]!=z || pat[k]!=']')) k++;
-				if (k==m || !pat[k]) break;
-			}
-		}
-		if (k==m || !pat[k]) {
-			*step = 1;
-			return '[';
-		}
-		*step = k+1;
-		return BRACKET;
-	}
-	if (pat[0] == '*')
-		return STAR;
-	if (pat[0] == '?')
-		return QUESTION;
+static int pat_next(const char* pat, size_t m, size_t* step, int flags) {
+  int esc = 0;
+  if (!m || !*pat) {
+    *step = 0;
+    return END;
+  }
+  *step = 1;
+  if (pat[0] == '\\' && pat[1] && !(flags & FNM_NOESCAPE)) {
+    *step = 2;
+    pat++;
+    esc = 1;
+    goto escaped;
+  }
+  if (pat[0] == '[') {
+    size_t k = 1;
+    if (k < m)
+      if (pat[k] == '^' || pat[k] == '!')
+        k++;
+    if (k < m)
+      if (pat[k] == ']')
+        k++;
+    for (; k < m && pat[k] && pat[k] != ']'; k++) {
+      if (k + 1 < m && pat[k + 1] && pat[k] == '[' &&
+          (pat[k + 1] == ':' || pat[k + 1] == '.' || pat[k + 1] == '=')) {
+        int z = pat[k + 1];
+        k += 2;
+        if (k < m && pat[k])
+          k++;
+        while (k < m && pat[k] && (pat[k - 1] != z || pat[k] != ']'))
+          k++;
+        if (k == m || !pat[k])
+          break;
+      }
+    }
+    if (k == m || !pat[k]) {
+      *step = 1;
+      return '[';
+    }
+    *step = k + 1;
+    return BRACKET;
+  }
+  if (pat[0] == '*')
+    return STAR;
+  if (pat[0] == '?')
+    return QUESTION;
 escaped:
-	if (pat[0] >= 128U) {
-		wchar_t wc;
-		int k = mbtowc(&wc, pat, m);
-		if (k<0) {
-			*step = 0;
-			return UNMATCHABLE;
-		}
-		*step = k + esc;
-		return wc;
-	}
-	return pat[0];
+  if (pat[0] >= 128U) {
+    wchar_t wc;
+    int k = mbtowc(&wc, pat, m);
+    if (k < 0) {
+      *step = 0;
+      return UNMATCHABLE;
+    }
+    *step = k + esc;
+    return wc;
+  }
+  return pat[0];
 }
 
-static int casefold(int k)
-{
-	int c = towupper(k);
-	return c == k ? towlower(k) : c;
+static int casefold(int k) {
+  int c = towupper(k);
+  return c == k ? towlower(k) : c;
 }
 
-static int match_bracket(const char *p, int k, int kfold)
-{
-	wchar_t wc;
-	int inv = 0;
-	p++;
-	if (*p=='^' || *p=='!') {
-		inv = 1;
-		p++;
-	}
-	if (*p==']') {
-		if (k==']') return !inv;
-		p++;
-	} else if (*p=='-') {
-		if (k=='-') return !inv;
-		p++;
-	}
-	wc = p[-1];
-	for (; *p != ']'; p++) {
-		if (p[0]=='-' && p[1]!=']') {
-			wchar_t wc2;
-			int l = mbtowc(&wc2, p+1, 4);
-			if (l < 0) return 0;
-			if (wc <= wc2)
-				if ((unsigned)k-wc <= wc2-wc ||
-				    (unsigned)kfold-wc <= wc2-wc)
-					return !inv;
-			p += l-1;
-			continue;
-		}
-		if (p[0]=='[' && (p[1]==':' || p[1]=='.' || p[1]=='=')) {
-			const char *p0 = p+2;
-			int z = p[1];
-			p+=3;
-			while (p[-1]!=z || p[0]!=']') p++;
-			if (z == ':' && p-1-p0 < 16) {
-				char buf[16];
-				memcpy(buf, p0, p-1-p0);
-				buf[p-1-p0] = 0;
-				if (iswctype(k, wctype(buf)) ||
-				    iswctype(kfold, wctype(buf)))
-					return !inv;
-			}
-			continue;
-		}
-		if (*p < 128U) {
-			wc = (unsigned char)*p;
-		} else {
-			int l = mbtowc(&wc, p, 4);
-			if (l < 0) return 0;
-			p += l-1;
-		}
-		if (wc==k || wc==kfold) return !inv;
-	}
-	return inv;
+static int match_bracket(const char* p, int k, int kfold) {
+  wchar_t wc;
+  int inv = 0;
+  p++;
+  if (*p == '^' || *p == '!') {
+    inv = 1;
+    p++;
+  }
+  if (*p == ']') {
+    if (k == ']')
+      return !inv;
+    p++;
+  } else if (*p == '-') {
+    if (k == '-')
+      return !inv;
+    p++;
+  }
+  wc = p[-1];
+  for (; *p != ']'; p++) {
+    if (p[0] == '-' && p[1] != ']') {
+      wchar_t wc2;
+      int l = mbtowc(&wc2, p + 1, 4);
+      if (l < 0)
+        return 0;
+      if (wc <= wc2)
+        if ((unsigned)k - wc <= wc2 - wc || (unsigned)kfold - wc <= wc2 - wc)
+          return !inv;
+      p += l - 1;
+      continue;
+    }
+    if (p[0] == '[' && (p[1] == ':' || p[1] == '.' || p[1] == '=')) {
+      const char* p0 = p + 2;
+      int z = p[1];
+      p += 3;
+      while (p[-1] != z || p[0] != ']')
+        p++;
+      if (z == ':' && p - 1 - p0 < 16) {
+        char buf[16];
+        memcpy(buf, p0, p - 1 - p0);
+        buf[p - 1 - p0] = 0;
+        if (iswctype(k, wctype(buf)) || iswctype(kfold, wctype(buf)))
+          return !inv;
+      }
+      continue;
+    }
+    if (*p < 128U) {
+      wc = (unsigned char)*p;
+    } else {
+      int l = mbtowc(&wc, p, 4);
+      if (l < 0)
+        return 0;
+      p += l - 1;
+    }
+    if (wc == k || wc == kfold)
+      return !inv;
+  }
+  return inv;
 }
 
-static int fnmatch_internal(const char *pat, size_t m, const char *str, size_t n, int flags)
-{
-	const char *p, *ptail, *endpat;
-	const char *s, *stail, *endstr;
-	size_t pinc, sinc, tailcnt=0;
-	int c, k, kfold;
+static int fnmatch_internal(const char* pat,
+                            size_t m,
+                            const char* str,
+                            size_t n,
+                            int flags) {
+  const char *p, *ptail, *endpat;
+  const char *s, *stail, *endstr;
+  size_t pinc, sinc, tailcnt = 0;
+  int c, k, kfold;
 
-	if (flags & FNM_PERIOD) {
-		if (*str == '.' && *pat != '.')
-			return FNM_NOMATCH;
-	}
-	for (;;) {
-		switch ((c = pat_next(pat, m, &pinc, flags))) {
-		case UNMATCHABLE:
-			return FNM_NOMATCH;
-		case STAR:
-			pat++;
-			m--;
-			break;
-		default:
-			k = str_next(str, n, &sinc);
-			if (k <= 0)
-				return (c==END) ? 0 : FNM_NOMATCH;
-			str += sinc;
-			n -= sinc;
-			kfold = flags & FNM_CASEFOLD ? casefold(k) : k;
-			if (c == BRACKET) {
-				if (!match_bracket(pat, k, kfold))
-					return FNM_NOMATCH;
-			} else if (c != QUESTION && k != c && kfold != c) {
-				return FNM_NOMATCH;
-			}
-			pat+=pinc;
-			m-=pinc;
-			continue;
-		}
-		break;
-	}
+  if (flags & FNM_PERIOD) {
+    if (*str == '.' && *pat != '.')
+      return FNM_NOMATCH;
+  }
+  for (;;) {
+    switch ((c = pat_next(pat, m, &pinc, flags))) {
+      case UNMATCHABLE:
+        return FNM_NOMATCH;
+      case STAR:
+        pat++;
+        m--;
+        break;
+      default:
+        k = str_next(str, n, &sinc);
+        if (k <= 0)
+          return (c == END) ? 0 : FNM_NOMATCH;
+        str += sinc;
+        n -= sinc;
+        kfold = flags & FNM_CASEFOLD ? casefold(k) : k;
+        if (c == BRACKET) {
+          if (!match_bracket(pat, k, kfold))
+            return FNM_NOMATCH;
+        } else if (c != QUESTION && k != c && kfold != c) {
+          return FNM_NOMATCH;
+        }
+        pat += pinc;
+        m -= pinc;
+        continue;
+    }
+    break;
+  }
 
-	/* Compute real pat length if it was initially unknown/-1 */
-	m = strnlen(pat, m);
-	endpat = pat + m;
+  /* Compute real pat length if it was initially unknown/-1 */
+  m = strnlen(pat, m);
+  endpat = pat + m;
 
-	/* Find the last * in pat and count chars needed after it */
-	for (p=ptail=pat; p<endpat; p+=pinc) {
-		switch (pat_next(p, endpat-p, &pinc, flags)) {
-		case UNMATCHABLE:
-			return FNM_NOMATCH;
-		case STAR:
-			tailcnt=0;
-			ptail = p+1;
-			break;
-		default:
-			tailcnt++;
-			break;
-		}
-	}
+  /* Find the last * in pat and count chars needed after it */
+  for (p = ptail = pat; p < endpat; p += pinc) {
+    switch (pat_next(p, endpat - p, &pinc, flags)) {
+      case UNMATCHABLE:
+        return FNM_NOMATCH;
+      case STAR:
+        tailcnt = 0;
+        ptail = p + 1;
+        break;
+      default:
+        tailcnt++;
+        break;
+    }
+  }
 
-	/* Past this point we need not check for UNMATCHABLE in pat,
-	 * because all of pat has already been parsed once. */
+  /* Past this point we need not check for UNMATCHABLE in pat,
+   * because all of pat has already been parsed once. */
 
-	/* Compute real str length if it was initially unknown/-1 */
-	n = strnlen(str, n);
-	endstr = str + n;
-	if (n < tailcnt) return FNM_NOMATCH;
+  /* Compute real str length if it was initially unknown/-1 */
+  n = strnlen(str, n);
+  endstr = str + n;
+  if (n < tailcnt)
+    return FNM_NOMATCH;
 
-	/* Find the final tailcnt chars of str, accounting for UTF-8.
-	 * On illegal sequences we may get it wrong, but in that case
-	 * we necessarily have a matching failure anyway. */
-	for (s=endstr; s>str && tailcnt; tailcnt--) {
-		if (s[-1] < 128U || MB_CUR_MAX==1) s--;
-		else while ((unsigned char)*--s-0x80U<0x40 && s>str);
-	}
-	if (tailcnt) return FNM_NOMATCH;
-	stail = s;
+  /* Find the final tailcnt chars of str, accounting for UTF-8.
+   * On illegal sequences we may get it wrong, but in that case
+   * we necessarily have a matching failure anyway. */
+  for (s = endstr; s > str && tailcnt; tailcnt--) {
+    if (s[-1] < 128U || MB_CUR_MAX == 1)
+      s--;
+    else
+      while ((unsigned char)*--s - 0x80U < 0x40 && s > str)
+        ;
+  }
+  if (tailcnt)
+    return FNM_NOMATCH;
+  stail = s;
 
-	/* Check that the pat and str tails match */
-	p = ptail;
-	for (;;) {
-		c = pat_next(p, endpat-p, &pinc, flags);
-		p += pinc;
-		if ((k = str_next(s, endstr-s, &sinc)) <= 0) {
-			if (c != END) return FNM_NOMATCH;
-			break;
-		}
-		s += sinc;
-		kfold = flags & FNM_CASEFOLD ? casefold(k) : k;
-		if (c == BRACKET) {
-			if (!match_bracket(p-pinc, k, kfold))
-				return FNM_NOMATCH;
-		} else if (c != QUESTION && k != c && kfold != c) {
-			return FNM_NOMATCH;
-		}
-	}
+  /* Check that the pat and str tails match */
+  p = ptail;
+  for (;;) {
+    c = pat_next(p, endpat - p, &pinc, flags);
+    p += pinc;
+    if ((k = str_next(s, endstr - s, &sinc)) <= 0) {
+      if (c != END)
+        return FNM_NOMATCH;
+      break;
+    }
+    s += sinc;
+    kfold = flags & FNM_CASEFOLD ? casefold(k) : k;
+    if (c == BRACKET) {
+      if (!match_bracket(p - pinc, k, kfold))
+        return FNM_NOMATCH;
+    } else if (c != QUESTION && k != c && kfold != c) {
+      return FNM_NOMATCH;
+    }
+  }
 
-	/* We're all done with the tails now, so throw them out */
-	endstr = stail;
-	endpat = ptail;
+  /* We're all done with the tails now, so throw them out */
+  endstr = stail;
+  endpat = ptail;
 
-	/* Match pattern components until there are none left */
-	while (pat<endpat) {
-		p = pat;
-		s = str;
-		for (;;) {
-			c = pat_next(p, endpat-p, &pinc, flags);
-			p += pinc;
-			/* Encountering * completes/commits a component */
-			if (c == STAR) {
-				pat = p;
-				str = s;
-				break;
-			}
-			k = str_next(s, endstr-s, &sinc);
-			if (!k)
-				return FNM_NOMATCH;
-			kfold = flags & FNM_CASEFOLD ? casefold(k) : k;
-			if (c == BRACKET) {
-				if (!match_bracket(p-pinc, k, kfold))
-					break;
-			} else if (c != QUESTION && k != c && kfold != c) {
-				break;
-			}
-			s += sinc;
-		}
-		if (c == STAR) continue;
-		/* If we failed, advance str, by 1 char if it's a valid
-		 * char, or past all invalid bytes otherwise. */
-		k = str_next(str, endstr-str, &sinc);
-		if (k > 0) str += sinc;
-		else for (str++; str_next(str, endstr-str, &sinc)<0; str++);
-	}
+  /* Match pattern components until there are none left */
+  while (pat < endpat) {
+    p = pat;
+    s = str;
+    for (;;) {
+      c = pat_next(p, endpat - p, &pinc, flags);
+      p += pinc;
+      /* Encountering * completes/commits a component */
+      if (c == STAR) {
+        pat = p;
+        str = s;
+        break;
+      }
+      k = str_next(s, endstr - s, &sinc);
+      if (!k)
+        return FNM_NOMATCH;
+      kfold = flags & FNM_CASEFOLD ? casefold(k) : k;
+      if (c == BRACKET) {
+        if (!match_bracket(p - pinc, k, kfold))
+          break;
+      } else if (c != QUESTION && k != c && kfold != c) {
+        break;
+      }
+      s += sinc;
+    }
+    if (c == STAR)
+      continue;
+    /* If we failed, advance str, by 1 char if it's a valid
+     * char, or past all invalid bytes otherwise. */
+    k = str_next(str, endstr - str, &sinc);
+    if (k > 0)
+      str += sinc;
+    else
+      for (str++; str_next(str, endstr - str, &sinc) < 0; str++)
+        ;
+  }
 
-	return 0;
+  return 0;
 }
 
-int fnmatch(const char *pat, const char *str, int flags)
-{
-	const char *s, *p;
-	size_t inc;
-	int c;
-	if (flags & FNM_PATHNAME) for (;;) {
-		for (s=str; *s && *s!='/'; s++);
-		for (p=pat; (c=pat_next(p, -1, &inc, flags))!=END && c!='/'; p+=inc);
-		if (c!=*s && (!*s || !(flags & FNM_LEADING_DIR)))
-			return FNM_NOMATCH;
-		if (fnmatch_internal(pat, p-pat, str, s-str, flags))
-			return FNM_NOMATCH;
-		if (!c) return 0;
-		str = s+1;
-		pat = p+inc;
-	} else if (flags & FNM_LEADING_DIR) {
-		for (s=str; *s; s++) {
-			if (*s != '/') continue;
-			if (!fnmatch_internal(pat, -1, str, s-str, flags))
-				return 0;
-		}
-	}
-	return fnmatch_internal(pat, -1, str, -1, flags);
+int fnmatch(const char* pat, const char* str, int flags) {
+  const char *s, *p;
+  size_t inc;
+  int c;
+  if (flags & FNM_PATHNAME)
+    for (;;) {
+      for (s = str; *s && *s != '/'; s++)
+        ;
+      for (p = pat; (c = pat_next(p, -1, &inc, flags)) != END && c != '/';
+           p += inc)
+        ;
+      if (c != *s && (!*s || !(flags & FNM_LEADING_DIR)))
+        return FNM_NOMATCH;
+      if (fnmatch_internal(pat, p - pat, str, s - str, flags))
+        return FNM_NOMATCH;
+      if (!c)
+        return 0;
+      str = s + 1;
+      pat = p + inc;
+    }
+  else if (flags & FNM_LEADING_DIR) {
+    for (s = str; *s; s++) {
+      if (*s != '/')
+        continue;
+      if (!fnmatch_internal(pat, -1, str, s - str, flags))
+        return 0;
+    }
+  }
+  return fnmatch_internal(pat, -1, str, -1, flags);
 }
diff --git a/fusl/src/regex/glob.c b/fusl/src/regex/glob.c
index 6affee0..5641021 100644
--- a/fusl/src/regex/glob.c
+++ b/fusl/src/regex/glob.c
@@ -9,229 +9,241 @@
 #include <stddef.h>
 #include "libc.h"
 
-struct match
-{
-	struct match *next;
-	char name[1];
+struct match {
+  struct match* next;
+  char name[1];
 };
 
-static int is_literal(const char *p, int useesc)
-{
-	int bracket = 0;
-	for (; *p; p++) {
-		switch (*p) {
-		case '\\':
-			if (!useesc) break;
-		case '?':
-		case '*':
-			return 0;
-		case '[':
-			bracket = 1;
-			break;
-		case ']':
-			if (bracket) return 0;
-			break;
-		}
-	}
-	return 1;
+static int is_literal(const char* p, int useesc) {
+  int bracket = 0;
+  for (; *p; p++) {
+    switch (*p) {
+      case '\\':
+        if (!useesc)
+          break;
+      case '?':
+      case '*':
+        return 0;
+      case '[':
+        bracket = 1;
+        break;
+      case ']':
+        if (bracket)
+          return 0;
+        break;
+    }
+  }
+  return 1;
 }
 
-static int append(struct match **tail, const char *name, size_t len, int mark)
-{
-	struct match *new = malloc(sizeof(struct match) + len + 1);
-	if (!new) return -1;
-	(*tail)->next = new;
-	new->next = NULL;
-	strcpy(new->name, name);
-	if (mark) strcat(new->name, "/");
-	*tail = new;
-	return 0;
+static int append(struct match** tail, const char* name, size_t len, int mark) {
+  struct match* new = malloc(sizeof(struct match) + len + 1);
+  if (!new)
+    return -1;
+  (*tail)->next = new;
+  new->next = NULL;
+  strcpy(new->name, name);
+  if (mark)
+    strcat(new->name, "/");
+  *tail = new;
+  return 0;
 }
 
-static int match_in_dir(const char *d, const char *p, int flags, int (*errfunc)(const char *path, int err), struct match **tail)
-{
-	DIR *dir;
-	struct dirent de_buf, *de;
-	char pat[strlen(p)+1];
-	char *p2;
-	size_t l = strlen(d);
-	int literal;
-	int fnm_flags= ((flags & GLOB_NOESCAPE) ? FNM_NOESCAPE : 0)
-		| ((!(flags & GLOB_PERIOD)) ? FNM_PERIOD : 0);
-	int error;
+static int match_in_dir(const char* d,
+                        const char* p,
+                        int flags,
+                        int (*errfunc)(const char* path, int err),
+                        struct match** tail) {
+  DIR* dir;
+  struct dirent de_buf, *de;
+  char pat[strlen(p) + 1];
+  char* p2;
+  size_t l = strlen(d);
+  int literal;
+  int fnm_flags = ((flags & GLOB_NOESCAPE) ? FNM_NOESCAPE : 0) |
+                  ((!(flags & GLOB_PERIOD)) ? FNM_PERIOD : 0);
+  int error;
 
-	if ((p2 = strchr(p, '/'))) {
-		strcpy(pat, p);
-		pat[p2-p] = 0;
-		for (; *p2 == '/'; p2++);
-		p = pat;
-	}
-	literal = is_literal(p, !(flags & GLOB_NOESCAPE));
-	if (*d == '/' && !*(d+1)) l = 0;
+  if ((p2 = strchr(p, '/'))) {
+    strcpy(pat, p);
+    pat[p2 - p] = 0;
+    for (; *p2 == '/'; p2++)
+      ;
+    p = pat;
+  }
+  literal = is_literal(p, !(flags & GLOB_NOESCAPE));
+  if (*d == '/' && !*(d + 1))
+    l = 0;
 
-	/* rely on opendir failing for nondirectory objects */
-	dir = opendir(*d ? d : ".");
-	error = errno;
-	if (!dir) {
-		/* this is not an error -- we let opendir call stat for us */
-		if (error == ENOTDIR) return 0;
-		if (error == EACCES && !*p) {
-			struct stat st;
-			if (!stat(d, &st) && S_ISDIR(st.st_mode)) {
-				if (append(tail, d, l, l))
-					return GLOB_NOSPACE;
-				return 0;
-			}
-		}
-		if (errfunc(d, error) || (flags & GLOB_ERR))
-			return GLOB_ABORTED;
-		return 0;
-	}
-	if (!*p) {
-		error = append(tail, d, l, l) ? GLOB_NOSPACE : 0;
-		closedir(dir);
-		return error;
-	}
-	while (!(error = readdir_r(dir, &de_buf, &de)) && de) {
-		char namebuf[l+de->d_reclen+2], *name = namebuf;
-		if (!literal && fnmatch(p, de->d_name, fnm_flags))
-			continue;
-		if (literal && strcmp(p, de->d_name))
-			continue;
-		if (p2 && de->d_type && !S_ISDIR(de->d_type<<12) && !S_ISLNK(de->d_type<<12))
-			continue;
-		if (*d) {
-			memcpy(name, d, l);
-			name[l] = '/';
-			strcpy(name+l+1, de->d_name);
-		} else {
-			name = de->d_name;
-		}
-		if (p2) {
-			if ((error = match_in_dir(name, p2, flags, errfunc, tail))) {
-				closedir(dir);
-				return error;
-			}
-		} else {
-			int mark = 0;
-			if (flags & GLOB_MARK) {
-				if (de->d_type && !S_ISLNK(de->d_type<<12))
-					mark = S_ISDIR(de->d_type<<12);
-				else {
-					struct stat st;
-					stat(name, &st);
-					mark = S_ISDIR(st.st_mode);
-				}
-			}
-			if (append(tail, name, l+de->d_reclen+1, mark)) {
-				closedir(dir);
-				return GLOB_NOSPACE;
-			}
-		}
-	}
-	closedir(dir);
-	if (error && (errfunc(d, error) || (flags & GLOB_ERR)))
-		return GLOB_ABORTED;
-	return 0;
+  /* rely on opendir failing for nondirectory objects */
+  dir = opendir(*d ? d : ".");
+  error = errno;
+  if (!dir) {
+    /* this is not an error -- we let opendir call stat for us */
+    if (error == ENOTDIR)
+      return 0;
+    if (error == EACCES && !*p) {
+      struct stat st;
+      if (!stat(d, &st) && S_ISDIR(st.st_mode)) {
+        if (append(tail, d, l, l))
+          return GLOB_NOSPACE;
+        return 0;
+      }
+    }
+    if (errfunc(d, error) || (flags & GLOB_ERR))
+      return GLOB_ABORTED;
+    return 0;
+  }
+  if (!*p) {
+    error = append(tail, d, l, l) ? GLOB_NOSPACE : 0;
+    closedir(dir);
+    return error;
+  }
+  while (!(error = readdir_r(dir, &de_buf, &de)) && de) {
+    char namebuf[l + de->d_reclen + 2], *name = namebuf;
+    if (!literal && fnmatch(p, de->d_name, fnm_flags))
+      continue;
+    if (literal && strcmp(p, de->d_name))
+      continue;
+    if (p2 && de->d_type && !S_ISDIR(de->d_type << 12) &&
+        !S_ISLNK(de->d_type << 12))
+      continue;
+    if (*d) {
+      memcpy(name, d, l);
+      name[l] = '/';
+      strcpy(name + l + 1, de->d_name);
+    } else {
+      name = de->d_name;
+    }
+    if (p2) {
+      if ((error = match_in_dir(name, p2, flags, errfunc, tail))) {
+        closedir(dir);
+        return error;
+      }
+    } else {
+      int mark = 0;
+      if (flags & GLOB_MARK) {
+        if (de->d_type && !S_ISLNK(de->d_type << 12))
+          mark = S_ISDIR(de->d_type << 12);
+        else {
+          struct stat st;
+          stat(name, &st);
+          mark = S_ISDIR(st.st_mode);
+        }
+      }
+      if (append(tail, name, l + de->d_reclen + 1, mark)) {
+        closedir(dir);
+        return GLOB_NOSPACE;
+      }
+    }
+  }
+  closedir(dir);
+  if (error && (errfunc(d, error) || (flags & GLOB_ERR)))
+    return GLOB_ABORTED;
+  return 0;
 }
 
-static int ignore_err(const char *path, int err)
-{
-	return 0;
+static int ignore_err(const char* path, int err) {
+  return 0;
 }
 
-static void freelist(struct match *head)
-{
-	struct match *match, *next;
-	for (match=head->next; match; match=next) {
-		next = match->next;
-		free(match);
-	}
+static void freelist(struct match* head) {
+  struct match *match, *next;
+  for (match = head->next; match; match = next) {
+    next = match->next;
+    free(match);
+  }
 }
 
-static int sort(const void *a, const void *b)
-{
-	return strcmp(*(const char **)a, *(const char **)b);
+static int sort(const void* a, const void* b) {
+  return strcmp(*(const char**)a, *(const char**)b);
 }
 
-int glob(const char *restrict pat, int flags, int (*errfunc)(const char *path, int err), glob_t *restrict g)
-{
-	const char *p=pat, *d;
-	struct match head = { .next = NULL }, *tail = &head;
-	size_t cnt, i;
-	size_t offs = (flags & GLOB_DOOFFS) ? g->gl_offs : 0;
-	int error = 0;
-	
-	if (*p == '/') {
-		for (; *p == '/'; p++);
-		d = "/";
-	} else {
-		d = "";
-	}
+int glob(const char* restrict pat,
+         int flags,
+         int (*errfunc)(const char* path, int err),
+         glob_t* restrict g) {
+  const char *p = pat, *d;
+  struct match head = {.next = NULL}, *tail = &head;
+  size_t cnt, i;
+  size_t offs = (flags & GLOB_DOOFFS) ? g->gl_offs : 0;
+  int error = 0;
 
-	if (strlen(p) > PATH_MAX) return GLOB_NOSPACE;
+  if (*p == '/') {
+    for (; *p == '/'; p++)
+      ;
+    d = "/";
+  } else {
+    d = "";
+  }
 
-	if (!errfunc) errfunc = ignore_err;
+  if (strlen(p) > PATH_MAX)
+    return GLOB_NOSPACE;
 
-	if (!(flags & GLOB_APPEND)) {
-		g->gl_offs = offs;
-		g->gl_pathc = 0;
-		g->gl_pathv = NULL;
-	}
+  if (!errfunc)
+    errfunc = ignore_err;
 
-	if (*p) error = match_in_dir(d, p, flags, errfunc, &tail);
-	if (error == GLOB_NOSPACE) {
-		freelist(&head);
-		return error;
-	}
-	
-	for (cnt=0, tail=head.next; tail; tail=tail->next, cnt++);
-	if (!cnt) {
-		if (flags & GLOB_NOCHECK) {
-			tail = &head;
-			if (append(&tail, pat, strlen(pat), 0))
-				return GLOB_NOSPACE;
-			cnt++;
-		} else
-			return GLOB_NOMATCH;
-	}
+  if (!(flags & GLOB_APPEND)) {
+    g->gl_offs = offs;
+    g->gl_pathc = 0;
+    g->gl_pathv = NULL;
+  }
 
-	if (flags & GLOB_APPEND) {
-		char **pathv = realloc(g->gl_pathv, (offs + g->gl_pathc + cnt + 1) * sizeof(char *));
-		if (!pathv) {
-			freelist(&head);
-			return GLOB_NOSPACE;
-		}
-		g->gl_pathv = pathv;
-		offs += g->gl_pathc;
-	} else {
-		g->gl_pathv = malloc((offs + cnt + 1) * sizeof(char *));
-		if (!g->gl_pathv) {
-			freelist(&head);
-			return GLOB_NOSPACE;
-		}
-		for (i=0; i<offs; i++)
-			g->gl_pathv[i] = NULL;
-	}
-	for (i=0, tail=head.next; i<cnt; tail=tail->next, i++)
-		g->gl_pathv[offs + i] = tail->name;
-	g->gl_pathv[offs + i] = NULL;
-	g->gl_pathc += cnt;
+  if (*p)
+    error = match_in_dir(d, p, flags, errfunc, &tail);
+  if (error == GLOB_NOSPACE) {
+    freelist(&head);
+    return error;
+  }
 
-	if (!(flags & GLOB_NOSORT))
-		qsort(g->gl_pathv+offs, cnt, sizeof(char *), sort);
-	
-	return error;
+  for (cnt = 0, tail = head.next; tail; tail = tail->next, cnt++)
+    ;
+  if (!cnt) {
+    if (flags & GLOB_NOCHECK) {
+      tail = &head;
+      if (append(&tail, pat, strlen(pat), 0))
+        return GLOB_NOSPACE;
+      cnt++;
+    } else
+      return GLOB_NOMATCH;
+  }
+
+  if (flags & GLOB_APPEND) {
+    char** pathv =
+        realloc(g->gl_pathv, (offs + g->gl_pathc + cnt + 1) * sizeof(char*));
+    if (!pathv) {
+      freelist(&head);
+      return GLOB_NOSPACE;
+    }
+    g->gl_pathv = pathv;
+    offs += g->gl_pathc;
+  } else {
+    g->gl_pathv = malloc((offs + cnt + 1) * sizeof(char*));
+    if (!g->gl_pathv) {
+      freelist(&head);
+      return GLOB_NOSPACE;
+    }
+    for (i = 0; i < offs; i++)
+      g->gl_pathv[i] = NULL;
+  }
+  for (i = 0, tail = head.next; i < cnt; tail = tail->next, i++)
+    g->gl_pathv[offs + i] = tail->name;
+  g->gl_pathv[offs + i] = NULL;
+  g->gl_pathc += cnt;
+
+  if (!(flags & GLOB_NOSORT))
+    qsort(g->gl_pathv + offs, cnt, sizeof(char*), sort);
+
+  return error;
 }
 
-void globfree(glob_t *g)
-{
-	size_t i;
-	for (i=0; i<g->gl_pathc; i++)
-		free(g->gl_pathv[g->gl_offs + i] - offsetof(struct match, name));
-	free(g->gl_pathv);
-	g->gl_pathc = 0;
-	g->gl_pathv = NULL;
+void globfree(glob_t* g) {
+  size_t i;
+  for (i = 0; i < g->gl_pathc; i++)
+    free(g->gl_pathv[g->gl_offs + i] - offsetof(struct match, name));
+  free(g->gl_pathv);
+  g->gl_pathc = 0;
+  g->gl_pathv = NULL;
 }
 
 LFS64(glob);
diff --git a/fusl/src/regex/regcomp.c b/fusl/src/regex/regcomp.c
index da6abd1..0e1255f 100644
--- a/fusl/src/regex/regcomp.c
+++ b/fusl/src/regex/regcomp.c
@@ -48,53 +48,45 @@
   int position;
   int code_min;
   int code_max;
-  int *tags;
+  int* tags;
   int assertions;
   tre_ctype_t class;
-  tre_ctype_t *neg_classes;
+  tre_ctype_t* neg_classes;
   int backref;
 } tre_pos_and_tags_t;
 
-
 /***********************************************************************
  from tre-ast.c and tre-ast.h
 ***********************************************************************/
 
 /* The different AST node types. */
-typedef enum {
-  LITERAL,
-  CATENATION,
-  ITERATION,
-  UNION
-} tre_ast_type_t;
+typedef enum { LITERAL, CATENATION, ITERATION, UNION } tre_ast_type_t;
 
 /* Special subtypes of TRE_LITERAL. */
-#define EMPTY	  -1   /* Empty leaf (denotes empty string). */
-#define ASSERTION -2   /* Assertion leaf. */
-#define TAG	  -3   /* Tag leaf. */
-#define BACKREF	  -4   /* Back reference leaf. */
+#define EMPTY -1     /* Empty leaf (denotes empty string). */
+#define ASSERTION -2 /* Assertion leaf. */
+#define TAG -3       /* Tag leaf. */
+#define BACKREF -4   /* Back reference leaf. */
 
-#define IS_SPECIAL(x)	((x)->code_min < 0)
-#define IS_EMPTY(x)	((x)->code_min == EMPTY)
+#define IS_SPECIAL(x) ((x)->code_min < 0)
+#define IS_EMPTY(x) ((x)->code_min == EMPTY)
 #define IS_ASSERTION(x) ((x)->code_min == ASSERTION)
-#define IS_TAG(x)	((x)->code_min == TAG)
-#define IS_BACKREF(x)	((x)->code_min == BACKREF)
-
+#define IS_TAG(x) ((x)->code_min == TAG)
+#define IS_BACKREF(x) ((x)->code_min == BACKREF)
 
 /* A generic AST node.  All AST nodes consist of this node on the top
    level with `obj' pointing to the actual content. */
 typedef struct {
-  tre_ast_type_t type;   /* Type of the node. */
-  void *obj;             /* Pointer to actual node. */
+  tre_ast_type_t type; /* Type of the node. */
+  void* obj;           /* Pointer to actual node. */
   int nullable;
   int submatch_id;
   int num_submatches;
   int num_tags;
-  tre_pos_and_tags_t *firstpos;
-  tre_pos_and_tags_t *lastpos;
+  tre_pos_and_tags_t* firstpos;
+  tre_pos_and_tags_t* lastpos;
 } tre_ast_node_t;
 
-
 /* A "literal" node.  These are created for assertions, back references,
    tags, matching parameter settings, and all expressions that match one
    character. */
@@ -103,7 +95,7 @@
   long code_max;
   int position;
   tre_ctype_t class;
-  tre_ctype_t *neg_classes;
+  tre_ctype_t* neg_classes;
 } tre_literal_t;
 
 /* A "catenation" node.	 These are created when two regexps are concatenated.
@@ -111,15 +103,15 @@
    holds all but the last, and `right' part holds the last subexpression
    (catenation is left associative). */
 typedef struct {
-  tre_ast_node_t *left;
-  tre_ast_node_t *right;
+  tre_ast_node_t* left;
+  tre_ast_node_t* right;
 } tre_catenation_t;
 
 /* An "iteration" node.	 These are created for the "*", "+", "?", and "{m,n}"
    operators. */
 typedef struct {
   /* Subexpression to match. */
-  tre_ast_node_t *arg;
+  tre_ast_node_t* arg;
   /* Minimum number of consecutive matches. */
   int min;
   /* Maximum number of consecutive matches. */
@@ -127,100 +119,99 @@
   /* If 0, match as many characters as possible, if 1 match as few as
      possible.	Note that this does not always mean the same thing as
      matching as many/few repetitions as possible. */
-  unsigned int minimal:1;
+  unsigned int minimal : 1;
 } tre_iteration_t;
 
 /* An "union" node.  These are created for the "|" operator. */
 typedef struct {
-  tre_ast_node_t *left;
-  tre_ast_node_t *right;
+  tre_ast_node_t* left;
+  tre_ast_node_t* right;
 } tre_union_t;
 
-
-static tre_ast_node_t *
-tre_ast_new_node(tre_mem_t mem, int type, void *obj)
-{
-	tre_ast_node_t *node = tre_mem_calloc(mem, sizeof *node);
-	if (!node || !obj)
-		return 0;
-	node->obj = obj;
-	node->type = type;
-	node->nullable = -1;
-	node->submatch_id = -1;
-	return node;
+static tre_ast_node_t* tre_ast_new_node(tre_mem_t mem, int type, void* obj) {
+  tre_ast_node_t* node = tre_mem_calloc(mem, sizeof *node);
+  if (!node || !obj)
+    return 0;
+  node->obj = obj;
+  node->type = type;
+  node->nullable = -1;
+  node->submatch_id = -1;
+  return node;
 }
 
-static tre_ast_node_t *
-tre_ast_new_literal(tre_mem_t mem, int code_min, int code_max, int position)
-{
-	tre_ast_node_t *node;
-	tre_literal_t *lit;
+static tre_ast_node_t* tre_ast_new_literal(tre_mem_t mem,
+                                           int code_min,
+                                           int code_max,
+                                           int position) {
+  tre_ast_node_t* node;
+  tre_literal_t* lit;
 
-	lit = tre_mem_calloc(mem, sizeof *lit);
-	node = tre_ast_new_node(mem, LITERAL, lit);
-	if (!node)
-		return 0;
-	lit->code_min = code_min;
-	lit->code_max = code_max;
-	lit->position = position;
-	return node;
+  lit = tre_mem_calloc(mem, sizeof *lit);
+  node = tre_ast_new_node(mem, LITERAL, lit);
+  if (!node)
+    return 0;
+  lit->code_min = code_min;
+  lit->code_max = code_max;
+  lit->position = position;
+  return node;
 }
 
-static tre_ast_node_t *
-tre_ast_new_iter(tre_mem_t mem, tre_ast_node_t *arg, int min, int max, int minimal)
-{
-	tre_ast_node_t *node;
-	tre_iteration_t *iter;
+static tre_ast_node_t* tre_ast_new_iter(tre_mem_t mem,
+                                        tre_ast_node_t* arg,
+                                        int min,
+                                        int max,
+                                        int minimal) {
+  tre_ast_node_t* node;
+  tre_iteration_t* iter;
 
-	iter = tre_mem_calloc(mem, sizeof *iter);
-	node = tre_ast_new_node(mem, ITERATION, iter);
-	if (!node)
-		return 0;
-	iter->arg = arg;
-	iter->min = min;
-	iter->max = max;
-	iter->minimal = minimal;
-	node->num_submatches = arg->num_submatches;
-	return node;
+  iter = tre_mem_calloc(mem, sizeof *iter);
+  node = tre_ast_new_node(mem, ITERATION, iter);
+  if (!node)
+    return 0;
+  iter->arg = arg;
+  iter->min = min;
+  iter->max = max;
+  iter->minimal = minimal;
+  node->num_submatches = arg->num_submatches;
+  return node;
 }
 
-static tre_ast_node_t *
-tre_ast_new_union(tre_mem_t mem, tre_ast_node_t *left, tre_ast_node_t *right)
-{
-	tre_ast_node_t *node;
-	tre_union_t *un;
+static tre_ast_node_t* tre_ast_new_union(tre_mem_t mem,
+                                         tre_ast_node_t* left,
+                                         tre_ast_node_t* right) {
+  tre_ast_node_t* node;
+  tre_union_t* un;
 
-	if (!left)
-		return right;
-	un = tre_mem_calloc(mem, sizeof *un);
-	node = tre_ast_new_node(mem, UNION, un);
-	if (!node || !right)
-		return 0;
-	un->left = left;
-	un->right = right;
-	node->num_submatches = left->num_submatches + right->num_submatches;
-	return node;
+  if (!left)
+    return right;
+  un = tre_mem_calloc(mem, sizeof *un);
+  node = tre_ast_new_node(mem, UNION, un);
+  if (!node || !right)
+    return 0;
+  un->left = left;
+  un->right = right;
+  node->num_submatches = left->num_submatches + right->num_submatches;
+  return node;
 }
 
-static tre_ast_node_t *
-tre_ast_new_catenation(tre_mem_t mem, tre_ast_node_t *left, tre_ast_node_t *right)
-{
-	tre_ast_node_t *node;
-	tre_catenation_t *cat;
+static tre_ast_node_t* tre_ast_new_catenation(tre_mem_t mem,
+                                              tre_ast_node_t* left,
+                                              tre_ast_node_t* right) {
+  tre_ast_node_t* node;
+  tre_catenation_t* cat;
 
-	if (!left)
-		return right;
-	cat = tre_mem_calloc(mem, sizeof *cat);
-	node = tre_ast_new_node(mem, CATENATION, cat);
-	if (!node)
-		return 0;
-	cat->left = left;
-	cat->right = right;
-	node->num_submatches = left->num_submatches + right->num_submatches;
-	return node;
+  if (!left)
+    return right;
+  cat = tre_mem_calloc(mem, sizeof *cat);
+  node = tre_ast_new_node(mem, CATENATION, cat);
+  if (!node)
+    return 0;
+  cat->left = left;
+  cat->right = right;
+  node->num_submatches = left->num_submatches + right->num_submatches;
+  return node;
 }
 
-
 /***********************************************************************
  from tre-stack.c and tre-stack.h
 ***********************************************************************/
@@ -231,61 +222,56 @@
    is maximum size, and `increment' specifies how much more space will be
    allocated with realloc() if all space gets used up.	Returns the stack
    object or NULL if out of memory. */
-static tre_stack_t *
-tre_stack_new(int size, int max_size, int increment);
+static tre_stack_t* tre_stack_new(int size, int max_size, int increment);
 
 /* Frees the stack object. */
-static void
-tre_stack_destroy(tre_stack_t *s);
+static void tre_stack_destroy(tre_stack_t* s);
 
 /* Returns the current number of objects in the stack. */
-static int
-tre_stack_num_objects(tre_stack_t *s);
+static int tre_stack_num_objects(tre_stack_t* s);
 
 /* Each tre_stack_push_*(tre_stack_t *s, <type> value) function pushes
    `value' on top of stack `s'.  Returns REG_ESPACE if out of memory.
    This tries to realloc() more space before failing if maximum size
    has not yet been reached.  Returns REG_OK if successful. */
-#define declare_pushf(typetag, type)					      \
-  static reg_errcode_t tre_stack_push_ ## typetag(tre_stack_t *s, type value)
+#define declare_pushf(typetag, type) \
+  static reg_errcode_t tre_stack_push_##typetag(tre_stack_t* s, type value)
 
-declare_pushf(voidptr, void *);
+declare_pushf(voidptr, void*);
 declare_pushf(int, int);
 
 /* Each tre_stack_pop_*(tre_stack_t *s) function pops the topmost
    element off of stack `s' and returns it.  The stack must not be
    empty. */
-#define declare_popf(typetag, type)		  \
-  static type tre_stack_pop_ ## typetag(tre_stack_t *s)
+#define declare_popf(typetag, type) \
+  static type tre_stack_pop_##typetag(tre_stack_t* s)
 
-declare_popf(voidptr, void *);
+declare_popf(voidptr, void*);
 declare_popf(int, int);
 
 /* Just to save some typing. */
-#define STACK_PUSH(s, typetag, value)					      \
-  do									      \
-    {									      \
-      status = tre_stack_push_ ## typetag(s, value);			      \
-    }									      \
-  while (/*CONSTCOND*/0)
+#define STACK_PUSH(s, typetag, value)            \
+  do {                                           \
+    status = tre_stack_push_##typetag(s, value); \
+  } while (/*CONSTCOND*/ 0)
 
-#define STACK_PUSHX(s, typetag, value)					      \
-  {									      \
-    status = tre_stack_push_ ## typetag(s, value);			      \
-    if (status != REG_OK)						      \
-      break;								      \
+#define STACK_PUSHX(s, typetag, value)           \
+  {                                              \
+    status = tre_stack_push_##typetag(s, value); \
+    if (status != REG_OK)                        \
+      break;                                     \
   }
 
-#define STACK_PUSHR(s, typetag, value)					      \
-  {									      \
-    reg_errcode_t _status;						      \
-    _status = tre_stack_push_ ## typetag(s, value);			      \
-    if (_status != REG_OK)						      \
-      return _status;							      \
+#define STACK_PUSHR(s, typetag, value)            \
+  {                                               \
+    reg_errcode_t _status;                        \
+    _status = tre_stack_push_##typetag(s, value); \
+    if (_status != REG_OK)                        \
+      return _status;                             \
   }
 
 union tre_stack_item {
-  void *voidptr_value;
+  void* voidptr_value;
   int int_value;
 };
 
@@ -294,218 +280,198 @@
   int max_size;
   int increment;
   int ptr;
-  union tre_stack_item *stack;
+  union tre_stack_item* stack;
 };
 
-
-static tre_stack_t *
-tre_stack_new(int size, int max_size, int increment)
-{
-  tre_stack_t *s;
+static tre_stack_t* tre_stack_new(int size, int max_size, int increment) {
+  tre_stack_t* s;
 
   s = xmalloc(sizeof(*s));
-  if (s != NULL)
-    {
-      s->stack = xmalloc(sizeof(*s->stack) * size);
-      if (s->stack == NULL)
-	{
-	  xfree(s);
-	  return NULL;
-	}
-      s->size = size;
-      s->max_size = max_size;
-      s->increment = increment;
-      s->ptr = 0;
+  if (s != NULL) {
+    s->stack = xmalloc(sizeof(*s->stack) * size);
+    if (s->stack == NULL) {
+      xfree(s);
+      return NULL;
     }
+    s->size = size;
+    s->max_size = max_size;
+    s->increment = increment;
+    s->ptr = 0;
+  }
   return s;
 }
 
-static void
-tre_stack_destroy(tre_stack_t *s)
-{
+static void tre_stack_destroy(tre_stack_t* s) {
   xfree(s->stack);
   xfree(s);
 }
 
-static int
-tre_stack_num_objects(tre_stack_t *s)
-{
+static int tre_stack_num_objects(tre_stack_t* s) {
   return s->ptr;
 }
 
-static reg_errcode_t
-tre_stack_push(tre_stack_t *s, union tre_stack_item value)
-{
-  if (s->ptr < s->size)
-    {
-      s->stack[s->ptr] = value;
-      s->ptr++;
+static reg_errcode_t tre_stack_push(tre_stack_t* s,
+                                    union tre_stack_item value) {
+  if (s->ptr < s->size) {
+    s->stack[s->ptr] = value;
+    s->ptr++;
+  } else {
+    if (s->size >= s->max_size) {
+      return REG_ESPACE;
+    } else {
+      union tre_stack_item* new_buffer;
+      int new_size;
+      new_size = s->size + s->increment;
+      if (new_size > s->max_size)
+        new_size = s->max_size;
+      new_buffer = xrealloc(s->stack, sizeof(*new_buffer) * new_size);
+      if (new_buffer == NULL) {
+        return REG_ESPACE;
+      }
+      assert(new_size > s->size);
+      s->size = new_size;
+      s->stack = new_buffer;
+      tre_stack_push(s, value);
     }
-  else
-    {
-      if (s->size >= s->max_size)
-	{
-	  return REG_ESPACE;
-	}
-      else
-	{
-	  union tre_stack_item *new_buffer;
-	  int new_size;
-	  new_size = s->size + s->increment;
-	  if (new_size > s->max_size)
-	    new_size = s->max_size;
-	  new_buffer = xrealloc(s->stack, sizeof(*new_buffer) * new_size);
-	  if (new_buffer == NULL)
-	    {
-	      return REG_ESPACE;
-	    }
-	  assert(new_size > s->size);
-	  s->size = new_size;
-	  s->stack = new_buffer;
-	  tre_stack_push(s, value);
-	}
-    }
+  }
   return REG_OK;
 }
 
-#define define_pushf(typetag, type)  \
-  declare_pushf(typetag, type) {     \
-    union tre_stack_item item;	     \
-    item.typetag ## _value = value;  \
-    return tre_stack_push(s, item);  \
-}
-
-define_pushf(int, int)
-define_pushf(voidptr, void *)
-
-#define define_popf(typetag, type)		    \
-  declare_popf(typetag, type) {			    \
-    return s->stack[--s->ptr].typetag ## _value;    \
+#define define_pushf(typetag, type) \
+  declare_pushf(typetag, type) {    \
+    union tre_stack_item item;      \
+    item.typetag##_value = value;   \
+    return tre_stack_push(s, item); \
   }
 
-define_popf(int, int)
-define_popf(voidptr, void *)
+define_pushf(int, int) define_pushf(voidptr, void*)
+#define define_popf(typetag, type) \
+  declare_popf(typetag, type) { return s->stack[--s->ptr].typetag##_value; }
 
+    define_popf(int, int) define_popf(voidptr, void*)
 
-/***********************************************************************
- from tre-parse.c and tre-parse.h
-***********************************************************************/
+    /***********************************************************************
+     from tre-parse.c and tre-parse.h
+    ***********************************************************************/
 
-/* Parse context. */
-typedef struct {
-	/* Memory allocator. The AST is allocated using this. */
-	tre_mem_t mem;
-	/* Stack used for keeping track of regexp syntax. */
-	tre_stack_t *stack;
-	/* The parsed node after a parse function returns. */
-	tre_ast_node_t *n;
-	/* Position in the regexp pattern after a parse function returns. */
-	const char *s;
-	/* The first character of the regexp. */
-	const char *re;
-	/* Current submatch ID. */
-	int submatch_id;
-	/* Current position (number of literal). */
-	int position;
-	/* The highest back reference or -1 if none seen so far. */
-	int max_backref;
-	/* Compilation flags. */
-	int cflags;
+    /* Parse context. */
+    typedef struct {
+  /* Memory allocator. The AST is allocated using this. */
+  tre_mem_t mem;
+  /* Stack used for keeping track of regexp syntax. */
+  tre_stack_t* stack;
+  /* The parsed node after a parse function returns. */
+  tre_ast_node_t* n;
+  /* Position in the regexp pattern after a parse function returns. */
+  const char* s;
+  /* The first character of the regexp. */
+  const char* re;
+  /* Current submatch ID. */
+  int submatch_id;
+  /* Current position (number of literal). */
+  int position;
+  /* The highest back reference or -1 if none seen so far. */
+  int max_backref;
+  /* Compilation flags. */
+  int cflags;
 } tre_parse_ctx_t;
 
 /* Some macros for expanding \w, \s, etc. */
 static const struct {
-	char c;
-	const char *expansion;
-} tre_macros[] = {
-	{'t', "\t"}, {'n', "\n"}, {'r', "\r"},
-	{'f', "\f"}, {'a', "\a"}, {'e', "\033"},
-	{'w', "[[:alnum:]_]"}, {'W', "[^[:alnum:]_]"}, {'s', "[[:space:]]"},
-	{'S', "[^[:space:]]"}, {'d', "[[:digit:]]"}, {'D', "[^[:digit:]]"},
-	{ 0, 0 }
-};
+  char c;
+  const char* expansion;
+} tre_macros[] = {{'t', "\t"},
+                  {'n', "\n"},
+                  {'r', "\r"},
+                  {'f', "\f"},
+                  {'a', "\a"},
+                  {'e', "\033"},
+                  {'w', "[[:alnum:]_]"},
+                  {'W', "[^[:alnum:]_]"},
+                  {'s', "[[:space:]]"},
+                  {'S', "[^[:space:]]"},
+                  {'d', "[[:digit:]]"},
+                  {'D', "[^[:digit:]]"},
+                  {0, 0}};
 
 /* Expands a macro delimited by `regex' and `regex_end' to `buf', which
    must have at least `len' items.  Sets buf[0] to zero if the there
    is no match in `tre_macros'. */
-static const char *tre_expand_macro(const char *s)
-{
-	int i;
-	for (i = 0; tre_macros[i].c && tre_macros[i].c != *s; i++);
-	return tre_macros[i].expansion;
+static const char* tre_expand_macro(const char* s) {
+  int i;
+  for (i = 0; tre_macros[i].c && tre_macros[i].c != *s; i++)
+    ;
+  return tre_macros[i].expansion;
 }
 
-static int
-tre_compare_lit(const void *a, const void *b)
-{
-	const tre_literal_t *const *la = a;
-	const tre_literal_t *const *lb = b;
-	/* assumes the range of valid code_min is < INT_MAX */
-	return la[0]->code_min - lb[0]->code_min;
+static int tre_compare_lit(const void* a, const void* b) {
+  const tre_literal_t* const* la = a;
+  const tre_literal_t* const* lb = b;
+  /* assumes the range of valid code_min is < INT_MAX */
+  return la[0]->code_min - lb[0]->code_min;
 }
 
 struct literals {
-	tre_mem_t mem;
-	tre_literal_t **a;
-	int len;
-	int cap;
+  tre_mem_t mem;
+  tre_literal_t** a;
+  int len;
+  int cap;
 };
 
-static tre_literal_t *tre_new_lit(struct literals *p)
-{
-	tre_literal_t **a;
-	if (p->len >= p->cap) {
-		if (p->cap >= 1<<15)
-			return 0;
-		p->cap *= 2;
-		a = xrealloc(p->a, p->cap * sizeof *p->a);
-		if (!a)
-			return 0;
-		p->a = a;
-	}
-	a = p->a + p->len++;
-	*a = tre_mem_calloc(p->mem, sizeof **a);
-	return *a;
+static tre_literal_t* tre_new_lit(struct literals* p) {
+  tre_literal_t** a;
+  if (p->len >= p->cap) {
+    if (p->cap >= 1 << 15)
+      return 0;
+    p->cap *= 2;
+    a = xrealloc(p->a, p->cap * sizeof *p->a);
+    if (!a)
+      return 0;
+    p->a = a;
+  }
+  a = p->a + p->len++;
+  *a = tre_mem_calloc(p->mem, sizeof **a);
+  return *a;
 }
 
-static int add_icase_literals(struct literals *ls, int min, int max)
-{
-	tre_literal_t *lit;
-	int b, e, c;
-	for (c=min; c<=max; ) {
-		/* assumes islower(c) and isupper(c) are exclusive
-		   and toupper(c)!=c if islower(c).
-		   multiple opposite case characters are not supported */
-		if (tre_islower(c)) {
-			b = e = tre_toupper(c);
-			for (c++, e++; c<=max; c++, e++)
-				if (tre_toupper(c) != e) break;
-		} else if (tre_isupper(c)) {
-			b = e = tre_tolower(c);
-			for (c++, e++; c<=max; c++, e++)
-				if (tre_tolower(c) != e) break;
-		} else {
-			c++;
-			continue;
-		}
-		lit = tre_new_lit(ls);
-		if (!lit)
-			return -1;
-		lit->code_min = b;
-		lit->code_max = e-1;
-		lit->position = -1;
-	}
-	return 0;
+static int add_icase_literals(struct literals* ls, int min, int max) {
+  tre_literal_t* lit;
+  int b, e, c;
+  for (c = min; c <= max;) {
+    /* assumes islower(c) and isupper(c) are exclusive
+       and toupper(c)!=c if islower(c).
+       multiple opposite case characters are not supported */
+    if (tre_islower(c)) {
+      b = e = tre_toupper(c);
+      for (c++, e++; c <= max; c++, e++)
+        if (tre_toupper(c) != e)
+          break;
+    } else if (tre_isupper(c)) {
+      b = e = tre_tolower(c);
+      for (c++, e++; c <= max; c++, e++)
+        if (tre_tolower(c) != e)
+          break;
+    } else {
+      c++;
+      continue;
+    }
+    lit = tre_new_lit(ls);
+    if (!lit)
+      return -1;
+    lit->code_min = b;
+    lit->code_max = e - 1;
+    lit->position = -1;
+  }
+  return 0;
 }
 
-
 /* Maximum number of character classes in a negated bracket expression. */
 #define MAX_NEG_CLASSES 64
 
 struct neg {
-	int negate;
-	int len;
-	tre_ctype_t a[MAX_NEG_CLASSES];
+  int negate;
+  int len;
+  tre_ctype_t a[MAX_NEG_CLASSES];
 };
 
 // TODO: parse bracket into a set of non-overlapping [lo,hi] ranges
@@ -528,548 +494,549 @@
  '^' anywhere except after the openning '['
 */
 
-static reg_errcode_t parse_bracket_terms(tre_parse_ctx_t *ctx, const char *s, struct literals *ls, struct neg *neg)
-{
-	const char *start = s;
-	tre_ctype_t class;
-	int min, max;
-	wchar_t wc;
-	int len;
+static reg_errcode_t parse_bracket_terms(tre_parse_ctx_t* ctx,
+                                         const char* s,
+                                         struct literals* ls,
+                                         struct neg* neg) {
+  const char* start = s;
+  tre_ctype_t class;
+  int min, max;
+  wchar_t wc;
+  int len;
 
-	for (;;) {
-		class = 0;
-		len = mbtowc(&wc, s, -1);
-		if (len <= 0)
-			return *s ? REG_BADPAT : REG_EBRACK;
-		if (*s == ']' && s != start) {
-			ctx->s = s+1;
-			return REG_OK;
-		}
-		if (*s == '-' && s != start && s[1] != ']' &&
-		    /* extension: [a-z--@] is accepted as [a-z]|[--@] */
-		    (s[1] != '-' || s[2] == ']'))
-			return REG_ERANGE;
-		if (*s == '[' && (s[1] == '.' || s[1] == '='))
-			/* collating symbols and equivalence classes are not supported */
-			return REG_ECOLLATE;
-		if (*s == '[' && s[1] == ':') {
-			char tmp[CHARCLASS_NAME_MAX+1];
-			s += 2;
-			for (len=0; len < CHARCLASS_NAME_MAX && s[len]; len++) {
-				if (s[len] == ':') {
-					memcpy(tmp, s, len);
-					tmp[len] = 0;
-					class = tre_ctype(tmp);
-					break;
-				}
-			}
-			if (!class || s[len+1] != ']')
-				return REG_ECTYPE;
-			min = 0;
-			max = TRE_CHAR_MAX;
-			s += len+2;
-		} else {
-			min = max = wc;
-			s += len;
-			if (*s == '-' && s[1] != ']') {
-				s++;
-				len = mbtowc(&wc, s, -1);
-				max = wc;
-				/* XXX - Should use collation order instead of
-				   encoding values in character ranges. */
-				if (len <= 0 || min > max)
-					return REG_ERANGE;
-				s += len;
-			}
-		}
+  for (;;) {
+    class = 0;
+    len = mbtowc(&wc, s, -1);
+    if (len <= 0)
+      return *s ? REG_BADPAT : REG_EBRACK;
+    if (*s == ']' && s != start) {
+      ctx->s = s + 1;
+      return REG_OK;
+    }
+    if (*s == '-' && s != start && s[1] != ']' &&
+        /* extension: [a-z--@] is accepted as [a-z]|[--@] */
+        (s[1] != '-' || s[2] == ']'))
+      return REG_ERANGE;
+    if (*s == '[' && (s[1] == '.' || s[1] == '='))
+      /* collating symbols and equivalence classes are not supported */
+      return REG_ECOLLATE;
+    if (*s == '[' && s[1] == ':') {
+      char tmp[CHARCLASS_NAME_MAX + 1];
+      s += 2;
+      for (len = 0; len < CHARCLASS_NAME_MAX && s[len]; len++) {
+        if (s[len] == ':') {
+          memcpy(tmp, s, len);
+          tmp[len] = 0;
+          class = tre_ctype(tmp);
+          break;
+        }
+      }
+      if (!class || s[len + 1] != ']')
+        return REG_ECTYPE;
+      min = 0;
+      max = TRE_CHAR_MAX;
+      s += len + 2;
+    } else {
+      min = max = wc;
+      s += len;
+      if (*s == '-' && s[1] != ']') {
+        s++;
+        len = mbtowc(&wc, s, -1);
+        max = wc;
+        /* XXX - Should use collation order instead of
+           encoding values in character ranges. */
+        if (len <= 0 || min > max)
+          return REG_ERANGE;
+        s += len;
+      }
+    }
 
-		if (class && neg->negate) {
-			if (neg->len >= MAX_NEG_CLASSES)
-				return REG_ESPACE;
-			neg->a[neg->len++] = class;
-		} else  {
-			tre_literal_t *lit = tre_new_lit(ls);
-			if (!lit)
-				return REG_ESPACE;
-			lit->code_min = min;
-			lit->code_max = max;
-			lit->class = class;
-			lit->position = -1;
+    if (class && neg->negate) {
+      if (neg->len >= MAX_NEG_CLASSES)
+        return REG_ESPACE;
+      neg->a[neg->len++] = class;
+    } else {
+      tre_literal_t* lit = tre_new_lit(ls);
+      if (!lit)
+        return REG_ESPACE;
+      lit->code_min = min;
+      lit->code_max = max;
+      lit->class = class;
+      lit->position = -1;
 
-			/* Add opposite-case codepoints if REG_ICASE is present.
-			   It seems that POSIX requires that bracket negation
-			   should happen before case-folding, but most practical
-			   implementations do it the other way around. Changing
-			   the order would need efficient representation of
-			   case-fold ranges and bracket range sets even with
-			   simple patterns so this is ok for now. */
-			if (ctx->cflags & REG_ICASE && !class)
-				if (add_icase_literals(ls, min, max))
-					return REG_ESPACE;
-		}
-	}
+      /* Add opposite-case codepoints if REG_ICASE is present.
+         It seems that POSIX requires that bracket negation
+         should happen before case-folding, but most practical
+         implementations do it the other way around. Changing
+         the order would need efficient representation of
+         case-fold ranges and bracket range sets even with
+         simple patterns so this is ok for now. */
+      if (ctx->cflags & REG_ICASE && !class)
+        if (add_icase_literals(ls, min, max))
+          return REG_ESPACE;
+    }
+  }
 }
 
-static reg_errcode_t parse_bracket(tre_parse_ctx_t *ctx, const char *s)
-{
-	int i, max, min, negmax, negmin;
-	tre_ast_node_t *node = 0, *n;
-	tre_ctype_t *nc = 0;
-	tre_literal_t *lit;
-	struct literals ls;
-	struct neg neg;
-	reg_errcode_t err;
+static reg_errcode_t parse_bracket(tre_parse_ctx_t* ctx, const char* s) {
+  int i, max, min, negmax, negmin;
+  tre_ast_node_t *node = 0, *n;
+  tre_ctype_t* nc = 0;
+  tre_literal_t* lit;
+  struct literals ls;
+  struct neg neg;
+  reg_errcode_t err;
 
-	ls.mem = ctx->mem;
-	ls.len = 0;
-	ls.cap = 32;
-	ls.a = xmalloc(ls.cap * sizeof *ls.a);
-	if (!ls.a)
-		return REG_ESPACE;
-	neg.len = 0;
-	neg.negate = *s == '^';
-	if (neg.negate)
-		s++;
+  ls.mem = ctx->mem;
+  ls.len = 0;
+  ls.cap = 32;
+  ls.a = xmalloc(ls.cap * sizeof *ls.a);
+  if (!ls.a)
+    return REG_ESPACE;
+  neg.len = 0;
+  neg.negate = *s == '^';
+  if (neg.negate)
+    s++;
 
-	err = parse_bracket_terms(ctx, s, &ls, &neg);
-	if (err != REG_OK)
-		goto parse_bracket_done;
+  err = parse_bracket_terms(ctx, s, &ls, &neg);
+  if (err != REG_OK)
+    goto parse_bracket_done;
 
-	if (neg.negate) {
-		/* Sort the array if we need to negate it. */
-		qsort(ls.a, ls.len, sizeof *ls.a, tre_compare_lit);
-		/* extra lit for the last negated range */
-		lit = tre_new_lit(&ls);
-		if (!lit) {
-			err = REG_ESPACE;
-			goto parse_bracket_done;
-		}
-		lit->code_min = TRE_CHAR_MAX+1;
-		lit->code_max = TRE_CHAR_MAX+1;
-		lit->position = -1;
-		/* negated classes */
-		if (neg.len) {
-			nc = tre_mem_alloc(ctx->mem, (neg.len+1)*sizeof *neg.a);
-			if (!nc) {
-				err = REG_ESPACE;
-				goto parse_bracket_done;
-			}
-			memcpy(nc, neg.a, neg.len*sizeof *neg.a);
-			nc[neg.len] = 0;
-		}
-	}
+  if (neg.negate) {
+    /* Sort the array if we need to negate it. */
+    qsort(ls.a, ls.len, sizeof *ls.a, tre_compare_lit);
+    /* extra lit for the last negated range */
+    lit = tre_new_lit(&ls);
+    if (!lit) {
+      err = REG_ESPACE;
+      goto parse_bracket_done;
+    }
+    lit->code_min = TRE_CHAR_MAX + 1;
+    lit->code_max = TRE_CHAR_MAX + 1;
+    lit->position = -1;
+    /* negated classes */
+    if (neg.len) {
+      nc = tre_mem_alloc(ctx->mem, (neg.len + 1) * sizeof *neg.a);
+      if (!nc) {
+        err = REG_ESPACE;
+        goto parse_bracket_done;
+      }
+      memcpy(nc, neg.a, neg.len * sizeof *neg.a);
+      nc[neg.len] = 0;
+    }
+  }
 
-	/* Build a union of the items in the array, negated if necessary. */
-	negmax = negmin = 0;
-	for (i = 0; i < ls.len; i++) {
-		lit = ls.a[i];
-		min = lit->code_min;
-		max = lit->code_max;
-		if (neg.negate) {
-			if (min <= negmin) {
-				/* Overlap. */
-				negmin = MAX(max + 1, negmin);
-				continue;
-			}
-			negmax = min - 1;
-			lit->code_min = negmin;
-			lit->code_max = negmax;
-			negmin = max + 1;
-		}
-		lit->position = ctx->position;
-		lit->neg_classes = nc;
-		n = tre_ast_new_node(ctx->mem, LITERAL, lit);
-		node = tre_ast_new_union(ctx->mem, node, n);
-		if (!node) {
-			err = REG_ESPACE;
-			break;
-		}
-	}
+  /* Build a union of the items in the array, negated if necessary. */
+  negmax = negmin = 0;
+  for (i = 0; i < ls.len; i++) {
+    lit = ls.a[i];
+    min = lit->code_min;
+    max = lit->code_max;
+    if (neg.negate) {
+      if (min <= negmin) {
+        /* Overlap. */
+        negmin = MAX(max + 1, negmin);
+        continue;
+      }
+      negmax = min - 1;
+      lit->code_min = negmin;
+      lit->code_max = negmax;
+      negmin = max + 1;
+    }
+    lit->position = ctx->position;
+    lit->neg_classes = nc;
+    n = tre_ast_new_node(ctx->mem, LITERAL, lit);
+    node = tre_ast_new_union(ctx->mem, node, n);
+    if (!node) {
+      err = REG_ESPACE;
+      break;
+    }
+  }
 
 parse_bracket_done:
-	xfree(ls.a);
-	ctx->position++;
-	ctx->n = node;
-	return err;
+  xfree(ls.a);
+  ctx->position++;
+  ctx->n = node;
+  return err;
 }
 
-static const char *parse_dup_count(const char *s, int *n)
-{
-	*n = -1;
-	if (!isdigit(*s))
-		return s;
-	*n = 0;
-	for (;;) {
-		*n = 10 * *n + (*s - '0');
-		s++;
-		if (!isdigit(*s) || *n > RE_DUP_MAX)
-			break;
-	}
-	return s;
+static const char* parse_dup_count(const char* s, int* n) {
+  *n = -1;
+  if (!isdigit(*s))
+    return s;
+  *n = 0;
+  for (;;) {
+    *n = 10 * *n + (*s - '0');
+    s++;
+    if (!isdigit(*s) || *n > RE_DUP_MAX)
+      break;
+  }
+  return s;
 }
 
-static const char *parse_dup(const char *s, int ere, int *pmin, int *pmax)
-{
-	int min, max;
+static const char* parse_dup(const char* s, int ere, int* pmin, int* pmax) {
+  int min, max;
 
-	s = parse_dup_count(s, &min);
-	if (*s == ',')
-		s = parse_dup_count(s+1, &max);
-	else
-		max = min;
+  s = parse_dup_count(s, &min);
+  if (*s == ',')
+    s = parse_dup_count(s + 1, &max);
+  else
+    max = min;
 
-	if (
-		(max < min && max >= 0) ||
-		max > RE_DUP_MAX ||
-		min > RE_DUP_MAX ||
-		min < 0 ||
-		(!ere && *s++ != '\\') ||
-		*s++ != '}'
-	)
-		return 0;
-	*pmin = min;
-	*pmax = max;
-	return s;
+  if ((max < min && max >= 0) || max > RE_DUP_MAX || min > RE_DUP_MAX ||
+      min < 0 || (!ere && *s++ != '\\') || *s++ != '}')
+    return 0;
+  *pmin = min;
+  *pmax = max;
+  return s;
 }
 
-static int hexval(unsigned c)
-{
-	if (c-'0'<10) return c-'0';
-	c |= 32;
-	if (c-'a'<6) return c-'a'+10;
-	return -1;
+static int hexval(unsigned c) {
+  if (c - '0' < 10)
+    return c - '0';
+  c |= 32;
+  if (c - 'a' < 6)
+    return c - 'a' + 10;
+  return -1;
 }
 
-static reg_errcode_t marksub(tre_parse_ctx_t *ctx, tre_ast_node_t *node, int subid)
-{
-	if (node->submatch_id >= 0) {
-		tre_ast_node_t *n = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1);
-		if (!n)
-			return REG_ESPACE;
-		n = tre_ast_new_catenation(ctx->mem, n, node);
-		if (!n)
-			return REG_ESPACE;
-		n->num_submatches = node->num_submatches;
-		node = n;
-	}
-	node->submatch_id = subid;
-	node->num_submatches++;
-	ctx->n = node;
-	return REG_OK;
+static reg_errcode_t marksub(tre_parse_ctx_t* ctx,
+                             tre_ast_node_t* node,
+                             int subid) {
+  if (node->submatch_id >= 0) {
+    tre_ast_node_t* n = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1);
+    if (!n)
+      return REG_ESPACE;
+    n = tre_ast_new_catenation(ctx->mem, n, node);
+    if (!n)
+      return REG_ESPACE;
+    n->num_submatches = node->num_submatches;
+    node = n;
+  }
+  node->submatch_id = subid;
+  node->num_submatches++;
+  ctx->n = node;
+  return REG_OK;
 }
 
 /*
 BRE grammar:
-Regex  =  Branch  |  '^'  |  '$'  |  '^$'  |  '^' Branch  |  Branch '$'  |  '^' Branch '$'
+Regex  =  Branch  |  '^'  |  '$'  |  '^$'  |  '^' Branch  |  Branch '$'  |  '^'
+Branch '$'
 Branch =  Atom  |  Branch Atom
-Atom   =  char  |  quoted_char  |  '.'  |  Bracket  |  Atom Dup  |  '\(' Branch '\)'  |  back_ref
-Dup    =  '*'  |  '\{' Count '\}'  |  '\{' Count ',\}'  |  '\{' Count ',' Count '\}'
+Atom   =  char  |  quoted_char  |  '.'  |  Bracket  |  Atom Dup  |  '\(' Branch
+'\)'  |  back_ref
+Dup    =  '*'  |  '\{' Count '\}'  |  '\{' Count ',\}'  |  '\{' Count ',' Count
+'\}'
 
 (leading ^ and trailing $ in a sub expr may be an anchor or literal as well)
 
 ERE grammar:
 Regex  =  Branch  |  Regex '|' Branch
 Branch =  Atom  |  Branch Atom
-Atom   =  char  |  quoted_char  |  '.'  |  Bracket  |  Atom Dup  |  '(' Regex ')'  |  '^'  |  '$'
-Dup    =  '*'  |  '+'  |  '?'  |  '{' Count '}'  |  '{' Count ',}'  |  '{' Count ',' Count '}'
+Atom   =  char  |  quoted_char  |  '.'  |  Bracket  |  Atom Dup  |  '(' Regex
+')'  |  '^'  |  '$'
+Dup    =  '*'  |  '+'  |  '?'  |  '{' Count '}'  |  '{' Count ',}'  |  '{' Count
+',' Count '}'
 
 (a*+?, ^*, $+, \X, {, (|a) are unspecified)
 */
 
-static reg_errcode_t parse_atom(tre_parse_ctx_t *ctx, const char *s)
-{
-	int len, ere = ctx->cflags & REG_EXTENDED;
-	const char *p;
-	tre_ast_node_t *node;
-	wchar_t wc;
-	switch (*s) {
-	case '[':
-		return parse_bracket(ctx, s+1);
-	case '\\':
-		p = tre_expand_macro(s+1);
-		if (p) {
-			/* assume \X expansion is a single atom */
-			reg_errcode_t err = parse_atom(ctx, p);
-			ctx->s = s+2;
-			return err;
-		}
-		/* extensions: \b, \B, \<, \>, \xHH \x{HHHH} */
-		switch (*++s) {
-		case 0:
-			return REG_EESCAPE;
-		case 'b':
-			node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_WB, -1);
-			break;
-		case 'B':
-			node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_WB_NEG, -1);
-			break;
-		case '<':
-			node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_BOW, -1);
-			break;
-		case '>':
-			node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_EOW, -1);
-			break;
-		case 'x':
-			s++;
-			int i, v = 0, c;
-			len = 2;
-			if (*s == '{') {
-				len = 8;
-				s++;
-			}
-			for (i=0; i<len && v<0x110000; i++) {
-				c = hexval(s[i]);
-				if (c < 0) break;
-				v = 16*v + c;
-			}
-			s += i;
-			if (len == 8) {
-				if (*s != '}')
-					return REG_EBRACE;
-				s++;
-			}
-			node = tre_ast_new_literal(ctx->mem, v, v, ctx->position++);
-			s--;
-			break;
-		case '{':
-		case '+':
-		case '?':
-			/* extension: treat \+, \? as repetitions in BRE */
-			/* reject repetitions after empty expression in BRE */
-			if (!ere)
-				return REG_BADRPT;
-		case '|':
-			/* extension: treat \| as alternation in BRE */
-			if (!ere) {
-				node = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1);
-				s--;
-				goto end;
-			}
-			/* fallthrough */
-		default:
-			if (!ere && (unsigned)*s-'1' < 9) {
-				/* back reference */
-				int val = *s - '0';
-				node = tre_ast_new_literal(ctx->mem, BACKREF, val, ctx->position++);
-				ctx->max_backref = MAX(val, ctx->max_backref);
-			} else {
-				/* extension: accept unknown escaped char
-				   as a literal */
-				goto parse_literal;
-			}
-		}
-		s++;
-		break;
-	case '.':
-		if (ctx->cflags & REG_NEWLINE) {
-			tre_ast_node_t *tmp1, *tmp2;
-			tmp1 = tre_ast_new_literal(ctx->mem, 0, '\n'-1, ctx->position++);
-			tmp2 = tre_ast_new_literal(ctx->mem, '\n'+1, TRE_CHAR_MAX, ctx->position++);
-			if (tmp1 && tmp2)
-				node = tre_ast_new_union(ctx->mem, tmp1, tmp2);
-			else
-				node = 0;
-		} else {
-			node = tre_ast_new_literal(ctx->mem, 0, TRE_CHAR_MAX, ctx->position++);
-		}
-		s++;
-		break;
-	case '^':
-		/* '^' has a special meaning everywhere in EREs, and at beginning of BRE. */
-		if (!ere && s != ctx->re)
-			goto parse_literal;
-		node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_BOL, -1);
-		s++;
-		break;
-	case '$':
-		/* '$' is special everywhere in EREs, and in the end of the string in BREs. */
-		if (!ere && s[1])
-			goto parse_literal;
-		node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_EOL, -1);
-		s++;
-		break;
-	case '*':
-		return REG_BADPAT;
-	case '{':
-	case '+':
-	case '?':
-		/* reject repetitions after empty expression in ERE */
-		if (ere)
-			return REG_BADRPT;
-	case '|':
-		if (!ere)
-			goto parse_literal;
-	case 0:
-		node = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1);
-		break;
-	default:
-parse_literal:
-		len = mbtowc(&wc, s, -1);
-		if (len < 0)
-			return REG_BADPAT;
-		if (ctx->cflags & REG_ICASE && (tre_isupper(wc) || tre_islower(wc))) {
-			tre_ast_node_t *tmp1, *tmp2;
-			/* multiple opposite case characters are not supported */
-			tmp1 = tre_ast_new_literal(ctx->mem, tre_toupper(wc), tre_toupper(wc), ctx->position);
-			tmp2 = tre_ast_new_literal(ctx->mem, tre_tolower(wc), tre_tolower(wc), ctx->position);
-			if (tmp1 && tmp2)
-				node = tre_ast_new_union(ctx->mem, tmp1, tmp2);
-			else
-				node = 0;
-		} else {
-			node = tre_ast_new_literal(ctx->mem, wc, wc, ctx->position);
-		}
-		ctx->position++;
-		s += len;
-		break;
-	}
+static reg_errcode_t parse_atom(tre_parse_ctx_t* ctx, const char* s) {
+  int len, ere = ctx->cflags & REG_EXTENDED;
+  const char* p;
+  tre_ast_node_t* node;
+  wchar_t wc;
+  switch (*s) {
+    case '[':
+      return parse_bracket(ctx, s + 1);
+    case '\\':
+      p = tre_expand_macro(s + 1);
+      if (p) {
+        /* assume \X expansion is a single atom */
+        reg_errcode_t err = parse_atom(ctx, p);
+        ctx->s = s + 2;
+        return err;
+      }
+      /* extensions: \b, \B, \<, \>, \xHH \x{HHHH} */
+      switch (*++s) {
+        case 0:
+          return REG_EESCAPE;
+        case 'b':
+          node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_WB, -1);
+          break;
+        case 'B':
+          node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_WB_NEG, -1);
+          break;
+        case '<':
+          node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_BOW, -1);
+          break;
+        case '>':
+          node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_EOW, -1);
+          break;
+        case 'x':
+          s++;
+          int i, v = 0, c;
+          len = 2;
+          if (*s == '{') {
+            len = 8;
+            s++;
+          }
+          for (i = 0; i < len && v < 0x110000; i++) {
+            c = hexval(s[i]);
+            if (c < 0)
+              break;
+            v = 16 * v + c;
+          }
+          s += i;
+          if (len == 8) {
+            if (*s != '}')
+              return REG_EBRACE;
+            s++;
+          }
+          node = tre_ast_new_literal(ctx->mem, v, v, ctx->position++);
+          s--;
+          break;
+        case '{':
+        case '+':
+        case '?':
+          /* extension: treat \+, \? as repetitions in BRE */
+          /* reject repetitions after empty expression in BRE */
+          if (!ere)
+            return REG_BADRPT;
+        case '|':
+          /* extension: treat \| as alternation in BRE */
+          if (!ere) {
+            node = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1);
+            s--;
+            goto end;
+          }
+        /* fallthrough */
+        default:
+          if (!ere && (unsigned)*s - '1' < 9) {
+            /* back reference */
+            int val = *s - '0';
+            node = tre_ast_new_literal(ctx->mem, BACKREF, val, ctx->position++);
+            ctx->max_backref = MAX(val, ctx->max_backref);
+          } else {
+            /* extension: accept unknown escaped char
+               as a literal */
+            goto parse_literal;
+          }
+      }
+      s++;
+      break;
+    case '.':
+      if (ctx->cflags & REG_NEWLINE) {
+        tre_ast_node_t *tmp1, *tmp2;
+        tmp1 = tre_ast_new_literal(ctx->mem, 0, '\n' - 1, ctx->position++);
+        tmp2 = tre_ast_new_literal(ctx->mem, '\n' + 1, TRE_CHAR_MAX,
+                                   ctx->position++);
+        if (tmp1 && tmp2)
+          node = tre_ast_new_union(ctx->mem, tmp1, tmp2);
+        else
+          node = 0;
+      } else {
+        node = tre_ast_new_literal(ctx->mem, 0, TRE_CHAR_MAX, ctx->position++);
+      }
+      s++;
+      break;
+    case '^':
+      /* '^' has a special meaning everywhere in EREs, and at beginning of BRE.
+       */
+      if (!ere && s != ctx->re)
+        goto parse_literal;
+      node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_BOL, -1);
+      s++;
+      break;
+    case '$':
+      /* '$' is special everywhere in EREs, and in the end of the string in
+       * BREs. */
+      if (!ere && s[1])
+        goto parse_literal;
+      node = tre_ast_new_literal(ctx->mem, ASSERTION, ASSERT_AT_EOL, -1);
+      s++;
+      break;
+    case '*':
+      return REG_BADPAT;
+    case '{':
+    case '+':
+    case '?':
+      /* reject repetitions after empty expression in ERE */
+      if (ere)
+        return REG_BADRPT;
+    case '|':
+      if (!ere)
+        goto parse_literal;
+    case 0:
+      node = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1);
+      break;
+    default:
+    parse_literal:
+      len = mbtowc(&wc, s, -1);
+      if (len < 0)
+        return REG_BADPAT;
+      if (ctx->cflags & REG_ICASE && (tre_isupper(wc) || tre_islower(wc))) {
+        tre_ast_node_t *tmp1, *tmp2;
+        /* multiple opposite case characters are not supported */
+        tmp1 = tre_ast_new_literal(ctx->mem, tre_toupper(wc), tre_toupper(wc),
+                                   ctx->position);
+        tmp2 = tre_ast_new_literal(ctx->mem, tre_tolower(wc), tre_tolower(wc),
+                                   ctx->position);
+        if (tmp1 && tmp2)
+          node = tre_ast_new_union(ctx->mem, tmp1, tmp2);
+        else
+          node = 0;
+      } else {
+        node = tre_ast_new_literal(ctx->mem, wc, wc, ctx->position);
+      }
+      ctx->position++;
+      s += len;
+      break;
+  }
 end:
-	if (!node)
-		return REG_ESPACE;
-	ctx->n = node;
-	ctx->s = s;
-	return REG_OK;
+  if (!node)
+    return REG_ESPACE;
+  ctx->n = node;
+  ctx->s = s;
+  return REG_OK;
 }
 
-#define PUSHPTR(err, s, v) do { \
-	if ((err = tre_stack_push_voidptr(s, v)) != REG_OK) \
-		return err; \
-} while(0)
+#define PUSHPTR(err, s, v)                              \
+  do {                                                  \
+    if ((err = tre_stack_push_voidptr(s, v)) != REG_OK) \
+      return err;                                       \
+  } while (0)
 
-#define PUSHINT(err, s, v) do { \
-	if ((err = tre_stack_push_int(s, v)) != REG_OK) \
-		return err; \
-} while(0)
+#define PUSHINT(err, s, v)                          \
+  do {                                              \
+    if ((err = tre_stack_push_int(s, v)) != REG_OK) \
+      return err;                                   \
+  } while (0)
 
-static reg_errcode_t tre_parse(tre_parse_ctx_t *ctx)
-{
-	tre_ast_node_t *nbranch=0, *nunion=0;
-	int ere = ctx->cflags & REG_EXTENDED;
-	const char *s = ctx->re;
-	int subid = 0;
-	int depth = 0;
-	reg_errcode_t err;
-	tre_stack_t *stack = ctx->stack;
+static reg_errcode_t tre_parse(tre_parse_ctx_t* ctx) {
+  tre_ast_node_t *nbranch = 0, *nunion = 0;
+  int ere = ctx->cflags & REG_EXTENDED;
+  const char* s = ctx->re;
+  int subid = 0;
+  int depth = 0;
+  reg_errcode_t err;
+  tre_stack_t* stack = ctx->stack;
 
-	PUSHINT(err, stack, subid++);
-	for (;;) {
-		if ((!ere && *s == '\\' && s[1] == '(') ||
-		    (ere && *s == '(')) {
-			PUSHPTR(err, stack, nunion);
-			PUSHPTR(err, stack, nbranch);
-			PUSHINT(err, stack, subid++);
-			s++;
-			if (!ere)
-				s++;
-			depth++;
-			nbranch = nunion = 0;
-			continue;
-		}
-		if ((!ere && *s == '\\' && s[1] == ')') ||
-		    (ere && *s == ')' && depth)) {
-			ctx->n = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1);
-			if (!ctx->n)
-				return REG_ESPACE;
-		} else {
-			err = parse_atom(ctx, s);
-			if (err != REG_OK)
-				return err;
-			s = ctx->s;
-		}
+  PUSHINT(err, stack, subid++);
+  for (;;) {
+    if ((!ere && *s == '\\' && s[1] == '(') || (ere && *s == '(')) {
+      PUSHPTR(err, stack, nunion);
+      PUSHPTR(err, stack, nbranch);
+      PUSHINT(err, stack, subid++);
+      s++;
+      if (!ere)
+        s++;
+      depth++;
+      nbranch = nunion = 0;
+      continue;
+    }
+    if ((!ere && *s == '\\' && s[1] == ')') || (ere && *s == ')' && depth)) {
+      ctx->n = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1);
+      if (!ctx->n)
+        return REG_ESPACE;
+    } else {
+      err = parse_atom(ctx, s);
+      if (err != REG_OK)
+        return err;
+      s = ctx->s;
+    }
 
-	parse_iter:
-		/* extension: repetitions are rejected after an empty node
-		   eg. (+), |*, {2}, but assertions are not treated as empty
-		   so ^* or $? are accepted currently. */
-		for (;;) {
-			int min, max;
+  parse_iter:
+    /* extension: repetitions are rejected after an empty node
+       eg. (+), |*, {2}, but assertions are not treated as empty
+       so ^* or $? are accepted currently. */
+    for (;;) {
+      int min, max;
 
-			if (*s!='\\' && *s!='*') {
-				if (!ere)
-					break;
-				if (*s!='+' && *s!='?' && *s!='{')
-					break;
-			}
-			if (*s=='\\' && ere)
-				break;
-			/* extension: treat \+, \? as repetitions in BRE */
-			if (*s=='\\' && s[1]!='+' && s[1]!='?' && s[1]!='{')
-				break;
-			if (*s=='\\')
-				s++;
+      if (*s != '\\' && *s != '*') {
+        if (!ere)
+          break;
+        if (*s != '+' && *s != '?' && *s != '{')
+          break;
+      }
+      if (*s == '\\' && ere)
+        break;
+      /* extension: treat \+, \? as repetitions in BRE */
+      if (*s == '\\' && s[1] != '+' && s[1] != '?' && s[1] != '{')
+        break;
+      if (*s == '\\')
+        s++;
 
-			/* extension: multiple consecutive *+?{,} is unspecified,
-			   but (a+)+ has to be supported so accepting a++ makes
-			   sense, note however that the RE_DUP_MAX limit can be
-			   circumvented: (a{255}){255} uses a lot of memory.. */
-			if (*s=='{') {
-				s = parse_dup(s+1, ere, &min, &max);
-				if (!s)
-					return REG_BADBR;
-			} else {
-				min=0;
-				max=-1;
-				if (*s == '+')
-					min = 1;
-				if (*s == '?')
-					max = 1;
-				s++;
-			}
-			if (max == 0)
-				ctx->n = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1);
-			else
-				ctx->n = tre_ast_new_iter(ctx->mem, ctx->n, min, max, 0);
-			if (!ctx->n)
-				return REG_ESPACE;
-		}
+      /* extension: multiple consecutive *+?{,} is unspecified,
+         but (a+)+ has to be supported so accepting a++ makes
+         sense, note however that the RE_DUP_MAX limit can be
+         circumvented: (a{255}){255} uses a lot of memory.. */
+      if (*s == '{') {
+        s = parse_dup(s + 1, ere, &min, &max);
+        if (!s)
+          return REG_BADBR;
+      } else {
+        min = 0;
+        max = -1;
+        if (*s == '+')
+          min = 1;
+        if (*s == '?')
+          max = 1;
+        s++;
+      }
+      if (max == 0)
+        ctx->n = tre_ast_new_literal(ctx->mem, EMPTY, -1, -1);
+      else
+        ctx->n = tre_ast_new_iter(ctx->mem, ctx->n, min, max, 0);
+      if (!ctx->n)
+        return REG_ESPACE;
+    }
 
-		nbranch = tre_ast_new_catenation(ctx->mem, nbranch, ctx->n);
-		if ((ere && *s == '|') ||
-		    (ere && *s == ')' && depth) ||
-		    (!ere && *s == '\\' && s[1] == ')') ||
-		    /* extension: treat \| as alternation in BRE */
-		    (!ere && *s == '\\' && s[1] == '|') ||
-		    !*s) {
-			/* extension: empty branch is unspecified (), (|a), (a|)
-			   here they are not rejected but match on empty string */
-			int c = *s;
-			nunion = tre_ast_new_union(ctx->mem, nunion, nbranch);
-			nbranch = 0;
+    nbranch = tre_ast_new_catenation(ctx->mem, nbranch, ctx->n);
+    if ((ere && *s == '|') || (ere && *s == ')' && depth) ||
+        (!ere && *s == '\\' && s[1] == ')') ||
+        /* extension: treat \| as alternation in BRE */
+        (!ere && *s == '\\' && s[1] == '|') || !*s) {
+      /* extension: empty branch is unspecified (), (|a), (a|)
+         here they are not rejected but match on empty string */
+      int c = *s;
+      nunion = tre_ast_new_union(ctx->mem, nunion, nbranch);
+      nbranch = 0;
 
-			if (c == '\\' && s[1] == '|') {
-				s+=2;
-			} else if (c == '|') {
-				s++;
-			} else {
-				if (c == '\\') {
-					if (!depth) return REG_EPAREN;
-					s+=2;
-				} else if (c == ')')
-					s++;
-				depth--;
-				err = marksub(ctx, nunion, tre_stack_pop_int(stack));
-				if (err != REG_OK)
-					return err;
-				if (!c && depth<0) {
-					ctx->submatch_id = subid;
-					return REG_OK;
-				}
-				if (!c || depth<0)
-					return REG_EPAREN;
-				nbranch = tre_stack_pop_voidptr(stack);
-				nunion = tre_stack_pop_voidptr(stack);
-				goto parse_iter;
-			}
-		}
-	}
+      if (c == '\\' && s[1] == '|') {
+        s += 2;
+      } else if (c == '|') {
+        s++;
+      } else {
+        if (c == '\\') {
+          if (!depth)
+            return REG_EPAREN;
+          s += 2;
+        } else if (c == ')')
+          s++;
+        depth--;
+        err = marksub(ctx, nunion, tre_stack_pop_int(stack));
+        if (err != REG_OK)
+          return err;
+        if (!c && depth < 0) {
+          ctx->submatch_id = subid;
+          return REG_OK;
+        }
+        if (!c || depth < 0)
+          return REG_EPAREN;
+        nbranch = tre_stack_pop_voidptr(stack);
+        nunion = tre_stack_pop_voidptr(stack);
+        goto parse_iter;
+      }
+    }
+  }
 }
 
-
 /***********************************************************************
  from tre-compile.c
 ***********************************************************************/
 
-
 /*
   TODO:
    - Fix tre_ast_to_tnfa() to recurse using a stack instead of recursive
@@ -1080,14 +1047,13 @@
   Algorithms to setup tags so that submatch addressing can be done.
 */
 
-
 /* Inserts a catenation node to the root of the tree given in `node'.
    As the left child a new tag with number `tag_id' to `node' is added,
    and the right child is the old root. */
-static reg_errcode_t
-tre_add_tag_left(tre_mem_t mem, tre_ast_node_t *node, int tag_id)
-{
-  tre_catenation_t *c;
+static reg_errcode_t tre_add_tag_left(tre_mem_t mem,
+                                      tre_ast_node_t* node,
+                                      int tag_id) {
+  tre_catenation_t* c;
 
   c = tre_mem_alloc(mem, sizeof(*c));
   if (c == NULL)
@@ -1114,10 +1080,10 @@
 /* Inserts a catenation node to the root of the tree given in `node'.
    As the right child a new tag with number `tag_id' to `node' is added,
    and the left child is the old root. */
-static reg_errcode_t
-tre_add_tag_right(tre_mem_t mem, tre_ast_node_t *node, int tag_id)
-{
-  tre_catenation_t *c;
+static reg_errcode_t tre_add_tag_right(tre_mem_t mem,
+                                       tre_ast_node_t* node,
+                                       int tag_id) {
+  tre_catenation_t* c;
 
   c = tre_mem_alloc(mem, sizeof(*c));
   if (c == NULL)
@@ -1151,61 +1117,54 @@
   ADDTAGS_SET_SUBMATCH_END
 } tre_addtags_symbol_t;
 
-
 typedef struct {
   int tag;
   int next_tag;
 } tre_tag_states_t;
 
-
 /* Go through `regset' and set submatch data for submatches that are
    using this tag. */
-static void
-tre_purge_regset(int *regset, tre_tnfa_t *tnfa, int tag)
-{
+static void tre_purge_regset(int* regset, tre_tnfa_t* tnfa, int tag) {
   int i;
 
-  for (i = 0; regset[i] >= 0; i++)
-    {
-      int id = regset[i] / 2;
-      int start = !(regset[i] % 2);
-      if (start)
-	tnfa->submatch_data[id].so_tag = tag;
-      else
-	tnfa->submatch_data[id].eo_tag = tag;
-    }
+  for (i = 0; regset[i] >= 0; i++) {
+    int id = regset[i] / 2;
+    int start = !(regset[i] % 2);
+    if (start)
+      tnfa->submatch_data[id].so_tag = tag;
+    else
+      tnfa->submatch_data[id].eo_tag = tag;
+  }
   regset[0] = -1;
 }
 
-
 /* Adds tags to appropriate locations in the parse tree in `tree', so that
    subexpressions marked for submatch addressing can be traced. */
-static reg_errcode_t
-tre_add_tags(tre_mem_t mem, tre_stack_t *stack, tre_ast_node_t *tree,
-	     tre_tnfa_t *tnfa)
-{
+static reg_errcode_t tre_add_tags(tre_mem_t mem,
+                                  tre_stack_t* stack,
+                                  tre_ast_node_t* tree,
+                                  tre_tnfa_t* tnfa) {
   reg_errcode_t status = REG_OK;
   tre_addtags_symbol_t symbol;
-  tre_ast_node_t *node = tree; /* Tree node we are currently looking at. */
+  tre_ast_node_t* node = tree; /* Tree node we are currently looking at. */
   int bottom = tre_stack_num_objects(stack);
   /* True for first pass (counting number of needed tags) */
   int first_pass = (mem == NULL || tnfa == NULL);
   int *regset, *orig_regset;
-  int num_tags = 0; /* Total number of tags. */
-  int num_minimals = 0;	 /* Number of special minimal tags. */
-  int tag = 0;	    /* The tag that is to be added next. */
-  int next_tag = 1; /* Next tag to use after this one. */
-  int *parents;	    /* Stack of submatches the current submatch is
-		       contained in. */
+  int num_tags = 0;     /* Total number of tags. */
+  int num_minimals = 0; /* Number of special minimal tags. */
+  int tag = 0;          /* The tag that is to be added next. */
+  int next_tag = 1;     /* Next tag to use after this one. */
+  int* parents;         /* Stack of submatches the current submatch is
+                           contained in. */
   int minimal_tag = -1; /* Tag that marks the beginning of a minimal match. */
-  tre_tag_states_t *saved_states;
+  tre_tag_states_t* saved_states;
 
   tre_tag_direction_t direction = TRE_TAG_MINIMIZE;
-  if (!first_pass)
-    {
-      tnfa->end_tag = 0;
-      tnfa->minimal_tags[0] = -1;
-    }
+  if (!first_pass) {
+    tnfa->end_tag = 0;
+    tnfa->minimal_tags[0] = -1;
+  }
 
   regset = xmalloc(sizeof(*regset) * ((tnfa->num_submatches + 1) * 2));
   if (regset == NULL)
@@ -1214,430 +1173,383 @@
   orig_regset = regset;
 
   parents = xmalloc(sizeof(*parents) * (tnfa->num_submatches + 1));
-  if (parents == NULL)
-    {
-      xfree(regset);
-      return REG_ESPACE;
-    }
+  if (parents == NULL) {
+    xfree(regset);
+    return REG_ESPACE;
+  }
   parents[0] = -1;
 
   saved_states = xmalloc(sizeof(*saved_states) * (tnfa->num_submatches + 1));
-  if (saved_states == NULL)
-    {
-      xfree(regset);
-      xfree(parents);
-      return REG_ESPACE;
-    }
-  else
-    {
-      unsigned int i;
-      for (i = 0; i <= tnfa->num_submatches; i++)
-	saved_states[i].tag = -1;
-    }
+  if (saved_states == NULL) {
+    xfree(regset);
+    xfree(parents);
+    return REG_ESPACE;
+  } else {
+    unsigned int i;
+    for (i = 0; i <= tnfa->num_submatches; i++)
+      saved_states[i].tag = -1;
+  }
 
   STACK_PUSH(stack, voidptr, node);
   STACK_PUSH(stack, int, ADDTAGS_RECURSE);
 
-  while (tre_stack_num_objects(stack) > bottom)
-    {
-      if (status != REG_OK)
-	break;
+  while (tre_stack_num_objects(stack) > bottom) {
+    if (status != REG_OK)
+      break;
 
-      symbol = (tre_addtags_symbol_t)tre_stack_pop_int(stack);
-      switch (symbol)
-	{
+    symbol = (tre_addtags_symbol_t)tre_stack_pop_int(stack);
+    switch (symbol) {
+      case ADDTAGS_SET_SUBMATCH_END: {
+        int id = tre_stack_pop_int(stack);
+        int i;
 
-	case ADDTAGS_SET_SUBMATCH_END:
-	  {
-	    int id = tre_stack_pop_int(stack);
-	    int i;
+        /* Add end of this submatch to regset. */
+        for (i = 0; regset[i] >= 0; i++)
+          ;
+        regset[i] = id * 2 + 1;
+        regset[i + 1] = -1;
 
-	    /* Add end of this submatch to regset. */
-	    for (i = 0; regset[i] >= 0; i++);
-	    regset[i] = id * 2 + 1;
-	    regset[i + 1] = -1;
+        /* Pop this submatch from the parents stack. */
+        for (i = 0; parents[i] >= 0; i++)
+          ;
+        parents[i - 1] = -1;
+        break;
+      }
 
-	    /* Pop this submatch from the parents stack. */
-	    for (i = 0; parents[i] >= 0; i++);
-	    parents[i - 1] = -1;
-	    break;
-	  }
+      case ADDTAGS_RECURSE:
+        node = tre_stack_pop_voidptr(stack);
 
-	case ADDTAGS_RECURSE:
-	  node = tre_stack_pop_voidptr(stack);
+        if (node->submatch_id >= 0) {
+          int id = node->submatch_id;
+          int i;
 
-	  if (node->submatch_id >= 0)
-	    {
-	      int id = node->submatch_id;
-	      int i;
+          /* Add start of this submatch to regset. */
+          for (i = 0; regset[i] >= 0; i++)
+            ;
+          regset[i] = id * 2;
+          regset[i + 1] = -1;
 
+          if (!first_pass) {
+            for (i = 0; parents[i] >= 0; i++)
+              ;
+            tnfa->submatch_data[id].parents = NULL;
+            if (i > 0) {
+              int* p = xmalloc(sizeof(*p) * (i + 1));
+              if (p == NULL) {
+                status = REG_ESPACE;
+                break;
+              }
+              assert(tnfa->submatch_data[id].parents == NULL);
+              tnfa->submatch_data[id].parents = p;
+              for (i = 0; parents[i] >= 0; i++)
+                p[i] = parents[i];
+              p[i] = -1;
+            }
+          }
 
-	      /* Add start of this submatch to regset. */
-	      for (i = 0; regset[i] >= 0; i++);
-	      regset[i] = id * 2;
-	      regset[i + 1] = -1;
+          /* Add end of this submatch to regset after processing this
+             node. */
+          STACK_PUSHX(stack, int, node->submatch_id);
+          STACK_PUSHX(stack, int, ADDTAGS_SET_SUBMATCH_END);
+        }
 
-	      if (!first_pass)
-		{
-		  for (i = 0; parents[i] >= 0; i++);
-		  tnfa->submatch_data[id].parents = NULL;
-		  if (i > 0)
-		    {
-		      int *p = xmalloc(sizeof(*p) * (i + 1));
-		      if (p == NULL)
-			{
-			  status = REG_ESPACE;
-			  break;
-			}
-		      assert(tnfa->submatch_data[id].parents == NULL);
-		      tnfa->submatch_data[id].parents = p;
-		      for (i = 0; parents[i] >= 0; i++)
-			p[i] = parents[i];
-		      p[i] = -1;
-		    }
-		}
+        switch (node->type) {
+          case LITERAL: {
+            tre_literal_t* lit = node->obj;
 
-	      /* Add end of this submatch to regset after processing this
-		 node. */
-	      STACK_PUSHX(stack, int, node->submatch_id);
-	      STACK_PUSHX(stack, int, ADDTAGS_SET_SUBMATCH_END);
-	    }
+            if (!IS_SPECIAL(lit) || IS_BACKREF(lit)) {
+              int i;
+              if (regset[0] >= 0) {
+                /* Regset is not empty, so add a tag before the
+                   literal or backref. */
+                if (!first_pass) {
+                  status = tre_add_tag_left(mem, node, tag);
+                  tnfa->tag_directions[tag] = direction;
+                  if (minimal_tag >= 0) {
+                    for (i = 0; tnfa->minimal_tags[i] >= 0; i++)
+                      ;
+                    tnfa->minimal_tags[i] = tag;
+                    tnfa->minimal_tags[i + 1] = minimal_tag;
+                    tnfa->minimal_tags[i + 2] = -1;
+                    minimal_tag = -1;
+                    num_minimals++;
+                  }
+                  tre_purge_regset(regset, tnfa, tag);
+                } else {
+                  node->num_tags = 1;
+                }
 
-	  switch (node->type)
-	    {
-	    case LITERAL:
-	      {
-		tre_literal_t *lit = node->obj;
+                regset[0] = -1;
+                tag = next_tag;
+                num_tags++;
+                next_tag++;
+              }
+            } else {
+              assert(!IS_TAG(lit));
+            }
+            break;
+          }
+          case CATENATION: {
+            tre_catenation_t* cat = node->obj;
+            tre_ast_node_t* left = cat->left;
+            tre_ast_node_t* right = cat->right;
+            int reserved_tag = -1;
 
-		if (!IS_SPECIAL(lit) || IS_BACKREF(lit))
-		  {
-		    int i;
-		    if (regset[0] >= 0)
-		      {
-			/* Regset is not empty, so add a tag before the
-			   literal or backref. */
-			if (!first_pass)
-			  {
-			    status = tre_add_tag_left(mem, node, tag);
-			    tnfa->tag_directions[tag] = direction;
-			    if (minimal_tag >= 0)
-			      {
-				for (i = 0; tnfa->minimal_tags[i] >= 0; i++);
-				tnfa->minimal_tags[i] = tag;
-				tnfa->minimal_tags[i + 1] = minimal_tag;
-				tnfa->minimal_tags[i + 2] = -1;
-				minimal_tag = -1;
-				num_minimals++;
-			      }
-			    tre_purge_regset(regset, tnfa, tag);
-			  }
-			else
-			  {
-			    node->num_tags = 1;
-			  }
+            /* After processing right child. */
+            STACK_PUSHX(stack, voidptr, node);
+            STACK_PUSHX(stack, int, ADDTAGS_AFTER_CAT_RIGHT);
 
-			regset[0] = -1;
-			tag = next_tag;
-			num_tags++;
-			next_tag++;
-		      }
-		  }
-		else
-		  {
-		    assert(!IS_TAG(lit));
-		  }
-		break;
-	      }
-	    case CATENATION:
-	      {
-		tre_catenation_t *cat = node->obj;
-		tre_ast_node_t *left = cat->left;
-		tre_ast_node_t *right = cat->right;
-		int reserved_tag = -1;
+            /* Process right child. */
+            STACK_PUSHX(stack, voidptr, right);
+            STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
 
+            /* After processing left child. */
+            STACK_PUSHX(stack, int, next_tag + left->num_tags);
+            if (left->num_tags > 0 && right->num_tags > 0) {
+              /* Reserve the next tag to the right child. */
+              reserved_tag = next_tag;
+              next_tag++;
+            }
+            STACK_PUSHX(stack, int, reserved_tag);
+            STACK_PUSHX(stack, int, ADDTAGS_AFTER_CAT_LEFT);
 
-		/* After processing right child. */
-		STACK_PUSHX(stack, voidptr, node);
-		STACK_PUSHX(stack, int, ADDTAGS_AFTER_CAT_RIGHT);
+            /* Process left child. */
+            STACK_PUSHX(stack, voidptr, left);
+            STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
 
-		/* Process right child. */
-		STACK_PUSHX(stack, voidptr, right);
-		STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
+          } break;
+          case ITERATION: {
+            tre_iteration_t* iter = node->obj;
 
-		/* After processing left child. */
-		STACK_PUSHX(stack, int, next_tag + left->num_tags);
-		if (left->num_tags > 0 && right->num_tags > 0)
-		  {
-		    /* Reserve the next tag to the right child. */
-		    reserved_tag = next_tag;
-		    next_tag++;
-		  }
-		STACK_PUSHX(stack, int, reserved_tag);
-		STACK_PUSHX(stack, int, ADDTAGS_AFTER_CAT_LEFT);
+            if (first_pass) {
+              STACK_PUSHX(stack, int, regset[0] >= 0 || iter->minimal);
+            } else {
+              STACK_PUSHX(stack, int, tag);
+              STACK_PUSHX(stack, int, iter->minimal);
+            }
+            STACK_PUSHX(stack, voidptr, node);
+            STACK_PUSHX(stack, int, ADDTAGS_AFTER_ITERATION);
 
-		/* Process left child. */
-		STACK_PUSHX(stack, voidptr, left);
-		STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
+            STACK_PUSHX(stack, voidptr, iter->arg);
+            STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
 
-		}
-	      break;
-	    case ITERATION:
-	      {
-		tre_iteration_t *iter = node->obj;
+            /* Regset is not empty, so add a tag here. */
+            if (regset[0] >= 0 || iter->minimal) {
+              if (!first_pass) {
+                int i;
+                status = tre_add_tag_left(mem, node, tag);
+                if (iter->minimal)
+                  tnfa->tag_directions[tag] = TRE_TAG_MAXIMIZE;
+                else
+                  tnfa->tag_directions[tag] = direction;
+                if (minimal_tag >= 0) {
+                  for (i = 0; tnfa->minimal_tags[i] >= 0; i++)
+                    ;
+                  tnfa->minimal_tags[i] = tag;
+                  tnfa->minimal_tags[i + 1] = minimal_tag;
+                  tnfa->minimal_tags[i + 2] = -1;
+                  minimal_tag = -1;
+                  num_minimals++;
+                }
+                tre_purge_regset(regset, tnfa, tag);
+              }
 
-		if (first_pass)
-		  {
-		    STACK_PUSHX(stack, int, regset[0] >= 0 || iter->minimal);
-		  }
-		else
-		  {
-		    STACK_PUSHX(stack, int, tag);
-		    STACK_PUSHX(stack, int, iter->minimal);
-		  }
-		STACK_PUSHX(stack, voidptr, node);
-		STACK_PUSHX(stack, int, ADDTAGS_AFTER_ITERATION);
+              regset[0] = -1;
+              tag = next_tag;
+              num_tags++;
+              next_tag++;
+            }
+            direction = TRE_TAG_MINIMIZE;
+          } break;
+          case UNION: {
+            tre_union_t* uni = node->obj;
+            tre_ast_node_t* left = uni->left;
+            tre_ast_node_t* right = uni->right;
+            int left_tag;
+            int right_tag;
 
-		STACK_PUSHX(stack, voidptr, iter->arg);
-		STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
+            if (regset[0] >= 0) {
+              left_tag = next_tag;
+              right_tag = next_tag + 1;
+            } else {
+              left_tag = tag;
+              right_tag = next_tag;
+            }
 
-		/* Regset is not empty, so add a tag here. */
-		if (regset[0] >= 0 || iter->minimal)
-		  {
-		    if (!first_pass)
-		      {
-			int i;
-			status = tre_add_tag_left(mem, node, tag);
-			if (iter->minimal)
-			  tnfa->tag_directions[tag] = TRE_TAG_MAXIMIZE;
-			else
-			  tnfa->tag_directions[tag] = direction;
-			if (minimal_tag >= 0)
-			  {
-			    for (i = 0; tnfa->minimal_tags[i] >= 0; i++);
-			    tnfa->minimal_tags[i] = tag;
-			    tnfa->minimal_tags[i + 1] = minimal_tag;
-			    tnfa->minimal_tags[i + 2] = -1;
-			    minimal_tag = -1;
-			    num_minimals++;
-			  }
-			tre_purge_regset(regset, tnfa, tag);
-		      }
+            /* After processing right child. */
+            STACK_PUSHX(stack, int, right_tag);
+            STACK_PUSHX(stack, int, left_tag);
+            STACK_PUSHX(stack, voidptr, regset);
+            STACK_PUSHX(stack, int, regset[0] >= 0);
+            STACK_PUSHX(stack, voidptr, node);
+            STACK_PUSHX(stack, voidptr, right);
+            STACK_PUSHX(stack, voidptr, left);
+            STACK_PUSHX(stack, int, ADDTAGS_AFTER_UNION_RIGHT);
 
-		    regset[0] = -1;
-		    tag = next_tag;
-		    num_tags++;
-		    next_tag++;
-		  }
-		direction = TRE_TAG_MINIMIZE;
-	      }
-	      break;
-	    case UNION:
-	      {
-		tre_union_t *uni = node->obj;
-		tre_ast_node_t *left = uni->left;
-		tre_ast_node_t *right = uni->right;
-		int left_tag;
-		int right_tag;
+            /* Process right child. */
+            STACK_PUSHX(stack, voidptr, right);
+            STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
 
-		if (regset[0] >= 0)
-		  {
-		    left_tag = next_tag;
-		    right_tag = next_tag + 1;
-		  }
-		else
-		  {
-		    left_tag = tag;
-		    right_tag = next_tag;
-		  }
+            /* After processing left child. */
+            STACK_PUSHX(stack, int, ADDTAGS_AFTER_UNION_LEFT);
 
-		/* After processing right child. */
-		STACK_PUSHX(stack, int, right_tag);
-		STACK_PUSHX(stack, int, left_tag);
-		STACK_PUSHX(stack, voidptr, regset);
-		STACK_PUSHX(stack, int, regset[0] >= 0);
-		STACK_PUSHX(stack, voidptr, node);
-		STACK_PUSHX(stack, voidptr, right);
-		STACK_PUSHX(stack, voidptr, left);
-		STACK_PUSHX(stack, int, ADDTAGS_AFTER_UNION_RIGHT);
+            /* Process left child. */
+            STACK_PUSHX(stack, voidptr, left);
+            STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
 
-		/* Process right child. */
-		STACK_PUSHX(stack, voidptr, right);
-		STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
+            /* Regset is not empty, so add a tag here. */
+            if (regset[0] >= 0) {
+              if (!first_pass) {
+                int i;
+                status = tre_add_tag_left(mem, node, tag);
+                tnfa->tag_directions[tag] = direction;
+                if (minimal_tag >= 0) {
+                  for (i = 0; tnfa->minimal_tags[i] >= 0; i++)
+                    ;
+                  tnfa->minimal_tags[i] = tag;
+                  tnfa->minimal_tags[i + 1] = minimal_tag;
+                  tnfa->minimal_tags[i + 2] = -1;
+                  minimal_tag = -1;
+                  num_minimals++;
+                }
+                tre_purge_regset(regset, tnfa, tag);
+              }
 
-		/* After processing left child. */
-		STACK_PUSHX(stack, int, ADDTAGS_AFTER_UNION_LEFT);
+              regset[0] = -1;
+              tag = next_tag;
+              num_tags++;
+              next_tag++;
+            }
 
-		/* Process left child. */
-		STACK_PUSHX(stack, voidptr, left);
-		STACK_PUSHX(stack, int, ADDTAGS_RECURSE);
+            if (node->num_submatches > 0) {
+              /* The next two tags are reserved for markers. */
+              next_tag++;
+              tag = next_tag;
+              next_tag++;
+            }
 
-		/* Regset is not empty, so add a tag here. */
-		if (regset[0] >= 0)
-		  {
-		    if (!first_pass)
-		      {
-			int i;
-			status = tre_add_tag_left(mem, node, tag);
-			tnfa->tag_directions[tag] = direction;
-			if (minimal_tag >= 0)
-			  {
-			    for (i = 0; tnfa->minimal_tags[i] >= 0; i++);
-			    tnfa->minimal_tags[i] = tag;
-			    tnfa->minimal_tags[i + 1] = minimal_tag;
-			    tnfa->minimal_tags[i + 2] = -1;
-			    minimal_tag = -1;
-			    num_minimals++;
-			  }
-			tre_purge_regset(regset, tnfa, tag);
-		      }
+            break;
+          }
+        }
 
-		    regset[0] = -1;
-		    tag = next_tag;
-		    num_tags++;
-		    next_tag++;
-		  }
+        if (node->submatch_id >= 0) {
+          int i;
+          /* Push this submatch on the parents stack. */
+          for (i = 0; parents[i] >= 0; i++)
+            ;
+          parents[i] = node->submatch_id;
+          parents[i + 1] = -1;
+        }
 
-		if (node->num_submatches > 0)
-		  {
-		    /* The next two tags are reserved for markers. */
-		    next_tag++;
-		    tag = next_tag;
-		    next_tag++;
-		  }
+        break; /* end case: ADDTAGS_RECURSE */
 
-		break;
-	      }
-	    }
+      case ADDTAGS_AFTER_ITERATION: {
+        int minimal = 0;
+        int enter_tag;
+        node = tre_stack_pop_voidptr(stack);
+        if (first_pass) {
+          node->num_tags = ((tre_iteration_t*)node->obj)->arg->num_tags +
+                           tre_stack_pop_int(stack);
+          minimal_tag = -1;
+        } else {
+          minimal = tre_stack_pop_int(stack);
+          enter_tag = tre_stack_pop_int(stack);
+          if (minimal)
+            minimal_tag = enter_tag;
+        }
 
-	  if (node->submatch_id >= 0)
-	    {
-	      int i;
-	      /* Push this submatch on the parents stack. */
-	      for (i = 0; parents[i] >= 0; i++);
-	      parents[i] = node->submatch_id;
-	      parents[i + 1] = -1;
-	    }
+        if (!first_pass) {
+          if (minimal)
+            direction = TRE_TAG_MINIMIZE;
+          else
+            direction = TRE_TAG_MAXIMIZE;
+        }
+        break;
+      }
 
-	  break; /* end case: ADDTAGS_RECURSE */
+      case ADDTAGS_AFTER_CAT_LEFT: {
+        int new_tag = tre_stack_pop_int(stack);
+        next_tag = tre_stack_pop_int(stack);
+        if (new_tag >= 0) {
+          tag = new_tag;
+        }
+        break;
+      }
 
-	case ADDTAGS_AFTER_ITERATION:
-	  {
-	    int minimal = 0;
-	    int enter_tag;
-	    node = tre_stack_pop_voidptr(stack);
-	    if (first_pass)
-	      {
-		node->num_tags = ((tre_iteration_t *)node->obj)->arg->num_tags
-		  + tre_stack_pop_int(stack);
-		minimal_tag = -1;
-	      }
-	    else
-	      {
-		minimal = tre_stack_pop_int(stack);
-		enter_tag = tre_stack_pop_int(stack);
-		if (minimal)
-		  minimal_tag = enter_tag;
-	      }
+      case ADDTAGS_AFTER_CAT_RIGHT:
+        node = tre_stack_pop_voidptr(stack);
+        if (first_pass)
+          node->num_tags = ((tre_catenation_t*)node->obj)->left->num_tags +
+                           ((tre_catenation_t*)node->obj)->right->num_tags;
+        break;
 
-	    if (!first_pass)
-	      {
-		if (minimal)
-		  direction = TRE_TAG_MINIMIZE;
-		else
-		  direction = TRE_TAG_MAXIMIZE;
-	      }
-	    break;
-	  }
+      case ADDTAGS_AFTER_UNION_LEFT:
+        /* Lift the bottom of the `regset' array so that when processing
+           the right operand the items currently in the array are
+           invisible.	 The original bottom was saved at ADDTAGS_UNION and
+           will be restored at ADDTAGS_AFTER_UNION_RIGHT below. */
+        while (*regset >= 0)
+          regset++;
+        break;
 
-	case ADDTAGS_AFTER_CAT_LEFT:
-	  {
-	    int new_tag = tre_stack_pop_int(stack);
-	    next_tag = tre_stack_pop_int(stack);
-	    if (new_tag >= 0)
-	      {
-		tag = new_tag;
-	      }
-	    break;
-	  }
+      case ADDTAGS_AFTER_UNION_RIGHT: {
+        int added_tags, tag_left, tag_right;
+        tre_ast_node_t* left = tre_stack_pop_voidptr(stack);
+        tre_ast_node_t* right = tre_stack_pop_voidptr(stack);
+        node = tre_stack_pop_voidptr(stack);
+        added_tags = tre_stack_pop_int(stack);
+        if (first_pass) {
+          node->num_tags = ((tre_union_t*)node->obj)->left->num_tags +
+                           ((tre_union_t*)node->obj)->right->num_tags +
+                           added_tags + ((node->num_submatches > 0) ? 2 : 0);
+        }
+        regset = tre_stack_pop_voidptr(stack);
+        tag_left = tre_stack_pop_int(stack);
+        tag_right = tre_stack_pop_int(stack);
 
-	case ADDTAGS_AFTER_CAT_RIGHT:
-	  node = tre_stack_pop_voidptr(stack);
-	  if (first_pass)
-	    node->num_tags = ((tre_catenation_t *)node->obj)->left->num_tags
-	      + ((tre_catenation_t *)node->obj)->right->num_tags;
-	  break;
+        /* Add tags after both children, the left child gets a smaller
+           tag than the right child.  This guarantees that we prefer
+           the left child over the right child. */
+        /* XXX - This is not always necessary (if the children have
+           tags which must be seen for every match of that child). */
+        /* XXX - Check if this is the only place where tre_add_tag_right
+           is used.	 If so, use tre_add_tag_left (putting the tag before
+           the child as opposed after the child) and throw away
+           tre_add_tag_right. */
+        if (node->num_submatches > 0) {
+          if (!first_pass) {
+            status = tre_add_tag_right(mem, left, tag_left);
+            tnfa->tag_directions[tag_left] = TRE_TAG_MAXIMIZE;
+            if (status == REG_OK)
+              status = tre_add_tag_right(mem, right, tag_right);
+            tnfa->tag_directions[tag_right] = TRE_TAG_MAXIMIZE;
+          }
+          num_tags += 2;
+        }
+        direction = TRE_TAG_MAXIMIZE;
+        break;
+      }
 
-	case ADDTAGS_AFTER_UNION_LEFT:
-	  /* Lift the bottom of the `regset' array so that when processing
-	     the right operand the items currently in the array are
-	     invisible.	 The original bottom was saved at ADDTAGS_UNION and
-	     will be restored at ADDTAGS_AFTER_UNION_RIGHT below. */
-	  while (*regset >= 0)
-	    regset++;
-	  break;
+      default:
+        assert(0);
+        break;
 
-	case ADDTAGS_AFTER_UNION_RIGHT:
-	  {
-	    int added_tags, tag_left, tag_right;
-	    tre_ast_node_t *left = tre_stack_pop_voidptr(stack);
-	    tre_ast_node_t *right = tre_stack_pop_voidptr(stack);
-	    node = tre_stack_pop_voidptr(stack);
-	    added_tags = tre_stack_pop_int(stack);
-	    if (first_pass)
-	      {
-		node->num_tags = ((tre_union_t *)node->obj)->left->num_tags
-		  + ((tre_union_t *)node->obj)->right->num_tags + added_tags
-		  + ((node->num_submatches > 0) ? 2 : 0);
-	      }
-	    regset = tre_stack_pop_voidptr(stack);
-	    tag_left = tre_stack_pop_int(stack);
-	    tag_right = tre_stack_pop_int(stack);
-
-	    /* Add tags after both children, the left child gets a smaller
-	       tag than the right child.  This guarantees that we prefer
-	       the left child over the right child. */
-	    /* XXX - This is not always necessary (if the children have
-	       tags which must be seen for every match of that child). */
-	    /* XXX - Check if this is the only place where tre_add_tag_right
-	       is used.	 If so, use tre_add_tag_left (putting the tag before
-	       the child as opposed after the child) and throw away
-	       tre_add_tag_right. */
-	    if (node->num_submatches > 0)
-	      {
-		if (!first_pass)
-		  {
-		    status = tre_add_tag_right(mem, left, tag_left);
-		    tnfa->tag_directions[tag_left] = TRE_TAG_MAXIMIZE;
-		    if (status == REG_OK)
-		      status = tre_add_tag_right(mem, right, tag_right);
-		    tnfa->tag_directions[tag_right] = TRE_TAG_MAXIMIZE;
-		  }
-		num_tags += 2;
-	      }
-	    direction = TRE_TAG_MAXIMIZE;
-	    break;
-	  }
-
-	default:
-	  assert(0);
-	  break;
-
-	} /* end switch(symbol) */
-    } /* end while(tre_stack_num_objects(stack) > bottom) */
+    } /* end switch(symbol) */
+  }   /* end while(tre_stack_num_objects(stack) > bottom) */
 
   if (!first_pass)
     tre_purge_regset(regset, tnfa, tag);
 
-  if (!first_pass && minimal_tag >= 0)
-    {
-      int i;
-      for (i = 0; tnfa->minimal_tags[i] >= 0; i++);
-      tnfa->minimal_tags[i] = tag;
-      tnfa->minimal_tags[i + 1] = minimal_tag;
-      tnfa->minimal_tags[i + 2] = -1;
-      minimal_tag = -1;
-      num_minimals++;
-    }
+  if (!first_pass && minimal_tag >= 0) {
+    int i;
+    for (i = 0; tnfa->minimal_tags[i] >= 0; i++)
+      ;
+    tnfa->minimal_tags[i] = tag;
+    tnfa->minimal_tags[i + 1] = minimal_tag;
+    tnfa->minimal_tags[i + 2] = -1;
+    minimal_tag = -1;
+    num_minimals++;
+  }
 
   assert(tree->num_tags == num_tags);
   tnfa->end_tag = num_tags;
@@ -1649,173 +1561,154 @@
   return status;
 }
 
-
-
 /*
   AST to TNFA compilation routines.
 */
 
-typedef enum {
-  COPY_RECURSE,
-  COPY_SET_RESULT_PTR
-} tre_copyast_symbol_t;
+typedef enum { COPY_RECURSE, COPY_SET_RESULT_PTR } tre_copyast_symbol_t;
 
 /* Flags for tre_copy_ast(). */
-#define COPY_REMOVE_TAGS	 1
-#define COPY_MAXIMIZE_FIRST_TAG	 2
+#define COPY_REMOVE_TAGS 1
+#define COPY_MAXIMIZE_FIRST_TAG 2
 
-static reg_errcode_t
-tre_copy_ast(tre_mem_t mem, tre_stack_t *stack, tre_ast_node_t *ast,
-	     int flags, int *pos_add, tre_tag_direction_t *tag_directions,
-	     tre_ast_node_t **copy, int *max_pos)
-{
+static reg_errcode_t tre_copy_ast(tre_mem_t mem,
+                                  tre_stack_t* stack,
+                                  tre_ast_node_t* ast,
+                                  int flags,
+                                  int* pos_add,
+                                  tre_tag_direction_t* tag_directions,
+                                  tre_ast_node_t** copy,
+                                  int* max_pos) {
   reg_errcode_t status = REG_OK;
   int bottom = tre_stack_num_objects(stack);
   int num_copied = 0;
   int first_tag = 1;
-  tre_ast_node_t **result = copy;
+  tre_ast_node_t** result = copy;
   tre_copyast_symbol_t symbol;
 
   STACK_PUSH(stack, voidptr, ast);
   STACK_PUSH(stack, int, COPY_RECURSE);
 
-  while (status == REG_OK && tre_stack_num_objects(stack) > bottom)
-    {
-      tre_ast_node_t *node;
-      if (status != REG_OK)
-	break;
+  while (status == REG_OK && tre_stack_num_objects(stack) > bottom) {
+    tre_ast_node_t* node;
+    if (status != REG_OK)
+      break;
 
-      symbol = (tre_copyast_symbol_t)tre_stack_pop_int(stack);
-      switch (symbol)
-	{
-	case COPY_SET_RESULT_PTR:
-	  result = tre_stack_pop_voidptr(stack);
-	  break;
-	case COPY_RECURSE:
-	  node = tre_stack_pop_voidptr(stack);
-	  switch (node->type)
-	    {
-	    case LITERAL:
-	      {
-		tre_literal_t *lit = node->obj;
-		int pos = lit->position;
-		int min = lit->code_min;
-		int max = lit->code_max;
-		if (!IS_SPECIAL(lit) || IS_BACKREF(lit))
-		  {
-		    /* XXX - e.g. [ab] has only one position but two
-		       nodes, so we are creating holes in the state space
-		       here.  Not fatal, just wastes memory. */
-		    pos += *pos_add;
-		    num_copied++;
-		  }
-		else if (IS_TAG(lit) && (flags & COPY_REMOVE_TAGS))
-		  {
-		    /* Change this tag to empty. */
-		    min = EMPTY;
-		    max = pos = -1;
-		  }
-		else if (IS_TAG(lit) && (flags & COPY_MAXIMIZE_FIRST_TAG)
-			 && first_tag)
-		  {
-		    /* Maximize the first tag. */
-		    tag_directions[max] = TRE_TAG_MAXIMIZE;
-		    first_tag = 0;
-		  }
-		*result = tre_ast_new_literal(mem, min, max, pos);
-		if (*result == NULL)
-		  status = REG_ESPACE;
-		else {
-		  tre_literal_t *p = (*result)->obj;
-		  p->class = lit->class;
-		  p->neg_classes = lit->neg_classes;
-		}
+    symbol = (tre_copyast_symbol_t)tre_stack_pop_int(stack);
+    switch (symbol) {
+      case COPY_SET_RESULT_PTR:
+        result = tre_stack_pop_voidptr(stack);
+        break;
+      case COPY_RECURSE:
+        node = tre_stack_pop_voidptr(stack);
+        switch (node->type) {
+          case LITERAL: {
+            tre_literal_t* lit = node->obj;
+            int pos = lit->position;
+            int min = lit->code_min;
+            int max = lit->code_max;
+            if (!IS_SPECIAL(lit) || IS_BACKREF(lit)) {
+              /* XXX - e.g. [ab] has only one position but two
+                 nodes, so we are creating holes in the state space
+                 here.  Not fatal, just wastes memory. */
+              pos += *pos_add;
+              num_copied++;
+            } else if (IS_TAG(lit) && (flags & COPY_REMOVE_TAGS)) {
+              /* Change this tag to empty. */
+              min = EMPTY;
+              max = pos = -1;
+            } else if (IS_TAG(lit) && (flags & COPY_MAXIMIZE_FIRST_TAG) &&
+                       first_tag) {
+              /* Maximize the first tag. */
+              tag_directions[max] = TRE_TAG_MAXIMIZE;
+              first_tag = 0;
+            }
+            *result = tre_ast_new_literal(mem, min, max, pos);
+            if (*result == NULL)
+              status = REG_ESPACE;
+            else {
+              tre_literal_t* p = (*result)->obj;
+              p->class = lit->class;
+              p->neg_classes = lit->neg_classes;
+            }
 
-		if (pos > *max_pos)
-		  *max_pos = pos;
-		break;
-	      }
-	    case UNION:
-	      {
-		tre_union_t *uni = node->obj;
-		tre_union_t *tmp;
-		*result = tre_ast_new_union(mem, uni->left, uni->right);
-		if (*result == NULL)
-		  {
-		    status = REG_ESPACE;
-		    break;
-		  }
-		tmp = (*result)->obj;
-		result = &tmp->left;
-		STACK_PUSHX(stack, voidptr, uni->right);
-		STACK_PUSHX(stack, int, COPY_RECURSE);
-		STACK_PUSHX(stack, voidptr, &tmp->right);
-		STACK_PUSHX(stack, int, COPY_SET_RESULT_PTR);
-		STACK_PUSHX(stack, voidptr, uni->left);
-		STACK_PUSHX(stack, int, COPY_RECURSE);
-		break;
-	      }
-	    case CATENATION:
-	      {
-		tre_catenation_t *cat = node->obj;
-		tre_catenation_t *tmp;
-		*result = tre_ast_new_catenation(mem, cat->left, cat->right);
-		if (*result == NULL)
-		  {
-		    status = REG_ESPACE;
-		    break;
-		  }
-		tmp = (*result)->obj;
-		tmp->left = NULL;
-		tmp->right = NULL;
-		result = &tmp->left;
+            if (pos > *max_pos)
+              *max_pos = pos;
+            break;
+          }
+          case UNION: {
+            tre_union_t* uni = node->obj;
+            tre_union_t* tmp;
+            *result = tre_ast_new_union(mem, uni->left, uni->right);
+            if (*result == NULL) {
+              status = REG_ESPACE;
+              break;
+            }
+            tmp = (*result)->obj;
+            result = &tmp->left;
+            STACK_PUSHX(stack, voidptr, uni->right);
+            STACK_PUSHX(stack, int, COPY_RECURSE);
+            STACK_PUSHX(stack, voidptr, &tmp->right);
+            STACK_PUSHX(stack, int, COPY_SET_RESULT_PTR);
+            STACK_PUSHX(stack, voidptr, uni->left);
+            STACK_PUSHX(stack, int, COPY_RECURSE);
+            break;
+          }
+          case CATENATION: {
+            tre_catenation_t* cat = node->obj;
+            tre_catenation_t* tmp;
+            *result = tre_ast_new_catenation(mem, cat->left, cat->right);
+            if (*result == NULL) {
+              status = REG_ESPACE;
+              break;
+            }
+            tmp = (*result)->obj;
+            tmp->left = NULL;
+            tmp->right = NULL;
+            result = &tmp->left;
 
-		STACK_PUSHX(stack, voidptr, cat->right);
-		STACK_PUSHX(stack, int, COPY_RECURSE);
-		STACK_PUSHX(stack, voidptr, &tmp->right);
-		STACK_PUSHX(stack, int, COPY_SET_RESULT_PTR);
-		STACK_PUSHX(stack, voidptr, cat->left);
-		STACK_PUSHX(stack, int, COPY_RECURSE);
-		break;
-	      }
-	    case ITERATION:
-	      {
-		tre_iteration_t *iter = node->obj;
-		STACK_PUSHX(stack, voidptr, iter->arg);
-		STACK_PUSHX(stack, int, COPY_RECURSE);
-		*result = tre_ast_new_iter(mem, iter->arg, iter->min,
-					   iter->max, iter->minimal);
-		if (*result == NULL)
-		  {
-		    status = REG_ESPACE;
-		    break;
-		  }
-		iter = (*result)->obj;
-		result = &iter->arg;
-		break;
-	      }
-	    default:
-	      assert(0);
-	      break;
-	    }
-	  break;
-	}
+            STACK_PUSHX(stack, voidptr, cat->right);
+            STACK_PUSHX(stack, int, COPY_RECURSE);
+            STACK_PUSHX(stack, voidptr, &tmp->right);
+            STACK_PUSHX(stack, int, COPY_SET_RESULT_PTR);
+            STACK_PUSHX(stack, voidptr, cat->left);
+            STACK_PUSHX(stack, int, COPY_RECURSE);
+            break;
+          }
+          case ITERATION: {
+            tre_iteration_t* iter = node->obj;
+            STACK_PUSHX(stack, voidptr, iter->arg);
+            STACK_PUSHX(stack, int, COPY_RECURSE);
+            *result = tre_ast_new_iter(mem, iter->arg, iter->min, iter->max,
+                                       iter->minimal);
+            if (*result == NULL) {
+              status = REG_ESPACE;
+              break;
+            }
+            iter = (*result)->obj;
+            result = &iter->arg;
+            break;
+          }
+          default:
+            assert(0);
+            break;
+        }
+        break;
     }
+  }
   *pos_add += num_copied;
   return status;
 }
 
-typedef enum {
-  EXPAND_RECURSE,
-  EXPAND_AFTER_ITER
-} tre_expand_ast_symbol_t;
+typedef enum { EXPAND_RECURSE, EXPAND_AFTER_ITER } tre_expand_ast_symbol_t;
 
 /* Expands each iteration node that has a finite nonzero minimum or maximum
    iteration count to a catenated sequence of copies of the node. */
-static reg_errcode_t
-tre_expand_ast(tre_mem_t mem, tre_stack_t *stack, tre_ast_node_t *ast,
-	       int *position, tre_tag_direction_t *tag_directions)
-{
+static reg_errcode_t tre_expand_ast(tre_mem_t mem,
+                                    tre_stack_t* stack,
+                                    tre_ast_node_t* ast,
+                                    int* position,
+                                    tre_tag_direction_t* tag_directions) {
   reg_errcode_t status = REG_OK;
   int bottom = tre_stack_num_objects(stack);
   int pos_add = 0;
@@ -1825,165 +1718,148 @@
 
   STACK_PUSHR(stack, voidptr, ast);
   STACK_PUSHR(stack, int, EXPAND_RECURSE);
-  while (status == REG_OK && tre_stack_num_objects(stack) > bottom)
-    {
-      tre_ast_node_t *node;
-      tre_expand_ast_symbol_t symbol;
+  while (status == REG_OK && tre_stack_num_objects(stack) > bottom) {
+    tre_ast_node_t* node;
+    tre_expand_ast_symbol_t symbol;
 
-      if (status != REG_OK)
-	break;
+    if (status != REG_OK)
+      break;
 
-      symbol = (tre_expand_ast_symbol_t)tre_stack_pop_int(stack);
-      node = tre_stack_pop_voidptr(stack);
-      switch (symbol)
-	{
-	case EXPAND_RECURSE:
-	  switch (node->type)
-	    {
-	    case LITERAL:
-	      {
-		tre_literal_t *lit= node->obj;
-		if (!IS_SPECIAL(lit) || IS_BACKREF(lit))
-		  {
-		    lit->position += pos_add;
-		    if (lit->position > max_pos)
-		      max_pos = lit->position;
-		  }
-		break;
-	      }
-	    case UNION:
-	      {
-		tre_union_t *uni = node->obj;
-		STACK_PUSHX(stack, voidptr, uni->right);
-		STACK_PUSHX(stack, int, EXPAND_RECURSE);
-		STACK_PUSHX(stack, voidptr, uni->left);
-		STACK_PUSHX(stack, int, EXPAND_RECURSE);
-		break;
-	      }
-	    case CATENATION:
-	      {
-		tre_catenation_t *cat = node->obj;
-		STACK_PUSHX(stack, voidptr, cat->right);
-		STACK_PUSHX(stack, int, EXPAND_RECURSE);
-		STACK_PUSHX(stack, voidptr, cat->left);
-		STACK_PUSHX(stack, int, EXPAND_RECURSE);
-		break;
-	      }
-	    case ITERATION:
-	      {
-		tre_iteration_t *iter = node->obj;
-		STACK_PUSHX(stack, int, pos_add);
-		STACK_PUSHX(stack, voidptr, node);
-		STACK_PUSHX(stack, int, EXPAND_AFTER_ITER);
-		STACK_PUSHX(stack, voidptr, iter->arg);
-		STACK_PUSHX(stack, int, EXPAND_RECURSE);
-		/* If we are going to expand this node at EXPAND_AFTER_ITER
-		   then don't increase the `pos' fields of the nodes now, it
-		   will get done when expanding. */
-		if (iter->min > 1 || iter->max > 1)
-		  pos_add = 0;
-		iter_depth++;
-		break;
-	      }
-	    default:
-	      assert(0);
-	      break;
-	    }
-	  break;
-	case EXPAND_AFTER_ITER:
-	  {
-	    tre_iteration_t *iter = node->obj;
-	    int pos_add_last;
-	    pos_add = tre_stack_pop_int(stack);
-	    pos_add_last = pos_add;
-	    if (iter->min > 1 || iter->max > 1)
-	      {
-		tre_ast_node_t *seq1 = NULL, *seq2 = NULL;
-		int j;
-		int pos_add_save = pos_add;
+    symbol = (tre_expand_ast_symbol_t)tre_stack_pop_int(stack);
+    node = tre_stack_pop_voidptr(stack);
+    switch (symbol) {
+      case EXPAND_RECURSE:
+        switch (node->type) {
+          case LITERAL: {
+            tre_literal_t* lit = node->obj;
+            if (!IS_SPECIAL(lit) || IS_BACKREF(lit)) {
+              lit->position += pos_add;
+              if (lit->position > max_pos)
+                max_pos = lit->position;
+            }
+            break;
+          }
+          case UNION: {
+            tre_union_t* uni = node->obj;
+            STACK_PUSHX(stack, voidptr, uni->right);
+            STACK_PUSHX(stack, int, EXPAND_RECURSE);
+            STACK_PUSHX(stack, voidptr, uni->left);
+            STACK_PUSHX(stack, int, EXPAND_RECURSE);
+            break;
+          }
+          case CATENATION: {
+            tre_catenation_t* cat = node->obj;
+            STACK_PUSHX(stack, voidptr, cat->right);
+            STACK_PUSHX(stack, int, EXPAND_RECURSE);
+            STACK_PUSHX(stack, voidptr, cat->left);
+            STACK_PUSHX(stack, int, EXPAND_RECURSE);
+            break;
+          }
+          case ITERATION: {
+            tre_iteration_t* iter = node->obj;
+            STACK_PUSHX(stack, int, pos_add);
+            STACK_PUSHX(stack, voidptr, node);
+            STACK_PUSHX(stack, int, EXPAND_AFTER_ITER);
+            STACK_PUSHX(stack, voidptr, iter->arg);
+            STACK_PUSHX(stack, int, EXPAND_RECURSE);
+            /* If we are going to expand this node at EXPAND_AFTER_ITER
+               then don't increase the `pos' fields of the nodes now, it
+               will get done when expanding. */
+            if (iter->min > 1 || iter->max > 1)
+              pos_add = 0;
+            iter_depth++;
+            break;
+          }
+          default:
+            assert(0);
+            break;
+        }
+        break;
+      case EXPAND_AFTER_ITER: {
+        tre_iteration_t* iter = node->obj;
+        int pos_add_last;
+        pos_add = tre_stack_pop_int(stack);
+        pos_add_last = pos_add;
+        if (iter->min > 1 || iter->max > 1) {
+          tre_ast_node_t *seq1 = NULL, *seq2 = NULL;
+          int j;
+          int pos_add_save = pos_add;
 
-		/* Create a catenated sequence of copies of the node. */
-		for (j = 0; j < iter->min; j++)
-		  {
-		    tre_ast_node_t *copy;
-		    /* Remove tags from all but the last copy. */
-		    int flags = ((j + 1 < iter->min)
-				 ? COPY_REMOVE_TAGS
-				 : COPY_MAXIMIZE_FIRST_TAG);
-		    pos_add_save = pos_add;
-		    status = tre_copy_ast(mem, stack, iter->arg, flags,
-					  &pos_add, tag_directions, &copy,
-					  &max_pos);
-		    if (status != REG_OK)
-		      return status;
-		    if (seq1 != NULL)
-		      seq1 = tre_ast_new_catenation(mem, seq1, copy);
-		    else
-		      seq1 = copy;
-		    if (seq1 == NULL)
-		      return REG_ESPACE;
-		  }
+          /* Create a catenated sequence of copies of the node. */
+          for (j = 0; j < iter->min; j++) {
+            tre_ast_node_t* copy;
+            /* Remove tags from all but the last copy. */
+            int flags = ((j + 1 < iter->min) ? COPY_REMOVE_TAGS
+                                             : COPY_MAXIMIZE_FIRST_TAG);
+            pos_add_save = pos_add;
+            status = tre_copy_ast(mem, stack, iter->arg, flags, &pos_add,
+                                  tag_directions, &copy, &max_pos);
+            if (status != REG_OK)
+              return status;
+            if (seq1 != NULL)
+              seq1 = tre_ast_new_catenation(mem, seq1, copy);
+            else
+              seq1 = copy;
+            if (seq1 == NULL)
+              return REG_ESPACE;
+          }
 
-		if (iter->max == -1)
-		  {
-		    /* No upper limit. */
-		    pos_add_save = pos_add;
-		    status = tre_copy_ast(mem, stack, iter->arg, 0,
-					  &pos_add, NULL, &seq2, &max_pos);
-		    if (status != REG_OK)
-		      return status;
-		    seq2 = tre_ast_new_iter(mem, seq2, 0, -1, 0);
-		    if (seq2 == NULL)
-		      return REG_ESPACE;
-		  }
-		else
-		  {
-		    for (j = iter->min; j < iter->max; j++)
-		      {
-			tre_ast_node_t *tmp, *copy;
-			pos_add_save = pos_add;
-			status = tre_copy_ast(mem, stack, iter->arg, 0,
-					      &pos_add, NULL, &copy, &max_pos);
-			if (status != REG_OK)
-			  return status;
-			if (seq2 != NULL)
-			  seq2 = tre_ast_new_catenation(mem, copy, seq2);
-			else
-			  seq2 = copy;
-			if (seq2 == NULL)
-			  return REG_ESPACE;
-			tmp = tre_ast_new_literal(mem, EMPTY, -1, -1);
-			if (tmp == NULL)
-			  return REG_ESPACE;
-			seq2 = tre_ast_new_union(mem, tmp, seq2);
-			if (seq2 == NULL)
-			  return REG_ESPACE;
-		      }
-		  }
+          if (iter->max == -1) {
+            /* No upper limit. */
+            pos_add_save = pos_add;
+            status = tre_copy_ast(mem, stack, iter->arg, 0, &pos_add, NULL,
+                                  &seq2, &max_pos);
+            if (status != REG_OK)
+              return status;
+            seq2 = tre_ast_new_iter(mem, seq2, 0, -1, 0);
+            if (seq2 == NULL)
+              return REG_ESPACE;
+          } else {
+            for (j = iter->min; j < iter->max; j++) {
+              tre_ast_node_t *tmp, *copy;
+              pos_add_save = pos_add;
+              status = tre_copy_ast(mem, stack, iter->arg, 0, &pos_add, NULL,
+                                    &copy, &max_pos);
+              if (status != REG_OK)
+                return status;
+              if (seq2 != NULL)
+                seq2 = tre_ast_new_catenation(mem, copy, seq2);
+              else
+                seq2 = copy;
+              if (seq2 == NULL)
+                return REG_ESPACE;
+              tmp = tre_ast_new_literal(mem, EMPTY, -1, -1);
+              if (tmp == NULL)
+                return REG_ESPACE;
+              seq2 = tre_ast_new_union(mem, tmp, seq2);
+              if (seq2 == NULL)
+                return REG_ESPACE;
+            }
+          }
 
-		pos_add = pos_add_save;
-		if (seq1 == NULL)
-		  seq1 = seq2;
-		else if (seq2 != NULL)
-		  seq1 = tre_ast_new_catenation(mem, seq1, seq2);
-		if (seq1 == NULL)
-		  return REG_ESPACE;
-		node->obj = seq1->obj;
-		node->type = seq1->type;
-	      }
+          pos_add = pos_add_save;
+          if (seq1 == NULL)
+            seq1 = seq2;
+          else if (seq2 != NULL)
+            seq1 = tre_ast_new_catenation(mem, seq1, seq2);
+          if (seq1 == NULL)
+            return REG_ESPACE;
+          node->obj = seq1->obj;
+          node->type = seq1->type;
+        }
 
-	    iter_depth--;
-	    pos_add_total += pos_add - pos_add_last;
-	    if (iter_depth == 0)
-	      pos_add = pos_add_total;
+        iter_depth--;
+        pos_add_total += pos_add - pos_add_last;
+        if (iter_depth == 0)
+          pos_add = pos_add_total;
 
-	    break;
-	  }
-	default:
-	  assert(0);
-	  break;
-	}
+        break;
+      }
+      default:
+        assert(0);
+        break;
     }
+  }
 
   *position += pos_add_total;
 
@@ -1997,10 +1873,8 @@
   return status;
 }
 
-static tre_pos_and_tags_t *
-tre_set_empty(tre_mem_t mem)
-{
-  tre_pos_and_tags_t *new_set;
+static tre_pos_and_tags_t* tre_set_empty(tre_mem_t mem) {
+  tre_pos_and_tags_t* new_set;
 
   new_set = tre_mem_calloc(mem, sizeof(*new_set));
   if (new_set == NULL)
@@ -2013,11 +1887,14 @@
   return new_set;
 }
 
-static tre_pos_and_tags_t *
-tre_set_one(tre_mem_t mem, int position, int code_min, int code_max,
-	    tre_ctype_t class, tre_ctype_t *neg_classes, int backref)
-{
-  tre_pos_and_tags_t *new_set;
+static tre_pos_and_tags_t* tre_set_one(tre_mem_t mem,
+                                       int position,
+                                       int code_min,
+                                       int code_max,
+                                       tre_ctype_t class,
+                                       tre_ctype_t* neg_classes,
+                                       int backref) {
+  tre_pos_and_tags_t* new_set;
 
   new_set = tre_mem_calloc(mem, sizeof(*new_set) * 2);
   if (new_set == NULL)
@@ -2036,73 +1913,74 @@
   return new_set;
 }
 
-static tre_pos_and_tags_t *
-tre_set_union(tre_mem_t mem, tre_pos_and_tags_t *set1, tre_pos_and_tags_t *set2,
-	      int *tags, int assertions)
-{
+static tre_pos_and_tags_t* tre_set_union(tre_mem_t mem,
+                                         tre_pos_and_tags_t* set1,
+                                         tre_pos_and_tags_t* set2,
+                                         int* tags,
+                                         int assertions) {
   int s1, s2, i, j;
-  tre_pos_and_tags_t *new_set;
-  int *new_tags;
+  tre_pos_and_tags_t* new_set;
+  int* new_tags;
   int num_tags;
 
-  for (num_tags = 0; tags != NULL && tags[num_tags] >= 0; num_tags++);
-  for (s1 = 0; set1[s1].position >= 0; s1++);
-  for (s2 = 0; set2[s2].position >= 0; s2++);
+  for (num_tags = 0; tags != NULL && tags[num_tags] >= 0; num_tags++)
+    ;
+  for (s1 = 0; set1[s1].position >= 0; s1++)
+    ;
+  for (s2 = 0; set2[s2].position >= 0; s2++)
+    ;
   new_set = tre_mem_calloc(mem, sizeof(*new_set) * (s1 + s2 + 1));
-  if (!new_set )
+  if (!new_set)
     return NULL;
 
-  for (s1 = 0; set1[s1].position >= 0; s1++)
-    {
-      new_set[s1].position = set1[s1].position;
-      new_set[s1].code_min = set1[s1].code_min;
-      new_set[s1].code_max = set1[s1].code_max;
-      new_set[s1].assertions = set1[s1].assertions | assertions;
-      new_set[s1].class = set1[s1].class;
-      new_set[s1].neg_classes = set1[s1].neg_classes;
-      new_set[s1].backref = set1[s1].backref;
-      if (set1[s1].tags == NULL && tags == NULL)
-	new_set[s1].tags = NULL;
-      else
-	{
-	  for (i = 0; set1[s1].tags != NULL && set1[s1].tags[i] >= 0; i++);
-	  new_tags = tre_mem_alloc(mem, (sizeof(*new_tags)
-					 * (i + num_tags + 1)));
-	  if (new_tags == NULL)
-	    return NULL;
-	  for (j = 0; j < i; j++)
-	    new_tags[j] = set1[s1].tags[j];
-	  for (i = 0; i < num_tags; i++)
-	    new_tags[j + i] = tags[i];
-	  new_tags[j + i] = -1;
-	  new_set[s1].tags = new_tags;
-	}
+  for (s1 = 0; set1[s1].position >= 0; s1++) {
+    new_set[s1].position = set1[s1].position;
+    new_set[s1].code_min = set1[s1].code_min;
+    new_set[s1].code_max = set1[s1].code_max;
+    new_set[s1].assertions = set1[s1].assertions | assertions;
+    new_set[s1].class = set1[s1].class;
+    new_set[s1].neg_classes = set1[s1].neg_classes;
+    new_set[s1].backref = set1[s1].backref;
+    if (set1[s1].tags == NULL && tags == NULL)
+      new_set[s1].tags = NULL;
+    else {
+      for (i = 0; set1[s1].tags != NULL && set1[s1].tags[i] >= 0; i++)
+        ;
+      new_tags = tre_mem_alloc(mem, (sizeof(*new_tags) * (i + num_tags + 1)));
+      if (new_tags == NULL)
+        return NULL;
+      for (j = 0; j < i; j++)
+        new_tags[j] = set1[s1].tags[j];
+      for (i = 0; i < num_tags; i++)
+        new_tags[j + i] = tags[i];
+      new_tags[j + i] = -1;
+      new_set[s1].tags = new_tags;
     }
+  }
 
-  for (s2 = 0; set2[s2].position >= 0; s2++)
-    {
-      new_set[s1 + s2].position = set2[s2].position;
-      new_set[s1 + s2].code_min = set2[s2].code_min;
-      new_set[s1 + s2].code_max = set2[s2].code_max;
-      /* XXX - why not | assertions here as well? */
-      new_set[s1 + s2].assertions = set2[s2].assertions;
-      new_set[s1 + s2].class = set2[s2].class;
-      new_set[s1 + s2].neg_classes = set2[s2].neg_classes;
-      new_set[s1 + s2].backref = set2[s2].backref;
-      if (set2[s2].tags == NULL)
-	new_set[s1 + s2].tags = NULL;
-      else
-	{
-	  for (i = 0; set2[s2].tags[i] >= 0; i++);
-	  new_tags = tre_mem_alloc(mem, sizeof(*new_tags) * (i + 1));
-	  if (new_tags == NULL)
-	    return NULL;
-	  for (j = 0; j < i; j++)
-	    new_tags[j] = set2[s2].tags[j];
-	  new_tags[j] = -1;
-	  new_set[s1 + s2].tags = new_tags;
-	}
+  for (s2 = 0; set2[s2].position >= 0; s2++) {
+    new_set[s1 + s2].position = set2[s2].position;
+    new_set[s1 + s2].code_min = set2[s2].code_min;
+    new_set[s1 + s2].code_max = set2[s2].code_max;
+    /* XXX - why not | assertions here as well? */
+    new_set[s1 + s2].assertions = set2[s2].assertions;
+    new_set[s1 + s2].class = set2[s2].class;
+    new_set[s1 + s2].neg_classes = set2[s2].neg_classes;
+    new_set[s1 + s2].backref = set2[s2].backref;
+    if (set2[s2].tags == NULL)
+      new_set[s1 + s2].tags = NULL;
+    else {
+      for (i = 0; set2[s2].tags[i] >= 0; i++)
+        ;
+      new_tags = tre_mem_alloc(mem, sizeof(*new_tags) * (i + 1));
+      if (new_tags == NULL)
+        return NULL;
+      for (j = 0; j < i; j++)
+        new_tags[j] = set2[s2].tags[j];
+      new_tags[j] = -1;
+      new_set[s1 + s2].tags = new_tags;
     }
+  }
   new_set[s1 + s2].position = -1;
   return new_set;
 }
@@ -2111,14 +1989,15 @@
    taken according to POSIX.2 rules, and adds the tags on that path to
    `tags'.   `tags' may be NULL.  If `num_tags_seen' is not NULL, it is
    set to the number of tags seen on the path. */
-static reg_errcode_t
-tre_match_empty(tre_stack_t *stack, tre_ast_node_t *node, int *tags,
-		int *assertions, int *num_tags_seen)
-{
-  tre_literal_t *lit;
-  tre_union_t *uni;
-  tre_catenation_t *cat;
-  tre_iteration_t *iter;
+static reg_errcode_t tre_match_empty(tre_stack_t* stack,
+                                     tre_ast_node_t* node,
+                                     int* tags,
+                                     int* assertions,
+                                     int* num_tags_seen) {
+  tre_literal_t* lit;
+  tre_union_t* uni;
+  tre_catenation_t* cat;
+  tre_iteration_t* iter;
   int i;
   int bottom = tre_stack_num_objects(stack);
   reg_errcode_t status = REG_OK;
@@ -2128,89 +2007,81 @@
   status = tre_stack_push_voidptr(stack, node);
 
   /* Walk through the tree recursively. */
-  while (status == REG_OK && tre_stack_num_objects(stack) > bottom)
-    {
-      node = tre_stack_pop_voidptr(stack);
+  while (status == REG_OK && tre_stack_num_objects(stack) > bottom) {
+    node = tre_stack_pop_voidptr(stack);
 
-      switch (node->type)
-	{
-	case LITERAL:
-	  lit = (tre_literal_t *)node->obj;
-	  switch (lit->code_min)
-	    {
-	    case TAG:
-	      if (lit->code_max >= 0)
-		{
-		  if (tags != NULL)
-		    {
-		      /* Add the tag to `tags'. */
-		      for (i = 0; tags[i] >= 0; i++)
-			if (tags[i] == lit->code_max)
-			  break;
-		      if (tags[i] < 0)
-			{
-			  tags[i] = lit->code_max;
-			  tags[i + 1] = -1;
-			}
-		    }
-		  if (num_tags_seen)
-		    (*num_tags_seen)++;
-		}
-	      break;
-	    case ASSERTION:
-	      assert(lit->code_max >= 1
-		     || lit->code_max <= ASSERT_LAST);
-	      if (assertions != NULL)
-		*assertions |= lit->code_max;
-	      break;
-	    case EMPTY:
-	      break;
-	    default:
-	      assert(0);
-	      break;
-	    }
-	  break;
+    switch (node->type) {
+      case LITERAL:
+        lit = (tre_literal_t*)node->obj;
+        switch (lit->code_min) {
+          case TAG:
+            if (lit->code_max >= 0) {
+              if (tags != NULL) {
+                /* Add the tag to `tags'. */
+                for (i = 0; tags[i] >= 0; i++)
+                  if (tags[i] == lit->code_max)
+                    break;
+                if (tags[i] < 0) {
+                  tags[i] = lit->code_max;
+                  tags[i + 1] = -1;
+                }
+              }
+              if (num_tags_seen)
+                (*num_tags_seen)++;
+            }
+            break;
+          case ASSERTION:
+            assert(lit->code_max >= 1 || lit->code_max <= ASSERT_LAST);
+            if (assertions != NULL)
+              *assertions |= lit->code_max;
+            break;
+          case EMPTY:
+            break;
+          default:
+            assert(0);
+            break;
+        }
+        break;
 
-	case UNION:
-	  /* Subexpressions starting earlier take priority over ones
-	     starting later, so we prefer the left subexpression over the
-	     right subexpression. */
-	  uni = (tre_union_t *)node->obj;
-	  if (uni->left->nullable)
-	    STACK_PUSHX(stack, voidptr, uni->left)
-	  else if (uni->right->nullable)
-	    STACK_PUSHX(stack, voidptr, uni->right)
-	  else
-	    assert(0);
-	  break;
+      case UNION:
+        /* Subexpressions starting earlier take priority over ones
+           starting later, so we prefer the left subexpression over the
+           right subexpression. */
+        uni = (tre_union_t*)node->obj;
+        if (uni->left->nullable)
+          STACK_PUSHX(stack, voidptr, uni->left)
+        else if (uni->right->nullable)
+          STACK_PUSHX(stack, voidptr, uni->right)
+        else
+          assert(0);
+        break;
 
-	case CATENATION:
-	  /* The path must go through both children. */
-	  cat = (tre_catenation_t *)node->obj;
-	  assert(cat->left->nullable);
-	  assert(cat->right->nullable);
-	  STACK_PUSHX(stack, voidptr, cat->left);
-	  STACK_PUSHX(stack, voidptr, cat->right);
-	  break;
+      case CATENATION:
+        /* The path must go through both children. */
+        cat = (tre_catenation_t*)node->obj;
+        assert(cat->left->nullable);
+        assert(cat->right->nullable);
+        STACK_PUSHX(stack, voidptr, cat->left);
+        STACK_PUSHX(stack, voidptr, cat->right);
+        break;
 
-	case ITERATION:
-	  /* A match with an empty string is preferred over no match at
-	     all, so we go through the argument if possible. */
-	  iter = (tre_iteration_t *)node->obj;
-	  if (iter->arg->nullable)
-	    STACK_PUSHX(stack, voidptr, iter->arg);
-	  break;
+      case ITERATION:
+        /* A match with an empty string is preferred over no match at
+           all, so we go through the argument if possible. */
+        iter = (tre_iteration_t*)node->obj;
+        if (iter->arg->nullable)
+          STACK_PUSHX(stack, voidptr, iter->arg);
+        break;
 
-	default:
-	  assert(0);
-	  break;
-	}
+      default:
+        assert(0);
+        break;
     }
+  }
 
   return status;
 }
 
-
 typedef enum {
   NFL_RECURSE,
   NFL_POST_UNION,
@@ -2218,263 +2089,228 @@
   NFL_POST_ITERATION
 } tre_nfl_stack_symbol_t;
 
-
 /* Computes and fills in the fields `nullable', `firstpos', and `lastpos' for
    the nodes of the AST `tree'. */
-static reg_errcode_t
-tre_compute_nfl(tre_mem_t mem, tre_stack_t *stack, tre_ast_node_t *tree)
-{
+static reg_errcode_t tre_compute_nfl(tre_mem_t mem,
+                                     tre_stack_t* stack,
+                                     tre_ast_node_t* tree) {
   int bottom = tre_stack_num_objects(stack);
 
   STACK_PUSHR(stack, voidptr, tree);
   STACK_PUSHR(stack, int, NFL_RECURSE);
 
-  while (tre_stack_num_objects(stack) > bottom)
-    {
-      tre_nfl_stack_symbol_t symbol;
-      tre_ast_node_t *node;
+  while (tre_stack_num_objects(stack) > bottom) {
+    tre_nfl_stack_symbol_t symbol;
+    tre_ast_node_t* node;
 
-      symbol = (tre_nfl_stack_symbol_t)tre_stack_pop_int(stack);
-      node = tre_stack_pop_voidptr(stack);
-      switch (symbol)
-	{
-	case NFL_RECURSE:
-	  switch (node->type)
-	    {
-	    case LITERAL:
-	      {
-		tre_literal_t *lit = (tre_literal_t *)node->obj;
-		if (IS_BACKREF(lit))
-		  {
-		    /* Back references: nullable = false, firstpos = {i},
-		       lastpos = {i}. */
-		    node->nullable = 0;
-		    node->firstpos = tre_set_one(mem, lit->position, 0,
-					     TRE_CHAR_MAX, 0, NULL, -1);
-		    if (!node->firstpos)
-		      return REG_ESPACE;
-		    node->lastpos = tre_set_one(mem, lit->position, 0,
-						TRE_CHAR_MAX, 0, NULL,
-						(int)lit->code_max);
-		    if (!node->lastpos)
-		      return REG_ESPACE;
-		  }
-		else if (lit->code_min < 0)
-		  {
-		    /* Tags, empty strings, params, and zero width assertions:
-		       nullable = true, firstpos = {}, and lastpos = {}. */
-		    node->nullable = 1;
-		    node->firstpos = tre_set_empty(mem);
-		    if (!node->firstpos)
-		      return REG_ESPACE;
-		    node->lastpos = tre_set_empty(mem);
-		    if (!node->lastpos)
-		      return REG_ESPACE;
-		  }
-		else
-		  {
-		    /* Literal at position i: nullable = false, firstpos = {i},
-		       lastpos = {i}. */
-		    node->nullable = 0;
-		    node->firstpos =
-		      tre_set_one(mem, lit->position, (int)lit->code_min,
-				  (int)lit->code_max, 0, NULL, -1);
-		    if (!node->firstpos)
-		      return REG_ESPACE;
-		    node->lastpos = tre_set_one(mem, lit->position,
-						(int)lit->code_min,
-						(int)lit->code_max,
-						lit->class, lit->neg_classes,
-						-1);
-		    if (!node->lastpos)
-		      return REG_ESPACE;
-		  }
-		break;
-	      }
+    symbol = (tre_nfl_stack_symbol_t)tre_stack_pop_int(stack);
+    node = tre_stack_pop_voidptr(stack);
+    switch (symbol) {
+      case NFL_RECURSE:
+        switch (node->type) {
+          case LITERAL: {
+            tre_literal_t* lit = (tre_literal_t*)node->obj;
+            if (IS_BACKREF(lit)) {
+              /* Back references: nullable = false, firstpos = {i},
+                 lastpos = {i}. */
+              node->nullable = 0;
+              node->firstpos =
+                  tre_set_one(mem, lit->position, 0, TRE_CHAR_MAX, 0, NULL, -1);
+              if (!node->firstpos)
+                return REG_ESPACE;
+              node->lastpos = tre_set_one(mem, lit->position, 0, TRE_CHAR_MAX,
+                                          0, NULL, (int)lit->code_max);
+              if (!node->lastpos)
+                return REG_ESPACE;
+            } else if (lit->code_min < 0) {
+              /* Tags, empty strings, params, and zero width assertions:
+                 nullable = true, firstpos = {}, and lastpos = {}. */
+              node->nullable = 1;
+              node->firstpos = tre_set_empty(mem);
+              if (!node->firstpos)
+                return REG_ESPACE;
+              node->lastpos = tre_set_empty(mem);
+              if (!node->lastpos)
+                return REG_ESPACE;
+            } else {
+              /* Literal at position i: nullable = false, firstpos = {i},
+                 lastpos = {i}. */
+              node->nullable = 0;
+              node->firstpos =
+                  tre_set_one(mem, lit->position, (int)lit->code_min,
+                              (int)lit->code_max, 0, NULL, -1);
+              if (!node->firstpos)
+                return REG_ESPACE;
+              node->lastpos = tre_set_one(
+                  mem, lit->position, (int)lit->code_min, (int)lit->code_max,
+                  lit->class, lit->neg_classes, -1);
+              if (!node->lastpos)
+                return REG_ESPACE;
+            }
+            break;
+          }
 
-	    case UNION:
-	      /* Compute the attributes for the two subtrees, and after that
-		 for this node. */
-	      STACK_PUSHR(stack, voidptr, node);
-	      STACK_PUSHR(stack, int, NFL_POST_UNION);
-	      STACK_PUSHR(stack, voidptr, ((tre_union_t *)node->obj)->right);
-	      STACK_PUSHR(stack, int, NFL_RECURSE);
-	      STACK_PUSHR(stack, voidptr, ((tre_union_t *)node->obj)->left);
-	      STACK_PUSHR(stack, int, NFL_RECURSE);
-	      break;
+          case UNION:
+            /* Compute the attributes for the two subtrees, and after that
+               for this node. */
+            STACK_PUSHR(stack, voidptr, node);
+            STACK_PUSHR(stack, int, NFL_POST_UNION);
+            STACK_PUSHR(stack, voidptr, ((tre_union_t*)node->obj)->right);
+            STACK_PUSHR(stack, int, NFL_RECURSE);
+            STACK_PUSHR(stack, voidptr, ((tre_union_t*)node->obj)->left);
+            STACK_PUSHR(stack, int, NFL_RECURSE);
+            break;
 
-	    case CATENATION:
-	      /* Compute the attributes for the two subtrees, and after that
-		 for this node. */
-	      STACK_PUSHR(stack, voidptr, node);
-	      STACK_PUSHR(stack, int, NFL_POST_CATENATION);
-	      STACK_PUSHR(stack, voidptr, ((tre_catenation_t *)node->obj)->right);
-	      STACK_PUSHR(stack, int, NFL_RECURSE);
-	      STACK_PUSHR(stack, voidptr, ((tre_catenation_t *)node->obj)->left);
-	      STACK_PUSHR(stack, int, NFL_RECURSE);
-	      break;
+          case CATENATION:
+            /* Compute the attributes for the two subtrees, and after that
+               for this node. */
+            STACK_PUSHR(stack, voidptr, node);
+            STACK_PUSHR(stack, int, NFL_POST_CATENATION);
+            STACK_PUSHR(stack, voidptr, ((tre_catenation_t*)node->obj)->right);
+            STACK_PUSHR(stack, int, NFL_RECURSE);
+            STACK_PUSHR(stack, voidptr, ((tre_catenation_t*)node->obj)->left);
+            STACK_PUSHR(stack, int, NFL_RECURSE);
+            break;
 
-	    case ITERATION:
-	      /* Compute the attributes for the subtree, and after that for
-		 this node. */
-	      STACK_PUSHR(stack, voidptr, node);
-	      STACK_PUSHR(stack, int, NFL_POST_ITERATION);
-	      STACK_PUSHR(stack, voidptr, ((tre_iteration_t *)node->obj)->arg);
-	      STACK_PUSHR(stack, int, NFL_RECURSE);
-	      break;
-	    }
-	  break; /* end case: NFL_RECURSE */
+          case ITERATION:
+            /* Compute the attributes for the subtree, and after that for
+               this node. */
+            STACK_PUSHR(stack, voidptr, node);
+            STACK_PUSHR(stack, int, NFL_POST_ITERATION);
+            STACK_PUSHR(stack, voidptr, ((tre_iteration_t*)node->obj)->arg);
+            STACK_PUSHR(stack, int, NFL_RECURSE);
+            break;
+        }
+        break; /* end case: NFL_RECURSE */
 
-	case NFL_POST_UNION:
-	  {
-	    tre_union_t *uni = (tre_union_t *)node->obj;
-	    node->nullable = uni->left->nullable || uni->right->nullable;
-	    node->firstpos = tre_set_union(mem, uni->left->firstpos,
-					   uni->right->firstpos, NULL, 0);
-	    if (!node->firstpos)
-	      return REG_ESPACE;
-	    node->lastpos = tre_set_union(mem, uni->left->lastpos,
-					  uni->right->lastpos, NULL, 0);
-	    if (!node->lastpos)
-	      return REG_ESPACE;
-	    break;
-	  }
+      case NFL_POST_UNION: {
+        tre_union_t* uni = (tre_union_t*)node->obj;
+        node->nullable = uni->left->nullable || uni->right->nullable;
+        node->firstpos = tre_set_union(mem, uni->left->firstpos,
+                                       uni->right->firstpos, NULL, 0);
+        if (!node->firstpos)
+          return REG_ESPACE;
+        node->lastpos = tre_set_union(mem, uni->left->lastpos,
+                                      uni->right->lastpos, NULL, 0);
+        if (!node->lastpos)
+          return REG_ESPACE;
+        break;
+      }
 
-	case NFL_POST_ITERATION:
-	  {
-	    tre_iteration_t *iter = (tre_iteration_t *)node->obj;
+      case NFL_POST_ITERATION: {
+        tre_iteration_t* iter = (tre_iteration_t*)node->obj;
 
-	    if (iter->min == 0 || iter->arg->nullable)
-	      node->nullable = 1;
-	    else
-	      node->nullable = 0;
-	    node->firstpos = iter->arg->firstpos;
-	    node->lastpos = iter->arg->lastpos;
-	    break;
-	  }
+        if (iter->min == 0 || iter->arg->nullable)
+          node->nullable = 1;
+        else
+          node->nullable = 0;
+        node->firstpos = iter->arg->firstpos;
+        node->lastpos = iter->arg->lastpos;
+        break;
+      }
 
-	case NFL_POST_CATENATION:
-	  {
-	    int num_tags, *tags, assertions;
-	    reg_errcode_t status;
-	    tre_catenation_t *cat = node->obj;
-	    node->nullable = cat->left->nullable && cat->right->nullable;
+      case NFL_POST_CATENATION: {
+        int num_tags, *tags, assertions;
+        reg_errcode_t status;
+        tre_catenation_t* cat = node->obj;
+        node->nullable = cat->left->nullable && cat->right->nullable;
 
-	    /* Compute firstpos. */
-	    if (cat->left->nullable)
-	      {
-		/* The left side matches the empty string.  Make a first pass
-		   with tre_match_empty() to get the number of tags and
-		   parameters. */
-		status = tre_match_empty(stack, cat->left,
-					 NULL, NULL, &num_tags);
-		if (status != REG_OK)
-		  return status;
-		/* Allocate arrays for the tags and parameters. */
-		tags = xmalloc(sizeof(*tags) * (num_tags + 1));
-		if (!tags)
-		  return REG_ESPACE;
-		tags[0] = -1;
-		assertions = 0;
-		/* Second pass with tre_mach_empty() to get the list of
-		   tags and parameters. */
-		status = tre_match_empty(stack, cat->left, tags,
-					 &assertions, NULL);
-		if (status != REG_OK)
-		  {
-		    xfree(tags);
-		    return status;
-		  }
-		node->firstpos =
-		  tre_set_union(mem, cat->right->firstpos, cat->left->firstpos,
-				tags, assertions);
-		xfree(tags);
-		if (!node->firstpos)
-		  return REG_ESPACE;
-	      }
-	    else
-	      {
-		node->firstpos = cat->left->firstpos;
-	      }
+        /* Compute firstpos. */
+        if (cat->left->nullable) {
+          /* The left side matches the empty string.  Make a first pass
+             with tre_match_empty() to get the number of tags and
+             parameters. */
+          status = tre_match_empty(stack, cat->left, NULL, NULL, &num_tags);
+          if (status != REG_OK)
+            return status;
+          /* Allocate arrays for the tags and parameters. */
+          tags = xmalloc(sizeof(*tags) * (num_tags + 1));
+          if (!tags)
+            return REG_ESPACE;
+          tags[0] = -1;
+          assertions = 0;
+          /* Second pass with tre_mach_empty() to get the list of
+             tags and parameters. */
+          status = tre_match_empty(stack, cat->left, tags, &assertions, NULL);
+          if (status != REG_OK) {
+            xfree(tags);
+            return status;
+          }
+          node->firstpos = tre_set_union(mem, cat->right->firstpos,
+                                         cat->left->firstpos, tags, assertions);
+          xfree(tags);
+          if (!node->firstpos)
+            return REG_ESPACE;
+        } else {
+          node->firstpos = cat->left->firstpos;
+        }
 
-	    /* Compute lastpos. */
-	    if (cat->right->nullable)
-	      {
-		/* The right side matches the empty string.  Make a first pass
-		   with tre_match_empty() to get the number of tags and
-		   parameters. */
-		status = tre_match_empty(stack, cat->right,
-					 NULL, NULL, &num_tags);
-		if (status != REG_OK)
-		  return status;
-		/* Allocate arrays for the tags and parameters. */
-		tags = xmalloc(sizeof(int) * (num_tags + 1));
-		if (!tags)
-		  return REG_ESPACE;
-		tags[0] = -1;
-		assertions = 0;
-		/* Second pass with tre_mach_empty() to get the list of
-		   tags and parameters. */
-		status = tre_match_empty(stack, cat->right, tags,
-					 &assertions, NULL);
-		if (status != REG_OK)
-		  {
-		    xfree(tags);
-		    return status;
-		  }
-		node->lastpos =
-		  tre_set_union(mem, cat->left->lastpos, cat->right->lastpos,
-				tags, assertions);
-		xfree(tags);
-		if (!node->lastpos)
-		  return REG_ESPACE;
-	      }
-	    else
-	      {
-		node->lastpos = cat->right->lastpos;
-	      }
-	    break;
-	  }
+        /* Compute lastpos. */
+        if (cat->right->nullable) {
+          /* The right side matches the empty string.  Make a first pass
+             with tre_match_empty() to get the number of tags and
+             parameters. */
+          status = tre_match_empty(stack, cat->right, NULL, NULL, &num_tags);
+          if (status != REG_OK)
+            return status;
+          /* Allocate arrays for the tags and parameters. */
+          tags = xmalloc(sizeof(int) * (num_tags + 1));
+          if (!tags)
+            return REG_ESPACE;
+          tags[0] = -1;
+          assertions = 0;
+          /* Second pass with tre_mach_empty() to get the list of
+             tags and parameters. */
+          status = tre_match_empty(stack, cat->right, tags, &assertions, NULL);
+          if (status != REG_OK) {
+            xfree(tags);
+            return status;
+          }
+          node->lastpos = tre_set_union(mem, cat->left->lastpos,
+                                        cat->right->lastpos, tags, assertions);
+          xfree(tags);
+          if (!node->lastpos)
+            return REG_ESPACE;
+        } else {
+          node->lastpos = cat->right->lastpos;
+        }
+        break;
+      }
 
-	default:
-	  assert(0);
-	  break;
-	}
+      default:
+        assert(0);
+        break;
     }
+  }
 
   return REG_OK;
 }
 
-
 /* Adds a transition from each position in `p1' to each position in `p2'. */
-static reg_errcode_t
-tre_make_trans(tre_pos_and_tags_t *p1, tre_pos_and_tags_t *p2,
-	       tre_tnfa_transition_t *transitions,
-	       int *counts, int *offs)
-{
-  tre_pos_and_tags_t *orig_p2 = p2;
-  tre_tnfa_transition_t *trans;
+static reg_errcode_t tre_make_trans(tre_pos_and_tags_t* p1,
+                                    tre_pos_and_tags_t* p2,
+                                    tre_tnfa_transition_t* transitions,
+                                    int* counts,
+                                    int* offs) {
+  tre_pos_and_tags_t* orig_p2 = p2;
+  tre_tnfa_transition_t* trans;
   int i, j, k, l, dup, prev_p2_pos;
 
   if (transitions != NULL)
-    while (p1->position >= 0)
-      {
-	p2 = orig_p2;
-	prev_p2_pos = -1;
-	while (p2->position >= 0)
-	  {
-	    /* Optimization: if this position was already handled, skip it. */
-	    if (p2->position == prev_p2_pos)
-	      {
-		p2++;
-		continue;
-	      }
-	    prev_p2_pos = p2->position;
-	    /* Set `trans' to point to the next unused transition from
-	       position `p1->position'. */
-	    trans = transitions + offs[p1->position];
-	    while (trans->state != NULL)
-	      {
+    while (p1->position >= 0) {
+      p2 = orig_p2;
+      prev_p2_pos = -1;
+      while (p2->position >= 0) {
+        /* Optimization: if this position was already handled, skip it. */
+        if (p2->position == prev_p2_pos) {
+          p2++;
+          continue;
+        }
+        prev_p2_pos = p2->position;
+        /* Set `trans' to point to the next unused transition from
+           position `p1->position'. */
+        trans = transitions + offs[p1->position];
+        while (trans->state != NULL) {
 #if 0
 		/* If we find a previous transition from `p1->position' to
 		   `p2->position', it is overwritten.  This can happen only
@@ -2492,108 +2328,99 @@
 		    break;
 		  }
 #endif
-		trans++;
-	      }
+          trans++;
+        }
 
-	    if (trans->state == NULL)
-	      (trans + 1)->state = NULL;
-	    /* Use the character ranges, assertions, etc. from `p1' for
-	       the transition from `p1' to `p2'. */
-	    trans->code_min = p1->code_min;
-	    trans->code_max = p1->code_max;
-	    trans->state = transitions + offs[p2->position];
-	    trans->state_id = p2->position;
-	    trans->assertions = p1->assertions | p2->assertions
-	      | (p1->class ? ASSERT_CHAR_CLASS : 0)
-	      | (p1->neg_classes != NULL ? ASSERT_CHAR_CLASS_NEG : 0);
-	    if (p1->backref >= 0)
-	      {
-		assert((trans->assertions & ASSERT_CHAR_CLASS) == 0);
-		assert(p2->backref < 0);
-		trans->u.backref = p1->backref;
-		trans->assertions |= ASSERT_BACKREF;
-	      }
-	    else
-	      trans->u.class = p1->class;
-	    if (p1->neg_classes != NULL)
-	      {
-		for (i = 0; p1->neg_classes[i] != (tre_ctype_t)0; i++);
-		trans->neg_classes =
-		  xmalloc(sizeof(*trans->neg_classes) * (i + 1));
-		if (trans->neg_classes == NULL)
-		  return REG_ESPACE;
-		for (i = 0; p1->neg_classes[i] != (tre_ctype_t)0; i++)
-		  trans->neg_classes[i] = p1->neg_classes[i];
-		trans->neg_classes[i] = (tre_ctype_t)0;
-	      }
-	    else
-	      trans->neg_classes = NULL;
+        if (trans->state == NULL)
+          (trans + 1)->state = NULL;
+        /* Use the character ranges, assertions, etc. from `p1' for
+           the transition from `p1' to `p2'. */
+        trans->code_min = p1->code_min;
+        trans->code_max = p1->code_max;
+        trans->state = transitions + offs[p2->position];
+        trans->state_id = p2->position;
+        trans->assertions =
+            p1->assertions | p2->assertions |
+            (p1->class ? ASSERT_CHAR_CLASS : 0) |
+            (p1->neg_classes != NULL ? ASSERT_CHAR_CLASS_NEG : 0);
+        if (p1->backref >= 0) {
+          assert((trans->assertions & ASSERT_CHAR_CLASS) == 0);
+          assert(p2->backref < 0);
+          trans->u.backref = p1->backref;
+          trans->assertions |= ASSERT_BACKREF;
+        } else
+          trans->u.class = p1->class;
+        if (p1->neg_classes != NULL) {
+          for (i = 0; p1->neg_classes[i] != (tre_ctype_t)0; i++)
+            ;
+          trans->neg_classes = xmalloc(sizeof(*trans->neg_classes) * (i + 1));
+          if (trans->neg_classes == NULL)
+            return REG_ESPACE;
+          for (i = 0; p1->neg_classes[i] != (tre_ctype_t)0; i++)
+            trans->neg_classes[i] = p1->neg_classes[i];
+          trans->neg_classes[i] = (tre_ctype_t)0;
+        } else
+          trans->neg_classes = NULL;
 
-	    /* Find out how many tags this transition has. */
-	    i = 0;
-	    if (p1->tags != NULL)
-	      while(p1->tags[i] >= 0)
-		i++;
-	    j = 0;
-	    if (p2->tags != NULL)
-	      while(p2->tags[j] >= 0)
-		j++;
+        /* Find out how many tags this transition has. */
+        i = 0;
+        if (p1->tags != NULL)
+          while (p1->tags[i] >= 0)
+            i++;
+        j = 0;
+        if (p2->tags != NULL)
+          while (p2->tags[j] >= 0)
+            j++;
 
-	    /* If we are overwriting a transition, free the old tag array. */
-	    if (trans->tags != NULL)
-	      xfree(trans->tags);
-	    trans->tags = NULL;
+        /* If we are overwriting a transition, free the old tag array. */
+        if (trans->tags != NULL)
+          xfree(trans->tags);
+        trans->tags = NULL;
 
-	    /* If there were any tags, allocate an array and fill it. */
-	    if (i + j > 0)
-	      {
-		trans->tags = xmalloc(sizeof(*trans->tags) * (i + j + 1));
-		if (!trans->tags)
-		  return REG_ESPACE;
-		i = 0;
-		if (p1->tags != NULL)
-		  while(p1->tags[i] >= 0)
-		    {
-		      trans->tags[i] = p1->tags[i];
-		      i++;
-		    }
-		l = i;
-		j = 0;
-		if (p2->tags != NULL)
-		  while (p2->tags[j] >= 0)
-		    {
-		      /* Don't add duplicates. */
-		      dup = 0;
-		      for (k = 0; k < i; k++)
-			if (trans->tags[k] == p2->tags[j])
-			  {
-			    dup = 1;
-			    break;
-			  }
-		      if (!dup)
-			trans->tags[l++] = p2->tags[j];
-		      j++;
-		    }
-		trans->tags[l] = -1;
-	      }
+        /* If there were any tags, allocate an array and fill it. */
+        if (i + j > 0) {
+          trans->tags = xmalloc(sizeof(*trans->tags) * (i + j + 1));
+          if (!trans->tags)
+            return REG_ESPACE;
+          i = 0;
+          if (p1->tags != NULL)
+            while (p1->tags[i] >= 0) {
+              trans->tags[i] = p1->tags[i];
+              i++;
+            }
+          l = i;
+          j = 0;
+          if (p2->tags != NULL)
+            while (p2->tags[j] >= 0) {
+              /* Don't add duplicates. */
+              dup = 0;
+              for (k = 0; k < i; k++)
+                if (trans->tags[k] == p2->tags[j]) {
+                  dup = 1;
+                  break;
+                }
+              if (!dup)
+                trans->tags[l++] = p2->tags[j];
+              j++;
+            }
+          trans->tags[l] = -1;
+        }
 
-	    p2++;
-	  }
-	p1++;
+        p2++;
       }
+      p1++;
+    }
   else
     /* Compute a maximum limit for the number of transitions leaving
        from each state. */
-    while (p1->position >= 0)
-      {
-	p2 = orig_p2;
-	while (p2->position >= 0)
-	  {
-	    counts[p1->position]++;
-	    p2++;
-	  }
-	p1++;
+    while (p1->position >= 0) {
+      p2 = orig_p2;
+      while (p2->position >= 0) {
+        counts[p1->position]++;
+        p2++;
       }
+      p1++;
+    }
   return REG_OK;
 }
 
@@ -2601,85 +2428,77 @@
    labelled with one character range (there are no transitions on empty
    strings).  The TNFA takes O(n^2) space in the worst case, `n' is size of
    the regexp. */
-static reg_errcode_t
-tre_ast_to_tnfa(tre_ast_node_t *node, tre_tnfa_transition_t *transitions,
-		int *counts, int *offs)
-{
-  tre_union_t *uni;
-  tre_catenation_t *cat;
-  tre_iteration_t *iter;
+static reg_errcode_t tre_ast_to_tnfa(tre_ast_node_t* node,
+                                     tre_tnfa_transition_t* transitions,
+                                     int* counts,
+                                     int* offs) {
+  tre_union_t* uni;
+  tre_catenation_t* cat;
+  tre_iteration_t* iter;
   reg_errcode_t errcode = REG_OK;
 
   /* XXX - recurse using a stack!. */
-  switch (node->type)
-    {
+  switch (node->type) {
     case LITERAL:
       break;
     case UNION:
-      uni = (tre_union_t *)node->obj;
+      uni = (tre_union_t*)node->obj;
       errcode = tre_ast_to_tnfa(uni->left, transitions, counts, offs);
       if (errcode != REG_OK)
-	return errcode;
+        return errcode;
       errcode = tre_ast_to_tnfa(uni->right, transitions, counts, offs);
       break;
 
     case CATENATION:
-      cat = (tre_catenation_t *)node->obj;
+      cat = (tre_catenation_t*)node->obj;
       /* Add a transition from each position in cat->left->lastpos
-	 to each position in cat->right->firstpos. */
+         to each position in cat->right->firstpos. */
       errcode = tre_make_trans(cat->left->lastpos, cat->right->firstpos,
-			       transitions, counts, offs);
+                               transitions, counts, offs);
       if (errcode != REG_OK)
-	return errcode;
+        return errcode;
       errcode = tre_ast_to_tnfa(cat->left, transitions, counts, offs);
       if (errcode != REG_OK)
-	return errcode;
+        return errcode;
       errcode = tre_ast_to_tnfa(cat->right, transitions, counts, offs);
       break;
 
     case ITERATION:
-      iter = (tre_iteration_t *)node->obj;
+      iter = (tre_iteration_t*)node->obj;
       assert(iter->max == -1 || iter->max == 1);
 
-      if (iter->max == -1)
-	{
-	  assert(iter->min == 0 || iter->min == 1);
-	  /* Add a transition from each last position in the iterated
-	     expression to each first position. */
-	  errcode = tre_make_trans(iter->arg->lastpos, iter->arg->firstpos,
-				   transitions, counts, offs);
-	  if (errcode != REG_OK)
-	    return errcode;
-	}
+      if (iter->max == -1) {
+        assert(iter->min == 0 || iter->min == 1);
+        /* Add a transition from each last position in the iterated
+           expression to each first position. */
+        errcode = tre_make_trans(iter->arg->lastpos, iter->arg->firstpos,
+                                 transitions, counts, offs);
+        if (errcode != REG_OK)
+          return errcode;
+      }
       errcode = tre_ast_to_tnfa(iter->arg, transitions, counts, offs);
       break;
-    }
+  }
   return errcode;
 }
 
+#define ERROR_EXIT(err)  \
+  do {                   \
+    errcode = err;       \
+    if (/*CONSTCOND*/ 1) \
+      goto error_exit;   \
+  } while (/*CONSTCOND*/ 0)
 
-#define ERROR_EXIT(err)		  \
-  do				  \
-    {				  \
-      errcode = err;		  \
-      if (/*CONSTCOND*/1)	  \
-      	goto error_exit;	  \
-    }				  \
- while (/*CONSTCOND*/0)
-
-
-int
-regcomp(regex_t *restrict preg, const char *restrict regex, int cflags)
-{
-  tre_stack_t *stack;
+int regcomp(regex_t* restrict preg, const char* restrict regex, int cflags) {
+  tre_stack_t* stack;
   tre_ast_node_t *tree, *tmp_ast_l, *tmp_ast_r;
-  tre_pos_and_tags_t *p;
+  tre_pos_and_tags_t* p;
   int *counts = NULL, *offs = NULL;
   int i, add = 0;
   tre_tnfa_transition_t *transitions, *initial;
-  tre_tnfa_t *tnfa = NULL;
-  tre_submatch_data_t *submatch_data;
-  tre_tag_direction_t *tag_directions = NULL;
+  tre_tnfa_t* tnfa = NULL;
+  tre_submatch_data_t* submatch_data;
+  tre_tag_direction_t* tag_directions = NULL;
   reg_errcode_t errcode;
   tre_mem_t mem;
 
@@ -2693,11 +2512,10 @@
     return REG_ESPACE;
   /* Allocate a fast memory allocator. */
   mem = tre_mem_new();
-  if (!mem)
-    {
-      tre_stack_destroy(stack);
-      return REG_ESPACE;
-    }
+  if (!mem) {
+    tre_stack_destroy(stack);
+    return REG_ESPACE;
+  }
 
   /* Parse the regexp. */
   memset(&parse_ctx, 0, sizeof(parse_ctx));
@@ -2730,51 +2548,46 @@
 
   /* Set up tags for submatch addressing.  If REG_NOSUB is set and the
      regexp does not have back references, this can be skipped. */
-  if (tnfa->have_backrefs || !(cflags & REG_NOSUB))
-    {
+  if (tnfa->have_backrefs || !(cflags & REG_NOSUB)) {
+    /* Figure out how many tags we will need. */
+    errcode = tre_add_tags(NULL, stack, tree, tnfa);
+    if (errcode != REG_OK)
+      ERROR_EXIT(errcode);
 
-      /* Figure out how many tags we will need. */
-      errcode = tre_add_tags(NULL, stack, tree, tnfa);
-      if (errcode != REG_OK)
-	ERROR_EXIT(errcode);
-
-      if (tnfa->num_tags > 0)
-	{
-	  tag_directions = xmalloc(sizeof(*tag_directions)
-				   * (tnfa->num_tags + 1));
-	  if (tag_directions == NULL)
-	    ERROR_EXIT(REG_ESPACE);
-	  tnfa->tag_directions = tag_directions;
-	  memset(tag_directions, -1,
-		 sizeof(*tag_directions) * (tnfa->num_tags + 1));
-	}
-      tnfa->minimal_tags = xcalloc((unsigned)tnfa->num_tags * 2 + 1,
-				   sizeof(*tnfa->minimal_tags));
-      if (tnfa->minimal_tags == NULL)
-	ERROR_EXIT(REG_ESPACE);
-
-      submatch_data = xcalloc((unsigned)parse_ctx.submatch_id,
-			      sizeof(*submatch_data));
-      if (submatch_data == NULL)
-	ERROR_EXIT(REG_ESPACE);
-      tnfa->submatch_data = submatch_data;
-
-      errcode = tre_add_tags(mem, stack, tree, tnfa);
-      if (errcode != REG_OK)
-	ERROR_EXIT(errcode);
-
+    if (tnfa->num_tags > 0) {
+      tag_directions = xmalloc(sizeof(*tag_directions) * (tnfa->num_tags + 1));
+      if (tag_directions == NULL)
+        ERROR_EXIT(REG_ESPACE);
+      tnfa->tag_directions = tag_directions;
+      memset(tag_directions, -1,
+             sizeof(*tag_directions) * (tnfa->num_tags + 1));
     }
+    tnfa->minimal_tags =
+        xcalloc((unsigned)tnfa->num_tags * 2 + 1, sizeof(*tnfa->minimal_tags));
+    if (tnfa->minimal_tags == NULL)
+      ERROR_EXIT(REG_ESPACE);
+
+    submatch_data =
+        xcalloc((unsigned)parse_ctx.submatch_id, sizeof(*submatch_data));
+    if (submatch_data == NULL)
+      ERROR_EXIT(REG_ESPACE);
+    tnfa->submatch_data = submatch_data;
+
+    errcode = tre_add_tags(mem, stack, tree, tnfa);
+    if (errcode != REG_OK)
+      ERROR_EXIT(errcode);
+  }
 
   /* Expand iteration nodes. */
-  errcode = tre_expand_ast(mem, stack, tree, &parse_ctx.position,
-			   tag_directions);
+  errcode =
+      tre_expand_ast(mem, stack, tree, &parse_ctx.position, tag_directions);
   if (errcode != REG_OK)
     ERROR_EXIT(errcode);
 
   /* Add a dummy node for the final state.
      XXX - For certain patterns this dummy node can be optimized away,
-	   for example "a*" or "ab*".	Figure out a simple way to detect
-	   this possibility. */
+           for example "a*" or "ab*".	Figure out a simple way to detect
+           this possibility. */
   tmp_ast_l = tree;
   tmp_ast_r = tre_ast_new_literal(mem, 0, 0, parse_ctx.position++);
   if (tmp_ast_r == NULL)
@@ -2801,12 +2614,11 @@
   tre_ast_to_tnfa(tree, NULL, counts, NULL);
 
   add = 0;
-  for (i = 0; i < parse_ctx.position; i++)
-    {
-      offs[i] = add;
-      add += counts[i] + 1;
-      counts[i] = 0;
-    }
+  for (i = 0; i < parse_ctx.position; i++) {
+    offs[i] = add;
+    add += counts[i] + 1;
+    counts[i] = 0;
+  }
   transitions = xcalloc((unsigned)add + 1, sizeof(*transitions));
   if (transitions == NULL)
     ERROR_EXIT(REG_ESPACE);
@@ -2821,11 +2633,10 @@
 
   p = tree->firstpos;
   i = 0;
-  while (p->position >= 0)
-    {
-      i++;
-      p++;
-    }
+  while (p->position >= 0) {
+    i++;
+    p++;
+  }
 
   initial = xcalloc((unsigned)i + 1, sizeof(tre_tnfa_transition_t));
   if (initial == NULL)
@@ -2833,25 +2644,24 @@
   tnfa->initial = initial;
 
   i = 0;
-  for (p = tree->firstpos; p->position >= 0; p++)
-    {
-      initial[i].state = transitions + offs[p->position];
-      initial[i].state_id = p->position;
-      initial[i].tags = NULL;
-      /* Copy the arrays p->tags, and p->params, they are allocated
-	 from a tre_mem object. */
-      if (p->tags)
-	{
-	  int j;
-	  for (j = 0; p->tags[j] >= 0; j++);
-	  initial[i].tags = xmalloc(sizeof(*p->tags) * (j + 1));
-	  if (!initial[i].tags)
-	    ERROR_EXIT(REG_ESPACE);
-	  memcpy(initial[i].tags, p->tags, sizeof(*p->tags) * (j + 1));
-	}
-      initial[i].assertions = p->assertions;
-      i++;
+  for (p = tree->firstpos; p->position >= 0; p++) {
+    initial[i].state = transitions + offs[p->position];
+    initial[i].state_id = p->position;
+    initial[i].tags = NULL;
+    /* Copy the arrays p->tags, and p->params, they are allocated
+       from a tre_mem object. */
+    if (p->tags) {
+      int j;
+      for (j = 0; p->tags[j] >= 0; j++)
+        ;
+      initial[i].tags = xmalloc(sizeof(*p->tags) * (j + 1));
+      if (!initial[i].tags)
+        ERROR_EXIT(REG_ESPACE);
+      memcpy(initial[i].tags, p->tags, sizeof(*p->tags) * (j + 1));
     }
+    initial[i].assertions = p->assertions;
+    i++;
+  }
   initial[i].state = NULL;
 
   tnfa->num_transitions = add;
@@ -2864,10 +2674,10 @@
   xfree(counts);
   xfree(offs);
 
-  preg->TRE_REGEX_T_FIELD = (void *)tnfa;
+  preg->TRE_REGEX_T_FIELD = (void*)tnfa;
   return REG_OK;
 
- error_exit:
+error_exit:
   /* Free everything that was allocated and return the error code. */
   tre_mem_destroy(mem);
   if (stack != NULL)
@@ -2876,53 +2686,44 @@
     xfree(counts);
   if (offs != NULL)
     xfree(offs);
-  preg->TRE_REGEX_T_FIELD = (void *)tnfa;
+  preg->TRE_REGEX_T_FIELD = (void*)tnfa;
   regfree(preg);
   return errcode;
 }
 
-
-
-
-void
-regfree(regex_t *preg)
-{
-  tre_tnfa_t *tnfa;
+void regfree(regex_t* preg) {
+  tre_tnfa_t* tnfa;
   unsigned int i;
-  tre_tnfa_transition_t *trans;
+  tre_tnfa_transition_t* trans;
 
-  tnfa = (void *)preg->TRE_REGEX_T_FIELD;
+  tnfa = (void*)preg->TRE_REGEX_T_FIELD;
   if (!tnfa)
     return;
 
   for (i = 0; i < tnfa->num_transitions; i++)
-    if (tnfa->transitions[i].state)
-      {
-	if (tnfa->transitions[i].tags)
-	  xfree(tnfa->transitions[i].tags);
-	if (tnfa->transitions[i].neg_classes)
-	  xfree(tnfa->transitions[i].neg_classes);
-      }
+    if (tnfa->transitions[i].state) {
+      if (tnfa->transitions[i].tags)
+        xfree(tnfa->transitions[i].tags);
+      if (tnfa->transitions[i].neg_classes)
+        xfree(tnfa->transitions[i].neg_classes);
+    }
   if (tnfa->transitions)
     xfree(tnfa->transitions);
 
-  if (tnfa->initial)
-    {
-      for (trans = tnfa->initial; trans->state; trans++)
-	{
-	  if (trans->tags)
-	    xfree(trans->tags);
-	}
-      xfree(tnfa->initial);
+  if (tnfa->initial) {
+    for (trans = tnfa->initial; trans->state; trans++) {
+      if (trans->tags)
+        xfree(trans->tags);
     }
+    xfree(tnfa->initial);
+  }
 
-  if (tnfa->submatch_data)
-    {
-      for (i = 0; i < tnfa->num_submatches; i++)
-	if (tnfa->submatch_data[i].parents)
-	  xfree(tnfa->submatch_data[i].parents);
-      xfree(tnfa->submatch_data);
-    }
+  if (tnfa->submatch_data) {
+    for (i = 0; i < tnfa->num_submatches; i++)
+      if (tnfa->submatch_data[i].parents)
+        xfree(tnfa->submatch_data[i].parents);
+    xfree(tnfa->submatch_data);
+  }
 
   if (tnfa->tag_directions)
     xfree(tnfa->tag_directions);
diff --git a/fusl/src/regex/regerror.c b/fusl/src/regex/regerror.c
index 5b347cc..24ca3da 100644
--- a/fusl/src/regex/regerror.c
+++ b/fusl/src/regex/regerror.c
@@ -10,28 +10,31 @@
  * data relocations at runtime, 27 Feb 2006. */
 
 static const char messages[] = {
-  "No error\0"
-  "No match\0"
-  "Invalid regexp\0"
-  "Unknown collating element\0"
-  "Unknown character class name\0"
-  "Trailing backslash\0"
-  "Invalid back reference\0"
-  "Missing ']'\0"
-  "Missing ')'\0"
-  "Missing '}'\0"
-  "Invalid contents of {}\0"
-  "Invalid character range\0"
-  "Out of memory\0"
-  "Repetition not preceded by valid expression\0"
-  "\0Unknown error"
-};
+    "No error\0"
+    "No match\0"
+    "Invalid regexp\0"
+    "Unknown collating element\0"
+    "Unknown character class name\0"
+    "Trailing backslash\0"
+    "Invalid back reference\0"
+    "Missing ']'\0"
+    "Missing ')'\0"
+    "Missing '}'\0"
+    "Invalid contents of {}\0"
+    "Invalid character range\0"
+    "Out of memory\0"
+    "Repetition not preceded by valid expression\0"
+    "\0Unknown error"};
 
-size_t regerror(int e, const regex_t *restrict preg, char *restrict buf, size_t size)
-{
-	const char *s;
-	for (s=messages; e && *s; e--, s+=strlen(s)+1);
-	if (!*s) s++;
-	s = LCTRANS_CUR(s);
-	return 1+snprintf(buf, size, "%s", s);
+size_t regerror(int e,
+                const regex_t* restrict preg,
+                char* restrict buf,
+                size_t size) {
+  const char* s;
+  for (s = messages; e && *s; e--, s += strlen(s) + 1)
+    ;
+  if (!*s)
+    s++;
+  s = LCTRANS_CUR(s);
+  return 1 + snprintf(buf, size, "%s", s);
 }
diff --git a/fusl/src/regex/regexec.c b/fusl/src/regex/regexec.c
index 16c5d0a..db6b36a 100644
--- a/fusl/src/regex/regexec.c
+++ b/fusl/src/regex/regexec.c
@@ -41,99 +41,96 @@
 
 #include <assert.h>
 
-static void
-tre_fill_pmatch(size_t nmatch, regmatch_t pmatch[], int cflags,
-		const tre_tnfa_t *tnfa, int *tags, int match_eo);
+static void tre_fill_pmatch(size_t nmatch,
+                            regmatch_t pmatch[],
+                            int cflags,
+                            const tre_tnfa_t* tnfa,
+                            int* tags,
+                            int match_eo);
 
 /***********************************************************************
  from tre-match-utils.h
 ***********************************************************************/
 
-#define GET_NEXT_WCHAR() do {                                                 \
-    prev_c = next_c; pos += pos_add_next;                                     \
-    if ((pos_add_next = mbtowc(&next_c, str_byte, MB_LEN_MAX)) <= 0) {        \
-        if (pos_add_next < 0) { ret = REG_NOMATCH; goto error_exit; }         \
-        else pos_add_next++;                                                  \
-    }                                                                         \
-    str_byte += pos_add_next;                                                 \
+#define GET_NEXT_WCHAR()                                               \
+  do {                                                                 \
+    prev_c = next_c;                                                   \
+    pos += pos_add_next;                                               \
+    if ((pos_add_next = mbtowc(&next_c, str_byte, MB_LEN_MAX)) <= 0) { \
+      if (pos_add_next < 0) {                                          \
+        ret = REG_NOMATCH;                                             \
+        goto error_exit;                                               \
+      } else                                                           \
+        pos_add_next++;                                                \
+    }                                                                  \
+    str_byte += pos_add_next;                                          \
   } while (0)
 
-#define IS_WORD_CHAR(c)	 ((c) == L'_' || tre_isalnum(c))
+#define IS_WORD_CHAR(c) ((c) == L'_' || tre_isalnum(c))
 
-#define CHECK_ASSERTIONS(assertions)					      \
-  (((assertions & ASSERT_AT_BOL)					      \
-    && (pos > 0 || reg_notbol)						      \
-    && (prev_c != L'\n' || !reg_newline))				      \
-   || ((assertions & ASSERT_AT_EOL)					      \
-       && (next_c != L'\0' || reg_noteol)				      \
-       && (next_c != L'\n' || !reg_newline))				      \
-   || ((assertions & ASSERT_AT_BOW)					      \
-       && (IS_WORD_CHAR(prev_c) || !IS_WORD_CHAR(next_c)))	              \
-   || ((assertions & ASSERT_AT_EOW)					      \
-       && (!IS_WORD_CHAR(prev_c) || IS_WORD_CHAR(next_c)))		      \
-   || ((assertions & ASSERT_AT_WB)					      \
-       && (pos != 0 && next_c != L'\0'					      \
-	   && IS_WORD_CHAR(prev_c) == IS_WORD_CHAR(next_c)))		      \
-   || ((assertions & ASSERT_AT_WB_NEG)					      \
-       && (pos == 0 || next_c == L'\0'					      \
-	   || IS_WORD_CHAR(prev_c) != IS_WORD_CHAR(next_c))))
+#define CHECK_ASSERTIONS(assertions)                                   \
+  (((assertions & ASSERT_AT_BOL) && (pos > 0 || reg_notbol) &&         \
+    (prev_c != L'\n' || !reg_newline)) ||                              \
+   ((assertions & ASSERT_AT_EOL) && (next_c != L'\0' || reg_noteol) && \
+    (next_c != L'\n' || !reg_newline)) ||                              \
+   ((assertions & ASSERT_AT_BOW) &&                                    \
+    (IS_WORD_CHAR(prev_c) || !IS_WORD_CHAR(next_c))) ||                \
+   ((assertions & ASSERT_AT_EOW) &&                                    \
+    (!IS_WORD_CHAR(prev_c) || IS_WORD_CHAR(next_c))) ||                \
+   ((assertions & ASSERT_AT_WB) &&                                     \
+    (pos != 0 && next_c != L'\0' &&                                    \
+     IS_WORD_CHAR(prev_c) == IS_WORD_CHAR(next_c))) ||                 \
+   ((assertions & ASSERT_AT_WB_NEG) &&                                 \
+    (pos == 0 || next_c == L'\0' ||                                    \
+     IS_WORD_CHAR(prev_c) != IS_WORD_CHAR(next_c))))
 
-#define CHECK_CHAR_CLASSES(trans_i, tnfa, eflags)                             \
-  (((trans_i->assertions & ASSERT_CHAR_CLASS)                                 \
-       && !(tnfa->cflags & REG_ICASE)                                         \
-       && !tre_isctype((tre_cint_t)prev_c, trans_i->u.class))                 \
-    || ((trans_i->assertions & ASSERT_CHAR_CLASS)                             \
-        && (tnfa->cflags & REG_ICASE)                                         \
-        && !tre_isctype(tre_tolower((tre_cint_t)prev_c),trans_i->u.class)     \
-	&& !tre_isctype(tre_toupper((tre_cint_t)prev_c),trans_i->u.class))    \
-    || ((trans_i->assertions & ASSERT_CHAR_CLASS_NEG)                         \
-        && tre_neg_char_classes_match(trans_i->neg_classes,(tre_cint_t)prev_c,\
-                                      tnfa->cflags & REG_ICASE)))
-
-
-
+#define CHECK_CHAR_CLASSES(trans_i, tnfa, eflags)                              \
+  (((trans_i->assertions & ASSERT_CHAR_CLASS) &&                               \
+    !(tnfa->cflags & REG_ICASE) &&                                             \
+    !tre_isctype((tre_cint_t)prev_c, trans_i->u.class)) ||                     \
+   ((trans_i->assertions & ASSERT_CHAR_CLASS) && (tnfa->cflags & REG_ICASE) && \
+    !tre_isctype(tre_tolower((tre_cint_t)prev_c), trans_i->u.class) &&         \
+    !tre_isctype(tre_toupper((tre_cint_t)prev_c), trans_i->u.class)) ||        \
+   ((trans_i->assertions & ASSERT_CHAR_CLASS_NEG) &&                           \
+    tre_neg_char_classes_match(trans_i->neg_classes, (tre_cint_t)prev_c,       \
+                               tnfa->cflags & REG_ICASE)))
 
 /* Returns 1 if `t1' wins `t2', 0 otherwise. */
-static int
-tre_tag_order(int num_tags, tre_tag_direction_t *tag_directions,
-	      int *t1, int *t2)
-{
+static int tre_tag_order(int num_tags,
+                         tre_tag_direction_t* tag_directions,
+                         int* t1,
+                         int* t2) {
   int i;
-  for (i = 0; i < num_tags; i++)
-    {
-      if (tag_directions[i] == TRE_TAG_MINIMIZE)
-	{
-	  if (t1[i] < t2[i])
-	    return 1;
-	  if (t1[i] > t2[i])
-	    return 0;
-	}
-      else
-	{
-	  if (t1[i] > t2[i])
-	    return 1;
-	  if (t1[i] < t2[i])
-	    return 0;
-	}
+  for (i = 0; i < num_tags; i++) {
+    if (tag_directions[i] == TRE_TAG_MINIMIZE) {
+      if (t1[i] < t2[i])
+        return 1;
+      if (t1[i] > t2[i])
+        return 0;
+    } else {
+      if (t1[i] > t2[i])
+        return 1;
+      if (t1[i] < t2[i])
+        return 0;
     }
+  }
   /*  assert(0);*/
   return 0;
 }
 
-static int
-tre_neg_char_classes_match(tre_ctype_t *classes, tre_cint_t wc, int icase)
-{
+static int tre_neg_char_classes_match(tre_ctype_t* classes,
+                                      tre_cint_t wc,
+                                      int icase) {
   while (*classes != (tre_ctype_t)0)
-    if ((!icase && tre_isctype(wc, *classes))
-	|| (icase && (tre_isctype(tre_toupper(wc), *classes)
-		      || tre_isctype(tre_tolower(wc), *classes))))
+    if ((!icase && tre_isctype(wc, *classes)) ||
+        (icase && (tre_isctype(tre_toupper(wc), *classes) ||
+                   tre_isctype(tre_tolower(wc), *classes))))
       return 1; /* Match. */
     else
       classes++;
   return 0; /* No match. */
 }
 
-
 /***********************************************************************
  from tre-match-parallel.c
 ***********************************************************************/
@@ -155,24 +152,23 @@
 */
 
 typedef struct {
-  tre_tnfa_transition_t *state;
-  int *tags;
+  tre_tnfa_transition_t* state;
+  int* tags;
 } tre_tnfa_reach_t;
 
 typedef struct {
   int pos;
-  int **tags;
+  int** tags;
 } tre_reach_pos_t;
 
-
-static reg_errcode_t
-tre_tnfa_run_parallel(const tre_tnfa_t *tnfa, const void *string,
-		      int *match_tags, int eflags,
-		      int *match_end_ofs)
-{
+static reg_errcode_t tre_tnfa_run_parallel(const tre_tnfa_t* tnfa,
+                                           const void* string,
+                                           int* match_tags,
+                                           int eflags,
+                                           int* match_end_ofs) {
   /* State variables required by GET_NEXT_WCHAR. */
   tre_char_t prev_c = 0, next_c = 0;
-  const char *str_byte = string;
+  const char* str_byte = string;
   int pos = -1;
   int pos_add_next = 1;
 #ifdef TRE_MBSTATE
@@ -183,17 +179,17 @@
   int reg_newline = tnfa->cflags & REG_NEWLINE;
   reg_errcode_t ret;
 
-  char *buf;
-  tre_tnfa_transition_t *trans_i;
+  char* buf;
+  tre_tnfa_transition_t* trans_i;
   tre_tnfa_reach_t *reach, *reach_next, *reach_i, *reach_next_i;
-  tre_reach_pos_t *reach_pos;
-  int *tag_i;
+  tre_reach_pos_t* reach_pos;
+  int* tag_i;
   int num_tags, i;
 
-  int match_eo = -1;	   /* end offset of match (-1 if no match found yet) */
+  int match_eo = -1; /* end offset of match (-1 if no match found yet) */
   int new_match = 0;
-  int *tmp_tags = NULL;
-  int *tmp_iptr;
+  int* tmp_tags = NULL;
+  int* tmp_iptr;
 
 #ifdef TRE_MBSTATE
   memset(&mbstate, '\0', sizeof(mbstate));
@@ -210,15 +206,14 @@
      or with malloc() if alloca is unavailable. */
   {
     int tbytes, rbytes, pbytes, xbytes, total_bytes;
-    char *tmp_buf;
+    char* tmp_buf;
     /* Compute the length of the block we need. */
     tbytes = sizeof(*tmp_tags) * num_tags;
     rbytes = sizeof(*reach_next) * (tnfa->num_states + 1);
     pbytes = sizeof(*reach_pos) * tnfa->num_states;
     xbytes = sizeof(int) * num_tags;
-    total_bytes =
-      (sizeof(long) - 1) * 4 /* for alignment paddings */
-      + (rbytes + xbytes * tnfa->num_states) * 2 + tbytes + pbytes;
+    total_bytes = (sizeof(long) - 1) * 4 /* for alignment paddings */
+                  + (rbytes + xbytes * tnfa->num_states) * 2 + tbytes + pbytes;
 
     /* Allocate the memory. */
     buf = xmalloc((unsigned)total_bytes);
@@ -227,25 +222,24 @@
     memset(buf, 0, (size_t)total_bytes);
 
     /* Get the various pointers within tmp_buf (properly aligned). */
-    tmp_tags = (void *)buf;
+    tmp_tags = (void*)buf;
     tmp_buf = buf + tbytes;
     tmp_buf += ALIGN(tmp_buf, long);
-    reach_next = (void *)tmp_buf;
+    reach_next = (void*)tmp_buf;
     tmp_buf += rbytes;
     tmp_buf += ALIGN(tmp_buf, long);
-    reach = (void *)tmp_buf;
+    reach = (void*)tmp_buf;
     tmp_buf += rbytes;
     tmp_buf += ALIGN(tmp_buf, long);
-    reach_pos = (void *)tmp_buf;
+    reach_pos = (void*)tmp_buf;
     tmp_buf += pbytes;
     tmp_buf += ALIGN(tmp_buf, long);
-    for (i = 0; i < tnfa->num_states; i++)
-      {
-	reach[i].tags = (void *)tmp_buf;
-	tmp_buf += xbytes;
-	reach_next[i].tags = (void *)tmp_buf;
-	tmp_buf += xbytes;
-      }
+    for (i = 0; i < tnfa->num_states; i++) {
+      reach[i].tags = (void*)tmp_buf;
+      tmp_buf += xbytes;
+      reach_next[i].tags = (void*)tmp_buf;
+      tmp_buf += xbytes;
+    }
   }
 
   for (i = 0; i < tnfa->num_states; i++)
@@ -255,191 +249,162 @@
   pos = 0;
 
   reach_next_i = reach_next;
-  while (1)
-    {
-      /* If no match found yet, add the initial states to `reach_next'. */
-      if (match_eo < 0)
-	{
-	  trans_i = tnfa->initial;
-	  while (trans_i->state != NULL)
-	    {
-	      if (reach_pos[trans_i->state_id].pos < pos)
-		{
-		  if (trans_i->assertions
-		      && CHECK_ASSERTIONS(trans_i->assertions))
-		    {
-		      trans_i++;
-		      continue;
-		    }
+  while (1) {
+    /* If no match found yet, add the initial states to `reach_next'. */
+    if (match_eo < 0) {
+      trans_i = tnfa->initial;
+      while (trans_i->state != NULL) {
+        if (reach_pos[trans_i->state_id].pos < pos) {
+          if (trans_i->assertions && CHECK_ASSERTIONS(trans_i->assertions)) {
+            trans_i++;
+            continue;
+          }
 
-		  reach_next_i->state = trans_i->state;
-		  for (i = 0; i < num_tags; i++)
-		    reach_next_i->tags[i] = -1;
-		  tag_i = trans_i->tags;
-		  if (tag_i)
-		    while (*tag_i >= 0)
-		      {
-			if (*tag_i < num_tags)
-			  reach_next_i->tags[*tag_i] = pos;
-			tag_i++;
-		      }
-		  if (reach_next_i->state == tnfa->final)
-		    {
-		      match_eo = pos;
-		      new_match = 1;
-		      for (i = 0; i < num_tags; i++)
-			match_tags[i] = reach_next_i->tags[i];
-		    }
-		  reach_pos[trans_i->state_id].pos = pos;
-		  reach_pos[trans_i->state_id].tags = &reach_next_i->tags;
-		  reach_next_i++;
-		}
-	      trans_i++;
-	    }
-	  reach_next_i->state = NULL;
-	}
-      else
-	{
-	  if (num_tags == 0 || reach_next_i == reach_next)
-	    /* We have found a match. */
-	    break;
-	}
+          reach_next_i->state = trans_i->state;
+          for (i = 0; i < num_tags; i++)
+            reach_next_i->tags[i] = -1;
+          tag_i = trans_i->tags;
+          if (tag_i)
+            while (*tag_i >= 0) {
+              if (*tag_i < num_tags)
+                reach_next_i->tags[*tag_i] = pos;
+              tag_i++;
+            }
+          if (reach_next_i->state == tnfa->final) {
+            match_eo = pos;
+            new_match = 1;
+            for (i = 0; i < num_tags; i++)
+              match_tags[i] = reach_next_i->tags[i];
+          }
+          reach_pos[trans_i->state_id].pos = pos;
+          reach_pos[trans_i->state_id].tags = &reach_next_i->tags;
+          reach_next_i++;
+        }
+        trans_i++;
+      }
+      reach_next_i->state = NULL;
+    } else {
+      if (num_tags == 0 || reach_next_i == reach_next)
+        /* We have found a match. */
+        break;
+    }
 
-      /* Check for end of string. */
-      if (!next_c) break;
+    /* Check for end of string. */
+    if (!next_c)
+      break;
 
-      GET_NEXT_WCHAR();
+    GET_NEXT_WCHAR();
+
+    /* Swap `reach' and `reach_next'. */
+    reach_i = reach;
+    reach = reach_next;
+    reach_next = reach_i;
+
+    /* For each state in `reach', weed out states that don't fulfill the
+       minimal matching conditions. */
+    if (tnfa->num_minimals && new_match) {
+      new_match = 0;
+      reach_next_i = reach_next;
+      for (reach_i = reach; reach_i->state; reach_i++) {
+        int skip = 0;
+        for (i = 0; tnfa->minimal_tags[i] >= 0; i += 2) {
+          int end = tnfa->minimal_tags[i];
+          int start = tnfa->minimal_tags[i + 1];
+          if (end >= num_tags) {
+            skip = 1;
+            break;
+          } else if (reach_i->tags[start] == match_tags[start] &&
+                     reach_i->tags[end] < match_tags[end]) {
+            skip = 1;
+            break;
+          }
+        }
+        if (!skip) {
+          reach_next_i->state = reach_i->state;
+          tmp_iptr = reach_next_i->tags;
+          reach_next_i->tags = reach_i->tags;
+          reach_i->tags = tmp_iptr;
+          reach_next_i++;
+        }
+      }
+      reach_next_i->state = NULL;
 
       /* Swap `reach' and `reach_next'. */
       reach_i = reach;
       reach = reach_next;
       reach_next = reach_i;
-
-      /* For each state in `reach', weed out states that don't fulfill the
-	 minimal matching conditions. */
-      if (tnfa->num_minimals && new_match)
-	{
-	  new_match = 0;
-	  reach_next_i = reach_next;
-	  for (reach_i = reach; reach_i->state; reach_i++)
-	    {
-	      int skip = 0;
-	      for (i = 0; tnfa->minimal_tags[i] >= 0; i += 2)
-		{
-		  int end = tnfa->minimal_tags[i];
-		  int start = tnfa->minimal_tags[i + 1];
-		  if (end >= num_tags)
-		    {
-		      skip = 1;
-		      break;
-		    }
-		  else if (reach_i->tags[start] == match_tags[start]
-			   && reach_i->tags[end] < match_tags[end])
-		    {
-		      skip = 1;
-		      break;
-		    }
-		}
-	      if (!skip)
-		{
-		  reach_next_i->state = reach_i->state;
-		  tmp_iptr = reach_next_i->tags;
-		  reach_next_i->tags = reach_i->tags;
-		  reach_i->tags = tmp_iptr;
-		  reach_next_i++;
-		}
-	    }
-	  reach_next_i->state = NULL;
-
-	  /* Swap `reach' and `reach_next'. */
-	  reach_i = reach;
-	  reach = reach_next;
-	  reach_next = reach_i;
-	}
-
-      /* For each state in `reach' see if there is a transition leaving with
-	 the current input symbol to a state not yet in `reach_next', and
-	 add the destination states to `reach_next'. */
-      reach_next_i = reach_next;
-      for (reach_i = reach; reach_i->state; reach_i++)
-	{
-	  for (trans_i = reach_i->state; trans_i->state; trans_i++)
-	    {
-	      /* Does this transition match the input symbol? */
-	      if (trans_i->code_min <= (tre_cint_t)prev_c &&
-		  trans_i->code_max >= (tre_cint_t)prev_c)
-		{
-		  if (trans_i->assertions
-		      && (CHECK_ASSERTIONS(trans_i->assertions)
-			  || CHECK_CHAR_CLASSES(trans_i, tnfa, eflags)))
-		    {
-		      continue;
-		    }
-
-		  /* Compute the tags after this transition. */
-		  for (i = 0; i < num_tags; i++)
-		    tmp_tags[i] = reach_i->tags[i];
-		  tag_i = trans_i->tags;
-		  if (tag_i != NULL)
-		    while (*tag_i >= 0)
-		      {
-			if (*tag_i < num_tags)
-			  tmp_tags[*tag_i] = pos;
-			tag_i++;
-		      }
-
-		  if (reach_pos[trans_i->state_id].pos < pos)
-		    {
-		      /* Found an unvisited node. */
-		      reach_next_i->state = trans_i->state;
-		      tmp_iptr = reach_next_i->tags;
-		      reach_next_i->tags = tmp_tags;
-		      tmp_tags = tmp_iptr;
-		      reach_pos[trans_i->state_id].pos = pos;
-		      reach_pos[trans_i->state_id].tags = &reach_next_i->tags;
-
-		      if (reach_next_i->state == tnfa->final
-			  && (match_eo == -1
-			      || (num_tags > 0
-				  && reach_next_i->tags[0] <= match_tags[0])))
-			{
-			  match_eo = pos;
-			  new_match = 1;
-			  for (i = 0; i < num_tags; i++)
-			    match_tags[i] = reach_next_i->tags[i];
-			}
-		      reach_next_i++;
-
-		    }
-		  else
-		    {
-		      assert(reach_pos[trans_i->state_id].pos == pos);
-		      /* Another path has also reached this state.  We choose
-			 the winner by examining the tag values for both
-			 paths. */
-		      if (tre_tag_order(num_tags, tnfa->tag_directions,
-					tmp_tags,
-					*reach_pos[trans_i->state_id].tags))
-			{
-			  /* The new path wins. */
-			  tmp_iptr = *reach_pos[trans_i->state_id].tags;
-			  *reach_pos[trans_i->state_id].tags = tmp_tags;
-			  if (trans_i->state == tnfa->final)
-			    {
-			      match_eo = pos;
-			      new_match = 1;
-			      for (i = 0; i < num_tags; i++)
-				match_tags[i] = tmp_tags[i];
-			    }
-			  tmp_tags = tmp_iptr;
-			}
-		    }
-		}
-	    }
-	}
-      reach_next_i->state = NULL;
     }
 
+    /* For each state in `reach' see if there is a transition leaving with
+       the current input symbol to a state not yet in `reach_next', and
+       add the destination states to `reach_next'. */
+    reach_next_i = reach_next;
+    for (reach_i = reach; reach_i->state; reach_i++) {
+      for (trans_i = reach_i->state; trans_i->state; trans_i++) {
+        /* Does this transition match the input symbol? */
+        if (trans_i->code_min <= (tre_cint_t)prev_c &&
+            trans_i->code_max >= (tre_cint_t)prev_c) {
+          if (trans_i->assertions &&
+              (CHECK_ASSERTIONS(trans_i->assertions) ||
+               CHECK_CHAR_CLASSES(trans_i, tnfa, eflags))) {
+            continue;
+          }
+
+          /* Compute the tags after this transition. */
+          for (i = 0; i < num_tags; i++)
+            tmp_tags[i] = reach_i->tags[i];
+          tag_i = trans_i->tags;
+          if (tag_i != NULL)
+            while (*tag_i >= 0) {
+              if (*tag_i < num_tags)
+                tmp_tags[*tag_i] = pos;
+              tag_i++;
+            }
+
+          if (reach_pos[trans_i->state_id].pos < pos) {
+            /* Found an unvisited node. */
+            reach_next_i->state = trans_i->state;
+            tmp_iptr = reach_next_i->tags;
+            reach_next_i->tags = tmp_tags;
+            tmp_tags = tmp_iptr;
+            reach_pos[trans_i->state_id].pos = pos;
+            reach_pos[trans_i->state_id].tags = &reach_next_i->tags;
+
+            if (reach_next_i->state == tnfa->final &&
+                (match_eo == -1 ||
+                 (num_tags > 0 && reach_next_i->tags[0] <= match_tags[0]))) {
+              match_eo = pos;
+              new_match = 1;
+              for (i = 0; i < num_tags; i++)
+                match_tags[i] = reach_next_i->tags[i];
+            }
+            reach_next_i++;
+
+          } else {
+            assert(reach_pos[trans_i->state_id].pos == pos);
+            /* Another path has also reached this state.  We choose
+               the winner by examining the tag values for both
+               paths. */
+            if (tre_tag_order(num_tags, tnfa->tag_directions, tmp_tags,
+                              *reach_pos[trans_i->state_id].tags)) {
+              /* The new path wins. */
+              tmp_iptr = *reach_pos[trans_i->state_id].tags;
+              *reach_pos[trans_i->state_id].tags = tmp_tags;
+              if (trans_i->state == tnfa->final) {
+                match_eo = pos;
+                new_match = 1;
+                for (i = 0; i < num_tags; i++)
+                  match_tags[i] = tmp_tags[i];
+              }
+              tmp_tags = tmp_iptr;
+            }
+          }
+        }
+      }
+    }
+    reach_next_i->state = NULL;
+  }
+
   *match_end_ofs = match_eo;
   ret = match_eo >= 0 ? REG_OK : REG_NOMATCH;
 error_exit:
@@ -447,8 +412,6 @@
   return ret;
 }
 
-
-
 /***********************************************************************
  from tre-match-backtrack.c
 ***********************************************************************/
@@ -478,11 +441,11 @@
 
 typedef struct {
   int pos;
-  const char *str_byte;
-  tre_tnfa_transition_t *state;
+  const char* str_byte;
+  tre_tnfa_transition_t* state;
   int state_id;
   int next_c;
-  int *tags;
+  int* tags;
 #ifdef TRE_MBSTATE
   mbstate_t mbstate;
 #endif /* TRE_MBSTATE */
@@ -490,99 +453,91 @@
 
 typedef struct tre_backtrack_struct {
   tre_backtrack_item_t item;
-  struct tre_backtrack_struct *prev;
-  struct tre_backtrack_struct *next;
-} *tre_backtrack_t;
+  struct tre_backtrack_struct* prev;
+  struct tre_backtrack_struct* next;
+} * tre_backtrack_t;
 
 #ifdef TRE_MBSTATE
-#define BT_STACK_MBSTATE_IN  stack->item.mbstate = (mbstate)
+#define BT_STACK_MBSTATE_IN stack->item.mbstate = (mbstate)
 #define BT_STACK_MBSTATE_OUT (mbstate) = stack->item.mbstate
 #else /* !TRE_MBSTATE */
 #define BT_STACK_MBSTATE_IN
 #define BT_STACK_MBSTATE_OUT
 #endif /* !TRE_MBSTATE */
 
-#define tre_bt_mem_new		  tre_mem_new
-#define tre_bt_mem_alloc	  tre_mem_alloc
-#define tre_bt_mem_destroy	  tre_mem_destroy
+#define tre_bt_mem_new tre_mem_new
+#define tre_bt_mem_alloc tre_mem_alloc
+#define tre_bt_mem_destroy tre_mem_destroy
 
+#define BT_STACK_PUSH(_pos, _str_byte, _str_wide, _state, _state_id, _next_c, \
+                      _tags, _mbstate)                                        \
+  do {                                                                        \
+    int i;                                                                    \
+    if (!stack->next) {                                                       \
+      tre_backtrack_t s;                                                      \
+      s = tre_bt_mem_alloc(mem, sizeof(*s));                                  \
+      if (!s) {                                                               \
+        tre_bt_mem_destroy(mem);                                              \
+        if (tags)                                                             \
+          xfree(tags);                                                        \
+        if (pmatch)                                                           \
+          xfree(pmatch);                                                      \
+        if (states_seen)                                                      \
+          xfree(states_seen);                                                 \
+        return REG_ESPACE;                                                    \
+      }                                                                       \
+      s->prev = stack;                                                        \
+      s->next = NULL;                                                         \
+      s->item.tags = tre_bt_mem_alloc(mem, sizeof(*tags) * tnfa->num_tags);   \
+      if (!s->item.tags) {                                                    \
+        tre_bt_mem_destroy(mem);                                              \
+        if (tags)                                                             \
+          xfree(tags);                                                        \
+        if (pmatch)                                                           \
+          xfree(pmatch);                                                      \
+        if (states_seen)                                                      \
+          xfree(states_seen);                                                 \
+        return REG_ESPACE;                                                    \
+      }                                                                       \
+      stack->next = s;                                                        \
+      stack = s;                                                              \
+    } else                                                                    \
+      stack = stack->next;                                                    \
+    stack->item.pos = (_pos);                                                 \
+    stack->item.str_byte = (_str_byte);                                       \
+    stack->item.state = (_state);                                             \
+    stack->item.state_id = (_state_id);                                       \
+    stack->item.next_c = (_next_c);                                           \
+    for (i = 0; i < tnfa->num_tags; i++)                                      \
+      stack->item.tags[i] = (_tags)[i];                                       \
+    BT_STACK_MBSTATE_IN;                                                      \
+  } while (0)
 
-#define BT_STACK_PUSH(_pos, _str_byte, _str_wide, _state, _state_id, _next_c, _tags, _mbstate) \
-  do									      \
-    {									      \
-      int i;								      \
-      if (!stack->next)							      \
-	{								      \
-	  tre_backtrack_t s;						      \
-	  s = tre_bt_mem_alloc(mem, sizeof(*s));			      \
-	  if (!s)							      \
-	    {								      \
-	      tre_bt_mem_destroy(mem);					      \
-	      if (tags)							      \
-		xfree(tags);						      \
-	      if (pmatch)						      \
-		xfree(pmatch);						      \
-	      if (states_seen)						      \
-		xfree(states_seen);					      \
-	      return REG_ESPACE;					      \
-	    }								      \
-	  s->prev = stack;						      \
-	  s->next = NULL;						      \
-	  s->item.tags = tre_bt_mem_alloc(mem,				      \
-					  sizeof(*tags) * tnfa->num_tags);    \
-	  if (!s->item.tags)						      \
-	    {								      \
-	      tre_bt_mem_destroy(mem);					      \
-	      if (tags)							      \
-		xfree(tags);						      \
-	      if (pmatch)						      \
-		xfree(pmatch);						      \
-	      if (states_seen)						      \
-		xfree(states_seen);					      \
-	      return REG_ESPACE;					      \
-	    }								      \
-	  stack->next = s;						      \
-	  stack = s;							      \
-	}								      \
-      else								      \
-	stack = stack->next;						      \
-      stack->item.pos = (_pos);						      \
-      stack->item.str_byte = (_str_byte);				      \
-      stack->item.state = (_state);					      \
-      stack->item.state_id = (_state_id);				      \
-      stack->item.next_c = (_next_c);					      \
-      for (i = 0; i < tnfa->num_tags; i++)				      \
-	stack->item.tags[i] = (_tags)[i];				      \
-      BT_STACK_MBSTATE_IN;						      \
-    }									      \
-  while (0)
-
-#define BT_STACK_POP()							      \
-  do									      \
-    {									      \
-      int i;								      \
-      assert(stack->prev);						      \
-      pos = stack->item.pos;						      \
-      str_byte = stack->item.str_byte;					      \
-      state = stack->item.state;					      \
-      next_c = stack->item.next_c;					      \
-      for (i = 0; i < tnfa->num_tags; i++)				      \
-	tags[i] = stack->item.tags[i];					      \
-      BT_STACK_MBSTATE_OUT;						      \
-      stack = stack->prev;						      \
-    }									      \
-  while (0)
+#define BT_STACK_POP()                   \
+  do {                                   \
+    int i;                               \
+    assert(stack->prev);                 \
+    pos = stack->item.pos;               \
+    str_byte = stack->item.str_byte;     \
+    state = stack->item.state;           \
+    next_c = stack->item.next_c;         \
+    for (i = 0; i < tnfa->num_tags; i++) \
+      tags[i] = stack->item.tags[i];     \
+    BT_STACK_MBSTATE_OUT;                \
+    stack = stack->prev;                 \
+  } while (0)
 
 #undef MIN
 #define MIN(a, b) ((a) <= (b) ? (a) : (b))
 
-static reg_errcode_t
-tre_tnfa_run_backtrack(const tre_tnfa_t *tnfa, const void *string,
-		       int *match_tags, int eflags, int *match_end_ofs)
-{
+static reg_errcode_t tre_tnfa_run_backtrack(const tre_tnfa_t* tnfa,
+                                            const void* string,
+                                            int* match_tags,
+                                            int eflags,
+                                            int* match_end_ofs) {
   /* State variables required by GET_NEXT_WCHAR. */
   tre_char_t prev_c = 0, next_c = 0;
-  const char *str_byte = string;
+  const char* str_byte = string;
   int pos = 0;
   int pos_add_next = 1;
 #ifdef TRE_MBSTATE
@@ -596,7 +551,7 @@
      variables to return to the position where the current search
      started from. */
   int next_c_start;
-  const char *str_byte_start;
+  const char* str_byte_start;
   int pos_start = -1;
 #ifdef TRE_MBSTATE
   mbstate_t mbstate_start;
@@ -607,8 +562,8 @@
   /* Tag arrays. */
   int *next_tags, *tags = NULL;
   /* Current TNFA state. */
-  tre_tnfa_transition_t *state;
-  int *states_seen = NULL;
+  tre_tnfa_transition_t* state;
+  int* states_seen = NULL;
 
   /* Memory allocator to for allocating the backtracking stack. */
   tre_mem_t mem = tre_bt_mem_new();
@@ -616,8 +571,8 @@
   /* The backtracking stack. */
   tre_backtrack_t stack;
 
-  tre_tnfa_transition_t *trans_i;
-  regmatch_t *pmatch = NULL;
+  tre_tnfa_transition_t* trans_i;
+  regmatch_t* pmatch = NULL;
   int ret;
 
 #ifdef TRE_MBSTATE
@@ -627,54 +582,45 @@
   if (!mem)
     return REG_ESPACE;
   stack = tre_bt_mem_alloc(mem, sizeof(*stack));
-  if (!stack)
-    {
-      ret = REG_ESPACE;
-      goto error_exit;
-    }
+  if (!stack) {
+    ret = REG_ESPACE;
+    goto error_exit;
+  }
   stack->prev = NULL;
   stack->next = NULL;
 
-  if (tnfa->num_tags)
-    {
-      tags = xmalloc(sizeof(*tags) * tnfa->num_tags);
-      if (!tags)
-	{
-	  ret = REG_ESPACE;
-	  goto error_exit;
-	}
+  if (tnfa->num_tags) {
+    tags = xmalloc(sizeof(*tags) * tnfa->num_tags);
+    if (!tags) {
+      ret = REG_ESPACE;
+      goto error_exit;
     }
-  if (tnfa->num_submatches)
-    {
-      pmatch = xmalloc(sizeof(*pmatch) * tnfa->num_submatches);
-      if (!pmatch)
-	{
-	  ret = REG_ESPACE;
-	  goto error_exit;
-	}
-    }
-  if (tnfa->num_states)
-    {
-      states_seen = xmalloc(sizeof(*states_seen) * tnfa->num_states);
-      if (!states_seen)
-	{
-	  ret = REG_ESPACE;
-	  goto error_exit;
-	}
-    }
-
- retry:
-  {
-    int i;
-    for (i = 0; i < tnfa->num_tags; i++)
-      {
-	tags[i] = -1;
-	if (match_tags)
-	  match_tags[i] = -1;
-      }
-    for (i = 0; i < tnfa->num_states; i++)
-      states_seen[i] = 0;
   }
+  if (tnfa->num_submatches) {
+    pmatch = xmalloc(sizeof(*pmatch) * tnfa->num_submatches);
+    if (!pmatch) {
+      ret = REG_ESPACE;
+      goto error_exit;
+    }
+  }
+  if (tnfa->num_states) {
+    states_seen = xmalloc(sizeof(*states_seen) * tnfa->num_states);
+    if (!states_seen) {
+      ret = REG_ESPACE;
+      goto error_exit;
+    }
+  }
+
+retry : {
+  int i;
+  for (i = 0; i < tnfa->num_tags; i++) {
+    tags[i] = -1;
+    if (match_tags)
+      match_tags[i] = -1;
+  }
+  for (i = 0; i < tnfa->num_states; i++)
+    states_seen[i] = 0;
+}
 
   state = NULL;
   pos = pos_start;
@@ -688,210 +634,175 @@
 
   /* Handle initial states. */
   next_tags = NULL;
-  for (trans_i = tnfa->initial; trans_i->state; trans_i++)
-    {
-      if (trans_i->assertions && CHECK_ASSERTIONS(trans_i->assertions))
-	{
-	  continue;
-	}
-      if (state == NULL)
-	{
-	  /* Start from this state. */
-	  state = trans_i->state;
-	  next_tags = trans_i->tags;
-	}
-      else
-	{
-	  /* Backtrack to this state. */
-	  BT_STACK_PUSH(pos, str_byte, 0, trans_i->state,
-			trans_i->state_id, next_c, tags, mbstate);
-	  {
-	    int *tmp = trans_i->tags;
-	    if (tmp)
-	      while (*tmp >= 0)
-		stack->item.tags[*tmp++] = pos;
-	  }
-	}
+  for (trans_i = tnfa->initial; trans_i->state; trans_i++) {
+    if (trans_i->assertions && CHECK_ASSERTIONS(trans_i->assertions)) {
+      continue;
     }
+    if (state == NULL) {
+      /* Start from this state. */
+      state = trans_i->state;
+      next_tags = trans_i->tags;
+    } else {
+      /* Backtrack to this state. */
+      BT_STACK_PUSH(pos, str_byte, 0, trans_i->state, trans_i->state_id, next_c,
+                    tags, mbstate);
+      {
+        int* tmp = trans_i->tags;
+        if (tmp)
+          while (*tmp >= 0)
+            stack->item.tags[*tmp++] = pos;
+      }
+    }
+  }
 
   if (next_tags)
     for (; *next_tags >= 0; next_tags++)
       tags[*next_tags] = pos;
 
-
   if (state == NULL)
     goto backtrack;
 
-  while (1)
-    {
-      tre_tnfa_transition_t *next_state;
-      int empty_br_match;
+  while (1) {
+    tre_tnfa_transition_t* next_state;
+    int empty_br_match;
 
-      if (state == tnfa->final)
-	{
-	  if (match_eo < pos
-	      || (match_eo == pos
-		  && match_tags
-		  && tre_tag_order(tnfa->num_tags, tnfa->tag_directions,
-				   tags, match_tags)))
-	    {
-	      int i;
-	      /* This match wins the previous match. */
-	      match_eo = pos;
-	      if (match_tags)
-		for (i = 0; i < tnfa->num_tags; i++)
-		  match_tags[i] = tags[i];
-	    }
-	  /* Our TNFAs never have transitions leaving from the final state,
-	     so we jump right to backtracking. */
-	  goto backtrack;
-	}
+    if (state == tnfa->final) {
+      if (match_eo < pos || (match_eo == pos && match_tags &&
+                             tre_tag_order(tnfa->num_tags, tnfa->tag_directions,
+                                           tags, match_tags))) {
+        int i;
+        /* This match wins the previous match. */
+        match_eo = pos;
+        if (match_tags)
+          for (i = 0; i < tnfa->num_tags; i++)
+            match_tags[i] = tags[i];
+      }
+      /* Our TNFAs never have transitions leaving from the final state,
+         so we jump right to backtracking. */
+      goto backtrack;
+    }
 
-      /* Go to the next character in the input string. */
-      empty_br_match = 0;
-      trans_i = state;
-      if (trans_i->state && trans_i->assertions & ASSERT_BACKREF)
-	{
-	  /* This is a back reference state.  All transitions leaving from
-	     this state have the same back reference "assertion".  Instead
-	     of reading the next character, we match the back reference. */
-	  int so, eo, bt = trans_i->u.backref;
-	  int bt_len;
-	  int result;
+    /* Go to the next character in the input string. */
+    empty_br_match = 0;
+    trans_i = state;
+    if (trans_i->state && trans_i->assertions & ASSERT_BACKREF) {
+      /* This is a back reference state.  All transitions leaving from
+         this state have the same back reference "assertion".  Instead
+         of reading the next character, we match the back reference. */
+      int so, eo, bt = trans_i->u.backref;
+      int bt_len;
+      int result;
 
-	  /* Get the substring we need to match against.  Remember to
-	     turn off REG_NOSUB temporarily. */
-	  tre_fill_pmatch(bt + 1, pmatch, tnfa->cflags & ~REG_NOSUB,
-			  tnfa, tags, pos);
-	  so = pmatch[bt].rm_so;
-	  eo = pmatch[bt].rm_eo;
-	  bt_len = eo - so;
+      /* Get the substring we need to match against.  Remember to
+         turn off REG_NOSUB temporarily. */
+      tre_fill_pmatch(bt + 1, pmatch, tnfa->cflags & ~REG_NOSUB, tnfa, tags,
+                      pos);
+      so = pmatch[bt].rm_so;
+      eo = pmatch[bt].rm_eo;
+      bt_len = eo - so;
 
-	  result = strncmp((const char*)string + so, str_byte - 1,
-				 (size_t)bt_len);
+      result = strncmp((const char*)string + so, str_byte - 1, (size_t)bt_len);
 
-	  if (result == 0)
-	    {
-	      /* Back reference matched.  Check for infinite loop. */
-	      if (bt_len == 0)
-		empty_br_match = 1;
-	      if (empty_br_match && states_seen[trans_i->state_id])
-		{
-		  goto backtrack;
-		}
+      if (result == 0) {
+        /* Back reference matched.  Check for infinite loop. */
+        if (bt_len == 0)
+          empty_br_match = 1;
+        if (empty_br_match && states_seen[trans_i->state_id]) {
+          goto backtrack;
+        }
 
-	      states_seen[trans_i->state_id] = empty_br_match;
+        states_seen[trans_i->state_id] = empty_br_match;
 
-	      /* Advance in input string and resync `prev_c', `next_c'
-		 and pos. */
-	      str_byte += bt_len - 1;
-	      pos += bt_len - 1;
-	      GET_NEXT_WCHAR();
-	    }
-	  else
-	    {
-	      goto backtrack;
-	    }
-	}
-      else
-	{
-	  /* Check for end of string. */
-	  if (next_c == L'\0')
-		goto backtrack;
+        /* Advance in input string and resync `prev_c', `next_c'
+           and pos. */
+        str_byte += bt_len - 1;
+        pos += bt_len - 1;
+        GET_NEXT_WCHAR();
+      } else {
+        goto backtrack;
+      }
+    } else {
+      /* Check for end of string. */
+      if (next_c == L'\0')
+        goto backtrack;
 
-	  /* Read the next character. */
-	  GET_NEXT_WCHAR();
-	}
+      /* Read the next character. */
+      GET_NEXT_WCHAR();
+    }
 
-      next_state = NULL;
-      for (trans_i = state; trans_i->state; trans_i++)
-	{
-	  if (trans_i->code_min <= (tre_cint_t)prev_c
-	      && trans_i->code_max >= (tre_cint_t)prev_c)
-	    {
-	      if (trans_i->assertions
-		  && (CHECK_ASSERTIONS(trans_i->assertions)
-		      || CHECK_CHAR_CLASSES(trans_i, tnfa, eflags)))
-		{
-		  continue;
-		}
+    next_state = NULL;
+    for (trans_i = state; trans_i->state; trans_i++) {
+      if (trans_i->code_min <= (tre_cint_t)prev_c &&
+          trans_i->code_max >= (tre_cint_t)prev_c) {
+        if (trans_i->assertions &&
+            (CHECK_ASSERTIONS(trans_i->assertions) ||
+             CHECK_CHAR_CLASSES(trans_i, tnfa, eflags))) {
+          continue;
+        }
 
-	      if (next_state == NULL)
-		{
-		  /* First matching transition. */
-		  next_state = trans_i->state;
-		  next_tags = trans_i->tags;
-		}
-	      else
-		{
-		  /* Second matching transition.  We may need to backtrack here
-		     to take this transition instead of the first one, so we
-		     push this transition in the backtracking stack so we can
-		     jump back here if needed. */
-		  BT_STACK_PUSH(pos, str_byte, 0, trans_i->state,
-				trans_i->state_id, next_c, tags, mbstate);
-		  {
-		    int *tmp;
-		    for (tmp = trans_i->tags; tmp && *tmp >= 0; tmp++)
-		      stack->item.tags[*tmp] = pos;
-		  }
-#if 0 /* XXX - it's important not to look at all transitions here to keep
-	 the stack small! */
+        if (next_state == NULL) {
+          /* First matching transition. */
+          next_state = trans_i->state;
+          next_tags = trans_i->tags;
+        } else {
+          /* Second matching transition.  We may need to backtrack here
+             to take this transition instead of the first one, so we
+             push this transition in the backtracking stack so we can
+             jump back here if needed. */
+          BT_STACK_PUSH(pos, str_byte, 0, trans_i->state, trans_i->state_id,
+                        next_c, tags, mbstate);
+          {
+            int* tmp;
+            for (tmp = trans_i->tags; tmp && *tmp >= 0; tmp++)
+              stack->item.tags[*tmp] = pos;
+          }
+#if 0 /* XXX - it's important not to look at all transitions here to keep \
+         the stack small! */
 		  break;
 #endif
-		}
-	    }
-	}
-
-      if (next_state != NULL)
-	{
-	  /* Matching transitions were found.  Take the first one. */
-	  state = next_state;
-
-	  /* Update the tag values. */
-	  if (next_tags)
-	    while (*next_tags >= 0)
-	      tags[*next_tags++] = pos;
-	}
-      else
-	{
-	backtrack:
-	  /* A matching transition was not found.  Try to backtrack. */
-	  if (stack->prev)
-	    {
-	      if (stack->item.state->assertions & ASSERT_BACKREF)
-		{
-		  states_seen[stack->item.state_id] = 0;
-		}
-
-	      BT_STACK_POP();
-	    }
-	  else if (match_eo < 0)
-	    {
-	      /* Try starting from a later position in the input string. */
-	      /* Check for end of string. */
-	      if (next_c == L'\0')
-		    {
-		      break;
-		    }
-	      next_c = next_c_start;
-#ifdef TRE_MBSTATE
-	      mbstate = mbstate_start;
-#endif /* TRE_MBSTATE */
-	      str_byte = str_byte_start;
-	      goto retry;
-	    }
-	  else
-	    {
-	      break;
-	    }
-	}
+        }
+      }
     }
 
+    if (next_state != NULL) {
+      /* Matching transitions were found.  Take the first one. */
+      state = next_state;
+
+      /* Update the tag values. */
+      if (next_tags)
+        while (*next_tags >= 0)
+          tags[*next_tags++] = pos;
+    } else {
+    backtrack:
+      /* A matching transition was not found.  Try to backtrack. */
+      if (stack->prev) {
+        if (stack->item.state->assertions & ASSERT_BACKREF) {
+          states_seen[stack->item.state_id] = 0;
+        }
+
+        BT_STACK_POP();
+      } else if (match_eo < 0) {
+        /* Try starting from a later position in the input string. */
+        /* Check for end of string. */
+        if (next_c == L'\0') {
+          break;
+        }
+        next_c = next_c_start;
+#ifdef TRE_MBSTATE
+        mbstate = mbstate_start;
+#endif /* TRE_MBSTATE */
+        str_byte = str_byte_start;
+        goto retry;
+      } else {
+        break;
+      }
+    }
+  }
+
   ret = match_eo >= 0 ? REG_OK : REG_NOMATCH;
   *match_end_ofs = match_eo;
 
- error_exit:
+error_exit:
   tre_bt_mem_destroy(mem);
 #ifndef TRE_USE_ALLOCA
   if (tags)
@@ -911,98 +822,92 @@
 
 /* Fills the POSIX.2 regmatch_t array according to the TNFA tag and match
    endpoint values. */
-static void
-tre_fill_pmatch(size_t nmatch, regmatch_t pmatch[], int cflags,
-		const tre_tnfa_t *tnfa, int *tags, int match_eo)
-{
-  tre_submatch_data_t *submatch_data;
+static void tre_fill_pmatch(size_t nmatch,
+                            regmatch_t pmatch[],
+                            int cflags,
+                            const tre_tnfa_t* tnfa,
+                            int* tags,
+                            int match_eo) {
+  tre_submatch_data_t* submatch_data;
   unsigned int i, j;
-  int *parents;
+  int* parents;
 
   i = 0;
-  if (match_eo >= 0 && !(cflags & REG_NOSUB))
-    {
-      /* Construct submatch offsets from the tags. */
-      submatch_data = tnfa->submatch_data;
-      while (i < tnfa->num_submatches && i < nmatch)
-	{
-	  if (submatch_data[i].so_tag == tnfa->end_tag)
-	    pmatch[i].rm_so = match_eo;
-	  else
-	    pmatch[i].rm_so = tags[submatch_data[i].so_tag];
+  if (match_eo >= 0 && !(cflags & REG_NOSUB)) {
+    /* Construct submatch offsets from the tags. */
+    submatch_data = tnfa->submatch_data;
+    while (i < tnfa->num_submatches && i < nmatch) {
+      if (submatch_data[i].so_tag == tnfa->end_tag)
+        pmatch[i].rm_so = match_eo;
+      else
+        pmatch[i].rm_so = tags[submatch_data[i].so_tag];
 
-	  if (submatch_data[i].eo_tag == tnfa->end_tag)
-	    pmatch[i].rm_eo = match_eo;
-	  else
-	    pmatch[i].rm_eo = tags[submatch_data[i].eo_tag];
+      if (submatch_data[i].eo_tag == tnfa->end_tag)
+        pmatch[i].rm_eo = match_eo;
+      else
+        pmatch[i].rm_eo = tags[submatch_data[i].eo_tag];
 
-	  /* If either of the endpoints were not used, this submatch
-	     was not part of the match. */
-	  if (pmatch[i].rm_so == -1 || pmatch[i].rm_eo == -1)
-	    pmatch[i].rm_so = pmatch[i].rm_eo = -1;
+      /* If either of the endpoints were not used, this submatch
+         was not part of the match. */
+      if (pmatch[i].rm_so == -1 || pmatch[i].rm_eo == -1)
+        pmatch[i].rm_so = pmatch[i].rm_eo = -1;
 
-	  i++;
-	}
-      /* Reset all submatches that are not within all of their parent
-	 submatches. */
-      i = 0;
-      while (i < tnfa->num_submatches && i < nmatch)
-	{
-	  if (pmatch[i].rm_eo == -1)
-	    assert(pmatch[i].rm_so == -1);
-	  assert(pmatch[i].rm_so <= pmatch[i].rm_eo);
-
-	  parents = submatch_data[i].parents;
-	  if (parents != NULL)
-	    for (j = 0; parents[j] >= 0; j++)
-	      {
-		if (pmatch[i].rm_so < pmatch[parents[j]].rm_so
-		    || pmatch[i].rm_eo > pmatch[parents[j]].rm_eo)
-		  pmatch[i].rm_so = pmatch[i].rm_eo = -1;
-	      }
-	  i++;
-	}
-    }
-
-  while (i < nmatch)
-    {
-      pmatch[i].rm_so = -1;
-      pmatch[i].rm_eo = -1;
       i++;
     }
-}
+    /* Reset all submatches that are not within all of their parent
+       submatches. */
+    i = 0;
+    while (i < tnfa->num_submatches && i < nmatch) {
+      if (pmatch[i].rm_eo == -1)
+        assert(pmatch[i].rm_so == -1);
+      assert(pmatch[i].rm_so <= pmatch[i].rm_eo);
 
+      parents = submatch_data[i].parents;
+      if (parents != NULL)
+        for (j = 0; parents[j] >= 0; j++) {
+          if (pmatch[i].rm_so < pmatch[parents[j]].rm_so ||
+              pmatch[i].rm_eo > pmatch[parents[j]].rm_eo)
+            pmatch[i].rm_so = pmatch[i].rm_eo = -1;
+        }
+      i++;
+    }
+  }
+
+  while (i < nmatch) {
+    pmatch[i].rm_so = -1;
+    pmatch[i].rm_eo = -1;
+    i++;
+  }
+}
 
 /*
   Wrapper functions for POSIX compatible regexp matching.
 */
 
-int
-regexec(const regex_t *restrict preg, const char *restrict string,
-	  size_t nmatch, regmatch_t pmatch[restrict], int eflags)
-{
-  tre_tnfa_t *tnfa = (void *)preg->TRE_REGEX_T_FIELD;
+int regexec(const regex_t* restrict preg,
+            const char* restrict string,
+            size_t nmatch,
+            regmatch_t pmatch[restrict],
+            int eflags) {
+  tre_tnfa_t* tnfa = (void*)preg->TRE_REGEX_T_FIELD;
   reg_errcode_t status;
   int *tags = NULL, eo;
-  if (tnfa->cflags & REG_NOSUB) nmatch = 0;
-  if (tnfa->num_tags > 0 && nmatch > 0)
-    {
-      tags = xmalloc(sizeof(*tags) * tnfa->num_tags);
-      if (tags == NULL)
-	return REG_ESPACE;
-    }
+  if (tnfa->cflags & REG_NOSUB)
+    nmatch = 0;
+  if (tnfa->num_tags > 0 && nmatch > 0) {
+    tags = xmalloc(sizeof(*tags) * tnfa->num_tags);
+    if (tags == NULL)
+      return REG_ESPACE;
+  }
 
   /* Dispatch to the appropriate matcher. */
-  if (tnfa->have_backrefs)
-    {
-      /* The regex has back references, use the backtracking matcher. */
-      status = tre_tnfa_run_backtrack(tnfa, string, tags, eflags, &eo);
-    }
-  else
-    {
-      /* Exact matching, no back references, use the parallel matcher. */
-      status = tre_tnfa_run_parallel(tnfa, string, tags, eflags, &eo);
-    }
+  if (tnfa->have_backrefs) {
+    /* The regex has back references, use the backtracking matcher. */
+    status = tre_tnfa_run_backtrack(tnfa, string, tags, eflags, &eo);
+  } else {
+    /* Exact matching, no back references, use the parallel matcher. */
+    status = tre_tnfa_run_parallel(tnfa, string, tags, eflags, &eo);
+  }
 
   if (status == REG_OK)
     /* A match was found, so fill the submatch registers. */
diff --git a/fusl/src/regex/tre-mem.c b/fusl/src/regex/tre-mem.c
index 86f809d..02a6edb 100644
--- a/fusl/src/regex/tre-mem.c
+++ b/fusl/src/regex/tre-mem.c
@@ -49,98 +49,82 @@
 */
 
 /* Returns a new memory allocator or NULL if out of memory. */
-tre_mem_t
-tre_mem_new_impl(int provided, void *provided_block)
-{
+tre_mem_t tre_mem_new_impl(int provided, void* provided_block) {
   tre_mem_t mem;
-  if (provided)
-    {
-      mem = provided_block;
-      memset(mem, 0, sizeof(*mem));
-    }
-  else
+  if (provided) {
+    mem = provided_block;
+    memset(mem, 0, sizeof(*mem));
+  } else
     mem = xcalloc(1, sizeof(*mem));
   if (mem == NULL)
     return NULL;
   return mem;
 }
 
-
 /* Frees the memory allocator and all memory allocated with it. */
-void
-tre_mem_destroy(tre_mem_t mem)
-{
+void tre_mem_destroy(tre_mem_t mem) {
   tre_list_t *tmp, *l = mem->blocks;
 
-  while (l != NULL)
-    {
-      xfree(l->data);
-      tmp = l->next;
-      xfree(l);
-      l = tmp;
-    }
+  while (l != NULL) {
+    xfree(l->data);
+    tmp = l->next;
+    xfree(l);
+    l = tmp;
+  }
   xfree(mem);
 }
 
-
 /* Allocates a block of `size' bytes from `mem'.  Returns a pointer to the
    allocated block or NULL if an underlying malloc() failed. */
-void *
-tre_mem_alloc_impl(tre_mem_t mem, int provided, void *provided_block,
-		   int zero, size_t size)
-{
-  void *ptr;
+void* tre_mem_alloc_impl(tre_mem_t mem,
+                         int provided,
+                         void* provided_block,
+                         int zero,
+                         size_t size) {
+  void* ptr;
 
-  if (mem->failed)
-    {
-      return NULL;
-    }
+  if (mem->failed) {
+    return NULL;
+  }
 
-  if (mem->n < size)
-    {
-      /* We need more memory than is available in the current block.
-	 Allocate a new block. */
-      tre_list_t *l;
-      if (provided)
-	{
-	  if (provided_block == NULL)
-	    {
-	      mem->failed = 1;
-	      return NULL;
-	    }
-	  mem->ptr = provided_block;
-	  mem->n = TRE_MEM_BLOCK_SIZE;
-	}
+  if (mem->n < size) {
+    /* We need more memory than is available in the current block.
+       Allocate a new block. */
+    tre_list_t* l;
+    if (provided) {
+      if (provided_block == NULL) {
+        mem->failed = 1;
+        return NULL;
+      }
+      mem->ptr = provided_block;
+      mem->n = TRE_MEM_BLOCK_SIZE;
+    } else {
+      int block_size;
+      if (size * 8 > TRE_MEM_BLOCK_SIZE)
+        block_size = size * 8;
       else
-	{
-	  int block_size;
-	  if (size * 8 > TRE_MEM_BLOCK_SIZE)
-	    block_size = size * 8;
-	  else
-	    block_size = TRE_MEM_BLOCK_SIZE;
-	  l = xmalloc(sizeof(*l));
-	  if (l == NULL)
-	    {
-	      mem->failed = 1;
-	      return NULL;
-	    }
-	  l->data = xmalloc(block_size);
-	  if (l->data == NULL)
-	    {
-	      xfree(l);
-	      mem->failed = 1;
-	      return NULL;
-	    }
-	  l->next = NULL;
-	  if (mem->current != NULL)
-	    mem->current->next = l;
-	  if (mem->blocks == NULL)
-	    mem->blocks = l;
-	  mem->current = l;
-	  mem->ptr = l->data;
-	  mem->n = block_size;
-	}
+        block_size = TRE_MEM_BLOCK_SIZE;
+      l = xmalloc(sizeof(*l));
+      if (l == NULL) {
+        mem->failed = 1;
+        return NULL;
+      }
+      l->data = xmalloc(block_size);
+      if (l->data == NULL) {
+        xfree(l);
+        mem->failed = 1;
+        return NULL;
+      }
+      l->next = NULL;
+      if (mem->current != NULL)
+        mem->current->next = l;
+      if (mem->blocks == NULL)
+        mem->blocks = l;
+      mem->current = l;
+      mem->ptr = l->data;
+      mem->n = block_size;
     }
+  }
 
   /* Make sure the next pointer will be aligned. */
   size += ALIGN(mem->ptr + size, long);
diff --git a/fusl/src/regex/tre.h b/fusl/src/regex/tre.h
index 67cb9a8..6859d86 100644
--- a/fusl/src/regex/tre.h
+++ b/fusl/src/regex/tre.h
@@ -33,7 +33,7 @@
 #include <wchar.h>
 #include <wctype.h>
 
-#undef  TRE_MBSTATE
+#undef TRE_MBSTATE
 
 #define NDEBUG
 
@@ -42,9 +42,11 @@
 
 typedef wchar_t tre_char_t;
 
-#define DPRINT(msg) do { } while(0)
+#define DPRINT(msg) \
+  do {              \
+  } while (0)
 
-#define elementsof(x)	( sizeof(x) / sizeof(x[0]) )
+#define elementsof(x) (sizeof(x) / sizeof(x[0]))
 
 #define tre_mbrtowc(pwc, s, n, ps) (mbtowc((pwc), (s), (n)))
 
@@ -67,19 +69,19 @@
 
 #define tre_tolower towlower
 #define tre_toupper towupper
-#define tre_strlen  wcslen
+#define tre_strlen wcslen
 
 /* Use system provided iswctype() and wctype(). */
 typedef wctype_t tre_ctype_t;
 #define tre_isctype iswctype
-#define tre_ctype   wctype
+#define tre_ctype wctype
 
 /* Returns number of bytes to add to (char *)ptr to make it
    properly aligned for the type. */
-#define ALIGN(ptr, type) \
-  ((((long)ptr) % sizeof(type)) \
-   ? (sizeof(type) - (((long)ptr) % sizeof(type))) \
-   : 0)
+#define ALIGN(ptr, type)                               \
+  ((((long)ptr) % sizeof(type))                        \
+       ? (sizeof(type) - (((long)ptr) % sizeof(type))) \
+       : 0)
 
 #undef MAX
 #undef MIN
@@ -95,11 +97,11 @@
   tre_cint_t code_min;
   tre_cint_t code_max;
   /* Pointer to the destination state. */
-  tre_tnfa_transition_t *state;
+  tre_tnfa_transition_t* state;
   /* ID number of the destination state. */
   int state_id;
   /* -1 terminated array of tags (or NULL). */
-  int *tags;
+  int* tags;
   /* Assertion bitmap. */
   int assertions;
   /* Assertion parameters. */
@@ -110,27 +112,23 @@
     int backref;
   } u;
   /* Negative character class assertions. */
-  tre_ctype_t *neg_classes;
+  tre_ctype_t* neg_classes;
 };
 
-
 /* Assertions. */
-#define ASSERT_AT_BOL		  1   /* Beginning of line. */
-#define ASSERT_AT_EOL		  2   /* End of line. */
-#define ASSERT_CHAR_CLASS	  4   /* Character class in `class'. */
-#define ASSERT_CHAR_CLASS_NEG	  8   /* Character classes in `neg_classes'. */
-#define ASSERT_AT_BOW		 16   /* Beginning of word. */
-#define ASSERT_AT_EOW		 32   /* End of word. */
-#define ASSERT_AT_WB		 64   /* Word boundary. */
-#define ASSERT_AT_WB_NEG	128   /* Not a word boundary. */
-#define ASSERT_BACKREF		256   /* A back reference in `backref'. */
-#define ASSERT_LAST		256
+#define ASSERT_AT_BOL 1         /* Beginning of line. */
+#define ASSERT_AT_EOL 2         /* End of line. */
+#define ASSERT_CHAR_CLASS 4     /* Character class in `class'. */
+#define ASSERT_CHAR_CLASS_NEG 8 /* Character classes in `neg_classes'. */
+#define ASSERT_AT_BOW 16        /* Beginning of word. */
+#define ASSERT_AT_EOW 32        /* End of word. */
+#define ASSERT_AT_WB 64         /* Word boundary. */
+#define ASSERT_AT_WB_NEG 128    /* Not a word boundary. */
+#define ASSERT_BACKREF 256      /* A back reference in `backref'. */
+#define ASSERT_LAST 256
 
 /* Tag directions. */
-typedef enum {
-  TRE_TAG_MINIMIZE = 0,
-  TRE_TAG_MAXIMIZE = 1
-} tre_tag_direction_t;
+typedef enum { TRE_TAG_MINIMIZE = 0, TRE_TAG_MAXIMIZE = 1 } tre_tag_direction_t;
 
 /* Instructions to compute submatch register values from tag values
    after a successful match.  */
@@ -140,26 +138,25 @@
   /* Tag that gives the value for rm_eo (submatch end offset). */
   int eo_tag;
   /* List of submatches this submatch is contained in. */
-  int *parents;
+  int* parents;
 };
 
 typedef struct tre_submatch_data tre_submatch_data_t;
 
-
 /* TNFA definition. */
 typedef struct tnfa tre_tnfa_t;
 
 struct tnfa {
-  tre_tnfa_transition_t *transitions;
+  tre_tnfa_transition_t* transitions;
   unsigned int num_transitions;
-  tre_tnfa_transition_t *initial;
-  tre_tnfa_transition_t *final;
-  tre_submatch_data_t *submatch_data;
-  char *firstpos_chars;
+  tre_tnfa_transition_t* initial;
+  tre_tnfa_transition_t* final;
+  tre_submatch_data_t* submatch_data;
+  char* firstpos_chars;
   int first_char;
   unsigned int num_submatches;
-  tre_tag_direction_t *tag_directions;
-  int *minimal_tags;
+  tre_tag_direction_t* tag_directions;
+  int* minimal_tags;
   int num_tags;
   int num_minimals;
   int end_tag;
@@ -174,29 +171,32 @@
 #define TRE_MEM_BLOCK_SIZE 1024
 
 typedef struct tre_list {
-  void *data;
-  struct tre_list *next;
+  void* data;
+  struct tre_list* next;
 } tre_list_t;
 
 typedef struct tre_mem_struct {
-  tre_list_t *blocks;
-  tre_list_t *current;
-  char *ptr;
+  tre_list_t* blocks;
+  tre_list_t* current;
+  char* ptr;
   size_t n;
   int failed;
-  void **provided;
-} *tre_mem_t;
+  void** provided;
+} * tre_mem_t;
 
-#define tre_mem_new_impl   __tre_mem_new_impl
+#define tre_mem_new_impl __tre_mem_new_impl
 #define tre_mem_alloc_impl __tre_mem_alloc_impl
-#define tre_mem_destroy    __tre_mem_destroy
+#define tre_mem_destroy __tre_mem_destroy
 
-tre_mem_t tre_mem_new_impl(int provided, void *provided_block);
-void *tre_mem_alloc_impl(tre_mem_t mem, int provided, void *provided_block,
-			 int zero, size_t size);
+tre_mem_t tre_mem_new_impl(int provided, void* provided_block);
+void* tre_mem_alloc_impl(tre_mem_t mem,
+                         int provided,
+                         void* provided_block,
+                         int zero,
+                         size_t size);
 
 /* Returns a new memory allocator or NULL if out of memory. */
-#define tre_mem_new()  tre_mem_new_impl(0, NULL)
+#define tre_mem_new() tre_mem_new_impl(0, NULL)
 
 /* Allocates a block of `size' bytes from `mem'.  Returns a pointer to the
    allocated block or NULL if an underlying malloc() failed. */
@@ -214,13 +214,12 @@
 #define tre_mem_newa() \
   tre_mem_new_impl(1, alloca(sizeof(struct tre_mem_struct)))
 
-#define tre_mem_alloca(mem, size)					      \
-  ((mem)->n >= (size)							      \
-   ? tre_mem_alloc_impl((mem), 1, NULL, 0, (size))			      \
-   : tre_mem_alloc_impl((mem), 1, alloca(TRE_MEM_BLOCK_SIZE), 0, (size)))
+#define tre_mem_alloca(mem, size)                      \
+  ((mem)->n >= (size)                                  \
+       ? tre_mem_alloc_impl((mem), 1, NULL, 0, (size)) \
+       : tre_mem_alloc_impl((mem), 1, alloca(TRE_MEM_BLOCK_SIZE), 0, (size)))
 #endif /* TRE_USE_ALLOCA */
 
-
 /* Frees the memory allocator and all memory allocated with it. */
 void tre_mem_destroy(tre_mem_t mem);
 
@@ -228,4 +227,3 @@
 #define xcalloc calloc
 #define xfree free
 #define xrealloc realloc
-
diff --git a/fusl/src/sched/affinity.c b/fusl/src/sched/affinity.c
index 948ece4..e1f7b99 100644
--- a/fusl/src/sched/affinity.c
+++ b/fusl/src/sched/affinity.c
@@ -4,30 +4,27 @@
 #include "pthread_impl.h"
 #include "syscall.h"
 
-int sched_setaffinity(pid_t tid, size_t size, const cpu_set_t *set)
-{
-	return syscall(SYS_sched_setaffinity, tid, size, set);
+int sched_setaffinity(pid_t tid, size_t size, const cpu_set_t* set) {
+  return syscall(SYS_sched_setaffinity, tid, size, set);
 }
 
-int pthread_setaffinity_np(pthread_t td, size_t size, const cpu_set_t *set)
-{
-	return -__syscall(SYS_sched_setaffinity, td->tid, size, set);
+int pthread_setaffinity_np(pthread_t td, size_t size, const cpu_set_t* set) {
+  return -__syscall(SYS_sched_setaffinity, td->tid, size, set);
 }
 
-static int do_getaffinity(pid_t tid, size_t size, cpu_set_t *set)
-{
-	long ret = __syscall(SYS_sched_getaffinity, tid, size, set);
-	if (ret < 0) return ret;
-	if (ret < size) memset((char *)set+ret, 0, size-ret);
-	return 0;
+static int do_getaffinity(pid_t tid, size_t size, cpu_set_t* set) {
+  long ret = __syscall(SYS_sched_getaffinity, tid, size, set);
+  if (ret < 0)
+    return ret;
+  if (ret < size)
+    memset((char*)set + ret, 0, size - ret);
+  return 0;
 }
 
-int sched_getaffinity(pid_t tid, size_t size, cpu_set_t *set)
-{
-	return __syscall_ret(do_getaffinity(tid, size, set));
+int sched_getaffinity(pid_t tid, size_t size, cpu_set_t* set) {
+  return __syscall_ret(do_getaffinity(tid, size, set));
 }
 
-int pthread_getaffinity_np(pthread_t td, size_t size, cpu_set_t *set)
-{
-	return -do_getaffinity(td->tid, size, set);
+int pthread_getaffinity_np(pthread_t td, size_t size, cpu_set_t* set) {
+  return -do_getaffinity(td->tid, size, set);
 }
diff --git a/fusl/src/sched/sched_cpucount.c b/fusl/src/sched/sched_cpucount.c
index 94aa259..040d804 100644
--- a/fusl/src/sched/sched_cpucount.c
+++ b/fusl/src/sched/sched_cpucount.c
@@ -1,11 +1,12 @@
 #define _GNU_SOURCE
 #include <sched.h>
 
-int __sched_cpucount(size_t size, const cpu_set_t *set)
-{
-	size_t i, j, cnt=0;
-	const unsigned char *p = (const void *)set;
-	for (i=0; i<size; i++) for (j=0; j<8; j++)
-		if (p[i] & (1<<j)) cnt++;
-	return cnt;
+int __sched_cpucount(size_t size, const cpu_set_t* set) {
+  size_t i, j, cnt = 0;
+  const unsigned char* p = (const void*)set;
+  for (i = 0; i < size; i++)
+    for (j = 0; j < 8; j++)
+      if (p[i] & (1 << j))
+        cnt++;
+  return cnt;
 }
diff --git a/fusl/src/sched/sched_get_priority_max.c b/fusl/src/sched/sched_get_priority_max.c
index 30ae510..d2c1778 100644
--- a/fusl/src/sched/sched_get_priority_max.c
+++ b/fusl/src/sched/sched_get_priority_max.c
@@ -1,12 +1,10 @@
 #include <sched.h>
 #include "syscall.h"
 
-int sched_get_priority_max(int policy)
-{
-	return syscall(SYS_sched_get_priority_max, policy);
+int sched_get_priority_max(int policy) {
+  return syscall(SYS_sched_get_priority_max, policy);
 }
 
-int sched_get_priority_min(int policy)
-{
-	return syscall(SYS_sched_get_priority_min, policy);
+int sched_get_priority_min(int policy) {
+  return syscall(SYS_sched_get_priority_min, policy);
 }
diff --git a/fusl/src/sched/sched_getparam.c b/fusl/src/sched/sched_getparam.c
index 76f10e4..c1b3d70 100644
--- a/fusl/src/sched/sched_getparam.c
+++ b/fusl/src/sched/sched_getparam.c
@@ -2,7 +2,6 @@
 #include <errno.h>
 #include "syscall.h"
 
-int sched_getparam(pid_t pid, struct sched_param *param)
-{
-	return __syscall_ret(-ENOSYS);
+int sched_getparam(pid_t pid, struct sched_param* param) {
+  return __syscall_ret(-ENOSYS);
 }
diff --git a/fusl/src/sched/sched_getscheduler.c b/fusl/src/sched/sched_getscheduler.c
index 394e508..a5723be 100644
--- a/fusl/src/sched/sched_getscheduler.c
+++ b/fusl/src/sched/sched_getscheduler.c
@@ -2,7 +2,6 @@
 #include <errno.h>
 #include "syscall.h"
 
-int sched_getscheduler(pid_t pid)
-{
-	return __syscall_ret(-ENOSYS);
+int sched_getscheduler(pid_t pid) {
+  return __syscall_ret(-ENOSYS);
 }
diff --git a/fusl/src/sched/sched_rr_get_interval.c b/fusl/src/sched/sched_rr_get_interval.c
index 4b01028..765dfd3 100644
--- a/fusl/src/sched/sched_rr_get_interval.c
+++ b/fusl/src/sched/sched_rr_get_interval.c
@@ -1,7 +1,6 @@
 #include <sched.h>
 #include "syscall.h"
 
-int sched_rr_get_interval(pid_t pid, struct timespec *ts)
-{
-	return syscall(SYS_sched_rr_get_interval, pid, ts);
+int sched_rr_get_interval(pid_t pid, struct timespec* ts) {
+  return syscall(SYS_sched_rr_get_interval, pid, ts);
 }
diff --git a/fusl/src/sched/sched_setparam.c b/fusl/src/sched/sched_setparam.c
index 18623ee..33790c8 100644
--- a/fusl/src/sched/sched_setparam.c
+++ b/fusl/src/sched/sched_setparam.c
@@ -2,7 +2,6 @@
 #include <errno.h>
 #include "syscall.h"
 
-int sched_setparam(pid_t pid, const struct sched_param *param)
-{
-	return __syscall_ret(-ENOSYS);
+int sched_setparam(pid_t pid, const struct sched_param* param) {
+  return __syscall_ret(-ENOSYS);
 }
diff --git a/fusl/src/sched/sched_setscheduler.c b/fusl/src/sched/sched_setscheduler.c
index 4435f21..de2f1c9 100644
--- a/fusl/src/sched/sched_setscheduler.c
+++ b/fusl/src/sched/sched_setscheduler.c
@@ -2,7 +2,6 @@
 #include <errno.h>
 #include "syscall.h"
 
-int sched_setscheduler(pid_t pid, int sched, const struct sched_param *param)
-{
-	return __syscall_ret(-ENOSYS);
+int sched_setscheduler(pid_t pid, int sched, const struct sched_param* param) {
+  return __syscall_ret(-ENOSYS);
 }
diff --git a/fusl/src/sched/sched_yield.c b/fusl/src/sched/sched_yield.c
index ee6f0e7..932fba1 100644
--- a/fusl/src/sched/sched_yield.c
+++ b/fusl/src/sched/sched_yield.c
@@ -1,7 +1,6 @@
 #include <sched.h>
 #include "syscall.h"
 
-int sched_yield()
-{
-	return syscall(SYS_sched_yield);
+int sched_yield() {
+  return syscall(SYS_sched_yield);
 }
diff --git a/fusl/src/search/hsearch.c b/fusl/src/search/hsearch.c
index 5c89651..7c0f7d1 100644
--- a/fusl/src/search/hsearch.c
+++ b/fusl/src/search/hsearch.c
@@ -14,141 +14,137 @@
 */
 
 #define MINSIZE 8
-#define MAXSIZE ((size_t)-1/2 + 1)
+#define MAXSIZE ((size_t)-1 / 2 + 1)
 
 struct __tab {
-	ENTRY *entries;
-	size_t mask;
-	size_t used;
+  ENTRY* entries;
+  size_t mask;
+  size_t used;
 };
 
 static struct hsearch_data htab;
 
-int __hcreate_r(size_t, struct hsearch_data *);
-void __hdestroy_r(struct hsearch_data *);
-int __hsearch_r(ENTRY, ACTION, ENTRY **, struct hsearch_data *);
+int __hcreate_r(size_t, struct hsearch_data*);
+void __hdestroy_r(struct hsearch_data*);
+int __hsearch_r(ENTRY, ACTION, ENTRY**, struct hsearch_data*);
 
-static size_t keyhash(char *k)
-{
-	unsigned char *p = (void *)k;
-	size_t h = 0;
+static size_t keyhash(char* k) {
+  unsigned char* p = (void*)k;
+  size_t h = 0;
 
-	while (*p)
-		h = 31*h + *p++;
-	return h;
+  while (*p)
+    h = 31 * h + *p++;
+  return h;
 }
 
-static int resize(size_t nel, struct hsearch_data *htab)
-{
-	size_t newsize;
-	size_t i, j;
-	ENTRY *e, *newe;
-	ENTRY *oldtab = htab->__tab->entries;
-	ENTRY *oldend = htab->__tab->entries + htab->__tab->mask + 1;
+static int resize(size_t nel, struct hsearch_data* htab) {
+  size_t newsize;
+  size_t i, j;
+  ENTRY *e, *newe;
+  ENTRY* oldtab = htab->__tab->entries;
+  ENTRY* oldend = htab->__tab->entries + htab->__tab->mask + 1;
 
-	if (nel > MAXSIZE)
-		nel = MAXSIZE;
-	for (newsize = MINSIZE; newsize < nel; newsize *= 2);
-	htab->__tab->entries = calloc(newsize, sizeof *htab->__tab->entries);
-	if (!htab->__tab->entries) {
-		htab->__tab->entries = oldtab;
-		return 0;
-	}
-	htab->__tab->mask = newsize - 1;
-	if (!oldtab)
-		return 1;
-	for (e = oldtab; e < oldend; e++)
-		if (e->key) {
-			for (i=keyhash(e->key),j=1; ; i+=j++) {
-				newe = htab->__tab->entries + (i & htab->__tab->mask);
-				if (!newe->key)
-					break;
-			}
-			*newe = *e;
-		}
-	free(oldtab);
-	return 1;
+  if (nel > MAXSIZE)
+    nel = MAXSIZE;
+  for (newsize = MINSIZE; newsize < nel; newsize *= 2)
+    ;
+  htab->__tab->entries = calloc(newsize, sizeof *htab->__tab->entries);
+  if (!htab->__tab->entries) {
+    htab->__tab->entries = oldtab;
+    return 0;
+  }
+  htab->__tab->mask = newsize - 1;
+  if (!oldtab)
+    return 1;
+  for (e = oldtab; e < oldend; e++)
+    if (e->key) {
+      for (i = keyhash(e->key), j = 1;; i += j++) {
+        newe = htab->__tab->entries + (i & htab->__tab->mask);
+        if (!newe->key)
+          break;
+      }
+      *newe = *e;
+    }
+  free(oldtab);
+  return 1;
 }
 
-int hcreate(size_t nel)
-{
-	return __hcreate_r(nel, &htab);
+int hcreate(size_t nel) {
+  return __hcreate_r(nel, &htab);
 }
 
-void hdestroy(void)
-{
-	__hdestroy_r(&htab);
+void hdestroy(void) {
+  __hdestroy_r(&htab);
 }
 
-static ENTRY *lookup(char *key, size_t hash, struct hsearch_data *htab)
-{
-	size_t i, j;
-	ENTRY *e;
+static ENTRY* lookup(char* key, size_t hash, struct hsearch_data* htab) {
+  size_t i, j;
+  ENTRY* e;
 
-	for (i=hash,j=1; ; i+=j++) {
-		e = htab->__tab->entries + (i & htab->__tab->mask);
-		if (!e->key || strcmp(e->key, key) == 0)
-			break;
-	}
-	return e;
+  for (i = hash, j = 1;; i += j++) {
+    e = htab->__tab->entries + (i & htab->__tab->mask);
+    if (!e->key || strcmp(e->key, key) == 0)
+      break;
+  }
+  return e;
 }
 
-ENTRY *hsearch(ENTRY item, ACTION action)
-{
-	ENTRY *e;
+ENTRY* hsearch(ENTRY item, ACTION action) {
+  ENTRY* e;
 
-	__hsearch_r(item, action, &e, &htab);
-	return e;
+  __hsearch_r(item, action, &e, &htab);
+  return e;
 }
 
-int __hcreate_r(size_t nel, struct hsearch_data *htab)
-{
-	int r;
+int __hcreate_r(size_t nel, struct hsearch_data* htab) {
+  int r;
 
-	htab->__tab = calloc(1, sizeof *htab->__tab);
-	if (!htab->__tab)
-		return 0;
-	r = resize(nel, htab);
-	if (r == 0) {
-		free(htab->__tab);
-		htab->__tab = 0;
-	}
-	return r;
+  htab->__tab = calloc(1, sizeof *htab->__tab);
+  if (!htab->__tab)
+    return 0;
+  r = resize(nel, htab);
+  if (r == 0) {
+    free(htab->__tab);
+    htab->__tab = 0;
+  }
+  return r;
 }
 weak_alias(__hcreate_r, hcreate_r);
 
-void __hdestroy_r(struct hsearch_data *htab)
-{
-	if (htab->__tab) free(htab->__tab->entries);
-	free(htab->__tab);
-	htab->__tab = 0;
+void __hdestroy_r(struct hsearch_data* htab) {
+  if (htab->__tab)
+    free(htab->__tab->entries);
+  free(htab->__tab);
+  htab->__tab = 0;
 }
 weak_alias(__hdestroy_r, hdestroy_r);
 
-int __hsearch_r(ENTRY item, ACTION action, ENTRY **retval, struct hsearch_data *htab)
-{
-	size_t hash = keyhash(item.key);
-	ENTRY *e = lookup(item.key, hash, htab);
+int __hsearch_r(ENTRY item,
+                ACTION action,
+                ENTRY** retval,
+                struct hsearch_data* htab) {
+  size_t hash = keyhash(item.key);
+  ENTRY* e = lookup(item.key, hash, htab);
 
-	if (e->key) {
-		*retval = e;
-		return 1;
-	}
-	if (action == FIND) {
-		*retval = 0;
-		return 0;
-	}
-	*e = item;
-	if (++htab->__tab->used > htab->__tab->mask - htab->__tab->mask/4) {
-		if (!resize(2*htab->__tab->used, htab)) {
-			htab->__tab->used--;
-			e->key = 0;
-			*retval = 0;
-			return 0;
-		}
-		e = lookup(item.key, hash, htab);
-	}
-	*retval = e;
-	return 1;
+  if (e->key) {
+    *retval = e;
+    return 1;
+  }
+  if (action == FIND) {
+    *retval = 0;
+    return 0;
+  }
+  *e = item;
+  if (++htab->__tab->used > htab->__tab->mask - htab->__tab->mask / 4) {
+    if (!resize(2 * htab->__tab->used, htab)) {
+      htab->__tab->used--;
+      e->key = 0;
+      *retval = 0;
+      return 0;
+    }
+    e = lookup(item.key, hash, htab);
+  }
+  *retval = e;
+  return 1;
 }
 weak_alias(__hsearch_r, hsearch_r);
diff --git a/fusl/src/search/insque.c b/fusl/src/search/insque.c
index b7475d8..e055a3e 100644
--- a/fusl/src/search/insque.c
+++ b/fusl/src/search/insque.c
@@ -1,32 +1,30 @@
 #include <search.h>
 
 struct node {
-	struct node *next;
-	struct node *prev;
+  struct node* next;
+  struct node* prev;
 };
 
-void insque(void *element, void *pred)
-{
-	struct node *e = element;
-	struct node *p = pred;
+void insque(void* element, void* pred) {
+  struct node* e = element;
+  struct node* p = pred;
 
-	if (!p) {
-		e->next = e->prev = 0;
-		return;
-	}
-	e->next = p->next;
-	e->prev = p;
-	p->next = e;
-	if (e->next)
-		e->next->prev = e;
+  if (!p) {
+    e->next = e->prev = 0;
+    return;
+  }
+  e->next = p->next;
+  e->prev = p;
+  p->next = e;
+  if (e->next)
+    e->next->prev = e;
 }
 
-void remque(void *element)
-{
-	struct node *e = element;
+void remque(void* element) {
+  struct node* e = element;
 
-	if (e->next)
-		e->next->prev = e->prev;
-	if (e->prev)
-		e->prev->next = e->next;
+  if (e->next)
+    e->next->prev = e->prev;
+  if (e->prev)
+    e->prev->next = e->next;
 }
diff --git a/fusl/src/search/lsearch.c b/fusl/src/search/lsearch.c
index 63f3192..21d0e53 100644
--- a/fusl/src/search/lsearch.c
+++ b/fusl/src/search/lsearch.c
@@ -1,31 +1,33 @@
 #include <search.h>
 #include <string.h>
 
-void *lsearch(const void *key, void *base, size_t *nelp, size_t width,
-	int (*compar)(const void *, const void *))
-{
-	char (*p)[width] = base;
-	size_t n = *nelp;
-	size_t i;
+void* lsearch(const void* key,
+              void* base,
+              size_t* nelp,
+              size_t width,
+              int (*compar)(const void*, const void*)) {
+  char(*p)[width] = base;
+  size_t n = *nelp;
+  size_t i;
 
-	for (i = 0; i < n; i++)
-		if (compar(p[i], key) == 0)
-			return p[i];
-	*nelp = n+1;
-	return memcpy(p[n], key, width);
+  for (i = 0; i < n; i++)
+    if (compar(p[i], key) == 0)
+      return p[i];
+  *nelp = n + 1;
+  return memcpy(p[n], key, width);
 }
 
-void *lfind(const void *key, const void *base, size_t *nelp,
-	size_t width, int (*compar)(const void *, const void *))
-{
-	char (*p)[width] = (void *)base;
-	size_t n = *nelp;
-	size_t i;
+void* lfind(const void* key,
+            const void* base,
+            size_t* nelp,
+            size_t width,
+            int (*compar)(const void*, const void*)) {
+  char(*p)[width] = (void*)base;
+  size_t n = *nelp;
+  size_t i;
 
-	for (i = 0; i < n; i++)
-		if (compar(p[i], key) == 0)
-			return p[i];
-	return 0;
+  for (i = 0; i < n; i++)
+    if (compar(p[i], key) == 0)
+      return p[i];
+  return 0;
 }
-
-
diff --git a/fusl/src/search/tdestroy.c b/fusl/src/search/tdestroy.c
index 5f9e197..22b2adb 100644
--- a/fusl/src/search/tdestroy.c
+++ b/fusl/src/search/tdestroy.c
@@ -3,19 +3,19 @@
 #include <search.h>
 
 struct node {
-	void *key;
-	struct node *left;
-	struct node *right;
+  void* key;
+  struct node* left;
+  struct node* right;
 };
 
-void tdestroy(void *root, void (*freekey)(void *))
-{
-	struct node *r = root;
+void tdestroy(void* root, void (*freekey)(void*)) {
+  struct node* r = root;
 
-	if (r == 0)
-		return;
-	tdestroy(r->left, freekey);
-	tdestroy(r->right, freekey);
-	if (freekey) freekey(r->key);
-	free(r);
+  if (r == 0)
+    return;
+  tdestroy(r->left, freekey);
+  tdestroy(r->right, freekey);
+  if (freekey)
+    freekey(r->key);
+  free(r);
 }
diff --git a/fusl/src/search/tsearch_avl.c b/fusl/src/search/tsearch_avl.c
index 57194c8..8757981 100644
--- a/fusl/src/search/tsearch_avl.c
+++ b/fusl/src/search/tsearch_avl.c
@@ -8,197 +8,198 @@
 */
 
 struct node {
-	const void *key;
-	struct node *left;
-	struct node *right;
-	int height;
+  const void* key;
+  struct node* left;
+  struct node* right;
+  int height;
 };
 
-static int delta(struct node *n) {
-	return (n->left ? n->left->height:0) - (n->right ? n->right->height:0);
+static int delta(struct node* n) {
+  return (n->left ? n->left->height : 0) - (n->right ? n->right->height : 0);
 }
 
-static void updateheight(struct node *n) {
-	n->height = 0;
-	if (n->left && n->left->height > n->height)
-		n->height = n->left->height;
-	if (n->right && n->right->height > n->height)
-		n->height = n->right->height;
-	n->height++;
+static void updateheight(struct node* n) {
+  n->height = 0;
+  if (n->left && n->left->height > n->height)
+    n->height = n->left->height;
+  if (n->right && n->right->height > n->height)
+    n->height = n->right->height;
+  n->height++;
 }
 
-static struct node *rotl(struct node *n) {
-	struct node *r = n->right;
-	n->right = r->left;
-	r->left = n;
-	updateheight(n);
-	updateheight(r);
-	return r;
+static struct node* rotl(struct node* n) {
+  struct node* r = n->right;
+  n->right = r->left;
+  r->left = n;
+  updateheight(n);
+  updateheight(r);
+  return r;
 }
 
-static struct node *rotr(struct node *n) {
-	struct node *l = n->left;
-	n->left = l->right;
-	l->right = n;
-	updateheight(n);
-	updateheight(l);
-	return l;
+static struct node* rotr(struct node* n) {
+  struct node* l = n->left;
+  n->left = l->right;
+  l->right = n;
+  updateheight(n);
+  updateheight(l);
+  return l;
 }
 
-static struct node *balance(struct node *n) {
-	int d = delta(n);
+static struct node* balance(struct node* n) {
+  int d = delta(n);
 
-	if (d < -1) {
-		if (delta(n->right) > 0)
-			n->right = rotr(n->right);
-		return rotl(n);
-	} else if (d > 1) {
-		if (delta(n->left) < 0)
-			n->left = rotl(n->left);
-		return rotr(n);
-	}
-	updateheight(n);
-	return n;
+  if (d < -1) {
+    if (delta(n->right) > 0)
+      n->right = rotr(n->right);
+    return rotl(n);
+  } else if (d > 1) {
+    if (delta(n->left) < 0)
+      n->left = rotl(n->left);
+    return rotr(n);
+  }
+  updateheight(n);
+  return n;
 }
 
-static struct node *find(struct node *n, const void *k,
-	int (*cmp)(const void *, const void *))
-{
-	int c;
+static struct node* find(struct node* n,
+                         const void* k,
+                         int (*cmp)(const void*, const void*)) {
+  int c;
 
-	if (!n)
-		return 0;
-	c = cmp(k, n->key);
-	if (c == 0)
-		return n;
-	if (c < 0)
-		return find(n->left, k, cmp);
-	else
-		return find(n->right, k, cmp);
+  if (!n)
+    return 0;
+  c = cmp(k, n->key);
+  if (c == 0)
+    return n;
+  if (c < 0)
+    return find(n->left, k, cmp);
+  else
+    return find(n->right, k, cmp);
 }
 
-static struct node *insert(struct node *n, const void *k,
-	int (*cmp)(const void *, const void *), struct node **found)
-{
-	struct node *r;
-	int c;
+static struct node* insert(struct node* n,
+                           const void* k,
+                           int (*cmp)(const void*, const void*),
+                           struct node** found) {
+  struct node* r;
+  int c;
 
-	if (!n) {
-		n = malloc(sizeof *n);
-		if (n) {
-			n->key = k;
-			n->left = n->right = 0;
-			n->height = 1;
-		}
-		*found = n;
-		return n;
-	}
-	c = cmp(k, n->key);
-	if (c == 0) {
-		*found = n;
-		return 0;
-	}
-	r = insert(c < 0 ? n->left : n->right, k, cmp, found);
-	if (r) {
-		if (c < 0)
-			n->left = r;
-		else
-			n->right = r;
-		r = balance(n);
-	}
-	return r;
+  if (!n) {
+    n = malloc(sizeof *n);
+    if (n) {
+      n->key = k;
+      n->left = n->right = 0;
+      n->height = 1;
+    }
+    *found = n;
+    return n;
+  }
+  c = cmp(k, n->key);
+  if (c == 0) {
+    *found = n;
+    return 0;
+  }
+  r = insert(c < 0 ? n->left : n->right, k, cmp, found);
+  if (r) {
+    if (c < 0)
+      n->left = r;
+    else
+      n->right = r;
+    r = balance(n);
+  }
+  return r;
 }
 
-static struct node *remove_rightmost(struct node *n, struct node **rightmost)
-{
-	if (!n->right) {
-		*rightmost = n;
-		return n->left;
-	}
-	n->right = remove_rightmost(n->right, rightmost);
-	return balance(n);
+static struct node* remove_rightmost(struct node* n, struct node** rightmost) {
+  if (!n->right) {
+    *rightmost = n;
+    return n->left;
+  }
+  n->right = remove_rightmost(n->right, rightmost);
+  return balance(n);
 }
 
-static struct node *remove(struct node **n, const void *k,
-	int (*cmp)(const void *, const void *), struct node *parent)
-{
-	int c;
+static struct node* remove(struct node** n,
+                           const void* k,
+                           int (*cmp)(const void*, const void*),
+                           struct node* parent) {
+  int c;
 
-	if (!*n)
-		return 0;
-	c = cmp(k, (*n)->key);
-	if (c == 0) {
-		struct node *r = *n;
-		if (r->left) {
-			r->left = remove_rightmost(r->left, n);
-			(*n)->left = r->left;
-			(*n)->right = r->right;
-			*n = balance(*n);
-		} else
-			*n = r->right;
-		free(r);
-		return parent;
-	}
-	if (c < 0)
-		parent = remove(&(*n)->left, k, cmp, *n);
-	else
-		parent = remove(&(*n)->right, k, cmp, *n);
-	if (parent)
-		*n = balance(*n);
-	return parent;
+  if (!*n)
+    return 0;
+  c = cmp(k, (*n)->key);
+  if (c == 0) {
+    struct node* r = *n;
+    if (r->left) {
+      r->left = remove_rightmost(r->left, n);
+      (*n)->left = r->left;
+      (*n)->right = r->right;
+      *n = balance(*n);
+    } else
+      *n = r->right;
+    free(r);
+    return parent;
+  }
+  if (c < 0)
+    parent = remove(&(*n)->left, k, cmp, *n);
+  else
+    parent = remove(&(*n)->right, k, cmp, *n);
+  if (parent)
+    *n = balance(*n);
+  return parent;
 }
 
-void *tdelete(const void *restrict key, void **restrict rootp,
-	int(*compar)(const void *, const void *))
-{
-	if (!rootp)
-		return 0;
-	struct node *n = *rootp;
-	struct node *ret;
-	/* last argument is arbitrary non-null pointer
-	   which is returned when the root node is deleted */
-	ret = remove(&n, key, compar, n);
-	*rootp = n;
-	return ret;
+void* tdelete(const void* restrict key,
+              void** restrict rootp,
+              int (*compar)(const void*, const void*)) {
+  if (!rootp)
+    return 0;
+  struct node* n = *rootp;
+  struct node* ret;
+  /* last argument is arbitrary non-null pointer
+     which is returned when the root node is deleted */
+  ret = remove(&n, key, compar, n);
+  *rootp = n;
+  return ret;
 }
 
-void *tfind(const void *key, void *const *rootp,
-	int(*compar)(const void *, const void *))
-{
-	if (!rootp)
-		return 0;
-	return find(*rootp, key, compar);
+void* tfind(const void* key,
+            void* const* rootp,
+            int (*compar)(const void*, const void*)) {
+  if (!rootp)
+    return 0;
+  return find(*rootp, key, compar);
 }
 
-void *tsearch(const void *key, void **rootp,
-	int (*compar)(const void *, const void *))
-{
-	struct node *update;
-	struct node *ret;
-	if (!rootp)
-		return 0;
-	update = insert(*rootp, key, compar, &ret);
-	if (update)
-		*rootp = update;
-	return ret;
+void* tsearch(const void* key,
+              void** rootp,
+              int (*compar)(const void*, const void*)) {
+  struct node* update;
+  struct node* ret;
+  if (!rootp)
+    return 0;
+  update = insert(*rootp, key, compar, &ret);
+  if (update)
+    *rootp = update;
+  return ret;
 }
 
-static void walk(const struct node *r, void (*action)(const void *, VISIT, int), int d)
-{
-	if (r == 0)
-		return;
-	if (r->left == 0 && r->right == 0)
-		action(r, leaf, d);
-	else {
-		action(r, preorder, d);
-		walk(r->left, action, d+1);
-		action(r, postorder, d);
-		walk(r->right, action, d+1);
-		action(r, endorder, d);
-	}
+static void walk(const struct node* r,
+                 void (*action)(const void*, VISIT, int),
+                 int d) {
+  if (r == 0)
+    return;
+  if (r->left == 0 && r->right == 0)
+    action(r, leaf, d);
+  else {
+    action(r, preorder, d);
+    walk(r->left, action, d + 1);
+    action(r, postorder, d);
+    walk(r->right, action, d + 1);
+    action(r, endorder, d);
+  }
 }
 
-void twalk(const void *root, void (*action)(const void *, VISIT, int))
-{
-	walk(root, action, 0);
+void twalk(const void* root, void (*action)(const void*, VISIT, int)) {
+  walk(root, action, 0);
 }
diff --git a/fusl/src/select/poll.c b/fusl/src/select/poll.c
index 9e0bcbd..c8edc43 100644
--- a/fusl/src/select/poll.c
+++ b/fusl/src/select/poll.c
@@ -4,13 +4,16 @@
 #include "syscall.h"
 #include "libc.h"
 
-int poll(struct pollfd *fds, nfds_t n, int timeout)
-{
+int poll(struct pollfd* fds, nfds_t n, int timeout) {
 #ifdef SYS_poll
-	return syscall_cp(SYS_poll, fds, n, timeout);
+  return syscall_cp(SYS_poll, fds, n, timeout);
 #else
-	return syscall_cp(SYS_ppoll, fds, n, timeout>=0 ?
-		&((struct timespec){ .tv_sec = timeout/1000,
-		.tv_nsec = timeout%1000*1000000 }) : 0, 0, _NSIG/8);
+  return syscall_cp(
+      SYS_ppoll, fds, n,
+      timeout >= 0
+          ? &((struct timespec){.tv_sec = timeout / 1000,
+                                .tv_nsec = timeout % 1000 * 1000000})
+          : 0,
+      0, _NSIG / 8);
 #endif
 }
diff --git a/fusl/src/select/pselect.c b/fusl/src/select/pselect.c
index 4e2d7b0..8caee60 100644
--- a/fusl/src/select/pselect.c
+++ b/fusl/src/select/pselect.c
@@ -4,10 +4,15 @@
 #include "syscall.h"
 #include "libc.h"
 
-int pselect(int n, fd_set *restrict rfds, fd_set *restrict wfds, fd_set *restrict efds, const struct timespec *restrict ts, const sigset_t *restrict mask)
-{
-	syscall_arg_t data[2] = { (uintptr_t)mask, _NSIG/8 };
-	struct timespec ts_tmp;
-	if (ts) ts_tmp = *ts;
-	return syscall_cp(SYS_pselect6, n, rfds, wfds, efds, ts ? &ts_tmp : 0, data);
+int pselect(int n,
+            fd_set* restrict rfds,
+            fd_set* restrict wfds,
+            fd_set* restrict efds,
+            const struct timespec* restrict ts,
+            const sigset_t* restrict mask) {
+  syscall_arg_t data[2] = {(uintptr_t)mask, _NSIG / 8};
+  struct timespec ts_tmp;
+  if (ts)
+    ts_tmp = *ts;
+  return syscall_cp(SYS_pselect6, n, rfds, wfds, efds, ts ? &ts_tmp : 0, data);
 }
diff --git a/fusl/src/select/select.c b/fusl/src/select/select.c
index 7b5f6dc..9515142 100644
--- a/fusl/src/select/select.c
+++ b/fusl/src/select/select.c
@@ -5,22 +5,25 @@
 #include "syscall.h"
 #include "libc.h"
 
-int select(int n, fd_set *restrict rfds, fd_set *restrict wfds, fd_set *restrict efds, struct timeval *restrict tv)
-{
+int select(int n,
+           fd_set* restrict rfds,
+           fd_set* restrict wfds,
+           fd_set* restrict efds,
+           struct timeval* restrict tv) {
 #ifdef SYS_select
-	return syscall_cp(SYS_select, n, rfds, wfds, efds, tv);
+  return syscall_cp(SYS_select, n, rfds, wfds, efds, tv);
 #else
-	syscall_arg_t data[2] = { 0, _NSIG/8 };
-	struct timespec ts;
-	if (tv) {
-		if (tv->tv_sec < 0 || tv->tv_usec < 0)
-			return __syscall_ret(-EINVAL);
-		time_t extra_secs = tv->tv_usec / 1000000;
-		ts.tv_nsec = tv->tv_usec % 1000000 * 1000;
-		const time_t max_time = (1ULL<<8*sizeof(time_t)-1)-1;
-		ts.tv_sec = extra_secs > max_time - tv->tv_sec ?
-			max_time : tv->tv_sec + extra_secs;
-	}
-	return syscall_cp(SYS_pselect6, n, rfds, wfds, efds, tv ? &ts : 0, data);
+  syscall_arg_t data[2] = {0, _NSIG / 8};
+  struct timespec ts;
+  if (tv) {
+    if (tv->tv_sec < 0 || tv->tv_usec < 0)
+      return __syscall_ret(-EINVAL);
+    time_t extra_secs = tv->tv_usec / 1000000;
+    ts.tv_nsec = tv->tv_usec % 1000000 * 1000;
+    const time_t max_time = (1ULL << 8 * sizeof(time_t) - 1) - 1;
+    ts.tv_sec =
+        extra_secs > max_time - tv->tv_sec ? max_time : tv->tv_sec + extra_secs;
+  }
+  return syscall_cp(SYS_pselect6, n, rfds, wfds, efds, tv ? &ts : 0, data);
 #endif
 }
diff --git a/fusl/src/signal/block.c b/fusl/src/signal/block.c
index d7f6100..b0d3fa5 100644
--- a/fusl/src/signal/block.c
+++ b/fusl/src/signal/block.c
@@ -4,41 +4,38 @@
 
 static const unsigned long all_mask[] = {
 #if ULONG_MAX == 0xffffffff && _NSIG == 129
-	-1UL, -1UL, -1UL, -1UL
+    -1UL, -1UL, -1UL, -1UL
 #elif ULONG_MAX == 0xffffffff
-	-1UL, -1UL
+    -1UL, -1UL
 #else
-	-1UL
+    -1UL
 #endif
 };
 
 static const unsigned long app_mask[] = {
 #if ULONG_MAX == 0xffffffff
 #if _NSIG == 65
-	0x7fffffff, 0xfffffffc
+    0x7fffffff, 0xfffffffc
 #else
-	0x7fffffff, 0xfffffffc, -1UL, -1UL
+    0x7fffffff, 0xfffffffc, -1UL, -1UL
 #endif
 #else
 #if _NSIG == 65
-	0xfffffffc7fffffff
+    0xfffffffc7fffffff
 #else
-	0xfffffffc7fffffff, -1UL
+    0xfffffffc7fffffff, -1UL
 #endif
 #endif
 };
 
-void __block_all_sigs(void *set)
-{
-	__syscall(SYS_rt_sigprocmask, SIG_BLOCK, &all_mask, set, _NSIG/8);
+void __block_all_sigs(void* set) {
+  __syscall(SYS_rt_sigprocmask, SIG_BLOCK, &all_mask, set, _NSIG / 8);
 }
 
-void __block_app_sigs(void *set)
-{
-	__syscall(SYS_rt_sigprocmask, SIG_BLOCK, &app_mask, set, _NSIG/8);
+void __block_app_sigs(void* set) {
+  __syscall(SYS_rt_sigprocmask, SIG_BLOCK, &app_mask, set, _NSIG / 8);
 }
 
-void __restore_sigs(void *set)
-{
-	__syscall(SYS_rt_sigprocmask, SIG_SETMASK, set, 0, _NSIG/8);
+void __restore_sigs(void* set) {
+  __syscall(SYS_rt_sigprocmask, SIG_SETMASK, set, 0, _NSIG / 8);
 }
diff --git a/fusl/src/signal/getitimer.c b/fusl/src/signal/getitimer.c
index 8a8046a..eac53ef 100644
--- a/fusl/src/signal/getitimer.c
+++ b/fusl/src/signal/getitimer.c
@@ -1,7 +1,6 @@
 #include <sys/time.h>
 #include "syscall.h"
 
-int getitimer(int which, struct itimerval *old)
-{
-	return syscall(SYS_getitimer, which, old);
+int getitimer(int which, struct itimerval* old) {
+  return syscall(SYS_getitimer, which, old);
 }
diff --git a/fusl/src/signal/kill.c b/fusl/src/signal/kill.c
index 0580573..1344522 100644
--- a/fusl/src/signal/kill.c
+++ b/fusl/src/signal/kill.c
@@ -1,7 +1,6 @@
 #include <signal.h>
 #include "syscall.h"
 
-int kill(pid_t pid, int sig)
-{
-	return syscall(SYS_kill, pid, sig);
+int kill(pid_t pid, int sig) {
+  return syscall(SYS_kill, pid, sig);
 }
diff --git a/fusl/src/signal/killpg.c b/fusl/src/signal/killpg.c
index 315ed44..56fa17f 100644
--- a/fusl/src/signal/killpg.c
+++ b/fusl/src/signal/killpg.c
@@ -1,11 +1,10 @@
 #include <signal.h>
 #include <errno.h>
 
-int killpg(pid_t pgid, int sig)
-{
-	if (pgid < 0) {
-		errno = EINVAL;
-		return -1;
-	}
-	return kill(-pgid, sig);
+int killpg(pid_t pgid, int sig) {
+  if (pgid < 0) {
+    errno = EINVAL;
+    return -1;
+  }
+  return kill(-pgid, sig);
 }
diff --git a/fusl/src/signal/psiginfo.c b/fusl/src/signal/psiginfo.c
index 57be34c..afc99fa 100644
--- a/fusl/src/signal/psiginfo.c
+++ b/fusl/src/signal/psiginfo.c
@@ -2,9 +2,10 @@
 #include <string.h>
 #include <signal.h>
 
-void psiginfo(const siginfo_t *si, const char *msg)
-{
-	char *s = strsignal(si->si_signo);
-	if (msg) fprintf(stderr, "%s: %s\n", msg, s);
-	else fprintf(stderr, "%s\n", s);
+void psiginfo(const siginfo_t* si, const char* msg) {
+  char* s = strsignal(si->si_signo);
+  if (msg)
+    fprintf(stderr, "%s: %s\n", msg, s);
+  else
+    fprintf(stderr, "%s\n", s);
 }
diff --git a/fusl/src/signal/psignal.c b/fusl/src/signal/psignal.c
index 02f1c76..6d8a0e3 100644
--- a/fusl/src/signal/psignal.c
+++ b/fusl/src/signal/psignal.c
@@ -2,9 +2,10 @@
 #include <string.h>
 #include <signal.h>
 
-void psignal(int sig, const char *msg)
-{
-	char *s = strsignal(sig);
-	if (msg) fprintf(stderr, "%s: %s\n", msg, s);
-	else fprintf(stderr, "%s\n", s);
+void psignal(int sig, const char* msg) {
+  char* s = strsignal(sig);
+  if (msg)
+    fprintf(stderr, "%s: %s\n", msg, s);
+  else
+    fprintf(stderr, "%s\n", s);
 }
diff --git a/fusl/src/signal/raise.c b/fusl/src/signal/raise.c
index 717b1c9..c4f9dae 100644
--- a/fusl/src/signal/raise.c
+++ b/fusl/src/signal/raise.c
@@ -3,13 +3,12 @@
 #include "syscall.h"
 #include "pthread_impl.h"
 
-int raise(int sig)
-{
-	int tid, ret;
-	sigset_t set;
-	__block_app_sigs(&set);
-	tid = __syscall(SYS_gettid);
-	ret = syscall(SYS_tkill, tid, sig);
-	__restore_sigs(&set);
-	return ret;
+int raise(int sig) {
+  int tid, ret;
+  sigset_t set;
+  __block_app_sigs(&set);
+  tid = __syscall(SYS_gettid);
+  ret = syscall(SYS_tkill, tid, sig);
+  __restore_sigs(&set);
+  return ret;
 }
diff --git a/fusl/src/signal/restore.c b/fusl/src/signal/restore.c
index 873b867..638a67b 100644
--- a/fusl/src/signal/restore.c
+++ b/fusl/src/signal/restore.c
@@ -1,10 +1,6 @@
 /* These functions will not work, but suffice for targets where the
  * kernel sigaction structure does not actually use sa_restorer. */
 
-void __restore()
-{
-}
+void __restore() {}
 
-void __restore_rt()
-{
-}
+void __restore_rt() {}
diff --git a/fusl/src/signal/setitimer.c b/fusl/src/signal/setitimer.c
index 21b1f45..abf872a 100644
--- a/fusl/src/signal/setitimer.c
+++ b/fusl/src/signal/setitimer.c
@@ -1,7 +1,8 @@
 #include <sys/time.h>
 #include "syscall.h"
 
-int setitimer(int which, const struct itimerval *restrict new, struct itimerval *restrict old)
-{
-	return syscall(SYS_setitimer, which, new, old);
+int setitimer(int which,
+              const struct itimerval* restrict new,
+              struct itimerval* restrict old) {
+  return syscall(SYS_setitimer, which, new, old);
 }
diff --git a/fusl/src/signal/sigaction.c b/fusl/src/signal/sigaction.c
index 6eca06f..6d00f0e 100644
--- a/fusl/src/signal/sigaction.c
+++ b/fusl/src/signal/sigaction.c
@@ -7,57 +7,58 @@
 #include "ksigaction.h"
 
 static int unmask_done;
-static unsigned long handler_set[_NSIG/(8*sizeof(long))];
+static unsigned long handler_set[_NSIG / (8 * sizeof(long))];
 
-void __get_handler_set(sigset_t *set)
-{
-	memcpy(set, handler_set, sizeof handler_set);
+void __get_handler_set(sigset_t* set) {
+  memcpy(set, handler_set, sizeof handler_set);
 }
 
-int __libc_sigaction(int sig, const struct sigaction *restrict sa, struct sigaction *restrict old)
-{
-	struct k_sigaction ksa, ksa_old;
-	if (sa) {
-		if ((uintptr_t)sa->sa_handler > 1UL) {
-			a_or_l(handler_set+(sig-1)/(8*sizeof(long)),
-				1UL<<(sig-1)%(8*sizeof(long)));
+int __libc_sigaction(int sig,
+                     const struct sigaction* restrict sa,
+                     struct sigaction* restrict old) {
+  struct k_sigaction ksa, ksa_old;
+  if (sa) {
+    if ((uintptr_t)sa->sa_handler > 1UL) {
+      a_or_l(handler_set + (sig - 1) / (8 * sizeof(long)),
+             1UL << (sig - 1) % (8 * sizeof(long)));
 
-			/* If pthread_create has not yet been called,
-			 * implementation-internal signals might not
-			 * yet have been unblocked. They must be
-			 * unblocked before any signal handler is
-			 * installed, so that an application cannot
-			 * receive an illegal sigset_t (with them
-			 * blocked) as part of the ucontext_t passed
-			 * to the signal handler. */
-			if (!libc.threaded && !unmask_done) {
-				__syscall(SYS_rt_sigprocmask, SIG_UNBLOCK,
-					SIGPT_SET, 0, _NSIG/8);
-				unmask_done = 1;
-			}
-		}
-		ksa.handler = sa->sa_handler;
-		ksa.flags = sa->sa_flags | SA_RESTORER;
-		ksa.restorer = (sa->sa_flags & SA_SIGINFO) ? __restore_rt : __restore;
-		memcpy(&ksa.mask, &sa->sa_mask, sizeof ksa.mask);
-	}
-	if (syscall(SYS_rt_sigaction, sig, sa?&ksa:0, old?&ksa_old:0, sizeof ksa.mask))
-		return -1;
-	if (old) {
-		old->sa_handler = ksa_old.handler;
-		old->sa_flags = ksa_old.flags;
-		memcpy(&old->sa_mask, &ksa_old.mask, sizeof ksa_old.mask);
-	}
-	return 0;
+      /* If pthread_create has not yet been called,
+       * implementation-internal signals might not
+       * yet have been unblocked. They must be
+       * unblocked before any signal handler is
+       * installed, so that an application cannot
+       * receive an illegal sigset_t (with them
+       * blocked) as part of the ucontext_t passed
+       * to the signal handler. */
+      if (!libc.threaded && !unmask_done) {
+        __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, SIGPT_SET, 0, _NSIG / 8);
+        unmask_done = 1;
+      }
+    }
+    ksa.handler = sa->sa_handler;
+    ksa.flags = sa->sa_flags | SA_RESTORER;
+    ksa.restorer = (sa->sa_flags & SA_SIGINFO) ? __restore_rt : __restore;
+    memcpy(&ksa.mask, &sa->sa_mask, sizeof ksa.mask);
+  }
+  if (syscall(SYS_rt_sigaction, sig, sa ? &ksa : 0, old ? &ksa_old : 0,
+              sizeof ksa.mask))
+    return -1;
+  if (old) {
+    old->sa_handler = ksa_old.handler;
+    old->sa_flags = ksa_old.flags;
+    memcpy(&old->sa_mask, &ksa_old.mask, sizeof ksa_old.mask);
+  }
+  return 0;
 }
 
-int __sigaction(int sig, const struct sigaction *restrict sa, struct sigaction *restrict old)
-{
-	if (sig-32U < 3 || sig-1U >= _NSIG-1) {
-		errno = EINVAL;
-		return -1;
-	}
-	return __libc_sigaction(sig, sa, old);
+int __sigaction(int sig,
+                const struct sigaction* restrict sa,
+                struct sigaction* restrict old) {
+  if (sig - 32U < 3 || sig - 1U >= _NSIG - 1) {
+    errno = EINVAL;
+    return -1;
+  }
+  return __libc_sigaction(sig, sa, old);
 }
 
 weak_alias(__sigaction, sigaction);
diff --git a/fusl/src/signal/sigaddset.c b/fusl/src/signal/sigaddset.c
index 085d1f4..3fae93a 100644
--- a/fusl/src/signal/sigaddset.c
+++ b/fusl/src/signal/sigaddset.c
@@ -1,13 +1,13 @@
 #include <signal.h>
 #include <errno.h>
 
-int sigaddset(sigset_t *set, int sig)
-{
-	unsigned s = sig-1;
-	if (s >= _NSIG-1 || sig-32U < 3) {
-		errno = EINVAL;
-		return -1;
-	}
-	set->__bits[s/8/sizeof *set->__bits] |= 1UL<<(s&8*sizeof *set->__bits-1);
-	return 0;
+int sigaddset(sigset_t* set, int sig) {
+  unsigned s = sig - 1;
+  if (s >= _NSIG - 1 || sig - 32U < 3) {
+    errno = EINVAL;
+    return -1;
+  }
+  set->__bits[s / 8 / sizeof *set->__bits] |=
+      1UL << (s & 8 * sizeof *set->__bits - 1);
+  return 0;
 }
diff --git a/fusl/src/signal/sigaltstack.c b/fusl/src/signal/sigaltstack.c
index 62cb81a..9329c25 100644
--- a/fusl/src/signal/sigaltstack.c
+++ b/fusl/src/signal/sigaltstack.c
@@ -2,17 +2,16 @@
 #include <errno.h>
 #include "syscall.h"
 
-int sigaltstack(const stack_t *restrict ss, stack_t *restrict old)
-{
-	if (ss) {
-		if (ss->ss_size < MINSIGSTKSZ) {
-			errno = ENOMEM;
-			return -1;
-		}
-		if (ss->ss_flags & ~SS_DISABLE) {
-			errno = EINVAL;
-			return -1;
-		}
-	}
-	return syscall(SYS_sigaltstack, ss, old);
+int sigaltstack(const stack_t* restrict ss, stack_t* restrict old) {
+  if (ss) {
+    if (ss->ss_size < MINSIGSTKSZ) {
+      errno = ENOMEM;
+      return -1;
+    }
+    if (ss->ss_flags & ~SS_DISABLE) {
+      errno = EINVAL;
+      return -1;
+    }
+  }
+  return syscall(SYS_sigaltstack, ss, old);
 }
diff --git a/fusl/src/signal/sigandset.c b/fusl/src/signal/sigandset.c
index 974186f..392ec14 100644
--- a/fusl/src/signal/sigandset.c
+++ b/fusl/src/signal/sigandset.c
@@ -1,12 +1,11 @@
 #define _GNU_SOURCE
 #include <signal.h>
 
-#define SST_SIZE (_NSIG/8/sizeof(long))
+#define SST_SIZE (_NSIG / 8 / sizeof(long))
 
-int sigandset(sigset_t *dest, const sigset_t *left, const sigset_t *right)
-{
-	unsigned long i = 0, *d = (void*) dest, *l = (void*) left, *r = (void*) right;
-	for(; i < SST_SIZE; i++) d[i] = l[i] & r[i];
-	return 0;
+int sigandset(sigset_t* dest, const sigset_t* left, const sigset_t* right) {
+  unsigned long i = 0, *d = (void *)dest, *l = (void *)left, *r = (void *)right;
+  for (; i < SST_SIZE; i++)
+    d[i] = l[i] & r[i];
+  return 0;
 }
-
diff --git a/fusl/src/signal/sigdelset.c b/fusl/src/signal/sigdelset.c
index ce69280..ceb0156 100644
--- a/fusl/src/signal/sigdelset.c
+++ b/fusl/src/signal/sigdelset.c
@@ -1,13 +1,13 @@
 #include <signal.h>
 #include <errno.h>
 
-int sigdelset(sigset_t *set, int sig)
-{
-	unsigned s = sig-1;
-	if (s >= _NSIG-1 || sig-32U < 3) {
-		errno = EINVAL;
-		return -1;
-	}
-	set->__bits[s/8/sizeof *set->__bits] &=~(1UL<<(s&8*sizeof *set->__bits-1));
-	return 0;
+int sigdelset(sigset_t* set, int sig) {
+  unsigned s = sig - 1;
+  if (s >= _NSIG - 1 || sig - 32U < 3) {
+    errno = EINVAL;
+    return -1;
+  }
+  set->__bits[s / 8 / sizeof *set->__bits] &=
+      ~(1UL << (s & 8 * sizeof *set->__bits - 1));
+  return 0;
 }
diff --git a/fusl/src/signal/sigemptyset.c b/fusl/src/signal/sigemptyset.c
index 1d07471..91b4182 100644
--- a/fusl/src/signal/sigemptyset.c
+++ b/fusl/src/signal/sigemptyset.c
@@ -1,13 +1,13 @@
 #include <signal.h>
 #include <string.h>
 
-int sigemptyset(sigset_t *set)
-{
-	set->__bits[0] = 0;
-	if (sizeof(long)==4 || _NSIG > 65) set->__bits[1] = 0;
-	if (sizeof(long)==4 && _NSIG > 65) {
-		set->__bits[2] = 0;
-		set->__bits[3] = 0;
-	}
-	return 0;
+int sigemptyset(sigset_t* set) {
+  set->__bits[0] = 0;
+  if (sizeof(long) == 4 || _NSIG > 65)
+    set->__bits[1] = 0;
+  if (sizeof(long) == 4 && _NSIG > 65) {
+    set->__bits[2] = 0;
+    set->__bits[3] = 0;
+  }
+  return 0;
 }
diff --git a/fusl/src/signal/sigfillset.c b/fusl/src/signal/sigfillset.c
index 16e7b4f..5e7f703 100644
--- a/fusl/src/signal/sigfillset.c
+++ b/fusl/src/signal/sigfillset.c
@@ -1,18 +1,18 @@
 #include <signal.h>
 #include <limits.h>
 
-int sigfillset(sigset_t *set)
-{
+int sigfillset(sigset_t* set) {
 #if ULONG_MAX == 0xffffffff
-	set->__bits[0] = 0x7ffffffful;
-	set->__bits[1] = 0xfffffffcul;
-	if (_NSIG > 65) {
-		set->__bits[2] = 0xfffffffful;
-		set->__bits[3] = 0xfffffffful;
-	}
+  set->__bits[0] = 0x7ffffffful;
+  set->__bits[1] = 0xfffffffcul;
+  if (_NSIG > 65) {
+    set->__bits[2] = 0xfffffffful;
+    set->__bits[3] = 0xfffffffful;
+  }
 #else
-	set->__bits[0] = 0xfffffffc7ffffffful;
-	if (_NSIG > 65) set->__bits[1] = 0xfffffffffffffffful;
+  set->__bits[0] = 0xfffffffc7ffffffful;
+  if (_NSIG > 65)
+    set->__bits[1] = 0xfffffffffffffffful;
 #endif
-	return 0;
+  return 0;
 }
diff --git a/fusl/src/signal/sighold.c b/fusl/src/signal/sighold.c
index cfa2306..8a5bdeb 100644
--- a/fusl/src/signal/sighold.c
+++ b/fusl/src/signal/sighold.c
@@ -1,10 +1,10 @@
 #include <signal.h>
 
-int sighold(int sig)
-{
-	sigset_t mask;
+int sighold(int sig) {
+  sigset_t mask;
 
-	sigemptyset(&mask);
-	if (sigaddset(&mask, sig) < 0) return -1;
-	return sigprocmask(SIG_BLOCK, &mask, 0);
+  sigemptyset(&mask);
+  if (sigaddset(&mask, sig) < 0)
+    return -1;
+  return sigprocmask(SIG_BLOCK, &mask, 0);
 }
diff --git a/fusl/src/signal/sigignore.c b/fusl/src/signal/sigignore.c
index 5ba05e1..51a5dcd 100644
--- a/fusl/src/signal/sigignore.c
+++ b/fusl/src/signal/sigignore.c
@@ -1,11 +1,10 @@
 #include <signal.h>
 
-int sigignore(int sig)
-{
-	struct sigaction sa;
+int sigignore(int sig) {
+  struct sigaction sa;
 
-	sigemptyset(&sa.sa_mask);
-	sa.sa_handler = SIG_IGN;
-	sa.sa_flags = 0;
-	return sigaction(sig, &sa, 0);
+  sigemptyset(&sa.sa_mask);
+  sa.sa_handler = SIG_IGN;
+  sa.sa_flags = 0;
+  return sigaction(sig, &sa, 0);
 }
diff --git a/fusl/src/signal/siginterrupt.c b/fusl/src/signal/siginterrupt.c
index 7006340..0f0beb7 100644
--- a/fusl/src/signal/siginterrupt.c
+++ b/fusl/src/signal/siginterrupt.c
@@ -1,12 +1,13 @@
 #include <signal.h>
 
-int siginterrupt(int sig, int flag)
-{
-	struct sigaction sa;
+int siginterrupt(int sig, int flag) {
+  struct sigaction sa;
 
-	sigaction(sig, 0, &sa);
-	if (flag) sa.sa_flags &= ~SA_RESTART;
-	else sa.sa_flags |= SA_RESTART;
+  sigaction(sig, 0, &sa);
+  if (flag)
+    sa.sa_flags &= ~SA_RESTART;
+  else
+    sa.sa_flags |= SA_RESTART;
 
-	return sigaction(sig, &sa, 0);
+  return sigaction(sig, &sa, 0);
 }
diff --git a/fusl/src/signal/sigisemptyset.c b/fusl/src/signal/sigisemptyset.c
index 312c66c..f7898d6 100644
--- a/fusl/src/signal/sigisemptyset.c
+++ b/fusl/src/signal/sigisemptyset.c
@@ -2,8 +2,7 @@
 #include <signal.h>
 #include <string.h>
 
-int sigisemptyset(const sigset_t *set)
-{
-	static const unsigned long zeroset[_NSIG/8/sizeof(long)];
-	return !memcmp(set, &zeroset, _NSIG/8);
+int sigisemptyset(const sigset_t* set) {
+  static const unsigned long zeroset[_NSIG / 8 / sizeof(long)];
+  return !memcmp(set, &zeroset, _NSIG / 8);
 }
diff --git a/fusl/src/signal/sigismember.c b/fusl/src/signal/sigismember.c
index ab87d62..52c84c3 100644
--- a/fusl/src/signal/sigismember.c
+++ b/fusl/src/signal/sigismember.c
@@ -1,8 +1,9 @@
 #include <signal.h>
 
-int sigismember(const sigset_t *set, int sig)
-{
-	unsigned s = sig-1;
-	if (s >= _NSIG-1) return 0;
-	return !!(set->__bits[s/8/sizeof *set->__bits] & 1UL<<(s&8*sizeof *set->__bits-1));
+int sigismember(const sigset_t* set, int sig) {
+  unsigned s = sig - 1;
+  if (s >= _NSIG - 1)
+    return 0;
+  return !!(set->__bits[s / 8 / sizeof *set->__bits] &
+            1UL << (s & 8 * sizeof *set->__bits - 1));
 }
diff --git a/fusl/src/signal/siglongjmp.c b/fusl/src/signal/siglongjmp.c
index bc317ac..9f36d0c 100644
--- a/fusl/src/signal/siglongjmp.c
+++ b/fusl/src/signal/siglongjmp.c
@@ -3,7 +3,6 @@
 #include "syscall.h"
 #include "pthread_impl.h"
 
-_Noreturn void siglongjmp(sigjmp_buf buf, int ret)
-{
-	longjmp(buf, ret);
+_Noreturn void siglongjmp(sigjmp_buf buf, int ret) {
+  longjmp(buf, ret);
 }
diff --git a/fusl/src/signal/signal.c b/fusl/src/signal/signal.c
index 29e03c8..edf932a 100644
--- a/fusl/src/signal/signal.c
+++ b/fusl/src/signal/signal.c
@@ -2,14 +2,13 @@
 #include "syscall.h"
 #include "libc.h"
 
-int __sigaction(int, const struct sigaction *, struct sigaction *);
+int __sigaction(int, const struct sigaction*, struct sigaction*);
 
-void (*signal(int sig, void (*func)(int)))(int)
-{
-	struct sigaction sa_old, sa = { .sa_handler = func, .sa_flags = SA_RESTART };
-	if (__sigaction(sig, &sa, &sa_old) < 0)
-		return SIG_ERR;
-	return sa_old.sa_handler;
+void (*signal(int sig, void (*func)(int)))(int) {
+  struct sigaction sa_old, sa = {.sa_handler = func, .sa_flags = SA_RESTART};
+  if (__sigaction(sig, &sa, &sa_old) < 0)
+    return SIG_ERR;
+  return sa_old.sa_handler;
 }
 
 weak_alias(signal, bsd_signal);
diff --git a/fusl/src/signal/sigorset.c b/fusl/src/signal/sigorset.c
index ed48873..8155ca4 100644
--- a/fusl/src/signal/sigorset.c
+++ b/fusl/src/signal/sigorset.c
@@ -1,12 +1,11 @@
 #define _GNU_SOURCE
 #include <signal.h>
 
-#define SST_SIZE (_NSIG/8/sizeof(long))
+#define SST_SIZE (_NSIG / 8 / sizeof(long))
 
-int sigorset(sigset_t *dest, const sigset_t *left, const sigset_t *right)
-{
-	unsigned long i = 0, *d = (void*) dest, *l = (void*) left, *r = (void*) right;
-	for(; i < SST_SIZE; i++) d[i] = l[i] | r[i];
-	return 0;
+int sigorset(sigset_t* dest, const sigset_t* left, const sigset_t* right) {
+  unsigned long i = 0, *d = (void *)dest, *l = (void *)left, *r = (void *)right;
+  for (; i < SST_SIZE; i++)
+    d[i] = l[i] | r[i];
+  return 0;
 }
-
diff --git a/fusl/src/signal/sigpause.c b/fusl/src/signal/sigpause.c
index 363d2fe..f3bb5be 100644
--- a/fusl/src/signal/sigpause.c
+++ b/fusl/src/signal/sigpause.c
@@ -1,9 +1,8 @@
 #include <signal.h>
 
-int sigpause(int sig)
-{
-	sigset_t mask;
-	sigprocmask(0, 0, &mask);
-	sigdelset(&mask, sig);
-	return sigsuspend(&mask);
+int sigpause(int sig) {
+  sigset_t mask;
+  sigprocmask(0, 0, &mask);
+  sigdelset(&mask, sig);
+  return sigsuspend(&mask);
 }
diff --git a/fusl/src/signal/sigpending.c b/fusl/src/signal/sigpending.c
index 3d193df..6f47cc0 100644
--- a/fusl/src/signal/sigpending.c
+++ b/fusl/src/signal/sigpending.c
@@ -1,7 +1,6 @@
 #include <signal.h>
 #include "syscall.h"
 
-int sigpending(sigset_t *set)
-{
-	return syscall(SYS_rt_sigpending, set, _NSIG/8);
+int sigpending(sigset_t* set) {
+  return syscall(SYS_rt_sigpending, set, _NSIG / 8);
 }
diff --git a/fusl/src/signal/sigprocmask.c b/fusl/src/signal/sigprocmask.c
index 297e20c..a8cb8c6 100644
--- a/fusl/src/signal/sigprocmask.c
+++ b/fusl/src/signal/sigprocmask.c
@@ -1,10 +1,10 @@
 #include <signal.h>
 #include <errno.h>
 
-int sigprocmask(int how, const sigset_t *restrict set, sigset_t *restrict old)
-{
-	int r = pthread_sigmask(how, set, old);
-	if (!r) return r;
-	errno = r;
-	return -1;
+int sigprocmask(int how, const sigset_t* restrict set, sigset_t* restrict old) {
+  int r = pthread_sigmask(how, set, old);
+  if (!r)
+    return r;
+  errno = r;
+  return -1;
 }
diff --git a/fusl/src/signal/sigqueue.c b/fusl/src/signal/sigqueue.c
index b75f0c5..2914e5e 100644
--- a/fusl/src/signal/sigqueue.c
+++ b/fusl/src/signal/sigqueue.c
@@ -4,19 +4,18 @@
 #include "syscall.h"
 #include "pthread_impl.h"
 
-int sigqueue(pid_t pid, int sig, const union sigval value)
-{
-	siginfo_t si;
-	sigset_t set;
-	int r;
-	memset(&si, 0, sizeof si);
-	si.si_signo = sig;
-	si.si_code = SI_QUEUE;
-	si.si_value = value;
-	si.si_uid = getuid();
-	__block_app_sigs(&set);
-	si.si_pid = getpid();
-	r = syscall(SYS_rt_sigqueueinfo, pid, sig, &si);
-	__restore_sigs(&set);
-	return r;
+int sigqueue(pid_t pid, int sig, const union sigval value) {
+  siginfo_t si;
+  sigset_t set;
+  int r;
+  memset(&si, 0, sizeof si);
+  si.si_signo = sig;
+  si.si_code = SI_QUEUE;
+  si.si_value = value;
+  si.si_uid = getuid();
+  __block_app_sigs(&set);
+  si.si_pid = getpid();
+  r = syscall(SYS_rt_sigqueueinfo, pid, sig, &si);
+  __restore_sigs(&set);
+  return r;
 }
diff --git a/fusl/src/signal/sigrelse.c b/fusl/src/signal/sigrelse.c
index b4c5a00..6976dc9 100644
--- a/fusl/src/signal/sigrelse.c
+++ b/fusl/src/signal/sigrelse.c
@@ -1,10 +1,10 @@
 #include <signal.h>
 
-int sigrelse(int sig)
-{
-	sigset_t mask;
+int sigrelse(int sig) {
+  sigset_t mask;
 
-	sigemptyset(&mask);
-	if (sigaddset(&mask, sig) < 0) return -1;
-	return sigprocmask(SIG_UNBLOCK, &mask, 0);
+  sigemptyset(&mask);
+  if (sigaddset(&mask, sig) < 0)
+    return -1;
+  return sigprocmask(SIG_UNBLOCK, &mask, 0);
 }
diff --git a/fusl/src/signal/sigrtmax.c b/fusl/src/signal/sigrtmax.c
index 44dc88f..4b7738c 100644
--- a/fusl/src/signal/sigrtmax.c
+++ b/fusl/src/signal/sigrtmax.c
@@ -1,6 +1,5 @@
 #include <signal.h>
 
-int __libc_current_sigrtmax()
-{
-	return _NSIG-1;
+int __libc_current_sigrtmax() {
+  return _NSIG - 1;
 }
diff --git a/fusl/src/signal/sigrtmin.c b/fusl/src/signal/sigrtmin.c
index d0e769b..4b9ae3a 100644
--- a/fusl/src/signal/sigrtmin.c
+++ b/fusl/src/signal/sigrtmin.c
@@ -1,4 +1,3 @@
-int __libc_current_sigrtmin()
-{
-	return 35;
+int __libc_current_sigrtmin() {
+  return 35;
 }
diff --git a/fusl/src/signal/sigset.c b/fusl/src/signal/sigset.c
index 0d7b456..7273771 100644
--- a/fusl/src/signal/sigset.c
+++ b/fusl/src/signal/sigset.c
@@ -1,27 +1,26 @@
 #include <signal.h>
 
-void (*sigset(int sig, void (*handler)(int)))(int)
-{
-	struct sigaction sa, sa_old;
-	sigset_t mask;
+void (*sigset(int sig, void (*handler)(int)))(int) {
+  struct sigaction sa, sa_old;
+  sigset_t mask;
 
-	sigemptyset(&mask);
-	if (sigaddset(&mask, sig) < 0)
-		return SIG_ERR;
-	
-	if (handler == SIG_HOLD) {
-		if (sigaction(sig, 0, &sa_old) < 0)
-			return SIG_ERR;
-		if (sigprocmask(SIG_BLOCK, &mask, &mask) < 0)
-			return SIG_ERR;
-	} else {
-		sa.sa_handler = handler;
-		sa.sa_flags = 0;
-		sigemptyset(&sa.sa_mask);
-		if (sigaction(sig, &sa, &sa_old) < 0)
-			return SIG_ERR;
-		if (sigprocmask(SIG_UNBLOCK, &mask, &mask) < 0)
-			return SIG_ERR;
-	}
-	return sigismember(&mask, sig) ? SIG_HOLD : sa_old.sa_handler;
+  sigemptyset(&mask);
+  if (sigaddset(&mask, sig) < 0)
+    return SIG_ERR;
+
+  if (handler == SIG_HOLD) {
+    if (sigaction(sig, 0, &sa_old) < 0)
+      return SIG_ERR;
+    if (sigprocmask(SIG_BLOCK, &mask, &mask) < 0)
+      return SIG_ERR;
+  } else {
+    sa.sa_handler = handler;
+    sa.sa_flags = 0;
+    sigemptyset(&sa.sa_mask);
+    if (sigaction(sig, &sa, &sa_old) < 0)
+      return SIG_ERR;
+    if (sigprocmask(SIG_UNBLOCK, &mask, &mask) < 0)
+      return SIG_ERR;
+  }
+  return sigismember(&mask, sig) ? SIG_HOLD : sa_old.sa_handler;
 }
diff --git a/fusl/src/signal/sigsetjmp_tail.c b/fusl/src/signal/sigsetjmp_tail.c
index 78762aa..90903f4 100644
--- a/fusl/src/signal/sigsetjmp_tail.c
+++ b/fusl/src/signal/sigsetjmp_tail.c
@@ -2,10 +2,10 @@
 #include <signal.h>
 #include "syscall.h"
 
-__attribute__((__visibility__("hidden")))
-int __sigsetjmp_tail(sigjmp_buf jb, int ret)
-{
-	void *p = jb->__ss;
-	__syscall(SYS_rt_sigprocmask, SIG_SETMASK, ret?p:0, ret?0:p, _NSIG/8);
-	return ret;
+__attribute__((__visibility__("hidden"))) int __sigsetjmp_tail(sigjmp_buf jb,
+                                                               int ret) {
+  void* p = jb->__ss;
+  __syscall(SYS_rt_sigprocmask, SIG_SETMASK, ret ? p : 0, ret ? 0 : p,
+            _NSIG / 8);
+  return ret;
 }
diff --git a/fusl/src/signal/sigsuspend.c b/fusl/src/signal/sigsuspend.c
index 0b42725..827157e 100644
--- a/fusl/src/signal/sigsuspend.c
+++ b/fusl/src/signal/sigsuspend.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int sigsuspend(const sigset_t *mask)
-{
-	return syscall_cp(SYS_rt_sigsuspend, mask, _NSIG/8);
+int sigsuspend(const sigset_t* mask) {
+  return syscall_cp(SYS_rt_sigsuspend, mask, _NSIG / 8);
 }
diff --git a/fusl/src/signal/sigtimedwait.c b/fusl/src/signal/sigtimedwait.c
index 0739986..3e3b2e6 100644
--- a/fusl/src/signal/sigtimedwait.c
+++ b/fusl/src/signal/sigtimedwait.c
@@ -3,11 +3,12 @@
 #include "syscall.h"
 #include "libc.h"
 
-int sigtimedwait(const sigset_t *restrict mask, siginfo_t *restrict si, const struct timespec *restrict timeout)
-{
-	int ret;
-	do ret = syscall_cp(SYS_rt_sigtimedwait, mask,
-		si, timeout, _NSIG/8);
-	while (ret<0 && errno==EINTR);
-	return ret;
+int sigtimedwait(const sigset_t* restrict mask,
+                 siginfo_t* restrict si,
+                 const struct timespec* restrict timeout) {
+  int ret;
+  do
+    ret = syscall_cp(SYS_rt_sigtimedwait, mask, si, timeout, _NSIG / 8);
+  while (ret < 0 && errno == EINTR);
+  return ret;
 }
diff --git a/fusl/src/signal/sigwait.c b/fusl/src/signal/sigwait.c
index c8822ee..2e12bdf 100644
--- a/fusl/src/signal/sigwait.c
+++ b/fusl/src/signal/sigwait.c
@@ -1,10 +1,9 @@
 #include <signal.h>
 
-int sigwait(const sigset_t *restrict mask, int *restrict sig)
-{
-	siginfo_t si;
-	if (sigtimedwait(mask, &si, 0) < 0)
-		return -1;
-	*sig = si.si_signo;
-	return 0;
+int sigwait(const sigset_t* restrict mask, int* restrict sig) {
+  siginfo_t si;
+  if (sigtimedwait(mask, &si, 0) < 0)
+    return -1;
+  *sig = si.si_signo;
+  return 0;
 }
diff --git a/fusl/src/signal/sigwaitinfo.c b/fusl/src/signal/sigwaitinfo.c
index bb51f8b..2f6eb73 100644
--- a/fusl/src/signal/sigwaitinfo.c
+++ b/fusl/src/signal/sigwaitinfo.c
@@ -1,6 +1,5 @@
 #include <signal.h>
 
-int sigwaitinfo(const sigset_t *restrict mask, siginfo_t *restrict si)
-{
-	return sigtimedwait(mask, si, 0);
+int sigwaitinfo(const sigset_t* restrict mask, siginfo_t* restrict si) {
+  return sigtimedwait(mask, si, 0);
 }
diff --git a/fusl/src/stat/__xstat.c b/fusl/src/stat/__xstat.c
index 73c873a..a97b3d1 100644
--- a/fusl/src/stat/__xstat.c
+++ b/fusl/src/stat/__xstat.c
@@ -1,24 +1,20 @@
 #include <sys/stat.h>
 #include "libc.h"
 
-int __fxstat(int ver, int fd, struct stat *buf)
-{
-	return fstat(fd, buf);
+int __fxstat(int ver, int fd, struct stat* buf) {
+  return fstat(fd, buf);
 }
 
-int __fxstatat(int ver, int fd, const char *path, struct stat *buf, int flag)
-{
-	return fstatat(fd, path, buf, flag);
+int __fxstatat(int ver, int fd, const char* path, struct stat* buf, int flag) {
+  return fstatat(fd, path, buf, flag);
 }
 
-int __lxstat(int ver, const char *path, struct stat *buf)
-{
-	return lstat(path, buf);
+int __lxstat(int ver, const char* path, struct stat* buf) {
+  return lstat(path, buf);
 }
 
-int __xstat(int ver, const char *path, struct stat *buf)
-{
-	return stat(path, buf);
+int __xstat(int ver, const char* path, struct stat* buf) {
+  return stat(path, buf);
 }
 
 LFS64(__fxstat);
@@ -26,12 +22,10 @@
 LFS64(__lxstat);
 LFS64(__xstat);
 
-int __xmknod(int ver, const char *path, mode_t mode, dev_t *dev)
-{
-	return mknod(path, mode, *dev);
+int __xmknod(int ver, const char* path, mode_t mode, dev_t* dev) {
+  return mknod(path, mode, *dev);
 }
 
-int __xmknodat(int ver, int fd, const char *path, mode_t mode, dev_t *dev)
-{
-	return mknodat(fd, path, mode, *dev);
+int __xmknodat(int ver, int fd, const char* path, mode_t mode, dev_t* dev) {
+  return mknodat(fd, path, mode, *dev);
 }
diff --git a/fusl/src/stat/chmod.c b/fusl/src/stat/chmod.c
index d4f53c5..3195efb 100644
--- a/fusl/src/stat/chmod.c
+++ b/fusl/src/stat/chmod.c
@@ -2,11 +2,10 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int chmod(const char *path, mode_t mode)
-{
+int chmod(const char* path, mode_t mode) {
 #ifdef SYS_chmod
-	return syscall(SYS_chmod, path, mode);
+  return syscall(SYS_chmod, path, mode);
 #else
-	return syscall(SYS_fchmodat, AT_FDCWD, path, mode);
+  return syscall(SYS_fchmodat, AT_FDCWD, path, mode);
 #endif
 }
diff --git a/fusl/src/stat/fchmod.c b/fusl/src/stat/fchmod.c
index 93e1b64..298dafd 100644
--- a/fusl/src/stat/fchmod.c
+++ b/fusl/src/stat/fchmod.c
@@ -3,19 +3,18 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-void __procfdname(char *, unsigned);
+void __procfdname(char*, unsigned);
 
-int fchmod(int fd, mode_t mode)
-{
-	int ret = __syscall(SYS_fchmod, fd, mode);
-	if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0)
-		return __syscall_ret(ret);
+int fchmod(int fd, mode_t mode) {
+  int ret = __syscall(SYS_fchmod, fd, mode);
+  if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0)
+    return __syscall_ret(ret);
 
-	char buf[15+3*sizeof(int)];
-	__procfdname(buf, fd);
+  char buf[15 + 3 * sizeof(int)];
+  __procfdname(buf, fd);
 #ifdef SYS_chmod
-	return syscall(SYS_chmod, buf, mode);
+  return syscall(SYS_chmod, buf, mode);
 #else
-	return syscall(SYS_fchmodat, AT_FDCWD, buf, mode);
+  return syscall(SYS_fchmodat, AT_FDCWD, buf, mode);
 #endif
 }
diff --git a/fusl/src/stat/fchmodat.c b/fusl/src/stat/fchmodat.c
index d94667a..053ffdf 100644
--- a/fusl/src/stat/fchmodat.c
+++ b/fusl/src/stat/fchmodat.c
@@ -3,37 +3,40 @@
 #include <errno.h>
 #include "syscall.h"
 
-void __procfdname(char *, unsigned);
+void __procfdname(char*, unsigned);
 
-int fchmodat(int fd, const char *path, mode_t mode, int flag)
-{
-	if (!flag) return syscall(SYS_fchmodat, fd, path, mode, flag);
+int fchmodat(int fd, const char* path, mode_t mode, int flag) {
+  if (!flag)
+    return syscall(SYS_fchmodat, fd, path, mode, flag);
 
-	if (flag != AT_SYMLINK_NOFOLLOW)
-		return __syscall_ret(-EINVAL);
+  if (flag != AT_SYMLINK_NOFOLLOW)
+    return __syscall_ret(-EINVAL);
 
-	struct stat st;
-	int ret, fd2;
-	char proc[15+3*sizeof(int)];
+  struct stat st;
+  int ret, fd2;
+  char proc[15 + 3 * sizeof(int)];
 
-	if ((ret = __syscall(SYS_fstatat, fd, path, &st, flag)))
-		return __syscall_ret(ret);
-	if (S_ISLNK(st.st_mode))
-		return __syscall_ret(-EOPNOTSUPP);
+  if ((ret = __syscall(SYS_fstatat, fd, path, &st, flag)))
+    return __syscall_ret(ret);
+  if (S_ISLNK(st.st_mode))
+    return __syscall_ret(-EOPNOTSUPP);
 
-	if ((fd2 = __syscall(SYS_openat, fd, path, O_RDONLY|O_PATH|O_NOFOLLOW|O_NOCTTY|O_CLOEXEC)) < 0) {
-		if (fd2 == -ELOOP)
-			return __syscall_ret(-EOPNOTSUPP);
-		return __syscall_ret(fd2);
-	}
+  if ((fd2 = __syscall(SYS_openat, fd, path, O_RDONLY | O_PATH | O_NOFOLLOW |
+                                                 O_NOCTTY | O_CLOEXEC)) < 0) {
+    if (fd2 == -ELOOP)
+      return __syscall_ret(-EOPNOTSUPP);
+    return __syscall_ret(fd2);
+  }
 
-	__procfdname(proc, fd2);
-	ret = __syscall(SYS_fstatat, AT_FDCWD, proc, &st, 0);
-	if (!ret) {
-		if (S_ISLNK(st.st_mode)) ret = -EOPNOTSUPP;
-		else ret = __syscall(SYS_fchmodat, AT_FDCWD, proc, mode);
-	}
+  __procfdname(proc, fd2);
+  ret = __syscall(SYS_fstatat, AT_FDCWD, proc, &st, 0);
+  if (!ret) {
+    if (S_ISLNK(st.st_mode))
+      ret = -EOPNOTSUPP;
+    else
+      ret = __syscall(SYS_fchmodat, AT_FDCWD, proc, mode);
+  }
 
-	__syscall(SYS_close, fd2);
-	return __syscall_ret(ret);
+  __syscall(SYS_close, fd2);
+  return __syscall_ret(ret);
 }
diff --git a/fusl/src/stat/fstat.c b/fusl/src/stat/fstat.c
index ab4afc0..63c45c8 100644
--- a/fusl/src/stat/fstat.c
+++ b/fusl/src/stat/fstat.c
@@ -4,20 +4,19 @@
 #include "syscall.h"
 #include "libc.h"
 
-void __procfdname(char *, unsigned);
+void __procfdname(char*, unsigned);
 
-int fstat(int fd, struct stat *st)
-{
-	int ret = __syscall(SYS_fstat, fd, st);
-	if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0)
-		return __syscall_ret(ret);
+int fstat(int fd, struct stat* st) {
+  int ret = __syscall(SYS_fstat, fd, st);
+  if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0)
+    return __syscall_ret(ret);
 
-	char buf[15+3*sizeof(int)];
-	__procfdname(buf, fd);
+  char buf[15 + 3 * sizeof(int)];
+  __procfdname(buf, fd);
 #ifdef SYS_stat
-	return syscall(SYS_stat, buf, st);
+  return syscall(SYS_stat, buf, st);
 #else
-	return syscall(SYS_fstatat, AT_FDCWD, buf, st, 0);
+  return syscall(SYS_fstatat, AT_FDCWD, buf, st, 0);
 #endif
 }
 
diff --git a/fusl/src/stat/fstatat.c b/fusl/src/stat/fstatat.c
index 863d526..56c3b28 100644
--- a/fusl/src/stat/fstatat.c
+++ b/fusl/src/stat/fstatat.c
@@ -2,9 +2,11 @@
 #include "syscall.h"
 #include "libc.h"
 
-int fstatat(int fd, const char *restrict path, struct stat *restrict buf, int flag)
-{
-	return syscall(SYS_fstatat, fd, path, buf, flag);
+int fstatat(int fd,
+            const char* restrict path,
+            struct stat* restrict buf,
+            int flag) {
+  return syscall(SYS_fstatat, fd, path, buf, flag);
 }
 
 LFS64(fstatat);
diff --git a/fusl/src/stat/futimens.c b/fusl/src/stat/futimens.c
index 360225b..ed7dcea 100644
--- a/fusl/src/stat/futimens.c
+++ b/fusl/src/stat/futimens.c
@@ -1,6 +1,5 @@
 #include <sys/stat.h>
 
-int futimens(int fd, const struct timespec times[2])
-{
-	return utimensat(fd, 0, times, 0);
+int futimens(int fd, const struct timespec times[2]) {
+  return utimensat(fd, 0, times, 0);
 }
diff --git a/fusl/src/stat/futimesat.c b/fusl/src/stat/futimesat.c
index b4eea1d..d59df74 100644
--- a/fusl/src/stat/futimesat.c
+++ b/fusl/src/stat/futimesat.c
@@ -5,19 +5,20 @@
 #include "syscall.h"
 #include "libc.h"
 
-int __futimesat(int dirfd, const char *pathname, const struct timeval times[2])
-{
-	struct timespec ts[2];
-	if (times) {
-		int i;
-		for (i=0; i<2; i++) {
-			if (times[i].tv_usec >= 1000000ULL)
-				return __syscall_ret(-EINVAL);
-			ts[i].tv_sec = times[i].tv_sec;
-			ts[i].tv_nsec = times[i].tv_usec * 1000;
-		}
-	}
-	return utimensat(dirfd, pathname, times ? ts : 0, 0);
+int __futimesat(int dirfd,
+                const char* pathname,
+                const struct timeval times[2]) {
+  struct timespec ts[2];
+  if (times) {
+    int i;
+    for (i = 0; i < 2; i++) {
+      if (times[i].tv_usec >= 1000000ULL)
+        return __syscall_ret(-EINVAL);
+      ts[i].tv_sec = times[i].tv_sec;
+      ts[i].tv_nsec = times[i].tv_usec * 1000;
+    }
+  }
+  return utimensat(dirfd, pathname, times ? ts : 0, 0);
 }
 
 weak_alias(__futimesat, futimesat);
diff --git a/fusl/src/stat/lchmod.c b/fusl/src/stat/lchmod.c
index f324ba7..75f565a 100644
--- a/fusl/src/stat/lchmod.c
+++ b/fusl/src/stat/lchmod.c
@@ -2,7 +2,6 @@
 #include <sys/stat.h>
 #include <fcntl.h>
 
-int lchmod(const char *path, mode_t mode)
-{
-	return fchmodat(AT_FDCWD, path, mode, AT_SYMLINK_NOFOLLOW);
+int lchmod(const char* path, mode_t mode) {
+  return fchmodat(AT_FDCWD, path, mode, AT_SYMLINK_NOFOLLOW);
 }
diff --git a/fusl/src/stat/lstat.c b/fusl/src/stat/lstat.c
index 5e8b84f..a25dafb 100644
--- a/fusl/src/stat/lstat.c
+++ b/fusl/src/stat/lstat.c
@@ -3,12 +3,11 @@
 #include "syscall.h"
 #include "libc.h"
 
-int lstat(const char *restrict path, struct stat *restrict buf)
-{
+int lstat(const char* restrict path, struct stat* restrict buf) {
 #ifdef SYS_lstat
-	return syscall(SYS_lstat, path, buf);
+  return syscall(SYS_lstat, path, buf);
 #else
-	return syscall(SYS_fstatat, AT_FDCWD, path, buf, AT_SYMLINK_NOFOLLOW);
+  return syscall(SYS_fstatat, AT_FDCWD, path, buf, AT_SYMLINK_NOFOLLOW);
 #endif
 }
 
diff --git a/fusl/src/stat/mkdir.c b/fusl/src/stat/mkdir.c
index 32625b7..f9e55f0 100644
--- a/fusl/src/stat/mkdir.c
+++ b/fusl/src/stat/mkdir.c
@@ -2,11 +2,10 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int mkdir(const char *path, mode_t mode)
-{
+int mkdir(const char* path, mode_t mode) {
 #ifdef SYS_mkdir
-	return syscall(SYS_mkdir, path, mode);
+  return syscall(SYS_mkdir, path, mode);
 #else
-	return syscall(SYS_mkdirat, AT_FDCWD, path, mode);
+  return syscall(SYS_mkdirat, AT_FDCWD, path, mode);
 #endif
 }
diff --git a/fusl/src/stat/mkdirat.c b/fusl/src/stat/mkdirat.c
index b8bc252..e48b80f 100644
--- a/fusl/src/stat/mkdirat.c
+++ b/fusl/src/stat/mkdirat.c
@@ -1,7 +1,6 @@
 #include <sys/stat.h>
 #include "syscall.h"
 
-int mkdirat(int fd, const char *path, mode_t mode)
-{
-	return syscall(SYS_mkdirat, fd, path, mode);
+int mkdirat(int fd, const char* path, mode_t mode) {
+  return syscall(SYS_mkdirat, fd, path, mode);
 }
diff --git a/fusl/src/stat/mkfifo.c b/fusl/src/stat/mkfifo.c
index 60efcf7..ce5aff8 100644
--- a/fusl/src/stat/mkfifo.c
+++ b/fusl/src/stat/mkfifo.c
@@ -1,6 +1,5 @@
 #include <sys/stat.h>
 
-int mkfifo(const char *path, mode_t mode)
-{
-	return mknod(path, mode | S_IFIFO, 0);
+int mkfifo(const char* path, mode_t mode) {
+  return mknod(path, mode | S_IFIFO, 0);
 }
diff --git a/fusl/src/stat/mkfifoat.c b/fusl/src/stat/mkfifoat.c
index d3a1f97..16942aa 100644
--- a/fusl/src/stat/mkfifoat.c
+++ b/fusl/src/stat/mkfifoat.c
@@ -1,6 +1,5 @@
 #include <sys/stat.h>
 
-int mkfifoat(int fd, const char *path, mode_t mode)
-{
-	return mknodat(fd, path, mode | S_IFIFO, 0);
+int mkfifoat(int fd, const char* path, mode_t mode) {
+  return mknodat(fd, path, mode | S_IFIFO, 0);
 }
diff --git a/fusl/src/stat/mknod.c b/fusl/src/stat/mknod.c
index beebd84..fd268cf 100644
--- a/fusl/src/stat/mknod.c
+++ b/fusl/src/stat/mknod.c
@@ -2,11 +2,10 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int mknod(const char *path, mode_t mode, dev_t dev)
-{
+int mknod(const char* path, mode_t mode, dev_t dev) {
 #ifdef SYS_mknod
-	return syscall(SYS_mknod, path, mode, dev);
+  return syscall(SYS_mknod, path, mode, dev);
 #else
-	return syscall(SYS_mknodat, AT_FDCWD, path, mode, dev);
+  return syscall(SYS_mknodat, AT_FDCWD, path, mode, dev);
 #endif
 }
diff --git a/fusl/src/stat/mknodat.c b/fusl/src/stat/mknodat.c
index 7c97c91..f8ce93c 100644
--- a/fusl/src/stat/mknodat.c
+++ b/fusl/src/stat/mknodat.c
@@ -1,7 +1,6 @@
 #include <sys/stat.h>
 #include "syscall.h"
 
-int mknodat(int fd, const char *path, mode_t mode, dev_t dev)
-{
-	return syscall(SYS_mknodat, fd, path, mode, dev);
+int mknodat(int fd, const char* path, mode_t mode, dev_t dev) {
+  return syscall(SYS_mknodat, fd, path, mode, dev);
 }
diff --git a/fusl/src/stat/stat.c b/fusl/src/stat/stat.c
index b4433a0..a1647fb 100644
--- a/fusl/src/stat/stat.c
+++ b/fusl/src/stat/stat.c
@@ -3,12 +3,11 @@
 #include "syscall.h"
 #include "libc.h"
 
-int stat(const char *restrict path, struct stat *restrict buf)
-{
+int stat(const char* restrict path, struct stat* restrict buf) {
 #ifdef SYS_stat
-	return syscall(SYS_stat, path, buf);
+  return syscall(SYS_stat, path, buf);
 #else
-	return syscall(SYS_fstatat, AT_FDCWD, path, buf, 0);
+  return syscall(SYS_fstatat, AT_FDCWD, path, buf, 0);
 #endif
 }
 
diff --git a/fusl/src/stat/statvfs.c b/fusl/src/stat/statvfs.c
index b9522e4..defab24 100644
--- a/fusl/src/stat/statvfs.c
+++ b/fusl/src/stat/statvfs.c
@@ -3,59 +3,56 @@
 #include "syscall.h"
 #include "libc.h"
 
-int __statfs(const char *path, struct statfs *buf)
-{
-	*buf = (struct statfs){0};
+int __statfs(const char* path, struct statfs* buf) {
+  *buf = (struct statfs){0};
 #ifdef SYS_statfs64
-	return syscall(SYS_statfs64, path, sizeof *buf, buf);
+  return syscall(SYS_statfs64, path, sizeof *buf, buf);
 #else
-	return syscall(SYS_statfs, path, buf);
+  return syscall(SYS_statfs, path, buf);
 #endif
 }
 
-int __fstatfs(int fd, struct statfs *buf)
-{
-	*buf = (struct statfs){0};
+int __fstatfs(int fd, struct statfs* buf) {
+  *buf = (struct statfs){0};
 #ifdef SYS_fstatfs64
-	return syscall(SYS_fstatfs64, fd, sizeof *buf, buf);
+  return syscall(SYS_fstatfs64, fd, sizeof *buf, buf);
 #else
-	return syscall(SYS_fstatfs, fd, buf);
+  return syscall(SYS_fstatfs, fd, buf);
 #endif
 }
 
 weak_alias(__statfs, statfs);
 weak_alias(__fstatfs, fstatfs);
 
-static void fixup(struct statvfs *out, const struct statfs *in)
-{
-	*out = (struct statvfs){0};
-	out->f_bsize = in->f_bsize;
-	out->f_frsize = in->f_frsize ? in->f_frsize : in->f_bsize;
-	out->f_blocks = in->f_blocks;
-	out->f_bfree = in->f_bfree;
-	out->f_bavail = in->f_bavail;
-	out->f_files = in->f_files;
-	out->f_ffree = in->f_ffree;
-	out->f_favail = in->f_ffree;
-	out->f_fsid = in->f_fsid.__val[0];
-	out->f_flag = in->f_flags;
-	out->f_namemax = in->f_namelen;
+static void fixup(struct statvfs* out, const struct statfs* in) {
+  *out = (struct statvfs){0};
+  out->f_bsize = in->f_bsize;
+  out->f_frsize = in->f_frsize ? in->f_frsize : in->f_bsize;
+  out->f_blocks = in->f_blocks;
+  out->f_bfree = in->f_bfree;
+  out->f_bavail = in->f_bavail;
+  out->f_files = in->f_files;
+  out->f_ffree = in->f_ffree;
+  out->f_favail = in->f_ffree;
+  out->f_fsid = in->f_fsid.__val[0];
+  out->f_flag = in->f_flags;
+  out->f_namemax = in->f_namelen;
 }
 
-int statvfs(const char *restrict path, struct statvfs *restrict buf)
-{
-	struct statfs kbuf;
-	if (__statfs(path, &kbuf)<0) return -1;
-	fixup(buf, &kbuf);
-	return 0;
+int statvfs(const char* restrict path, struct statvfs* restrict buf) {
+  struct statfs kbuf;
+  if (__statfs(path, &kbuf) < 0)
+    return -1;
+  fixup(buf, &kbuf);
+  return 0;
 }
 
-int fstatvfs(int fd, struct statvfs *buf)
-{
-	struct statfs kbuf;
-	if (__fstatfs(fd, &kbuf)<0) return -1;
-	fixup(buf, &kbuf);
-	return 0;
+int fstatvfs(int fd, struct statvfs* buf) {
+  struct statfs kbuf;
+  if (__fstatfs(fd, &kbuf) < 0)
+    return -1;
+  fixup(buf, &kbuf);
+  return 0;
 }
 
 LFS64(statvfs);
diff --git a/fusl/src/stat/umask.c b/fusl/src/stat/umask.c
index 5ee913e..ff1eb04 100644
--- a/fusl/src/stat/umask.c
+++ b/fusl/src/stat/umask.c
@@ -1,7 +1,6 @@
 #include <sys/stat.h>
 #include "syscall.h"
 
-mode_t umask(mode_t mode)
-{
-	return syscall(SYS_umask, mode);
+mode_t umask(mode_t mode) {
+  return syscall(SYS_umask, mode);
 }
diff --git a/fusl/src/stat/utimensat.c b/fusl/src/stat/utimensat.c
index 159c8be..5d8b9c7 100644
--- a/fusl/src/stat/utimensat.c
+++ b/fusl/src/stat/utimensat.c
@@ -4,34 +4,38 @@
 #include <errno.h>
 #include "syscall.h"
 
-int utimensat(int fd, const char *path, const struct timespec times[2], int flags)
-{
-	int r = __syscall(SYS_utimensat, fd, path, times, flags);
+int utimensat(int fd,
+              const char* path,
+              const struct timespec times[2],
+              int flags) {
+  int r = __syscall(SYS_utimensat, fd, path, times, flags);
 #ifdef SYS_futimesat
-	if (r != -ENOSYS || flags) return __syscall_ret(r);
-	struct timeval *tv = 0, tmp[2];
-	if (times) {
-		int i;
-		tv = tmp;
-		for (i=0; i<2; i++) {
-			if (times[i].tv_nsec >= 1000000000ULL) {
-				if (times[i].tv_nsec == UTIME_NOW &&
-				    times[1-i].tv_nsec == UTIME_NOW) {
-					tv = 0;
-					break;
-				}
-				if (times[i].tv_nsec == UTIME_OMIT)
-					return __syscall_ret(-ENOSYS);
-				return __syscall_ret(-EINVAL);
-			}
-			tmp[i].tv_sec = times[i].tv_sec;
-			tmp[i].tv_usec = times[i].tv_nsec / 1000;
-		}
-	}
+  if (r != -ENOSYS || flags)
+    return __syscall_ret(r);
+  struct timeval *tv = 0, tmp[2];
+  if (times) {
+    int i;
+    tv = tmp;
+    for (i = 0; i < 2; i++) {
+      if (times[i].tv_nsec >= 1000000000ULL) {
+        if (times[i].tv_nsec == UTIME_NOW &&
+            times[1 - i].tv_nsec == UTIME_NOW) {
+          tv = 0;
+          break;
+        }
+        if (times[i].tv_nsec == UTIME_OMIT)
+          return __syscall_ret(-ENOSYS);
+        return __syscall_ret(-EINVAL);
+      }
+      tmp[i].tv_sec = times[i].tv_sec;
+      tmp[i].tv_usec = times[i].tv_nsec / 1000;
+    }
+  }
 
-	r = __syscall(SYS_futimesat, fd, path, tv);
-	if (r != -ENOSYS || fd != AT_FDCWD) return __syscall_ret(r);
-	r = __syscall(SYS_utimes, path, tv);
+  r = __syscall(SYS_futimesat, fd, path, tv);
+  if (r != -ENOSYS || fd != AT_FDCWD)
+    return __syscall_ret(r);
+  r = __syscall(SYS_utimes, path, tv);
 #endif
-	return __syscall_ret(r);
+  return __syscall_ret(r);
 }
diff --git a/fusl/src/stdio/__fclose_ca.c b/fusl/src/stdio/__fclose_ca.c
index e0b12a1..124dcd9 100644
--- a/fusl/src/stdio/__fclose_ca.c
+++ b/fusl/src/stdio/__fclose_ca.c
@@ -1,6 +1,5 @@
 #include "stdio_impl.h"
 
-int __fclose_ca(FILE *f)
-{
-	return f->close(f);
+int __fclose_ca(FILE* f) {
+  return f->close(f);
 }
diff --git a/fusl/src/stdio/__fdopen.c b/fusl/src/stdio/__fdopen.c
index 8d6ce81..3a62f30 100644
--- a/fusl/src/stdio/__fdopen.c
+++ b/fusl/src/stdio/__fdopen.c
@@ -5,56 +5,59 @@
 #include <errno.h>
 #include <string.h>
 
-FILE *__fdopen(int fd, const char *mode)
-{
-	FILE *f;
-	struct winsize wsz;
+FILE* __fdopen(int fd, const char* mode) {
+  FILE* f;
+  struct winsize wsz;
 
-	/* Check for valid initial mode character */
-	if (!strchr("rwa", *mode)) {
-		errno = EINVAL;
-		return 0;
-	}
+  /* Check for valid initial mode character */
+  if (!strchr("rwa", *mode)) {
+    errno = EINVAL;
+    return 0;
+  }
 
-	/* Allocate FILE+buffer or fail */
-	if (!(f=malloc(sizeof *f + UNGET + BUFSIZ))) return 0;
+  /* Allocate FILE+buffer or fail */
+  if (!(f = malloc(sizeof *f + UNGET + BUFSIZ)))
+    return 0;
 
-	/* Zero-fill only the struct, not the buffer */
-	memset(f, 0, sizeof *f);
+  /* Zero-fill only the struct, not the buffer */
+  memset(f, 0, sizeof *f);
 
-	/* Impose mode restrictions */
-	if (!strchr(mode, '+')) f->flags = (*mode == 'r') ? F_NOWR : F_NORD;
+  /* Impose mode restrictions */
+  if (!strchr(mode, '+'))
+    f->flags = (*mode == 'r') ? F_NOWR : F_NORD;
 
-	/* Apply close-on-exec flag */
-	if (strchr(mode, 'e')) __syscall(SYS_fcntl, fd, F_SETFD, FD_CLOEXEC);
+  /* Apply close-on-exec flag */
+  if (strchr(mode, 'e'))
+    __syscall(SYS_fcntl, fd, F_SETFD, FD_CLOEXEC);
 
-	/* Set append mode on fd if opened for append */
-	if (*mode == 'a') {
-		int flags = __syscall(SYS_fcntl, fd, F_GETFL);
-		if (!(flags & O_APPEND))
-			__syscall(SYS_fcntl, fd, F_SETFL, flags | O_APPEND);
-		f->flags |= F_APP;
-	}
+  /* Set append mode on fd if opened for append */
+  if (*mode == 'a') {
+    int flags = __syscall(SYS_fcntl, fd, F_GETFL);
+    if (!(flags & O_APPEND))
+      __syscall(SYS_fcntl, fd, F_SETFL, flags | O_APPEND);
+    f->flags |= F_APP;
+  }
 
-	f->fd = fd;
-	f->buf = (unsigned char *)f + sizeof *f + UNGET;
-	f->buf_size = BUFSIZ;
+  f->fd = fd;
+  f->buf = (unsigned char*)f + sizeof *f + UNGET;
+  f->buf_size = BUFSIZ;
 
-	/* Activate line buffered mode for terminals */
-	f->lbf = EOF;
-	if (!(f->flags & F_NOWR) && !__syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz))
-		f->lbf = '\n';
+  /* Activate line buffered mode for terminals */
+  f->lbf = EOF;
+  if (!(f->flags & F_NOWR) && !__syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz))
+    f->lbf = '\n';
 
-	/* Initialize op ptrs. No problem if some are unneeded. */
-	f->read = __stdio_read;
-	f->write = __stdio_write;
-	f->seek = __stdio_seek;
-	f->close = __stdio_close;
+  /* Initialize op ptrs. No problem if some are unneeded. */
+  f->read = __stdio_read;
+  f->write = __stdio_write;
+  f->seek = __stdio_seek;
+  f->close = __stdio_close;
 
-	if (!libc.threaded) f->lock = -1;
+  if (!libc.threaded)
+    f->lock = -1;
 
-	/* Add new FILE to open file list */
-	return __ofl_add(f);
+  /* Add new FILE to open file list */
+  return __ofl_add(f);
 }
 
 weak_alias(__fdopen, fdopen);
diff --git a/fusl/src/stdio/__fmodeflags.c b/fusl/src/stdio/__fmodeflags.c
index da9f23b..fc69a4f 100644
--- a/fusl/src/stdio/__fmodeflags.c
+++ b/fusl/src/stdio/__fmodeflags.c
@@ -1,16 +1,23 @@
 #include <fcntl.h>
 #include <string.h>
 
-int __fmodeflags(const char *mode)
-{
-	int flags;
-	if (strchr(mode, '+')) flags = O_RDWR;
-	else if (*mode == 'r') flags = O_RDONLY;
-	else flags = O_WRONLY;
-	if (strchr(mode, 'x')) flags |= O_EXCL;
-	if (strchr(mode, 'e')) flags |= O_CLOEXEC;
-	if (*mode != 'r') flags |= O_CREAT;
-	if (*mode == 'w') flags |= O_TRUNC;
-	if (*mode == 'a') flags |= O_APPEND;
-	return flags;
+int __fmodeflags(const char* mode) {
+  int flags;
+  if (strchr(mode, '+'))
+    flags = O_RDWR;
+  else if (*mode == 'r')
+    flags = O_RDONLY;
+  else
+    flags = O_WRONLY;
+  if (strchr(mode, 'x'))
+    flags |= O_EXCL;
+  if (strchr(mode, 'e'))
+    flags |= O_CLOEXEC;
+  if (*mode != 'r')
+    flags |= O_CREAT;
+  if (*mode == 'w')
+    flags |= O_TRUNC;
+  if (*mode == 'a')
+    flags |= O_APPEND;
+  return flags;
 }
diff --git a/fusl/src/stdio/__fopen_rb_ca.c b/fusl/src/stdio/__fopen_rb_ca.c
index 183a5d5..df77c64 100644
--- a/fusl/src/stdio/__fopen_rb_ca.c
+++ b/fusl/src/stdio/__fopen_rb_ca.c
@@ -2,21 +2,24 @@
 #include <fcntl.h>
 #include <string.h>
 
-FILE *__fopen_rb_ca(const char *filename, FILE *f, unsigned char *buf, size_t len)
-{
-	memset(f, 0, sizeof *f);
+FILE* __fopen_rb_ca(const char* filename,
+                    FILE* f,
+                    unsigned char* buf,
+                    size_t len) {
+  memset(f, 0, sizeof *f);
 
-	f->fd = sys_open(filename, O_RDONLY|O_CLOEXEC);
-	if (f->fd < 0) return 0;
-	__syscall(SYS_fcntl, f->fd, F_SETFD, FD_CLOEXEC);
+  f->fd = sys_open(filename, O_RDONLY | O_CLOEXEC);
+  if (f->fd < 0)
+    return 0;
+  __syscall(SYS_fcntl, f->fd, F_SETFD, FD_CLOEXEC);
 
-	f->flags = F_NOWR | F_PERM;
-	f->buf = buf + UNGET;
-	f->buf_size = len - UNGET;
-	f->read = __stdio_read;
-	f->seek = __stdio_seek;
-	f->close = __stdio_close;
-	f->lock = -1;
+  f->flags = F_NOWR | F_PERM;
+  f->buf = buf + UNGET;
+  f->buf_size = len - UNGET;
+  f->read = __stdio_read;
+  f->seek = __stdio_seek;
+  f->close = __stdio_close;
+  f->lock = -1;
 
-	return f;
+  return f;
 }
diff --git a/fusl/src/stdio/__lockfile.c b/fusl/src/stdio/__lockfile.c
index 9d967d6..0e572e6 100644
--- a/fusl/src/stdio/__lockfile.c
+++ b/fusl/src/stdio/__lockfile.c
@@ -1,28 +1,27 @@
 #include "stdio_impl.h"
 #include "pthread_impl.h"
 
-int __lockfile(FILE *f)
-{
-	int owner, tid = __pthread_self()->tid;
-	if (f->lock == tid)
-		return 0;
-	while ((owner = a_cas(&f->lock, 0, tid)))
-		__wait(&f->lock, &f->waiters, owner, 1);
-	return 1;
+int __lockfile(FILE* f) {
+  int owner, tid = __pthread_self()->tid;
+  if (f->lock == tid)
+    return 0;
+  while ((owner = a_cas(&f->lock, 0, tid)))
+    __wait(&f->lock, &f->waiters, owner, 1);
+  return 1;
 }
 
-void __unlockfile(FILE *f)
-{
-	a_store(&f->lock, 0);
+void __unlockfile(FILE* f) {
+  a_store(&f->lock, 0);
 
-	/* The following read is technically invalid under situations
-	 * of self-synchronized destruction. Another thread may have
-	 * called fclose as soon as the above store has completed.
-	 * Nonetheless, since FILE objects always live in memory
-	 * obtained by malloc from the heap, it's safe to assume
-	 * the dereferences below will not fault. In the worst case,
-	 * a spurious syscall will be made. If the implementation of
-	 * malloc changes, this assumption needs revisiting. */
+  /* The following read is technically invalid under situations
+   * of self-synchronized destruction. Another thread may have
+   * called fclose as soon as the above store has completed.
+   * Nonetheless, since FILE objects always live in memory
+   * obtained by malloc from the heap, it's safe to assume
+   * the dereferences below will not fault. In the worst case,
+   * a spurious syscall will be made. If the implementation of
+   * malloc changes, this assumption needs revisiting. */
 
-	if (f->waiters) __wake(&f->lock, 1, 1);
+  if (f->waiters)
+    __wake(&f->lock, 1, 1);
 }
diff --git a/fusl/src/stdio/__overflow.c b/fusl/src/stdio/__overflow.c
index 3bb3792..4229472 100644
--- a/fusl/src/stdio/__overflow.c
+++ b/fusl/src/stdio/__overflow.c
@@ -1,10 +1,12 @@
 #include "stdio_impl.h"
 
-int __overflow(FILE *f, int _c)
-{
-	unsigned char c = _c;
-	if (!f->wend && __towrite(f)) return EOF;
-	if (f->wpos < f->wend && c != f->lbf) return *f->wpos++ = c;
-	if (f->write(f, &c, 1)!=1) return EOF;
-	return c;
+int __overflow(FILE* f, int _c) {
+  unsigned char c = _c;
+  if (!f->wend && __towrite(f))
+    return EOF;
+  if (f->wpos < f->wend && c != f->lbf)
+    return *f->wpos++ = c;
+  if (f->write(f, &c, 1) != 1)
+    return EOF;
+  return c;
 }
diff --git a/fusl/src/stdio/__stdio_close.c b/fusl/src/stdio/__stdio_close.c
index 79452bd..c83bb31 100644
--- a/fusl/src/stdio/__stdio_close.c
+++ b/fusl/src/stdio/__stdio_close.c
@@ -1,13 +1,11 @@
 #include "stdio_impl.h"
 
-static int dummy(int fd)
-{
-	return fd;
+static int dummy(int fd) {
+  return fd;
 }
 
 weak_alias(dummy, __aio_close);
 
-int __stdio_close(FILE *f)
-{
-	return syscall(SYS_close, __aio_close(f->fd));
+int __stdio_close(FILE* f) {
+  return syscall(SYS_close, __aio_close(f->fd));
 }
diff --git a/fusl/src/stdio/__stdio_exit.c b/fusl/src/stdio/__stdio_exit.c
index 191b445..c433983 100644
--- a/fusl/src/stdio/__stdio_exit.c
+++ b/fusl/src/stdio/__stdio_exit.c
@@ -1,24 +1,26 @@
 #include "stdio_impl.h"
 
-static FILE *volatile dummy_file = 0;
+static FILE* volatile dummy_file = 0;
 weak_alias(dummy_file, __stdin_used);
 weak_alias(dummy_file, __stdout_used);
 weak_alias(dummy_file, __stderr_used);
 
-static void close_file(FILE *f)
-{
-	if (!f) return;
-	FFINALLOCK(f);
-	if (f->wpos > f->wbase) f->write(f, 0, 0);
-	if (f->rpos < f->rend) f->seek(f, f->rpos-f->rend, SEEK_CUR);
+static void close_file(FILE* f) {
+  if (!f)
+    return;
+  FFINALLOCK(f);
+  if (f->wpos > f->wbase)
+    f->write(f, 0, 0);
+  if (f->rpos < f->rend)
+    f->seek(f, f->rpos - f->rend, SEEK_CUR);
 }
 
-void __stdio_exit(void)
-{
-	FILE *f;
-	for (f=*__ofl_lock(); f; f=f->next) close_file(f);
-	close_file(__stdin_used);
-	close_file(__stdout_used);
+void __stdio_exit(void) {
+  FILE* f;
+  for (f = *__ofl_lock(); f; f = f->next)
+    close_file(f);
+  close_file(__stdin_used);
+  close_file(__stdout_used);
 }
 
 weak_alias(__stdio_exit, __stdio_exit_needed);
diff --git a/fusl/src/stdio/__stdio_read.c b/fusl/src/stdio/__stdio_read.c
index f8fa6d3..19f8825 100644
--- a/fusl/src/stdio/__stdio_read.c
+++ b/fusl/src/stdio/__stdio_read.c
@@ -1,23 +1,22 @@
 #include "stdio_impl.h"
 #include <sys/uio.h>
 
-size_t __stdio_read(FILE *f, unsigned char *buf, size_t len)
-{
-	struct iovec iov[2] = {
-		{ .iov_base = buf, .iov_len = len - !!f->buf_size },
-		{ .iov_base = f->buf, .iov_len = f->buf_size }
-	};
-	ssize_t cnt;
+size_t __stdio_read(FILE* f, unsigned char* buf, size_t len) {
+  struct iovec iov[2] = {{.iov_base = buf, .iov_len = len - !!f->buf_size},
+                         {.iov_base = f->buf, .iov_len = f->buf_size}};
+  ssize_t cnt;
 
-	cnt = syscall(SYS_readv, f->fd, iov, 2);
-	if (cnt <= 0) {
-		f->flags |= F_EOF ^ ((F_ERR^F_EOF) & cnt);
-		return cnt;
-	}
-	if (cnt <= iov[0].iov_len) return cnt;
-	cnt -= iov[0].iov_len;
-	f->rpos = f->buf;
-	f->rend = f->buf + cnt;
-	if (f->buf_size) buf[len-1] = *f->rpos++;
-	return len;
+  cnt = syscall(SYS_readv, f->fd, iov, 2);
+  if (cnt <= 0) {
+    f->flags |= F_EOF ^ ((F_ERR ^ F_EOF) & cnt);
+    return cnt;
+  }
+  if (cnt <= iov[0].iov_len)
+    return cnt;
+  cnt -= iov[0].iov_len;
+  f->rpos = f->buf;
+  f->rend = f->buf + cnt;
+  if (f->buf_size)
+    buf[len - 1] = *f->rpos++;
+  return len;
 }
diff --git a/fusl/src/stdio/__stdio_seek.c b/fusl/src/stdio/__stdio_seek.c
index 13e06a6..6e642a6 100644
--- a/fusl/src/stdio/__stdio_seek.c
+++ b/fusl/src/stdio/__stdio_seek.c
@@ -1,13 +1,12 @@
 #include "stdio_impl.h"
 
-off_t __stdio_seek(FILE *f, off_t off, int whence)
-{
-	off_t ret;
+off_t __stdio_seek(FILE* f, off_t off, int whence) {
+  off_t ret;
 #ifdef SYS__llseek
-	if (syscall(SYS__llseek, f->fd, off>>32, off, &ret, whence)<0)
-		ret = -1;
+  if (syscall(SYS__llseek, f->fd, off >> 32, off, &ret, whence) < 0)
+    ret = -1;
 #else
-	ret = syscall(SYS_lseek, f->fd, off, whence);
+  ret = syscall(SYS_lseek, f->fd, off, whence);
 #endif
-	return ret;
+  return ret;
 }
diff --git a/fusl/src/stdio/__stdio_write.c b/fusl/src/stdio/__stdio_write.c
index d2d8947..387d12b 100644
--- a/fusl/src/stdio/__stdio_write.c
+++ b/fusl/src/stdio/__stdio_write.c
@@ -1,34 +1,32 @@
 #include "stdio_impl.h"
 #include <sys/uio.h>
 
-size_t __stdio_write(FILE *f, const unsigned char *buf, size_t len)
-{
-	struct iovec iovs[2] = {
-		{ .iov_base = f->wbase, .iov_len = f->wpos-f->wbase },
-		{ .iov_base = (void *)buf, .iov_len = len }
-	};
-	struct iovec *iov = iovs;
-	size_t rem = iov[0].iov_len + iov[1].iov_len;
-	int iovcnt = 2;
-	ssize_t cnt;
-	for (;;) {
-		cnt = syscall(SYS_writev, f->fd, iov, iovcnt);
-		if (cnt == rem) {
-			f->wend = f->buf + f->buf_size;
-			f->wpos = f->wbase = f->buf;
-			return len;
-		}
-		if (cnt < 0) {
-			f->wpos = f->wbase = f->wend = 0;
-			f->flags |= F_ERR;
-			return iovcnt == 2 ? 0 : len-iov[0].iov_len;
-		}
-		rem -= cnt;
-		if (cnt > iov[0].iov_len) {
-			cnt -= iov[0].iov_len;
-			iov++; iovcnt--;
-		}
-		iov[0].iov_base = (char *)iov[0].iov_base + cnt;
-		iov[0].iov_len -= cnt;
-	}
+size_t __stdio_write(FILE* f, const unsigned char* buf, size_t len) {
+  struct iovec iovs[2] = {{.iov_base = f->wbase, .iov_len = f->wpos - f->wbase},
+                          {.iov_base = (void*)buf, .iov_len = len}};
+  struct iovec* iov = iovs;
+  size_t rem = iov[0].iov_len + iov[1].iov_len;
+  int iovcnt = 2;
+  ssize_t cnt;
+  for (;;) {
+    cnt = syscall(SYS_writev, f->fd, iov, iovcnt);
+    if (cnt == rem) {
+      f->wend = f->buf + f->buf_size;
+      f->wpos = f->wbase = f->buf;
+      return len;
+    }
+    if (cnt < 0) {
+      f->wpos = f->wbase = f->wend = 0;
+      f->flags |= F_ERR;
+      return iovcnt == 2 ? 0 : len - iov[0].iov_len;
+    }
+    rem -= cnt;
+    if (cnt > iov[0].iov_len) {
+      cnt -= iov[0].iov_len;
+      iov++;
+      iovcnt--;
+    }
+    iov[0].iov_base = (char*)iov[0].iov_base + cnt;
+    iov[0].iov_len -= cnt;
+  }
 }
diff --git a/fusl/src/stdio/__stdout_write.c b/fusl/src/stdio/__stdout_write.c
index dd1ec60..f17b9a5 100644
--- a/fusl/src/stdio/__stdout_write.c
+++ b/fusl/src/stdio/__stdout_write.c
@@ -1,11 +1,10 @@
 #include "stdio_impl.h"
 #include <sys/ioctl.h>
 
-size_t __stdout_write(FILE *f, const unsigned char *buf, size_t len)
-{
-	struct winsize wsz;
-	f->write = __stdio_write;
-	if (!(f->flags & F_SVB) && __syscall(SYS_ioctl, f->fd, TIOCGWINSZ, &wsz))
-		f->lbf = -1;
-	return __stdio_write(f, buf, len);
+size_t __stdout_write(FILE* f, const unsigned char* buf, size_t len) {
+  struct winsize wsz;
+  f->write = __stdio_write;
+  if (!(f->flags & F_SVB) && __syscall(SYS_ioctl, f->fd, TIOCGWINSZ, &wsz))
+    f->lbf = -1;
+  return __stdio_write(f, buf, len);
 }
diff --git a/fusl/src/stdio/__string_read.c b/fusl/src/stdio/__string_read.c
index 7b50a7e..5589cc5 100644
--- a/fusl/src/stdio/__string_read.c
+++ b/fusl/src/stdio/__string_read.c
@@ -1,16 +1,17 @@
 #include "stdio_impl.h"
 #include <string.h>
 
-size_t __string_read(FILE *f, unsigned char *buf, size_t len)
-{
-	char *src = f->cookie;
-	size_t k = len+256;
-	char *end = memchr(src, 0, k);
-	if (end) k = end-src;
-	if (k < len) len = k;
-	memcpy(buf, src, len);
-	f->rpos = (void *)(src+len);
-	f->rend = (void *)(src+k);
-	f->cookie = src+k;
-	return len;
+size_t __string_read(FILE* f, unsigned char* buf, size_t len) {
+  char* src = f->cookie;
+  size_t k = len + 256;
+  char* end = memchr(src, 0, k);
+  if (end)
+    k = end - src;
+  if (k < len)
+    len = k;
+  memcpy(buf, src, len);
+  f->rpos = (void*)(src + len);
+  f->rend = (void*)(src + k);
+  f->cookie = src + k;
+  return len;
 }
diff --git a/fusl/src/stdio/__toread.c b/fusl/src/stdio/__toread.c
index b08f5bb..15e89b9 100644
--- a/fusl/src/stdio/__toread.c
+++ b/fusl/src/stdio/__toread.c
@@ -1,21 +1,20 @@
 #include <stdio_impl.h>
 
-int __toread(FILE *f)
-{
-	f->mode |= f->mode-1;
-	if (f->wpos > f->buf) f->write(f, 0, 0);
-	f->wpos = f->wbase = f->wend = 0;
-	if (f->flags & F_NORD) {
-		f->flags |= F_ERR;
-		return EOF;
-	}
-	f->rpos = f->rend = f->buf + f->buf_size;
-	return (f->flags & F_EOF) ? EOF : 0;
+int __toread(FILE* f) {
+  f->mode |= f->mode - 1;
+  if (f->wpos > f->buf)
+    f->write(f, 0, 0);
+  f->wpos = f->wbase = f->wend = 0;
+  if (f->flags & F_NORD) {
+    f->flags |= F_ERR;
+    return EOF;
+  }
+  f->rpos = f->rend = f->buf + f->buf_size;
+  return (f->flags & F_EOF) ? EOF : 0;
 }
 
 void __stdio_exit_needed(void);
 
-void __toread_needs_stdio_exit()
-{
-	__stdio_exit_needed();
+void __toread_needs_stdio_exit() {
+  __stdio_exit_needed();
 }
diff --git a/fusl/src/stdio/__towrite.c b/fusl/src/stdio/__towrite.c
index 0a69d92..73666aa 100644
--- a/fusl/src/stdio/__towrite.c
+++ b/fusl/src/stdio/__towrite.c
@@ -1,25 +1,23 @@
 #include "stdio_impl.h"
 
-int __towrite(FILE *f)
-{
-	f->mode |= f->mode-1;
-	if (f->flags & (F_NOWR)) {
-		f->flags |= F_ERR;
-		return EOF;
-	}
-	/* Clear read buffer (easier than summoning nasal demons) */
-	f->rpos = f->rend = 0;
+int __towrite(FILE* f) {
+  f->mode |= f->mode - 1;
+  if (f->flags & (F_NOWR)) {
+    f->flags |= F_ERR;
+    return EOF;
+  }
+  /* Clear read buffer (easier than summoning nasal demons) */
+  f->rpos = f->rend = 0;
 
-	/* Activate write through the buffer. */
-	f->wpos = f->wbase = f->buf;
-	f->wend = f->buf + f->buf_size;
+  /* Activate write through the buffer. */
+  f->wpos = f->wbase = f->buf;
+  f->wend = f->buf + f->buf_size;
 
-	return 0;
+  return 0;
 }
 
 void __stdio_exit_needed(void);
 
-void __towrite_needs_stdio_exit()
-{
-	__stdio_exit_needed();
+void __towrite_needs_stdio_exit() {
+  __stdio_exit_needed();
 }
diff --git a/fusl/src/stdio/__uflow.c b/fusl/src/stdio/__uflow.c
index 2a88bca..4a2ea11 100644
--- a/fusl/src/stdio/__uflow.c
+++ b/fusl/src/stdio/__uflow.c
@@ -3,9 +3,9 @@
 /* This function assumes it will never be called if there is already
  * data buffered for reading. */
 
-int __uflow(FILE *f)
-{
-	unsigned char c;
-	if (!__toread(f) && f->read(f, &c, 1)==1) return c;
-	return EOF;
+int __uflow(FILE* f) {
+  unsigned char c;
+  if (!__toread(f) && f->read(f, &c, 1) == 1)
+    return c;
+  return EOF;
 }
diff --git a/fusl/src/stdio/asprintf.c b/fusl/src/stdio/asprintf.c
index 4ec8353..23641af 100644
--- a/fusl/src/stdio/asprintf.c
+++ b/fusl/src/stdio/asprintf.c
@@ -2,12 +2,11 @@
 #include <stdio.h>
 #include <stdarg.h>
 
-int asprintf(char **s, const char *fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vasprintf(s, fmt, ap);
-	va_end(ap);
-	return ret;
+int asprintf(char** s, const char* fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vasprintf(s, fmt, ap);
+  va_end(ap);
+  return ret;
 }
diff --git a/fusl/src/stdio/clearerr.c b/fusl/src/stdio/clearerr.c
index 3bf94d3..a1ea4f7 100644
--- a/fusl/src/stdio/clearerr.c
+++ b/fusl/src/stdio/clearerr.c
@@ -1,10 +1,9 @@
 #include "stdio_impl.h"
 
-void clearerr(FILE *f)
-{
-	FLOCK(f);
-	f->flags &= ~(F_EOF|F_ERR);
-	FUNLOCK(f);
+void clearerr(FILE* f) {
+  FLOCK(f);
+  f->flags &= ~(F_EOF | F_ERR);
+  FUNLOCK(f);
 }
 
 weak_alias(clearerr, clearerr_unlocked);
diff --git a/fusl/src/stdio/dprintf.c b/fusl/src/stdio/dprintf.c
index 93082ee..503dda5 100644
--- a/fusl/src/stdio/dprintf.c
+++ b/fusl/src/stdio/dprintf.c
@@ -1,12 +1,11 @@
 #include <stdio.h>
 #include <stdarg.h>
 
-int dprintf(int fd, const char *restrict fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vdprintf(fd, fmt, ap);
-	va_end(ap);
-	return ret;
+int dprintf(int fd, const char* restrict fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vdprintf(fd, fmt, ap);
+  va_end(ap);
+  return ret;
 }
diff --git a/fusl/src/stdio/ext.c b/fusl/src/stdio/ext.c
index 1fd9549..3e454b0 100644
--- a/fusl/src/stdio/ext.c
+++ b/fusl/src/stdio/ext.c
@@ -2,56 +2,46 @@
 #include "stdio_impl.h"
 #include <stdio_ext.h>
 
-void _flushlbf(void)
-{
-	fflush(0);
+void _flushlbf(void) {
+  fflush(0);
 }
 
-int __fsetlocking(FILE *f, int type)
-{
-	return 0;
+int __fsetlocking(FILE* f, int type) {
+  return 0;
 }
 
-int __fwriting(FILE *f)
-{
-	return (f->flags & F_NORD) || f->wend;
+int __fwriting(FILE* f) {
+  return (f->flags & F_NORD) || f->wend;
 }
 
-int __freading(FILE *f)
-{
-	return (f->flags & F_NOWR) || f->rend;
+int __freading(FILE* f) {
+  return (f->flags & F_NOWR) || f->rend;
 }
 
-int __freadable(FILE *f)
-{
-	return !(f->flags & F_NORD);
+int __freadable(FILE* f) {
+  return !(f->flags & F_NORD);
 }
 
-int __fwritable(FILE *f)
-{
-	return !(f->flags & F_NOWR);
+int __fwritable(FILE* f) {
+  return !(f->flags & F_NOWR);
 }
 
-int __flbf(FILE *f)
-{
-	return f->lbf >= 0;
+int __flbf(FILE* f) {
+  return f->lbf >= 0;
 }
 
-size_t __fbufsize(FILE *f)
-{
-	return f->buf_size;
+size_t __fbufsize(FILE* f) {
+  return f->buf_size;
 }
 
-size_t __fpending(FILE *f)
-{
-	return f->wend ? f->wpos - f->wbase : 0;
+size_t __fpending(FILE* f) {
+  return f->wend ? f->wpos - f->wbase : 0;
 }
 
-int __fpurge(FILE *f)
-{
-	f->wpos = f->wbase = f->wend = 0;
-	f->rpos = f->rend = 0;
-	return 0;
+int __fpurge(FILE* f) {
+  f->wpos = f->wbase = f->wend = 0;
+  f->rpos = f->rend = 0;
+  return 0;
 }
 
 weak_alias(__fpurge, fpurge);
diff --git a/fusl/src/stdio/ext2.c b/fusl/src/stdio/ext2.c
index f359be9..50c7d4c 100644
--- a/fusl/src/stdio/ext2.c
+++ b/fusl/src/stdio/ext2.c
@@ -1,24 +1,21 @@
 #include "stdio_impl.h"
 
-size_t __freadahead(FILE *f)
-{
-	return f->rend - f->rpos;
+size_t __freadahead(FILE* f) {
+  return f->rend - f->rpos;
 }
 
-const char *__freadptr(FILE *f, size_t *sizep)
-{
-	size_t size = f->rend - f->rpos;
-	if (!size) return 0;
-	*sizep = size;
-	return (const char *)f->rpos;
+const char* __freadptr(FILE* f, size_t* sizep) {
+  size_t size = f->rend - f->rpos;
+  if (!size)
+    return 0;
+  *sizep = size;
+  return (const char*)f->rpos;
 }
 
-void __freadptrinc(FILE *f, size_t inc)
-{
-	f->rpos += inc;
+void __freadptrinc(FILE* f, size_t inc) {
+  f->rpos += inc;
 }
 
-void __fseterr(FILE *f)
-{
-	f->flags |= F_ERR;
+void __fseterr(FILE* f) {
+  f->flags |= F_ERR;
 }
diff --git a/fusl/src/stdio/fclose.c b/fusl/src/stdio/fclose.c
index d687a87..802982d 100644
--- a/fusl/src/stdio/fclose.c
+++ b/fusl/src/stdio/fclose.c
@@ -1,32 +1,37 @@
 #include "stdio_impl.h"
 #include "libc.h"
 
-static void dummy(FILE *f) { }
+static void dummy(FILE* f) {}
 weak_alias(dummy, __unlist_locked_file);
 
-int fclose(FILE *f)
-{
-	int r;
-	int perm;
-	
-	FLOCK(f);
+int fclose(FILE* f) {
+  int r;
+  int perm;
 
-	__unlist_locked_file(f);
+  FLOCK(f);
 
-	if (!(perm = f->flags & F_PERM)) {
-		FILE **head = __ofl_lock();
-		if (f->prev) f->prev->next = f->next;
-		if (f->next) f->next->prev = f->prev;
-		if (*head == f) *head = f->next;
-		__ofl_unlock();
-	}
+  __unlist_locked_file(f);
 
-	r = fflush(f);
-	r |= f->close(f);
+  if (!(perm = f->flags & F_PERM)) {
+    FILE** head = __ofl_lock();
+    if (f->prev)
+      f->prev->next = f->next;
+    if (f->next)
+      f->next->prev = f->prev;
+    if (*head == f)
+      *head = f->next;
+    __ofl_unlock();
+  }
 
-	if (f->getln_buf) free(f->getln_buf);
-	if (!perm) free(f);
-	else FUNLOCK(f);
+  r = fflush(f);
+  r |= f->close(f);
 
-	return r;
+  if (f->getln_buf)
+    free(f->getln_buf);
+  if (!perm)
+    free(f);
+  else
+    FUNLOCK(f);
+
+  return r;
 }
diff --git a/fusl/src/stdio/feof.c b/fusl/src/stdio/feof.c
index 56da6b9..2a45a94 100644
--- a/fusl/src/stdio/feof.c
+++ b/fusl/src/stdio/feof.c
@@ -2,12 +2,11 @@
 
 #undef feof
 
-int feof(FILE *f)
-{
-	FLOCK(f);
-	int ret = !!(f->flags & F_EOF);
-	FUNLOCK(f);
-	return ret;
+int feof(FILE* f) {
+  FLOCK(f);
+  int ret = !!(f->flags & F_EOF);
+  FUNLOCK(f);
+  return ret;
 }
 
 weak_alias(feof, feof_unlocked);
diff --git a/fusl/src/stdio/ferror.c b/fusl/src/stdio/ferror.c
index d692eed..3585c0b 100644
--- a/fusl/src/stdio/ferror.c
+++ b/fusl/src/stdio/ferror.c
@@ -2,12 +2,11 @@
 
 #undef ferror
 
-int ferror(FILE *f)
-{
-	FLOCK(f);
-	int ret = !!(f->flags & F_ERR);
-	FUNLOCK(f);
-	return ret;
+int ferror(FILE* f) {
+  FLOCK(f);
+  int ret = !!(f->flags & F_ERR);
+  FUNLOCK(f);
+  return ret;
 }
 
 weak_alias(ferror, ferror_unlocked);
diff --git a/fusl/src/stdio/fflush.c b/fusl/src/stdio/fflush.c
index 3f462c8..422f018 100644
--- a/fusl/src/stdio/fflush.c
+++ b/fusl/src/stdio/fflush.c
@@ -1,48 +1,49 @@
 #include "stdio_impl.h"
 
-static int __fflush_unlocked(FILE *f)
-{
-	/* If writing, flush output */
-	if (f->wpos > f->wbase) {
-		f->write(f, 0, 0);
-		if (!f->wpos) return EOF;
-	}
+static int __fflush_unlocked(FILE* f) {
+  /* If writing, flush output */
+  if (f->wpos > f->wbase) {
+    f->write(f, 0, 0);
+    if (!f->wpos)
+      return EOF;
+  }
 
-	/* If reading, sync position, per POSIX */
-	if (f->rpos < f->rend) f->seek(f, f->rpos-f->rend, SEEK_CUR);
+  /* If reading, sync position, per POSIX */
+  if (f->rpos < f->rend)
+    f->seek(f, f->rpos - f->rend, SEEK_CUR);
 
-	/* Clear read and write modes */
-	f->wpos = f->wbase = f->wend = 0;
-	f->rpos = f->rend = 0;
+  /* Clear read and write modes */
+  f->wpos = f->wbase = f->wend = 0;
+  f->rpos = f->rend = 0;
 
-	return 0;
+  return 0;
 }
 
 /* stdout.c will override this if linked */
-static FILE *volatile dummy = 0;
+static FILE* volatile dummy = 0;
 weak_alias(dummy, __stdout_used);
 
-int fflush(FILE *f)
-{
-	int r;
+int fflush(FILE* f) {
+  int r;
 
-	if (f) {
-		FLOCK(f);
-		r = __fflush_unlocked(f);
-		FUNLOCK(f);
-		return r;
-	}
+  if (f) {
+    FLOCK(f);
+    r = __fflush_unlocked(f);
+    FUNLOCK(f);
+    return r;
+  }
 
-	r = __stdout_used ? fflush(__stdout_used) : 0;
+  r = __stdout_used ? fflush(__stdout_used) : 0;
 
-	for (f=*__ofl_lock(); f; f=f->next) {
-		FLOCK(f);
-		if (f->wpos > f->wbase) r |= __fflush_unlocked(f);
-		FUNLOCK(f);
-	}
-	__ofl_unlock();
-	
-	return r;
+  for (f = *__ofl_lock(); f; f = f->next) {
+    FLOCK(f);
+    if (f->wpos > f->wbase)
+      r |= __fflush_unlocked(f);
+    FUNLOCK(f);
+  }
+  __ofl_unlock();
+
+  return r;
 }
 
 weak_alias(__fflush_unlocked, fflush_unlocked);
diff --git a/fusl/src/stdio/fgetc.c b/fusl/src/stdio/fgetc.c
index e122416..0878743 100644
--- a/fusl/src/stdio/fgetc.c
+++ b/fusl/src/stdio/fgetc.c
@@ -1,11 +1,10 @@
 #include "stdio_impl.h"
 
-int fgetc(FILE *f)
-{
-	int c;
-	if (f->lock < 0 || !__lockfile(f))
-		return getc_unlocked(f);
-	c = getc_unlocked(f);
-	__unlockfile(f);
-	return c;
+int fgetc(FILE* f) {
+  int c;
+  if (f->lock < 0 || !__lockfile(f))
+    return getc_unlocked(f);
+  c = getc_unlocked(f);
+  __unlockfile(f);
+  return c;
 }
diff --git a/fusl/src/stdio/fgetln.c b/fusl/src/stdio/fgetln.c
index afe12b5..9a60afe 100644
--- a/fusl/src/stdio/fgetln.c
+++ b/fusl/src/stdio/fgetln.c
@@ -2,20 +2,19 @@
 #include "stdio_impl.h"
 #include <string.h>
 
-char *fgetln(FILE *f, size_t *plen)
-{
-	char *ret = 0, *z;
-	ssize_t l;
-	FLOCK(f);
-	ungetc(getc_unlocked(f), f);
-	if ((z=memchr(f->rpos, '\n', f->rend - f->rpos))) {
-		ret = (char *)f->rpos;
-		*plen = ++z - ret;
-		f->rpos = (void *)z;
-	} else if ((l = getline(&f->getln_buf, (size_t[]){0}, f)) > 0) {
-		*plen = l;
-		ret = f->getln_buf;
-	}
-	FUNLOCK(f);
-	return ret;
+char* fgetln(FILE* f, size_t* plen) {
+  char *ret = 0, *z;
+  ssize_t l;
+  FLOCK(f);
+  ungetc(getc_unlocked(f), f);
+  if ((z = memchr(f->rpos, '\n', f->rend - f->rpos))) {
+    ret = (char*)f->rpos;
+    *plen = ++z - ret;
+    f->rpos = (void*)z;
+  } else if ((l = getline(&f->getln_buf, (size_t[]){0}, f)) > 0) {
+    *plen = l;
+    ret = f->getln_buf;
+  }
+  FUNLOCK(f);
+  return ret;
 }
diff --git a/fusl/src/stdio/fgetpos.c b/fusl/src/stdio/fgetpos.c
index c3fa0eb..e663459 100644
--- a/fusl/src/stdio/fgetpos.c
+++ b/fusl/src/stdio/fgetpos.c
@@ -1,11 +1,11 @@
 #include "stdio_impl.h"
 
-int fgetpos(FILE *restrict f, fpos_t *restrict pos)
-{
-	off_t off = __ftello(f);
-	if (off < 0) return -1;
-	*(off_t *)pos = off;
-	return 0;
+int fgetpos(FILE* restrict f, fpos_t* restrict pos) {
+  off_t off = __ftello(f);
+  if (off < 0)
+    return -1;
+  *(off_t*)pos = off;
+  return 0;
 }
 
 LFS64(fgetpos);
diff --git a/fusl/src/stdio/fgets.c b/fusl/src/stdio/fgets.c
index d3f9819..cf967bb 100644
--- a/fusl/src/stdio/fgets.c
+++ b/fusl/src/stdio/fgets.c
@@ -1,46 +1,50 @@
 #include "stdio_impl.h"
 #include <string.h>
 
-#define MIN(a,b) ((a)<(b) ? (a) : (b))
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
 
-char *fgets(char *restrict s, int n, FILE *restrict f)
-{
-	char *p = s;
-	unsigned char *z;
-	size_t k;
-	int c;
+char* fgets(char* restrict s, int n, FILE* restrict f) {
+  char* p = s;
+  unsigned char* z;
+  size_t k;
+  int c;
 
-	FLOCK(f);
+  FLOCK(f);
 
-	if (n--<=1) {
-		f->mode |= f->mode-1;
-		FUNLOCK(f);
-		if (n) return 0;
-		*s = 0;
-		return s;
-	}
+  if (n-- <= 1) {
+    f->mode |= f->mode - 1;
+    FUNLOCK(f);
+    if (n)
+      return 0;
+    *s = 0;
+    return s;
+  }
 
-	while (n) {
-		z = memchr(f->rpos, '\n', f->rend - f->rpos);
-		k = z ? z - f->rpos + 1 : f->rend - f->rpos;
-		k = MIN(k, n);
-		memcpy(p, f->rpos, k);
-		f->rpos += k;
-		p += k;
-		n -= k;
-		if (z || !n) break;
-		if ((c = getc_unlocked(f)) < 0) {
-			if (p==s || !feof(f)) s = 0;
-			break;
-		}
-		n--;
-		if ((*p++ = c) == '\n') break;
-	}
-	if (s) *p = 0;
+  while (n) {
+    z = memchr(f->rpos, '\n', f->rend - f->rpos);
+    k = z ? z - f->rpos + 1 : f->rend - f->rpos;
+    k = MIN(k, n);
+    memcpy(p, f->rpos, k);
+    f->rpos += k;
+    p += k;
+    n -= k;
+    if (z || !n)
+      break;
+    if ((c = getc_unlocked(f)) < 0) {
+      if (p == s || !feof(f))
+        s = 0;
+      break;
+    }
+    n--;
+    if ((*p++ = c) == '\n')
+      break;
+  }
+  if (s)
+    *p = 0;
 
-	FUNLOCK(f);
+  FUNLOCK(f);
 
-	return s;
+  return s;
 }
 
 weak_alias(fgets, fgets_unlocked);
diff --git a/fusl/src/stdio/fgetwc.c b/fusl/src/stdio/fgetwc.c
index e455cfe..56387f8 100644
--- a/fusl/src/stdio/fgetwc.c
+++ b/fusl/src/stdio/fgetwc.c
@@ -3,58 +3,59 @@
 #include <wchar.h>
 #include <errno.h>
 
-static wint_t __fgetwc_unlocked_internal(FILE *f)
-{
-	mbstate_t st = { 0 };
-	wchar_t wc;
-	int c;
-	unsigned char b;
-	size_t l;
+static wint_t __fgetwc_unlocked_internal(FILE* f) {
+  mbstate_t st = {0};
+  wchar_t wc;
+  int c;
+  unsigned char b;
+  size_t l;
 
-	/* Convert character from buffer if possible */
-	if (f->rpos < f->rend) {
-		l = mbrtowc(&wc, (void *)f->rpos, f->rend - f->rpos, &st);
-		if (l+2 >= 2) {
-			f->rpos += l + !l; /* l==0 means 1 byte, null */
-			return wc;
-		}
-		if (l == -1) {
-			f->rpos++;
-			return WEOF;
-		}
-	} else l = -2;
+  /* Convert character from buffer if possible */
+  if (f->rpos < f->rend) {
+    l = mbrtowc(&wc, (void*)f->rpos, f->rend - f->rpos, &st);
+    if (l + 2 >= 2) {
+      f->rpos += l + !l; /* l==0 means 1 byte, null */
+      return wc;
+    }
+    if (l == -1) {
+      f->rpos++;
+      return WEOF;
+    }
+  } else
+    l = -2;
 
-	/* Convert character byte-by-byte */
-	while (l == -2) {
-		b = c = getc_unlocked(f);
-		if (c < 0) {
-			if (!mbsinit(&st)) errno = EILSEQ;
-			return WEOF;
-		}
-		l = mbrtowc(&wc, (void *)&b, 1, &st);
-		if (l == -1) return WEOF;
-	}
+  /* Convert character byte-by-byte */
+  while (l == -2) {
+    b = c = getc_unlocked(f);
+    if (c < 0) {
+      if (!mbsinit(&st))
+        errno = EILSEQ;
+      return WEOF;
+    }
+    l = mbrtowc(&wc, (void*)&b, 1, &st);
+    if (l == -1)
+      return WEOF;
+  }
 
-	return wc;
+  return wc;
 }
 
-wint_t __fgetwc_unlocked(FILE *f)
-{
-	locale_t *ploc = &CURRENT_LOCALE, loc = *ploc;
-	if (f->mode <= 0) fwide(f, 1);
-	*ploc = f->locale;
-	wchar_t wc = __fgetwc_unlocked_internal(f);
-	*ploc = loc;
-	return wc;
+wint_t __fgetwc_unlocked(FILE* f) {
+  locale_t *ploc = &CURRENT_LOCALE, loc = *ploc;
+  if (f->mode <= 0)
+    fwide(f, 1);
+  *ploc = f->locale;
+  wchar_t wc = __fgetwc_unlocked_internal(f);
+  *ploc = loc;
+  return wc;
 }
 
-wint_t fgetwc(FILE *f)
-{
-	wint_t c;
-	FLOCK(f);
-	c = __fgetwc_unlocked(f);
-	FUNLOCK(f);
-	return c;
+wint_t fgetwc(FILE* f) {
+  wint_t c;
+  FLOCK(f);
+  c = __fgetwc_unlocked(f);
+  FUNLOCK(f);
+  return c;
 }
 
 weak_alias(__fgetwc_unlocked, fgetwc_unlocked);
diff --git a/fusl/src/stdio/fgetws.c b/fusl/src/stdio/fgetws.c
index 195cb43..4a58dfb 100644
--- a/fusl/src/stdio/fgetws.c
+++ b/fusl/src/stdio/fgetws.c
@@ -1,28 +1,31 @@
 #include "stdio_impl.h"
 #include <wchar.h>
 
-wint_t __fgetwc_unlocked(FILE *);
+wint_t __fgetwc_unlocked(FILE*);
 
-wchar_t *fgetws(wchar_t *restrict s, int n, FILE *restrict f)
-{
-	wchar_t *p = s;
+wchar_t* fgetws(wchar_t* restrict s, int n, FILE* restrict f) {
+  wchar_t* p = s;
 
-	if (!n--) return s;
+  if (!n--)
+    return s;
 
-	FLOCK(f);
+  FLOCK(f);
 
-	for (; n; n--) {
-		wint_t c = __fgetwc_unlocked(f);
-		if (c == WEOF) break;
-		*p++ = c;
-		if (c == '\n') break;
-	}
-	*p = 0;
-	if (ferror(f)) p = s;
+  for (; n; n--) {
+    wint_t c = __fgetwc_unlocked(f);
+    if (c == WEOF)
+      break;
+    *p++ = c;
+    if (c == '\n')
+      break;
+  }
+  *p = 0;
+  if (ferror(f))
+    p = s;
 
-	FUNLOCK(f);
+  FUNLOCK(f);
 
-	return (p == s) ? NULL : s;
+  return (p == s) ? NULL : s;
 }
 
 weak_alias(fgetws, fgetws_unlocked);
diff --git a/fusl/src/stdio/fileno.c b/fusl/src/stdio/fileno.c
index ba7f939..9d13901 100644
--- a/fusl/src/stdio/fileno.c
+++ b/fusl/src/stdio/fileno.c
@@ -1,13 +1,12 @@
 #include "stdio_impl.h"
 
-int fileno(FILE *f)
-{
-	/* f->fd never changes, but the lock must be obtained and released
-	 * anyway since this function cannot return while another thread
-	 * holds the lock. */
-	FLOCK(f);
-	FUNLOCK(f);
-	return f->fd;
+int fileno(FILE* f) {
+  /* f->fd never changes, but the lock must be obtained and released
+   * anyway since this function cannot return while another thread
+   * holds the lock. */
+  FLOCK(f);
+  FUNLOCK(f);
+  return f->fd;
 }
 
 weak_alias(fileno, fileno_unlocked);
diff --git a/fusl/src/stdio/flockfile.c b/fusl/src/stdio/flockfile.c
index a196c1e..768bb52 100644
--- a/fusl/src/stdio/flockfile.c
+++ b/fusl/src/stdio/flockfile.c
@@ -1,10 +1,10 @@
 #include "stdio_impl.h"
 #include "pthread_impl.h"
 
-void flockfile(FILE *f)
-{
-	while (ftrylockfile(f)) {
-		int owner = f->lock;
-		if (owner) __wait(&f->lock, &f->waiters, owner, 1);
-	}
+void flockfile(FILE* f) {
+  while (ftrylockfile(f)) {
+    int owner = f->lock;
+    if (owner)
+      __wait(&f->lock, &f->waiters, owner, 1);
+  }
 }
diff --git a/fusl/src/stdio/fmemopen.c b/fusl/src/stdio/fmemopen.c
index 7c193a5..a889c53 100644
--- a/fusl/src/stdio/fmemopen.c
+++ b/fusl/src/stdio/fmemopen.c
@@ -4,111 +4,120 @@
 #include <inttypes.h>
 
 struct cookie {
-	size_t pos, len, size;
-	unsigned char *buf;
-	int mode;
+  size_t pos, len, size;
+  unsigned char* buf;
+  int mode;
 };
 
-static off_t mseek(FILE *f, off_t off, int whence)
-{
-	ssize_t base;
-	struct cookie *c = f->cookie;
-	if (whence>2U) {
-fail:
-		errno = EINVAL;
-		return -1;
-	}
-	base = (size_t [3]){0, c->pos, c->len}[whence];
-	if (off < -base || off > (ssize_t)c->size-base) goto fail;
-	return c->pos = base+off;
+static off_t mseek(FILE* f, off_t off, int whence) {
+  ssize_t base;
+  struct cookie* c = f->cookie;
+  if (whence > 2U) {
+  fail:
+    errno = EINVAL;
+    return -1;
+  }
+  base = (size_t[3]){0, c->pos, c->len}[whence];
+  if (off < -base || off > (ssize_t)c->size - base)
+    goto fail;
+  return c->pos = base + off;
 }
 
-static size_t mread(FILE *f, unsigned char *buf, size_t len)
-{
-	struct cookie *c = f->cookie;
-	size_t rem = c->len - c->pos;
-	if (c->pos > c->len) rem = 0;
-	if (len > rem) {
-		len = rem;
-		f->flags |= F_EOF;
-	}
-	memcpy(buf, c->buf+c->pos, len);
-	c->pos += len;
-	rem -= len;
-	if (rem > f->buf_size) rem = f->buf_size;
-	f->rpos = f->buf;
-	f->rend = f->buf + rem;
-	memcpy(f->rpos, c->buf+c->pos, rem);
-	c->pos += rem;
-	return len;
+static size_t mread(FILE* f, unsigned char* buf, size_t len) {
+  struct cookie* c = f->cookie;
+  size_t rem = c->len - c->pos;
+  if (c->pos > c->len)
+    rem = 0;
+  if (len > rem) {
+    len = rem;
+    f->flags |= F_EOF;
+  }
+  memcpy(buf, c->buf + c->pos, len);
+  c->pos += len;
+  rem -= len;
+  if (rem > f->buf_size)
+    rem = f->buf_size;
+  f->rpos = f->buf;
+  f->rend = f->buf + rem;
+  memcpy(f->rpos, c->buf + c->pos, rem);
+  c->pos += rem;
+  return len;
 }
 
-static size_t mwrite(FILE *f, const unsigned char *buf, size_t len)
-{
-	struct cookie *c = f->cookie;
-	size_t rem;
-	size_t len2 = f->wpos - f->wbase;
-	if (len2) {
-		f->wpos = f->wbase;
-		if (mwrite(f, f->wpos, len2) < len2) return 0;
-	}
-	if (c->mode == 'a') c->pos = c->len;
-	rem = c->size - c->pos;
-	if (len > rem) len = rem;
-	memcpy(c->buf+c->pos, buf, len);
-	c->pos += len;
-	if (c->pos > c->len) {
-		c->len = c->pos;
-		if (c->len < c->size) c->buf[c->len] = 0;
-		else if ((f->flags&F_NORD) && c->size) c->buf[c->size-1] = 0;
-	}
-	return len;
+static size_t mwrite(FILE* f, const unsigned char* buf, size_t len) {
+  struct cookie* c = f->cookie;
+  size_t rem;
+  size_t len2 = f->wpos - f->wbase;
+  if (len2) {
+    f->wpos = f->wbase;
+    if (mwrite(f, f->wpos, len2) < len2)
+      return 0;
+  }
+  if (c->mode == 'a')
+    c->pos = c->len;
+  rem = c->size - c->pos;
+  if (len > rem)
+    len = rem;
+  memcpy(c->buf + c->pos, buf, len);
+  c->pos += len;
+  if (c->pos > c->len) {
+    c->len = c->pos;
+    if (c->len < c->size)
+      c->buf[c->len] = 0;
+    else if ((f->flags & F_NORD) && c->size)
+      c->buf[c->size - 1] = 0;
+  }
+  return len;
 }
 
-static int mclose(FILE *m)
-{
-	return 0;
+static int mclose(FILE* m) {
+  return 0;
 }
 
-FILE *fmemopen(void *restrict buf, size_t size, const char *restrict mode)
-{
-	FILE *f;
-	struct cookie *c;
-	int plus = !!strchr(mode, '+');
-	
-	if (!size || !strchr("rwa", *mode)) {
-		errno = EINVAL;
-		return 0;
-	}
+FILE* fmemopen(void* restrict buf, size_t size, const char* restrict mode) {
+  FILE* f;
+  struct cookie* c;
+  int plus = !!strchr(mode, '+');
 
-	if (!buf && size > SIZE_MAX-sizeof(FILE)-BUFSIZ-UNGET) {
-		errno = ENOMEM;
-		return 0;
-	}
+  if (!size || !strchr("rwa", *mode)) {
+    errno = EINVAL;
+    return 0;
+  }
 
-	f = calloc(sizeof *f + sizeof *c + UNGET + BUFSIZ + (buf?0:size), 1);
-	if (!f) return 0;
-	f->cookie = c = (void *)(f+1);
-	f->fd = -1;
-	f->lbf = EOF;
-	f->buf = (unsigned char *)(c+1) + UNGET;
-	f->buf_size = BUFSIZ;
-	if (!buf) buf = f->buf + BUFSIZ;
+  if (!buf && size > SIZE_MAX - sizeof(FILE) - BUFSIZ - UNGET) {
+    errno = ENOMEM;
+    return 0;
+  }
 
-	c->buf = buf;
-	c->size = size;
-	c->mode = *mode;
-	
-	if (!plus) f->flags = (*mode == 'r') ? F_NOWR : F_NORD;
-	if (*mode == 'r') c->len = size;
-	else if (*mode == 'a') c->len = c->pos = strnlen(buf, size);
+  f = calloc(sizeof *f + sizeof *c + UNGET + BUFSIZ + (buf ? 0 : size), 1);
+  if (!f)
+    return 0;
+  f->cookie = c = (void*)(f + 1);
+  f->fd = -1;
+  f->lbf = EOF;
+  f->buf = (unsigned char*)(c + 1) + UNGET;
+  f->buf_size = BUFSIZ;
+  if (!buf)
+    buf = f->buf + BUFSIZ;
 
-	f->read = mread;
-	f->write = mwrite;
-	f->seek = mseek;
-	f->close = mclose;
+  c->buf = buf;
+  c->size = size;
+  c->mode = *mode;
 
-	if (!libc.threaded) f->lock = -1;
+  if (!plus)
+    f->flags = (*mode == 'r') ? F_NOWR : F_NORD;
+  if (*mode == 'r')
+    c->len = size;
+  else if (*mode == 'a')
+    c->len = c->pos = strnlen(buf, size);
 
-	return __ofl_add(f);
+  f->read = mread;
+  f->write = mwrite;
+  f->seek = mseek;
+  f->close = mclose;
+
+  if (!libc.threaded)
+    f->lock = -1;
+
+  return __ofl_add(f);
 }
diff --git a/fusl/src/stdio/fopen.c b/fusl/src/stdio/fopen.c
index 252f082..77535fb 100644
--- a/fusl/src/stdio/fopen.c
+++ b/fusl/src/stdio/fopen.c
@@ -3,31 +3,32 @@
 #include <string.h>
 #include <errno.h>
 
-FILE *fopen(const char *restrict filename, const char *restrict mode)
-{
-	FILE *f;
-	int fd;
-	int flags;
+FILE* fopen(const char* restrict filename, const char* restrict mode) {
+  FILE* f;
+  int fd;
+  int flags;
 
-	/* Check for valid initial mode character */
-	if (!strchr("rwa", *mode)) {
-		errno = EINVAL;
-		return 0;
-	}
+  /* Check for valid initial mode character */
+  if (!strchr("rwa", *mode)) {
+    errno = EINVAL;
+    return 0;
+  }
 
-	/* Compute the flags to pass to open() */
-	flags = __fmodeflags(mode);
+  /* Compute the flags to pass to open() */
+  flags = __fmodeflags(mode);
 
-	fd = sys_open(filename, flags, 0666);
-	if (fd < 0) return 0;
-	if (flags & O_CLOEXEC)
-		__syscall(SYS_fcntl, fd, F_SETFD, FD_CLOEXEC);
+  fd = sys_open(filename, flags, 0666);
+  if (fd < 0)
+    return 0;
+  if (flags & O_CLOEXEC)
+    __syscall(SYS_fcntl, fd, F_SETFD, FD_CLOEXEC);
 
-	f = __fdopen(fd, mode);
-	if (f) return f;
+  f = __fdopen(fd, mode);
+  if (f)
+    return f;
 
-	__syscall(SYS_close, fd);
-	return 0;
+  __syscall(SYS_close, fd);
+  return 0;
 }
 
 LFS64(fopen);
diff --git a/fusl/src/stdio/fprintf.c b/fusl/src/stdio/fprintf.c
index 948743f..5c8b7d2 100644
--- a/fusl/src/stdio/fprintf.c
+++ b/fusl/src/stdio/fprintf.c
@@ -1,12 +1,11 @@
 #include <stdio.h>
 #include <stdarg.h>
 
-int fprintf(FILE *restrict f, const char *restrict fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vfprintf(f, fmt, ap);
-	va_end(ap);
-	return ret;
+int fprintf(FILE* restrict f, const char* restrict fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vfprintf(f, fmt, ap);
+  va_end(ap);
+  return ret;
 }
diff --git a/fusl/src/stdio/fputc.c b/fusl/src/stdio/fputc.c
index 92762c9..699407b 100644
--- a/fusl/src/stdio/fputc.c
+++ b/fusl/src/stdio/fputc.c
@@ -1,10 +1,9 @@
 #include "stdio_impl.h"
 
-int fputc(int c, FILE *f)
-{
-	if (f->lock < 0 || !__lockfile(f))
-		return putc_unlocked(c, f);
-	c = putc_unlocked(c, f);
-	__unlockfile(f);
-	return c;
+int fputc(int c, FILE* f) {
+  if (f->lock < 0 || !__lockfile(f))
+    return putc_unlocked(c, f);
+  c = putc_unlocked(c, f);
+  __unlockfile(f);
+  return c;
 }
diff --git a/fusl/src/stdio/fputs.c b/fusl/src/stdio/fputs.c
index 4737f44..d1b606e 100644
--- a/fusl/src/stdio/fputs.c
+++ b/fusl/src/stdio/fputs.c
@@ -1,9 +1,8 @@
 #include "stdio_impl.h"
 #include <string.h>
 
-int fputs(const char *restrict s, FILE *restrict f)
-{
-	return (int)fwrite(s, strlen(s), 1, f) - 1;
+int fputs(const char* restrict s, FILE* restrict f) {
+  return (int)fwrite(s, strlen(s), 1, f) - 1;
 }
 
 weak_alias(fputs, fputs_unlocked);
diff --git a/fusl/src/stdio/fputwc.c b/fusl/src/stdio/fputwc.c
index 789fe9c..ad2f18d 100644
--- a/fusl/src/stdio/fputwc.c
+++ b/fusl/src/stdio/fputwc.c
@@ -4,36 +4,39 @@
 #include <limits.h>
 #include <ctype.h>
 
-wint_t __fputwc_unlocked(wchar_t c, FILE *f)
-{
-	char mbc[MB_LEN_MAX];
-	int l;
-	locale_t *ploc = &CURRENT_LOCALE, loc = *ploc;
+wint_t __fputwc_unlocked(wchar_t c, FILE* f) {
+  char mbc[MB_LEN_MAX];
+  int l;
+  locale_t *ploc = &CURRENT_LOCALE, loc = *ploc;
 
-	if (f->mode <= 0) fwide(f, 1);
-	*ploc = f->locale;
+  if (f->mode <= 0)
+    fwide(f, 1);
+  *ploc = f->locale;
 
-	if (isascii(c)) {
-		c = putc_unlocked(c, f);
-	} else if (f->wpos + MB_LEN_MAX < f->wend) {
-		l = wctomb((void *)f->wpos, c);
-		if (l < 0) c = WEOF;
-		else f->wpos += l;
-	} else {
-		l = wctomb(mbc, c);
-		if (l < 0 || __fwritex((void *)mbc, l, f) < l) c = WEOF;
-	}
-	if (c==WEOF) f->flags |= F_ERR;
-	*ploc = loc;
-	return c;
+  if (isascii(c)) {
+    c = putc_unlocked(c, f);
+  } else if (f->wpos + MB_LEN_MAX < f->wend) {
+    l = wctomb((void*)f->wpos, c);
+    if (l < 0)
+      c = WEOF;
+    else
+      f->wpos += l;
+  } else {
+    l = wctomb(mbc, c);
+    if (l < 0 || __fwritex((void*)mbc, l, f) < l)
+      c = WEOF;
+  }
+  if (c == WEOF)
+    f->flags |= F_ERR;
+  *ploc = loc;
+  return c;
 }
 
-wint_t fputwc(wchar_t c, FILE *f)
-{
-	FLOCK(f);
-	c = __fputwc_unlocked(c, f);
-	FUNLOCK(f);
-	return c;
+wint_t fputwc(wchar_t c, FILE* f) {
+  FLOCK(f);
+  c = __fputwc_unlocked(c, f);
+  FUNLOCK(f);
+  return c;
 }
 
 weak_alias(__fputwc_unlocked, fputwc_unlocked);
diff --git a/fusl/src/stdio/fputws.c b/fusl/src/stdio/fputws.c
index 0ed02f1..9e6322e 100644
--- a/fusl/src/stdio/fputws.c
+++ b/fusl/src/stdio/fputws.c
@@ -2,28 +2,27 @@
 #include "locale_impl.h"
 #include <wchar.h>
 
-int fputws(const wchar_t *restrict ws, FILE *restrict f)
-{
-	unsigned char buf[BUFSIZ];
-	size_t l=0;
-	locale_t *ploc = &CURRENT_LOCALE, loc = *ploc;
+int fputws(const wchar_t* restrict ws, FILE* restrict f) {
+  unsigned char buf[BUFSIZ];
+  size_t l = 0;
+  locale_t *ploc = &CURRENT_LOCALE, loc = *ploc;
 
-	FLOCK(f);
+  FLOCK(f);
 
-	fwide(f, 1);
-	*ploc = f->locale;
+  fwide(f, 1);
+  *ploc = f->locale;
 
-	while (ws && (l = wcsrtombs((void *)buf, (void*)&ws, sizeof buf, 0))+1 > 1)
-		if (__fwritex(buf, l, f) < l) {
-			FUNLOCK(f);
-			*ploc = loc;
-			return -1;
-		}
+  while (ws && (l = wcsrtombs((void*)buf, (void*)&ws, sizeof buf, 0)) + 1 > 1)
+    if (__fwritex(buf, l, f) < l) {
+      FUNLOCK(f);
+      *ploc = loc;
+      return -1;
+    }
 
-	FUNLOCK(f);
+  FUNLOCK(f);
 
-	*ploc = loc;
-	return l; /* 0 or -1 */
+  *ploc = loc;
+  return l; /* 0 or -1 */
 }
 
 weak_alias(fputws, fputws_unlocked);
diff --git a/fusl/src/stdio/fread.c b/fusl/src/stdio/fread.c
index aef75f7..533d7cc 100644
--- a/fusl/src/stdio/fread.c
+++ b/fusl/src/stdio/fread.c
@@ -1,38 +1,41 @@
 #include "stdio_impl.h"
 #include <string.h>
 
-#define MIN(a,b) ((a)<(b) ? (a) : (b))
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
 
-size_t fread(void *restrict destv, size_t size, size_t nmemb, FILE *restrict f)
-{
-	unsigned char *dest = destv;
-	size_t len = size*nmemb, l = len, k;
-	if (!size) nmemb = 0;
+size_t fread(void* restrict destv,
+             size_t size,
+             size_t nmemb,
+             FILE* restrict f) {
+  unsigned char* dest = destv;
+  size_t len = size * nmemb, l = len, k;
+  if (!size)
+    nmemb = 0;
 
-	FLOCK(f);
+  FLOCK(f);
 
-	f->mode |= f->mode-1;
+  f->mode |= f->mode - 1;
 
-	if (f->rend - f->rpos > 0) {
-		/* First exhaust the buffer. */
-		k = MIN(f->rend - f->rpos, l);
-		memcpy(dest, f->rpos, k);
-		f->rpos += k;
-		dest += k;
-		l -= k;
-	}
-	
-	/* Read the remainder directly */
-	for (; l; l-=k, dest+=k) {
-		k = __toread(f) ? 0 : f->read(f, dest, l);
-		if (k+1<=1) {
-			FUNLOCK(f);
-			return (len-l)/size;
-		}
-	}
+  if (f->rend - f->rpos > 0) {
+    /* First exhaust the buffer. */
+    k = MIN(f->rend - f->rpos, l);
+    memcpy(dest, f->rpos, k);
+    f->rpos += k;
+    dest += k;
+    l -= k;
+  }
 
-	FUNLOCK(f);
-	return nmemb;
+  /* Read the remainder directly */
+  for (; l; l -= k, dest += k) {
+    k = __toread(f) ? 0 : f->read(f, dest, l);
+    if (k + 1 <= 1) {
+      FUNLOCK(f);
+      return (len - l) / size;
+    }
+  }
+
+  FUNLOCK(f);
+  return nmemb;
 }
 
 weak_alias(fread, fread_unlocked);
diff --git a/fusl/src/stdio/freopen.c b/fusl/src/stdio/freopen.c
index 6c1b575..ba4be9a 100644
--- a/fusl/src/stdio/freopen.c
+++ b/fusl/src/stdio/freopen.c
@@ -11,44 +11,48 @@
 
 int __dup3(int, int, int);
 
-FILE *freopen(const char *restrict filename, const char *restrict mode, FILE *restrict f)
-{
-	int fl = __fmodeflags(mode);
-	FILE *f2;
+FILE* freopen(const char* restrict filename,
+              const char* restrict mode,
+              FILE* restrict f) {
+  int fl = __fmodeflags(mode);
+  FILE* f2;
 
-	FLOCK(f);
+  FLOCK(f);
 
-	fflush(f);
+  fflush(f);
 
-	if (!filename) {
-		if (fl&O_CLOEXEC)
-			__syscall(SYS_fcntl, f->fd, F_SETFD, FD_CLOEXEC);
-		fl &= ~(O_CREAT|O_EXCL|O_CLOEXEC);
-		if (syscall(SYS_fcntl, f->fd, F_SETFL, fl) < 0)
-			goto fail;
-	} else {
-		f2 = fopen(filename, mode);
-		if (!f2) goto fail;
-		if (f2->fd == f->fd) f2->fd = -1; /* avoid closing in fclose */
-		else if (__dup3(f2->fd, f->fd, fl&O_CLOEXEC)<0) goto fail2;
+  if (!filename) {
+    if (fl & O_CLOEXEC)
+      __syscall(SYS_fcntl, f->fd, F_SETFD, FD_CLOEXEC);
+    fl &= ~(O_CREAT | O_EXCL | O_CLOEXEC);
+    if (syscall(SYS_fcntl, f->fd, F_SETFL, fl) < 0)
+      goto fail;
+  } else {
+    f2 = fopen(filename, mode);
+    if (!f2)
+      goto fail;
+    if (f2->fd == f->fd)
+      f2->fd = -1; /* avoid closing in fclose */
+    else if (__dup3(f2->fd, f->fd, fl & O_CLOEXEC) < 0)
+      goto fail2;
 
-		f->flags = (f->flags & F_PERM) | f2->flags;
-		f->read = f2->read;
-		f->write = f2->write;
-		f->seek = f2->seek;
-		f->close = f2->close;
+    f->flags = (f->flags & F_PERM) | f2->flags;
+    f->read = f2->read;
+    f->write = f2->write;
+    f->seek = f2->seek;
+    f->close = f2->close;
 
-		fclose(f2);
-	}
+    fclose(f2);
+  }
 
-	FUNLOCK(f);
-	return f;
+  FUNLOCK(f);
+  return f;
 
 fail2:
-	fclose(f2);
+  fclose(f2);
 fail:
-	fclose(f);
-	return NULL;
+  fclose(f);
+  return NULL;
 }
 
 LFS64(freopen);
diff --git a/fusl/src/stdio/fscanf.c b/fusl/src/stdio/fscanf.c
index acb8a10..ddd583e 100644
--- a/fusl/src/stdio/fscanf.c
+++ b/fusl/src/stdio/fscanf.c
@@ -2,14 +2,13 @@
 #include <stdarg.h>
 #include "libc.h"
 
-int fscanf(FILE *restrict f, const char *restrict fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vfscanf(f, fmt, ap);
-	va_end(ap);
-	return ret;
+int fscanf(FILE* restrict f, const char* restrict fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vfscanf(f, fmt, ap);
+  va_end(ap);
+  return ret;
 }
 
 weak_alias(fscanf, __isoc99_fscanf);
diff --git a/fusl/src/stdio/fseek.c b/fusl/src/stdio/fseek.c
index 4fb9afa..68f3d05 100644
--- a/fusl/src/stdio/fseek.c
+++ b/fusl/src/stdio/fseek.c
@@ -1,41 +1,41 @@
 #include "stdio_impl.h"
 
-int __fseeko_unlocked(FILE *f, off_t off, int whence)
-{
-	/* Adjust relative offset for unread data in buffer, if any. */
-	if (whence == SEEK_CUR) off -= f->rend - f->rpos;
+int __fseeko_unlocked(FILE* f, off_t off, int whence) {
+  /* Adjust relative offset for unread data in buffer, if any. */
+  if (whence == SEEK_CUR)
+    off -= f->rend - f->rpos;
 
-	/* Flush write buffer, and report error on failure. */
-	if (f->wpos > f->wbase) {
-		f->write(f, 0, 0);
-		if (!f->wpos) return -1;
-	}
+  /* Flush write buffer, and report error on failure. */
+  if (f->wpos > f->wbase) {
+    f->write(f, 0, 0);
+    if (!f->wpos)
+      return -1;
+  }
 
-	/* Leave writing mode */
-	f->wpos = f->wbase = f->wend = 0;
+  /* Leave writing mode */
+  f->wpos = f->wbase = f->wend = 0;
 
-	/* Perform the underlying seek. */
-	if (f->seek(f, off, whence) < 0) return -1;
+  /* Perform the underlying seek. */
+  if (f->seek(f, off, whence) < 0)
+    return -1;
 
-	/* If seek succeeded, file is seekable and we discard read buffer. */
-	f->rpos = f->rend = 0;
-	f->flags &= ~F_EOF;
-	
-	return 0;
+  /* If seek succeeded, file is seekable and we discard read buffer. */
+  f->rpos = f->rend = 0;
+  f->flags &= ~F_EOF;
+
+  return 0;
 }
 
-int __fseeko(FILE *f, off_t off, int whence)
-{
-	int result;
-	FLOCK(f);
-	result = __fseeko_unlocked(f, off, whence);
-	FUNLOCK(f);
-	return result;
+int __fseeko(FILE* f, off_t off, int whence) {
+  int result;
+  FLOCK(f);
+  result = __fseeko_unlocked(f, off, whence);
+  FUNLOCK(f);
+  return result;
 }
 
-int fseek(FILE *f, long off, int whence)
-{
-	return __fseeko(f, off, whence);
+int fseek(FILE* f, long off, int whence) {
+  return __fseeko(f, off, whence);
 }
 
 weak_alias(__fseeko, fseeko);
diff --git a/fusl/src/stdio/fsetpos.c b/fusl/src/stdio/fsetpos.c
index 5d76c8c..c4f0bc1 100644
--- a/fusl/src/stdio/fsetpos.c
+++ b/fusl/src/stdio/fsetpos.c
@@ -1,8 +1,7 @@
 #include "stdio_impl.h"
 
-int fsetpos(FILE *f, const fpos_t *pos)
-{
-	return __fseeko(f, *(const off_t *)pos, SEEK_SET);
+int fsetpos(FILE* f, const fpos_t* pos) {
+  return __fseeko(f, *(const off_t*)pos, SEEK_SET);
 }
 
 LFS64(fsetpos);
diff --git a/fusl/src/stdio/ftell.c b/fusl/src/stdio/ftell.c
index fb7966f..ce1ecde 100644
--- a/fusl/src/stdio/ftell.c
+++ b/fusl/src/stdio/ftell.c
@@ -2,34 +2,31 @@
 #include <limits.h>
 #include <errno.h>
 
-off_t __ftello_unlocked(FILE *f)
-{
-	off_t pos = f->seek(f, 0,
-		(f->flags & F_APP) && f->wpos > f->wbase
-		? SEEK_END : SEEK_CUR);
-	if (pos < 0) return pos;
+off_t __ftello_unlocked(FILE* f) {
+  off_t pos = f->seek(
+      f, 0, (f->flags & F_APP) && f->wpos > f->wbase ? SEEK_END : SEEK_CUR);
+  if (pos < 0)
+    return pos;
 
-	/* Adjust for data in buffer. */
-	return pos - (f->rend - f->rpos) + (f->wpos - f->wbase);
+  /* Adjust for data in buffer. */
+  return pos - (f->rend - f->rpos) + (f->wpos - f->wbase);
 }
 
-off_t __ftello(FILE *f)
-{
-	off_t pos;
-	FLOCK(f);
-	pos = __ftello_unlocked(f);
-	FUNLOCK(f);
-	return pos;
+off_t __ftello(FILE* f) {
+  off_t pos;
+  FLOCK(f);
+  pos = __ftello_unlocked(f);
+  FUNLOCK(f);
+  return pos;
 }
 
-long ftell(FILE *f)
-{
-	off_t pos = __ftello(f);
-	if (pos > LONG_MAX) {
-		errno = EOVERFLOW;
-		return -1;
-	}
-	return pos;
+long ftell(FILE* f) {
+  off_t pos = __ftello(f);
+  if (pos > LONG_MAX) {
+    errno = EOVERFLOW;
+    return -1;
+  }
+  return pos;
 }
 
 weak_alias(__ftello, ftello);
diff --git a/fusl/src/stdio/ftrylockfile.c b/fusl/src/stdio/ftrylockfile.c
index eb13c83..ff24645 100644
--- a/fusl/src/stdio/ftrylockfile.c
+++ b/fusl/src/stdio/ftrylockfile.c
@@ -2,39 +2,41 @@
 #include "pthread_impl.h"
 #include <limits.h>
 
-void __do_orphaned_stdio_locks()
-{
-	FILE *f;
-	for (f=__pthread_self()->stdio_locks; f; f=f->next_locked)
-		a_store(&f->lock, 0x40000000);
+void __do_orphaned_stdio_locks() {
+  FILE* f;
+  for (f = __pthread_self()->stdio_locks; f; f = f->next_locked)
+    a_store(&f->lock, 0x40000000);
 }
 
-void __unlist_locked_file(FILE *f)
-{
-	if (f->lockcount) {
-		if (f->next_locked) f->next_locked->prev_locked = f->prev_locked;
-		if (f->prev_locked) f->prev_locked->next_locked = f->next_locked;
-		else __pthread_self()->stdio_locks = f->next_locked;
-	}
+void __unlist_locked_file(FILE* f) {
+  if (f->lockcount) {
+    if (f->next_locked)
+      f->next_locked->prev_locked = f->prev_locked;
+    if (f->prev_locked)
+      f->prev_locked->next_locked = f->next_locked;
+    else
+      __pthread_self()->stdio_locks = f->next_locked;
+  }
 }
 
-int ftrylockfile(FILE *f)
-{
-	pthread_t self = __pthread_self();
-	int tid = self->tid;
-	if (f->lock == tid) {
-		if (f->lockcount == LONG_MAX)
-			return -1;
-		f->lockcount++;
-		return 0;
-	}
-	if (f->lock < 0) f->lock = 0;
-	if (f->lock || a_cas(&f->lock, 0, tid))
-		return -1;
-	f->lockcount = 1;
-	f->prev_locked = 0;
-	f->next_locked = self->stdio_locks;
-	if (f->next_locked) f->next_locked->prev_locked = f;
-	self->stdio_locks = f;
-	return 0;
+int ftrylockfile(FILE* f) {
+  pthread_t self = __pthread_self();
+  int tid = self->tid;
+  if (f->lock == tid) {
+    if (f->lockcount == LONG_MAX)
+      return -1;
+    f->lockcount++;
+    return 0;
+  }
+  if (f->lock < 0)
+    f->lock = 0;
+  if (f->lock || a_cas(&f->lock, 0, tid))
+    return -1;
+  f->lockcount = 1;
+  f->prev_locked = 0;
+  f->next_locked = self->stdio_locks;
+  if (f->next_locked)
+    f->next_locked->prev_locked = f;
+  self->stdio_locks = f;
+  return 0;
 }
diff --git a/fusl/src/stdio/funlockfile.c b/fusl/src/stdio/funlockfile.c
index 30a07ef..6c58b4b 100644
--- a/fusl/src/stdio/funlockfile.c
+++ b/fusl/src/stdio/funlockfile.c
@@ -1,15 +1,14 @@
 #include "stdio_impl.h"
 #include "pthread_impl.h"
 
-void __unlist_locked_file(FILE *);
+void __unlist_locked_file(FILE*);
 
-void funlockfile(FILE *f)
-{
-	if (f->lockcount == 1) {
-		__unlist_locked_file(f);
-		f->lockcount = 0;
-		__unlockfile(f);
-	} else {
-		f->lockcount--;
-	}
+void funlockfile(FILE* f) {
+  if (f->lockcount == 1) {
+    __unlist_locked_file(f);
+    f->lockcount = 0;
+    __unlockfile(f);
+  } else {
+    f->lockcount--;
+  }
 }
diff --git a/fusl/src/stdio/fwide.c b/fusl/src/stdio/fwide.c
index 8410b15..3c3df01 100644
--- a/fusl/src/stdio/fwide.c
+++ b/fusl/src/stdio/fwide.c
@@ -1,15 +1,15 @@
 #include "stdio_impl.h"
 #include "locale_impl.h"
 
-int fwide(FILE *f, int mode)
-{
-	FLOCK(f);
-	if (mode) {
-		if (!f->locale) f->locale = MB_CUR_MAX==1
-			? C_LOCALE : UTF8_LOCALE;
-		if (!f->mode) f->mode = mode>0 ? 1 : -1;
-	}
-	mode = f->mode;
-	FUNLOCK(f);
-	return mode;
+int fwide(FILE* f, int mode) {
+  FLOCK(f);
+  if (mode) {
+    if (!f->locale)
+      f->locale = MB_CUR_MAX == 1 ? C_LOCALE : UTF8_LOCALE;
+    if (!f->mode)
+      f->mode = mode > 0 ? 1 : -1;
+  }
+  mode = f->mode;
+  FUNLOCK(f);
+  return mode;
 }
diff --git a/fusl/src/stdio/fwprintf.c b/fusl/src/stdio/fwprintf.c
index 9ce4f01..acfffbb 100644
--- a/fusl/src/stdio/fwprintf.c
+++ b/fusl/src/stdio/fwprintf.c
@@ -2,12 +2,11 @@
 #include <stdarg.h>
 #include <wchar.h>
 
-int fwprintf(FILE *restrict f, const wchar_t *restrict fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vfwprintf(f, fmt, ap);
-	va_end(ap);
-	return ret;
+int fwprintf(FILE* restrict f, const wchar_t* restrict fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vfwprintf(f, fmt, ap);
+  va_end(ap);
+  return ret;
 }
diff --git a/fusl/src/stdio/fwrite.c b/fusl/src/stdio/fwrite.c
index 7a567b2..5e20d99 100644
--- a/fusl/src/stdio/fwrite.c
+++ b/fusl/src/stdio/fwrite.c
@@ -1,38 +1,44 @@
 #include "stdio_impl.h"
 #include <string.h>
 
-size_t __fwritex(const unsigned char *restrict s, size_t l, FILE *restrict f)
-{
-	size_t i=0;
+size_t __fwritex(const unsigned char* restrict s, size_t l, FILE* restrict f) {
+  size_t i = 0;
 
-	if (!f->wend && __towrite(f)) return 0;
+  if (!f->wend && __towrite(f))
+    return 0;
 
-	if (l > f->wend - f->wpos) return f->write(f, s, l);
+  if (l > f->wend - f->wpos)
+    return f->write(f, s, l);
 
-	if (f->lbf >= 0) {
-		/* Match /^(.*\n|)/ */
-		for (i=l; i && s[i-1] != '\n'; i--);
-		if (i) {
-			size_t n = f->write(f, s, i);
-			if (n < i) return n;
-			s += i;
-			l -= i;
-		}
-	}
+  if (f->lbf >= 0) {
+    /* Match /^(.*\n|)/ */
+    for (i = l; i && s[i - 1] != '\n'; i--)
+      ;
+    if (i) {
+      size_t n = f->write(f, s, i);
+      if (n < i)
+        return n;
+      s += i;
+      l -= i;
+    }
+  }
 
-	memcpy(f->wpos, s, l);
-	f->wpos += l;
-	return l+i;
+  memcpy(f->wpos, s, l);
+  f->wpos += l;
+  return l + i;
 }
 
-size_t fwrite(const void *restrict src, size_t size, size_t nmemb, FILE *restrict f)
-{
-	size_t k, l = size*nmemb;
-	if (!size) nmemb = 0;
-	FLOCK(f);
-	k = __fwritex(src, l, f);
-	FUNLOCK(f);
-	return k==l ? nmemb : k/size;
+size_t fwrite(const void* restrict src,
+              size_t size,
+              size_t nmemb,
+              FILE* restrict f) {
+  size_t k, l = size * nmemb;
+  if (!size)
+    nmemb = 0;
+  FLOCK(f);
+  k = __fwritex(src, l, f);
+  FUNLOCK(f);
+  return k == l ? nmemb : k / size;
 }
 
 weak_alias(fwrite, fwrite_unlocked);
diff --git a/fusl/src/stdio/fwscanf.c b/fusl/src/stdio/fwscanf.c
index cb114b3..0dd5f43 100644
--- a/fusl/src/stdio/fwscanf.c
+++ b/fusl/src/stdio/fwscanf.c
@@ -3,14 +3,13 @@
 #include <wchar.h>
 #include "libc.h"
 
-int fwscanf(FILE *restrict f, const wchar_t *restrict fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vfwscanf(f, fmt, ap);
-	va_end(ap);
-	return ret;
+int fwscanf(FILE* restrict f, const wchar_t* restrict fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vfwscanf(f, fmt, ap);
+  va_end(ap);
+  return ret;
 }
 
-weak_alias(fwscanf,__isoc99_fwscanf);
+weak_alias(fwscanf, __isoc99_fwscanf);
diff --git a/fusl/src/stdio/getc.c b/fusl/src/stdio/getc.c
index b3f351d..fbedf89 100644
--- a/fusl/src/stdio/getc.c
+++ b/fusl/src/stdio/getc.c
@@ -1,13 +1,12 @@
 #include "stdio_impl.h"
 
-int getc(FILE *f)
-{
-	int c;
-	if (f->lock < 0 || !__lockfile(f))
-		return getc_unlocked(f);
-	c = getc_unlocked(f);
-	__unlockfile(f);
-	return c;
+int getc(FILE* f) {
+  int c;
+  if (f->lock < 0 || !__lockfile(f))
+    return getc_unlocked(f);
+  c = getc_unlocked(f);
+  __unlockfile(f);
+  return c;
 }
 
 weak_alias(getc, _IO_getc);
diff --git a/fusl/src/stdio/getc_unlocked.c b/fusl/src/stdio/getc_unlocked.c
index b38dad1..bdcbe5b 100644
--- a/fusl/src/stdio/getc_unlocked.c
+++ b/fusl/src/stdio/getc_unlocked.c
@@ -1,9 +1,8 @@
 #include "stdio_impl.h"
 
-int (getc_unlocked)(FILE *f)
-{
-	return getc_unlocked(f);
+int(getc_unlocked)(FILE* f) {
+  return getc_unlocked(f);
 }
 
-weak_alias (getc_unlocked, fgetc_unlocked);
-weak_alias (getc_unlocked, _IO_getc_unlocked);
+weak_alias(getc_unlocked, fgetc_unlocked);
+weak_alias(getc_unlocked, _IO_getc_unlocked);
diff --git a/fusl/src/stdio/getchar.c b/fusl/src/stdio/getchar.c
index c101265..294737a 100644
--- a/fusl/src/stdio/getchar.c
+++ b/fusl/src/stdio/getchar.c
@@ -1,6 +1,5 @@
 #include <stdio.h>
 
-int getchar(void)
-{
-	return fgetc(stdin);
+int getchar(void) {
+  return fgetc(stdin);
 }
diff --git a/fusl/src/stdio/getchar_unlocked.c b/fusl/src/stdio/getchar_unlocked.c
index 355ac31..545febd 100644
--- a/fusl/src/stdio/getchar_unlocked.c
+++ b/fusl/src/stdio/getchar_unlocked.c
@@ -1,6 +1,5 @@
 #include "stdio_impl.h"
 
-int getchar_unlocked(void)
-{
-	return getc_unlocked(stdin);
+int getchar_unlocked(void) {
+  return getc_unlocked(stdin);
 }
diff --git a/fusl/src/stdio/getdelim.c b/fusl/src/stdio/getdelim.c
index 1ccd802..88ed87b 100644
--- a/fusl/src/stdio/getdelim.c
+++ b/fusl/src/stdio/getdelim.c
@@ -3,66 +3,74 @@
 #include <inttypes.h>
 #include <errno.h>
 
-#define MIN(a,b) ((a)<(b) ? (a) : (b))
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
 
-ssize_t getdelim(char **restrict s, size_t *restrict n, int delim, FILE *restrict f)
-{
-	char *tmp;
-	unsigned char *z;
-	size_t k;
-	size_t i=0;
-	int c;
+ssize_t getdelim(char** restrict s,
+                 size_t* restrict n,
+                 int delim,
+                 FILE* restrict f) {
+  char* tmp;
+  unsigned char* z;
+  size_t k;
+  size_t i = 0;
+  int c;
 
-	FLOCK(f);
+  FLOCK(f);
 
-	if (!n || !s) {
-		f->flags |= F_ERR;
-		FUNLOCK(f);
-		errno = EINVAL;
-		return -1;
-	}
+  if (!n || !s) {
+    f->flags |= F_ERR;
+    FUNLOCK(f);
+    errno = EINVAL;
+    return -1;
+  }
 
-	if (!*s) *n=0;
+  if (!*s)
+    *n = 0;
 
-	for (;;) {
-		z = memchr(f->rpos, delim, f->rend - f->rpos);
-		k = z ? z - f->rpos + 1 : f->rend - f->rpos;
-		if (i+k+1 >= *n) {
-			if (k >= SIZE_MAX/2-i) goto oom;
-			size_t m = i+k+2;
-			if (!z && m < SIZE_MAX/4) m += m/2;
-			tmp = realloc(*s, m);
-			if (!tmp) {
-				m = i+k+2;
-				tmp = realloc(*s, m);
-				if (!tmp) goto oom;
-			}
-			*s = tmp;
-			*n = m;
-		}
-		memcpy(*s+i, f->rpos, k);
-		f->rpos += k;
-		i += k;
-		if (z) break;
-		if ((c = getc_unlocked(f)) == EOF) {
-			if (!i || !feof(f)) {
-				FUNLOCK(f);
-				return -1;
-			}
-			break;
-		}
-		if (((*s)[i++] = c) == delim) break;
-	}
-	(*s)[i] = 0;
+  for (;;) {
+    z = memchr(f->rpos, delim, f->rend - f->rpos);
+    k = z ? z - f->rpos + 1 : f->rend - f->rpos;
+    if (i + k + 1 >= *n) {
+      if (k >= SIZE_MAX / 2 - i)
+        goto oom;
+      size_t m = i + k + 2;
+      if (!z && m < SIZE_MAX / 4)
+        m += m / 2;
+      tmp = realloc(*s, m);
+      if (!tmp) {
+        m = i + k + 2;
+        tmp = realloc(*s, m);
+        if (!tmp)
+          goto oom;
+      }
+      *s = tmp;
+      *n = m;
+    }
+    memcpy(*s + i, f->rpos, k);
+    f->rpos += k;
+    i += k;
+    if (z)
+      break;
+    if ((c = getc_unlocked(f)) == EOF) {
+      if (!i || !feof(f)) {
+        FUNLOCK(f);
+        return -1;
+      }
+      break;
+    }
+    if (((*s)[i++] = c) == delim)
+      break;
+  }
+  (*s)[i] = 0;
 
-	FUNLOCK(f);
+  FUNLOCK(f);
 
-	return i;
+  return i;
 oom:
-	f->flags |= F_ERR;
-	FUNLOCK(f);
-	errno = ENOMEM;
-	return -1;
+  f->flags |= F_ERR;
+  FUNLOCK(f);
+  errno = ENOMEM;
+  return -1;
 }
 
 weak_alias(getdelim, __getdelim);
diff --git a/fusl/src/stdio/getline.c b/fusl/src/stdio/getline.c
index 476d0b0..23f242b 100644
--- a/fusl/src/stdio/getline.c
+++ b/fusl/src/stdio/getline.c
@@ -1,6 +1,5 @@
 #include <stdio.h>
 
-ssize_t getline(char **restrict s, size_t *restrict n, FILE *restrict f)
-{
-	return getdelim(s, n, '\n', f);
+ssize_t getline(char** restrict s, size_t* restrict n, FILE* restrict f) {
+  return getdelim(s, n, '\n', f);
 }
diff --git a/fusl/src/stdio/gets.c b/fusl/src/stdio/gets.c
index 6c4645e..0fc9e6a 100644
--- a/fusl/src/stdio/gets.c
+++ b/fusl/src/stdio/gets.c
@@ -2,9 +2,9 @@
 #include <limits.h>
 #include <string.h>
 
-char *gets(char *s)
-{
-	char *ret = fgets(s, INT_MAX, stdin);
-	if (ret && s[strlen(s)-1] == '\n') s[strlen(s)-1] = 0;
-	return ret;
+char* gets(char* s) {
+  char* ret = fgets(s, INT_MAX, stdin);
+  if (ret && s[strlen(s) - 1] == '\n')
+    s[strlen(s) - 1] = 0;
+  return ret;
 }
diff --git a/fusl/src/stdio/getw.c b/fusl/src/stdio/getw.c
index 73d2c0d..f45f239 100644
--- a/fusl/src/stdio/getw.c
+++ b/fusl/src/stdio/getw.c
@@ -1,8 +1,7 @@
 #define _GNU_SOURCE
 #include <stdio.h>
 
-int getw(FILE *f)
-{
-	int x;
-	return fread(&x, sizeof x, 1, f) ? x : EOF;
+int getw(FILE* f) {
+  int x;
+  return fread(&x, sizeof x, 1, f) ? x : EOF;
 }
diff --git a/fusl/src/stdio/getwc.c b/fusl/src/stdio/getwc.c
index a5008f0..46ec8c5 100644
--- a/fusl/src/stdio/getwc.c
+++ b/fusl/src/stdio/getwc.c
@@ -1,7 +1,6 @@
 #include "stdio_impl.h"
 #include <wchar.h>
 
-wint_t getwc(FILE *f)
-{
-	return fgetwc(f);
+wint_t getwc(FILE* f) {
+  return fgetwc(f);
 }
diff --git a/fusl/src/stdio/getwchar.c b/fusl/src/stdio/getwchar.c
index bd89e0e..fa49a14 100644
--- a/fusl/src/stdio/getwchar.c
+++ b/fusl/src/stdio/getwchar.c
@@ -1,9 +1,8 @@
 #include "stdio_impl.h"
 #include <wchar.h>
 
-wint_t getwchar(void)
-{
-	return fgetwc(stdin);
+wint_t getwchar(void) {
+  return fgetwc(stdin);
 }
 
 weak_alias(getwchar, getwchar_unlocked);
diff --git a/fusl/src/stdio/ofl.c b/fusl/src/stdio/ofl.c
index b143999..742ccac 100644
--- a/fusl/src/stdio/ofl.c
+++ b/fusl/src/stdio/ofl.c
@@ -1,16 +1,14 @@
 #include "stdio_impl.h"
 #include "libc.h"
 
-static FILE *ofl_head;
+static FILE* ofl_head;
 static volatile int ofl_lock[2];
 
-FILE **__ofl_lock()
-{
-	LOCK(ofl_lock);
-	return &ofl_head;
+FILE** __ofl_lock() {
+  LOCK(ofl_lock);
+  return &ofl_head;
 }
 
-void __ofl_unlock()
-{
-	UNLOCK(ofl_lock);
+void __ofl_unlock() {
+  UNLOCK(ofl_lock);
 }
diff --git a/fusl/src/stdio/ofl_add.c b/fusl/src/stdio/ofl_add.c
index d7de9f1..2f1aa74 100644
--- a/fusl/src/stdio/ofl_add.c
+++ b/fusl/src/stdio/ofl_add.c
@@ -1,11 +1,11 @@
 #include "stdio_impl.h"
 
-FILE *__ofl_add(FILE *f)
-{
-	FILE **head = __ofl_lock();
-	f->next = *head;
-	if (*head) (*head)->prev = f;
-	*head = f;
-	__ofl_unlock();
-	return f;
+FILE* __ofl_add(FILE* f) {
+  FILE** head = __ofl_lock();
+  f->next = *head;
+  if (*head)
+    (*head)->prev = f;
+  *head = f;
+  __ofl_unlock();
+  return f;
 }
diff --git a/fusl/src/stdio/open_memstream.c b/fusl/src/stdio/open_memstream.c
index eab024d..5f80b37 100644
--- a/fusl/src/stdio/open_memstream.c
+++ b/fusl/src/stdio/open_memstream.c
@@ -4,87 +4,89 @@
 #include <string.h>
 
 struct cookie {
-	char **bufp;
-	size_t *sizep;
-	size_t pos;
-	char *buf;
-	size_t len;
-	size_t space;
+  char** bufp;
+  size_t* sizep;
+  size_t pos;
+  char* buf;
+  size_t len;
+  size_t space;
 };
 
-static off_t ms_seek(FILE *f, off_t off, int whence)
-{
-	ssize_t base;
-	struct cookie *c = f->cookie;
-	if (whence>2U) {
-fail:
-		errno = EINVAL;
-		return -1;
-	}
-	base = (size_t [3]){0, c->pos, c->len}[whence];
-	if (off < -base || off > SSIZE_MAX-base) goto fail;
-	return c->pos = base+off;
+static off_t ms_seek(FILE* f, off_t off, int whence) {
+  ssize_t base;
+  struct cookie* c = f->cookie;
+  if (whence > 2U) {
+  fail:
+    errno = EINVAL;
+    return -1;
+  }
+  base = (size_t[3]){0, c->pos, c->len}[whence];
+  if (off < -base || off > SSIZE_MAX - base)
+    goto fail;
+  return c->pos = base + off;
 }
 
-static size_t ms_write(FILE *f, const unsigned char *buf, size_t len)
-{
-	struct cookie *c = f->cookie;
-	size_t len2 = f->wpos - f->wbase;
-	char *newbuf;
-	if (len2) {
-		f->wpos = f->wbase;
-		if (ms_write(f, f->wbase, len2) < len2) return 0;
-	}
-	if (len + c->pos >= c->space) {
-		len2 = 2*c->space+1 | c->pos+len+1;
-		newbuf = realloc(c->buf, len2);
-		if (!newbuf) return 0;
-		*c->bufp = c->buf = newbuf;
-		memset(c->buf + c->space, 0, len2 - c->space);
-		c->space = len2;
-	}
-	memcpy(c->buf+c->pos, buf, len);
-	c->pos += len;
-	if (c->pos >= c->len) c->len = c->pos;
-	*c->sizep = c->pos;
-	return len;
+static size_t ms_write(FILE* f, const unsigned char* buf, size_t len) {
+  struct cookie* c = f->cookie;
+  size_t len2 = f->wpos - f->wbase;
+  char* newbuf;
+  if (len2) {
+    f->wpos = f->wbase;
+    if (ms_write(f, f->wbase, len2) < len2)
+      return 0;
+  }
+  if (len + c->pos >= c->space) {
+    len2 = 2 * c->space + 1 | c->pos + len + 1;
+    newbuf = realloc(c->buf, len2);
+    if (!newbuf)
+      return 0;
+    *c->bufp = c->buf = newbuf;
+    memset(c->buf + c->space, 0, len2 - c->space);
+    c->space = len2;
+  }
+  memcpy(c->buf + c->pos, buf, len);
+  c->pos += len;
+  if (c->pos >= c->len)
+    c->len = c->pos;
+  *c->sizep = c->pos;
+  return len;
 }
 
-static int ms_close(FILE *f)
-{
-	return 0;
+static int ms_close(FILE* f) {
+  return 0;
 }
 
-FILE *open_memstream(char **bufp, size_t *sizep)
-{
-	FILE *f;
-	struct cookie *c;
-	char *buf;
+FILE* open_memstream(char** bufp, size_t* sizep) {
+  FILE* f;
+  struct cookie* c;
+  char* buf;
 
-	if (!(f=malloc(sizeof *f + sizeof *c + BUFSIZ))) return 0;
-	if (!(buf=malloc(sizeof *buf))) {
-		free(f);
-		return 0;
-	}
-	memset(f, 0, sizeof *f + sizeof *c);
-	f->cookie = c = (void *)(f+1);
+  if (!(f = malloc(sizeof *f + sizeof *c + BUFSIZ)))
+    return 0;
+  if (!(buf = malloc(sizeof *buf))) {
+    free(f);
+    return 0;
+  }
+  memset(f, 0, sizeof *f + sizeof *c);
+  f->cookie = c = (void*)(f + 1);
 
-	c->bufp = bufp;
-	c->sizep = sizep;
-	c->pos = c->len = c->space = *sizep = 0;
-	c->buf = *bufp = buf;
-	*buf = 0;
+  c->bufp = bufp;
+  c->sizep = sizep;
+  c->pos = c->len = c->space = *sizep = 0;
+  c->buf = *bufp = buf;
+  *buf = 0;
 
-	f->flags = F_NORD;
-	f->fd = -1;
-	f->buf = (void *)(c+1);
-	f->buf_size = BUFSIZ;
-	f->lbf = EOF;
-	f->write = ms_write;
-	f->seek = ms_seek;
-	f->close = ms_close;
+  f->flags = F_NORD;
+  f->fd = -1;
+  f->buf = (void*)(c + 1);
+  f->buf_size = BUFSIZ;
+  f->lbf = EOF;
+  f->write = ms_write;
+  f->seek = ms_seek;
+  f->close = ms_close;
 
-	if (!libc.threaded) f->lock = -1;
+  if (!libc.threaded)
+    f->lock = -1;
 
-	return __ofl_add(f);
+  return __ofl_add(f);
 }
diff --git a/fusl/src/stdio/open_wmemstream.c b/fusl/src/stdio/open_wmemstream.c
index 4d90cd9..e913f50 100644
--- a/fusl/src/stdio/open_wmemstream.c
+++ b/fusl/src/stdio/open_wmemstream.c
@@ -5,88 +5,92 @@
 #include <string.h>
 
 struct cookie {
-	wchar_t **bufp;
-	size_t *sizep;
-	size_t pos;
-	wchar_t *buf;
-	size_t len;
-	size_t space;
-	mbstate_t mbs;
+  wchar_t** bufp;
+  size_t* sizep;
+  size_t pos;
+  wchar_t* buf;
+  size_t len;
+  size_t space;
+  mbstate_t mbs;
 };
 
-static off_t wms_seek(FILE *f, off_t off, int whence)
-{
-	ssize_t base;
-	struct cookie *c = f->cookie;
-	if (whence>2U) {
-fail:
-		errno = EINVAL;
-		return -1;
-	}
-	base = (size_t [3]){0, c->pos, c->len}[whence];
-	if (off < -base || off > SSIZE_MAX/4-base) goto fail;
-	memset(&c->mbs, 0, sizeof c->mbs);
-	return c->pos = base+off;
+static off_t wms_seek(FILE* f, off_t off, int whence) {
+  ssize_t base;
+  struct cookie* c = f->cookie;
+  if (whence > 2U) {
+  fail:
+    errno = EINVAL;
+    return -1;
+  }
+  base = (size_t[3]){0, c->pos, c->len}[whence];
+  if (off < -base || off > SSIZE_MAX / 4 - base)
+    goto fail;
+  memset(&c->mbs, 0, sizeof c->mbs);
+  return c->pos = base + off;
 }
 
-static size_t wms_write(FILE *f, const unsigned char *buf, size_t len)
-{
-	struct cookie *c = f->cookie;
-	size_t len2;
-	wchar_t *newbuf;
-	if (len + c->pos >= c->space) {
-		len2 = 2*c->space+1 | c->pos+len+1;
-		if (len2 > SSIZE_MAX/4) return 0;
-		newbuf = realloc(c->buf, len2*4);
-		if (!newbuf) return 0;
-		*c->bufp = c->buf = newbuf;
-		memset(c->buf + c->space, 0, 4*(len2 - c->space));
-		c->space = len2;
-	}
-	
-	len2 = mbsnrtowcs(c->buf+c->pos, (void *)&buf, len, c->space-c->pos, &c->mbs);
-	if (len2 == -1) return 0;
-	c->pos += len2;
-	if (c->pos >= c->len) c->len = c->pos;
-	*c->sizep = c->pos;
-	return len;
+static size_t wms_write(FILE* f, const unsigned char* buf, size_t len) {
+  struct cookie* c = f->cookie;
+  size_t len2;
+  wchar_t* newbuf;
+  if (len + c->pos >= c->space) {
+    len2 = 2 * c->space + 1 | c->pos + len + 1;
+    if (len2 > SSIZE_MAX / 4)
+      return 0;
+    newbuf = realloc(c->buf, len2 * 4);
+    if (!newbuf)
+      return 0;
+    *c->bufp = c->buf = newbuf;
+    memset(c->buf + c->space, 0, 4 * (len2 - c->space));
+    c->space = len2;
+  }
+
+  len2 =
+      mbsnrtowcs(c->buf + c->pos, (void*)&buf, len, c->space - c->pos, &c->mbs);
+  if (len2 == -1)
+    return 0;
+  c->pos += len2;
+  if (c->pos >= c->len)
+    c->len = c->pos;
+  *c->sizep = c->pos;
+  return len;
 }
 
-static int wms_close(FILE *f)
-{
-	return 0;
+static int wms_close(FILE* f) {
+  return 0;
 }
 
-FILE *open_wmemstream(wchar_t **bufp, size_t *sizep)
-{
-	FILE *f;
-	struct cookie *c;
-	wchar_t *buf;
+FILE* open_wmemstream(wchar_t** bufp, size_t* sizep) {
+  FILE* f;
+  struct cookie* c;
+  wchar_t* buf;
 
-	if (!(f=malloc(sizeof *f + sizeof *c))) return 0;
-	if (!(buf=malloc(sizeof *buf))) {
-		free(f);
-		return 0;
-	}
-	memset(f, 0, sizeof *f + sizeof *c);
-	f->cookie = c = (void *)(f+1);
+  if (!(f = malloc(sizeof *f + sizeof *c)))
+    return 0;
+  if (!(buf = malloc(sizeof *buf))) {
+    free(f);
+    return 0;
+  }
+  memset(f, 0, sizeof *f + sizeof *c);
+  f->cookie = c = (void*)(f + 1);
 
-	c->bufp = bufp;
-	c->sizep = sizep;
-	c->pos = c->len = c->space = *sizep = 0;
-	c->buf = *bufp = buf;
-	*buf = 0;
+  c->bufp = bufp;
+  c->sizep = sizep;
+  c->pos = c->len = c->space = *sizep = 0;
+  c->buf = *bufp = buf;
+  *buf = 0;
 
-	f->flags = F_NORD;
-	f->fd = -1;
-	f->buf = (void *)(c+1);
-	f->buf_size = 0;
-	f->lbf = EOF;
-	f->write = wms_write;
-	f->seek = wms_seek;
-	f->close = wms_close;
+  f->flags = F_NORD;
+  f->fd = -1;
+  f->buf = (void*)(c + 1);
+  f->buf_size = 0;
+  f->lbf = EOF;
+  f->write = wms_write;
+  f->seek = wms_seek;
+  f->close = wms_close;
 
-	if (!libc.threaded) f->lock = -1;
+  if (!libc.threaded)
+    f->lock = -1;
 
-	return __ofl_add(f);
+  return __ofl_add(f);
 }
diff --git a/fusl/src/stdio/pclose.c b/fusl/src/stdio/pclose.c
index 080a426..d705de4 100644
--- a/fusl/src/stdio/pclose.c
+++ b/fusl/src/stdio/pclose.c
@@ -2,12 +2,13 @@
 #include <errno.h>
 #include <unistd.h>
 
-int pclose(FILE *f)
-{
-	int status, r;
-	pid_t pid = f->pipe_pid;
-	fclose(f);
-	while ((r=__syscall(SYS_wait4, pid, &status, 0, 0)) == -EINTR);
-	if (r<0) return __syscall_ret(r);
-	return status;
+int pclose(FILE* f) {
+  int status, r;
+  pid_t pid = f->pipe_pid;
+  fclose(f);
+  while ((r = __syscall(SYS_wait4, pid, &status, 0, 0)) == -EINTR)
+    ;
+  if (r < 0)
+    return __syscall_ret(r);
+  return status;
 }
diff --git a/fusl/src/stdio/perror.c b/fusl/src/stdio/perror.c
index fdcb4d7..9692df9 100644
--- a/fusl/src/stdio/perror.c
+++ b/fusl/src/stdio/perror.c
@@ -3,20 +3,19 @@
 #include <errno.h>
 #include "stdio_impl.h"
 
-void perror(const char *msg)
-{
-	FILE *f = stderr;
-	char *errstr = strerror(errno);
+void perror(const char* msg) {
+  FILE* f = stderr;
+  char* errstr = strerror(errno);
 
-	FLOCK(f);
-	
-	if (msg && *msg) {
-		fwrite(msg, strlen(msg), 1, f);
-		fputc(':', f);
-		fputc(' ', f);
-	}
-	fwrite(errstr, strlen(errstr), 1, f);
-	fputc('\n', f);
+  FLOCK(f);
 
-	FUNLOCK(f);
+  if (msg && *msg) {
+    fwrite(msg, strlen(msg), 1, f);
+    fputc(':', f);
+    fputc(' ', f);
+  }
+  fwrite(errstr, strlen(errstr), 1, f);
+  fputc('\n', f);
+
+  FUNLOCK(f);
 }
diff --git a/fusl/src/stdio/popen.c b/fusl/src/stdio/popen.c
index 92cb57e..770d8d5 100644
--- a/fusl/src/stdio/popen.c
+++ b/fusl/src/stdio/popen.c
@@ -6,68 +6,69 @@
 #include "stdio_impl.h"
 #include "syscall.h"
 
-extern char **__environ;
+extern char** __environ;
 
-FILE *popen(const char *cmd, const char *mode)
-{
-	int p[2], op, e;
-	pid_t pid;
-	FILE *f;
-	posix_spawn_file_actions_t fa;
+FILE* popen(const char* cmd, const char* mode) {
+  int p[2], op, e;
+  pid_t pid;
+  FILE* f;
+  posix_spawn_file_actions_t fa;
 
-	if (*mode == 'r') {
-		op = 0;
-	} else if (*mode == 'w') {
-		op = 1;
-	} else {
-		errno = EINVAL;
-		return 0;
-	}
-	
-	if (pipe2(p, O_CLOEXEC)) return NULL;
-	f = fdopen(p[op], mode);
-	if (!f) {
-		__syscall(SYS_close, p[0]);
-		__syscall(SYS_close, p[1]);
-		return NULL;
-	}
-	FLOCK(f);
+  if (*mode == 'r') {
+    op = 0;
+  } else if (*mode == 'w') {
+    op = 1;
+  } else {
+    errno = EINVAL;
+    return 0;
+  }
 
-	/* If the child's end of the pipe happens to already be on the final
-	 * fd number to which it will be assigned (either 0 or 1), it must
-	 * be moved to a different fd. Otherwise, there is no safe way to
-	 * remove the close-on-exec flag in the child without also creating
-	 * a file descriptor leak race condition in the parent. */
-	if (p[1-op] == 1-op) {
-		int tmp = fcntl(1-op, F_DUPFD_CLOEXEC, 0);
-		if (tmp < 0) {
-			e = errno;
-			goto fail;
-		}
-		__syscall(SYS_close, p[1-op]);
-		p[1-op] = tmp;
-	}
+  if (pipe2(p, O_CLOEXEC))
+    return NULL;
+  f = fdopen(p[op], mode);
+  if (!f) {
+    __syscall(SYS_close, p[0]);
+    __syscall(SYS_close, p[1]);
+    return NULL;
+  }
+  FLOCK(f);
 
-	e = ENOMEM;
-	if (!posix_spawn_file_actions_init(&fa)) {
-		if (!posix_spawn_file_actions_adddup2(&fa, p[1-op], 1-op)) {
-			if (!(e = posix_spawn(&pid, "/bin/sh", &fa, 0,
-			    (char *[]){ "sh", "-c", (char *)cmd, 0 }, __environ))) {
-				posix_spawn_file_actions_destroy(&fa);
-				f->pipe_pid = pid;
-				if (!strchr(mode, 'e'))
-					fcntl(p[op], F_SETFD, 0);
-				__syscall(SYS_close, p[1-op]);
-				FUNLOCK(f);
-				return f;
-			}
-		}
-		posix_spawn_file_actions_destroy(&fa);
-	}
+  /* If the child's end of the pipe happens to already be on the final
+   * fd number to which it will be assigned (either 0 or 1), it must
+   * be moved to a different fd. Otherwise, there is no safe way to
+   * remove the close-on-exec flag in the child without also creating
+   * a file descriptor leak race condition in the parent. */
+  if (p[1 - op] == 1 - op) {
+    int tmp = fcntl(1 - op, F_DUPFD_CLOEXEC, 0);
+    if (tmp < 0) {
+      e = errno;
+      goto fail;
+    }
+    __syscall(SYS_close, p[1 - op]);
+    p[1 - op] = tmp;
+  }
+
+  e = ENOMEM;
+  if (!posix_spawn_file_actions_init(&fa)) {
+    if (!posix_spawn_file_actions_adddup2(&fa, p[1 - op], 1 - op)) {
+      if (!(e = posix_spawn(&pid, "/bin/sh", &fa, 0,
+                            (char* []){"sh", "-c", (char*)cmd, 0},
+                            __environ))) {
+        posix_spawn_file_actions_destroy(&fa);
+        f->pipe_pid = pid;
+        if (!strchr(mode, 'e'))
+          fcntl(p[op], F_SETFD, 0);
+        __syscall(SYS_close, p[1 - op]);
+        FUNLOCK(f);
+        return f;
+      }
+    }
+    posix_spawn_file_actions_destroy(&fa);
+  }
 fail:
-	fclose(f);
-	__syscall(SYS_close, p[1-op]);
+  fclose(f);
+  __syscall(SYS_close, p[1 - op]);
 
-	errno = e;
-	return 0;
+  errno = e;
+  return 0;
 }
diff --git a/fusl/src/stdio/printf.c b/fusl/src/stdio/printf.c
index cebfe40..4bd4263 100644
--- a/fusl/src/stdio/printf.c
+++ b/fusl/src/stdio/printf.c
@@ -1,12 +1,11 @@
 #include <stdio.h>
 #include <stdarg.h>
 
-int printf(const char *restrict fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vfprintf(stdout, fmt, ap);
-	va_end(ap);
-	return ret;
+int printf(const char* restrict fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vfprintf(stdout, fmt, ap);
+  va_end(ap);
+  return ret;
 }
diff --git a/fusl/src/stdio/putc.c b/fusl/src/stdio/putc.c
index fa89349..0f85bc9 100644
--- a/fusl/src/stdio/putc.c
+++ b/fusl/src/stdio/putc.c
@@ -1,12 +1,11 @@
 #include "stdio_impl.h"
 
-int putc(int c, FILE *f)
-{
-	if (f->lock < 0 || !__lockfile(f))
-		return putc_unlocked(c, f);
-	c = putc_unlocked(c, f);
-	__unlockfile(f);
-	return c;
+int putc(int c, FILE* f) {
+  if (f->lock < 0 || !__lockfile(f))
+    return putc_unlocked(c, f);
+  c = putc_unlocked(c, f);
+  __unlockfile(f);
+  return c;
 }
 
 weak_alias(putc, _IO_putc);
diff --git a/fusl/src/stdio/putc_unlocked.c b/fusl/src/stdio/putc_unlocked.c
index 1007131..43845d1 100644
--- a/fusl/src/stdio/putc_unlocked.c
+++ b/fusl/src/stdio/putc_unlocked.c
@@ -1,8 +1,7 @@
 #include "stdio_impl.h"
 
-int (putc_unlocked)(int c, FILE *f)
-{
-	return putc_unlocked(c, f);
+int(putc_unlocked)(int c, FILE* f) {
+  return putc_unlocked(c, f);
 }
 
 weak_alias(putc_unlocked, fputc_unlocked);
diff --git a/fusl/src/stdio/putchar.c b/fusl/src/stdio/putchar.c
index 945636d..f363861 100644
--- a/fusl/src/stdio/putchar.c
+++ b/fusl/src/stdio/putchar.c
@@ -1,6 +1,5 @@
 #include <stdio.h>
 
-int putchar(int c)
-{
-	return fputc(c, stdout);
+int putchar(int c) {
+  return fputc(c, stdout);
 }
diff --git a/fusl/src/stdio/putchar_unlocked.c b/fusl/src/stdio/putchar_unlocked.c
index 8b5d060..6bcdfa8 100644
--- a/fusl/src/stdio/putchar_unlocked.c
+++ b/fusl/src/stdio/putchar_unlocked.c
@@ -1,6 +1,5 @@
 #include "stdio_impl.h"
 
-int putchar_unlocked(int c)
-{
-	return putc_unlocked(c, stdout);
+int putchar_unlocked(int c) {
+  return putc_unlocked(c, stdout);
 }
diff --git a/fusl/src/stdio/puts.c b/fusl/src/stdio/puts.c
index 5a38a49..ab69b02 100644
--- a/fusl/src/stdio/puts.c
+++ b/fusl/src/stdio/puts.c
@@ -1,10 +1,9 @@
 #include "stdio_impl.h"
 
-int puts(const char *s)
-{
-	int r;
-	FLOCK(stdout);
-	r = -(fputs(s, stdout) < 0 || putc_unlocked('\n', stdout) < 0);
-	FUNLOCK(stdout);
-	return r;
+int puts(const char* s) {
+  int r;
+  FLOCK(stdout);
+  r = -(fputs(s, stdout) < 0 || putc_unlocked('\n', stdout) < 0);
+  FUNLOCK(stdout);
+  return r;
 }
diff --git a/fusl/src/stdio/putw.c b/fusl/src/stdio/putw.c
index 0ff9d7f..7478071 100644
--- a/fusl/src/stdio/putw.c
+++ b/fusl/src/stdio/putw.c
@@ -1,7 +1,6 @@
 #define _GNU_SOURCE
 #include <stdio.h>
 
-int putw(int x, FILE *f)
-{
-	return (int)fwrite(&x, sizeof x, 1, f)-1;
+int putw(int x, FILE* f) {
+  return (int)fwrite(&x, sizeof x, 1, f) - 1;
 }
diff --git a/fusl/src/stdio/putwc.c b/fusl/src/stdio/putwc.c
index 4bb7473..b3a62fa 100644
--- a/fusl/src/stdio/putwc.c
+++ b/fusl/src/stdio/putwc.c
@@ -1,7 +1,6 @@
 #include "stdio_impl.h"
 #include <wchar.h>
 
-wint_t putwc(wchar_t c, FILE *f)
-{
-	return fputwc(c, f);
+wint_t putwc(wchar_t c, FILE* f) {
+  return fputwc(c, f);
 }
diff --git a/fusl/src/stdio/putwchar.c b/fusl/src/stdio/putwchar.c
index b249c4a..d4c3463 100644
--- a/fusl/src/stdio/putwchar.c
+++ b/fusl/src/stdio/putwchar.c
@@ -1,9 +1,8 @@
 #include "stdio_impl.h"
 #include <wchar.h>
 
-wint_t putwchar(wchar_t c)
-{
-	return fputwc(c, stdout);
+wint_t putwchar(wchar_t c) {
+  return fputwc(c, stdout);
 }
 
 weak_alias(putwchar, putwchar_unlocked);
diff --git a/fusl/src/stdio/remove.c b/fusl/src/stdio/remove.c
index 942e301..ca5267b 100644
--- a/fusl/src/stdio/remove.c
+++ b/fusl/src/stdio/remove.c
@@ -3,17 +3,18 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int remove(const char *path)
-{
+int remove(const char* path) {
 #ifdef SYS_unlink
-	int r = __syscall(SYS_unlink, path);
+  int r = __syscall(SYS_unlink, path);
 #else
-	int r = __syscall(SYS_unlinkat, AT_FDCWD, path, 0);
+  int r = __syscall(SYS_unlinkat, AT_FDCWD, path, 0);
 #endif
 #ifdef SYS_rmdir
-	if (r==-EISDIR) r = __syscall(SYS_rmdir, path);
+  if (r == -EISDIR)
+    r = __syscall(SYS_rmdir, path);
 #else
-	if (r==-EISDIR) r = __syscall(SYS_unlinkat, AT_FDCWD, path, AT_REMOVEDIR);
+  if (r == -EISDIR)
+    r = __syscall(SYS_unlinkat, AT_FDCWD, path, AT_REMOVEDIR);
 #endif
-	return __syscall_ret(r);
+  return __syscall_ret(r);
 }
diff --git a/fusl/src/stdio/rename.c b/fusl/src/stdio/rename.c
index 04c90c0..c94be07 100644
--- a/fusl/src/stdio/rename.c
+++ b/fusl/src/stdio/rename.c
@@ -2,11 +2,10 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int rename(const char *old, const char *new)
-{
+int rename(const char* old, const char* new) {
 #ifdef SYS_rename
-	return syscall(SYS_rename, old, new);
+  return syscall(SYS_rename, old, new);
 #else
-	return syscall(SYS_renameat, AT_FDCWD, old, AT_FDCWD, new);
+  return syscall(SYS_renameat, AT_FDCWD, old, AT_FDCWD, new);
 #endif
 }
diff --git a/fusl/src/stdio/rewind.c b/fusl/src/stdio/rewind.c
index 6f4b58b..bb6d9a7 100644
--- a/fusl/src/stdio/rewind.c
+++ b/fusl/src/stdio/rewind.c
@@ -1,9 +1,8 @@
 #include "stdio_impl.h"
 
-void rewind(FILE *f)
-{
-	FLOCK(f);
-	__fseeko_unlocked(f, 0, SEEK_SET);
-	f->flags &= ~F_ERR;
-	FUNLOCK(f);
+void rewind(FILE* f) {
+  FLOCK(f);
+  __fseeko_unlocked(f, 0, SEEK_SET);
+  f->flags &= ~F_ERR;
+  FUNLOCK(f);
 }
diff --git a/fusl/src/stdio/scanf.c b/fusl/src/stdio/scanf.c
index a740056..723d0d0 100644
--- a/fusl/src/stdio/scanf.c
+++ b/fusl/src/stdio/scanf.c
@@ -2,14 +2,13 @@
 #include <stdarg.h>
 #include "libc.h"
 
-int scanf(const char *restrict fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vscanf(fmt, ap);
-	va_end(ap);
-	return ret;
+int scanf(const char* restrict fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vscanf(fmt, ap);
+  va_end(ap);
+  return ret;
 }
 
-weak_alias(scanf,__isoc99_scanf);
+weak_alias(scanf, __isoc99_scanf);
diff --git a/fusl/src/stdio/setbuf.c b/fusl/src/stdio/setbuf.c
index 74ad783..1f68d6d 100644
--- a/fusl/src/stdio/setbuf.c
+++ b/fusl/src/stdio/setbuf.c
@@ -1,6 +1,5 @@
 #include <stdio.h>
 
-void setbuf(FILE *restrict f, char *restrict buf)
-{
-	setvbuf(f, buf, buf ? _IOFBF : _IONBF, BUFSIZ);
+void setbuf(FILE* restrict f, char* restrict buf) {
+  setvbuf(f, buf, buf ? _IOFBF : _IONBF, BUFSIZ);
 }
diff --git a/fusl/src/stdio/setbuffer.c b/fusl/src/stdio/setbuffer.c
index 71233d2..7a866e6 100644
--- a/fusl/src/stdio/setbuffer.c
+++ b/fusl/src/stdio/setbuffer.c
@@ -1,7 +1,6 @@
 #define _GNU_SOURCE
 #include <stdio.h>
 
-void setbuffer(FILE *f, char *buf, size_t size)
-{
-	setvbuf(f, buf, buf ? _IOFBF : _IONBF, size);
+void setbuffer(FILE* f, char* buf, size_t size) {
+  setvbuf(f, buf, buf ? _IOFBF : _IONBF, size);
 }
diff --git a/fusl/src/stdio/setlinebuf.c b/fusl/src/stdio/setlinebuf.c
index b93c4d6..e6db701 100644
--- a/fusl/src/stdio/setlinebuf.c
+++ b/fusl/src/stdio/setlinebuf.c
@@ -1,7 +1,6 @@
 #define _GNU_SOURCE
 #include <stdio.h>
 
-void setlinebuf(FILE *f)
-{
-	setvbuf(f, 0, _IOLBF, 0);
+void setlinebuf(FILE* f) {
+  setvbuf(f, 0, _IOLBF, 0);
 }
diff --git a/fusl/src/stdio/setvbuf.c b/fusl/src/stdio/setvbuf.c
index 541a125..4ab02be 100644
--- a/fusl/src/stdio/setvbuf.c
+++ b/fusl/src/stdio/setvbuf.c
@@ -9,16 +9,15 @@
  * In the case of stderr where the preexisting buffer is length 1, it
  * is not possible to set line buffering or full buffering. */
 
-int setvbuf(FILE *restrict f, char *restrict buf, int type, size_t size)
-{
-	f->lbf = EOF;
+int setvbuf(FILE* restrict f, char* restrict buf, int type, size_t size) {
+  f->lbf = EOF;
 
-	if (type == _IONBF)
-		f->buf_size = 0;
-	else if (type == _IOLBF)
-		f->lbf = '\n';
+  if (type == _IONBF)
+    f->buf_size = 0;
+  else if (type == _IOLBF)
+    f->lbf = '\n';
 
-	f->flags |= F_SVB;
+  f->flags |= F_SVB;
 
-	return 0;
+  return 0;
 }
diff --git a/fusl/src/stdio/snprintf.c b/fusl/src/stdio/snprintf.c
index 771503b..ad11d83 100644
--- a/fusl/src/stdio/snprintf.c
+++ b/fusl/src/stdio/snprintf.c
@@ -1,13 +1,11 @@
 #include <stdio.h>
 #include <stdarg.h>
 
-int snprintf(char *restrict s, size_t n, const char *restrict fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vsnprintf(s, n, fmt, ap);
-	va_end(ap);
-	return ret;
+int snprintf(char* restrict s, size_t n, const char* restrict fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vsnprintf(s, n, fmt, ap);
+  va_end(ap);
+  return ret;
 }
-
diff --git a/fusl/src/stdio/sprintf.c b/fusl/src/stdio/sprintf.c
index 9dff524..5075e2c 100644
--- a/fusl/src/stdio/sprintf.c
+++ b/fusl/src/stdio/sprintf.c
@@ -1,12 +1,11 @@
 #include <stdio.h>
 #include <stdarg.h>
 
-int sprintf(char *restrict s, const char *restrict fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vsprintf(s, fmt, ap);
-	va_end(ap);
-	return ret;
+int sprintf(char* restrict s, const char* restrict fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vsprintf(s, fmt, ap);
+  va_end(ap);
+  return ret;
 }
diff --git a/fusl/src/stdio/sscanf.c b/fusl/src/stdio/sscanf.c
index 8a2302f..72151e6 100644
--- a/fusl/src/stdio/sscanf.c
+++ b/fusl/src/stdio/sscanf.c
@@ -2,14 +2,13 @@
 #include <stdarg.h>
 #include "libc.h"
 
-int sscanf(const char *restrict s, const char *restrict fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vsscanf(s, fmt, ap);
-	va_end(ap);
-	return ret;
+int sscanf(const char* restrict s, const char* restrict fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vsscanf(s, fmt, ap);
+  va_end(ap);
+  return ret;
 }
 
-weak_alias(sscanf,__isoc99_sscanf);
+weak_alias(sscanf, __isoc99_sscanf);
diff --git a/fusl/src/stdio/stderr.c b/fusl/src/stdio/stderr.c
index 229c865..56a8c42 100644
--- a/fusl/src/stdio/stderr.c
+++ b/fusl/src/stdio/stderr.c
@@ -2,15 +2,15 @@
 
 static unsigned char buf[UNGET];
 static FILE f = {
-	.buf = buf+UNGET,
-	.buf_size = 0,
-	.fd = 2,
-	.flags = F_PERM | F_NORD,
-	.lbf = -1,
-	.write = __stdio_write,
-	.seek = __stdio_seek,
-	.close = __stdio_close,
-	.lock = -1,
+    .buf = buf + UNGET,
+    .buf_size = 0,
+    .fd = 2,
+    .flags = F_PERM | F_NORD,
+    .lbf = -1,
+    .write = __stdio_write,
+    .seek = __stdio_seek,
+    .close = __stdio_close,
+    .lock = -1,
 };
-FILE *const stderr = &f;
-FILE *volatile __stderr_used = &f;
+FILE* const stderr = &f;
+FILE* volatile __stderr_used = &f;
diff --git a/fusl/src/stdio/stdin.c b/fusl/src/stdio/stdin.c
index 171ff22..42b5f44 100644
--- a/fusl/src/stdio/stdin.c
+++ b/fusl/src/stdio/stdin.c
@@ -1,15 +1,15 @@
 #include "stdio_impl.h"
 
-static unsigned char buf[BUFSIZ+UNGET];
+static unsigned char buf[BUFSIZ + UNGET];
 static FILE f = {
-	.buf = buf+UNGET,
-	.buf_size = sizeof buf-UNGET,
-	.fd = 0,
-	.flags = F_PERM | F_NOWR,
-	.read = __stdio_read,
-	.seek = __stdio_seek,
-	.close = __stdio_close,
-	.lock = -1,
+    .buf = buf + UNGET,
+    .buf_size = sizeof buf - UNGET,
+    .fd = 0,
+    .flags = F_PERM | F_NOWR,
+    .read = __stdio_read,
+    .seek = __stdio_seek,
+    .close = __stdio_close,
+    .lock = -1,
 };
-FILE *const stdin = &f;
-FILE *volatile __stdin_used = &f;
+FILE* const stdin = &f;
+FILE* volatile __stdin_used = &f;
diff --git a/fusl/src/stdio/stdout.c b/fusl/src/stdio/stdout.c
index 6b18894..225391e 100644
--- a/fusl/src/stdio/stdout.c
+++ b/fusl/src/stdio/stdout.c
@@ -1,16 +1,16 @@
 #include "stdio_impl.h"
 
-static unsigned char buf[BUFSIZ+UNGET];
+static unsigned char buf[BUFSIZ + UNGET];
 static FILE f = {
-	.buf = buf+UNGET,
-	.buf_size = sizeof buf-UNGET,
-	.fd = 1,
-	.flags = F_PERM | F_NORD,
-	.lbf = '\n',
-	.write = __stdout_write,
-	.seek = __stdio_seek,
-	.close = __stdio_close,
-	.lock = -1,
+    .buf = buf + UNGET,
+    .buf_size = sizeof buf - UNGET,
+    .fd = 1,
+    .flags = F_PERM | F_NORD,
+    .lbf = '\n',
+    .write = __stdout_write,
+    .seek = __stdio_seek,
+    .close = __stdio_close,
+    .lock = -1,
 };
-FILE *const stdout = &f;
-FILE *volatile __stdout_used = &f;
+FILE* const stdout = &f;
+FILE* volatile __stdout_used = &f;
diff --git a/fusl/src/stdio/swprintf.c b/fusl/src/stdio/swprintf.c
index f75eb11..09026c6 100644
--- a/fusl/src/stdio/swprintf.c
+++ b/fusl/src/stdio/swprintf.c
@@ -1,13 +1,11 @@
 #include <stdarg.h>
 #include <wchar.h>
 
-int swprintf(wchar_t *restrict s, size_t n, const wchar_t *restrict fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vswprintf(s, n, fmt, ap);
-	va_end(ap);
-	return ret;
+int swprintf(wchar_t* restrict s, size_t n, const wchar_t* restrict fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vswprintf(s, n, fmt, ap);
+  va_end(ap);
+  return ret;
 }
-
diff --git a/fusl/src/stdio/swscanf.c b/fusl/src/stdio/swscanf.c
index d893fba..d53d2a4 100644
--- a/fusl/src/stdio/swscanf.c
+++ b/fusl/src/stdio/swscanf.c
@@ -2,14 +2,13 @@
 #include <wchar.h>
 #include "libc.h"
 
-int swscanf(const wchar_t *restrict s, const wchar_t *restrict fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vswscanf(s, fmt, ap);
-	va_end(ap);
-	return ret;
+int swscanf(const wchar_t* restrict s, const wchar_t* restrict fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vswscanf(s, fmt, ap);
+  va_end(ap);
+  return ret;
 }
 
-weak_alias(swscanf,__isoc99_swscanf);
+weak_alias(swscanf, __isoc99_swscanf);
diff --git a/fusl/src/stdio/tempnam.c b/fusl/src/stdio/tempnam.c
index 5a55975..57f557d 100644
--- a/fusl/src/stdio/tempnam.c
+++ b/fusl/src/stdio/tempnam.c
@@ -8,42 +8,45 @@
 
 #define MAXTRIES 100
 
-char *__randname(char *);
+char* __randname(char*);
 
-char *tempnam(const char *dir, const char *pfx)
-{
-	char s[PATH_MAX];
-	size_t l, dl, pl;
-	int try;
-	int r;
+char* tempnam(const char* dir, const char* pfx) {
+  char s[PATH_MAX];
+  size_t l, dl, pl;
+  int try
+    ;
+  int r;
 
-	if (!dir) dir = P_tmpdir;
-	if (!pfx) pfx = "temp";
+  if (!dir)
+    dir = P_tmpdir;
+  if (!pfx)
+    pfx = "temp";
 
-	dl = strlen(dir);
-	pl = strlen(pfx);
-	l = dl + 1 + pl + 1 + 6;
+  dl = strlen(dir);
+  pl = strlen(pfx);
+  l = dl + 1 + pl + 1 + 6;
 
-	if (l >= PATH_MAX) {
-		errno = ENAMETOOLONG;
-		return 0;
-	}
+  if (l >= PATH_MAX) {
+    errno = ENAMETOOLONG;
+    return 0;
+  }
 
-	memcpy(s, dir, dl);
-	s[dl] = '/';
-	memcpy(s+dl+1, pfx, pl);
-	s[dl+1+pl] = '_';
-	s[l] = 0;
+  memcpy(s, dir, dl);
+  s[dl] = '/';
+  memcpy(s + dl + 1, pfx, pl);
+  s[dl + 1 + pl] = '_';
+  s[l] = 0;
 
-	for (try=0; try<MAXTRIES; try++) {
-		__randname(s+l-6);
+  for (try = 0; try < MAXTRIES; try ++) {
+    __randname(s + l - 6);
 #ifdef SYS_lstat
-		r = __syscall(SYS_lstat, s, &(struct stat){0});
+    r = __syscall(SYS_lstat, s, &(struct stat){0});
 #else
-		r = __syscall(SYS_fstatat, AT_FDCWD, s,
-			&(struct stat){0}, AT_SYMLINK_NOFOLLOW);
+    r = __syscall(SYS_fstatat, AT_FDCWD, s, &(struct stat){0},
+                  AT_SYMLINK_NOFOLLOW);
 #endif
-		if (r == -ENOENT) return strdup(s);
-	}
-	return 0;
+    if (r == -ENOENT)
+      return strdup(s);
+  }
+  return 0;
 }
diff --git a/fusl/src/stdio/tmpfile.c b/fusl/src/stdio/tmpfile.c
index 525090a..d2fa8d6 100644
--- a/fusl/src/stdio/tmpfile.c
+++ b/fusl/src/stdio/tmpfile.c
@@ -4,29 +4,30 @@
 
 #define MAXTRIES 100
 
-char *__randname(char *);
+char* __randname(char*);
 
-FILE *tmpfile(void)
-{
-	char s[] = "/tmp/tmpfile_XXXXXX";
-	int fd;
-	FILE *f;
-	int try;
-	for (try=0; try<MAXTRIES; try++) {
-		__randname(s+13);
-		fd = sys_open(s, O_RDWR|O_CREAT|O_EXCL, 0600);
-		if (fd >= 0) {
+FILE* tmpfile(void) {
+  char s[] = "/tmp/tmpfile_XXXXXX";
+  int fd;
+  FILE* f;
+  int try
+    ;
+  for (try = 0; try < MAXTRIES; try ++) {
+    __randname(s + 13);
+    fd = sys_open(s, O_RDWR | O_CREAT | O_EXCL, 0600);
+    if (fd >= 0) {
 #ifdef SYS_unlink
-			__syscall(SYS_unlink, s);
+      __syscall(SYS_unlink, s);
 #else
-			__syscall(SYS_unlinkat, AT_FDCWD, s, 0);
+      __syscall(SYS_unlinkat, AT_FDCWD, s, 0);
 #endif
-			f = __fdopen(fd, "w+");
-			if (!f) __syscall(SYS_close, fd);
-			return f;
-		}
-	}
-	return 0;
+      f = __fdopen(fd, "w+");
+      if (!f)
+        __syscall(SYS_close, fd);
+      return f;
+    }
+  }
+  return 0;
 }
 
 LFS64(tmpfile);
diff --git a/fusl/src/stdio/tmpnam.c b/fusl/src/stdio/tmpnam.c
index 449eb9b..938652c 100644
--- a/fusl/src/stdio/tmpnam.c
+++ b/fusl/src/stdio/tmpnam.c
@@ -7,23 +7,24 @@
 
 #define MAXTRIES 100
 
-char *__randname(char *);
+char* __randname(char*);
 
-char *tmpnam(char *buf)
-{
-	static char internal[L_tmpnam];
-	char s[] = "/tmp/tmpnam_XXXXXX";
-	int try;
-	int r;
-	for (try=0; try<MAXTRIES; try++) {
-		__randname(s+12);
+char* tmpnam(char* buf) {
+  static char internal[L_tmpnam];
+  char s[] = "/tmp/tmpnam_XXXXXX";
+  int try
+    ;
+  int r;
+  for (try = 0; try < MAXTRIES; try ++) {
+    __randname(s + 12);
 #ifdef SYS_lstat
-		r = __syscall(SYS_lstat, s, &(struct stat){0});
+    r = __syscall(SYS_lstat, s, &(struct stat){0});
 #else
-		r = __syscall(SYS_fstatat, AT_FDCWD, s,
-			&(struct stat){0}, AT_SYMLINK_NOFOLLOW);
+    r = __syscall(SYS_fstatat, AT_FDCWD, s, &(struct stat){0},
+                  AT_SYMLINK_NOFOLLOW);
 #endif
-		if (r == -ENOENT) return strcpy(buf ? buf : internal, s);
-	}
-	return 0;
+    if (r == -ENOENT)
+      return strcpy(buf ? buf : internal, s);
+  }
+  return 0;
 }
diff --git a/fusl/src/stdio/ungetc.c b/fusl/src/stdio/ungetc.c
index 180673a..c0cb9cb 100644
--- a/fusl/src/stdio/ungetc.c
+++ b/fusl/src/stdio/ungetc.c
@@ -1,20 +1,21 @@
 #include "stdio_impl.h"
 
-int ungetc(int c, FILE *f)
-{
-	if (c == EOF) return c;
+int ungetc(int c, FILE* f) {
+  if (c == EOF)
+    return c;
 
-	FLOCK(f);
+  FLOCK(f);
 
-	if (!f->rpos) __toread(f);
-	if (!f->rpos || f->rpos <= f->buf - UNGET) {
-		FUNLOCK(f);
-		return EOF;
-	}
+  if (!f->rpos)
+    __toread(f);
+  if (!f->rpos || f->rpos <= f->buf - UNGET) {
+    FUNLOCK(f);
+    return EOF;
+  }
 
-	*--f->rpos = c;
-	f->flags &= ~F_EOF;
+  *--f->rpos = c;
+  f->flags &= ~F_EOF;
 
-	FUNLOCK(f);
-	return c;
+  FUNLOCK(f);
+  return c;
 }
diff --git a/fusl/src/stdio/ungetwc.c b/fusl/src/stdio/ungetwc.c
index 80d6e20..0ddfb76 100644
--- a/fusl/src/stdio/ungetwc.c
+++ b/fusl/src/stdio/ungetwc.c
@@ -5,31 +5,34 @@
 #include <ctype.h>
 #include <string.h>
 
-wint_t ungetwc(wint_t c, FILE *f)
-{
-	unsigned char mbc[MB_LEN_MAX];
-	int l=1;
-	locale_t *ploc = &CURRENT_LOCALE, loc = *ploc;
+wint_t ungetwc(wint_t c, FILE* f) {
+  unsigned char mbc[MB_LEN_MAX];
+  int l = 1;
+  locale_t *ploc = &CURRENT_LOCALE, loc = *ploc;
 
-	FLOCK(f);
+  FLOCK(f);
 
-	if (f->mode <= 0) fwide(f, 1);
-	*ploc = f->locale;
+  if (f->mode <= 0)
+    fwide(f, 1);
+  *ploc = f->locale;
 
-	if (!f->rpos) __toread(f);
-	if (!f->rpos || f->rpos < f->buf - UNGET + l || c == WEOF ||
-	    (!isascii(c) && (l = wctomb((void *)mbc, c)) < 0)) {
-		FUNLOCK(f);
-		*ploc = loc;
-		return WEOF;
-	}
+  if (!f->rpos)
+    __toread(f);
+  if (!f->rpos || f->rpos < f->buf - UNGET + l || c == WEOF ||
+      (!isascii(c) && (l = wctomb((void*)mbc, c)) < 0)) {
+    FUNLOCK(f);
+    *ploc = loc;
+    return WEOF;
+  }
 
-	if (isascii(c)) *--f->rpos = c;
-	else memcpy(f->rpos -= l, mbc, l);
+  if (isascii(c))
+    *--f->rpos = c;
+  else
+    memcpy(f->rpos -= l, mbc, l);
 
-	f->flags &= ~F_EOF;
+  f->flags &= ~F_EOF;
 
-	FUNLOCK(f);
-	*ploc = loc;
-	return c;
+  FUNLOCK(f);
+  *ploc = loc;
+  return c;
 }
diff --git a/fusl/src/stdio/vasprintf.c b/fusl/src/stdio/vasprintf.c
index 08251bc..5c387c0 100644
--- a/fusl/src/stdio/vasprintf.c
+++ b/fusl/src/stdio/vasprintf.c
@@ -3,13 +3,13 @@
 #include <stdarg.h>
 #include <stdlib.h>
 
-int vasprintf(char **s, const char *fmt, va_list ap)
-{
-	va_list ap2;
-	va_copy(ap2, ap);
-	int l = vsnprintf(0, 0, fmt, ap2);
-	va_end(ap2);
+int vasprintf(char** s, const char* fmt, va_list ap) {
+  va_list ap2;
+  va_copy(ap2, ap);
+  int l = vsnprintf(0, 0, fmt, ap2);
+  va_end(ap2);
 
-	if (l<0 || !(*s=malloc(l+1U))) return -1;
-	return vsnprintf(*s, l+1U, fmt, ap);
+  if (l < 0 || !(*s = malloc(l + 1U)))
+    return -1;
+  return vsnprintf(*s, l + 1U, fmt, ap);
 }
diff --git a/fusl/src/stdio/vdprintf.c b/fusl/src/stdio/vdprintf.c
index c35d9b4..b590b6c 100644
--- a/fusl/src/stdio/vdprintf.c
+++ b/fusl/src/stdio/vdprintf.c
@@ -1,16 +1,15 @@
 #include "stdio_impl.h"
 
-static size_t wrap_write(FILE *f, const unsigned char *buf, size_t len)
-{
-	return __stdio_write(f, buf, len);
+static size_t wrap_write(FILE* f, const unsigned char* buf, size_t len) {
+  return __stdio_write(f, buf, len);
 }
 
-int vdprintf(int fd, const char *restrict fmt, va_list ap)
-{
-	FILE f = {
-		.fd = fd, .lbf = EOF, .write = wrap_write,
-		.buf = (void *)fmt, .buf_size = 0,
-		.lock = -1
-	};
-	return vfprintf(&f, fmt, ap);
+int vdprintf(int fd, const char* restrict fmt, va_list ap) {
+  FILE f = {.fd = fd,
+            .lbf = EOF,
+            .write = wrap_write,
+            .buf = (void*)fmt,
+            .buf_size = 0,
+            .lock = -1};
+  return vfprintf(&f, fmt, ap);
 }
diff --git a/fusl/src/stdio/vfprintf.c b/fusl/src/stdio/vfprintf.c
index 5724bf3..008fe11 100644
--- a/fusl/src/stdio/vfprintf.c
+++ b/fusl/src/stdio/vfprintf.c
@@ -11,20 +11,20 @@
 
 /* Some useful macros */
 
-#define MAX(a,b) ((a)>(b) ? (a) : (b))
-#define MIN(a,b) ((a)<(b) ? (a) : (b))
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
 
 /* Convenient bit representation for modifier flags, which all fall
  * within 31 codepoints of the space character. */
 
-#define ALT_FORM   (1U<<('#'-' '))
-#define ZERO_PAD   (1U<<('0'-' '))
-#define LEFT_ADJ   (1U<<('-'-' '))
-#define PAD_POS    (1U<<(' '-' '))
-#define MARK_POS   (1U<<('+'-' '))
-#define GROUPED    (1U<<('\''-' '))
+#define ALT_FORM (1U << ('#' - ' '))
+#define ZERO_PAD (1U << ('0' - ' '))
+#define LEFT_ADJ (1U << ('-' - ' '))
+#define PAD_POS (1U << (' ' - ' '))
+#define MARK_POS (1U << ('+' - ' '))
+#define GROUPED (1U << ('\'' - ' '))
 
-#define FLAGMASK (ALT_FORM|ZERO_PAD|LEFT_ADJ|PAD_POS|MARK_POS|GROUPED)
+#define FLAGMASK (ALT_FORM | ZERO_PAD | LEFT_ADJ | PAD_POS | MARK_POS | GROUPED)
 
 #if UINT_MAX == ULONG_MAX
 #define LONG_IS_INT
@@ -38,19 +38,37 @@
  * Result is 0 on failure, or an argument type to pop on success. */
 
 enum {
-	BARE, LPRE, LLPRE, HPRE, HHPRE, BIGLPRE,
-	ZTPRE, JPRE,
-	STOP,
-	PTR, INT, UINT, ULLONG,
+  BARE,
+  LPRE,
+  LLPRE,
+  HPRE,
+  HHPRE,
+  BIGLPRE,
+  ZTPRE,
+  JPRE,
+  STOP,
+  PTR,
+  INT,
+  UINT,
+  ULLONG,
 #ifndef LONG_IS_INT
-	LONG, ULONG,
+  LONG,
+  ULONG,
 #else
 #define LONG INT
 #define ULONG UINT
 #endif
-	SHORT, USHORT, CHAR, UCHAR,
+  SHORT,
+  USHORT,
+  CHAR,
+  UCHAR,
 #ifdef ODD_TYPES
-	LLONG, SIZET, IMAX, UMAX, PDIFF, UIPTR,
+  LLONG,
+  SIZET,
+  IMAX,
+  UMAX,
+  PDIFF,
+  UIPTR,
 #else
 #define LLONG ULLONG
 #define SIZET ULONG
@@ -59,633 +77,783 @@
 #define PDIFF LONG
 #define UIPTR ULONG
 #endif
-	DBL, LDBL,
-	NOARG,
-	MAXSTATE
+  DBL,
+  LDBL,
+  NOARG,
+  MAXSTATE
 };
 
-#define S(x) [(x)-'A']
+#define S(x) [(x) - 'A']
 
-static const unsigned char states[]['z'-'A'+1] = {
-	{ /* 0: bare types */
-		S('d') = INT, S('i') = INT,
-		S('o') = UINT, S('u') = UINT, S('x') = UINT, S('X') = UINT,
-		S('e') = DBL, S('f') = DBL, S('g') = DBL, S('a') = DBL,
-		S('E') = DBL, S('F') = DBL, S('G') = DBL, S('A') = DBL,
-		S('c') = CHAR, S('C') = INT,
-		S('s') = PTR, S('S') = PTR, S('p') = UIPTR, S('n') = PTR,
-		S('m') = NOARG,
-		S('l') = LPRE, S('h') = HPRE, S('L') = BIGLPRE,
-		S('z') = ZTPRE, S('j') = JPRE, S('t') = ZTPRE,
-	}, { /* 1: l-prefixed */
-		S('d') = LONG, S('i') = LONG,
-		S('o') = ULONG, S('u') = ULONG, S('x') = ULONG, S('X') = ULONG,
-		S('e') = DBL, S('f') = DBL, S('g') = DBL, S('a') = DBL,
-		S('E') = DBL, S('F') = DBL, S('G') = DBL, S('A') = DBL,
-		S('c') = INT, S('s') = PTR, S('n') = PTR,
-		S('l') = LLPRE,
-	}, { /* 2: ll-prefixed */
-		S('d') = LLONG, S('i') = LLONG,
-		S('o') = ULLONG, S('u') = ULLONG,
-		S('x') = ULLONG, S('X') = ULLONG,
-		S('n') = PTR,
-	}, { /* 3: h-prefixed */
-		S('d') = SHORT, S('i') = SHORT,
-		S('o') = USHORT, S('u') = USHORT,
-		S('x') = USHORT, S('X') = USHORT,
-		S('n') = PTR,
-		S('h') = HHPRE,
-	}, { /* 4: hh-prefixed */
-		S('d') = CHAR, S('i') = CHAR,
-		S('o') = UCHAR, S('u') = UCHAR,
-		S('x') = UCHAR, S('X') = UCHAR,
-		S('n') = PTR,
-	}, { /* 5: L-prefixed */
-		S('e') = LDBL, S('f') = LDBL, S('g') = LDBL, S('a') = LDBL,
-		S('E') = LDBL, S('F') = LDBL, S('G') = LDBL, S('A') = LDBL,
-		S('n') = PTR,
-	}, { /* 6: z- or t-prefixed (assumed to be same size) */
-		S('d') = PDIFF, S('i') = PDIFF,
-		S('o') = SIZET, S('u') = SIZET,
-		S('x') = SIZET, S('X') = SIZET,
-		S('n') = PTR,
-	}, { /* 7: j-prefixed */
-		S('d') = IMAX, S('i') = IMAX,
-		S('o') = UMAX, S('u') = UMAX,
-		S('x') = UMAX, S('X') = UMAX,
-		S('n') = PTR,
-	}
+static const unsigned char states[]['z' - 'A' + 1] = {
+    {
+        /* 0: bare types */
+        S('d') = INT,   S('i') = INT,  S('o') = UINT,  S('u') = UINT,
+        S('x') = UINT,  S('X') = UINT, S('e') = DBL,   S('f') = DBL,
+        S('g') = DBL,   S('a') = DBL,  S('E') = DBL,   S('F') = DBL,
+        S('G') = DBL,   S('A') = DBL,  S('c') = CHAR,  S('C') = INT,
+        S('s') = PTR,   S('S') = PTR,  S('p') = UIPTR, S('n') = PTR,
+        S('m') = NOARG, S('l') = LPRE, S('h') = HPRE,  S('L') = BIGLPRE,
+        S('z') = ZTPRE, S('j') = JPRE, S('t') = ZTPRE,
+    },
+    {
+        /* 1: l-prefixed */
+        S('d') = LONG, S('i') = LONG, S('o') = ULONG, S('u') = ULONG,
+        S('x') = ULONG, S('X') = ULONG, S('e') = DBL, S('f') = DBL,
+        S('g') = DBL, S('a') = DBL, S('E') = DBL, S('F') = DBL, S('G') = DBL,
+        S('A') = DBL, S('c') = INT, S('s') = PTR, S('n') = PTR, S('l') = LLPRE,
+    },
+    {
+        /* 2: ll-prefixed */
+        S('d') = LLONG, S('i') = LLONG, S('o') = ULLONG, S('u') = ULLONG,
+        S('x') = ULLONG, S('X') = ULLONG, S('n') = PTR,
+    },
+    {
+        /* 3: h-prefixed */
+        S('d') = SHORT, S('i') = SHORT, S('o') = USHORT, S('u') = USHORT,
+        S('x') = USHORT, S('X') = USHORT, S('n') = PTR, S('h') = HHPRE,
+    },
+    {
+        /* 4: hh-prefixed */
+        S('d') = CHAR, S('i') = CHAR, S('o') = UCHAR, S('u') = UCHAR,
+        S('x') = UCHAR, S('X') = UCHAR, S('n') = PTR,
+    },
+    {
+        /* 5: L-prefixed */
+        S('e') = LDBL, S('f') = LDBL, S('g') = LDBL, S('a') = LDBL,
+        S('E') = LDBL, S('F') = LDBL, S('G') = LDBL, S('A') = LDBL,
+        S('n') = PTR,
+    },
+    {
+        /* 6: z- or t-prefixed (assumed to be same size) */
+        S('d') = PDIFF, S('i') = PDIFF, S('o') = SIZET, S('u') = SIZET,
+        S('x') = SIZET, S('X') = SIZET, S('n') = PTR,
+    },
+    {
+        /* 7: j-prefixed */
+        S('d') = IMAX, S('i') = IMAX, S('o') = UMAX, S('u') = UMAX,
+        S('x') = UMAX, S('X') = UMAX, S('n') = PTR,
+    }};
+
+#define OOB(x) ((unsigned)(x) - 'A' > 'z' - 'A')
+
+union arg {
+  uintmax_t i;
+  long double f;
+  void* p;
 };
 
-#define OOB(x) ((unsigned)(x)-'A' > 'z'-'A')
-
-union arg
-{
-	uintmax_t i;
-	long double f;
-	void *p;
-};
-
-static void pop_arg(union arg *arg, int type, va_list *ap)
-{
-	/* Give the compiler a hint for optimizing the switch. */
-	if ((unsigned)type > MAXSTATE) return;
-	switch (type) {
-	       case PTR:	arg->p = va_arg(*ap, void *);
-	break; case INT:	arg->i = va_arg(*ap, int);
-	break; case UINT:	arg->i = va_arg(*ap, unsigned int);
+static void pop_arg(union arg* arg, int type, va_list* ap) {
+  /* Give the compiler a hint for optimizing the switch. */
+  if ((unsigned)type > MAXSTATE)
+    return;
+  switch (type) {
+    case PTR:
+      arg->p = va_arg(*ap, void*);
+      break;
+    case INT:
+      arg->i = va_arg(*ap, int);
+      break;
+    case UINT:
+      arg->i = va_arg(*ap, unsigned int);
 #ifndef LONG_IS_INT
-	break; case LONG:	arg->i = va_arg(*ap, long);
-	break; case ULONG:	arg->i = va_arg(*ap, unsigned long);
+      break;
+    case LONG:
+      arg->i = va_arg(*ap, long);
+      break;
+    case ULONG:
+      arg->i = va_arg(*ap, unsigned long);
 #endif
-	break; case ULLONG:	arg->i = va_arg(*ap, unsigned long long);
-	break; case SHORT:	arg->i = (short)va_arg(*ap, int);
-	break; case USHORT:	arg->i = (unsigned short)va_arg(*ap, int);
-	break; case CHAR:	arg->i = (signed char)va_arg(*ap, int);
-	break; case UCHAR:	arg->i = (unsigned char)va_arg(*ap, int);
+      break;
+    case ULLONG:
+      arg->i = va_arg(*ap, unsigned long long);
+      break;
+    case SHORT:
+      arg->i = (short)va_arg(*ap, int);
+      break;
+    case USHORT:
+      arg->i = (unsigned short)va_arg(*ap, int);
+      break;
+    case CHAR:
+      arg->i = (signed char)va_arg(*ap, int);
+      break;
+    case UCHAR:
+      arg->i = (unsigned char)va_arg(*ap, int);
 #ifdef ODD_TYPES
-	break; case LLONG:	arg->i = va_arg(*ap, long long);
-	break; case SIZET:	arg->i = va_arg(*ap, size_t);
-	break; case IMAX:	arg->i = va_arg(*ap, intmax_t);
-	break; case UMAX:	arg->i = va_arg(*ap, uintmax_t);
-	break; case PDIFF:	arg->i = va_arg(*ap, ptrdiff_t);
-	break; case UIPTR:	arg->i = (uintptr_t)va_arg(*ap, void *);
+      break;
+    case LLONG:
+      arg->i = va_arg(*ap, long long);
+      break;
+    case SIZET:
+      arg->i = va_arg(*ap, size_t);
+      break;
+    case IMAX:
+      arg->i = va_arg(*ap, intmax_t);
+      break;
+    case UMAX:
+      arg->i = va_arg(*ap, uintmax_t);
+      break;
+    case PDIFF:
+      arg->i = va_arg(*ap, ptrdiff_t);
+      break;
+    case UIPTR:
+      arg->i = (uintptr_t)va_arg(*ap, void*);
 #endif
-	break; case DBL:	arg->f = va_arg(*ap, double);
-	break; case LDBL:	arg->f = va_arg(*ap, long double);
-	}
+      break;
+    case DBL:
+      arg->f = va_arg(*ap, double);
+      break;
+    case LDBL:
+      arg->f = va_arg(*ap, long double);
+  }
 }
 
-static void out(FILE *f, const char *s, size_t l)
-{
-	if (!(f->flags & F_ERR)) __fwritex((void *)s, l, f);
+static void out(FILE* f, const char* s, size_t l) {
+  if (!(f->flags & F_ERR))
+    __fwritex((void*)s, l, f);
 }
 
-static void pad(FILE *f, char c, int w, int l, int fl)
-{
-	char pad[256];
-	if (fl & (LEFT_ADJ | ZERO_PAD) || l >= w) return;
-	l = w - l;
-	memset(pad, c, l>sizeof pad ? sizeof pad : l);
-	for (; l >= sizeof pad; l -= sizeof pad)
-		out(f, pad, sizeof pad);
-	out(f, pad, l);
+static void pad(FILE* f, char c, int w, int l, int fl) {
+  char pad[256];
+  if (fl & (LEFT_ADJ | ZERO_PAD) || l >= w)
+    return;
+  l = w - l;
+  memset(pad, c, l > sizeof pad ? sizeof pad : l);
+  for (; l >= sizeof pad; l -= sizeof pad)
+    out(f, pad, sizeof pad);
+  out(f, pad, l);
 }
 
-static const char xdigits[16] = {
-	"0123456789ABCDEF"
-};
+static const char xdigits[16] = {"0123456789ABCDEF"};
 
-static char *fmt_x(uintmax_t x, char *s, int lower)
-{
-	for (; x; x>>=4) *--s = xdigits[(x&15)]|lower;
-	return s;
+static char* fmt_x(uintmax_t x, char* s, int lower) {
+  for (; x; x >>= 4)
+    *--s = xdigits[(x & 15)] | lower;
+  return s;
 }
 
-static char *fmt_o(uintmax_t x, char *s)
-{
-	for (; x; x>>=3) *--s = '0' + (x&7);
-	return s;
+static char* fmt_o(uintmax_t x, char* s) {
+  for (; x; x >>= 3)
+    *--s = '0' + (x & 7);
+  return s;
 }
 
-static char *fmt_u(uintmax_t x, char *s)
-{
-	unsigned long y;
-	for (   ; x>ULONG_MAX; x/=10) *--s = '0' + x%10;
-	for (y=x;           y; y/=10) *--s = '0' + y%10;
-	return s;
+static char* fmt_u(uintmax_t x, char* s) {
+  unsigned long y;
+  for (; x > ULONG_MAX; x /= 10)
+    *--s = '0' + x % 10;
+  for (y = x; y; y /= 10)
+    *--s = '0' + y % 10;
+  return s;
 }
 
 /* Do not override this check. The floating point printing code below
  * depends on the float.h constants being right. If they are wrong, it
  * may overflow the stack. */
 #if LDBL_MANT_DIG == 53
-typedef char compiler_defines_long_double_incorrectly[9-(int)sizeof(long double)];
+typedef char
+    compiler_defines_long_double_incorrectly[9 - (int)sizeof(long double)];
 #endif
 
-static int fmt_fp(FILE *f, long double y, int w, int p, int fl, int t)
-{
-	uint32_t big[(LDBL_MANT_DIG+28)/29 + 1          // mantissa expansion
-		+ (LDBL_MAX_EXP+LDBL_MANT_DIG+28+8)/9]; // exponent expansion
-	uint32_t *a, *d, *r, *z;
-	int e2=0, e, i, j, l;
-	char buf[9+LDBL_MANT_DIG/4], *s;
-	const char *prefix="-0X+0X 0X-0x+0x 0x";
-	int pl;
-	char ebuf0[3*sizeof(int)], *ebuf=&ebuf0[3*sizeof(int)], *estr;
+static int fmt_fp(FILE* f, long double y, int w, int p, int fl, int t) {
+  uint32_t
+      big[(LDBL_MANT_DIG + 28) / 29 + 1                    // mantissa expansion
+          + (LDBL_MAX_EXP + LDBL_MANT_DIG + 28 + 8) / 9];  // exponent expansion
+  uint32_t *a, *d, *r, *z;
+  int e2 = 0, e, i, j, l;
+  char buf[9 + LDBL_MANT_DIG / 4], *s;
+  const char* prefix = "-0X+0X 0X-0x+0x 0x";
+  int pl;
+  char ebuf0[3 * sizeof(int)], *ebuf = &ebuf0[3 * sizeof(int)], *estr;
 
-	pl=1;
-	if (signbit(y)) {
-		y=-y;
-	} else if (fl & MARK_POS) {
-		prefix+=3;
-	} else if (fl & PAD_POS) {
-		prefix+=6;
-	} else prefix++, pl=0;
+  pl = 1;
+  if (signbit(y)) {
+    y = -y;
+  } else if (fl & MARK_POS) {
+    prefix += 3;
+  } else if (fl & PAD_POS) {
+    prefix += 6;
+  } else
+    prefix++, pl = 0;
 
-	if (!isfinite(y)) {
-		char *s = (t&32)?"inf":"INF";
-		if (y!=y) s=(t&32)?"nan":"NAN";
-		pad(f, ' ', w, 3+pl, fl&~ZERO_PAD);
-		out(f, prefix, pl);
-		out(f, s, 3);
-		pad(f, ' ', w, 3+pl, fl^LEFT_ADJ);
-		return MAX(w, 3+pl);
-	}
+  if (!isfinite(y)) {
+    char* s = (t & 32) ? "inf" : "INF";
+    if (y != y)
+      s = (t & 32) ? "nan" : "NAN";
+    pad(f, ' ', w, 3 + pl, fl & ~ZERO_PAD);
+    out(f, prefix, pl);
+    out(f, s, 3);
+    pad(f, ' ', w, 3 + pl, fl ^ LEFT_ADJ);
+    return MAX(w, 3 + pl);
+  }
 
-	y = frexpl(y, &e2) * 2;
-	if (y) e2--;
+  y = frexpl(y, &e2) * 2;
+  if (y)
+    e2--;
 
-	if ((t|32)=='a') {
-		long double round = 8.0;
-		int re;
+  if ((t | 32) == 'a') {
+    long double round = 8.0;
+    int re;
 
-		if (t&32) prefix += 9;
-		pl += 2;
+    if (t & 32)
+      prefix += 9;
+    pl += 2;
 
-		if (p<0 || p>=LDBL_MANT_DIG/4-1) re=0;
-		else re=LDBL_MANT_DIG/4-1-p;
+    if (p < 0 || p >= LDBL_MANT_DIG / 4 - 1)
+      re = 0;
+    else
+      re = LDBL_MANT_DIG / 4 - 1 - p;
 
-		if (re) {
-			while (re--) round*=16;
-			if (*prefix=='-') {
-				y=-y;
-				y-=round;
-				y+=round;
-				y=-y;
-			} else {
-				y+=round;
-				y-=round;
-			}
-		}
+    if (re) {
+      while (re--)
+        round *= 16;
+      if (*prefix == '-') {
+        y = -y;
+        y -= round;
+        y += round;
+        y = -y;
+      } else {
+        y += round;
+        y -= round;
+      }
+    }
 
-		estr=fmt_u(e2<0 ? -e2 : e2, ebuf);
-		if (estr==ebuf) *--estr='0';
-		*--estr = (e2<0 ? '-' : '+');
-		*--estr = t+('p'-'a');
+    estr = fmt_u(e2 < 0 ? -e2 : e2, ebuf);
+    if (estr == ebuf)
+      *--estr = '0';
+    *--estr = (e2 < 0 ? '-' : '+');
+    *--estr = t + ('p' - 'a');
 
-		s=buf;
-		do {
-			int x=y;
-			*s++=xdigits[x]|(t&32);
-			y=16*(y-x);
-			if (s-buf==1 && (y||p>0||(fl&ALT_FORM))) *s++='.';
-		} while (y);
+    s = buf;
+    do {
+      int x = y;
+      *s++ = xdigits[x] | (t & 32);
+      y = 16 * (y - x);
+      if (s - buf == 1 && (y || p > 0 || (fl & ALT_FORM)))
+        *s++ = '.';
+    } while (y);
 
-		if (p && s-buf-2 < p)
-			l = (p+2) + (ebuf-estr);
-		else
-			l = (s-buf) + (ebuf-estr);
+    if (p && s - buf - 2 < p)
+      l = (p + 2) + (ebuf - estr);
+    else
+      l = (s - buf) + (ebuf - estr);
 
-		pad(f, ' ', w, pl+l, fl);
-		out(f, prefix, pl);
-		pad(f, '0', w, pl+l, fl^ZERO_PAD);
-		out(f, buf, s-buf);
-		pad(f, '0', l-(ebuf-estr)-(s-buf), 0, 0);
-		out(f, estr, ebuf-estr);
-		pad(f, ' ', w, pl+l, fl^LEFT_ADJ);
-		return MAX(w, pl+l);
-	}
-	if (p<0) p=6;
+    pad(f, ' ', w, pl + l, fl);
+    out(f, prefix, pl);
+    pad(f, '0', w, pl + l, fl ^ ZERO_PAD);
+    out(f, buf, s - buf);
+    pad(f, '0', l - (ebuf - estr) - (s - buf), 0, 0);
+    out(f, estr, ebuf - estr);
+    pad(f, ' ', w, pl + l, fl ^ LEFT_ADJ);
+    return MAX(w, pl + l);
+  }
+  if (p < 0)
+    p = 6;
 
-	if (y) y *= 0x1p28, e2-=28;
+  if (y)
+    y *= 0x1p28, e2 -= 28;
 
-	if (e2<0) a=r=z=big;
-	else a=r=z=big+sizeof(big)/sizeof(*big) - LDBL_MANT_DIG - 1;
+  if (e2 < 0)
+    a = r = z = big;
+  else
+    a = r = z = big + sizeof(big) / sizeof(*big) - LDBL_MANT_DIG - 1;
 
-	do {
-		*z = y;
-		y = 1000000000*(y-*z++);
-	} while (y);
+  do {
+    *z = y;
+    y = 1000000000 * (y - *z++);
+  } while (y);
 
-	while (e2>0) {
-		uint32_t carry=0;
-		int sh=MIN(29,e2);
-		for (d=z-1; d>=a; d--) {
-			uint64_t x = ((uint64_t)*d<<sh)+carry;
-			*d = x % 1000000000;
-			carry = x / 1000000000;
-		}
-		if (carry) *--a = carry;
-		while (z>a && !z[-1]) z--;
-		e2-=sh;
-	}
-	while (e2<0) {
-		uint32_t carry=0, *b;
-		int sh=MIN(9,-e2), need=1+(p+LDBL_MANT_DIG/3+8)/9;
-		for (d=a; d<z; d++) {
-			uint32_t rm = *d & (1<<sh)-1;
-			*d = (*d>>sh) + carry;
-			carry = (1000000000>>sh) * rm;
-		}
-		if (!*a) a++;
-		if (carry) *z++ = carry;
-		/* Avoid (slow!) computation past requested precision */
-		b = (t|32)=='f' ? r : a;
-		if (z-b > need) z = b+need;
-		e2+=sh;
-	}
+  while (e2 > 0) {
+    uint32_t carry = 0;
+    int sh = MIN(29, e2);
+    for (d = z - 1; d >= a; d--) {
+      uint64_t x = ((uint64_t)*d << sh) + carry;
+      *d = x % 1000000000;
+      carry = x / 1000000000;
+    }
+    if (carry)
+      *--a = carry;
+    while (z > a && !z[-1])
+      z--;
+    e2 -= sh;
+  }
+  while (e2 < 0) {
+    uint32_t carry = 0, *b;
+    int sh = MIN(9, -e2), need = 1 + (p + LDBL_MANT_DIG / 3 + 8) / 9;
+    for (d = a; d < z; d++) {
+      uint32_t rm = *d & (1 << sh) - 1;
+      *d = (*d >> sh) + carry;
+      carry = (1000000000 >> sh) * rm;
+    }
+    if (!*a)
+      a++;
+    if (carry)
+      *z++ = carry;
+    /* Avoid (slow!) computation past requested precision */
+    b = (t | 32) == 'f' ? r : a;
+    if (z - b > need)
+      z = b + need;
+    e2 += sh;
+  }
 
-	if (a<z) for (i=10, e=9*(r-a); *a>=i; i*=10, e++);
-	else e=0;
+  if (a < z)
+    for (i = 10, e = 9 * (r - a); *a >= i; i *= 10, e++)
+      ;
+  else
+    e = 0;
 
-	/* Perform rounding: j is precision after the radix (possibly neg) */
-	j = p - ((t|32)!='f')*e - ((t|32)=='g' && p);
-	if (j < 9*(z-r-1)) {
-		uint32_t x;
-		/* We avoid C's broken division of negative numbers */
-		d = r + 1 + ((j+9*LDBL_MAX_EXP)/9 - LDBL_MAX_EXP);
-		j += 9*LDBL_MAX_EXP;
-		j %= 9;
-		for (i=10, j++; j<9; i*=10, j++);
-		x = *d % i;
-		/* Are there any significant digits past j? */
-		if (x || d+1!=z) {
-			long double round = 2/LDBL_EPSILON;
-			long double small;
-			if (*d/i & 1) round += 2;
-			if (x<i/2) small=0x0.8p0;
-			else if (x==i/2 && d+1==z) small=0x1.0p0;
-			else small=0x1.8p0;
-			if (pl && *prefix=='-') round*=-1, small*=-1;
-			*d -= x;
-			/* Decide whether to round by probing round+small */
-			if (round+small != round) {
-				*d = *d + i;
-				while (*d > 999999999) {
-					*d--=0;
-					if (d<a) *--a=0;
-					(*d)++;
-				}
-				for (i=10, e=9*(r-a); *a>=i; i*=10, e++);
-			}
-		}
-		if (z>d+1) z=d+1;
-	}
-	for (; z>a && !z[-1]; z--);
-	
-	if ((t|32)=='g') {
-		if (!p) p++;
-		if (p>e && e>=-4) {
-			t--;
-			p-=e+1;
-		} else {
-			t-=2;
-			p--;
-		}
-		if (!(fl&ALT_FORM)) {
-			/* Count trailing zeros in last place */
-			if (z>a && z[-1]) for (i=10, j=0; z[-1]%i==0; i*=10, j++);
-			else j=9;
-			if ((t|32)=='f')
-				p = MIN(p,MAX(0,9*(z-r-1)-j));
-			else
-				p = MIN(p,MAX(0,9*(z-r-1)+e-j));
-		}
-	}
-	l = 1 + p + (p || (fl&ALT_FORM));
-	if ((t|32)=='f') {
-		if (e>0) l+=e;
-	} else {
-		estr=fmt_u(e<0 ? -e : e, ebuf);
-		while(ebuf-estr<2) *--estr='0';
-		*--estr = (e<0 ? '-' : '+');
-		*--estr = t;
-		l += ebuf-estr;
-	}
+  /* Perform rounding: j is precision after the radix (possibly neg) */
+  j = p - ((t | 32) != 'f') * e - ((t | 32) == 'g' && p);
+  if (j < 9 * (z - r - 1)) {
+    uint32_t x;
+    /* We avoid C's broken division of negative numbers */
+    d = r + 1 + ((j + 9 * LDBL_MAX_EXP) / 9 - LDBL_MAX_EXP);
+    j += 9 * LDBL_MAX_EXP;
+    j %= 9;
+    for (i = 10, j++; j < 9; i *= 10, j++)
+      ;
+    x = *d % i;
+    /* Are there any significant digits past j? */
+    if (x || d + 1 != z) {
+      long double round = 2 / LDBL_EPSILON;
+      long double small;
+      if (*d / i & 1)
+        round += 2;
+      if (x < i / 2)
+        small = 0x0.8p0;
+      else if (x == i / 2 && d + 1 == z)
+        small = 0x1.0p0;
+      else
+        small = 0x1.8p0;
+      if (pl && *prefix == '-')
+        round *= -1, small *= -1;
+      *d -= x;
+      /* Decide whether to round by probing round+small */
+      if (round + small != round) {
+        *d = *d + i;
+        while (*d > 999999999) {
+          *d-- = 0;
+          if (d < a)
+            *--a = 0;
+          (*d)++;
+        }
+        for (i = 10, e = 9 * (r - a); *a >= i; i *= 10, e++)
+          ;
+      }
+    }
+    if (z > d + 1)
+      z = d + 1;
+  }
+  for (; z > a && !z[-1]; z--)
+    ;
 
-	pad(f, ' ', w, pl+l, fl);
-	out(f, prefix, pl);
-	pad(f, '0', w, pl+l, fl^ZERO_PAD);
+  if ((t | 32) == 'g') {
+    if (!p)
+      p++;
+    if (p > e && e >= -4) {
+      t--;
+      p -= e + 1;
+    } else {
+      t -= 2;
+      p--;
+    }
+    if (!(fl & ALT_FORM)) {
+      /* Count trailing zeros in last place */
+      if (z > a && z[-1])
+        for (i = 10, j = 0; z[-1] % i == 0; i *= 10, j++)
+          ;
+      else
+        j = 9;
+      if ((t | 32) == 'f')
+        p = MIN(p, MAX(0, 9 * (z - r - 1) - j));
+      else
+        p = MIN(p, MAX(0, 9 * (z - r - 1) + e - j));
+    }
+  }
+  l = 1 + p + (p || (fl & ALT_FORM));
+  if ((t | 32) == 'f') {
+    if (e > 0)
+      l += e;
+  } else {
+    estr = fmt_u(e < 0 ? -e : e, ebuf);
+    while (ebuf - estr < 2)
+      *--estr = '0';
+    *--estr = (e < 0 ? '-' : '+');
+    *--estr = t;
+    l += ebuf - estr;
+  }
 
-	if ((t|32)=='f') {
-		if (a>r) a=r;
-		for (d=a; d<=r; d++) {
-			char *s = fmt_u(*d, buf+9);
-			if (d!=a) while (s>buf) *--s='0';
-			else if (s==buf+9) *--s='0';
-			out(f, s, buf+9-s);
-		}
-		if (p || (fl&ALT_FORM)) out(f, ".", 1);
-		for (; d<z && p>0; d++, p-=9) {
-			char *s = fmt_u(*d, buf+9);
-			while (s>buf) *--s='0';
-			out(f, s, MIN(9,p));
-		}
-		pad(f, '0', p+9, 9, 0);
-	} else {
-		if (z<=a) z=a+1;
-		for (d=a; d<z && p>=0; d++) {
-			char *s = fmt_u(*d, buf+9);
-			if (s==buf+9) *--s='0';
-			if (d!=a) while (s>buf) *--s='0';
-			else {
-				out(f, s++, 1);
-				if (p>0||(fl&ALT_FORM)) out(f, ".", 1);
-			}
-			out(f, s, MIN(buf+9-s, p));
-			p -= buf+9-s;
-		}
-		pad(f, '0', p+18, 18, 0);
-		out(f, estr, ebuf-estr);
-	}
+  pad(f, ' ', w, pl + l, fl);
+  out(f, prefix, pl);
+  pad(f, '0', w, pl + l, fl ^ ZERO_PAD);
 
-	pad(f, ' ', w, pl+l, fl^LEFT_ADJ);
+  if ((t | 32) == 'f') {
+    if (a > r)
+      a = r;
+    for (d = a; d <= r; d++) {
+      char* s = fmt_u(*d, buf + 9);
+      if (d != a)
+        while (s > buf)
+          *--s = '0';
+      else if (s == buf + 9)
+        *--s = '0';
+      out(f, s, buf + 9 - s);
+    }
+    if (p || (fl & ALT_FORM))
+      out(f, ".", 1);
+    for (; d < z && p > 0; d++, p -= 9) {
+      char* s = fmt_u(*d, buf + 9);
+      while (s > buf)
+        *--s = '0';
+      out(f, s, MIN(9, p));
+    }
+    pad(f, '0', p + 9, 9, 0);
+  } else {
+    if (z <= a)
+      z = a + 1;
+    for (d = a; d < z && p >= 0; d++) {
+      char* s = fmt_u(*d, buf + 9);
+      if (s == buf + 9)
+        *--s = '0';
+      if (d != a)
+        while (s > buf)
+          *--s = '0';
+      else {
+        out(f, s++, 1);
+        if (p > 0 || (fl & ALT_FORM))
+          out(f, ".", 1);
+      }
+      out(f, s, MIN(buf + 9 - s, p));
+      p -= buf + 9 - s;
+    }
+    pad(f, '0', p + 18, 18, 0);
+    out(f, estr, ebuf - estr);
+  }
 
-	return MAX(w, pl+l);
+  pad(f, ' ', w, pl + l, fl ^ LEFT_ADJ);
+
+  return MAX(w, pl + l);
 }
 
-static int getint(char **s) {
-	int i;
-	for (i=0; isdigit(**s); (*s)++)
-		i = 10*i + (**s-'0');
-	return i;
+static int getint(char** s) {
+  int i;
+  for (i = 0; isdigit(**s); (*s)++)
+    i = 10 * i + (**s - '0');
+  return i;
 }
 
-static int printf_core(FILE *f, const char *fmt, va_list *ap, union arg *nl_arg, int *nl_type)
-{
-	char *a, *z, *s=(char *)fmt;
-	unsigned l10n=0, fl;
-	int w, p;
-	union arg arg;
-	int argpos;
-	unsigned st, ps;
-	int cnt=0, l=0;
-	int i;
-	char buf[sizeof(uintmax_t)*3+3+LDBL_MANT_DIG/4];
-	const char *prefix;
-	int t, pl;
-	wchar_t wc[2], *ws;
-	char mb[4];
+static int printf_core(FILE* f,
+                       const char* fmt,
+                       va_list* ap,
+                       union arg* nl_arg,
+                       int* nl_type) {
+  char *a, *z, *s = (char *)fmt;
+  unsigned l10n = 0, fl;
+  int w, p;
+  union arg arg;
+  int argpos;
+  unsigned st, ps;
+  int cnt = 0, l = 0;
+  int i;
+  char buf[sizeof(uintmax_t) * 3 + 3 + LDBL_MANT_DIG / 4];
+  const char* prefix;
+  int t, pl;
+  wchar_t wc[2], *ws;
+  char mb[4];
 
-	for (;;) {
-		/* Update output count, end loop when fmt is exhausted */
-		if (cnt >= 0) {
-			if (l > INT_MAX - cnt) {
-				errno = EOVERFLOW;
-				cnt = -1;
-			} else cnt += l;
-		}
-		if (!*s) break;
+  for (;;) {
+    /* Update output count, end loop when fmt is exhausted */
+    if (cnt >= 0) {
+      if (l > INT_MAX - cnt) {
+        errno = EOVERFLOW;
+        cnt = -1;
+      } else
+        cnt += l;
+    }
+    if (!*s)
+      break;
 
-		/* Handle literal text and %% format specifiers */
-		for (a=s; *s && *s!='%'; s++);
-		for (z=s; s[0]=='%' && s[1]=='%'; z++, s+=2);
-		l = z-a;
-		if (f) out(f, a, l);
-		if (l) continue;
+    /* Handle literal text and %% format specifiers */
+    for (a = s; *s && *s != '%'; s++)
+      ;
+    for (z = s; s[0] == '%' && s[1] == '%'; z++, s += 2)
+      ;
+    l = z - a;
+    if (f)
+      out(f, a, l);
+    if (l)
+      continue;
 
-		if (isdigit(s[1]) && s[2]=='$') {
-			l10n=1;
-			argpos = s[1]-'0';
-			s+=3;
-		} else {
-			argpos = -1;
-			s++;
-		}
+    if (isdigit(s[1]) && s[2] == '$') {
+      l10n = 1;
+      argpos = s[1] - '0';
+      s += 3;
+    } else {
+      argpos = -1;
+      s++;
+    }
 
-		/* Read modifier flags */
-		for (fl=0; (unsigned)*s-' '<32 && (FLAGMASK&(1U<<(*s-' '))); s++)
-			fl |= 1U<<(*s-' ');
+    /* Read modifier flags */
+    for (fl = 0; (unsigned)*s - ' ' < 32 && (FLAGMASK & (1U << (*s - ' ')));
+         s++)
+      fl |= 1U << (*s - ' ');
 
-		/* Read field width */
-		if (*s=='*') {
-			if (isdigit(s[1]) && s[2]=='$') {
-				l10n=1;
-				nl_type[s[1]-'0'] = INT;
-				w = nl_arg[s[1]-'0'].i;
-				s+=3;
-			} else if (!l10n) {
-				w = f ? va_arg(*ap, int) : 0;
-				s++;
-			} else return -1;
-			if (w<0) fl|=LEFT_ADJ, w=-w;
-		} else if ((w=getint(&s))<0) return -1;
+    /* Read field width */
+    if (*s == '*') {
+      if (isdigit(s[1]) && s[2] == '$') {
+        l10n = 1;
+        nl_type[s[1] - '0'] = INT;
+        w = nl_arg[s[1] - '0'].i;
+        s += 3;
+      } else if (!l10n) {
+        w = f ? va_arg(*ap, int) : 0;
+        s++;
+      } else
+        return -1;
+      if (w < 0)
+        fl |= LEFT_ADJ, w = -w;
+    } else if ((w = getint(&s)) < 0)
+      return -1;
 
-		/* Read precision */
-		if (*s=='.' && s[1]=='*') {
-			if (isdigit(s[2]) && s[3]=='$') {
-				nl_type[s[2]-'0'] = INT;
-				p = nl_arg[s[2]-'0'].i;
-				s+=4;
-			} else if (!l10n) {
-				p = f ? va_arg(*ap, int) : 0;
-				s+=2;
-			} else return -1;
-		} else if (*s=='.') {
-			s++;
-			p = getint(&s);
-		} else p = -1;
+    /* Read precision */
+    if (*s == '.' && s[1] == '*') {
+      if (isdigit(s[2]) && s[3] == '$') {
+        nl_type[s[2] - '0'] = INT;
+        p = nl_arg[s[2] - '0'].i;
+        s += 4;
+      } else if (!l10n) {
+        p = f ? va_arg(*ap, int) : 0;
+        s += 2;
+      } else
+        return -1;
+    } else if (*s == '.') {
+      s++;
+      p = getint(&s);
+    } else
+      p = -1;
 
-		/* Format specifier state machine */
-		st=0;
-		do {
-			if (OOB(*s)) return -1;
-			ps=st;
-			st=states[st]S(*s++);
-		} while (st-1<STOP);
-		if (!st) return -1;
+    /* Format specifier state machine */
+    st = 0;
+    do {
+      if (OOB(*s))
+        return -1;
+      ps = st;
+      st = states[st] S(*s++);
+    } while (st - 1 < STOP);
+    if (!st)
+      return -1;
 
-		/* Check validity of argument type (nl/normal) */
-		if (st==NOARG) {
-			if (argpos>=0) return -1;
-		} else {
-			if (argpos>=0) nl_type[argpos]=st, arg=nl_arg[argpos];
-			else if (f) pop_arg(&arg, st, ap);
-			else return 0;
-		}
+    /* Check validity of argument type (nl/normal) */
+    if (st == NOARG) {
+      if (argpos >= 0)
+        return -1;
+    } else {
+      if (argpos >= 0)
+        nl_type[argpos] = st, arg = nl_arg[argpos];
+      else if (f)
+        pop_arg(&arg, st, ap);
+      else
+        return 0;
+    }
 
-		if (!f) continue;
+    if (!f)
+      continue;
 
-		z = buf + sizeof(buf);
-		prefix = "-+   0X0x";
-		pl = 0;
-		t = s[-1];
+    z = buf + sizeof(buf);
+    prefix = "-+   0X0x";
+    pl = 0;
+    t = s[-1];
 
-		/* Transform ls,lc -> S,C */
-		if (ps && (t&15)==3) t&=~32;
+    /* Transform ls,lc -> S,C */
+    if (ps && (t & 15) == 3)
+      t &= ~32;
 
-		/* - and 0 flags are mutually exclusive */
-		if (fl & LEFT_ADJ) fl &= ~ZERO_PAD;
+    /* - and 0 flags are mutually exclusive */
+    if (fl & LEFT_ADJ)
+      fl &= ~ZERO_PAD;
 
-		switch(t) {
-		case 'n':
-			switch(ps) {
-			case BARE: *(int *)arg.p = cnt; break;
-			case LPRE: *(long *)arg.p = cnt; break;
-			case LLPRE: *(long long *)arg.p = cnt; break;
-			case HPRE: *(unsigned short *)arg.p = cnt; break;
-			case HHPRE: *(unsigned char *)arg.p = cnt; break;
-			case ZTPRE: *(size_t *)arg.p = cnt; break;
-			case JPRE: *(uintmax_t *)arg.p = cnt; break;
-			}
-			continue;
-		case 'p':
-			p = MAX(p, 2*sizeof(void*));
-			t = 'x';
-			fl |= ALT_FORM;
-		case 'x': case 'X':
-			a = fmt_x(arg.i, z, t&32);
-			if (arg.i && (fl & ALT_FORM)) prefix+=(t>>4), pl=2;
-			if (0) {
-		case 'o':
-			a = fmt_o(arg.i, z);
-			if ((fl&ALT_FORM) && p<z-a+1) p=z-a+1;
-			} if (0) {
-		case 'd': case 'i':
-			pl=1;
-			if (arg.i>INTMAX_MAX) {
-				arg.i=-arg.i;
-			} else if (fl & MARK_POS) {
-				prefix++;
-			} else if (fl & PAD_POS) {
-				prefix+=2;
-			} else pl=0;
-		case 'u':
-			a = fmt_u(arg.i, z);
-			}
-			if (p>=0) fl &= ~ZERO_PAD;
-			if (!arg.i && !p) {
-				a=z;
-				break;
-			}
-			p = MAX(p, z-a + !arg.i);
-			break;
-		case 'c':
-			*(a=z-(p=1))=arg.i;
-			fl &= ~ZERO_PAD;
-			break;
-		case 'm':
-			if (1) a = strerror(errno); else
-		case 's':
-			a = arg.p ? arg.p : "(null)";
-			z = memchr(a, 0, p);
-			if (!z) z=a+p;
-			else p=z-a;
-			fl &= ~ZERO_PAD;
-			break;
-		case 'C':
-			wc[0] = arg.i;
-			wc[1] = 0;
-			arg.p = wc;
-			p = -1;
-		case 'S':
-			ws = arg.p;
-			for (i=l=0; i<0U+p && *ws && (l=wctomb(mb, *ws++))>=0 && l<=0U+p-i; i+=l);
-			if (l<0) return -1;
-			p = i;
-			pad(f, ' ', w, p, fl);
-			ws = arg.p;
-			for (i=0; i<0U+p && *ws && i+(l=wctomb(mb, *ws++))<=p; i+=l)
-				out(f, mb, l);
-			pad(f, ' ', w, p, fl^LEFT_ADJ);
-			l = w>p ? w : p;
-			continue;
-		case 'e': case 'f': case 'g': case 'a':
-		case 'E': case 'F': case 'G': case 'A':
-			l = fmt_fp(f, arg.f, w, p, fl, t);
-			continue;
-		}
+    switch (t) {
+      case 'n':
+        switch (ps) {
+          case BARE:
+            *(int*)arg.p = cnt;
+            break;
+          case LPRE:
+            *(long*)arg.p = cnt;
+            break;
+          case LLPRE:
+            *(long long*)arg.p = cnt;
+            break;
+          case HPRE:
+            *(unsigned short*)arg.p = cnt;
+            break;
+          case HHPRE:
+            *(unsigned char*)arg.p = cnt;
+            break;
+          case ZTPRE:
+            *(size_t*)arg.p = cnt;
+            break;
+          case JPRE:
+            *(uintmax_t*)arg.p = cnt;
+            break;
+        }
+        continue;
+      case 'p':
+        p = MAX(p, 2 * sizeof(void*));
+        t = 'x';
+        fl |= ALT_FORM;
+      case 'x':
+      case 'X':
+        a = fmt_x(arg.i, z, t & 32);
+        if (arg.i && (fl & ALT_FORM))
+          prefix += (t >> 4), pl = 2;
+        if (0) {
+          case 'o':
+            a = fmt_o(arg.i, z);
+            if ((fl & ALT_FORM) && p < z - a + 1)
+              p = z - a + 1;
+        }
+        if (0) {
+          case 'd':
+          case 'i':
+            pl = 1;
+            if (arg.i > INTMAX_MAX) {
+              arg.i = -arg.i;
+            } else if (fl & MARK_POS) {
+              prefix++;
+            } else if (fl & PAD_POS) {
+              prefix += 2;
+            } else
+              pl = 0;
+          case 'u':
+            a = fmt_u(arg.i, z);
+        }
+        if (p >= 0)
+          fl &= ~ZERO_PAD;
+        if (!arg.i && !p) {
+          a = z;
+          break;
+        }
+        p = MAX(p, z - a + !arg.i);
+        break;
+      case 'c':
+        *(a = z - (p = 1)) = arg.i;
+        fl &= ~ZERO_PAD;
+        break;
+      case 'm':
+        if (1)
+          a = strerror(errno);
+        else
+        case 's':
+        a = arg.p ? arg.p : "(null)";
+        z = memchr(a, 0, p);
+        if (!z)
+          z = a + p;
+        else
+          p = z - a;
+        fl &= ~ZERO_PAD;
+        break;
+      case 'C':
+        wc[0] = arg.i;
+        wc[1] = 0;
+        arg.p = wc;
+        p = -1;
+      case 'S':
+        ws = arg.p;
+        for (i = l = 0; i < 0U + p && *ws && (l = wctomb(mb, *ws++)) >= 0 &&
+                        l <= 0U + p - i;
+             i += l)
+          ;
+        if (l < 0)
+          return -1;
+        p = i;
+        pad(f, ' ', w, p, fl);
+        ws = arg.p;
+        for (i = 0; i < 0U + p && *ws && i + (l = wctomb(mb, *ws++)) <= p;
+             i += l)
+          out(f, mb, l);
+        pad(f, ' ', w, p, fl ^ LEFT_ADJ);
+        l = w > p ? w : p;
+        continue;
+      case 'e':
+      case 'f':
+      case 'g':
+      case 'a':
+      case 'E':
+      case 'F':
+      case 'G':
+      case 'A':
+        l = fmt_fp(f, arg.f, w, p, fl, t);
+        continue;
+    }
 
-		if (p < z-a) p = z-a;
-		if (w < pl+p) w = pl+p;
+    if (p < z - a)
+      p = z - a;
+    if (w < pl + p)
+      w = pl + p;
 
-		pad(f, ' ', w, pl+p, fl);
-		out(f, prefix, pl);
-		pad(f, '0', w, pl+p, fl^ZERO_PAD);
-		pad(f, '0', p, z-a, 0);
-		out(f, a, z-a);
-		pad(f, ' ', w, pl+p, fl^LEFT_ADJ);
+    pad(f, ' ', w, pl + p, fl);
+    out(f, prefix, pl);
+    pad(f, '0', w, pl + p, fl ^ ZERO_PAD);
+    pad(f, '0', p, z - a, 0);
+    out(f, a, z - a);
+    pad(f, ' ', w, pl + p, fl ^ LEFT_ADJ);
 
-		l = w;
-	}
+    l = w;
+  }
 
-	if (f) return cnt;
-	if (!l10n) return 0;
+  if (f)
+    return cnt;
+  if (!l10n)
+    return 0;
 
-	for (i=1; i<=NL_ARGMAX && nl_type[i]; i++)
-		pop_arg(nl_arg+i, nl_type[i], ap);
-	for (; i<=NL_ARGMAX && !nl_type[i]; i++);
-	if (i<=NL_ARGMAX) return -1;
-	return 1;
+  for (i = 1; i <= NL_ARGMAX && nl_type[i]; i++)
+    pop_arg(nl_arg + i, nl_type[i], ap);
+  for (; i <= NL_ARGMAX && !nl_type[i]; i++)
+    ;
+  if (i <= NL_ARGMAX)
+    return -1;
+  return 1;
 }
 
-int vfprintf(FILE *restrict f, const char *restrict fmt, va_list ap)
-{
-	va_list ap2;
-	int nl_type[NL_ARGMAX+1] = {0};
-	union arg nl_arg[NL_ARGMAX+1];
-	unsigned char internal_buf[80], *saved_buf = 0;
-	int olderr;
-	int ret;
+int vfprintf(FILE* restrict f, const char* restrict fmt, va_list ap) {
+  va_list ap2;
+  int nl_type[NL_ARGMAX + 1] = {0};
+  union arg nl_arg[NL_ARGMAX + 1];
+  unsigned char internal_buf[80], *saved_buf = 0;
+  int olderr;
+  int ret;
 
-	/* the copy allows passing va_list* even if va_list is an array */
-	va_copy(ap2, ap);
-	if (printf_core(0, fmt, &ap2, nl_arg, nl_type) < 0) {
-		va_end(ap2);
-		return -1;
-	}
+  /* the copy allows passing va_list* even if va_list is an array */
+  va_copy(ap2, ap);
+  if (printf_core(0, fmt, &ap2, nl_arg, nl_type) < 0) {
+    va_end(ap2);
+    return -1;
+  }
 
-	FLOCK(f);
-	olderr = f->flags & F_ERR;
-	if (f->mode < 1) f->flags &= ~F_ERR;
-	if (!f->buf_size) {
-		saved_buf = f->buf;
-		f->wpos = f->wbase = f->buf = internal_buf;
-		f->buf_size = sizeof internal_buf;
-		f->wend = internal_buf + sizeof internal_buf;
-	}
-	ret = printf_core(f, fmt, &ap2, nl_arg, nl_type);
-	if (saved_buf) {
-		f->write(f, 0, 0);
-		if (!f->wpos) ret = -1;
-		f->buf = saved_buf;
-		f->buf_size = 0;
-		f->wpos = f->wbase = f->wend = 0;
-	}
-	if (f->flags & F_ERR) ret = -1;
-	f->flags |= olderr;
-	FUNLOCK(f);
-	va_end(ap2);
-	return ret;
+  FLOCK(f);
+  olderr = f->flags & F_ERR;
+  if (f->mode < 1)
+    f->flags &= ~F_ERR;
+  if (!f->buf_size) {
+    saved_buf = f->buf;
+    f->wpos = f->wbase = f->buf = internal_buf;
+    f->buf_size = sizeof internal_buf;
+    f->wend = internal_buf + sizeof internal_buf;
+  }
+  ret = printf_core(f, fmt, &ap2, nl_arg, nl_type);
+  if (saved_buf) {
+    f->write(f, 0, 0);
+    if (!f->wpos)
+      ret = -1;
+    f->buf = saved_buf;
+    f->buf_size = 0;
+    f->wpos = f->wbase = f->wend = 0;
+  }
+  if (f->flags & F_ERR)
+    ret = -1;
+  f->flags |= olderr;
+  FUNLOCK(f);
+  va_end(ap2);
+  return ret;
 }
diff --git a/fusl/src/stdio/vfscanf.c b/fusl/src/stdio/vfscanf.c
index d4d2454..ccfc676 100644
--- a/fusl/src/stdio/vfscanf.c
+++ b/fusl/src/stdio/vfscanf.c
@@ -13,320 +13,374 @@
 #include "floatscan.h"
 
 #define SIZE_hh -2
-#define SIZE_h  -1
+#define SIZE_h -1
 #define SIZE_def 0
-#define SIZE_l   1
-#define SIZE_L   2
-#define SIZE_ll  3
+#define SIZE_l 1
+#define SIZE_L 2
+#define SIZE_ll 3
 
-static void store_int(void *dest, int size, unsigned long long i)
-{
-	if (!dest) return;
-	switch (size) {
-	case SIZE_hh:
-		*(char *)dest = i;
-		break;
-	case SIZE_h:
-		*(short *)dest = i;
-		break;
-	case SIZE_def:
-		*(int *)dest = i;
-		break;
-	case SIZE_l:
-		*(long *)dest = i;
-		break;
-	case SIZE_ll:
-		*(long long *)dest = i;
-		break;
-	}
+static void store_int(void* dest, int size, unsigned long long i) {
+  if (!dest)
+    return;
+  switch (size) {
+    case SIZE_hh:
+      *(char*)dest = i;
+      break;
+    case SIZE_h:
+      *(short*)dest = i;
+      break;
+    case SIZE_def:
+      *(int*)dest = i;
+      break;
+    case SIZE_l:
+      *(long*)dest = i;
+      break;
+    case SIZE_ll:
+      *(long long*)dest = i;
+      break;
+  }
 }
 
-static void *arg_n(va_list ap, unsigned int n)
-{
-	void *p;
-	unsigned int i;
-	va_list ap2;
-	va_copy(ap2, ap);
-	for (i=n; i>1; i--) va_arg(ap2, void *);
-	p = va_arg(ap2, void *);
-	va_end(ap2);
-	return p;
+static void* arg_n(va_list ap, unsigned int n) {
+  void* p;
+  unsigned int i;
+  va_list ap2;
+  va_copy(ap2, ap);
+  for (i = n; i > 1; i--)
+    va_arg(ap2, void*);
+  p = va_arg(ap2, void*);
+  va_end(ap2);
+  return p;
 }
 
-int vfscanf(FILE *restrict f, const char *restrict fmt, va_list ap)
-{
-	int width;
-	int size;
-	int alloc;
-	int base;
-	const unsigned char *p;
-	int c, t;
-	char *s;
-	wchar_t *wcs;
-	mbstate_t st;
-	void *dest=NULL;
-	int invert;
-	int matches=0;
-	unsigned long long x;
-	long double y;
-	off_t pos = 0;
-	unsigned char scanset[257];
-	size_t i, k;
-	wchar_t wc;
+int vfscanf(FILE* restrict f, const char* restrict fmt, va_list ap) {
+  int width;
+  int size;
+  int alloc;
+  int base;
+  const unsigned char* p;
+  int c, t;
+  char* s;
+  wchar_t* wcs;
+  mbstate_t st;
+  void* dest = NULL;
+  int invert;
+  int matches = 0;
+  unsigned long long x;
+  long double y;
+  off_t pos = 0;
+  unsigned char scanset[257];
+  size_t i, k;
+  wchar_t wc;
 
-	FLOCK(f);
+  FLOCK(f);
 
-	for (p=(const unsigned char *)fmt; *p; p++) {
+  for (p = (const unsigned char*)fmt; *p; p++) {
+    alloc = 0;
 
-		alloc = 0;
+    if (isspace(*p)) {
+      while (isspace(p[1]))
+        p++;
+      shlim(f, 0);
+      while (isspace(shgetc(f)))
+        ;
+      shunget(f);
+      pos += shcnt(f);
+      continue;
+    }
+    if (*p != '%' || p[1] == '%') {
+      p += *p == '%';
+      shlim(f, 0);
+      c = shgetc(f);
+      if (c != *p) {
+        shunget(f);
+        if (c < 0)
+          goto input_fail;
+        goto match_fail;
+      }
+      pos++;
+      continue;
+    }
 
-		if (isspace(*p)) {
-			while (isspace(p[1])) p++;
-			shlim(f, 0);
-			while (isspace(shgetc(f)));
-			shunget(f);
-			pos += shcnt(f);
-			continue;
-		}
-		if (*p != '%' || p[1] == '%') {
-			p += *p=='%';
-			shlim(f, 0);
-			c = shgetc(f);
-			if (c!=*p) {
-				shunget(f);
-				if (c<0) goto input_fail;
-				goto match_fail;
-			}
-			pos++;
-			continue;
-		}
+    p++;
+    if (*p == '*') {
+      dest = 0;
+      p++;
+    } else if (isdigit(*p) && p[1] == '$') {
+      dest = arg_n(ap, *p - '0');
+      p += 2;
+    } else {
+      dest = va_arg(ap, void*);
+    }
 
-		p++;
-		if (*p=='*') {
-			dest = 0; p++;
-		} else if (isdigit(*p) && p[1]=='$') {
-			dest = arg_n(ap, *p-'0'); p+=2;
-		} else {
-			dest = va_arg(ap, void *);
-		}
+    for (width = 0; isdigit(*p); p++) {
+      width = 10 * width + *p - '0';
+    }
 
-		for (width=0; isdigit(*p); p++) {
-			width = 10*width + *p - '0';
-		}
+    if (*p == 'm') {
+      wcs = 0;
+      s = 0;
+      alloc = !!dest;
+      p++;
+    } else {
+      alloc = 0;
+    }
 
-		if (*p=='m') {
-			wcs = 0;
-			s = 0;
-			alloc = !!dest;
-			p++;
-		} else {
-			alloc = 0;
-		}
+    size = SIZE_def;
+    switch (*p++) {
+      case 'h':
+        if (*p == 'h')
+          p++, size = SIZE_hh;
+        else
+          size = SIZE_h;
+        break;
+      case 'l':
+        if (*p == 'l')
+          p++, size = SIZE_ll;
+        else
+          size = SIZE_l;
+        break;
+      case 'j':
+        size = SIZE_ll;
+        break;
+      case 'z':
+      case 't':
+        size = SIZE_l;
+        break;
+      case 'L':
+        size = SIZE_L;
+        break;
+      case 'd':
+      case 'i':
+      case 'o':
+      case 'u':
+      case 'x':
+      case 'a':
+      case 'e':
+      case 'f':
+      case 'g':
+      case 'A':
+      case 'E':
+      case 'F':
+      case 'G':
+      case 'X':
+      case 's':
+      case 'c':
+      case '[':
+      case 'S':
+      case 'C':
+      case 'p':
+      case 'n':
+        p--;
+        break;
+      default:
+        goto fmt_fail;
+    }
 
-		size = SIZE_def;
-		switch (*p++) {
-		case 'h':
-			if (*p == 'h') p++, size = SIZE_hh;
-			else size = SIZE_h;
-			break;
-		case 'l':
-			if (*p == 'l') p++, size = SIZE_ll;
-			else size = SIZE_l;
-			break;
-		case 'j':
-			size = SIZE_ll;
-			break;
-		case 'z':
-		case 't':
-			size = SIZE_l;
-			break;
-		case 'L':
-			size = SIZE_L;
-			break;
-		case 'd': case 'i': case 'o': case 'u': case 'x':
-		case 'a': case 'e': case 'f': case 'g':
-		case 'A': case 'E': case 'F': case 'G': case 'X':
-		case 's': case 'c': case '[':
-		case 'S': case 'C':
-		case 'p': case 'n':
-			p--;
-			break;
-		default:
-			goto fmt_fail;
-		}
+    t = *p;
 
-		t = *p;
+    /* C or S */
+    if ((t & 0x2f) == 3) {
+      t |= 32;
+      size = SIZE_l;
+    }
 
-		/* C or S */
-		if ((t&0x2f) == 3) {
-			t |= 32;
-			size = SIZE_l;
-		}
+    switch (t) {
+      case 'c':
+        if (width < 1)
+          width = 1;
+      case '[':
+        break;
+      case 'n':
+        store_int(dest, size, pos);
+        /* do not increment match count, etc! */
+        continue;
+      default:
+        shlim(f, 0);
+        while (isspace(shgetc(f)))
+          ;
+        shunget(f);
+        pos += shcnt(f);
+    }
 
-		switch (t) {
-		case 'c':
-			if (width < 1) width = 1;
-		case '[':
-			break;
-		case 'n':
-			store_int(dest, size, pos);
-			/* do not increment match count, etc! */
-			continue;
-		default:
-			shlim(f, 0);
-			while (isspace(shgetc(f)));
-			shunget(f);
-			pos += shcnt(f);
-		}
+    shlim(f, width);
+    if (shgetc(f) < 0)
+      goto input_fail;
+    shunget(f);
 
-		shlim(f, width);
-		if (shgetc(f) < 0) goto input_fail;
-		shunget(f);
+    switch (t) {
+      case 's':
+      case 'c':
+      case '[':
+        if (t == 'c' || t == 's') {
+          memset(scanset, -1, sizeof scanset);
+          scanset[0] = 0;
+          if (t == 's') {
+            scanset[1 + '\t'] = 0;
+            scanset[1 + '\n'] = 0;
+            scanset[1 + '\v'] = 0;
+            scanset[1 + '\f'] = 0;
+            scanset[1 + '\r'] = 0;
+            scanset[1 + ' '] = 0;
+          }
+        } else {
+          if (*++p == '^')
+            p++, invert = 1;
+          else
+            invert = 0;
+          memset(scanset, invert, sizeof scanset);
+          scanset[0] = 0;
+          if (*p == '-')
+            p++, scanset[1 + '-'] = 1 - invert;
+          else if (*p == ']')
+            p++, scanset[1 + ']'] = 1 - invert;
+          for (; *p != ']'; p++) {
+            if (!*p)
+              goto fmt_fail;
+            if (*p == '-' && p[1] && p[1] != ']')
+              for (c = p++ [-1]; c < *p; c++)
+                scanset[1 + c] = 1 - invert;
+            scanset[1 + *p] = 1 - invert;
+          }
+        }
+        wcs = 0;
+        s = 0;
+        i = 0;
+        k = t == 'c' ? width + 1U : 31;
+        if (size == SIZE_l) {
+          if (alloc) {
+            wcs = malloc(k * sizeof(wchar_t));
+            if (!wcs)
+              goto alloc_fail;
+          } else {
+            wcs = dest;
+          }
+          st = (mbstate_t){0};
+          while (scanset[(c = shgetc(f)) + 1]) {
+            switch (mbrtowc(&wc, &(char){c}, 1, &st)) {
+              case -1:
+                goto input_fail;
+              case -2:
+                continue;
+            }
+            if (wcs)
+              wcs[i++] = wc;
+            if (alloc && i == k) {
+              k += k + 1;
+              wchar_t* tmp = realloc(wcs, k * sizeof(wchar_t));
+              if (!tmp)
+                goto alloc_fail;
+              wcs = tmp;
+            }
+          }
+          if (!mbsinit(&st))
+            goto input_fail;
+        } else if (alloc) {
+          s = malloc(k);
+          if (!s)
+            goto alloc_fail;
+          while (scanset[(c = shgetc(f)) + 1]) {
+            s[i++] = c;
+            if (i == k) {
+              k += k + 1;
+              char* tmp = realloc(s, k);
+              if (!tmp)
+                goto alloc_fail;
+              s = tmp;
+            }
+          }
+        } else if ((s = dest)) {
+          while (scanset[(c = shgetc(f)) + 1])
+            s[i++] = c;
+        } else {
+          while (scanset[(c = shgetc(f)) + 1])
+            ;
+        }
+        shunget(f);
+        if (!shcnt(f))
+          goto match_fail;
+        if (t == 'c' && shcnt(f) != width)
+          goto match_fail;
+        if (alloc) {
+          if (size == SIZE_l)
+            *(wchar_t**)dest = wcs;
+          else
+            *(char**)dest = s;
+        }
+        if (t != 'c') {
+          if (wcs)
+            wcs[i] = 0;
+          if (s)
+            s[i] = 0;
+        }
+        break;
+      case 'p':
+      case 'X':
+      case 'x':
+        base = 16;
+        goto int_common;
+      case 'o':
+        base = 8;
+        goto int_common;
+      case 'd':
+      case 'u':
+        base = 10;
+        goto int_common;
+      case 'i':
+        base = 0;
+      int_common:
+        x = __intscan(f, base, 0, ULLONG_MAX);
+        if (!shcnt(f))
+          goto match_fail;
+        if (t == 'p' && dest)
+          *(void**)dest = (void*)(uintptr_t)x;
+        else
+          store_int(dest, size, x);
+        break;
+      case 'a':
+      case 'A':
+      case 'e':
+      case 'E':
+      case 'f':
+      case 'F':
+      case 'g':
+      case 'G':
+        y = __floatscan(f, size, 0);
+        if (!shcnt(f))
+          goto match_fail;
+        if (dest)
+          switch (size) {
+            case SIZE_def:
+              *(float*)dest = y;
+              break;
+            case SIZE_l:
+              *(double*)dest = y;
+              break;
+            case SIZE_L:
+              *(long double*)dest = y;
+              break;
+          }
+        break;
+    }
 
-		switch (t) {
-		case 's':
-		case 'c':
-		case '[':
-			if (t == 'c' || t == 's') {
-				memset(scanset, -1, sizeof scanset);
-				scanset[0] = 0;
-				if (t == 's') {
-					scanset[1+'\t'] = 0;
-					scanset[1+'\n'] = 0;
-					scanset[1+'\v'] = 0;
-					scanset[1+'\f'] = 0;
-					scanset[1+'\r'] = 0;
-					scanset[1+' '] = 0;
-				}
-			} else {
-				if (*++p == '^') p++, invert = 1;
-				else invert = 0;
-				memset(scanset, invert, sizeof scanset);
-				scanset[0] = 0;
-				if (*p == '-') p++, scanset[1+'-'] = 1-invert;
-				else if (*p == ']') p++, scanset[1+']'] = 1-invert;
-				for (; *p != ']'; p++) {
-					if (!*p) goto fmt_fail;
-					if (*p=='-' && p[1] && p[1] != ']')
-						for (c=p++[-1]; c<*p; c++)
-							scanset[1+c] = 1-invert;
-					scanset[1+*p] = 1-invert;
-				}
-			}
-			wcs = 0;
-			s = 0;
-			i = 0;
-			k = t=='c' ? width+1U : 31;
-			if (size == SIZE_l) {
-				if (alloc) {
-					wcs = malloc(k*sizeof(wchar_t));
-					if (!wcs) goto alloc_fail;
-				} else {
-					wcs = dest;
-				}
-				st = (mbstate_t){0};
-				while (scanset[(c=shgetc(f))+1]) {
-					switch (mbrtowc(&wc, &(char){c}, 1, &st)) {
-					case -1:
-						goto input_fail;
-					case -2:
-						continue;
-					}
-					if (wcs) wcs[i++] = wc;
-					if (alloc && i==k) {
-						k+=k+1;
-						wchar_t *tmp = realloc(wcs, k*sizeof(wchar_t));
-						if (!tmp) goto alloc_fail;
-						wcs = tmp;
-					}
-				}
-				if (!mbsinit(&st)) goto input_fail;
-			} else if (alloc) {
-				s = malloc(k);
-				if (!s) goto alloc_fail;
-				while (scanset[(c=shgetc(f))+1]) {
-					s[i++] = c;
-					if (i==k) {
-						k+=k+1;
-						char *tmp = realloc(s, k);
-						if (!tmp) goto alloc_fail;
-						s = tmp;
-					}
-				}
-			} else if ((s = dest)) {
-				while (scanset[(c=shgetc(f))+1])
-					s[i++] = c;
-			} else {
-				while (scanset[(c=shgetc(f))+1]);
-			}
-			shunget(f);
-			if (!shcnt(f)) goto match_fail;
-			if (t == 'c' && shcnt(f) != width) goto match_fail;
-			if (alloc) {
-				if (size == SIZE_l) *(wchar_t **)dest = wcs;
-				else *(char **)dest = s;
-			}
-			if (t != 'c') {
-				if (wcs) wcs[i] = 0;
-				if (s) s[i] = 0;
-			}
-			break;
-		case 'p':
-		case 'X':
-		case 'x':
-			base = 16;
-			goto int_common;
-		case 'o':
-			base = 8;
-			goto int_common;
-		case 'd':
-		case 'u':
-			base = 10;
-			goto int_common;
-		case 'i':
-			base = 0;
-		int_common:
-			x = __intscan(f, base, 0, ULLONG_MAX);
-			if (!shcnt(f)) goto match_fail;
-			if (t=='p' && dest) *(void **)dest = (void *)(uintptr_t)x;
-			else store_int(dest, size, x);
-			break;
-		case 'a': case 'A':
-		case 'e': case 'E':
-		case 'f': case 'F':
-		case 'g': case 'G':
-			y = __floatscan(f, size, 0);
-			if (!shcnt(f)) goto match_fail;
-			if (dest) switch (size) {
-			case SIZE_def:
-				*(float *)dest = y;
-				break;
-			case SIZE_l:
-				*(double *)dest = y;
-				break;
-			case SIZE_L:
-				*(long double *)dest = y;
-				break;
-			}
-			break;
-		}
-
-		pos += shcnt(f);
-		if (dest) matches++;
-	}
-	if (0) {
-fmt_fail:
-alloc_fail:
-input_fail:
-		if (!matches) matches--;
-match_fail:
-		if (alloc) {
-			free(s);
-			free(wcs);
-		}
-	}
-	FUNLOCK(f);
-	return matches;
+    pos += shcnt(f);
+    if (dest)
+      matches++;
+  }
+  if (0) {
+  fmt_fail:
+  alloc_fail:
+  input_fail:
+    if (!matches)
+      matches--;
+  match_fail:
+    if (alloc) {
+      free(s);
+      free(wcs);
+    }
+  }
+  FUNLOCK(f);
+  return matches;
 }
 
-weak_alias(vfscanf,__isoc99_vfscanf);
+weak_alias(vfscanf, __isoc99_vfscanf);
diff --git a/fusl/src/stdio/vfwprintf.c b/fusl/src/stdio/vfwprintf.c
index 53767a6..f70e11d 100644
--- a/fusl/src/stdio/vfwprintf.c
+++ b/fusl/src/stdio/vfwprintf.c
@@ -10,14 +10,14 @@
 /* Convenient bit representation for modifier flags, which all fall
  * within 31 codepoints of the space character. */
 
-#define ALT_FORM   (1U<<('#'-' '))
-#define ZERO_PAD   (1U<<('0'-' '))
-#define LEFT_ADJ   (1U<<('-'-' '))
-#define PAD_POS    (1U<<(' '-' '))
-#define MARK_POS   (1U<<('+'-' '))
-#define GROUPED    (1U<<('\''-' '))
+#define ALT_FORM (1U << ('#' - ' '))
+#define ZERO_PAD (1U << ('0' - ' '))
+#define LEFT_ADJ (1U << ('-' - ' '))
+#define PAD_POS (1U << (' ' - ' '))
+#define MARK_POS (1U << ('+' - ' '))
+#define GROUPED (1U << ('\'' - ' '))
 
-#define FLAGMASK (ALT_FORM|ZERO_PAD|LEFT_ADJ|PAD_POS|MARK_POS|GROUPED)
+#define FLAGMASK (ALT_FORM | ZERO_PAD | LEFT_ADJ | PAD_POS | MARK_POS | GROUPED)
 
 #if UINT_MAX == ULONG_MAX
 #define LONG_IS_INT
@@ -31,19 +31,37 @@
  * Result is 0 on failure, or an argument type to pop on success. */
 
 enum {
-	BARE, LPRE, LLPRE, HPRE, HHPRE, BIGLPRE,
-	ZTPRE, JPRE,
-	STOP,
-	PTR, INT, UINT, ULLONG,
+  BARE,
+  LPRE,
+  LLPRE,
+  HPRE,
+  HHPRE,
+  BIGLPRE,
+  ZTPRE,
+  JPRE,
+  STOP,
+  PTR,
+  INT,
+  UINT,
+  ULLONG,
 #ifndef LONG_IS_INT
-	LONG, ULONG,
+  LONG,
+  ULONG,
 #else
 #define LONG INT
 #define ULONG UINT
 #endif
-	SHORT, USHORT, CHAR, UCHAR,
+  SHORT,
+  USHORT,
+  CHAR,
+  UCHAR,
 #ifdef ODD_TYPES
-	LLONG, SIZET, IMAX, UMAX, PDIFF, UIPTR,
+  LLONG,
+  SIZET,
+  IMAX,
+  UMAX,
+  PDIFF,
+  UIPTR,
 #else
 #define LLONG ULLONG
 #define SIZET ULONG
@@ -52,320 +70,412 @@
 #define PDIFF LONG
 #define UIPTR ULONG
 #endif
-	DBL, LDBL,
-	NOARG,
-	MAXSTATE
+  DBL,
+  LDBL,
+  NOARG,
+  MAXSTATE
 };
 
-#define S(x) [(x)-'A']
+#define S(x) [(x) - 'A']
 
-static const unsigned char states[]['z'-'A'+1] = {
-	{ /* 0: bare types */
-		S('d') = INT, S('i') = INT,
-		S('o') = UINT, S('u') = UINT, S('x') = UINT, S('X') = UINT,
-		S('e') = DBL, S('f') = DBL, S('g') = DBL, S('a') = DBL,
-		S('E') = DBL, S('F') = DBL, S('G') = DBL, S('A') = DBL,
-		S('c') = CHAR, S('C') = INT,
-		S('s') = PTR, S('S') = PTR, S('p') = UIPTR, S('n') = PTR,
-		S('m') = NOARG,
-		S('l') = LPRE, S('h') = HPRE, S('L') = BIGLPRE,
-		S('z') = ZTPRE, S('j') = JPRE, S('t') = ZTPRE,
-	}, { /* 1: l-prefixed */
-		S('d') = LONG, S('i') = LONG,
-		S('o') = ULONG, S('u') = ULONG, S('x') = ULONG, S('X') = ULONG,
-		S('c') = INT, S('s') = PTR, S('n') = PTR,
-		S('l') = LLPRE,
-	}, { /* 2: ll-prefixed */
-		S('d') = LLONG, S('i') = LLONG,
-		S('o') = ULLONG, S('u') = ULLONG,
-		S('x') = ULLONG, S('X') = ULLONG,
-		S('n') = PTR,
-	}, { /* 3: h-prefixed */
-		S('d') = SHORT, S('i') = SHORT,
-		S('o') = USHORT, S('u') = USHORT,
-		S('x') = USHORT, S('X') = USHORT,
-		S('n') = PTR,
-		S('h') = HHPRE,
-	}, { /* 4: hh-prefixed */
-		S('d') = CHAR, S('i') = CHAR,
-		S('o') = UCHAR, S('u') = UCHAR,
-		S('x') = UCHAR, S('X') = UCHAR,
-		S('n') = PTR,
-	}, { /* 5: L-prefixed */
-		S('e') = LDBL, S('f') = LDBL, S('g') = LDBL, S('a') = LDBL,
-		S('E') = LDBL, S('F') = LDBL, S('G') = LDBL, S('A') = LDBL,
-		S('n') = PTR,
-	}, { /* 6: z- or t-prefixed (assumed to be same size) */
-		S('d') = PDIFF, S('i') = PDIFF,
-		S('o') = SIZET, S('u') = SIZET,
-		S('x') = SIZET, S('X') = SIZET,
-		S('n') = PTR,
-	}, { /* 7: j-prefixed */
-		S('d') = IMAX, S('i') = IMAX,
-		S('o') = UMAX, S('u') = UMAX,
-		S('x') = UMAX, S('X') = UMAX,
-		S('n') = PTR,
-	}
+static const unsigned char states[]['z' - 'A' + 1] = {
+    {
+        /* 0: bare types */
+        S('d') = INT,   S('i') = INT,  S('o') = UINT,  S('u') = UINT,
+        S('x') = UINT,  S('X') = UINT, S('e') = DBL,   S('f') = DBL,
+        S('g') = DBL,   S('a') = DBL,  S('E') = DBL,   S('F') = DBL,
+        S('G') = DBL,   S('A') = DBL,  S('c') = CHAR,  S('C') = INT,
+        S('s') = PTR,   S('S') = PTR,  S('p') = UIPTR, S('n') = PTR,
+        S('m') = NOARG, S('l') = LPRE, S('h') = HPRE,  S('L') = BIGLPRE,
+        S('z') = ZTPRE, S('j') = JPRE, S('t') = ZTPRE,
+    },
+    {
+        /* 1: l-prefixed */
+        S('d') = LONG, S('i') = LONG, S('o') = ULONG, S('u') = ULONG,
+        S('x') = ULONG, S('X') = ULONG, S('c') = INT, S('s') = PTR,
+        S('n') = PTR, S('l') = LLPRE,
+    },
+    {
+        /* 2: ll-prefixed */
+        S('d') = LLONG, S('i') = LLONG, S('o') = ULLONG, S('u') = ULLONG,
+        S('x') = ULLONG, S('X') = ULLONG, S('n') = PTR,
+    },
+    {
+        /* 3: h-prefixed */
+        S('d') = SHORT, S('i') = SHORT, S('o') = USHORT, S('u') = USHORT,
+        S('x') = USHORT, S('X') = USHORT, S('n') = PTR, S('h') = HHPRE,
+    },
+    {
+        /* 4: hh-prefixed */
+        S('d') = CHAR, S('i') = CHAR, S('o') = UCHAR, S('u') = UCHAR,
+        S('x') = UCHAR, S('X') = UCHAR, S('n') = PTR,
+    },
+    {
+        /* 5: L-prefixed */
+        S('e') = LDBL, S('f') = LDBL, S('g') = LDBL, S('a') = LDBL,
+        S('E') = LDBL, S('F') = LDBL, S('G') = LDBL, S('A') = LDBL,
+        S('n') = PTR,
+    },
+    {
+        /* 6: z- or t-prefixed (assumed to be same size) */
+        S('d') = PDIFF, S('i') = PDIFF, S('o') = SIZET, S('u') = SIZET,
+        S('x') = SIZET, S('X') = SIZET, S('n') = PTR,
+    },
+    {
+        /* 7: j-prefixed */
+        S('d') = IMAX, S('i') = IMAX, S('o') = UMAX, S('u') = UMAX,
+        S('x') = UMAX, S('X') = UMAX, S('n') = PTR,
+    }};
+
+#define OOB(x) ((unsigned)(x) - 'A' > 'z' - 'A')
+
+union arg {
+  uintmax_t i;
+  long double f;
+  void* p;
 };
 
-#define OOB(x) ((unsigned)(x)-'A' > 'z'-'A')
-
-union arg
-{
-	uintmax_t i;
-	long double f;
-	void *p;
-};
-
-static void pop_arg(union arg *arg, int type, va_list *ap)
-{
-	/* Give the compiler a hint for optimizing the switch. */
-	if ((unsigned)type > MAXSTATE) return;
-	switch (type) {
-	       case PTR:	arg->p = va_arg(*ap, void *);
-	break; case INT:	arg->i = va_arg(*ap, int);
-	break; case UINT:	arg->i = va_arg(*ap, unsigned int);
+static void pop_arg(union arg* arg, int type, va_list* ap) {
+  /* Give the compiler a hint for optimizing the switch. */
+  if ((unsigned)type > MAXSTATE)
+    return;
+  switch (type) {
+    case PTR:
+      arg->p = va_arg(*ap, void*);
+      break;
+    case INT:
+      arg->i = va_arg(*ap, int);
+      break;
+    case UINT:
+      arg->i = va_arg(*ap, unsigned int);
 #ifndef LONG_IS_INT
-	break; case LONG:	arg->i = va_arg(*ap, long);
-	break; case ULONG:	arg->i = va_arg(*ap, unsigned long);
+      break;
+    case LONG:
+      arg->i = va_arg(*ap, long);
+      break;
+    case ULONG:
+      arg->i = va_arg(*ap, unsigned long);
 #endif
-	break; case ULLONG:	arg->i = va_arg(*ap, unsigned long long);
-	break; case SHORT:	arg->i = (short)va_arg(*ap, int);
-	break; case USHORT:	arg->i = (unsigned short)va_arg(*ap, int);
-	break; case CHAR:	arg->i = (signed char)va_arg(*ap, int);
-	break; case UCHAR:	arg->i = (unsigned char)va_arg(*ap, int);
+      break;
+    case ULLONG:
+      arg->i = va_arg(*ap, unsigned long long);
+      break;
+    case SHORT:
+      arg->i = (short)va_arg(*ap, int);
+      break;
+    case USHORT:
+      arg->i = (unsigned short)va_arg(*ap, int);
+      break;
+    case CHAR:
+      arg->i = (signed char)va_arg(*ap, int);
+      break;
+    case UCHAR:
+      arg->i = (unsigned char)va_arg(*ap, int);
 #ifdef ODD_TYPES
-	break; case LLONG:	arg->i = va_arg(*ap, long long);
-	break; case SIZET:	arg->i = va_arg(*ap, size_t);
-	break; case IMAX:	arg->i = va_arg(*ap, intmax_t);
-	break; case UMAX:	arg->i = va_arg(*ap, uintmax_t);
-	break; case PDIFF:	arg->i = va_arg(*ap, ptrdiff_t);
-	break; case UIPTR:	arg->i = (uintptr_t)va_arg(*ap, void *);
+      break;
+    case LLONG:
+      arg->i = va_arg(*ap, long long);
+      break;
+    case SIZET:
+      arg->i = va_arg(*ap, size_t);
+      break;
+    case IMAX:
+      arg->i = va_arg(*ap, intmax_t);
+      break;
+    case UMAX:
+      arg->i = va_arg(*ap, uintmax_t);
+      break;
+    case PDIFF:
+      arg->i = va_arg(*ap, ptrdiff_t);
+      break;
+    case UIPTR:
+      arg->i = (uintptr_t)va_arg(*ap, void*);
 #endif
-	break; case DBL:	arg->f = va_arg(*ap, double);
-	break; case LDBL:	arg->f = va_arg(*ap, long double);
-	}
+      break;
+    case DBL:
+      arg->f = va_arg(*ap, double);
+      break;
+    case LDBL:
+      arg->f = va_arg(*ap, long double);
+  }
 }
 
-static void out(FILE *f, const wchar_t *s, size_t l)
-{
-	while (l-- && !(f->flags & F_ERR)) fputwc(*s++, f);
+static void out(FILE* f, const wchar_t* s, size_t l) {
+  while (l-- && !(f->flags & F_ERR))
+    fputwc(*s++, f);
 }
 
-static int getint(wchar_t **s) {
-	int i;
-	for (i=0; iswdigit(**s); (*s)++)
-		i = 10*i + (**s-'0');
-	return i;
+static int getint(wchar_t** s) {
+  int i;
+  for (i = 0; iswdigit(**s); (*s)++)
+    i = 10 * i + (**s - '0');
+  return i;
 }
 
-static const char sizeprefix['y'-'a'] = {
-['a'-'a']='L', ['e'-'a']='L', ['f'-'a']='L', ['g'-'a']='L',
-['d'-'a']='j', ['i'-'a']='j', ['o'-'a']='j', ['u'-'a']='j', ['x'-'a']='j',
-['p'-'a']='j'
-};
+static const char sizeprefix['y' - 'a'] =
+    {['a' - 'a'] = 'L', ['e' - 'a'] = 'L', ['f' - 'a'] = 'L', ['g' - 'a'] = 'L',
+     ['d' - 'a'] = 'j', ['i' - 'a'] = 'j', ['o' - 'a'] = 'j', ['u' - 'a'] = 'j',
+     ['x' - 'a'] = 'j', ['p' - 'a'] = 'j'};
 
-static int wprintf_core(FILE *f, const wchar_t *fmt, va_list *ap, union arg *nl_arg, int *nl_type)
-{
-	wchar_t *a, *z, *s=(wchar_t *)fmt;
-	unsigned l10n=0, litpct, fl;
-	int w, p;
-	union arg arg;
-	int argpos;
-	unsigned st, ps;
-	int cnt=0, l=0;
-	int i;
-	int t;
-	char *bs;
-	char charfmt[16];
-	wchar_t wc;
+static int wprintf_core(FILE* f,
+                        const wchar_t* fmt,
+                        va_list* ap,
+                        union arg* nl_arg,
+                        int* nl_type) {
+  wchar_t *a, *z, *s = (wchar_t *)fmt;
+  unsigned l10n = 0, litpct, fl;
+  int w, p;
+  union arg arg;
+  int argpos;
+  unsigned st, ps;
+  int cnt = 0, l = 0;
+  int i;
+  int t;
+  char* bs;
+  char charfmt[16];
+  wchar_t wc;
 
-	for (;;) {
-		/* Update output count, end loop when fmt is exhausted */
-		if (cnt >= 0) {
-			if (l > INT_MAX - cnt) {
-				if (!ferror(f)) errno = EOVERFLOW;
-				cnt = -1;
-			} else cnt += l;
-		}
-		if (!*s) break;
+  for (;;) {
+    /* Update output count, end loop when fmt is exhausted */
+    if (cnt >= 0) {
+      if (l > INT_MAX - cnt) {
+        if (!ferror(f))
+          errno = EOVERFLOW;
+        cnt = -1;
+      } else
+        cnt += l;
+    }
+    if (!*s)
+      break;
 
-		/* Handle literal text and %% format specifiers */
-		for (a=s; *s && *s!='%'; s++);
-		litpct = wcsspn(s, L"%")/2; /* Optimize %%%% runs */
-		z = s+litpct;
-		s += 2*litpct;
-		l = z-a;
-		if (f) out(f, a, l);
-		if (l) continue;
+    /* Handle literal text and %% format specifiers */
+    for (a = s; *s && *s != '%'; s++)
+      ;
+    litpct = wcsspn(s, L"%") / 2; /* Optimize %%%% runs */
+    z = s + litpct;
+    s += 2 * litpct;
+    l = z - a;
+    if (f)
+      out(f, a, l);
+    if (l)
+      continue;
 
-		if (iswdigit(s[1]) && s[2]=='$') {
-			l10n=1;
-			argpos = s[1]-'0';
-			s+=3;
-		} else {
-			argpos = -1;
-			s++;
-		}
+    if (iswdigit(s[1]) && s[2] == '$') {
+      l10n = 1;
+      argpos = s[1] - '0';
+      s += 3;
+    } else {
+      argpos = -1;
+      s++;
+    }
 
-		/* Read modifier flags */
-		for (fl=0; (unsigned)*s-' '<32 && (FLAGMASK&(1U<<(*s-' '))); s++)
-			fl |= 1U<<(*s-' ');
+    /* Read modifier flags */
+    for (fl = 0; (unsigned)*s - ' ' < 32 && (FLAGMASK & (1U << (*s - ' ')));
+         s++)
+      fl |= 1U << (*s - ' ');
 
-		/* Read field width */
-		if (*s=='*') {
-			if (iswdigit(s[1]) && s[2]=='$') {
-				l10n=1;
-				nl_type[s[1]-'0'] = INT;
-				w = nl_arg[s[1]-'0'].i;
-				s+=3;
-			} else if (!l10n) {
-				w = f ? va_arg(*ap, int) : 0;
-				s++;
-			} else return -1;
-			if (w<0) fl|=LEFT_ADJ, w=-w;
-		} else if ((w=getint(&s))<0) return -1;
+    /* Read field width */
+    if (*s == '*') {
+      if (iswdigit(s[1]) && s[2] == '$') {
+        l10n = 1;
+        nl_type[s[1] - '0'] = INT;
+        w = nl_arg[s[1] - '0'].i;
+        s += 3;
+      } else if (!l10n) {
+        w = f ? va_arg(*ap, int) : 0;
+        s++;
+      } else
+        return -1;
+      if (w < 0)
+        fl |= LEFT_ADJ, w = -w;
+    } else if ((w = getint(&s)) < 0)
+      return -1;
 
-		/* Read precision */
-		if (*s=='.' && s[1]=='*') {
-			if (isdigit(s[2]) && s[3]=='$') {
-				nl_type[s[2]-'0'] = INT;
-				p = nl_arg[s[2]-'0'].i;
-				s+=4;
-			} else if (!l10n) {
-				p = f ? va_arg(*ap, int) : 0;
-				s+=2;
-			} else return -1;
-		} else if (*s=='.') {
-			s++;
-			p = getint(&s);
-		} else p = -1;
+    /* Read precision */
+    if (*s == '.' && s[1] == '*') {
+      if (isdigit(s[2]) && s[3] == '$') {
+        nl_type[s[2] - '0'] = INT;
+        p = nl_arg[s[2] - '0'].i;
+        s += 4;
+      } else if (!l10n) {
+        p = f ? va_arg(*ap, int) : 0;
+        s += 2;
+      } else
+        return -1;
+    } else if (*s == '.') {
+      s++;
+      p = getint(&s);
+    } else
+      p = -1;
 
-		/* Format specifier state machine */
-		st=0;
-		do {
-			if (OOB(*s)) return -1;
-			ps=st;
-			st=states[st]S(*s++);
-		} while (st-1<STOP);
-		if (!st) return -1;
+    /* Format specifier state machine */
+    st = 0;
+    do {
+      if (OOB(*s))
+        return -1;
+      ps = st;
+      st = states[st] S(*s++);
+    } while (st - 1 < STOP);
+    if (!st)
+      return -1;
 
-		/* Check validity of argument type (nl/normal) */
-		if (st==NOARG) {
-			if (argpos>=0) return -1;
-		} else {
-			if (argpos>=0) nl_type[argpos]=st, arg=nl_arg[argpos];
-			else if (f) pop_arg(&arg, st, ap);
-			else return 0;
-		}
+    /* Check validity of argument type (nl/normal) */
+    if (st == NOARG) {
+      if (argpos >= 0)
+        return -1;
+    } else {
+      if (argpos >= 0)
+        nl_type[argpos] = st, arg = nl_arg[argpos];
+      else if (f)
+        pop_arg(&arg, st, ap);
+      else
+        return 0;
+    }
 
-		if (!f) continue;
-		t = s[-1];
-		if (ps && (t&15)==3) t&=~32;
+    if (!f)
+      continue;
+    t = s[-1];
+    if (ps && (t & 15) == 3)
+      t &= ~32;
 
-		switch (t) {
-		case 'n':
-			switch(ps) {
-			case BARE: *(int *)arg.p = cnt; break;
-			case LPRE: *(long *)arg.p = cnt; break;
-			case LLPRE: *(long long *)arg.p = cnt; break;
-			case HPRE: *(unsigned short *)arg.p = cnt; break;
-			case HHPRE: *(unsigned char *)arg.p = cnt; break;
-			case ZTPRE: *(size_t *)arg.p = cnt; break;
-			case JPRE: *(uintmax_t *)arg.p = cnt; break;
-			}
-			continue;
-		case 'c':
-			fputwc(btowc(arg.i), f);
-			l = 1;
-			continue;
-		case 'C':
-			fputwc(arg.i, f);
-			l = 1;
-			continue;
-		case 'S':
-			a = arg.p;
-			z = wmemchr(a, 0, p);
-			if (z) p=z-a;
-			if (w<p) w=p;
-			if (!(fl&LEFT_ADJ)) fprintf(f, "%.*s", w-p, "");
-			out(f, a, p);
-			if ((fl&LEFT_ADJ)) fprintf(f, "%.*s", w-p, "");
-			l=w;
-			continue;
-		case 'm':
-			arg.p = strerror(errno);
-		case 's':
-			if (!arg.p) arg.p = "(null)";
-			bs = arg.p;
-			if (p<0) p = INT_MAX;
-			for (i=l=0; l<p && (i=mbtowc(&wc, bs, MB_LEN_MAX))>0; bs+=i, l++);
-			if (i<0) return -1;
-			p=l;
-			if (w<p) w=p;
-			if (!(fl&LEFT_ADJ)) fprintf(f, "%.*s", w-p, "");
-			bs = arg.p;
-			while (l--) {
-				i=mbtowc(&wc, bs, MB_LEN_MAX);
-				bs+=i;
-				fputwc(wc, f);
-			}
-			if ((fl&LEFT_ADJ)) fprintf(f, "%.*s", w-p, "");
-			l=w;
-			continue;
-		}
+    switch (t) {
+      case 'n':
+        switch (ps) {
+          case BARE:
+            *(int*)arg.p = cnt;
+            break;
+          case LPRE:
+            *(long*)arg.p = cnt;
+            break;
+          case LLPRE:
+            *(long long*)arg.p = cnt;
+            break;
+          case HPRE:
+            *(unsigned short*)arg.p = cnt;
+            break;
+          case HHPRE:
+            *(unsigned char*)arg.p = cnt;
+            break;
+          case ZTPRE:
+            *(size_t*)arg.p = cnt;
+            break;
+          case JPRE:
+            *(uintmax_t*)arg.p = cnt;
+            break;
+        }
+        continue;
+      case 'c':
+        fputwc(btowc(arg.i), f);
+        l = 1;
+        continue;
+      case 'C':
+        fputwc(arg.i, f);
+        l = 1;
+        continue;
+      case 'S':
+        a = arg.p;
+        z = wmemchr(a, 0, p);
+        if (z)
+          p = z - a;
+        if (w < p)
+          w = p;
+        if (!(fl & LEFT_ADJ))
+          fprintf(f, "%.*s", w - p, "");
+        out(f, a, p);
+        if ((fl & LEFT_ADJ))
+          fprintf(f, "%.*s", w - p, "");
+        l = w;
+        continue;
+      case 'm':
+        arg.p = strerror(errno);
+      case 's':
+        if (!arg.p)
+          arg.p = "(null)";
+        bs = arg.p;
+        if (p < 0)
+          p = INT_MAX;
+        for (i = l = 0; l < p && (i = mbtowc(&wc, bs, MB_LEN_MAX)) > 0;
+             bs += i, l++)
+          ;
+        if (i < 0)
+          return -1;
+        p = l;
+        if (w < p)
+          w = p;
+        if (!(fl & LEFT_ADJ))
+          fprintf(f, "%.*s", w - p, "");
+        bs = arg.p;
+        while (l--) {
+          i = mbtowc(&wc, bs, MB_LEN_MAX);
+          bs += i;
+          fputwc(wc, f);
+        }
+        if ((fl & LEFT_ADJ))
+          fprintf(f, "%.*s", w - p, "");
+        l = w;
+        continue;
+    }
 
-		snprintf(charfmt, sizeof charfmt, "%%%s%s%s%s%s*.*%c%c",
-			(fl & ALT_FORM) ? "#" : "",
-			(fl & MARK_POS) ? "+" : "",
-			(fl & LEFT_ADJ) ? "-" : "",
-			(fl & PAD_POS) ? " " : "",
-			(fl & ZERO_PAD) ? "0" : "",
-			sizeprefix[(t|32)-'a'], t);
+    snprintf(charfmt, sizeof charfmt, "%%%s%s%s%s%s*.*%c%c",
+             (fl & ALT_FORM) ? "#" : "", (fl & MARK_POS) ? "+" : "",
+             (fl & LEFT_ADJ) ? "-" : "", (fl & PAD_POS) ? " " : "",
+             (fl & ZERO_PAD) ? "0" : "", sizeprefix[(t | 32) - 'a'], t);
 
-		switch (t|32) {
-		case 'a': case 'e': case 'f': case 'g':
-			l = fprintf(f, charfmt, w, p, arg.f);
-			break;
-		case 'd': case 'i': case 'o': case 'u': case 'x': case 'p':
-			l = fprintf(f, charfmt, w, p, arg.i);
-			break;
-		}
-	}
+    switch (t | 32) {
+      case 'a':
+      case 'e':
+      case 'f':
+      case 'g':
+        l = fprintf(f, charfmt, w, p, arg.f);
+        break;
+      case 'd':
+      case 'i':
+      case 'o':
+      case 'u':
+      case 'x':
+      case 'p':
+        l = fprintf(f, charfmt, w, p, arg.i);
+        break;
+    }
+  }
 
-	if (f) return cnt;
-	if (!l10n) return 0;
+  if (f)
+    return cnt;
+  if (!l10n)
+    return 0;
 
-	for (i=1; i<=NL_ARGMAX && nl_type[i]; i++)
-		pop_arg(nl_arg+i, nl_type[i], ap);
-	for (; i<=NL_ARGMAX && !nl_type[i]; i++);
-	if (i<=NL_ARGMAX) return -1;
-	return 1;
+  for (i = 1; i <= NL_ARGMAX && nl_type[i]; i++)
+    pop_arg(nl_arg + i, nl_type[i], ap);
+  for (; i <= NL_ARGMAX && !nl_type[i]; i++)
+    ;
+  if (i <= NL_ARGMAX)
+    return -1;
+  return 1;
 }
 
-int vfwprintf(FILE *restrict f, const wchar_t *restrict fmt, va_list ap)
-{
-	va_list ap2;
-	int nl_type[NL_ARGMAX] = {0};
-	union arg nl_arg[NL_ARGMAX];
-	int olderr;
-	int ret;
+int vfwprintf(FILE* restrict f, const wchar_t* restrict fmt, va_list ap) {
+  va_list ap2;
+  int nl_type[NL_ARGMAX] = {0};
+  union arg nl_arg[NL_ARGMAX];
+  int olderr;
+  int ret;
 
-	/* the copy allows passing va_list* even if va_list is an array */
-	va_copy(ap2, ap);
-	if (wprintf_core(0, fmt, &ap2, nl_arg, nl_type) < 0) {
-		va_end(ap2);
-		return -1;
-	}
+  /* the copy allows passing va_list* even if va_list is an array */
+  va_copy(ap2, ap);
+  if (wprintf_core(0, fmt, &ap2, nl_arg, nl_type) < 0) {
+    va_end(ap2);
+    return -1;
+  }
 
-	FLOCK(f);
-	fwide(f, 1);
-	olderr = f->flags & F_ERR;
-	f->flags &= ~F_ERR;
-	ret = wprintf_core(f, fmt, &ap2, nl_arg, nl_type);
-	if (f->flags & F_ERR) ret = -1;
-	f->flags |= olderr;
-	FUNLOCK(f);
-	va_end(ap2);
-	return ret;
+  FLOCK(f);
+  fwide(f, 1);
+  olderr = f->flags & F_ERR;
+  f->flags &= ~F_ERR;
+  ret = wprintf_core(f, fmt, &ap2, nl_arg, nl_type);
+  if (f->flags & F_ERR)
+    ret = -1;
+  f->flags |= olderr;
+  FUNLOCK(f);
+  va_end(ap2);
+  return ret;
 }
diff --git a/fusl/src/stdio/vfwscanf.c b/fusl/src/stdio/vfwscanf.c
index 223aad4..014d9db 100644
--- a/fusl/src/stdio/vfwscanf.c
+++ b/fusl/src/stdio/vfwscanf.c
@@ -14,315 +14,372 @@
 #include "libc.h"
 
 #define SIZE_hh -2
-#define SIZE_h  -1
+#define SIZE_h -1
 #define SIZE_def 0
-#define SIZE_l   1
-#define SIZE_L   2
-#define SIZE_ll  3
+#define SIZE_l 1
+#define SIZE_L 2
+#define SIZE_ll 3
 
-static void store_int(void *dest, int size, unsigned long long i)
-{
-	if (!dest) return;
-	switch (size) {
-	case SIZE_hh:
-		*(char *)dest = i;
-		break;
-	case SIZE_h:
-		*(short *)dest = i;
-		break;
-	case SIZE_def:
-		*(int *)dest = i;
-		break;
-	case SIZE_l:
-		*(long *)dest = i;
-		break;
-	case SIZE_ll:
-		*(long long *)dest = i;
-		break;
-	}
+static void store_int(void* dest, int size, unsigned long long i) {
+  if (!dest)
+    return;
+  switch (size) {
+    case SIZE_hh:
+      *(char*)dest = i;
+      break;
+    case SIZE_h:
+      *(short*)dest = i;
+      break;
+    case SIZE_def:
+      *(int*)dest = i;
+      break;
+    case SIZE_l:
+      *(long*)dest = i;
+      break;
+    case SIZE_ll:
+      *(long long*)dest = i;
+      break;
+  }
 }
 
-static void *arg_n(va_list ap, unsigned int n)
-{
-	void *p;
-	unsigned int i;
-	va_list ap2;
-	va_copy(ap2, ap);
-	for (i=n; i>1; i--) va_arg(ap2, void *);
-	p = va_arg(ap2, void *);
-	va_end(ap2);
-	return p;
+static void* arg_n(va_list ap, unsigned int n) {
+  void* p;
+  unsigned int i;
+  va_list ap2;
+  va_copy(ap2, ap);
+  for (i = n; i > 1; i--)
+    va_arg(ap2, void*);
+  p = va_arg(ap2, void*);
+  va_end(ap2);
+  return p;
 }
 
-static int in_set(const wchar_t *set, int c)
-{
-	int j;
-	const wchar_t *p = set;
-	if (*p == '-') {
-		if (c=='-') return 1;
-		p++;
-	} else if (*p == ']') {
-		if (c==']') return 1;
-		p++;
-	}
-	for (; *p && *p != ']'; p++) {
-		if (*p=='-' && p[1] && p[1] != ']')
-			for (j=p++[-1]; j<*p; j++)
-				if (c==j) return 1;
-		if (c==*p) return 1;
-	}
-	return 0;
+static int in_set(const wchar_t* set, int c) {
+  int j;
+  const wchar_t* p = set;
+  if (*p == '-') {
+    if (c == '-')
+      return 1;
+    p++;
+  } else if (*p == ']') {
+    if (c == ']')
+      return 1;
+    p++;
+  }
+  for (; *p && *p != ']'; p++) {
+    if (*p == '-' && p[1] && p[1] != ']')
+      for (j = p++ [-1]; j < *p; j++)
+        if (c == j)
+          return 1;
+    if (c == *p)
+      return 1;
+  }
+  return 0;
 }
 
 #if 1
 #undef getwc
 #define getwc(f) \
-	((f)->rpos < (f)->rend && *(f)->rpos < 128 ? *(f)->rpos++ : (getwc)(f))
+  ((f)->rpos < (f)->rend && *(f)->rpos < 128 ? *(f)->rpos++ : (getwc)(f))
 
 #undef ungetwc
-#define ungetwc(c,f) \
-	((f)->rend && (c)<128U ? *--(f)->rpos : ungetwc((c),(f)))
+#define ungetwc(c, f) \
+  ((f)->rend && (c) < 128U ? *--(f)->rpos : ungetwc((c), (f)))
 #endif
 
-int vfwscanf(FILE *restrict f, const wchar_t *restrict fmt, va_list ap)
-{
-	int width;
-	int size;
-	int alloc;
-	const wchar_t *p;
-	int c, t;
-	char *s;
-	wchar_t *wcs;
-	void *dest=NULL;
-	int invert;
-	int matches=0;
-	off_t pos = 0, cnt;
-	static const char size_pfx[][3] = { "hh", "h", "", "l", "L", "ll" };
-	char tmp[3*sizeof(int)+10];
-	const wchar_t *set;
-	size_t i, k;
+int vfwscanf(FILE* restrict f, const wchar_t* restrict fmt, va_list ap) {
+  int width;
+  int size;
+  int alloc;
+  const wchar_t* p;
+  int c, t;
+  char* s;
+  wchar_t* wcs;
+  void* dest = NULL;
+  int invert;
+  int matches = 0;
+  off_t pos = 0, cnt;
+  static const char size_pfx[][3] = {"hh", "h", "", "l", "L", "ll"};
+  char tmp[3 * sizeof(int) + 10];
+  const wchar_t* set;
+  size_t i, k;
 
-	FLOCK(f);
+  FLOCK(f);
 
-	fwide(f, 1);
+  fwide(f, 1);
 
-	for (p=fmt; *p; p++) {
+  for (p = fmt; *p; p++) {
+    alloc = 0;
 
-		alloc = 0;
+    if (iswspace(*p)) {
+      while (iswspace(p[1]))
+        p++;
+      while (iswspace((c = getwc(f))))
+        pos++;
+      ungetwc(c, f);
+      continue;
+    }
+    if (*p != '%' || p[1] == '%') {
+      p += *p == '%';
+      c = getwc(f);
+      if (c != *p) {
+        ungetwc(c, f);
+        if (c < 0)
+          goto input_fail;
+        goto match_fail;
+      }
+      pos++;
+      continue;
+    }
 
-		if (iswspace(*p)) {
-			while (iswspace(p[1])) p++;
-			while (iswspace((c=getwc(f)))) pos++;
-			ungetwc(c, f);
-			continue;
-		}
-		if (*p != '%' || p[1] == '%') {
-			p += *p=='%';
-			c = getwc(f);
-			if (c!=*p) {
-				ungetwc(c, f);
-				if (c<0) goto input_fail;
-				goto match_fail;
-			}
-			pos++;
-			continue;
-		}
+    p++;
+    if (*p == '*') {
+      dest = 0;
+      p++;
+    } else if (iswdigit(*p) && p[1] == '$') {
+      dest = arg_n(ap, *p - '0');
+      p += 2;
+    } else {
+      dest = va_arg(ap, void*);
+    }
 
-		p++;
-		if (*p=='*') {
-			dest = 0; p++;
-		} else if (iswdigit(*p) && p[1]=='$') {
-			dest = arg_n(ap, *p-'0'); p+=2;
-		} else {
-			dest = va_arg(ap, void *);
-		}
+    for (width = 0; iswdigit(*p); p++) {
+      width = 10 * width + *p - '0';
+    }
 
-		for (width=0; iswdigit(*p); p++) {
-			width = 10*width + *p - '0';
-		}
+    if (*p == 'm') {
+      wcs = 0;
+      s = 0;
+      alloc = !!dest;
+      p++;
+    } else {
+      alloc = 0;
+    }
 
-		if (*p=='m') {
-			wcs = 0;
-			s = 0;
-			alloc = !!dest;
-			p++;
-		} else {
-			alloc = 0;
-		}
+    size = SIZE_def;
+    switch (*p++) {
+      case 'h':
+        if (*p == 'h')
+          p++, size = SIZE_hh;
+        else
+          size = SIZE_h;
+        break;
+      case 'l':
+        if (*p == 'l')
+          p++, size = SIZE_ll;
+        else
+          size = SIZE_l;
+        break;
+      case 'j':
+        size = SIZE_ll;
+        break;
+      case 'z':
+      case 't':
+        size = SIZE_l;
+        break;
+      case 'L':
+        size = SIZE_L;
+        break;
+      case 'd':
+      case 'i':
+      case 'o':
+      case 'u':
+      case 'x':
+      case 'a':
+      case 'e':
+      case 'f':
+      case 'g':
+      case 'A':
+      case 'E':
+      case 'F':
+      case 'G':
+      case 'X':
+      case 's':
+      case 'c':
+      case '[':
+      case 'S':
+      case 'C':
+      case 'p':
+      case 'n':
+        p--;
+        break;
+      default:
+        goto fmt_fail;
+    }
 
-		size = SIZE_def;
-		switch (*p++) {
-		case 'h':
-			if (*p == 'h') p++, size = SIZE_hh;
-			else size = SIZE_h;
-			break;
-		case 'l':
-			if (*p == 'l') p++, size = SIZE_ll;
-			else size = SIZE_l;
-			break;
-		case 'j':
-			size = SIZE_ll;
-			break;
-		case 'z':
-		case 't':
-			size = SIZE_l;
-			break;
-		case 'L':
-			size = SIZE_L;
-			break;
-		case 'd': case 'i': case 'o': case 'u': case 'x':
-		case 'a': case 'e': case 'f': case 'g':
-		case 'A': case 'E': case 'F': case 'G': case 'X':
-		case 's': case 'c': case '[':
-		case 'S': case 'C':
-		case 'p': case 'n':
-			p--;
-			break;
-		default:
-			goto fmt_fail;
-		}
+    t = *p;
 
-		t = *p;
+    /* Transform S,C -> ls,lc */
+    if ((t & 0x2f) == 3) {
+      size = SIZE_l;
+      t |= 32;
+    }
 
-		/* Transform S,C -> ls,lc */
-		if ((t&0x2f)==3) {
-			size = SIZE_l;
-			t |= 32;
-		}
+    if (t != 'n') {
+      if (t != '[' && (t | 32) != 'c')
+        while (iswspace((c = getwc(f))))
+          pos++;
+      else
+        c = getwc(f);
+      if (c < 0)
+        goto input_fail;
+      ungetwc(c, f);
+    }
 
-		if (t != 'n') {
-			if (t != '[' && (t|32) != 'c')
-				while (iswspace((c=getwc(f)))) pos++;
-			else
-				c=getwc(f);
-			if (c < 0) goto input_fail;
-			ungetwc(c, f);
-		}
+    switch (t) {
+      case 'n':
+        store_int(dest, size, pos);
+        /* do not increment match count, etc! */
+        continue;
 
-		switch (t) {
-		case 'n':
-			store_int(dest, size, pos);
-			/* do not increment match count, etc! */
-			continue;
+      case 's':
+      case 'c':
+      case '[':
+        if (t == 'c') {
+          if (width < 1)
+            width = 1;
+          invert = 1;
+          set = L"";
+        } else if (t == 's') {
+          invert = 1;
+          set = (const wchar_t[]){
+              ' ',    '\t',   '\n',   '\r',   11,     12,     0x0085, 0x2000,
+              0x2001, 0x2002, 0x2003, 0x2004, 0x2005, 0x2006, 0x2008, 0x2009,
+              0x200a, 0x2028, 0x2029, 0x205f, 0x3000, 0};
+        } else {
+          if (*++p == '^')
+            p++, invert = 1;
+          else
+            invert = 0;
+          set = p;
+          if (*p == ']')
+            p++;
+          while (*p != ']') {
+            if (!*p)
+              goto fmt_fail;
+            p++;
+          }
+        }
 
-		case 's':
-		case 'c':
-		case '[':
-			if (t == 'c') {
-				if (width<1) width = 1;
-				invert = 1;
-				set = L"";
-			} else if (t == 's') {
-				invert = 1;
-				set = (const wchar_t[]){
-					' ', '\t', '\n', '\r', 11, 12,  0x0085,
-					0x2000, 0x2001, 0x2002, 0x2003, 0x2004, 0x2005,
-					0x2006, 0x2008, 0x2009, 0x200a,
-					0x2028, 0x2029, 0x205f, 0x3000, 0 };
-			} else {
-				if (*++p == '^') p++, invert = 1;
-				else invert = 0;
-				set = p;
-				if (*p==']') p++;
-				while (*p!=']') {
-					if (!*p) goto fmt_fail;
-					p++;
-				}
-			}
+        s = (size == SIZE_def) ? dest : 0;
+        wcs = (size == SIZE_l) ? dest : 0;
 
-			s = (size == SIZE_def) ? dest : 0;
-			wcs = (size == SIZE_l) ? dest : 0;
+        int gotmatch = 0;
 
-			int gotmatch = 0;
+        if (width < 1)
+          width = -1;
 
-			if (width < 1) width = -1;
+        i = 0;
+        if (alloc) {
+          k = t == 'c' ? width + 1U : 31;
+          if (size == SIZE_l) {
+            wcs = malloc(k * sizeof(wchar_t));
+            if (!wcs)
+              goto alloc_fail;
+          } else {
+            s = malloc(k);
+            if (!s)
+              goto alloc_fail;
+          }
+        }
+        while (width) {
+          if ((c = getwc(f)) < 0)
+            break;
+          if (in_set(set, c) == invert)
+            break;
+          if (wcs) {
+            wcs[i++] = c;
+            if (alloc && i == k) {
+              k += k + 1;
+              wchar_t* tmp = realloc(wcs, k * sizeof(wchar_t));
+              if (!tmp)
+                goto alloc_fail;
+              wcs = tmp;
+            }
+          } else if (size != SIZE_l) {
+            int l = wctomb(s ? s + i : tmp, c);
+            if (l < 0)
+              goto input_fail;
+            i += l;
+            if (alloc && i > k - 4) {
+              k += k + 1;
+              char* tmp = realloc(s, k);
+              if (!tmp)
+                goto alloc_fail;
+              s = tmp;
+            }
+          }
+          pos++;
+          width -= (width > 0);
+          gotmatch = 1;
+        }
+        if (width) {
+          ungetwc(c, f);
+          if (t == 'c' || !gotmatch)
+            goto match_fail;
+        }
 
-			i = 0;
-			if (alloc) {
-				k = t=='c' ? width+1U : 31;
-				if (size == SIZE_l) {
-					wcs = malloc(k*sizeof(wchar_t));
-					if (!wcs) goto alloc_fail;
-				} else {
-					s = malloc(k);
-					if (!s) goto alloc_fail;
-				}
-			}
-			while (width) {
-				if ((c=getwc(f))<0) break;
-				if (in_set(set, c) == invert)
-					break;
-				if (wcs) {
-					wcs[i++] = c;
-					if (alloc && i==k) {
-						k += k+1;
-						wchar_t *tmp = realloc(wcs, k*sizeof(wchar_t));
-						if (!tmp) goto alloc_fail;
-						wcs = tmp;
-					}
-				} else if (size != SIZE_l) {
-					int l = wctomb(s?s+i:tmp, c);
-					if (l<0) goto input_fail;
-					i += l;
-					if (alloc && i > k-4) {
-						k += k+1;
-						char *tmp = realloc(s, k);
-						if (!tmp) goto alloc_fail;
-						s = tmp;
-					}
-				}
-				pos++;
-				width-=(width>0);
-				gotmatch=1;
-			}
-			if (width) {
-				ungetwc(c, f);
-				if (t == 'c' || !gotmatch) goto match_fail;
-			}
+        if (alloc) {
+          if (size == SIZE_l)
+            *(wchar_t**)dest = wcs;
+          else
+            *(char**)dest = s;
+        }
+        if (t != 'c') {
+          if (wcs)
+            wcs[i] = 0;
+          if (s)
+            s[i] = 0;
+        }
+        break;
 
-			if (alloc) {
-				if (size == SIZE_l) *(wchar_t **)dest = wcs;
-				else *(char **)dest = s;
-			}
-			if (t != 'c') {
-				if (wcs) wcs[i] = 0;
-				if (s) s[i] = 0;
-			}
-			break;
+      case 'd':
+      case 'i':
+      case 'o':
+      case 'u':
+      case 'x':
+      case 'a':
+      case 'e':
+      case 'f':
+      case 'g':
+      case 'A':
+      case 'E':
+      case 'F':
+      case 'G':
+      case 'X':
+      case 'p':
+        if (width < 1)
+          width = 0;
+        snprintf(tmp, sizeof tmp, "%.*s%.0d%s%c%%lln", 1 + !dest, "%*", width,
+                 size_pfx[size + 2], t);
+        cnt = 0;
+        if (fscanf(f, tmp, dest ? dest : &cnt, &cnt) == -1)
+          goto input_fail;
+        else if (!cnt)
+          goto match_fail;
+        pos += cnt;
+        break;
+      default:
+        goto fmt_fail;
+    }
 
-		case 'd': case 'i': case 'o': case 'u': case 'x':
-		case 'a': case 'e': case 'f': case 'g':
-		case 'A': case 'E': case 'F': case 'G': case 'X':
-		case 'p':
-			if (width < 1) width = 0;
-			snprintf(tmp, sizeof tmp, "%.*s%.0d%s%c%%lln",
-				1+!dest, "%*", width, size_pfx[size+2], t);
-			cnt = 0;
-			if (fscanf(f, tmp, dest?dest:&cnt, &cnt) == -1)
-				goto input_fail;
-			else if (!cnt)
-				goto match_fail;
-			pos += cnt;
-			break;
-		default:
-			goto fmt_fail;
-		}
-
-		if (dest) matches++;
-	}
-	if (0) {
-fmt_fail:
-alloc_fail:
-input_fail:
-		if (!matches) matches--;
-match_fail:
-		if (alloc) {
-			free(s);
-			free(wcs);
-		}
-	}
-	FUNLOCK(f);
-	return matches;
+    if (dest)
+      matches++;
+  }
+  if (0) {
+  fmt_fail:
+  alloc_fail:
+  input_fail:
+    if (!matches)
+      matches--;
+  match_fail:
+    if (alloc) {
+      free(s);
+      free(wcs);
+    }
+  }
+  FUNLOCK(f);
+  return matches;
 }
 
-weak_alias(vfwscanf,__isoc99_vfwscanf);
+weak_alias(vfwscanf, __isoc99_vfwscanf);
diff --git a/fusl/src/stdio/vprintf.c b/fusl/src/stdio/vprintf.c
index 30d2bff..b225150 100644
--- a/fusl/src/stdio/vprintf.c
+++ b/fusl/src/stdio/vprintf.c
@@ -1,6 +1,5 @@
 #include <stdio.h>
 
-int vprintf(const char *restrict fmt, va_list ap)
-{
-	return vfprintf(stdout, fmt, ap);
+int vprintf(const char* restrict fmt, va_list ap) {
+  return vfprintf(stdout, fmt, ap);
 }
diff --git a/fusl/src/stdio/vscanf.c b/fusl/src/stdio/vscanf.c
index 43892f0..9f9d868 100644
--- a/fusl/src/stdio/vscanf.c
+++ b/fusl/src/stdio/vscanf.c
@@ -2,9 +2,8 @@
 #include <stdarg.h>
 #include "libc.h"
 
-int vscanf(const char *restrict fmt, va_list ap)
-{
-	return vfscanf(stdin, fmt, ap);
+int vscanf(const char* restrict fmt, va_list ap) {
+  return vfscanf(stdin, fmt, ap);
 }
 
-weak_alias(vscanf,__isoc99_vscanf);
+weak_alias(vscanf, __isoc99_vscanf);
diff --git a/fusl/src/stdio/vsnprintf.c b/fusl/src/stdio/vsnprintf.c
index be2c44e..1e76b4e 100644
--- a/fusl/src/stdio/vsnprintf.c
+++ b/fusl/src/stdio/vsnprintf.c
@@ -4,39 +4,43 @@
 #include <errno.h>
 #include <stdint.h>
 
-static size_t sn_write(FILE *f, const unsigned char *s, size_t l)
-{
-	size_t k = f->wend - f->wpos;
-	if (k > l) k = l;
-	memcpy(f->wpos, s, k);
-	f->wpos += k;
-	/* pretend to succeed, but discard extra data */
-	return l;
+static size_t sn_write(FILE* f, const unsigned char* s, size_t l) {
+  size_t k = f->wend - f->wpos;
+  if (k > l)
+    k = l;
+  memcpy(f->wpos, s, k);
+  f->wpos += k;
+  /* pretend to succeed, but discard extra data */
+  return l;
 }
 
-int vsnprintf(char *restrict s, size_t n, const char *restrict fmt, va_list ap)
-{
-	int r;
-	char b;
-	FILE f = { .lbf = EOF, .write = sn_write, .lock = -1 };
+int vsnprintf(char* restrict s,
+              size_t n,
+              const char* restrict fmt,
+              va_list ap) {
+  int r;
+  char b;
+  FILE f = {.lbf = EOF, .write = sn_write, .lock = -1};
 
-	if (n-1 > INT_MAX-1) {
-		if (n) {
-			errno = EOVERFLOW;
-			return -1;
-		}
-		s = &b;
-		n = 1;
-	}
+  if (n - 1 > INT_MAX - 1) {
+    if (n) {
+      errno = EOVERFLOW;
+      return -1;
+    }
+    s = &b;
+    n = 1;
+  }
 
-	/* Ensure pointers don't wrap if "infinite" n is passed in */
-	if (n > (char *)0+SIZE_MAX-s-1) n = (char *)0+SIZE_MAX-s-1;
-	f.buf_size = n;
-	f.buf = f.wpos = (void *)s;
-	f.wbase = f.wend = (void *)(s+n);
-	r = vfprintf(&f, fmt, ap);
+  /* Ensure pointers don't wrap if "infinite" n is passed in */
+  if (n > (char*)0 + SIZE_MAX - s - 1)
+    n = (char*)0 + SIZE_MAX - s - 1;
+  f.buf_size = n;
+  f.buf = f.wpos = (void*)s;
+  f.wbase = f.wend = (void*)(s + n);
+  r = vfprintf(&f, fmt, ap);
 
-	/* Null-terminate, overwriting last char if dest buffer is full */
-	if (n) f.wpos[-(f.wpos == f.wend)] = 0;
-	return r;
+  /* Null-terminate, overwriting last char if dest buffer is full */
+  if (n)
+    f.wpos[-(f.wpos == f.wend)] = 0;
+  return r;
 }
diff --git a/fusl/src/stdio/vsprintf.c b/fusl/src/stdio/vsprintf.c
index c57349d..5f39c9b 100644
--- a/fusl/src/stdio/vsprintf.c
+++ b/fusl/src/stdio/vsprintf.c
@@ -1,7 +1,6 @@
 #include <stdio.h>
 #include <limits.h>
 
-int vsprintf(char *restrict s, const char *restrict fmt, va_list ap)
-{
-	return vsnprintf(s, INT_MAX, fmt, ap);
+int vsprintf(char* restrict s, const char* restrict fmt, va_list ap) {
+  return vsnprintf(s, INT_MAX, fmt, ap);
 }
diff --git a/fusl/src/stdio/vsscanf.c b/fusl/src/stdio/vsscanf.c
index 929ffa3..ed0c343 100644
--- a/fusl/src/stdio/vsscanf.c
+++ b/fusl/src/stdio/vsscanf.c
@@ -1,18 +1,13 @@
 #include "stdio_impl.h"
 #include "libc.h"
 
-static size_t do_read(FILE *f, unsigned char *buf, size_t len)
-{
-	return __string_read(f, buf, len);
+static size_t do_read(FILE* f, unsigned char* buf, size_t len) {
+  return __string_read(f, buf, len);
 }
 
-int vsscanf(const char *restrict s, const char *restrict fmt, va_list ap)
-{
-	FILE f = {
-		.buf = (void *)s, .cookie = (void *)s,
-		.read = do_read, .lock = -1
-	};
-	return vfscanf(&f, fmt, ap);
+int vsscanf(const char* restrict s, const char* restrict fmt, va_list ap) {
+  FILE f = {.buf = (void*)s, .cookie = (void*)s, .read = do_read, .lock = -1};
+  return vfscanf(&f, fmt, ap);
 }
 
-weak_alias(vsscanf,__isoc99_vsscanf);
+weak_alias(vsscanf, __isoc99_vsscanf);
diff --git a/fusl/src/stdio/vswprintf.c b/fusl/src/stdio/vswprintf.c
index 7d237ba..580845a 100644
--- a/fusl/src/stdio/vswprintf.c
+++ b/fusl/src/stdio/vswprintf.c
@@ -6,48 +6,49 @@
 #include <wchar.h>
 
 struct cookie {
-	wchar_t *ws;
-	size_t l;
+  wchar_t* ws;
+  size_t l;
 };
 
-static size_t sw_write(FILE *f, const unsigned char *s, size_t l)
-{
-	size_t l0 = l;
-	int i = 0;
-	struct cookie *c = f->cookie;
-	if (s!=f->wbase && sw_write(f, f->wbase, f->wpos-f->wbase)==-1)
-		return -1;
-	while (c->l && l && (i=mbtowc(c->ws, (void *)s, l))>=0) {
-		s+=i;
-		l-=i;
-		c->l--;
-		c->ws++;
-	}
-	*c->ws = 0;
-	return i<0 ? i : l0;
+static size_t sw_write(FILE* f, const unsigned char* s, size_t l) {
+  size_t l0 = l;
+  int i = 0;
+  struct cookie* c = f->cookie;
+  if (s != f->wbase && sw_write(f, f->wbase, f->wpos - f->wbase) == -1)
+    return -1;
+  while (c->l && l && (i = mbtowc(c->ws, (void*)s, l)) >= 0) {
+    s += i;
+    l -= i;
+    c->l--;
+    c->ws++;
+  }
+  *c->ws = 0;
+  return i < 0 ? i : l0;
 }
 
-int vswprintf(wchar_t *restrict s, size_t n, const wchar_t *restrict fmt, va_list ap)
-{
-	int r;
-	FILE f;
-	unsigned char buf[256];
-	struct cookie c = { s, n-1 };
+int vswprintf(wchar_t* restrict s,
+              size_t n,
+              const wchar_t* restrict fmt,
+              va_list ap) {
+  int r;
+  FILE f;
+  unsigned char buf[256];
+  struct cookie c = {s, n - 1};
 
-	memset(&f, 0, sizeof(FILE));
-	f.lbf = EOF;
-	f.write = sw_write;
-	f.buf_size = sizeof buf;
-	f.buf = buf;
-	f.lock = -1;
-	f.cookie = &c;
-	if (!n) {
-		return -1;
-	} else if (n > INT_MAX) {
-		errno = EOVERFLOW;
-		return -1;
-	}
-	r = vfwprintf(&f, fmt, ap);
-	sw_write(&f, 0, 0);
-	return r>=n ? -1 : r;
+  memset(&f, 0, sizeof(FILE));
+  f.lbf = EOF;
+  f.write = sw_write;
+  f.buf_size = sizeof buf;
+  f.buf = buf;
+  f.lock = -1;
+  f.cookie = &c;
+  if (!n) {
+    return -1;
+  } else if (n > INT_MAX) {
+    errno = EOVERFLOW;
+    return -1;
+  }
+  r = vfwprintf(&f, fmt, ap);
+  sw_write(&f, 0, 0);
+  return r >= n ? -1 : r;
 }
diff --git a/fusl/src/stdio/vswscanf.c b/fusl/src/stdio/vswscanf.c
index 411dd39..3f8b650 100644
--- a/fusl/src/stdio/vswscanf.c
+++ b/fusl/src/stdio/vswscanf.c
@@ -2,38 +2,40 @@
 #include "libc.h"
 #include <wchar.h>
 
-static size_t wstring_read(FILE *f, unsigned char *buf, size_t len)
-{
-	const wchar_t *src = f->cookie;
-	size_t k;
+static size_t wstring_read(FILE* f, unsigned char* buf, size_t len) {
+  const wchar_t* src = f->cookie;
+  size_t k;
 
-	if (!src) return 0;
+  if (!src)
+    return 0;
 
-	k = wcsrtombs((void *)f->buf, &src, f->buf_size, 0);
-	if (k==(size_t)-1) {
-		f->rpos = f->rend = 0;
-		return 0;
-	}
+  k = wcsrtombs((void*)f->buf, &src, f->buf_size, 0);
+  if (k == (size_t)-1) {
+    f->rpos = f->rend = 0;
+    return 0;
+  }
 
-	f->rpos = f->buf;
-	f->rend = f->buf + k;
-	f->cookie = (void *)src;
+  f->rpos = f->buf;
+  f->rend = f->buf + k;
+  f->cookie = (void*)src;
 
-	if (!len || !k) return 0;
+  if (!len || !k)
+    return 0;
 
-	*buf = *f->rpos++;
-	return 1;
+  *buf = *f->rpos++;
+  return 1;
 }
 
-int vswscanf(const wchar_t *restrict s, const wchar_t *restrict fmt, va_list ap)
-{
-	unsigned char buf[256];
-	FILE f = {
-		.buf = buf, .buf_size = sizeof buf,
-		.cookie = (void *)s,
-		.read = wstring_read, .lock = -1
-	};
-	return vfwscanf(&f, fmt, ap);
+int vswscanf(const wchar_t* restrict s,
+             const wchar_t* restrict fmt,
+             va_list ap) {
+  unsigned char buf[256];
+  FILE f = {.buf = buf,
+            .buf_size = sizeof buf,
+            .cookie = (void*)s,
+            .read = wstring_read,
+            .lock = -1};
+  return vfwscanf(&f, fmt, ap);
 }
 
-weak_alias(vswscanf,__isoc99_vswscanf);
+weak_alias(vswscanf, __isoc99_vswscanf);
diff --git a/fusl/src/stdio/vwprintf.c b/fusl/src/stdio/vwprintf.c
index eeeecdc..e497195 100644
--- a/fusl/src/stdio/vwprintf.c
+++ b/fusl/src/stdio/vwprintf.c
@@ -1,7 +1,6 @@
 #include <stdio.h>
 #include <wchar.h>
 
-int vwprintf(const wchar_t *restrict fmt, va_list ap)
-{
-	return vfwprintf(stdout, fmt, ap);
+int vwprintf(const wchar_t* restrict fmt, va_list ap) {
+  return vfwprintf(stdout, fmt, ap);
 }
diff --git a/fusl/src/stdio/vwscanf.c b/fusl/src/stdio/vwscanf.c
index 63c9cce..179e86a 100644
--- a/fusl/src/stdio/vwscanf.c
+++ b/fusl/src/stdio/vwscanf.c
@@ -3,9 +3,8 @@
 #include <wchar.h>
 #include "libc.h"
 
-int vwscanf(const wchar_t *restrict fmt, va_list ap)
-{
-	return vfwscanf(stdin, fmt, ap);
+int vwscanf(const wchar_t* restrict fmt, va_list ap) {
+  return vfwscanf(stdin, fmt, ap);
 }
 
-weak_alias(vwscanf,__isoc99_vwscanf);
+weak_alias(vwscanf, __isoc99_vwscanf);
diff --git a/fusl/src/stdio/wprintf.c b/fusl/src/stdio/wprintf.c
index 342cd97..7872aa8 100644
--- a/fusl/src/stdio/wprintf.c
+++ b/fusl/src/stdio/wprintf.c
@@ -2,12 +2,11 @@
 #include <stdarg.h>
 #include <wchar.h>
 
-int wprintf(const wchar_t *restrict fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vwprintf(fmt, ap);
-	va_end(ap);
-	return ret;
+int wprintf(const wchar_t* restrict fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vwprintf(fmt, ap);
+  va_end(ap);
+  return ret;
 }
diff --git a/fusl/src/stdio/wscanf.c b/fusl/src/stdio/wscanf.c
index 8041225..886a6c4 100644
--- a/fusl/src/stdio/wscanf.c
+++ b/fusl/src/stdio/wscanf.c
@@ -3,14 +3,13 @@
 #include <wchar.h>
 #include "libc.h"
 
-int wscanf(const wchar_t *restrict fmt, ...)
-{
-	int ret;
-	va_list ap;
-	va_start(ap, fmt);
-	ret = vwscanf(fmt, ap);
-	va_end(ap);
-	return ret;
+int wscanf(const wchar_t* restrict fmt, ...) {
+  int ret;
+  va_list ap;
+  va_start(ap, fmt);
+  ret = vwscanf(fmt, ap);
+  va_end(ap);
+  return ret;
 }
 
-weak_alias(wscanf,__isoc99_wscanf);
+weak_alias(wscanf, __isoc99_wscanf);
diff --git a/fusl/src/stdlib/abs.c b/fusl/src/stdlib/abs.c
index 4806d62..b8ab062 100644
--- a/fusl/src/stdlib/abs.c
+++ b/fusl/src/stdlib/abs.c
@@ -1,4 +1,3 @@
-int abs(int a)
-{
-	return a>0 ? a : -a;
+int abs(int a) {
+  return a > 0 ? a : -a;
 }
diff --git a/fusl/src/stdlib/atof.c b/fusl/src/stdlib/atof.c
index f7fcd82..e7187ed 100644
--- a/fusl/src/stdlib/atof.c
+++ b/fusl/src/stdlib/atof.c
@@ -1,6 +1,5 @@
 #include <stdlib.h>
 
-double atof(const char *s)
-{
-	return strtod(s, 0);
+double atof(const char* s) {
+  return strtod(s, 0);
 }
diff --git a/fusl/src/stdlib/atoi.c b/fusl/src/stdlib/atoi.c
index 9baca7b..2f5ae82 100644
--- a/fusl/src/stdlib/atoi.c
+++ b/fusl/src/stdlib/atoi.c
@@ -1,16 +1,18 @@
 #include <stdlib.h>
 #include <ctype.h>
 
-int atoi(const char *s)
-{
-	int n=0, neg=0;
-	while (isspace(*s)) s++;
-	switch (*s) {
-	case '-': neg=1;
-	case '+': s++;
-	}
-	/* Compute n as a negative number to avoid overflow on INT_MIN */
-	while (isdigit(*s))
-		n = 10*n - (*s++ - '0');
-	return neg ? n : -n;
+int atoi(const char* s) {
+  int n = 0, neg = 0;
+  while (isspace(*s))
+    s++;
+  switch (*s) {
+    case '-':
+      neg = 1;
+    case '+':
+      s++;
+  }
+  /* Compute n as a negative number to avoid overflow on INT_MIN */
+  while (isdigit(*s))
+    n = 10 * n - (*s++ - '0');
+  return neg ? n : -n;
 }
diff --git a/fusl/src/stdlib/atol.c b/fusl/src/stdlib/atol.c
index 140ea3e..29345d3 100644
--- a/fusl/src/stdlib/atol.c
+++ b/fusl/src/stdlib/atol.c
@@ -1,17 +1,19 @@
 #include <stdlib.h>
 #include <ctype.h>
 
-long atol(const char *s)
-{
-	long n=0;
-	int neg=0;
-	while (isspace(*s)) s++;
-	switch (*s) {
-	case '-': neg=1;
-	case '+': s++;
-	}
-	/* Compute n as a negative number to avoid overflow on LONG_MIN */
-	while (isdigit(*s))
-		n = 10*n - (*s++ - '0');
-	return neg ? n : -n;
+long atol(const char* s) {
+  long n = 0;
+  int neg = 0;
+  while (isspace(*s))
+    s++;
+  switch (*s) {
+    case '-':
+      neg = 1;
+    case '+':
+      s++;
+  }
+  /* Compute n as a negative number to avoid overflow on LONG_MIN */
+  while (isdigit(*s))
+    n = 10 * n - (*s++ - '0');
+  return neg ? n : -n;
 }
diff --git a/fusl/src/stdlib/atoll.c b/fusl/src/stdlib/atoll.c
index b693048..9fde063 100644
--- a/fusl/src/stdlib/atoll.c
+++ b/fusl/src/stdlib/atoll.c
@@ -1,17 +1,19 @@
 #include <stdlib.h>
 #include <ctype.h>
 
-long long atoll(const char *s)
-{
-	long long n=0;
-	int neg=0;
-	while (isspace(*s)) s++;
-	switch (*s) {
-	case '-': neg=1;
-	case '+': s++;
-	}
-	/* Compute n as a negative number to avoid overflow on LLONG_MIN */
-	while (isdigit(*s))
-		n = 10*n - (*s++ - '0');
-	return neg ? n : -n;
+long long atoll(const char* s) {
+  long long n = 0;
+  int neg = 0;
+  while (isspace(*s))
+    s++;
+  switch (*s) {
+    case '-':
+      neg = 1;
+    case '+':
+      s++;
+  }
+  /* Compute n as a negative number to avoid overflow on LLONG_MIN */
+  while (isdigit(*s))
+    n = 10 * n - (*s++ - '0');
+  return neg ? n : -n;
 }
diff --git a/fusl/src/stdlib/bsearch.c b/fusl/src/stdlib/bsearch.c
index 61d8936..f4c4843 100644
--- a/fusl/src/stdlib/bsearch.c
+++ b/fusl/src/stdlib/bsearch.c
@@ -1,20 +1,29 @@
 #include <stdlib.h>
 
-void *bsearch(const void *key, const void *base, size_t nel, size_t width, int (*cmp)(const void *, const void *))
-{
-	void *try;
-	int sign;
-	while (nel > 0) {
-		try = (char *)base + width*(nel/2);
-		sign = cmp(key, try);
-		if (!sign) return try;
-		else if (nel == 1) break;
-		else if (sign < 0)
-			nel /= 2;
-		else {
-			base = try;
-			nel -= nel/2;
-		}
-	}
-	return NULL;
+void* bsearch(const void* key,
+              const void* base,
+              size_t nel,
+              size_t width,
+              int (*cmp)(const void*, const void*)) {
+  void* try
+    ;
+  int sign;
+  while (nel > 0) {
+    try
+      = (char*)base + width * (nel / 2);
+    sign = cmp(key, try);
+    if (!sign)
+      return try
+        ;
+    else if (nel == 1)
+      break;
+    else if (sign < 0)
+      nel /= 2;
+    else {
+      base = try
+        ;
+      nel -= nel / 2;
+    }
+  }
+  return NULL;
 }
diff --git a/fusl/src/stdlib/div.c b/fusl/src/stdlib/div.c
index e42c1f1..8f5ea4b 100644
--- a/fusl/src/stdlib/div.c
+++ b/fusl/src/stdlib/div.c
@@ -1,6 +1,5 @@
 #include <stdlib.h>
 
-div_t div(int num, int den)
-{
-	return (div_t){ num/den, num%den };
+div_t div(int num, int den) {
+  return (div_t){num / den, num % den};
 }
diff --git a/fusl/src/stdlib/ecvt.c b/fusl/src/stdlib/ecvt.c
index 797b664..f7b727d 100644
--- a/fusl/src/stdlib/ecvt.c
+++ b/fusl/src/stdlib/ecvt.c
@@ -2,19 +2,19 @@
 #include <stdlib.h>
 #include <stdio.h>
 
-char *ecvt(double x, int n, int *dp, int *sign)
-{
-	static char buf[16];
-	char tmp[32];
-	int i, j;
+char* ecvt(double x, int n, int* dp, int* sign) {
+  static char buf[16];
+  char tmp[32];
+  int i, j;
 
-	if (n-1U > 15) n = 15;
-	sprintf(tmp, "%.*e", n-1, x);
-	i = *sign = (tmp[0]=='-');
-	for (j=0; tmp[i]!='e'; j+=(tmp[i++]!='.'))
-		buf[j] = tmp[i];
-	buf[j] = 0;
-	*dp = atoi(tmp+i+1)+1;
+  if (n - 1U > 15)
+    n = 15;
+  sprintf(tmp, "%.*e", n - 1, x);
+  i = *sign = (tmp[0] == '-');
+  for (j = 0; tmp[i] != 'e'; j += (tmp[i++] != '.'))
+    buf[j] = tmp[i];
+  buf[j] = 0;
+  *dp = atoi(tmp + i + 1) + 1;
 
-	return buf;
+  return buf;
 }
diff --git a/fusl/src/stdlib/fcvt.c b/fusl/src/stdlib/fcvt.c
index f90928f..eeeb515 100644
--- a/fusl/src/stdlib/fcvt.c
+++ b/fusl/src/stdlib/fcvt.c
@@ -3,23 +3,26 @@
 #include <stdio.h>
 #include <string.h>
 
-char *fcvt(double x, int n, int *dp, int *sign)
-{
-	char tmp[1500];
-	int i, lz;
+char* fcvt(double x, int n, int* dp, int* sign) {
+  char tmp[1500];
+  int i, lz;
 
-	if (n > 1400U) n = 1400;
-	sprintf(tmp, "%.*f", n, x);
-	i = (tmp[0] == '-');
-	if (tmp[i] == '0') lz = strspn(tmp+i+2, "0");
-	else lz = -(int)strcspn(tmp+i, ".");
+  if (n > 1400U)
+    n = 1400;
+  sprintf(tmp, "%.*f", n, x);
+  i = (tmp[0] == '-');
+  if (tmp[i] == '0')
+    lz = strspn(tmp + i + 2, "0");
+  else
+    lz = -(int)strcspn(tmp + i, ".");
 
-	if (n<=lz) {
-		*sign = i;
-		*dp = 1;
-		if (n>14U) n = 14;
-		return "000000000000000"+14-n;
-	}
+  if (n <= lz) {
+    *sign = i;
+    *dp = 1;
+    if (n > 14U)
+      n = 14;
+    return "000000000000000" + 14 - n;
+  }
 
-	return ecvt(x, n-lz, dp, sign);
+  return ecvt(x, n - lz, dp, sign);
 }
diff --git a/fusl/src/stdlib/gcvt.c b/fusl/src/stdlib/gcvt.c
index f29bc30..a5de4f0 100644
--- a/fusl/src/stdlib/gcvt.c
+++ b/fusl/src/stdlib/gcvt.c
@@ -2,8 +2,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 
-char *gcvt(double x, int n, char *b)
-{
-	sprintf(b, "%.*g", n, x);
-	return b;
+char* gcvt(double x, int n, char* b) {
+  sprintf(b, "%.*g", n, x);
+  return b;
 }
diff --git a/fusl/src/stdlib/imaxabs.c b/fusl/src/stdlib/imaxabs.c
index 8100181..ad904a3 100644
--- a/fusl/src/stdlib/imaxabs.c
+++ b/fusl/src/stdlib/imaxabs.c
@@ -1,6 +1,5 @@
 #include <inttypes.h>
 
-intmax_t imaxabs(intmax_t a)
-{
-	return a>0 ? a : -a;
+intmax_t imaxabs(intmax_t a) {
+  return a > 0 ? a : -a;
 }
diff --git a/fusl/src/stdlib/imaxdiv.c b/fusl/src/stdlib/imaxdiv.c
index b2ce821..248854f 100644
--- a/fusl/src/stdlib/imaxdiv.c
+++ b/fusl/src/stdlib/imaxdiv.c
@@ -1,6 +1,5 @@
 #include <inttypes.h>
 
-imaxdiv_t imaxdiv(intmax_t num, intmax_t den)
-{
-	return (imaxdiv_t){ num/den, num%den };
+imaxdiv_t imaxdiv(intmax_t num, intmax_t den) {
+  return (imaxdiv_t){num / den, num % den};
 }
diff --git a/fusl/src/stdlib/labs.c b/fusl/src/stdlib/labs.c
index 675b95b..9c995d6 100644
--- a/fusl/src/stdlib/labs.c
+++ b/fusl/src/stdlib/labs.c
@@ -1,4 +1,3 @@
-long labs(long a)
-{
-	return a>0 ? a : -a;
+long labs(long a) {
+  return a > 0 ? a : -a;
 }
diff --git a/fusl/src/stdlib/ldiv.c b/fusl/src/stdlib/ldiv.c
index 36eb960..423a151 100644
--- a/fusl/src/stdlib/ldiv.c
+++ b/fusl/src/stdlib/ldiv.c
@@ -1,6 +1,5 @@
 #include <stdlib.h>
 
-ldiv_t ldiv(long num, long den)
-{
-	return (ldiv_t){ num/den, num%den };
+ldiv_t ldiv(long num, long den) {
+  return (ldiv_t){num / den, num % den};
 }
diff --git a/fusl/src/stdlib/llabs.c b/fusl/src/stdlib/llabs.c
index bec4a03..318436c 100644
--- a/fusl/src/stdlib/llabs.c
+++ b/fusl/src/stdlib/llabs.c
@@ -1,4 +1,3 @@
-long long llabs(long long a)
-{
-	return a>0 ? a : -a;
+long long llabs(long long a) {
+  return a > 0 ? a : -a;
 }
diff --git a/fusl/src/stdlib/lldiv.c b/fusl/src/stdlib/lldiv.c
index 7aaf7a0..91497b3 100644
--- a/fusl/src/stdlib/lldiv.c
+++ b/fusl/src/stdlib/lldiv.c
@@ -1,6 +1,5 @@
 #include <stdlib.h>
 
-lldiv_t lldiv(long long num, long long den)
-{
-	return (lldiv_t){ num/den, num%den };
+lldiv_t lldiv(long long num, long long den) {
+  return (lldiv_t){num / den, num % den};
 }
diff --git a/fusl/src/stdlib/qsort.c b/fusl/src/stdlib/qsort.c
index 434d935..95e52a0 100644
--- a/fusl/src/stdlib/qsort.c
+++ b/fusl/src/stdlib/qsort.c
@@ -28,188 +28,194 @@
 #include "atomic.h"
 #define ntz(x) a_ctz_l((x))
 
-typedef int (*cmpfun)(const void *, const void *);
+typedef int (*cmpfun)(const void*, const void*);
 
 static inline int pntz(size_t p[2]) {
-	int r = ntz(p[0] - 1);
-	if(r != 0 || (r = 8*sizeof(size_t) + ntz(p[1])) != 8*sizeof(size_t)) {
-		return r;
-	}
-	return 0;
+  int r = ntz(p[0] - 1);
+  if (r != 0 || (r = 8 * sizeof(size_t) + ntz(p[1])) != 8 * sizeof(size_t)) {
+    return r;
+  }
+  return 0;
 }
 
-static void cycle(size_t width, unsigned char* ar[], int n)
-{
-	unsigned char tmp[256];
-	size_t l;
-	int i;
+static void cycle(size_t width, unsigned char* ar[], int n) {
+  unsigned char tmp[256];
+  size_t l;
+  int i;
 
-	if(n < 2) {
-		return;
-	}
+  if (n < 2) {
+    return;
+  }
 
-	ar[n] = tmp;
-	while(width) {
-		l = sizeof(tmp) < width ? sizeof(tmp) : width;
-		memcpy(ar[n], ar[0], l);
-		for(i = 0; i < n; i++) {
-			memcpy(ar[i], ar[i + 1], l);
-			ar[i] += l;
-		}
-		width -= l;
-	}
+  ar[n] = tmp;
+  while (width) {
+    l = sizeof(tmp) < width ? sizeof(tmp) : width;
+    memcpy(ar[n], ar[0], l);
+    for (i = 0; i < n; i++) {
+      memcpy(ar[i], ar[i + 1], l);
+      ar[i] += l;
+    }
+    width -= l;
+  }
 }
 
 /* shl() and shr() need n > 0 */
-static inline void shl(size_t p[2], int n)
-{
-	if(n >= 8 * sizeof(size_t)) {
-		n -= 8 * sizeof(size_t);
-		p[1] = p[0];
-		p[0] = 0;
-	}
-	p[1] <<= n;
-	p[1] |= p[0] >> (sizeof(size_t) * 8 - n);
-	p[0] <<= n;
+static inline void shl(size_t p[2], int n) {
+  if (n >= 8 * sizeof(size_t)) {
+    n -= 8 * sizeof(size_t);
+    p[1] = p[0];
+    p[0] = 0;
+  }
+  p[1] <<= n;
+  p[1] |= p[0] >> (sizeof(size_t) * 8 - n);
+  p[0] <<= n;
 }
 
-static inline void shr(size_t p[2], int n)
-{
-	if(n >= 8 * sizeof(size_t)) {
-		n -= 8 * sizeof(size_t);
-		p[0] = p[1];
-		p[1] = 0;
-	}
-	p[0] >>= n;
-	p[0] |= p[1] << (sizeof(size_t) * 8 - n);
-	p[1] >>= n;
+static inline void shr(size_t p[2], int n) {
+  if (n >= 8 * sizeof(size_t)) {
+    n -= 8 * sizeof(size_t);
+    p[0] = p[1];
+    p[1] = 0;
+  }
+  p[0] >>= n;
+  p[0] |= p[1] << (sizeof(size_t) * 8 - n);
+  p[1] >>= n;
 }
 
-static void sift(unsigned char *head, size_t width, cmpfun cmp, int pshift, size_t lp[])
-{
-	unsigned char *rt, *lf;
-	unsigned char *ar[14 * sizeof(size_t) + 1];
-	int i = 1;
+static void sift(unsigned char* head,
+                 size_t width,
+                 cmpfun cmp,
+                 int pshift,
+                 size_t lp[]) {
+  unsigned char *rt, *lf;
+  unsigned char* ar[14 * sizeof(size_t) + 1];
+  int i = 1;
 
-	ar[0] = head;
-	while(pshift > 1) {
-		rt = head - width;
-		lf = head - width - lp[pshift - 2];
+  ar[0] = head;
+  while (pshift > 1) {
+    rt = head - width;
+    lf = head - width - lp[pshift - 2];
 
-		if((*cmp)(ar[0], lf) >= 0 && (*cmp)(ar[0], rt) >= 0) {
-			break;
-		}
-		if((*cmp)(lf, rt) >= 0) {
-			ar[i++] = lf;
-			head = lf;
-			pshift -= 1;
-		} else {
-			ar[i++] = rt;
-			head = rt;
-			pshift -= 2;
-		}
-	}
-	cycle(width, ar, i);
+    if ((*cmp)(ar[0], lf) >= 0 && (*cmp)(ar[0], rt) >= 0) {
+      break;
+    }
+    if ((*cmp)(lf, rt) >= 0) {
+      ar[i++] = lf;
+      head = lf;
+      pshift -= 1;
+    } else {
+      ar[i++] = rt;
+      head = rt;
+      pshift -= 2;
+    }
+  }
+  cycle(width, ar, i);
 }
 
-static void trinkle(unsigned char *head, size_t width, cmpfun cmp, size_t pp[2], int pshift, int trusty, size_t lp[])
-{
-	unsigned char *stepson,
-	              *rt, *lf;
-	size_t p[2];
-	unsigned char *ar[14 * sizeof(size_t) + 1];
-	int i = 1;
-	int trail;
+static void trinkle(unsigned char* head,
+                    size_t width,
+                    cmpfun cmp,
+                    size_t pp[2],
+                    int pshift,
+                    int trusty,
+                    size_t lp[]) {
+  unsigned char *stepson, *rt, *lf;
+  size_t p[2];
+  unsigned char* ar[14 * sizeof(size_t) + 1];
+  int i = 1;
+  int trail;
 
-	p[0] = pp[0];
-	p[1] = pp[1];
+  p[0] = pp[0];
+  p[1] = pp[1];
 
-	ar[0] = head;
-	while(p[0] != 1 || p[1] != 0) {
-		stepson = head - lp[pshift];
-		if((*cmp)(stepson, ar[0]) <= 0) {
-			break;
-		}
-		if(!trusty && pshift > 1) {
-			rt = head - width;
-			lf = head - width - lp[pshift - 2];
-			if((*cmp)(rt, stepson) >= 0 || (*cmp)(lf, stepson) >= 0) {
-				break;
-			}
-		}
+  ar[0] = head;
+  while (p[0] != 1 || p[1] != 0) {
+    stepson = head - lp[pshift];
+    if ((*cmp)(stepson, ar[0]) <= 0) {
+      break;
+    }
+    if (!trusty && pshift > 1) {
+      rt = head - width;
+      lf = head - width - lp[pshift - 2];
+      if ((*cmp)(rt, stepson) >= 0 || (*cmp)(lf, stepson) >= 0) {
+        break;
+      }
+    }
 
-		ar[i++] = stepson;
-		head = stepson;
-		trail = pntz(p);
-		shr(p, trail);
-		pshift += trail;
-		trusty = 0;
-	}
-	if(!trusty) {
-		cycle(width, ar, i);
-		sift(head, width, cmp, pshift, lp);
-	}
+    ar[i++] = stepson;
+    head = stepson;
+    trail = pntz(p);
+    shr(p, trail);
+    pshift += trail;
+    trusty = 0;
+  }
+  if (!trusty) {
+    cycle(width, ar, i);
+    sift(head, width, cmp, pshift, lp);
+  }
 }
 
-void qsort(void *base, size_t nel, size_t width, cmpfun cmp)
-{
-	size_t lp[12*sizeof(size_t)];
-	size_t i, size = width * nel;
-	unsigned char *head, *high;
-	size_t p[2] = {1, 0};
-	int pshift = 1;
-	int trail;
+void qsort(void* base, size_t nel, size_t width, cmpfun cmp) {
+  size_t lp[12 * sizeof(size_t)];
+  size_t i, size = width * nel;
+  unsigned char *head, *high;
+  size_t p[2] = {1, 0};
+  int pshift = 1;
+  int trail;
 
-	if (!size) return;
+  if (!size)
+    return;
 
-	head = base;
-	high = head + size - width;
+  head = base;
+  high = head + size - width;
 
-	/* Precompute Leonardo numbers, scaled by element width */
-	for(lp[0]=lp[1]=width, i=2; (lp[i]=lp[i-2]+lp[i-1]+width) < size; i++);
+  /* Precompute Leonardo numbers, scaled by element width */
+  for (lp[0] = lp[1] = width, i = 2;
+       (lp[i] = lp[i - 2] + lp[i - 1] + width) < size; i++)
+    ;
 
-	while(head < high) {
-		if((p[0] & 3) == 3) {
-			sift(head, width, cmp, pshift, lp);
-			shr(p, 2);
-			pshift += 2;
-		} else {
-			if(lp[pshift - 1] >= high - head) {
-				trinkle(head, width, cmp, p, pshift, 0, lp);
-			} else {
-				sift(head, width, cmp, pshift, lp);
-			}
-			
-			if(pshift == 1) {
-				shl(p, 1);
-				pshift = 0;
-			} else {
-				shl(p, pshift - 1);
-				pshift = 1;
-			}
-		}
-		
-		p[0] |= 1;
-		head += width;
-	}
+  while (head < high) {
+    if ((p[0] & 3) == 3) {
+      sift(head, width, cmp, pshift, lp);
+      shr(p, 2);
+      pshift += 2;
+    } else {
+      if (lp[pshift - 1] >= high - head) {
+        trinkle(head, width, cmp, p, pshift, 0, lp);
+      } else {
+        sift(head, width, cmp, pshift, lp);
+      }
 
-	trinkle(head, width, cmp, p, pshift, 0, lp);
+      if (pshift == 1) {
+        shl(p, 1);
+        pshift = 0;
+      } else {
+        shl(p, pshift - 1);
+        pshift = 1;
+      }
+    }
 
-	while(pshift != 1 || p[0] != 1 || p[1] != 0) {
-		if(pshift <= 1) {
-			trail = pntz(p);
-			shr(p, trail);
-			pshift += trail;
-		} else {
-			shl(p, 2);
-			pshift -= 2;
-			p[0] ^= 7;
-			shr(p, 1);
-			trinkle(head - lp[pshift] - width, width, cmp, p, pshift + 1, 1, lp);
-			shl(p, 1);
-			p[0] |= 1;
-			trinkle(head - width, width, cmp, p, pshift, 1, lp);
-		}
-		head -= width;
-	}
+    p[0] |= 1;
+    head += width;
+  }
+
+  trinkle(head, width, cmp, p, pshift, 0, lp);
+
+  while (pshift != 1 || p[0] != 1 || p[1] != 0) {
+    if (pshift <= 1) {
+      trail = pntz(p);
+      shr(p, trail);
+      pshift += trail;
+    } else {
+      shl(p, 2);
+      pshift -= 2;
+      p[0] ^= 7;
+      shr(p, 1);
+      trinkle(head - lp[pshift] - width, width, cmp, p, pshift + 1, 1, lp);
+      shl(p, 1);
+      p[0] |= 1;
+      trinkle(head - width, width, cmp, p, pshift, 1, lp);
+    }
+    head -= width;
+  }
 }
diff --git a/fusl/src/stdlib/strtod.c b/fusl/src/stdlib/strtod.c
index 461dcf8..f3c1c93 100644
--- a/fusl/src/stdlib/strtod.c
+++ b/fusl/src/stdlib/strtod.c
@@ -4,32 +4,26 @@
 #include "stdio_impl.h"
 #include "libc.h"
 
-static long double strtox(const char *s, char **p, int prec)
-{
-	FILE f = {
-		.buf = (void *)s, .rpos = (void *)s,
-		.rend = (void *)-1, .lock = -1
-	};
-	shlim(&f, 0);
-	long double y = __floatscan(&f, prec, 1);
-	off_t cnt = shcnt(&f);
-	if (p) *p = cnt ? (char *)s + cnt : (char *)s;
-	return y;
+static long double strtox(const char* s, char** p, int prec) {
+  FILE f = {.buf = (void*)s, .rpos = (void*)s, .rend = (void*)-1, .lock = -1};
+  shlim(&f, 0);
+  long double y = __floatscan(&f, prec, 1);
+  off_t cnt = shcnt(&f);
+  if (p)
+    *p = cnt ? (char*)s + cnt : (char*)s;
+  return y;
 }
 
-float strtof(const char *restrict s, char **restrict p)
-{
-	return strtox(s, p, 0);
+float strtof(const char* restrict s, char** restrict p) {
+  return strtox(s, p, 0);
 }
 
-double strtod(const char *restrict s, char **restrict p)
-{
-	return strtox(s, p, 1);
+double strtod(const char* restrict s, char** restrict p) {
+  return strtox(s, p, 1);
 }
 
-long double strtold(const char *restrict s, char **restrict p)
-{
-	return strtox(s, p, 2);
+long double strtold(const char* restrict s, char** restrict p) {
+  return strtox(s, p, 2);
 }
 
 weak_alias(strtof, strtof_l);
diff --git a/fusl/src/stdlib/strtol.c b/fusl/src/stdlib/strtol.c
index 730bf2d..35256d6 100644
--- a/fusl/src/stdlib/strtol.c
+++ b/fusl/src/stdlib/strtol.c
@@ -6,54 +6,52 @@
 #include <ctype.h>
 #include "libc.h"
 
-static unsigned long long strtox(const char *s, char **p, int base, unsigned long long lim)
-{
-	/* FIXME: use a helper function or macro to setup the FILE */
-	FILE f;
-	f.flags = 0;
-	f.buf = f.rpos = (void *)s;
-	if ((size_t)s > (size_t)-1/2)
-		f.rend = (void *)-1;
-	else
-		f.rend = (unsigned char *)s+(size_t)-1/2;
-	f.lock = -1;
-	shlim(&f, 0);
-	unsigned long long y = __intscan(&f, base, 1, lim);
-	if (p) {
-		size_t cnt = shcnt(&f);
-		*p = (char *)s + cnt;
-	}
-	return y;
+static unsigned long long strtox(const char* s,
+                                 char** p,
+                                 int base,
+                                 unsigned long long lim) {
+  /* FIXME: use a helper function or macro to setup the FILE */
+  FILE f;
+  f.flags = 0;
+  f.buf = f.rpos = (void*)s;
+  if ((size_t)s > (size_t)-1 / 2)
+    f.rend = (void*)-1;
+  else
+    f.rend = (unsigned char*)s + (size_t)-1 / 2;
+  f.lock = -1;
+  shlim(&f, 0);
+  unsigned long long y = __intscan(&f, base, 1, lim);
+  if (p) {
+    size_t cnt = shcnt(&f);
+    *p = (char*)s + cnt;
+  }
+  return y;
 }
 
-unsigned long long strtoull(const char *restrict s, char **restrict p, int base)
-{
-	return strtox(s, p, base, ULLONG_MAX);
+unsigned long long strtoull(const char* restrict s,
+                            char** restrict p,
+                            int base) {
+  return strtox(s, p, base, ULLONG_MAX);
 }
 
-long long strtoll(const char *restrict s, char **restrict p, int base)
-{
-	return strtox(s, p, base, LLONG_MIN);
+long long strtoll(const char* restrict s, char** restrict p, int base) {
+  return strtox(s, p, base, LLONG_MIN);
 }
 
-unsigned long strtoul(const char *restrict s, char **restrict p, int base)
-{
-	return strtox(s, p, base, ULONG_MAX);
+unsigned long strtoul(const char* restrict s, char** restrict p, int base) {
+  return strtox(s, p, base, ULONG_MAX);
 }
 
-long strtol(const char *restrict s, char **restrict p, int base)
-{
-	return strtox(s, p, base, 0UL+LONG_MIN);
+long strtol(const char* restrict s, char** restrict p, int base) {
+  return strtox(s, p, base, 0UL + LONG_MIN);
 }
 
-intmax_t strtoimax(const char *restrict s, char **restrict p, int base)
-{
-	return strtoll(s, p, base);
+intmax_t strtoimax(const char* restrict s, char** restrict p, int base) {
+  return strtoll(s, p, base);
 }
 
-uintmax_t strtoumax(const char *restrict s, char **restrict p, int base)
-{
-	return strtoull(s, p, base);
+uintmax_t strtoumax(const char* restrict s, char** restrict p, int base) {
+  return strtoull(s, p, base);
 }
 
 weak_alias(strtol, __strtol_internal);
diff --git a/fusl/src/stdlib/wcstod.c b/fusl/src/stdlib/wcstod.c
index 26fe9af..21bff25 100644
--- a/fusl/src/stdlib/wcstod.c
+++ b/fusl/src/stdlib/wcstod.c
@@ -8,58 +8,55 @@
  *  (1) len will always be 1
  *  (2) non-ascii characters don't matter */
 
-static size_t do_read(FILE *f, unsigned char *buf, size_t len)
-{
-	size_t i;
-	const wchar_t *wcs = f->cookie;
+static size_t do_read(FILE* f, unsigned char* buf, size_t len) {
+  size_t i;
+  const wchar_t* wcs = f->cookie;
 
-	if (!wcs[0]) wcs=L"@";
-	for (i=0; i<f->buf_size && wcs[i]; i++)
-		f->buf[i] = wcs[i] < 128 ? wcs[i] : '@';
-	f->rpos = f->buf;
-	f->rend = f->buf + i;
-	f->cookie = (void *)(wcs+i);
+  if (!wcs[0])
+    wcs = L"@";
+  for (i = 0; i < f->buf_size && wcs[i]; i++)
+    f->buf[i] = wcs[i] < 128 ? wcs[i] : '@';
+  f->rpos = f->buf;
+  f->rend = f->buf + i;
+  f->cookie = (void*)(wcs + i);
 
-	if (i && len) {
-		*buf = *f->rpos++;
-		return 1;
-	}
-	return 0;
+  if (i && len) {
+    *buf = *f->rpos++;
+    return 1;
+  }
+  return 0;
 }
 
-static long double wcstox(const wchar_t *s, wchar_t **p, int prec)
-{
-	wchar_t *t = (wchar_t *)s;
-	unsigned char buf[64];
-	FILE f = {0};
-	f.flags = 0;
-	f.rpos = f.rend = 0;
-	f.buf = buf + 4;
-	f.buf_size = sizeof buf - 4;
-	f.lock = -1;
-	f.read = do_read;
-	while (iswspace(*t)) t++;
-	f.cookie = (void *)t;
-	shlim(&f, 0);
-	long double y = __floatscan(&f, prec, 1);
-	if (p) {
-		size_t cnt = shcnt(&f);
-		*p = cnt ? t + cnt : (wchar_t *)s;
-	}
-	return y;
+static long double wcstox(const wchar_t* s, wchar_t** p, int prec) {
+  wchar_t* t = (wchar_t*)s;
+  unsigned char buf[64];
+  FILE f = {0};
+  f.flags = 0;
+  f.rpos = f.rend = 0;
+  f.buf = buf + 4;
+  f.buf_size = sizeof buf - 4;
+  f.lock = -1;
+  f.read = do_read;
+  while (iswspace(*t))
+    t++;
+  f.cookie = (void*)t;
+  shlim(&f, 0);
+  long double y = __floatscan(&f, prec, 1);
+  if (p) {
+    size_t cnt = shcnt(&f);
+    *p = cnt ? t + cnt : (wchar_t*)s;
+  }
+  return y;
 }
 
-float wcstof(const wchar_t *restrict s, wchar_t **restrict p)
-{
-	return wcstox(s, p, 0);
+float wcstof(const wchar_t* restrict s, wchar_t** restrict p) {
+  return wcstox(s, p, 0);
 }
 
-double wcstod(const wchar_t *restrict s, wchar_t **restrict p)
-{
-	return wcstox(s, p, 1);
+double wcstod(const wchar_t* restrict s, wchar_t** restrict p) {
+  return wcstox(s, p, 1);
 }
 
-long double wcstold(const wchar_t *restrict s, wchar_t **restrict p)
-{
-	return wcstox(s, p, 2);
+long double wcstold(const wchar_t* restrict s, wchar_t** restrict p) {
+  return wcstox(s, p, 2);
 }
diff --git a/fusl/src/stdlib/wcstol.c b/fusl/src/stdlib/wcstol.c
index 4443f57..fe724f8 100644
--- a/fusl/src/stdlib/wcstol.c
+++ b/fusl/src/stdlib/wcstol.c
@@ -10,73 +10,74 @@
  *  (1) len will always be 1
  *  (2) non-ascii characters don't matter */
 
-static size_t do_read(FILE *f, unsigned char *buf, size_t len)
-{
-	size_t i;
-	const wchar_t *wcs = f->cookie;
+static size_t do_read(FILE* f, unsigned char* buf, size_t len) {
+  size_t i;
+  const wchar_t* wcs = f->cookie;
 
-	if (!wcs[0]) wcs=L"@";
-	for (i=0; i<f->buf_size && wcs[i]; i++)
-		f->buf[i] = wcs[i] < 128 ? wcs[i] : '@';
-	f->rpos = f->buf;
-	f->rend = f->buf + i;
-	f->cookie = (void *)(wcs+i);
+  if (!wcs[0])
+    wcs = L"@";
+  for (i = 0; i < f->buf_size && wcs[i]; i++)
+    f->buf[i] = wcs[i] < 128 ? wcs[i] : '@';
+  f->rpos = f->buf;
+  f->rend = f->buf + i;
+  f->cookie = (void*)(wcs + i);
 
-	if (i && len) {
-		*buf = *f->rpos++;
-		return 1;
-	}
-	return 0;
+  if (i && len) {
+    *buf = *f->rpos++;
+    return 1;
+  }
+  return 0;
 }
 
-static unsigned long long wcstox(const wchar_t *s, wchar_t **p, int base, unsigned long long lim)
-{
-	wchar_t *t = (wchar_t *)s;
-	unsigned char buf[64];
-	FILE f = {0};
-	f.flags = 0;
-	f.rpos = f.rend = 0;
-	f.buf = buf + 4;
-	f.buf_size = sizeof buf - 4;
-	f.lock = -1;
-	f.read = do_read;
-	while (iswspace(*t)) t++;
-	f.cookie = (void *)t;
-	shlim(&f, 0);
-	unsigned long long y = __intscan(&f, base, 1, lim);
-	if (p) {
-		size_t cnt = shcnt(&f);
-		*p = cnt ? t + cnt : (wchar_t *)s;
-	}
-	return y;
+static unsigned long long wcstox(const wchar_t* s,
+                                 wchar_t** p,
+                                 int base,
+                                 unsigned long long lim) {
+  wchar_t* t = (wchar_t*)s;
+  unsigned char buf[64];
+  FILE f = {0};
+  f.flags = 0;
+  f.rpos = f.rend = 0;
+  f.buf = buf + 4;
+  f.buf_size = sizeof buf - 4;
+  f.lock = -1;
+  f.read = do_read;
+  while (iswspace(*t))
+    t++;
+  f.cookie = (void*)t;
+  shlim(&f, 0);
+  unsigned long long y = __intscan(&f, base, 1, lim);
+  if (p) {
+    size_t cnt = shcnt(&f);
+    *p = cnt ? t + cnt : (wchar_t*)s;
+  }
+  return y;
 }
 
-unsigned long long wcstoull(const wchar_t *restrict s, wchar_t **restrict p, int base)
-{
-	return wcstox(s, p, base, ULLONG_MAX);
+unsigned long long wcstoull(const wchar_t* restrict s,
+                            wchar_t** restrict p,
+                            int base) {
+  return wcstox(s, p, base, ULLONG_MAX);
 }
 
-long long wcstoll(const wchar_t *restrict s, wchar_t **restrict p, int base)
-{
-	return wcstox(s, p, base, LLONG_MIN);
+long long wcstoll(const wchar_t* restrict s, wchar_t** restrict p, int base) {
+  return wcstox(s, p, base, LLONG_MIN);
 }
 
-unsigned long wcstoul(const wchar_t *restrict s, wchar_t **restrict p, int base)
-{
-	return wcstox(s, p, base, ULONG_MAX);
+unsigned long wcstoul(const wchar_t* restrict s,
+                      wchar_t** restrict p,
+                      int base) {
+  return wcstox(s, p, base, ULONG_MAX);
 }
 
-long wcstol(const wchar_t *restrict s, wchar_t **restrict p, int base)
-{
-	return wcstox(s, p, base, 0UL+LONG_MIN);
+long wcstol(const wchar_t* restrict s, wchar_t** restrict p, int base) {
+  return wcstox(s, p, base, 0UL + LONG_MIN);
 }
 
-intmax_t wcstoimax(const wchar_t *restrict s, wchar_t **restrict p, int base)
-{
-	return wcstoll(s, p, base);
+intmax_t wcstoimax(const wchar_t* restrict s, wchar_t** restrict p, int base) {
+  return wcstoll(s, p, base);
 }
 
-uintmax_t wcstoumax(const wchar_t *restrict s, wchar_t **restrict p, int base)
-{
-	return wcstoull(s, p, base);
+uintmax_t wcstoumax(const wchar_t* restrict s, wchar_t** restrict p, int base) {
+  return wcstoull(s, p, base);
 }
diff --git a/fusl/src/string/arm/__aeabi_memclr.c b/fusl/src/string/arm/__aeabi_memclr.c
index a25306d..9c46dc3 100644
--- a/fusl/src/string/arm/__aeabi_memclr.c
+++ b/fusl/src/string/arm/__aeabi_memclr.c
@@ -1,9 +1,8 @@
 #include <string.h>
 #include "libc.h"
 
-void __aeabi_memclr(void *dest, size_t n)
-{
-	memset(dest, 0, n);
+void __aeabi_memclr(void* dest, size_t n) {
+  memset(dest, 0, n);
 }
 weak_alias(__aeabi_memclr, __aeabi_memclr4);
 weak_alias(__aeabi_memclr, __aeabi_memclr8);
diff --git a/fusl/src/string/arm/__aeabi_memcpy.c b/fusl/src/string/arm/__aeabi_memcpy.c
index 4ae5c77..2aa50ea 100644
--- a/fusl/src/string/arm/__aeabi_memcpy.c
+++ b/fusl/src/string/arm/__aeabi_memcpy.c
@@ -1,9 +1,8 @@
 #include <string.h>
 #include "libc.h"
 
-void __aeabi_memcpy(void *restrict dest, const void *restrict src, size_t n)
-{
-	memcpy(dest, src, n);
+void __aeabi_memcpy(void* restrict dest, const void* restrict src, size_t n) {
+  memcpy(dest, src, n);
 }
 weak_alias(__aeabi_memcpy, __aeabi_memcpy4);
 weak_alias(__aeabi_memcpy, __aeabi_memcpy8);
diff --git a/fusl/src/string/arm/__aeabi_memmove.c b/fusl/src/string/arm/__aeabi_memmove.c
index 951e7d3..f7a1ca3 100644
--- a/fusl/src/string/arm/__aeabi_memmove.c
+++ b/fusl/src/string/arm/__aeabi_memmove.c
@@ -1,9 +1,8 @@
 #include <string.h>
 #include "libc.h"
 
-void __aeabi_memmove(void *dest, const void *src, size_t n)
-{
-	memmove(dest, src, n);
+void __aeabi_memmove(void* dest, const void* src, size_t n) {
+  memmove(dest, src, n);
 }
 weak_alias(__aeabi_memmove, __aeabi_memmove4);
 weak_alias(__aeabi_memmove, __aeabi_memmove8);
diff --git a/fusl/src/string/arm/__aeabi_memset.c b/fusl/src/string/arm/__aeabi_memset.c
index 8929975..65c8810 100644
--- a/fusl/src/string/arm/__aeabi_memset.c
+++ b/fusl/src/string/arm/__aeabi_memset.c
@@ -1,9 +1,8 @@
 #include <string.h>
 #include "libc.h"
 
-void __aeabi_memset(void *dest, size_t n, int c)
-{
-	memset(dest, c, n);
+void __aeabi_memset(void* dest, size_t n, int c) {
+  memset(dest, c, n);
 }
 weak_alias(__aeabi_memset, __aeabi_memset4);
 weak_alias(__aeabi_memset, __aeabi_memset8);
diff --git a/fusl/src/string/bcmp.c b/fusl/src/string/bcmp.c
index 87c6007..b1a0b3c 100644
--- a/fusl/src/string/bcmp.c
+++ b/fusl/src/string/bcmp.c
@@ -2,7 +2,6 @@
 #include <string.h>
 #include <strings.h>
 
-int bcmp(const void *s1, const void *s2, size_t n)
-{
-	return memcmp(s1, s2, n);
+int bcmp(const void* s1, const void* s2, size_t n) {
+  return memcmp(s1, s2, n);
 }
diff --git a/fusl/src/string/bcopy.c b/fusl/src/string/bcopy.c
index a07129f..65ab61a 100644
--- a/fusl/src/string/bcopy.c
+++ b/fusl/src/string/bcopy.c
@@ -2,7 +2,6 @@
 #include <string.h>
 #include <strings.h>
 
-void bcopy(const void *s1, void *s2, size_t n)
-{
-	memmove(s2, s1, n);
+void bcopy(const void* s1, void* s2, size_t n) {
+  memmove(s2, s1, n);
 }
diff --git a/fusl/src/string/bzero.c b/fusl/src/string/bzero.c
index ba536b0..091110e 100644
--- a/fusl/src/string/bzero.c
+++ b/fusl/src/string/bzero.c
@@ -2,7 +2,6 @@
 #include <string.h>
 #include <strings.h>
 
-void bzero(void *s, size_t n)
-{
-	memset(s, 0, n);
+void bzero(void* s, size_t n) {
+  memset(s, 0, n);
 }
diff --git a/fusl/src/string/index.c b/fusl/src/string/index.c
index 252948f..3b6e49d 100644
--- a/fusl/src/string/index.c
+++ b/fusl/src/string/index.c
@@ -2,7 +2,6 @@
 #include <string.h>
 #include <strings.h>
 
-char *index(const char *s, int c)
-{
-	return strchr(s, c);
+char* index(const char* s, int c) {
+  return strchr(s, c);
 }
diff --git a/fusl/src/string/memccpy.c b/fusl/src/string/memccpy.c
index 7c233d5..82e5fac 100644
--- a/fusl/src/string/memccpy.c
+++ b/fusl/src/string/memccpy.c
@@ -2,30 +2,36 @@
 #include <stdint.h>
 #include <limits.h>
 
-#define ALIGN (sizeof(size_t)-1)
-#define ONES ((size_t)-1/UCHAR_MAX)
-#define HIGHS (ONES * (UCHAR_MAX/2+1))
-#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS)
+#define ALIGN (sizeof(size_t) - 1)
+#define ONES ((size_t)-1 / UCHAR_MAX)
+#define HIGHS (ONES * (UCHAR_MAX / 2 + 1))
+#define HASZERO(x) ((x)-ONES & ~(x)&HIGHS)
 
-void *memccpy(void *restrict dest, const void *restrict src, int c, size_t n)
-{
-	unsigned char *d = dest;
-	const unsigned char *s = src;
-	size_t *wd, k;
-	const size_t *ws;
+void* memccpy(void* restrict dest, const void* restrict src, int c, size_t n) {
+  unsigned char* d = dest;
+  const unsigned char* s = src;
+  size_t *wd, k;
+  const size_t* ws;
 
-	c = (unsigned char)c;
-	if (((uintptr_t)s & ALIGN) == ((uintptr_t)d & ALIGN)) {
-		for (; ((uintptr_t)s & ALIGN) && n && (*d=*s)!=c; n--, s++, d++);
-		if ((uintptr_t)s & ALIGN) goto tail;
-		k = ONES * c;
-		wd=(void *)d; ws=(const void *)s;
-		for (; n>=sizeof(size_t) && !HASZERO(*ws^k);
-		       n-=sizeof(size_t), ws++, wd++) *wd = *ws;
-		d=(void *)wd; s=(const void *)ws;
-	}
-	for (; n && (*d=*s)!=c; n--, s++, d++);
+  c = (unsigned char)c;
+  if (((uintptr_t)s & ALIGN) == ((uintptr_t)d & ALIGN)) {
+    for (; ((uintptr_t)s & ALIGN) && n && (*d = *s) != c; n--, s++, d++)
+      ;
+    if ((uintptr_t)s & ALIGN)
+      goto tail;
+    k = ONES * c;
+    wd = (void*)d;
+    ws = (const void*)s;
+    for (; n >= sizeof(size_t) && !HASZERO(*ws ^ k);
+         n -= sizeof(size_t), ws++, wd++)
+      *wd = *ws;
+    d = (void*)wd;
+    s = (const void*)ws;
+  }
+  for (; n && (*d = *s) != c; n--, s++, d++)
+    ;
 tail:
-	if (*s==c) return d+1;
-	return 0;
+  if (*s == c)
+    return d + 1;
+  return 0;
 }
diff --git a/fusl/src/string/memchr.c b/fusl/src/string/memchr.c
index 4daff7b..237f748 100644
--- a/fusl/src/string/memchr.c
+++ b/fusl/src/string/memchr.c
@@ -3,21 +3,23 @@
 #include <limits.h>
 
 #define SS (sizeof(size_t))
-#define ALIGN (sizeof(size_t)-1)
-#define ONES ((size_t)-1/UCHAR_MAX)
-#define HIGHS (ONES * (UCHAR_MAX/2+1))
-#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS)
+#define ALIGN (sizeof(size_t) - 1)
+#define ONES ((size_t)-1 / UCHAR_MAX)
+#define HIGHS (ONES * (UCHAR_MAX / 2 + 1))
+#define HASZERO(x) ((x)-ONES & ~(x)&HIGHS)
 
-void *memchr(const void *src, int c, size_t n)
-{
-	const unsigned char *s = src;
-	c = (unsigned char)c;
-	for (; ((uintptr_t)s & ALIGN) && n && *s != c; s++, n--);
-	if (n && *s != c) {
-		const size_t *w;
-		size_t k = ONES * c;
-		for (w = (const void *)s; n>=SS && !HASZERO(*w^k); w++, n-=SS);
-		for (s = (const void *)w; n && *s != c; s++, n--);
-	}
-	return n ? (void *)s : 0;
+void* memchr(const void* src, int c, size_t n) {
+  const unsigned char* s = src;
+  c = (unsigned char)c;
+  for (; ((uintptr_t)s & ALIGN) && n && *s != c; s++, n--)
+    ;
+  if (n && *s != c) {
+    const size_t* w;
+    size_t k = ONES * c;
+    for (w = (const void*)s; n >= SS && !HASZERO(*w ^ k); w++, n -= SS)
+      ;
+    for (s = (const void*)w; n && *s != c; s++, n--)
+      ;
+  }
+  return n ? (void*)s : 0;
 }
diff --git a/fusl/src/string/memcmp.c b/fusl/src/string/memcmp.c
index bdbce9f..5cf3b19 100644
--- a/fusl/src/string/memcmp.c
+++ b/fusl/src/string/memcmp.c
@@ -1,8 +1,8 @@
 #include <string.h>
 
-int memcmp(const void *vl, const void *vr, size_t n)
-{
-	const unsigned char *l=vl, *r=vr;
-	for (; n && *l == *r; n--, l++, r++);
-	return n ? *l-*r : 0;
+int memcmp(const void* vl, const void* vr, size_t n) {
+  const unsigned char *l = vl, *r = vr;
+  for (; n && *l == *r; n--, l++, r++)
+    ;
+  return n ? *l - *r : 0;
 }
diff --git a/fusl/src/string/memcpy.c b/fusl/src/string/memcpy.c
index 06e8874..4889803 100644
--- a/fusl/src/string/memcpy.c
+++ b/fusl/src/string/memcpy.c
@@ -2,10 +2,9 @@
 #include <stdint.h>
 #include <endian.h>
 
-void *memcpy(void *restrict dest, const void *restrict src, size_t n)
-{
-	unsigned char *d = dest;
-	const unsigned char *s = src;
+void* memcpy(void* restrict dest, const void* restrict src, size_t n) {
+  unsigned char* d = dest;
+  const unsigned char* s = src;
 
 #ifdef __GNUC__
 
@@ -17,108 +16,136 @@
 #define RS >>
 #endif
 
-	typedef uint32_t __attribute__((__may_alias__)) u32;
-	uint32_t w, x;
+  typedef uint32_t __attribute__((__may_alias__)) u32;
+  uint32_t w, x;
 
-	for (; (uintptr_t)s % 4 && n; n--) *d++ = *s++;
+  for (; (uintptr_t)s % 4 && n; n--)
+    *d++ = *s++;
 
-	if ((uintptr_t)d % 4 == 0) {
-		for (; n>=16; s+=16, d+=16, n-=16) {
-			*(u32 *)(d+0) = *(u32 *)(s+0);
-			*(u32 *)(d+4) = *(u32 *)(s+4);
-			*(u32 *)(d+8) = *(u32 *)(s+8);
-			*(u32 *)(d+12) = *(u32 *)(s+12);
-		}
-		if (n&8) {
-			*(u32 *)(d+0) = *(u32 *)(s+0);
-			*(u32 *)(d+4) = *(u32 *)(s+4);
-			d += 8; s += 8;
-		}
-		if (n&4) {
-			*(u32 *)(d+0) = *(u32 *)(s+0);
-			d += 4; s += 4;
-		}
-		if (n&2) {
-			*d++ = *s++; *d++ = *s++;
-		}
-		if (n&1) {
-			*d = *s;
-		}
-		return dest;
-	}
+  if ((uintptr_t)d % 4 == 0) {
+    for (; n >= 16; s += 16, d += 16, n -= 16) {
+      *(u32*)(d + 0) = *(u32*)(s + 0);
+      *(u32*)(d + 4) = *(u32*)(s + 4);
+      *(u32*)(d + 8) = *(u32*)(s + 8);
+      *(u32*)(d + 12) = *(u32*)(s + 12);
+    }
+    if (n & 8) {
+      *(u32*)(d + 0) = *(u32*)(s + 0);
+      *(u32*)(d + 4) = *(u32*)(s + 4);
+      d += 8;
+      s += 8;
+    }
+    if (n & 4) {
+      *(u32*)(d + 0) = *(u32*)(s + 0);
+      d += 4;
+      s += 4;
+    }
+    if (n & 2) {
+      *d++ = *s++;
+      *d++ = *s++;
+    }
+    if (n & 1) {
+      *d = *s;
+    }
+    return dest;
+  }
 
-	if (n >= 32) switch ((uintptr_t)d % 4) {
-	case 1:
-		w = *(u32 *)s;
-		*d++ = *s++;
-		*d++ = *s++;
-		*d++ = *s++;
-		n -= 3;
-		for (; n>=17; s+=16, d+=16, n-=16) {
-			x = *(u32 *)(s+1);
-			*(u32 *)(d+0) = (w LS 24) | (x RS 8);
-			w = *(u32 *)(s+5);
-			*(u32 *)(d+4) = (x LS 24) | (w RS 8);
-			x = *(u32 *)(s+9);
-			*(u32 *)(d+8) = (w LS 24) | (x RS 8);
-			w = *(u32 *)(s+13);
-			*(u32 *)(d+12) = (x LS 24) | (w RS 8);
-		}
-		break;
-	case 2:
-		w = *(u32 *)s;
-		*d++ = *s++;
-		*d++ = *s++;
-		n -= 2;
-		for (; n>=18; s+=16, d+=16, n-=16) {
-			x = *(u32 *)(s+2);
-			*(u32 *)(d+0) = (w LS 16) | (x RS 16);
-			w = *(u32 *)(s+6);
-			*(u32 *)(d+4) = (x LS 16) | (w RS 16);
-			x = *(u32 *)(s+10);
-			*(u32 *)(d+8) = (w LS 16) | (x RS 16);
-			w = *(u32 *)(s+14);
-			*(u32 *)(d+12) = (x LS 16) | (w RS 16);
-		}
-		break;
-	case 3:
-		w = *(u32 *)s;
-		*d++ = *s++;
-		n -= 1;
-		for (; n>=19; s+=16, d+=16, n-=16) {
-			x = *(u32 *)(s+3);
-			*(u32 *)(d+0) = (w LS 8) | (x RS 24);
-			w = *(u32 *)(s+7);
-			*(u32 *)(d+4) = (x LS 8) | (w RS 24);
-			x = *(u32 *)(s+11);
-			*(u32 *)(d+8) = (w LS 8) | (x RS 24);
-			w = *(u32 *)(s+15);
-			*(u32 *)(d+12) = (x LS 8) | (w RS 24);
-		}
-		break;
-	}
-	if (n&16) {
-		*d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++;
-		*d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++;
-		*d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++;
-		*d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++;
-	}
-	if (n&8) {
-		*d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++;
-		*d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++;
-	}
-	if (n&4) {
-		*d++ = *s++; *d++ = *s++; *d++ = *s++; *d++ = *s++;
-	}
-	if (n&2) {
-		*d++ = *s++; *d++ = *s++;
-	}
-	if (n&1) {
-		*d = *s;
-	}
-	return dest;
+  if (n >= 32)
+    switch ((uintptr_t)d % 4) {
+      case 1:
+        w = *(u32*)s;
+        *d++ = *s++;
+        *d++ = *s++;
+        *d++ = *s++;
+        n -= 3;
+        for (; n >= 17; s += 16, d += 16, n -= 16) {
+          x = *(u32*)(s + 1);
+          *(u32*)(d + 0) = (w LS 24) | (x RS 8);
+          w = *(u32*)(s + 5);
+          *(u32*)(d + 4) = (x LS 24) | (w RS 8);
+          x = *(u32*)(s + 9);
+          *(u32*)(d + 8) = (w LS 24) | (x RS 8);
+          w = *(u32*)(s + 13);
+          *(u32*)(d + 12) = (x LS 24) | (w RS 8);
+        }
+        break;
+      case 2:
+        w = *(u32*)s;
+        *d++ = *s++;
+        *d++ = *s++;
+        n -= 2;
+        for (; n >= 18; s += 16, d += 16, n -= 16) {
+          x = *(u32*)(s + 2);
+          *(u32*)(d + 0) = (w LS 16) | (x RS 16);
+          w = *(u32*)(s + 6);
+          *(u32*)(d + 4) = (x LS 16) | (w RS 16);
+          x = *(u32*)(s + 10);
+          *(u32*)(d + 8) = (w LS 16) | (x RS 16);
+          w = *(u32*)(s + 14);
+          *(u32*)(d + 12) = (x LS 16) | (w RS 16);
+        }
+        break;
+      case 3:
+        w = *(u32*)s;
+        *d++ = *s++;
+        n -= 1;
+        for (; n >= 19; s += 16, d += 16, n -= 16) {
+          x = *(u32*)(s + 3);
+          *(u32*)(d + 0) = (w LS 8) | (x RS 24);
+          w = *(u32*)(s + 7);
+          *(u32*)(d + 4) = (x LS 8) | (w RS 24);
+          x = *(u32*)(s + 11);
+          *(u32*)(d + 8) = (w LS 8) | (x RS 24);
+          w = *(u32*)(s + 15);
+          *(u32*)(d + 12) = (x LS 8) | (w RS 24);
+        }
+        break;
+    }
+  if (n & 16) {
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+  }
+  if (n & 8) {
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+  }
+  if (n & 4) {
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+    *d++ = *s++;
+  }
+  if (n & 2) {
+    *d++ = *s++;
+    *d++ = *s++;
+  }
+  if (n & 1) {
+    *d = *s;
+  }
+  return dest;
 #endif
 
-	for (; n; n--) *d++ = *s++;
-	return dest;
+  for (; n; n--)
+    *d++ = *s++;
+  return dest;
 }
diff --git a/fusl/src/string/memmem.c b/fusl/src/string/memmem.c
index d7e1221..815e100 100644
--- a/fusl/src/string/memmem.c
+++ b/fusl/src/string/memmem.c
@@ -2,147 +2,175 @@
 #include <string.h>
 #include <stdint.h>
 
-static char *twobyte_memmem(const unsigned char *h, size_t k, const unsigned char *n)
-{
-	uint16_t nw = n[0]<<8 | n[1], hw = h[0]<<8 | h[1];
-	for (h++, k--; k; k--, hw = hw<<8 | *++h)
-		if (hw == nw) return (char *)h-1;
-	return 0;
+static char* twobyte_memmem(const unsigned char* h,
+                            size_t k,
+                            const unsigned char* n) {
+  uint16_t nw = n[0] << 8 | n[1], hw = h[0] << 8 | h[1];
+  for (h++, k--; k; k--, hw = hw << 8 | *++h)
+    if (hw == nw)
+      return (char*)h - 1;
+  return 0;
 }
 
-static char *threebyte_memmem(const unsigned char *h, size_t k, const unsigned char *n)
-{
-	uint32_t nw = n[0]<<24 | n[1]<<16 | n[2]<<8;
-	uint32_t hw = h[0]<<24 | h[1]<<16 | h[2]<<8;
-	for (h+=2, k-=2; k; k--, hw = (hw|*++h)<<8)
-		if (hw == nw) return (char *)h-2;
-	return 0;
+static char* threebyte_memmem(const unsigned char* h,
+                              size_t k,
+                              const unsigned char* n) {
+  uint32_t nw = n[0] << 24 | n[1] << 16 | n[2] << 8;
+  uint32_t hw = h[0] << 24 | h[1] << 16 | h[2] << 8;
+  for (h += 2, k -= 2; k; k--, hw = (hw | *++h) << 8)
+    if (hw == nw)
+      return (char*)h - 2;
+  return 0;
 }
 
-static char *fourbyte_memmem(const unsigned char *h, size_t k, const unsigned char *n)
-{
-	uint32_t nw = n[0]<<24 | n[1]<<16 | n[2]<<8 | n[3];
-	uint32_t hw = h[0]<<24 | h[1]<<16 | h[2]<<8 | h[3];
-	for (h+=3, k-=3; k; k--, hw = hw<<8 | *++h)
-		if (hw == nw) return (char *)h-3;
-	return 0;
+static char* fourbyte_memmem(const unsigned char* h,
+                             size_t k,
+                             const unsigned char* n) {
+  uint32_t nw = n[0] << 24 | n[1] << 16 | n[2] << 8 | n[3];
+  uint32_t hw = h[0] << 24 | h[1] << 16 | h[2] << 8 | h[3];
+  for (h += 3, k -= 3; k; k--, hw = hw << 8 | *++h)
+    if (hw == nw)
+      return (char*)h - 3;
+  return 0;
 }
 
-#define MAX(a,b) ((a)>(b)?(a):(b))
-#define MIN(a,b) ((a)<(b)?(a):(b))
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
 
-#define BITOP(a,b,op) \
- ((a)[(size_t)(b)/(8*sizeof *(a))] op (size_t)1<<((size_t)(b)%(8*sizeof *(a))))
+#define BITOP(a, b, op)                              \
+  ((a)[(size_t)(b) / (8 * sizeof *(a))] op(size_t) 1 \
+   << ((size_t)(b) % (8 * sizeof *(a))))
 
-static char *twoway_memmem(const unsigned char *h, const unsigned char *z, const unsigned char *n, size_t l)
-{
-	size_t i, ip, jp, k, p, ms, p0, mem, mem0;
-	size_t byteset[32 / sizeof(size_t)] = { 0 };
-	size_t shift[256];
+static char* twoway_memmem(const unsigned char* h,
+                           const unsigned char* z,
+                           const unsigned char* n,
+                           size_t l) {
+  size_t i, ip, jp, k, p, ms, p0, mem, mem0;
+  size_t byteset[32 / sizeof(size_t)] = {0};
+  size_t shift[256];
 
-	/* Computing length of needle and fill shift table */
-	for (i=0; i<l; i++)
-		BITOP(byteset, n[i], |=), shift[n[i]] = i+1;
+  /* Computing length of needle and fill shift table */
+  for (i = 0; i < l; i++)
+    BITOP(byteset, n[i], |=), shift[n[i]] = i + 1;
 
-	/* Compute maximal suffix */
-	ip = -1; jp = 0; k = p = 1;
-	while (jp+k<l) {
-		if (n[ip+k] == n[jp+k]) {
-			if (k == p) {
-				jp += p;
-				k = 1;
-			} else k++;
-		} else if (n[ip+k] > n[jp+k]) {
-			jp += k;
-			k = 1;
-			p = jp - ip;
-		} else {
-			ip = jp++;
-			k = p = 1;
-		}
-	}
-	ms = ip;
-	p0 = p;
+  /* Compute maximal suffix */
+  ip = -1;
+  jp = 0;
+  k = p = 1;
+  while (jp + k < l) {
+    if (n[ip + k] == n[jp + k]) {
+      if (k == p) {
+        jp += p;
+        k = 1;
+      } else
+        k++;
+    } else if (n[ip + k] > n[jp + k]) {
+      jp += k;
+      k = 1;
+      p = jp - ip;
+    } else {
+      ip = jp++;
+      k = p = 1;
+    }
+  }
+  ms = ip;
+  p0 = p;
 
-	/* And with the opposite comparison */
-	ip = -1; jp = 0; k = p = 1;
-	while (jp+k<l) {
-		if (n[ip+k] == n[jp+k]) {
-			if (k == p) {
-				jp += p;
-				k = 1;
-			} else k++;
-		} else if (n[ip+k] < n[jp+k]) {
-			jp += k;
-			k = 1;
-			p = jp - ip;
-		} else {
-			ip = jp++;
-			k = p = 1;
-		}
-	}
-	if (ip+1 > ms+1) ms = ip;
-	else p = p0;
+  /* And with the opposite comparison */
+  ip = -1;
+  jp = 0;
+  k = p = 1;
+  while (jp + k < l) {
+    if (n[ip + k] == n[jp + k]) {
+      if (k == p) {
+        jp += p;
+        k = 1;
+      } else
+        k++;
+    } else if (n[ip + k] < n[jp + k]) {
+      jp += k;
+      k = 1;
+      p = jp - ip;
+    } else {
+      ip = jp++;
+      k = p = 1;
+    }
+  }
+  if (ip + 1 > ms + 1)
+    ms = ip;
+  else
+    p = p0;
 
-	/* Periodic needle? */
-	if (memcmp(n, n+p, ms+1)) {
-		mem0 = 0;
-		p = MAX(ms, l-ms-1) + 1;
-	} else mem0 = l-p;
-	mem = 0;
+  /* Periodic needle? */
+  if (memcmp(n, n + p, ms + 1)) {
+    mem0 = 0;
+    p = MAX(ms, l - ms - 1) + 1;
+  } else
+    mem0 = l - p;
+  mem = 0;
 
-	/* Search loop */
-	for (;;) {
-		/* If remainder of haystack is shorter than needle, done */
-		if (z-h < l) return 0;
+  /* Search loop */
+  for (;;) {
+    /* If remainder of haystack is shorter than needle, done */
+    if (z - h < l)
+      return 0;
 
-		/* Check last byte first; advance by shift on mismatch */
-		if (BITOP(byteset, h[l-1], &)) {
-			k = l-shift[h[l-1]];
-			if (k) {
-				if (mem0 && mem && k < p) k = l-p;
-				h += k;
-				mem = 0;
-				continue;
-			}
-		} else {
-			h += l;
-			mem = 0;
-			continue;
-		}
+    /* Check last byte first; advance by shift on mismatch */
+    if (BITOP(byteset, h[l - 1], &)) {
+      k = l - shift[h[l - 1]];
+      if (k) {
+        if (mem0 && mem && k < p)
+          k = l - p;
+        h += k;
+        mem = 0;
+        continue;
+      }
+    } else {
+      h += l;
+      mem = 0;
+      continue;
+    }
 
-		/* Compare right half */
-		for (k=MAX(ms+1,mem); k<l && n[k] == h[k]; k++);
-		if (k < l) {
-			h += k-ms;
-			mem = 0;
-			continue;
-		}
-		/* Compare left half */
-		for (k=ms+1; k>mem && n[k-1] == h[k-1]; k--);
-		if (k <= mem) return (char *)h;
-		h += p;
-		mem = mem0;
-	}
+    /* Compare right half */
+    for (k = MAX(ms + 1, mem); k < l && n[k] == h[k]; k++)
+      ;
+    if (k < l) {
+      h += k - ms;
+      mem = 0;
+      continue;
+    }
+    /* Compare left half */
+    for (k = ms + 1; k > mem && n[k - 1] == h[k - 1]; k--)
+      ;
+    if (k <= mem)
+      return (char*)h;
+    h += p;
+    mem = mem0;
+  }
 }
 
-void *memmem(const void *h0, size_t k, const void *n0, size_t l)
-{
-	const unsigned char *h = h0, *n = n0;
+void* memmem(const void* h0, size_t k, const void* n0, size_t l) {
+  const unsigned char *h = h0, *n = n0;
 
-	/* Return immediately on empty needle */
-	if (!l) return (void *)h;
+  /* Return immediately on empty needle */
+  if (!l)
+    return (void*)h;
 
-	/* Return immediately when needle is longer than haystack */
-	if (k<l) return 0;
+  /* Return immediately when needle is longer than haystack */
+  if (k < l)
+    return 0;
 
-	/* Use faster algorithms for short needles */
-	h = memchr(h0, *n, k);
-	if (!h || l==1) return (void *)h;
-	k -= h - (const unsigned char *)h0;
-	if (l==2) return twobyte_memmem(h, k, n);
-	if (l==3) return threebyte_memmem(h, k, n);
-	if (l==4) return fourbyte_memmem(h, k, n);
+  /* Use faster algorithms for short needles */
+  h = memchr(h0, *n, k);
+  if (!h || l == 1)
+    return (void*)h;
+  k -= h - (const unsigned char*)h0;
+  if (l == 2)
+    return twobyte_memmem(h, k, n);
+  if (l == 3)
+    return threebyte_memmem(h, k, n);
+  if (l == 4)
+    return fourbyte_memmem(h, k, n);
 
-	return twoway_memmem(h, h+k, n, l);
+  return twoway_memmem(h, h + k, n, l);
 }
diff --git a/fusl/src/string/memmove.c b/fusl/src/string/memmove.c
index 27f670e..03aae1c 100644
--- a/fusl/src/string/memmove.c
+++ b/fusl/src/string/memmove.c
@@ -4,33 +4,40 @@
 #define WT size_t
 #define WS (sizeof(WT))
 
-void *memmove(void *dest, const void *src, size_t n)
-{
-	char *d = dest;
-	const char *s = src;
+void* memmove(void* dest, const void* src, size_t n) {
+  char* d = dest;
+  const char* s = src;
 
-	if (d==s) return d;
-	if (s+n <= d || d+n <= s) return memcpy(d, s, n);
+  if (d == s)
+    return d;
+  if (s + n <= d || d + n <= s)
+    return memcpy(d, s, n);
 
-	if (d<s) {
-		if ((uintptr_t)s % WS == (uintptr_t)d % WS) {
-			while ((uintptr_t)d % WS) {
-				if (!n--) return dest;
-				*d++ = *s++;
-			}
-			for (; n>=WS; n-=WS, d+=WS, s+=WS) *(WT *)d = *(WT *)s;
-		}
-		for (; n; n--) *d++ = *s++;
-	} else {
-		if ((uintptr_t)s % WS == (uintptr_t)d % WS) {
-			while ((uintptr_t)(d+n) % WS) {
-				if (!n--) return dest;
-				d[n] = s[n];
-			}
-			while (n>=WS) n-=WS, *(WT *)(d+n) = *(WT *)(s+n);
-		}
-		while (n) n--, d[n] = s[n];
-	}
+  if (d < s) {
+    if ((uintptr_t)s % WS == (uintptr_t)d % WS) {
+      while ((uintptr_t)d % WS) {
+        if (!n--)
+          return dest;
+        *d++ = *s++;
+      }
+      for (; n >= WS; n -= WS, d += WS, s += WS)
+        *(WT*)d = *(WT*)s;
+    }
+    for (; n; n--)
+      *d++ = *s++;
+  } else {
+    if ((uintptr_t)s % WS == (uintptr_t)d % WS) {
+      while ((uintptr_t)(d + n) % WS) {
+        if (!n--)
+          return dest;
+        d[n] = s[n];
+      }
+      while (n >= WS)
+        n -= WS, *(WT*)(d + n) = *(WT*)(s + n);
+    }
+    while (n)
+      n--, d[n] = s[n];
+  }
 
-	return dest;
+  return dest;
 }
diff --git a/fusl/src/string/mempcpy.c b/fusl/src/string/mempcpy.c
index a297985..0e59c64 100644
--- a/fusl/src/string/mempcpy.c
+++ b/fusl/src/string/mempcpy.c
@@ -1,7 +1,6 @@
 #define _GNU_SOURCE
 #include <string.h>
 
-void *mempcpy(void *dest, const void *src, size_t n)
-{
-	return (char *)memcpy(dest, src, n) + n;
+void* mempcpy(void* dest, const void* src, size_t n) {
+  return (char*)memcpy(dest, src, n) + n;
 }
diff --git a/fusl/src/string/memrchr.c b/fusl/src/string/memrchr.c
index a78e9d6..6eb9a27 100644
--- a/fusl/src/string/memrchr.c
+++ b/fusl/src/string/memrchr.c
@@ -1,12 +1,13 @@
 #include <string.h>
 #include "libc.h"
 
-void *__memrchr(const void *m, int c, size_t n)
-{
-	const unsigned char *s = m;
-	c = (unsigned char)c;
-	while (n--) if (s[n]==c) return (void *)(s+n);
-	return 0;
+void* __memrchr(const void* m, int c, size_t n) {
+  const unsigned char* s = m;
+  c = (unsigned char)c;
+  while (n--)
+    if (s[n] == c)
+      return (void*)(s + n);
+  return 0;
 }
 
 weak_alias(__memrchr, memrchr);
diff --git a/fusl/src/string/memset.c b/fusl/src/string/memset.c
index f438b07..3bc1e27 100644
--- a/fusl/src/string/memset.c
+++ b/fusl/src/string/memset.c
@@ -1,86 +1,92 @@
 #include <string.h>
 #include <stdint.h>
 
-void *memset(void *dest, int c, size_t n)
-{
-	unsigned char *s = dest;
-	size_t k;
+void* memset(void* dest, int c, size_t n) {
+  unsigned char* s = dest;
+  size_t k;
 
-	/* Fill head and tail with minimal branching. Each
-	 * conditional ensures that all the subsequently used
-	 * offsets are well-defined and in the dest region. */
+  /* Fill head and tail with minimal branching. Each
+   * conditional ensures that all the subsequently used
+   * offsets are well-defined and in the dest region. */
 
-	if (!n) return dest;
-	s[0] = s[n-1] = c;
-	if (n <= 2) return dest;
-	s[1] = s[n-2] = c;
-	s[2] = s[n-3] = c;
-	if (n <= 6) return dest;
-	s[3] = s[n-4] = c;
-	if (n <= 8) return dest;
+  if (!n)
+    return dest;
+  s[0] = s[n - 1] = c;
+  if (n <= 2)
+    return dest;
+  s[1] = s[n - 2] = c;
+  s[2] = s[n - 3] = c;
+  if (n <= 6)
+    return dest;
+  s[3] = s[n - 4] = c;
+  if (n <= 8)
+    return dest;
 
-	/* Advance pointer to align it at a 4-byte boundary,
-	 * and truncate n to a multiple of 4. The previous code
-	 * already took care of any head/tail that get cut off
-	 * by the alignment. */
+  /* Advance pointer to align it at a 4-byte boundary,
+   * and truncate n to a multiple of 4. The previous code
+   * already took care of any head/tail that get cut off
+   * by the alignment. */
 
-	k = -(uintptr_t)s & 3;
-	s += k;
-	n -= k;
-	n &= -4;
+  k = -(uintptr_t)s & 3;
+  s += k;
+  n -= k;
+  n &= -4;
 
 #ifdef __GNUC__
-	typedef uint32_t __attribute__((__may_alias__)) u32;
-	typedef uint64_t __attribute__((__may_alias__)) u64;
+  typedef uint32_t __attribute__((__may_alias__)) u32;
+  typedef uint64_t __attribute__((__may_alias__)) u64;
 
-	u32 c32 = ((u32)-1)/255 * (unsigned char)c;
+  u32 c32 = ((u32)-1) / 255 * (unsigned char)c;
 
-	/* In preparation to copy 32 bytes at a time, aligned on
-	 * an 8-byte bounary, fill head/tail up to 28 bytes each.
-	 * As in the initial byte-based head/tail fill, each
-	 * conditional below ensures that the subsequent offsets
-	 * are valid (e.g. !(n<=24) implies n>=28). */
+  /* In preparation to copy 32 bytes at a time, aligned on
+   * an 8-byte bounary, fill head/tail up to 28 bytes each.
+   * As in the initial byte-based head/tail fill, each
+   * conditional below ensures that the subsequent offsets
+   * are valid (e.g. !(n<=24) implies n>=28). */
 
-	*(u32 *)(s+0) = c32;
-	*(u32 *)(s+n-4) = c32;
-	if (n <= 8) return dest;
-	*(u32 *)(s+4) = c32;
-	*(u32 *)(s+8) = c32;
-	*(u32 *)(s+n-12) = c32;
-	*(u32 *)(s+n-8) = c32;
-	if (n <= 24) return dest;
-	*(u32 *)(s+12) = c32;
-	*(u32 *)(s+16) = c32;
-	*(u32 *)(s+20) = c32;
-	*(u32 *)(s+24) = c32;
-	*(u32 *)(s+n-28) = c32;
-	*(u32 *)(s+n-24) = c32;
-	*(u32 *)(s+n-20) = c32;
-	*(u32 *)(s+n-16) = c32;
+  *(u32*)(s + 0) = c32;
+  *(u32*)(s + n - 4) = c32;
+  if (n <= 8)
+    return dest;
+  *(u32*)(s + 4) = c32;
+  *(u32*)(s + 8) = c32;
+  *(u32*)(s + n - 12) = c32;
+  *(u32*)(s + n - 8) = c32;
+  if (n <= 24)
+    return dest;
+  *(u32*)(s + 12) = c32;
+  *(u32*)(s + 16) = c32;
+  *(u32*)(s + 20) = c32;
+  *(u32*)(s + 24) = c32;
+  *(u32*)(s + n - 28) = c32;
+  *(u32*)(s + n - 24) = c32;
+  *(u32*)(s + n - 20) = c32;
+  *(u32*)(s + n - 16) = c32;
 
-	/* Align to a multiple of 8 so we can fill 64 bits at a time,
-	 * and avoid writing the same bytes twice as much as is
-	 * practical without introducing additional branching. */
+  /* Align to a multiple of 8 so we can fill 64 bits at a time,
+   * and avoid writing the same bytes twice as much as is
+   * practical without introducing additional branching. */
 
-	k = 24 + ((uintptr_t)s & 4);
-	s += k;
-	n -= k;
+  k = 24 + ((uintptr_t)s & 4);
+  s += k;
+  n -= k;
 
-	/* If this loop is reached, 28 tail bytes have already been
-	 * filled, so any remainder when n drops below 32 can be
-	 * safely ignored. */
+  /* If this loop is reached, 28 tail bytes have already been
+   * filled, so any remainder when n drops below 32 can be
+   * safely ignored. */
 
-	u64 c64 = c32 | ((u64)c32 << 32);
-	for (; n >= 32; n-=32, s+=32) {
-		*(u64 *)(s+0) = c64;
-		*(u64 *)(s+8) = c64;
-		*(u64 *)(s+16) = c64;
-		*(u64 *)(s+24) = c64;
-	}
+  u64 c64 = c32 | ((u64)c32 << 32);
+  for (; n >= 32; n -= 32, s += 32) {
+    *(u64*)(s + 0) = c64;
+    *(u64*)(s + 8) = c64;
+    *(u64*)(s + 16) = c64;
+    *(u64*)(s + 24) = c64;
+  }
 #else
-	/* Pure C fallback with no aliasing violations. */
-	for (; n; n--, s++) *s = c;
+  /* Pure C fallback with no aliasing violations. */
+  for (; n; n--, s++)
+    *s = c;
 #endif
 
-	return dest;
+  return dest;
 }
diff --git a/fusl/src/string/rindex.c b/fusl/src/string/rindex.c
index 693c750..d7a7cc1 100644
--- a/fusl/src/string/rindex.c
+++ b/fusl/src/string/rindex.c
@@ -2,7 +2,6 @@
 #include <string.h>
 #include <strings.h>
 
-char *rindex(const char *s, int c)
-{
-	return strrchr(s, c);
+char* rindex(const char* s, int c) {
+  return strrchr(s, c);
 }
diff --git a/fusl/src/string/stpcpy.c b/fusl/src/string/stpcpy.c
index 06623c4..31b1323 100644
--- a/fusl/src/string/stpcpy.c
+++ b/fusl/src/string/stpcpy.c
@@ -4,25 +4,29 @@
 #include "libc.h"
 
 #define ALIGN (sizeof(size_t))
-#define ONES ((size_t)-1/UCHAR_MAX)
-#define HIGHS (ONES * (UCHAR_MAX/2+1))
-#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS)
+#define ONES ((size_t)-1 / UCHAR_MAX)
+#define HIGHS (ONES * (UCHAR_MAX / 2 + 1))
+#define HASZERO(x) ((x)-ONES & ~(x)&HIGHS)
 
-char *__stpcpy(char *restrict d, const char *restrict s)
-{
-	size_t *wd;
-	const size_t *ws;
+char* __stpcpy(char* restrict d, const char* restrict s) {
+  size_t* wd;
+  const size_t* ws;
 
-	if ((uintptr_t)s % ALIGN == (uintptr_t)d % ALIGN) {
-		for (; (uintptr_t)s % ALIGN; s++, d++)
-			if (!(*d=*s)) return d;
-		wd=(void *)d; ws=(const void *)s;
-		for (; !HASZERO(*ws); *wd++ = *ws++);
-		d=(void *)wd; s=(const void *)ws;
-	}
-	for (; (*d=*s); s++, d++);
+  if ((uintptr_t)s % ALIGN == (uintptr_t)d % ALIGN) {
+    for (; (uintptr_t)s % ALIGN; s++, d++)
+      if (!(*d = *s))
+        return d;
+    wd = (void*)d;
+    ws = (const void*)s;
+    for (; !HASZERO(*ws); *wd++ = *ws++)
+      ;
+    d = (void*)wd;
+    s = (const void*)ws;
+  }
+  for (; (*d = *s); s++, d++)
+    ;
 
-	return d;
+  return d;
 }
 
 weak_alias(__stpcpy, stpcpy);
diff --git a/fusl/src/string/stpncpy.c b/fusl/src/string/stpncpy.c
index 1f57a4d..1860fb9 100644
--- a/fusl/src/string/stpncpy.c
+++ b/fusl/src/string/stpncpy.c
@@ -3,29 +3,33 @@
 #include <limits.h>
 #include "libc.h"
 
-#define ALIGN (sizeof(size_t)-1)
-#define ONES ((size_t)-1/UCHAR_MAX)
-#define HIGHS (ONES * (UCHAR_MAX/2+1))
-#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS)
+#define ALIGN (sizeof(size_t) - 1)
+#define ONES ((size_t)-1 / UCHAR_MAX)
+#define HIGHS (ONES * (UCHAR_MAX / 2 + 1))
+#define HASZERO(x) ((x)-ONES & ~(x)&HIGHS)
 
-char *__stpncpy(char *restrict d, const char *restrict s, size_t n)
-{
-	size_t *wd;
-	const size_t *ws;
+char* __stpncpy(char* restrict d, const char* restrict s, size_t n) {
+  size_t* wd;
+  const size_t* ws;
 
-	if (((uintptr_t)s & ALIGN) == ((uintptr_t)d & ALIGN)) {
-		for (; ((uintptr_t)s & ALIGN) && n && (*d=*s); n--, s++, d++);
-		if (!n || !*s) goto tail;
-		wd=(void *)d; ws=(const void *)s;
-		for (; n>=sizeof(size_t) && !HASZERO(*ws);
-		       n-=sizeof(size_t), ws++, wd++) *wd = *ws;
-		d=(void *)wd; s=(const void *)ws;
-	}
-	for (; n && (*d=*s); n--, s++, d++);
+  if (((uintptr_t)s & ALIGN) == ((uintptr_t)d & ALIGN)) {
+    for (; ((uintptr_t)s & ALIGN) && n && (*d = *s); n--, s++, d++)
+      ;
+    if (!n || !*s)
+      goto tail;
+    wd = (void*)d;
+    ws = (const void*)s;
+    for (; n >= sizeof(size_t) && !HASZERO(*ws);
+         n -= sizeof(size_t), ws++, wd++)
+      *wd = *ws;
+    d = (void*)wd;
+    s = (const void*)ws;
+  }
+  for (; n && (*d = *s); n--, s++, d++)
+    ;
 tail:
-	memset(d, 0, n);
-	return d;
+  memset(d, 0, n);
+  return d;
 }
 
 weak_alias(__stpncpy, stpncpy);
-
diff --git a/fusl/src/string/strcasecmp.c b/fusl/src/string/strcasecmp.c
index 3cd5f2d..dc85728 100644
--- a/fusl/src/string/strcasecmp.c
+++ b/fusl/src/string/strcasecmp.c
@@ -2,16 +2,15 @@
 #include <ctype.h>
 #include "libc.h"
 
-int strcasecmp(const char *_l, const char *_r)
-{
-	const unsigned char *l=(void *)_l, *r=(void *)_r;
-	for (; *l && *r && (*l == *r || tolower(*l) == tolower(*r)); l++, r++);
-	return tolower(*l) - tolower(*r);
+int strcasecmp(const char* _l, const char* _r) {
+  const unsigned char *l = (void *)_l, *r = (void *)_r;
+  for (; *l && *r && (*l == *r || tolower(*l) == tolower(*r)); l++, r++)
+    ;
+  return tolower(*l) - tolower(*r);
 }
 
-int __strcasecmp_l(const char *l, const char *r, locale_t loc)
-{
-	return strcasecmp(l, r);
+int __strcasecmp_l(const char* l, const char* r, locale_t loc) {
+  return strcasecmp(l, r);
 }
 
 weak_alias(__strcasecmp_l, strcasecmp_l);
diff --git a/fusl/src/string/strcasestr.c b/fusl/src/string/strcasestr.c
index af109f3..695da2e 100644
--- a/fusl/src/string/strcasestr.c
+++ b/fusl/src/string/strcasestr.c
@@ -1,9 +1,10 @@
 #define _GNU_SOURCE
 #include <string.h>
 
-char *strcasestr(const char *h, const char *n)
-{
-	size_t l = strlen(n);
-	for (; *h; h++) if (!strncasecmp(h, n, l)) return (char *)h;
-	return 0;
+char* strcasestr(const char* h, const char* n) {
+  size_t l = strlen(n);
+  for (; *h; h++)
+    if (!strncasecmp(h, n, l))
+      return (char*)h;
+  return 0;
 }
diff --git a/fusl/src/string/strcat.c b/fusl/src/string/strcat.c
index 33f749b..d86bb3b 100644
--- a/fusl/src/string/strcat.c
+++ b/fusl/src/string/strcat.c
@@ -1,7 +1,6 @@
 #include <string.h>
 
-char *strcat(char *restrict dest, const char *restrict src)
-{
-	strcpy(dest + strlen(dest), src);
-	return dest;
+char* strcat(char* restrict dest, const char* restrict src) {
+  strcpy(dest + strlen(dest), src);
+  return dest;
 }
diff --git a/fusl/src/string/strchr.c b/fusl/src/string/strchr.c
index bfae8f9..770e2fe 100644
--- a/fusl/src/string/strchr.c
+++ b/fusl/src/string/strchr.c
@@ -1,9 +1,8 @@
 #include <string.h>
 
-char *__strchrnul(const char *, int);
+char* __strchrnul(const char*, int);
 
-char *strchr(const char *s, int c)
-{
-	char *r = __strchrnul(s, c);
-	return *(unsigned char *)r == (unsigned char)c ? r : 0;
+char* strchr(const char* s, int c) {
+  char* r = __strchrnul(s, c);
+  return *(unsigned char*)r == (unsigned char)c ? r : 0;
 }
diff --git a/fusl/src/string/strchrnul.c b/fusl/src/string/strchrnul.c
index 05700ad..f979327 100644
--- a/fusl/src/string/strchrnul.c
+++ b/fusl/src/string/strchrnul.c
@@ -4,23 +4,26 @@
 #include "libc.h"
 
 #define ALIGN (sizeof(size_t))
-#define ONES ((size_t)-1/UCHAR_MAX)
-#define HIGHS (ONES * (UCHAR_MAX/2+1))
-#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS)
+#define ONES ((size_t)-1 / UCHAR_MAX)
+#define HIGHS (ONES * (UCHAR_MAX / 2 + 1))
+#define HASZERO(x) ((x)-ONES & ~(x)&HIGHS)
 
-char *__strchrnul(const char *s, int c)
-{
-	size_t *w, k;
+char* __strchrnul(const char* s, int c) {
+  size_t *w, k;
 
-	c = (unsigned char)c;
-	if (!c) return (char *)s + strlen(s);
+  c = (unsigned char)c;
+  if (!c)
+    return (char*)s + strlen(s);
 
-	for (; (uintptr_t)s % ALIGN; s++)
-		if (!*s || *(unsigned char *)s == c) return (char *)s;
-	k = ONES * c;
-	for (w = (void *)s; !HASZERO(*w) && !HASZERO(*w^k); w++);
-	for (s = (void *)w; *s && *(unsigned char *)s != c; s++);
-	return (char *)s;
+  for (; (uintptr_t)s % ALIGN; s++)
+    if (!*s || *(unsigned char*)s == c)
+      return (char*)s;
+  k = ONES * c;
+  for (w = (void*)s; !HASZERO(*w) && !HASZERO(*w ^ k); w++)
+    ;
+  for (s = (void*)w; *s && *(unsigned char*)s != c; s++)
+    ;
+  return (char*)s;
 }
 
 weak_alias(__strchrnul, strchrnul);
diff --git a/fusl/src/string/strcmp.c b/fusl/src/string/strcmp.c
index 808bd83..b900a2f 100644
--- a/fusl/src/string/strcmp.c
+++ b/fusl/src/string/strcmp.c
@@ -1,7 +1,7 @@
 #include <string.h>
 
-int strcmp(const char *l, const char *r)
-{
-	for (; *l==*r && *l; l++, r++);
-	return *(unsigned char *)l - *(unsigned char *)r;
+int strcmp(const char* l, const char* r) {
+  for (; *l == *r && *l; l++, r++)
+    ;
+  return *(unsigned char*)l - *(unsigned char*)r;
 }
diff --git a/fusl/src/string/strcpy.c b/fusl/src/string/strcpy.c
index f7e3ba3..485e108 100644
--- a/fusl/src/string/strcpy.c
+++ b/fusl/src/string/strcpy.c
@@ -1,16 +1,16 @@
 #include <string.h>
 
-char *__stpcpy(char *, const char *);
+char* __stpcpy(char*, const char*);
 
-char *strcpy(char *restrict dest, const char *restrict src)
-{
+char* strcpy(char* restrict dest, const char* restrict src) {
 #if 1
-	__stpcpy(dest, src);
-	return dest;
+  __stpcpy(dest, src);
+  return dest;
 #else
-	const unsigned char *s = src;
-	unsigned char *d = dest;
-	while ((*d++ = *s++));
-	return dest;
+  const unsigned char* s = src;
+  unsigned char* d = dest;
+  while ((*d++ = *s++))
+    ;
+  return dest;
 #endif
 }
diff --git a/fusl/src/string/strcspn.c b/fusl/src/string/strcspn.c
index cfdba11..eba8dc6 100644
--- a/fusl/src/string/strcspn.c
+++ b/fusl/src/string/strcspn.c
@@ -1,19 +1,22 @@
 #include <string.h>
 
-#define BITOP(a,b,op) \
- ((a)[(size_t)(b)/(8*sizeof *(a))] op (size_t)1<<((size_t)(b)%(8*sizeof *(a))))
+#define BITOP(a, b, op)                              \
+  ((a)[(size_t)(b) / (8 * sizeof *(a))] op(size_t) 1 \
+   << ((size_t)(b) % (8 * sizeof *(a))))
 
-char *__strchrnul(const char *, int);
+char* __strchrnul(const char*, int);
 
-size_t strcspn(const char *s, const char *c)
-{
-	const char *a = s;
-	size_t byteset[32/sizeof(size_t)];
+size_t strcspn(const char* s, const char* c) {
+  const char* a = s;
+  size_t byteset[32 / sizeof(size_t)];
 
-	if (!c[0] || !c[1]) return __strchrnul(s, *c)-a;
+  if (!c[0] || !c[1])
+    return __strchrnul(s, *c) - a;
 
-	memset(byteset, 0, sizeof byteset);
-	for (; *c && BITOP(byteset, *(unsigned char *)c, |=); c++);
-	for (; *s && !BITOP(byteset, *(unsigned char *)s, &); s++);
-	return s-a;
+  memset(byteset, 0, sizeof byteset);
+  for (; *c && BITOP(byteset, *(unsigned char*)c, |=); c++)
+    ;
+  for (; *s && !BITOP(byteset, *(unsigned char*)s, &); s++)
+    ;
+  return s - a;
 }
diff --git a/fusl/src/string/strdup.c b/fusl/src/string/strdup.c
index dd5f80c..6557b10 100644
--- a/fusl/src/string/strdup.c
+++ b/fusl/src/string/strdup.c
@@ -2,12 +2,12 @@
 #include <string.h>
 #include "libc.h"
 
-char *__strdup(const char *s)
-{
-	size_t l = strlen(s);
-	char *d = malloc(l+1);
-	if (!d) return NULL;
-	return memcpy(d, s, l+1);
+char* __strdup(const char* s) {
+  size_t l = strlen(s);
+  char* d = malloc(l + 1);
+  if (!d)
+    return NULL;
+  return memcpy(d, s, l + 1);
 }
 
 weak_alias(__strdup, strdup);
diff --git a/fusl/src/string/strerror_r.c b/fusl/src/string/strerror_r.c
index da26b4f..3341d3b 100644
--- a/fusl/src/string/strerror_r.c
+++ b/fusl/src/string/strerror_r.c
@@ -2,19 +2,18 @@
 #include <errno.h>
 #include "libc.h"
 
-int strerror_r(int err, char *buf, size_t buflen)
-{
-	char *msg = strerror(err);
-	size_t l = strlen(msg);
-	if (l >= buflen) {
-		if (buflen) {
-			memcpy(buf, msg, buflen-1);
-			buf[buflen-1] = 0;
-		}
-		return ERANGE;
-	}
-	memcpy(buf, msg, l+1);
-	return 0;
+int strerror_r(int err, char* buf, size_t buflen) {
+  char* msg = strerror(err);
+  size_t l = strlen(msg);
+  if (l >= buflen) {
+    if (buflen) {
+      memcpy(buf, msg, buflen - 1);
+      buf[buflen - 1] = 0;
+    }
+    return ERANGE;
+  }
+  memcpy(buf, msg, l + 1);
+  return 0;
 }
 
 weak_alias(strerror_r, __xpg_strerror_r);
diff --git a/fusl/src/string/strlcat.c b/fusl/src/string/strlcat.c
index ef81209..243fc15 100644
--- a/fusl/src/string/strlcat.c
+++ b/fusl/src/string/strlcat.c
@@ -1,9 +1,9 @@
 #define _BSD_SOURCE
 #include <string.h>
 
-size_t strlcat(char *d, const char *s, size_t n)
-{
-	size_t l = strnlen(d, n);
-	if (l == n) return l + strlen(s);
-	return l + strlcpy(d+l, s, n-l);
+size_t strlcat(char* d, const char* s, size_t n) {
+  size_t l = strnlen(d, n);
+  if (l == n)
+    return l + strlen(s);
+  return l + strlcpy(d + l, s, n - l);
 }
diff --git a/fusl/src/string/strlcpy.c b/fusl/src/string/strlcpy.c
index 193d724..66dd516 100644
--- a/fusl/src/string/strlcpy.c
+++ b/fusl/src/string/strlcpy.c
@@ -4,29 +4,34 @@
 #include <limits.h>
 #include "libc.h"
 
-#define ALIGN (sizeof(size_t)-1)
-#define ONES ((size_t)-1/UCHAR_MAX)
-#define HIGHS (ONES * (UCHAR_MAX/2+1))
-#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS)
+#define ALIGN (sizeof(size_t) - 1)
+#define ONES ((size_t)-1 / UCHAR_MAX)
+#define HIGHS (ONES * (UCHAR_MAX / 2 + 1))
+#define HASZERO(x) ((x)-ONES & ~(x)&HIGHS)
 
-size_t strlcpy(char *d, const char *s, size_t n)
-{
-	char *d0 = d;
-	size_t *wd;
-	const size_t *ws;
+size_t strlcpy(char* d, const char* s, size_t n) {
+  char* d0 = d;
+  size_t* wd;
+  const size_t* ws;
 
-	if (!n--) goto finish;
-	if (((uintptr_t)s & ALIGN) == ((uintptr_t)d & ALIGN)) {
-		for (; ((uintptr_t)s & ALIGN) && n && (*d=*s); n--, s++, d++);
-		if (n && *s) {
-			wd=(void *)d; ws=(const void *)s;
-			for (; n>=sizeof(size_t) && !HASZERO(*ws);
-			       n-=sizeof(size_t), ws++, wd++) *wd = *ws;
-			d=(void *)wd; s=(const void *)ws;
-		}
-	}
-	for (; n && (*d=*s); n--, s++, d++);
-	*d = 0;
+  if (!n--)
+    goto finish;
+  if (((uintptr_t)s & ALIGN) == ((uintptr_t)d & ALIGN)) {
+    for (; ((uintptr_t)s & ALIGN) && n && (*d = *s); n--, s++, d++)
+      ;
+    if (n && *s) {
+      wd = (void*)d;
+      ws = (const void*)s;
+      for (; n >= sizeof(size_t) && !HASZERO(*ws);
+           n -= sizeof(size_t), ws++, wd++)
+        *wd = *ws;
+      d = (void*)wd;
+      s = (const void*)ws;
+    }
+  }
+  for (; n && (*d = *s); n--, s++, d++)
+    ;
+  *d = 0;
 finish:
-	return d-d0 + strlen(s);
+  return d - d0 + strlen(s);
 }
diff --git a/fusl/src/string/strlen.c b/fusl/src/string/strlen.c
index 929ddcb..2358b11 100644
--- a/fusl/src/string/strlen.c
+++ b/fusl/src/string/strlen.c
@@ -3,16 +3,19 @@
 #include <limits.h>
 
 #define ALIGN (sizeof(size_t))
-#define ONES ((size_t)-1/UCHAR_MAX)
-#define HIGHS (ONES * (UCHAR_MAX/2+1))
-#define HASZERO(x) ((x)-ONES & ~(x) & HIGHS)
+#define ONES ((size_t)-1 / UCHAR_MAX)
+#define HIGHS (ONES * (UCHAR_MAX / 2 + 1))
+#define HASZERO(x) ((x)-ONES & ~(x)&HIGHS)
 
-size_t strlen(const char *s)
-{
-	const char *a = s;
-	const size_t *w;
-	for (; (uintptr_t)s % ALIGN; s++) if (!*s) return s-a;
-	for (w = (const void *)s; !HASZERO(*w); w++);
-	for (s = (const void *)w; *s; s++);
-	return s-a;
+size_t strlen(const char* s) {
+  const char* a = s;
+  const size_t* w;
+  for (; (uintptr_t)s % ALIGN; s++)
+    if (!*s)
+      return s - a;
+  for (w = (const void*)s; !HASZERO(*w); w++)
+    ;
+  for (s = (const void*)w; *s; s++)
+    ;
+  return s - a;
 }
diff --git a/fusl/src/string/strncasecmp.c b/fusl/src/string/strncasecmp.c
index 3af5300..9e8db9b 100644
--- a/fusl/src/string/strncasecmp.c
+++ b/fusl/src/string/strncasecmp.c
@@ -2,17 +2,18 @@
 #include <ctype.h>
 #include "libc.h"
 
-int strncasecmp(const char *_l, const char *_r, size_t n)
-{
-	const unsigned char *l=(void *)_l, *r=(void *)_r;
-	if (!n--) return 0;
-	for (; *l && *r && n && (*l == *r || tolower(*l) == tolower(*r)); l++, r++, n--);
-	return tolower(*l) - tolower(*r);
+int strncasecmp(const char* _l, const char* _r, size_t n) {
+  const unsigned char *l = (void *)_l, *r = (void *)_r;
+  if (!n--)
+    return 0;
+  for (; *l && *r && n && (*l == *r || tolower(*l) == tolower(*r));
+       l++, r++, n--)
+    ;
+  return tolower(*l) - tolower(*r);
 }
 
-int __strncasecmp_l(const char *l, const char *r, size_t n, locale_t loc)
-{
-	return strncasecmp(l, r, n);
+int __strncasecmp_l(const char* l, const char* r, size_t n, locale_t loc) {
+  return strncasecmp(l, r, n);
 }
 
 weak_alias(__strncasecmp_l, strncasecmp_l);
diff --git a/fusl/src/string/strncat.c b/fusl/src/string/strncat.c
index 01ca2a2..30f6499 100644
--- a/fusl/src/string/strncat.c
+++ b/fusl/src/string/strncat.c
@@ -1,10 +1,10 @@
 #include <string.h>
 
-char *strncat(char *restrict d, const char *restrict s, size_t n)
-{
-	char *a = d;
-	d += strlen(d);
-	while (n && *s) n--, *d++ = *s++;
-	*d++ = 0;
-	return a;
+char* strncat(char* restrict d, const char* restrict s, size_t n) {
+  char* a = d;
+  d += strlen(d);
+  while (n && *s)
+    n--, *d++ = *s++;
+  *d++ = 0;
+  return a;
 }
diff --git a/fusl/src/string/strncmp.c b/fusl/src/string/strncmp.c
index e228843..212c0a5 100644
--- a/fusl/src/string/strncmp.c
+++ b/fusl/src/string/strncmp.c
@@ -1,9 +1,10 @@
 #include <string.h>
 
-int strncmp(const char *_l, const char *_r, size_t n)
-{
-	const unsigned char *l=(void *)_l, *r=(void *)_r;
-	if (!n--) return 0;
-	for (; *l && *r && n && *l == *r ; l++, r++, n--);
-	return *l - *r;
+int strncmp(const char* _l, const char* _r, size_t n) {
+  const unsigned char *l = (void *)_l, *r = (void *)_r;
+  if (!n--)
+    return 0;
+  for (; *l && *r && n && *l == *r; l++, r++, n--)
+    ;
+  return *l - *r;
 }
diff --git a/fusl/src/string/strncpy.c b/fusl/src/string/strncpy.c
index 441ba03..2338146 100644
--- a/fusl/src/string/strncpy.c
+++ b/fusl/src/string/strncpy.c
@@ -1,9 +1,8 @@
 #include <string.h>
 
-char *__stpncpy(char *, const char *, size_t);
+char* __stpncpy(char*, const char*, size_t);
 
-char *strncpy(char *restrict d, const char *restrict s, size_t n)
-{
-	__stpncpy(d, s, n);
-	return d;
+char* strncpy(char* restrict d, const char* restrict s, size_t n) {
+  __stpncpy(d, s, n);
+  return d;
 }
diff --git a/fusl/src/string/strndup.c b/fusl/src/string/strndup.c
index 617d27b..31c3467 100644
--- a/fusl/src/string/strndup.c
+++ b/fusl/src/string/strndup.c
@@ -1,12 +1,12 @@
 #include <stdlib.h>
 #include <string.h>
 
-char *strndup(const char *s, size_t n)
-{
-	size_t l = strnlen(s, n);
-	char *d = malloc(l+1);
-	if (!d) return NULL;
-	memcpy(d, s, l);
-	d[l] = 0;
-	return d;
+char* strndup(const char* s, size_t n) {
+  size_t l = strnlen(s, n);
+  char* d = malloc(l + 1);
+  if (!d)
+    return NULL;
+  memcpy(d, s, l);
+  d[l] = 0;
+  return d;
 }
diff --git a/fusl/src/string/strnlen.c b/fusl/src/string/strnlen.c
index 6442eb7..0997069 100644
--- a/fusl/src/string/strnlen.c
+++ b/fusl/src/string/strnlen.c
@@ -1,7 +1,6 @@
 #include <string.h>
 
-size_t strnlen(const char *s, size_t n)
-{
-	const char *p = memchr(s, 0, n);
-	return p ? p-s : n;
+size_t strnlen(const char* s, size_t n) {
+  const char* p = memchr(s, 0, n);
+  return p ? p - s : n;
 }
diff --git a/fusl/src/string/strpbrk.c b/fusl/src/string/strpbrk.c
index 55947c6..c546a40 100644
--- a/fusl/src/string/strpbrk.c
+++ b/fusl/src/string/strpbrk.c
@@ -1,7 +1,6 @@
 #include <string.h>
 
-char *strpbrk(const char *s, const char *b)
-{
-	s += strcspn(s, b);
-	return *s ? (char *)s : 0;
+char* strpbrk(const char* s, const char* b) {
+  s += strcspn(s, b);
+  return *s ? (char*)s : 0;
 }
diff --git a/fusl/src/string/strrchr.c b/fusl/src/string/strrchr.c
index 635fb3c..3c615cb 100644
--- a/fusl/src/string/strrchr.c
+++ b/fusl/src/string/strrchr.c
@@ -1,8 +1,7 @@
 #include <string.h>
 
-void *__memrchr(const void *, int, size_t);
+void* __memrchr(const void*, int, size_t);
 
-char *strrchr(const char *s, int c)
-{
-	return __memrchr(s, c, strlen(s) + 1);
+char* strrchr(const char* s, int c) {
+  return __memrchr(s, c, strlen(s) + 1);
 }
diff --git a/fusl/src/string/strsep.c b/fusl/src/string/strsep.c
index cb37c32..2170f1c 100644
--- a/fusl/src/string/strsep.c
+++ b/fusl/src/string/strsep.c
@@ -1,13 +1,15 @@
 #define _GNU_SOURCE
 #include <string.h>
 
-char *strsep(char **str, const char *sep)
-{
-	char *s = *str, *end;
-	if (!s) return NULL;
-	end = s + strcspn(s, sep);
-	if (*end) *end++ = 0;
-	else end = 0;
-	*str = end;
-	return s;
+char* strsep(char** str, const char* sep) {
+  char *s = *str, *end;
+  if (!s)
+    return NULL;
+  end = s + strcspn(s, sep);
+  if (*end)
+    *end++ = 0;
+  else
+    end = 0;
+  *str = end;
+  return s;
 }
diff --git a/fusl/src/string/strsignal.c b/fusl/src/string/strsignal.c
index 96bfe84..d48ba7f 100644
--- a/fusl/src/string/strsignal.c
+++ b/fusl/src/string/strsignal.c
@@ -2,115 +2,96 @@
 #include <string.h>
 #include "locale_impl.h"
 
-#if (SIGHUP == 1) && (SIGINT == 2) && (SIGQUIT == 3) && (SIGILL == 4) \
- && (SIGTRAP == 5) && (SIGABRT == 6) && (SIGBUS == 7) && (SIGFPE == 8) \
- && (SIGKILL == 9) && (SIGUSR1 == 10) && (SIGSEGV == 11) && (SIGUSR2 == 12) \
- && (SIGPIPE == 13) && (SIGALRM == 14) && (SIGTERM == 15) && (SIGSTKFLT == 16) \
- && (SIGCHLD == 17) && (SIGCONT == 18) && (SIGSTOP == 19) && (SIGTSTP == 20) \
- && (SIGTTIN == 21) && (SIGTTOU == 22) && (SIGURG == 23) && (SIGXCPU == 24) \
- && (SIGXFSZ == 25) && (SIGVTALRM == 26) && (SIGPROF == 27) && (SIGWINCH == 28) \
- && (SIGPOLL == 29) && (SIGPWR == 30) && (SIGSYS == 31)
+#if (SIGHUP == 1) && (SIGINT == 2) && (SIGQUIT == 3) && (SIGILL == 4) &&       \
+    (SIGTRAP == 5) && (SIGABRT == 6) && (SIGBUS == 7) && (SIGFPE == 8) &&      \
+    (SIGKILL == 9) && (SIGUSR1 == 10) && (SIGSEGV == 11) && (SIGUSR2 == 12) && \
+    (SIGPIPE == 13) && (SIGALRM == 14) && (SIGTERM == 15) &&                   \
+    (SIGSTKFLT == 16) && (SIGCHLD == 17) && (SIGCONT == 18) &&                 \
+    (SIGSTOP == 19) && (SIGTSTP == 20) && (SIGTTIN == 21) &&                   \
+    (SIGTTOU == 22) && (SIGURG == 23) && (SIGXCPU == 24) && (SIGXFSZ == 25) && \
+    (SIGVTALRM == 26) && (SIGPROF == 27) && (SIGWINCH == 28) &&                \
+    (SIGPOLL == 29) && (SIGPWR == 30) && (SIGSYS == 31)
 
 #define sigmap(x) x
 
 #else
 
-static const char map[] = {
-	[SIGHUP]    = 1,
-	[SIGINT]    = 2,
-	[SIGQUIT]   = 3,
-	[SIGILL]    = 4,
-	[SIGTRAP]   = 5,
-	[SIGABRT]   = 6,
-	[SIGBUS]    = 7,
-	[SIGFPE]    = 8,
-	[SIGKILL]   = 9,
-	[SIGUSR1]   = 10,
-	[SIGSEGV]   = 11,
-	[SIGUSR2]   = 12,
-	[SIGPIPE]   = 13,
-	[SIGALRM]   = 14,
-	[SIGTERM]   = 15,
-	[SIGSTKFLT] = 16,
-	[SIGCHLD]   = 17,
-	[SIGCONT]   = 18,
-	[SIGSTOP]   = 19,
-	[SIGTSTP]   = 20,
-	[SIGTTIN]   = 21,
-	[SIGTTOU]   = 22,
-	[SIGURG]    = 23,
-	[SIGXCPU]   = 24,
-	[SIGXFSZ]   = 25,
-	[SIGVTALRM] = 26,
-	[SIGPROF]   = 27,
-	[SIGWINCH]  = 28,
-	[SIGPOLL]   = 29,
-	[SIGPWR]    = 30,
-	[SIGSYS]    = 31
-};
+static const char map[] = {[SIGHUP] = 1,     [SIGINT] = 2,     [SIGQUIT] = 3,
+                           [SIGILL] = 4,     [SIGTRAP] = 5,    [SIGABRT] = 6,
+                           [SIGBUS] = 7,     [SIGFPE] = 8,     [SIGKILL] = 9,
+                           [SIGUSR1] = 10,   [SIGSEGV] = 11,   [SIGUSR2] = 12,
+                           [SIGPIPE] = 13,   [SIGALRM] = 14,   [SIGTERM] = 15,
+                           [SIGSTKFLT] = 16, [SIGCHLD] = 17,   [SIGCONT] = 18,
+                           [SIGSTOP] = 19,   [SIGTSTP] = 20,   [SIGTTIN] = 21,
+                           [SIGTTOU] = 22,   [SIGURG] = 23,    [SIGXCPU] = 24,
+                           [SIGXFSZ] = 25,   [SIGVTALRM] = 26, [SIGPROF] = 27,
+                           [SIGWINCH] = 28,  [SIGPOLL] = 29,   [SIGPWR] = 30,
+                           [SIGSYS] = 31};
 
 #define sigmap(x) ((x) >= sizeof map ? (x) : map[(x)])
 
 #endif
 
 static const char strings[] =
-	"Unknown signal\0"
-	"Hangup\0"
-	"Interrupt\0"
-	"Quit\0"
-	"Illegal instruction\0"
-	"Trace/breakpoint trap\0"
-	"Aborted\0"
-	"Bus error\0"
-	"Arithmetic exception\0"
-	"Killed\0"
-	"User defined signal 1\0"
-	"Segmentation fault\0"
-	"User defined signal 2\0"
-	"Broken pipe\0"
-	"Alarm clock\0"
-	"Terminated\0"
-	"Stack fault\0"
-	"Child process status\0"
-	"Continued\0"
-	"Stopped (signal)\0"
-	"Stopped\0"
-	"Stopped (tty input)\0"
-	"Stopped (tty output)\0"
-	"Urgent I/O condition\0"
-	"CPU time limit exceeded\0"
-	"File size limit exceeded\0"
-	"Virtual timer expired\0"
-	"Profiling timer expired\0"
-	"Window changed\0"
-	"I/O possible\0"
-	"Power failure\0"
-	"Bad system call\0"
-	"RT32"
-	"\0RT33\0RT34\0RT35\0RT36\0RT37\0RT38\0RT39\0RT40"
-	"\0RT41\0RT42\0RT43\0RT44\0RT45\0RT46\0RT47\0RT48"
-	"\0RT49\0RT50\0RT51\0RT52\0RT53\0RT54\0RT55\0RT56"
-	"\0RT57\0RT58\0RT59\0RT60\0RT61\0RT62\0RT63\0RT64"
+    "Unknown signal\0"
+    "Hangup\0"
+    "Interrupt\0"
+    "Quit\0"
+    "Illegal instruction\0"
+    "Trace/breakpoint trap\0"
+    "Aborted\0"
+    "Bus error\0"
+    "Arithmetic exception\0"
+    "Killed\0"
+    "User defined signal 1\0"
+    "Segmentation fault\0"
+    "User defined signal 2\0"
+    "Broken pipe\0"
+    "Alarm clock\0"
+    "Terminated\0"
+    "Stack fault\0"
+    "Child process status\0"
+    "Continued\0"
+    "Stopped (signal)\0"
+    "Stopped\0"
+    "Stopped (tty input)\0"
+    "Stopped (tty output)\0"
+    "Urgent I/O condition\0"
+    "CPU time limit exceeded\0"
+    "File size limit exceeded\0"
+    "Virtual timer expired\0"
+    "Profiling timer expired\0"
+    "Window changed\0"
+    "I/O possible\0"
+    "Power failure\0"
+    "Bad system call\0"
+    "RT32"
+    "\0RT33\0RT34\0RT35\0RT36\0RT37\0RT38\0RT39\0RT40"
+    "\0RT41\0RT42\0RT43\0RT44\0RT45\0RT46\0RT47\0RT48"
+    "\0RT49\0RT50\0RT51\0RT52\0RT53\0RT54\0RT55\0RT56"
+    "\0RT57\0RT58\0RT59\0RT60\0RT61\0RT62\0RT63\0RT64"
 #if _NSIG > 65
-	"\0RT65\0RT66\0RT67\0RT68\0RT69\0RT70\0RT71\0RT72"
-	"\0RT73\0RT74\0RT75\0RT76\0RT77\0RT78\0RT79\0RT80"
-	"\0RT81\0RT82\0RT83\0RT84\0RT85\0RT86\0RT87\0RT88"
-	"\0RT89\0RT90\0RT91\0RT92\0RT93\0RT94\0RT95\0RT96"
-	"\0RT97\0RT98\0RT99\0RT100\0RT101\0RT102\0RT103\0RT104"
-	"\0RT105\0RT106\0RT107\0RT108\0RT109\0RT110\0RT111\0RT112"
-	"\0RT113\0RT114\0RT115\0RT116\0RT117\0RT118\0RT119\0RT120"
-	"\0RT121\0RT122\0RT123\0RT124\0RT125\0RT126\0RT127\0RT128"
+    "\0RT65\0RT66\0RT67\0RT68\0RT69\0RT70\0RT71\0RT72"
+    "\0RT73\0RT74\0RT75\0RT76\0RT77\0RT78\0RT79\0RT80"
+    "\0RT81\0RT82\0RT83\0RT84\0RT85\0RT86\0RT87\0RT88"
+    "\0RT89\0RT90\0RT91\0RT92\0RT93\0RT94\0RT95\0RT96"
+    "\0RT97\0RT98\0RT99\0RT100\0RT101\0RT102\0RT103\0RT104"
+    "\0RT105\0RT106\0RT107\0RT108\0RT109\0RT110\0RT111\0RT112"
+    "\0RT113\0RT114\0RT115\0RT116\0RT117\0RT118\0RT119\0RT120"
+    "\0RT121\0RT122\0RT123\0RT124\0RT125\0RT126\0RT127\0RT128"
 #endif
-	"";
+    "";
 
-char *strsignal(int signum)
-{
-	const char *s = strings;
+char* strsignal(int signum) {
+  const char* s = strings;
 
-	signum = sigmap(signum);
-	if (signum - 1U >= _NSIG-1) signum = 0;
+  signum = sigmap(signum);
+  if (signum - 1U >= _NSIG - 1)
+    signum = 0;
 
-	for (; signum--; s++) for (; *s; s++);
+  for (; signum--; s++)
+    for (; *s; s++)
+      ;
 
-	return (char *)LCTRANS_CUR(s);
+  return (char*)LCTRANS_CUR(s);
 }
diff --git a/fusl/src/string/strspn.c b/fusl/src/string/strspn.c
index 9543dad..b96ffa4 100644
--- a/fusl/src/string/strspn.c
+++ b/fusl/src/string/strspn.c
@@ -1,20 +1,24 @@
 #include <string.h>
 
-#define BITOP(a,b,op) \
- ((a)[(size_t)(b)/(8*sizeof *(a))] op (size_t)1<<((size_t)(b)%(8*sizeof *(a))))
+#define BITOP(a, b, op)                              \
+  ((a)[(size_t)(b) / (8 * sizeof *(a))] op(size_t) 1 \
+   << ((size_t)(b) % (8 * sizeof *(a))))
 
-size_t strspn(const char *s, const char *c)
-{
-	const char *a = s;
-	size_t byteset[32/sizeof(size_t)] = { 0 };
+size_t strspn(const char* s, const char* c) {
+  const char* a = s;
+  size_t byteset[32 / sizeof(size_t)] = {0};
 
-	if (!c[0]) return 0;
-	if (!c[1]) {
-		for (; *s == *c; s++);
-		return s-a;
-	}
+  if (!c[0])
+    return 0;
+  if (!c[1]) {
+    for (; *s == *c; s++)
+      ;
+    return s - a;
+  }
 
-	for (; *c && BITOP(byteset, *(unsigned char *)c, |=); c++);
-	for (; *s && BITOP(byteset, *(unsigned char *)s, &); s++);
-	return s-a;
+  for (; *c && BITOP(byteset, *(unsigned char*)c, |=); c++)
+    ;
+  for (; *s && BITOP(byteset, *(unsigned char*)s, &); s++)
+    ;
+  return s - a;
 }
diff --git a/fusl/src/string/strstr.c b/fusl/src/string/strstr.c
index cd06912..f4d87d7 100644
--- a/fusl/src/string/strstr.c
+++ b/fusl/src/string/strstr.c
@@ -1,155 +1,179 @@
 #include <string.h>
 #include <stdint.h>
 
-static char *twobyte_strstr(const unsigned char *h, const unsigned char *n)
-{
-	uint16_t nw = n[0]<<8 | n[1], hw = h[0]<<8 | h[1];
-	for (h++; *h && hw != nw; hw = hw<<8 | *++h);
-	return *h ? (char *)h-1 : 0;
+static char* twobyte_strstr(const unsigned char* h, const unsigned char* n) {
+  uint16_t nw = n[0] << 8 | n[1], hw = h[0] << 8 | h[1];
+  for (h++; *h && hw != nw; hw = hw << 8 | *++h)
+    ;
+  return *h ? (char*)h - 1 : 0;
 }
 
-static char *threebyte_strstr(const unsigned char *h, const unsigned char *n)
-{
-	uint32_t nw = n[0]<<24 | n[1]<<16 | n[2]<<8;
-	uint32_t hw = h[0]<<24 | h[1]<<16 | h[2]<<8;
-	for (h+=2; *h && hw != nw; hw = (hw|*++h)<<8);
-	return *h ? (char *)h-2 : 0;
+static char* threebyte_strstr(const unsigned char* h, const unsigned char* n) {
+  uint32_t nw = n[0] << 24 | n[1] << 16 | n[2] << 8;
+  uint32_t hw = h[0] << 24 | h[1] << 16 | h[2] << 8;
+  for (h += 2; *h && hw != nw; hw = (hw | *++h) << 8)
+    ;
+  return *h ? (char*)h - 2 : 0;
 }
 
-static char *fourbyte_strstr(const unsigned char *h, const unsigned char *n)
-{
-	uint32_t nw = n[0]<<24 | n[1]<<16 | n[2]<<8 | n[3];
-	uint32_t hw = h[0]<<24 | h[1]<<16 | h[2]<<8 | h[3];
-	for (h+=3; *h && hw != nw; hw = hw<<8 | *++h);
-	return *h ? (char *)h-3 : 0;
+static char* fourbyte_strstr(const unsigned char* h, const unsigned char* n) {
+  uint32_t nw = n[0] << 24 | n[1] << 16 | n[2] << 8 | n[3];
+  uint32_t hw = h[0] << 24 | h[1] << 16 | h[2] << 8 | h[3];
+  for (h += 3; *h && hw != nw; hw = hw << 8 | *++h)
+    ;
+  return *h ? (char*)h - 3 : 0;
 }
 
-#define MAX(a,b) ((a)>(b)?(a):(b))
-#define MIN(a,b) ((a)<(b)?(a):(b))
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
 
-#define BITOP(a,b,op) \
- ((a)[(size_t)(b)/(8*sizeof *(a))] op (size_t)1<<((size_t)(b)%(8*sizeof *(a))))
+#define BITOP(a, b, op)                              \
+  ((a)[(size_t)(b) / (8 * sizeof *(a))] op(size_t) 1 \
+   << ((size_t)(b) % (8 * sizeof *(a))))
 
-static char *twoway_strstr(const unsigned char *h, const unsigned char *n)
-{
-	const unsigned char *z;
-	size_t l, ip, jp, k, p, ms, p0, mem, mem0;
-	size_t byteset[32 / sizeof(size_t)] = { 0 };
-	size_t shift[256];
+static char* twoway_strstr(const unsigned char* h, const unsigned char* n) {
+  const unsigned char* z;
+  size_t l, ip, jp, k, p, ms, p0, mem, mem0;
+  size_t byteset[32 / sizeof(size_t)] = {0};
+  size_t shift[256];
 
-	/* Computing length of needle and fill shift table */
-	for (l=0; n[l] && h[l]; l++)
-		BITOP(byteset, n[l], |=), shift[n[l]] = l+1;
-	if (n[l]) return 0; /* hit the end of h */
+  /* Computing length of needle and fill shift table */
+  for (l = 0; n[l] && h[l]; l++)
+    BITOP(byteset, n[l], |=), shift[n[l]] = l + 1;
+  if (n[l])
+    return 0; /* hit the end of h */
 
-	/* Compute maximal suffix */
-	ip = -1; jp = 0; k = p = 1;
-	while (jp+k<l) {
-		if (n[ip+k] == n[jp+k]) {
-			if (k == p) {
-				jp += p;
-				k = 1;
-			} else k++;
-		} else if (n[ip+k] > n[jp+k]) {
-			jp += k;
-			k = 1;
-			p = jp - ip;
-		} else {
-			ip = jp++;
-			k = p = 1;
-		}
-	}
-	ms = ip;
-	p0 = p;
+  /* Compute maximal suffix */
+  ip = -1;
+  jp = 0;
+  k = p = 1;
+  while (jp + k < l) {
+    if (n[ip + k] == n[jp + k]) {
+      if (k == p) {
+        jp += p;
+        k = 1;
+      } else
+        k++;
+    } else if (n[ip + k] > n[jp + k]) {
+      jp += k;
+      k = 1;
+      p = jp - ip;
+    } else {
+      ip = jp++;
+      k = p = 1;
+    }
+  }
+  ms = ip;
+  p0 = p;
 
-	/* And with the opposite comparison */
-	ip = -1; jp = 0; k = p = 1;
-	while (jp+k<l) {
-		if (n[ip+k] == n[jp+k]) {
-			if (k == p) {
-				jp += p;
-				k = 1;
-			} else k++;
-		} else if (n[ip+k] < n[jp+k]) {
-			jp += k;
-			k = 1;
-			p = jp - ip;
-		} else {
-			ip = jp++;
-			k = p = 1;
-		}
-	}
-	if (ip+1 > ms+1) ms = ip;
-	else p = p0;
+  /* And with the opposite comparison */
+  ip = -1;
+  jp = 0;
+  k = p = 1;
+  while (jp + k < l) {
+    if (n[ip + k] == n[jp + k]) {
+      if (k == p) {
+        jp += p;
+        k = 1;
+      } else
+        k++;
+    } else if (n[ip + k] < n[jp + k]) {
+      jp += k;
+      k = 1;
+      p = jp - ip;
+    } else {
+      ip = jp++;
+      k = p = 1;
+    }
+  }
+  if (ip + 1 > ms + 1)
+    ms = ip;
+  else
+    p = p0;
 
-	/* Periodic needle? */
-	if (memcmp(n, n+p, ms+1)) {
-		mem0 = 0;
-		p = MAX(ms, l-ms-1) + 1;
-	} else mem0 = l-p;
-	mem = 0;
+  /* Periodic needle? */
+  if (memcmp(n, n + p, ms + 1)) {
+    mem0 = 0;
+    p = MAX(ms, l - ms - 1) + 1;
+  } else
+    mem0 = l - p;
+  mem = 0;
 
-	/* Initialize incremental end-of-haystack pointer */
-	z = h;
+  /* Initialize incremental end-of-haystack pointer */
+  z = h;
 
-	/* Search loop */
-	for (;;) {
-		/* Update incremental end-of-haystack pointer */
-		if (z-h < l) {
-			/* Fast estimate for MIN(l,63) */
-			size_t grow = l | 63;
-			const unsigned char *z2 = memchr(z, 0, grow);
-			if (z2) {
-				z = z2;
-				if (z-h < l) return 0;
-			} else z += grow;
-		}
+  /* Search loop */
+  for (;;) {
+    /* Update incremental end-of-haystack pointer */
+    if (z - h < l) {
+      /* Fast estimate for MIN(l,63) */
+      size_t grow = l | 63;
+      const unsigned char* z2 = memchr(z, 0, grow);
+      if (z2) {
+        z = z2;
+        if (z - h < l)
+          return 0;
+      } else
+        z += grow;
+    }
 
-		/* Check last byte first; advance by shift on mismatch */
-		if (BITOP(byteset, h[l-1], &)) {
-			k = l-shift[h[l-1]];
-			//printf("adv by %zu (on %c) at [%s] (%zu;l=%zu)\n", k, h[l-1], h, shift[h[l-1]], l);
-			if (k) {
-				if (mem0 && mem && k < p) k = l-p;
-				h += k;
-				mem = 0;
-				continue;
-			}
-		} else {
-			h += l;
-			mem = 0;
-			continue;
-		}
+    /* Check last byte first; advance by shift on mismatch */
+    if (BITOP(byteset, h[l - 1], &)) {
+      k = l - shift[h[l - 1]];
+      // printf("adv by %zu (on %c) at [%s] (%zu;l=%zu)\n", k, h[l-1], h,
+      // shift[h[l-1]], l);
+      if (k) {
+        if (mem0 && mem && k < p)
+          k = l - p;
+        h += k;
+        mem = 0;
+        continue;
+      }
+    } else {
+      h += l;
+      mem = 0;
+      continue;
+    }
 
-		/* Compare right half */
-		for (k=MAX(ms+1,mem); n[k] && n[k] == h[k]; k++);
-		if (n[k]) {
-			h += k-ms;
-			mem = 0;
-			continue;
-		}
-		/* Compare left half */
-		for (k=ms+1; k>mem && n[k-1] == h[k-1]; k--);
-		if (k <= mem) return (char *)h;
-		h += p;
-		mem = mem0;
-	}
+    /* Compare right half */
+    for (k = MAX(ms + 1, mem); n[k] && n[k] == h[k]; k++)
+      ;
+    if (n[k]) {
+      h += k - ms;
+      mem = 0;
+      continue;
+    }
+    /* Compare left half */
+    for (k = ms + 1; k > mem && n[k - 1] == h[k - 1]; k--)
+      ;
+    if (k <= mem)
+      return (char*)h;
+    h += p;
+    mem = mem0;
+  }
 }
 
-char *strstr(const char *h, const char *n)
-{
-	/* Return immediately on empty needle */
-	if (!n[0]) return (char *)h;
+char* strstr(const char* h, const char* n) {
+  /* Return immediately on empty needle */
+  if (!n[0])
+    return (char*)h;
 
-	/* Use faster algorithms for short needles */
-	h = strchr(h, *n);
-	if (!h || !n[1]) return (char *)h;
-	if (!h[1]) return 0;
-	if (!n[2]) return twobyte_strstr((void *)h, (void *)n);
-	if (!h[2]) return 0;
-	if (!n[3]) return threebyte_strstr((void *)h, (void *)n);
-	if (!h[3]) return 0;
-	if (!n[4]) return fourbyte_strstr((void *)h, (void *)n);
+  /* Use faster algorithms for short needles */
+  h = strchr(h, *n);
+  if (!h || !n[1])
+    return (char*)h;
+  if (!h[1])
+    return 0;
+  if (!n[2])
+    return twobyte_strstr((void*)h, (void*)n);
+  if (!h[2])
+    return 0;
+  if (!n[3])
+    return threebyte_strstr((void*)h, (void*)n);
+  if (!h[3])
+    return 0;
+  if (!n[4])
+    return fourbyte_strstr((void*)h, (void*)n);
 
-	return twoway_strstr((void *)h, (void *)n);
+  return twoway_strstr((void*)h, (void*)n);
 }
diff --git a/fusl/src/string/strtok.c b/fusl/src/string/strtok.c
index 3508790..8eeccb6 100644
--- a/fusl/src/string/strtok.c
+++ b/fusl/src/string/strtok.c
@@ -1,13 +1,16 @@
 #include <string.h>
 
-char *strtok(char *restrict s, const char *restrict sep)
-{
-	static char *p;
-	if (!s && !(s = p)) return NULL;
-	s += strspn(s, sep);
-	if (!*s) return p = 0;
-	p = s + strcspn(s, sep);
-	if (*p) *p++ = 0;
-	else p = 0;
-	return s;
+char* strtok(char* restrict s, const char* restrict sep) {
+  static char* p;
+  if (!s && !(s = p))
+    return NULL;
+  s += strspn(s, sep);
+  if (!*s)
+    return p = 0;
+  p = s + strcspn(s, sep);
+  if (*p)
+    *p++ = 0;
+  else
+    p = 0;
+  return s;
 }
diff --git a/fusl/src/string/strtok_r.c b/fusl/src/string/strtok_r.c
index 862d4fe..1b00a26 100644
--- a/fusl/src/string/strtok_r.c
+++ b/fusl/src/string/strtok_r.c
@@ -1,12 +1,15 @@
 #include <string.h>
 
-char *strtok_r(char *restrict s, const char *restrict sep, char **restrict p)
-{
-	if (!s && !(s = *p)) return NULL;
-	s += strspn(s, sep);
-	if (!*s) return *p = 0;
-	*p = s + strcspn(s, sep);
-	if (**p) *(*p)++ = 0;
-	else *p = 0;
-	return s;
+char* strtok_r(char* restrict s, const char* restrict sep, char** restrict p) {
+  if (!s && !(s = *p))
+    return NULL;
+  s += strspn(s, sep);
+  if (!*s)
+    return *p = 0;
+  *p = s + strcspn(s, sep);
+  if (**p)
+    *(*p)++ = 0;
+  else
+    *p = 0;
+  return s;
 }
diff --git a/fusl/src/string/strverscmp.c b/fusl/src/string/strverscmp.c
index 4daf276..fc62d8a 100644
--- a/fusl/src/string/strverscmp.c
+++ b/fusl/src/string/strverscmp.c
@@ -2,33 +2,37 @@
 #include <ctype.h>
 #include <string.h>
 
-int strverscmp(const char *l0, const char *r0)
-{
-	const unsigned char *l = (const void *)l0;
-	const unsigned char *r = (const void *)r0;
-	size_t i, dp, j;
-	int z = 1;
+int strverscmp(const char* l0, const char* r0) {
+  const unsigned char* l = (const void*)l0;
+  const unsigned char* r = (const void*)r0;
+  size_t i, dp, j;
+  int z = 1;
 
-	/* Find maximal matching prefix and track its maximal digit
-	 * suffix and whether those digits are all zeros. */
-	for (dp=i=0; l[i]==r[i]; i++) {
-		int c = l[i];
-		if (!c) return 0;
-		if (!isdigit(c)) dp=i+1, z=1;
-		else if (c!='0') z=0;
-	}
+  /* Find maximal matching prefix and track its maximal digit
+   * suffix and whether those digits are all zeros. */
+  for (dp = i = 0; l[i] == r[i]; i++) {
+    int c = l[i];
+    if (!c)
+      return 0;
+    if (!isdigit(c))
+      dp = i + 1, z = 1;
+    else if (c != '0')
+      z = 0;
+  }
 
-	if (l[dp]!='0' && r[dp]!='0') {
-		/* If we're not looking at a digit sequence that began
-		 * with a zero, longest digit string is greater. */
-		for (j=i; isdigit(l[j]); j++)
-			if (!isdigit(r[j])) return 1;
-		if (isdigit(r[j])) return -1;
-	} else if (z && dp<i && (isdigit(l[i]) || isdigit(r[i]))) {
-		/* Otherwise, if common prefix of digit sequence is
-		 * all zeros, digits order less than non-digits. */
-		return (unsigned char)(l[i]-'0') - (unsigned char)(r[i]-'0');
-	}
+  if (l[dp] != '0' && r[dp] != '0') {
+    /* If we're not looking at a digit sequence that began
+     * with a zero, longest digit string is greater. */
+    for (j = i; isdigit(l[j]); j++)
+      if (!isdigit(r[j]))
+        return 1;
+    if (isdigit(r[j]))
+      return -1;
+  } else if (z && dp < i && (isdigit(l[i]) || isdigit(r[i]))) {
+    /* Otherwise, if common prefix of digit sequence is
+     * all zeros, digits order less than non-digits. */
+    return (unsigned char)(l[i] - '0') - (unsigned char)(r[i] - '0');
+  }
 
-	return l[i] - r[i];
+  return l[i] - r[i];
 }
diff --git a/fusl/src/string/swab.c b/fusl/src/string/swab.c
index ace0f46..08ddbd0 100644
--- a/fusl/src/string/swab.c
+++ b/fusl/src/string/swab.c
@@ -1,13 +1,12 @@
 #include <unistd.h>
 
-void swab(const void *restrict _src, void *restrict _dest, ssize_t n)
-{
-	const char *src = _src;
-	char *dest = _dest;
-	for (; n>1; n-=2) {
-		dest[0] = src[1];
-		dest[1] = src[0];
-		dest += 2;
-		src += 2;
-	}
+void swab(const void* restrict _src, void* restrict _dest, ssize_t n) {
+  const char* src = _src;
+  char* dest = _dest;
+  for (; n > 1; n -= 2) {
+    dest[0] = src[1];
+    dest[1] = src[0];
+    dest += 2;
+    src += 2;
+  }
 }
diff --git a/fusl/src/string/wcpcpy.c b/fusl/src/string/wcpcpy.c
index ef40134..78a0f1d 100644
--- a/fusl/src/string/wcpcpy.c
+++ b/fusl/src/string/wcpcpy.c
@@ -1,6 +1,5 @@
 #include <wchar.h>
 
-wchar_t *wcpcpy(wchar_t *restrict d, const wchar_t *restrict s)
-{
-	return wcscpy(d, s) + wcslen(s);
+wchar_t* wcpcpy(wchar_t* restrict d, const wchar_t* restrict s) {
+  return wcscpy(d, s) + wcslen(s);
 }
diff --git a/fusl/src/string/wcpncpy.c b/fusl/src/string/wcpncpy.c
index b667f6d..f2b3127 100644
--- a/fusl/src/string/wcpncpy.c
+++ b/fusl/src/string/wcpncpy.c
@@ -1,6 +1,5 @@
 #include <wchar.h>
 
-wchar_t *wcpncpy(wchar_t *restrict d, const wchar_t *restrict s, size_t n)
-{
-	return wcsncpy(d, s, n) + wcsnlen(s, n);
+wchar_t* wcpncpy(wchar_t* restrict d, const wchar_t* restrict s, size_t n) {
+  return wcsncpy(d, s, n) + wcsnlen(s, n);
 }
diff --git a/fusl/src/string/wcscasecmp.c b/fusl/src/string/wcscasecmp.c
index 3edeec7..3f0d550 100644
--- a/fusl/src/string/wcscasecmp.c
+++ b/fusl/src/string/wcscasecmp.c
@@ -1,7 +1,6 @@
 #include <wchar.h>
 #include <wctype.h>
 
-int wcscasecmp(const wchar_t *l, const wchar_t *r)
-{
-	return wcsncasecmp(l, r, -1);
+int wcscasecmp(const wchar_t* l, const wchar_t* r) {
+  return wcsncasecmp(l, r, -1);
 }
diff --git a/fusl/src/string/wcscasecmp_l.c b/fusl/src/string/wcscasecmp_l.c
index 065dd0a..555a77e 100644
--- a/fusl/src/string/wcscasecmp_l.c
+++ b/fusl/src/string/wcscasecmp_l.c
@@ -1,6 +1,5 @@
 #include <wchar.h>
 
-int wcscasecmp_l(const wchar_t *l, const wchar_t *r, locale_t locale)
-{
-	return wcscasecmp(l, r);
+int wcscasecmp_l(const wchar_t* l, const wchar_t* r, locale_t locale) {
+  return wcscasecmp(l, r);
 }
diff --git a/fusl/src/string/wcscat.c b/fusl/src/string/wcscat.c
index d4f00eb..d124865 100644
--- a/fusl/src/string/wcscat.c
+++ b/fusl/src/string/wcscat.c
@@ -1,7 +1,6 @@
 #include <wchar.h>
 
-wchar_t *wcscat(wchar_t *restrict dest, const wchar_t *restrict src)
-{
-	wcscpy(dest + wcslen(dest), src);
-	return dest;
+wchar_t* wcscat(wchar_t* restrict dest, const wchar_t* restrict src) {
+  wcscpy(dest + wcslen(dest), src);
+  return dest;
 }
diff --git a/fusl/src/string/wcschr.c b/fusl/src/string/wcschr.c
index 8dfc2f3..507b1f8 100644
--- a/fusl/src/string/wcschr.c
+++ b/fusl/src/string/wcschr.c
@@ -1,8 +1,9 @@
 #include <wchar.h>
 
-wchar_t *wcschr(const wchar_t *s, wchar_t c)
-{
-	if (!c) return (wchar_t *)s + wcslen(s);
-	for (; *s && *s != c; s++);
-	return *s ? (wchar_t *)s : 0;
+wchar_t* wcschr(const wchar_t* s, wchar_t c) {
+  if (!c)
+    return (wchar_t*)s + wcslen(s);
+  for (; *s && *s != c; s++)
+    ;
+  return *s ? (wchar_t*)s : 0;
 }
diff --git a/fusl/src/string/wcscmp.c b/fusl/src/string/wcscmp.c
index 26eeee7..20b68d9 100644
--- a/fusl/src/string/wcscmp.c
+++ b/fusl/src/string/wcscmp.c
@@ -1,7 +1,7 @@
 #include <wchar.h>
 
-int wcscmp(const wchar_t *l, const wchar_t *r)
-{
-	for (; *l==*r && *l && *r; l++, r++);
-	return *l - *r;
+int wcscmp(const wchar_t* l, const wchar_t* r) {
+  for (; *l == *r && *l && *r; l++, r++)
+    ;
+  return *l - *r;
 }
diff --git a/fusl/src/string/wcscpy.c b/fusl/src/string/wcscpy.c
index 625bf53..5b1b11c 100644
--- a/fusl/src/string/wcscpy.c
+++ b/fusl/src/string/wcscpy.c
@@ -1,8 +1,8 @@
 #include <wchar.h>
 
-wchar_t *wcscpy(wchar_t *restrict d, const wchar_t *restrict s)
-{
-	wchar_t *a = d;
-	while ((*d++ = *s++));
-	return a;
+wchar_t* wcscpy(wchar_t* restrict d, const wchar_t* restrict s) {
+  wchar_t* a = d;
+  while ((*d++ = *s++))
+    ;
+  return a;
 }
diff --git a/fusl/src/string/wcscspn.c b/fusl/src/string/wcscspn.c
index c4e5272..abd6d88 100644
--- a/fusl/src/string/wcscspn.c
+++ b/fusl/src/string/wcscspn.c
@@ -1,10 +1,12 @@
 #include <wchar.h>
 
-size_t wcscspn(const wchar_t *s, const wchar_t *c)
-{
-	const wchar_t *a;
-	if (!c[0]) return wcslen(s);
-	if (!c[1]) return (s=wcschr(a=s, *c)) ? s-a : wcslen(a);
-	for (a=s; *s && !wcschr(c, *s); s++);
-	return s-a;
+size_t wcscspn(const wchar_t* s, const wchar_t* c) {
+  const wchar_t* a;
+  if (!c[0])
+    return wcslen(s);
+  if (!c[1])
+    return (s = wcschr(a = s, *c)) ? s - a : wcslen(a);
+  for (a = s; *s && !wcschr(c, *s); s++)
+    ;
+  return s - a;
 }
diff --git a/fusl/src/string/wcsdup.c b/fusl/src/string/wcsdup.c
index dd49c1b..b66ae83 100644
--- a/fusl/src/string/wcsdup.c
+++ b/fusl/src/string/wcsdup.c
@@ -2,10 +2,10 @@
 #include <wchar.h>
 #include "libc.h"
 
-wchar_t *wcsdup(const wchar_t *s)
-{
-	size_t l = wcslen(s);
-	wchar_t *d = malloc((l+1)*sizeof(wchar_t));
-	if (!d) return NULL;
-	return wmemcpy(d, s, l+1);
+wchar_t* wcsdup(const wchar_t* s) {
+  size_t l = wcslen(s);
+  wchar_t* d = malloc((l + 1) * sizeof(wchar_t));
+  if (!d)
+    return NULL;
+  return wmemcpy(d, s, l + 1);
 }
diff --git a/fusl/src/string/wcslen.c b/fusl/src/string/wcslen.c
index 1b7b665..1434958 100644
--- a/fusl/src/string/wcslen.c
+++ b/fusl/src/string/wcslen.c
@@ -1,8 +1,8 @@
 #include <wchar.h>
 
-size_t wcslen(const wchar_t *s)
-{
-	const wchar_t *a;
-	for (a=s; *s; s++);
-	return s-a;
+size_t wcslen(const wchar_t* s) {
+  const wchar_t* a;
+  for (a = s; *s; s++)
+    ;
+  return s - a;
 }
diff --git a/fusl/src/string/wcsncasecmp.c b/fusl/src/string/wcsncasecmp.c
index 8fefe79..a756c2e 100644
--- a/fusl/src/string/wcsncasecmp.c
+++ b/fusl/src/string/wcsncasecmp.c
@@ -1,9 +1,11 @@
 #include <wchar.h>
 #include <wctype.h>
 
-int wcsncasecmp(const wchar_t *l, const wchar_t *r, size_t n)
-{
-	if (!n--) return 0;
-	for (; *l && *r && n && (*l == *r || towlower(*l) == towlower(*r)); l++, r++, n--);
-	return towlower(*l) - towlower(*r);
+int wcsncasecmp(const wchar_t* l, const wchar_t* r, size_t n) {
+  if (!n--)
+    return 0;
+  for (; *l && *r && n && (*l == *r || towlower(*l) == towlower(*r));
+       l++, r++, n--)
+    ;
+  return towlower(*l) - towlower(*r);
 }
diff --git a/fusl/src/string/wcsncasecmp_l.c b/fusl/src/string/wcsncasecmp_l.c
index 6387248..ff490f4 100644
--- a/fusl/src/string/wcsncasecmp_l.c
+++ b/fusl/src/string/wcsncasecmp_l.c
@@ -1,6 +1,8 @@
 #include <wchar.h>
 
-int wcsncasecmp_l(const wchar_t *l, const wchar_t *r, size_t n, locale_t locale)
-{
-	return wcsncasecmp(l, r, n);
+int wcsncasecmp_l(const wchar_t* l,
+                  const wchar_t* r,
+                  size_t n,
+                  locale_t locale) {
+  return wcsncasecmp(l, r, n);
 }
diff --git a/fusl/src/string/wcsncat.c b/fusl/src/string/wcsncat.c
index 8563f1a..93531fb 100644
--- a/fusl/src/string/wcsncat.c
+++ b/fusl/src/string/wcsncat.c
@@ -1,10 +1,10 @@
 #include <wchar.h>
 
-wchar_t *wcsncat(wchar_t *restrict d, const wchar_t *restrict s, size_t n)
-{
-	wchar_t *a = d;
-	d += wcslen(d);
-	while (n && *s) n--, *d++ = *s++;
-	*d++ = 0;
-	return a;
+wchar_t* wcsncat(wchar_t* restrict d, const wchar_t* restrict s, size_t n) {
+  wchar_t* a = d;
+  d += wcslen(d);
+  while (n && *s)
+    n--, *d++ = *s++;
+  *d++ = 0;
+  return a;
 }
diff --git a/fusl/src/string/wcsncmp.c b/fusl/src/string/wcsncmp.c
index 4ab32a9..b882737 100644
--- a/fusl/src/string/wcsncmp.c
+++ b/fusl/src/string/wcsncmp.c
@@ -1,7 +1,7 @@
 #include <wchar.h>
 
-int wcsncmp(const wchar_t *l, const wchar_t *r, size_t n)
-{
-	for (; n && *l==*r && *l && *r; n--, l++, r++);
-	return n ? *l - *r : 0;
+int wcsncmp(const wchar_t* l, const wchar_t* r, size_t n) {
+  for (; n && *l == *r && *l && *r; n--, l++, r++)
+    ;
+  return n ? *l - *r : 0;
 }
diff --git a/fusl/src/string/wcsncpy.c b/fusl/src/string/wcsncpy.c
index 4bede04..d0bb9e2 100644
--- a/fusl/src/string/wcsncpy.c
+++ b/fusl/src/string/wcsncpy.c
@@ -1,9 +1,9 @@
 #include <wchar.h>
 
-wchar_t *wcsncpy(wchar_t *restrict d, const wchar_t *restrict s, size_t n)
-{
-	wchar_t *a = d;
-	while (n && *s) n--, *d++ = *s++;
-	wmemset(d, 0, n);
-	return a;
+wchar_t* wcsncpy(wchar_t* restrict d, const wchar_t* restrict s, size_t n) {
+  wchar_t* a = d;
+  while (n && *s)
+    n--, *d++ = *s++;
+  wmemset(d, 0, n);
+  return a;
 }
diff --git a/fusl/src/string/wcsnlen.c b/fusl/src/string/wcsnlen.c
index a776337..d5bf7f1 100644
--- a/fusl/src/string/wcsnlen.c
+++ b/fusl/src/string/wcsnlen.c
@@ -1,8 +1,8 @@
 #include <wchar.h>
 
-size_t wcsnlen(const wchar_t *s, size_t n)
-{
-	const wchar_t *z = wmemchr(s, 0, n);
-	if (z) n = z-s;
-	return n;
+size_t wcsnlen(const wchar_t* s, size_t n) {
+  const wchar_t* z = wmemchr(s, 0, n);
+  if (z)
+    n = z - s;
+  return n;
 }
diff --git a/fusl/src/string/wcspbrk.c b/fusl/src/string/wcspbrk.c
index 0c72c19..dc8e999 100644
--- a/fusl/src/string/wcspbrk.c
+++ b/fusl/src/string/wcspbrk.c
@@ -1,7 +1,6 @@
 #include <wchar.h>
 
-wchar_t *wcspbrk(const wchar_t *s, const wchar_t *b)
-{
-	s += wcscspn(s, b);
-	return *s ? (wchar_t *)s : NULL;
+wchar_t* wcspbrk(const wchar_t* s, const wchar_t* b) {
+  s += wcscspn(s, b);
+  return *s ? (wchar_t*)s : NULL;
 }
diff --git a/fusl/src/string/wcsrchr.c b/fusl/src/string/wcsrchr.c
index 8961b9e..e87fb30 100644
--- a/fusl/src/string/wcsrchr.c
+++ b/fusl/src/string/wcsrchr.c
@@ -1,8 +1,8 @@
 #include <wchar.h>
 
-wchar_t *wcsrchr(const wchar_t *s, wchar_t c)
-{
-	const wchar_t *p;
-	for (p=s+wcslen(s); p>=s && *p!=c; p--);
-	return p>=s ? (wchar_t *)p : 0;
+wchar_t* wcsrchr(const wchar_t* s, wchar_t c) {
+  const wchar_t* p;
+  for (p = s + wcslen(s); p >= s && *p != c; p--)
+    ;
+  return p >= s ? (wchar_t*)p : 0;
 }
diff --git a/fusl/src/string/wcsspn.c b/fusl/src/string/wcsspn.c
index 4320d8f..7caa7dc 100644
--- a/fusl/src/string/wcsspn.c
+++ b/fusl/src/string/wcsspn.c
@@ -1,8 +1,8 @@
 #include <wchar.h>
 
-size_t wcsspn(const wchar_t *s, const wchar_t *c)
-{
-	const wchar_t *a;
-	for (a=s; *s && wcschr(c, *s); s++);
-	return s-a;
+size_t wcsspn(const wchar_t* s, const wchar_t* c) {
+  const wchar_t* a;
+  for (a = s; *s && wcschr(c, *s); s++)
+    ;
+  return s - a;
 }
diff --git a/fusl/src/string/wcsstr.c b/fusl/src/string/wcsstr.c
index 4caaef3..3b29497 100644
--- a/fusl/src/string/wcsstr.c
+++ b/fusl/src/string/wcsstr.c
@@ -1,105 +1,123 @@
 #include <wchar.h>
 
-#define MAX(a,b) ((a)>(b)?(a):(b))
-#define MIN(a,b) ((a)<(b)?(a):(b))
+#define MAX(a, b) ((a) > (b) ? (a) : (b))
+#define MIN(a, b) ((a) < (b) ? (a) : (b))
 
-static wchar_t *twoway_wcsstr(const wchar_t *h, const wchar_t *n)
-{
-	const wchar_t *z;
-	size_t l, ip, jp, k, p, ms, p0, mem, mem0;
+static wchar_t* twoway_wcsstr(const wchar_t* h, const wchar_t* n) {
+  const wchar_t* z;
+  size_t l, ip, jp, k, p, ms, p0, mem, mem0;
 
-	/* Computing length of needle */
-	for (l=0; n[l] && h[l]; l++);
-	if (n[l]) return 0; /* hit the end of h */
+  /* Computing length of needle */
+  for (l = 0; n[l] && h[l]; l++)
+    ;
+  if (n[l])
+    return 0; /* hit the end of h */
 
-	/* Compute maximal suffix */
-	ip = -1; jp = 0; k = p = 1;
-	while (jp+k<l) {
-		if (n[ip+k] == n[jp+k]) {
-			if (k == p) {
-				jp += p;
-				k = 1;
-			} else k++;
-		} else if (n[ip+k] > n[jp+k]) {
-			jp += k;
-			k = 1;
-			p = jp - ip;
-		} else {
-			ip = jp++;
-			k = p = 1;
-		}
-	}
-	ms = ip;
-	p0 = p;
+  /* Compute maximal suffix */
+  ip = -1;
+  jp = 0;
+  k = p = 1;
+  while (jp + k < l) {
+    if (n[ip + k] == n[jp + k]) {
+      if (k == p) {
+        jp += p;
+        k = 1;
+      } else
+        k++;
+    } else if (n[ip + k] > n[jp + k]) {
+      jp += k;
+      k = 1;
+      p = jp - ip;
+    } else {
+      ip = jp++;
+      k = p = 1;
+    }
+  }
+  ms = ip;
+  p0 = p;
 
-	/* And with the opposite comparison */
-	ip = -1; jp = 0; k = p = 1;
-	while (jp+k<l) {
-		if (n[ip+k] == n[jp+k]) {
-			if (k == p) {
-				jp += p;
-				k = 1;
-			} else k++;
-		} else if (n[ip+k] < n[jp+k]) {
-			jp += k;
-			k = 1;
-			p = jp - ip;
-		} else {
-			ip = jp++;
-			k = p = 1;
-		}
-	}
-	if (ip+1 > ms+1) ms = ip;
-	else p = p0;
+  /* And with the opposite comparison */
+  ip = -1;
+  jp = 0;
+  k = p = 1;
+  while (jp + k < l) {
+    if (n[ip + k] == n[jp + k]) {
+      if (k == p) {
+        jp += p;
+        k = 1;
+      } else
+        k++;
+    } else if (n[ip + k] < n[jp + k]) {
+      jp += k;
+      k = 1;
+      p = jp - ip;
+    } else {
+      ip = jp++;
+      k = p = 1;
+    }
+  }
+  if (ip + 1 > ms + 1)
+    ms = ip;
+  else
+    p = p0;
 
-	/* Periodic needle? */
-	if (wmemcmp(n, n+p, ms+1)) {
-		mem0 = 0;
-		p = MAX(ms, l-ms-1) + 1;
-	} else mem0 = l-p;
-	mem = 0;
+  /* Periodic needle? */
+  if (wmemcmp(n, n + p, ms + 1)) {
+    mem0 = 0;
+    p = MAX(ms, l - ms - 1) + 1;
+  } else
+    mem0 = l - p;
+  mem = 0;
 
-	/* Initialize incremental end-of-haystack pointer */
-	z = h;
+  /* Initialize incremental end-of-haystack pointer */
+  z = h;
 
-	/* Search loop */
-	for (;;) {
-		/* Update incremental end-of-haystack pointer */
-		if (z-h < l) {
-			/* Fast estimate for MIN(l,63) */
-			size_t grow = l | 63;
-			const wchar_t *z2 = wmemchr(z, 0, grow);
-			if (z2) {
-				z = z2;
-				if (z-h < l) return 0;
-			} else z += grow;
-		}
+  /* Search loop */
+  for (;;) {
+    /* Update incremental end-of-haystack pointer */
+    if (z - h < l) {
+      /* Fast estimate for MIN(l,63) */
+      size_t grow = l | 63;
+      const wchar_t* z2 = wmemchr(z, 0, grow);
+      if (z2) {
+        z = z2;
+        if (z - h < l)
+          return 0;
+      } else
+        z += grow;
+    }
 
-		/* Compare right half */
-		for (k=MAX(ms+1,mem); n[k] && n[k] == h[k]; k++);
-		if (n[k]) {
-			h += k-ms;
-			mem = 0;
-			continue;
-		}
-		/* Compare left half */
-		for (k=ms+1; k>mem && n[k-1] == h[k-1]; k--);
-		if (k <= mem) return (wchar_t *)h;
-		h += p;
-		mem = mem0;
-	}
+    /* Compare right half */
+    for (k = MAX(ms + 1, mem); n[k] && n[k] == h[k]; k++)
+      ;
+    if (n[k]) {
+      h += k - ms;
+      mem = 0;
+      continue;
+    }
+    /* Compare left half */
+    for (k = ms + 1; k > mem && n[k - 1] == h[k - 1]; k--)
+      ;
+    if (k <= mem)
+      return (wchar_t*)h;
+    h += p;
+    mem = mem0;
+  }
 }
 
-wchar_t *wcsstr(const wchar_t *restrict h, const wchar_t *restrict n)
-{
-	/* Return immediately on empty needle or haystack */
-	if (!n[0]) return (wchar_t *)h;
-	if (!h[0]) return 0;
+wchar_t* wcsstr(const wchar_t* restrict h, const wchar_t* restrict n) {
+  /* Return immediately on empty needle or haystack */
+  if (!n[0])
+    return (wchar_t*)h;
+  if (!h[0])
+    return 0;
 
-	/* Use faster algorithms for short needles */
-	h = wcschr(h, *n);
-	if (!h || !n[1]) return (wchar_t *)h;
-	if (!h[1]) return 0;
+  /* Use faster algorithms for short needles */
+  h = wcschr(h, *n);
+  if (!h || !n[1])
+    return (wchar_t*)h;
+  if (!h[1])
+    return 0;
 
-	return twoway_wcsstr(h, n);
+  return twoway_wcsstr(h, n);
 }
diff --git a/fusl/src/string/wcstok.c b/fusl/src/string/wcstok.c
index ecc8033..cb99f87 100644
--- a/fusl/src/string/wcstok.c
+++ b/fusl/src/string/wcstok.c
@@ -1,12 +1,17 @@
 #include <wchar.h>
 
-wchar_t *wcstok(wchar_t *restrict s, const wchar_t *restrict sep, wchar_t **restrict p)
-{
-	if (!s && !(s = *p)) return NULL;
-	s += wcsspn(s, sep);
-	if (!*s) return *p = 0;
-	*p = s + wcscspn(s, sep);
-	if (**p) *(*p)++ = 0;
-	else *p = 0;
-	return s;
+wchar_t* wcstok(wchar_t* restrict s,
+                const wchar_t* restrict sep,
+                wchar_t** restrict p) {
+  if (!s && !(s = *p))
+    return NULL;
+  s += wcsspn(s, sep);
+  if (!*s)
+    return *p = 0;
+  *p = s + wcscspn(s, sep);
+  if (**p)
+    *(*p)++ = 0;
+  else
+    *p = 0;
+  return s;
 }
diff --git a/fusl/src/string/wcswcs.c b/fusl/src/string/wcswcs.c
index 9cfe4ac..38a614e 100644
--- a/fusl/src/string/wcswcs.c
+++ b/fusl/src/string/wcswcs.c
@@ -1,6 +1,5 @@
 #include <wchar.h>
 
-wchar_t *wcswcs(const wchar_t *haystack, const wchar_t *needle)
-{
-	return wcsstr(haystack, needle);
+wchar_t* wcswcs(const wchar_t* haystack, const wchar_t* needle) {
+  return wcsstr(haystack, needle);
 }
diff --git a/fusl/src/string/wmemchr.c b/fusl/src/string/wmemchr.c
index 2bc2c27..34699c1 100644
--- a/fusl/src/string/wmemchr.c
+++ b/fusl/src/string/wmemchr.c
@@ -1,7 +1,7 @@
 #include <wchar.h>
 
-wchar_t *wmemchr(const wchar_t *s, wchar_t c, size_t n)
-{
-	for (; n && *s != c; n--, s++);
-	return n ? (wchar_t *)s : 0;
+wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n) {
+  for (; n && *s != c; n--, s++)
+    ;
+  return n ? (wchar_t*)s : 0;
 }
diff --git a/fusl/src/string/wmemcmp.c b/fusl/src/string/wmemcmp.c
index 2a19326..df9f444 100644
--- a/fusl/src/string/wmemcmp.c
+++ b/fusl/src/string/wmemcmp.c
@@ -1,7 +1,7 @@
 #include <wchar.h>
 
-int wmemcmp(const wchar_t *l, const wchar_t *r, size_t n)
-{
-	for (; n && *l==*r; n--, l++, r++);
-	return n ? *l-*r : 0;
+int wmemcmp(const wchar_t* l, const wchar_t* r, size_t n) {
+  for (; n && *l == *r; n--, l++, r++)
+    ;
+  return n ? *l - *r : 0;
 }
diff --git a/fusl/src/string/wmemcpy.c b/fusl/src/string/wmemcpy.c
index 52e6e6e..bbaf3c6 100644
--- a/fusl/src/string/wmemcpy.c
+++ b/fusl/src/string/wmemcpy.c
@@ -1,8 +1,8 @@
 #include <wchar.h>
 
-wchar_t *wmemcpy(wchar_t *restrict d, const wchar_t *restrict s, size_t n)
-{
-	wchar_t *a = d;
-	while (n--) *d++ = *s++;
-	return a;
+wchar_t* wmemcpy(wchar_t* restrict d, const wchar_t* restrict s, size_t n) {
+  wchar_t* a = d;
+  while (n--)
+    *d++ = *s++;
+  return a;
 }
diff --git a/fusl/src/string/wmemmove.c b/fusl/src/string/wmemmove.c
index e406f3d..7d34d1c 100644
--- a/fusl/src/string/wmemmove.c
+++ b/fusl/src/string/wmemmove.c
@@ -1,11 +1,12 @@
 #include <wchar.h>
 
-wchar_t *wmemmove(wchar_t *d, const wchar_t *s, size_t n)
-{
-	wchar_t *d0 = d;
-	if ((size_t)(d-s) < n)
-		while (n--) d[n] = s[n];
-	else
-		while (n--) *d++ = *s++;
-	return d0;
+wchar_t* wmemmove(wchar_t* d, const wchar_t* s, size_t n) {
+  wchar_t* d0 = d;
+  if ((size_t)(d - s) < n)
+    while (n--)
+      d[n] = s[n];
+  else
+    while (n--)
+      *d++ = *s++;
+  return d0;
 }
diff --git a/fusl/src/string/wmemset.c b/fusl/src/string/wmemset.c
index 07a037a..8dcc577 100644
--- a/fusl/src/string/wmemset.c
+++ b/fusl/src/string/wmemset.c
@@ -1,8 +1,8 @@
 #include <wchar.h>
 
-wchar_t *wmemset(wchar_t *d, wchar_t c, size_t n)
-{
-	wchar_t *ret = d;
-	while (n--) *d++ = c;
-	return ret;
+wchar_t* wmemset(wchar_t* d, wchar_t c, size_t n) {
+  wchar_t* ret = d;
+  while (n--)
+    *d++ = c;
+  return ret;
 }
diff --git a/fusl/src/temp/__randname.c b/fusl/src/temp/__randname.c
index 464b83d..f275b5f 100644
--- a/fusl/src/temp/__randname.c
+++ b/fusl/src/temp/__randname.c
@@ -1,20 +1,19 @@
 #include <time.h>
 #include <stdint.h>
 
-int __clock_gettime(clockid_t, struct timespec *);
+int __clock_gettime(clockid_t, struct timespec*);
 
 /* This assumes that a check for the
    template size has already been made */
-char *__randname(char *template)
-{
-	int i;
-	struct timespec ts;
-	unsigned long r;
+char* __randname(char* template) {
+  int i;
+  struct timespec ts;
+  unsigned long r;
 
-	__clock_gettime(CLOCK_REALTIME, &ts);
-	r = ts.tv_nsec*65537 ^ (uintptr_t)&ts / 16 + (uintptr_t)template;
-	for (i=0; i<6; i++, r>>=5)
-		template[i] = 'A'+(r&15)+(r&16)*2;
+  __clock_gettime(CLOCK_REALTIME, &ts);
+  r = ts.tv_nsec * 65537 ^ (uintptr_t)&ts / 16 + (uintptr_t) template;
+  for (i = 0; i < 6; i++, r >>= 5)
+    template[i] = 'A' + (r & 15) + (r & 16) * 2;
 
-	return template;
+  return template;
 }
diff --git a/fusl/src/temp/mkdtemp.c b/fusl/src/temp/mkdtemp.c
index 6c2c16e..1e92069 100644
--- a/fusl/src/temp/mkdtemp.c
+++ b/fusl/src/temp/mkdtemp.c
@@ -3,23 +3,23 @@
 #include <errno.h>
 #include <sys/stat.h>
 
-char *__randname(char *);
+char* __randname(char*);
 
-char *mkdtemp(char *template)
-{
-	size_t l = strlen(template);
-	int retries = 100;
+char* mkdtemp(char* template) {
+  size_t l = strlen(template);
+  int retries = 100;
 
-	if (l<6 || memcmp(template+l-6, "XXXXXX", 6)) {
-		errno = EINVAL;
-		return 0;
-	}
+  if (l < 6 || memcmp(template + l - 6, "XXXXXX", 6)) {
+    errno = EINVAL;
+    return 0;
+  }
 
-	do {
-		__randname(template+l-6);
-		if (!mkdir(template, 0700)) return template;
-	} while (--retries && errno == EEXIST);
+  do {
+    __randname(template + l - 6);
+    if (!mkdir(template, 0700))
+      return template;
+  } while (--retries && errno == EEXIST);
 
-	memcpy(template+l-6, "XXXXXX", 6);
-	return 0;
+  memcpy(template + l - 6, "XXXXXX", 6);
+  return 0;
 }
diff --git a/fusl/src/temp/mkostemp.c b/fusl/src/temp/mkostemp.c
index e73e22a..5d85b2d 100644
--- a/fusl/src/temp/mkostemp.c
+++ b/fusl/src/temp/mkostemp.c
@@ -2,11 +2,10 @@
 #include <stdlib.h>
 #include "libc.h"
 
-int __mkostemps(char *, int, int);
+int __mkostemps(char*, int, int);
 
-int mkostemp(char *template, int flags)
-{
-	return __mkostemps(template, 0, flags);
+int mkostemp(char* template, int flags) {
+  return __mkostemps(template, 0, flags);
 }
 
 LFS64(mkostemp);
diff --git a/fusl/src/temp/mkostemps.c b/fusl/src/temp/mkostemps.c
index 512b5f1..e70bc3f 100644
--- a/fusl/src/temp/mkostemps.c
+++ b/fusl/src/temp/mkostemps.c
@@ -5,26 +5,25 @@
 #include <errno.h>
 #include "libc.h"
 
-char *__randname(char *);
+char* __randname(char*);
 
-int __mkostemps(char *template, int len, int flags)
-{
-	size_t l = strlen(template);
-	if (l<6 || len>l-6 || memcmp(template+l-len-6, "XXXXXX", 6)) {
-		errno = EINVAL;
-		return -1;
-	}
+int __mkostemps(char* template, int len, int flags) {
+  size_t l = strlen(template);
+  if (l < 6 || len > l - 6 || memcmp(template + l - len - 6, "XXXXXX", 6)) {
+    errno = EINVAL;
+    return -1;
+  }
 
-	flags -= flags & O_ACCMODE;
-	int fd, retries = 100;
-	do {
-		__randname(template+l-len-6);
-		if ((fd = open(template, flags | O_RDWR | O_CREAT | O_EXCL, 0600))>=0)
-			return fd;
-	} while (--retries && errno == EEXIST);
+  flags -= flags & O_ACCMODE;
+  int fd, retries = 100;
+  do {
+    __randname(template + l - len - 6);
+    if ((fd = open(template, flags | O_RDWR | O_CREAT | O_EXCL, 0600)) >= 0)
+      return fd;
+  } while (--retries && errno == EEXIST);
 
-	memcpy(template+l-len-6, "XXXXXX", 6);
-	return -1;
+  memcpy(template + l - len - 6, "XXXXXX", 6);
+  return -1;
 }
 
 weak_alias(__mkostemps, mkostemps);
diff --git a/fusl/src/temp/mkstemp.c b/fusl/src/temp/mkstemp.c
index 85764af..8a11964 100644
--- a/fusl/src/temp/mkstemp.c
+++ b/fusl/src/temp/mkstemp.c
@@ -1,11 +1,10 @@
 #include <stdlib.h>
 #include "libc.h"
 
-int __mkostemps(char *, int, int);
+int __mkostemps(char*, int, int);
 
-int mkstemp(char *template)
-{
-	return __mkostemps(template, 0, 0);
+int mkstemp(char* template) {
+  return __mkostemps(template, 0, 0);
 }
 
 LFS64(mkstemp);
diff --git a/fusl/src/temp/mkstemps.c b/fusl/src/temp/mkstemps.c
index fda710b..fc0b3c5 100644
--- a/fusl/src/temp/mkstemps.c
+++ b/fusl/src/temp/mkstemps.c
@@ -2,11 +2,10 @@
 #include <stdlib.h>
 #include "libc.h"
 
-int __mkostemps(char *, int, int);
+int __mkostemps(char*, int, int);
 
-int mkstemps(char *template, int len)
-{
-	return __mkostemps(template, len, 0);
+int mkstemps(char* template, int len) {
+  return __mkostemps(template, len, 0);
 }
 
 LFS64(mkstemps);
diff --git a/fusl/src/temp/mktemp.c b/fusl/src/temp/mktemp.c
index 4ab0df2..dea45e5 100644
--- a/fusl/src/temp/mktemp.c
+++ b/fusl/src/temp/mktemp.c
@@ -4,29 +4,29 @@
 #include <errno.h>
 #include <sys/stat.h>
 
-char *__randname(char *);
+char* __randname(char*);
 
-char *mktemp(char *template)
-{
-	size_t l = strlen(template);
-	int retries = 100;
-	struct stat st;
+char* mktemp(char* template) {
+  size_t l = strlen(template);
+  int retries = 100;
+  struct stat st;
 
-	if (l < 6 || memcmp(template+l-6, "XXXXXX", 6)) {
-		errno = EINVAL;
-		*template = 0;
-		return template;
-	}
+  if (l < 6 || memcmp(template + l - 6, "XXXXXX", 6)) {
+    errno = EINVAL;
+    *template = 0;
+    return template;
+  }
 
-	do {
-		__randname(template+l-6);
-		if (stat(template, &st)) {
-			if (errno != ENOENT) *template = 0;
-			return template;
-		}
-	} while (--retries);
+  do {
+    __randname(template + l - 6);
+    if (stat(template, &st)) {
+      if (errno != ENOENT)
+        *template = 0;
+      return template;
+    }
+  } while (--retries);
 
-	*template = 0;
-	errno = EEXIST;
-	return template;
+  *template = 0;
+  errno = EEXIST;
+  return template;
 }
diff --git a/fusl/src/termios/cfgetospeed.c b/fusl/src/termios/cfgetospeed.c
index 0ebc198..b52eceb 100644
--- a/fusl/src/termios/cfgetospeed.c
+++ b/fusl/src/termios/cfgetospeed.c
@@ -1,12 +1,10 @@
 #include <termios.h>
 #include <sys/ioctl.h>
 
-speed_t cfgetospeed(const struct termios *tio)
-{
-	return tio->c_cflag & CBAUD;
+speed_t cfgetospeed(const struct termios* tio) {
+  return tio->c_cflag & CBAUD;
 }
 
-speed_t cfgetispeed(const struct termios *tio)
-{
-	return cfgetospeed(tio);
+speed_t cfgetispeed(const struct termios* tio) {
+  return cfgetospeed(tio);
 }
diff --git a/fusl/src/termios/cfmakeraw.c b/fusl/src/termios/cfmakeraw.c
index c9dddc1..64d845d 100644
--- a/fusl/src/termios/cfmakeraw.c
+++ b/fusl/src/termios/cfmakeraw.c
@@ -1,13 +1,13 @@
 #define _GNU_SOURCE
 #include <termios.h>
 
-void cfmakeraw(struct termios *t)
-{
-	t->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP|INLCR|IGNCR|ICRNL|IXON);
-	t->c_oflag &= ~OPOST;
-	t->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
-	t->c_cflag &= ~(CSIZE|PARENB);
-	t->c_cflag |= CS8;
-	t->c_cc[VMIN] = 1;
-	t->c_cc[VTIME] = 0;
+void cfmakeraw(struct termios* t) {
+  t->c_iflag &=
+      ~(IGNBRK | BRKINT | PARMRK | ISTRIP | INLCR | IGNCR | ICRNL | IXON);
+  t->c_oflag &= ~OPOST;
+  t->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
+  t->c_cflag &= ~(CSIZE | PARENB);
+  t->c_cflag |= CS8;
+  t->c_cc[VMIN] = 1;
+  t->c_cc[VTIME] = 0;
 }
diff --git a/fusl/src/termios/cfsetospeed.c b/fusl/src/termios/cfsetospeed.c
index 80c790f..66963f0 100644
--- a/fusl/src/termios/cfsetospeed.c
+++ b/fusl/src/termios/cfsetospeed.c
@@ -3,20 +3,18 @@
 #include <errno.h>
 #include "libc.h"
 
-int cfsetospeed(struct termios *tio, speed_t speed)
-{
-	if (speed & ~CBAUD) {
-		errno = EINVAL;
-		return -1;
-	}
-	tio->c_cflag &= ~CBAUD;
-	tio->c_cflag |= speed;
-	return 0;
+int cfsetospeed(struct termios* tio, speed_t speed) {
+  if (speed & ~CBAUD) {
+    errno = EINVAL;
+    return -1;
+  }
+  tio->c_cflag &= ~CBAUD;
+  tio->c_cflag |= speed;
+  return 0;
 }
 
-int cfsetispeed(struct termios *tio, speed_t speed)
-{
-	return speed ? cfsetospeed(tio, speed) : 0;
+int cfsetispeed(struct termios* tio, speed_t speed) {
+  return speed ? cfsetospeed(tio, speed) : 0;
 }
 
 weak_alias(cfsetospeed, cfsetspeed);
diff --git a/fusl/src/termios/tcdrain.c b/fusl/src/termios/tcdrain.c
index 6e43afb..fe3f4e7 100644
--- a/fusl/src/termios/tcdrain.c
+++ b/fusl/src/termios/tcdrain.c
@@ -3,7 +3,6 @@
 #include "libc.h"
 #include "syscall.h"
 
-int tcdrain(int fd)
-{
-	return syscall_cp(SYS_ioctl, fd, TCSBRK, 1);
+int tcdrain(int fd) {
+  return syscall_cp(SYS_ioctl, fd, TCSBRK, 1);
 }
diff --git a/fusl/src/termios/tcflow.c b/fusl/src/termios/tcflow.c
index c7fc3fe..d31fcc8 100644
--- a/fusl/src/termios/tcflow.c
+++ b/fusl/src/termios/tcflow.c
@@ -1,7 +1,6 @@
 #include <termios.h>
 #include <sys/ioctl.h>
 
-int tcflow(int fd, int action)
-{
-	return ioctl(fd, TCXONC, action);
+int tcflow(int fd, int action) {
+  return ioctl(fd, TCXONC, action);
 }
diff --git a/fusl/src/termios/tcflush.c b/fusl/src/termios/tcflush.c
index 5022266..d9c2c64 100644
--- a/fusl/src/termios/tcflush.c
+++ b/fusl/src/termios/tcflush.c
@@ -1,7 +1,6 @@
 #include <termios.h>
 #include <sys/ioctl.h>
 
-int tcflush(int fd, int queue)
-{
-	return ioctl(fd, TCFLSH, queue);
+int tcflush(int fd, int queue) {
+  return ioctl(fd, TCFLSH, queue);
 }
diff --git a/fusl/src/termios/tcgetattr.c b/fusl/src/termios/tcgetattr.c
index 545a0bf..a456acd 100644
--- a/fusl/src/termios/tcgetattr.c
+++ b/fusl/src/termios/tcgetattr.c
@@ -1,9 +1,8 @@
 #include <termios.h>
 #include <sys/ioctl.h>
 
-int tcgetattr(int fd, struct termios *tio)
-{
-	if (ioctl(fd, TCGETS, tio))
-		return -1;
-	return 0;
+int tcgetattr(int fd, struct termios* tio) {
+  if (ioctl(fd, TCGETS, tio))
+    return -1;
+  return 0;
 }
diff --git a/fusl/src/termios/tcgetsid.c b/fusl/src/termios/tcgetsid.c
index 1053fd6..e558f32 100644
--- a/fusl/src/termios/tcgetsid.c
+++ b/fusl/src/termios/tcgetsid.c
@@ -1,10 +1,9 @@
 #include <termios.h>
 #include <sys/ioctl.h>
 
-pid_t tcgetsid(int fd)
-{
-	int sid;
-	if (ioctl(fd, TIOCGSID, &sid) < 0)
-		return -1;
-	return sid;
+pid_t tcgetsid(int fd) {
+  int sid;
+  if (ioctl(fd, TIOCGSID, &sid) < 0)
+    return -1;
+  return sid;
 }
diff --git a/fusl/src/termios/tcsendbreak.c b/fusl/src/termios/tcsendbreak.c
index b6df0a2..0c42e67 100644
--- a/fusl/src/termios/tcsendbreak.c
+++ b/fusl/src/termios/tcsendbreak.c
@@ -1,8 +1,7 @@
 #include <termios.h>
 #include <sys/ioctl.h>
 
-int tcsendbreak(int fd, int dur)
-{
-	/* nonzero duration is implementation-defined, so ignore it */
-	return ioctl(fd, TCSBRK, 0);
+int tcsendbreak(int fd, int dur) {
+  /* nonzero duration is implementation-defined, so ignore it */
+  return ioctl(fd, TCSBRK, 0);
 }
diff --git a/fusl/src/termios/tcsetattr.c b/fusl/src/termios/tcsetattr.c
index 94df18f..f3a7bea 100644
--- a/fusl/src/termios/tcsetattr.c
+++ b/fusl/src/termios/tcsetattr.c
@@ -2,11 +2,10 @@
 #include <sys/ioctl.h>
 #include <errno.h>
 
-int tcsetattr(int fd, int act, const struct termios *tio)
-{
-	if (act < 0 || act > 2) {
-		errno = EINVAL;
-		return -1;
-	}
-	return ioctl(fd, TCSETS+act, tio);
+int tcsetattr(int fd, int act, const struct termios* tio) {
+  if (act < 0 || act > 2) {
+    errno = EINVAL;
+    return -1;
+  }
+  return ioctl(fd, TCSETS + act, tio);
 }
diff --git a/fusl/src/thread/__futex.c b/fusl/src/thread/__futex.c
index 96307c0..c836586 100644
--- a/fusl/src/thread/__futex.c
+++ b/fusl/src/thread/__futex.c
@@ -1,7 +1,6 @@
 #include "futex.h"
 #include "syscall.h"
 
-int __futex(volatile int *addr, int op, int val, void *ts)
-{
-	return syscall(SYS_futex, addr, op, val, ts);
+int __futex(volatile int* addr, int op, int val, void* ts) {
+  return syscall(SYS_futex, addr, op, val, ts);
 }
diff --git a/fusl/src/thread/__lock.c b/fusl/src/thread/__lock.c
index 0874c04..f5e1377 100644
--- a/fusl/src/thread/__lock.c
+++ b/fusl/src/thread/__lock.c
@@ -1,15 +1,15 @@
 #include "pthread_impl.h"
 
-void __lock(volatile int *l)
-{
-	if (libc.threads_minus_1)
-		while (a_swap(l, 1)) __wait(l, l+1, 1, 1);
+void __lock(volatile int* l) {
+  if (libc.threads_minus_1)
+    while (a_swap(l, 1))
+      __wait(l, l + 1, 1, 1);
 }
 
-void __unlock(volatile int *l)
-{
-	if (l[0]) {
-		a_store(l, 0);
-		if (l[1]) __wake(l, 1, 1);
-	}
+void __unlock(volatile int* l) {
+  if (l[0]) {
+    a_store(l, 0);
+    if (l[1])
+      __wake(l, 1, 1);
+  }
 }
diff --git a/fusl/src/thread/__set_thread_area.c b/fusl/src/thread/__set_thread_area.c
index 152a6a2..55923f3 100644
--- a/fusl/src/thread/__set_thread_area.c
+++ b/fusl/src/thread/__set_thread_area.c
@@ -1,10 +1,9 @@
 #include "pthread_impl.h"
 
-int __set_thread_area(void *p)
-{
+int __set_thread_area(void* p) {
 #ifdef SYS_set_thread_area
-	return __syscall(SYS_set_thread_area, p);
+  return __syscall(SYS_set_thread_area, p);
 #else
-	return -ENOSYS;
+  return -ENOSYS;
 #endif
 }
diff --git a/fusl/src/thread/__syscall_cp.c b/fusl/src/thread/__syscall_cp.c
index 09a2be8..29bc954 100644
--- a/fusl/src/thread/__syscall_cp.c
+++ b/fusl/src/thread/__syscall_cp.c
@@ -1,21 +1,26 @@
 #include "pthread_impl.h"
 #include "syscall.h"
 
-__attribute__((__visibility__("hidden")))
-long __syscall_cp_c();
+__attribute__((__visibility__("hidden"))) long __syscall_cp_c();
 
 static long sccp(syscall_arg_t nr,
-                 syscall_arg_t u, syscall_arg_t v, syscall_arg_t w,
-                 syscall_arg_t x, syscall_arg_t y, syscall_arg_t z)
-{
-	return (__syscall)(nr, u, v, w, x, y, z);
+                 syscall_arg_t u,
+                 syscall_arg_t v,
+                 syscall_arg_t w,
+                 syscall_arg_t x,
+                 syscall_arg_t y,
+                 syscall_arg_t z) {
+  return (__syscall)(nr, u, v, w, x, y, z);
 }
 
 weak_alias(sccp, __syscall_cp_c);
 
-long (__syscall_cp)(syscall_arg_t nr,
-                    syscall_arg_t u, syscall_arg_t v, syscall_arg_t w,
-                    syscall_arg_t x, syscall_arg_t y, syscall_arg_t z)
-{
-	return __syscall_cp_c(nr, u, v, w, x, y, z);
+long(__syscall_cp)(syscall_arg_t nr,
+                   syscall_arg_t u,
+                   syscall_arg_t v,
+                   syscall_arg_t w,
+                   syscall_arg_t x,
+                   syscall_arg_t y,
+                   syscall_arg_t z) {
+  return __syscall_cp_c(nr, u, v, w, x, y, z);
 }
diff --git a/fusl/src/thread/__timedwait.c b/fusl/src/thread/__timedwait.c
index 13d8465..cfed587 100644
--- a/fusl/src/thread/__timedwait.c
+++ b/fusl/src/thread/__timedwait.c
@@ -5,42 +5,52 @@
 #include "syscall.h"
 #include "pthread_impl.h"
 
-int __pthread_setcancelstate(int, int *);
-int __clock_gettime(clockid_t, struct timespec *);
+int __pthread_setcancelstate(int, int*);
+int __clock_gettime(clockid_t, struct timespec*);
 
-int __timedwait_cp(volatile int *addr, int val,
-	clockid_t clk, const struct timespec *at, int priv)
-{
-	int r;
-	struct timespec to, *top=0;
+int __timedwait_cp(volatile int* addr,
+                   int val,
+                   clockid_t clk,
+                   const struct timespec* at,
+                   int priv) {
+  int r;
+  struct timespec to, *top = 0;
 
-	if (priv) priv = 128;
+  if (priv)
+    priv = 128;
 
-	if (at) {
-		if (at->tv_nsec >= 1000000000UL) return EINVAL;
-		if (__clock_gettime(clk, &to)) return EINVAL;
-		to.tv_sec = at->tv_sec - to.tv_sec;
-		if ((to.tv_nsec = at->tv_nsec - to.tv_nsec) < 0) {
-			to.tv_sec--;
-			to.tv_nsec += 1000000000;
-		}
-		if (to.tv_sec < 0) return ETIMEDOUT;
-		top = &to;
-	}
+  if (at) {
+    if (at->tv_nsec >= 1000000000UL)
+      return EINVAL;
+    if (__clock_gettime(clk, &to))
+      return EINVAL;
+    to.tv_sec = at->tv_sec - to.tv_sec;
+    if ((to.tv_nsec = at->tv_nsec - to.tv_nsec) < 0) {
+      to.tv_sec--;
+      to.tv_nsec += 1000000000;
+    }
+    if (to.tv_sec < 0)
+      return ETIMEDOUT;
+    top = &to;
+  }
 
-	r = -__syscall_cp(SYS_futex, addr, FUTEX_WAIT|priv, val, top);
-	if (r == ENOSYS) r = -__syscall_cp(SYS_futex, addr, FUTEX_WAIT, val, top);
-	if (r != EINTR && r != ETIMEDOUT && r != ECANCELED) r = 0;
+  r = -__syscall_cp(SYS_futex, addr, FUTEX_WAIT | priv, val, top);
+  if (r == ENOSYS)
+    r = -__syscall_cp(SYS_futex, addr, FUTEX_WAIT, val, top);
+  if (r != EINTR && r != ETIMEDOUT && r != ECANCELED)
+    r = 0;
 
-	return r;
+  return r;
 }
 
-int __timedwait(volatile int *addr, int val,
-	clockid_t clk, const struct timespec *at, int priv)
-{
-	int cs, r;
-	__pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-	r = __timedwait_cp(addr, val, clk, at, priv);
-	__pthread_setcancelstate(cs, 0);
-	return r;
+int __timedwait(volatile int* addr,
+                int val,
+                clockid_t clk,
+                const struct timespec* at,
+                int priv) {
+  int cs, r;
+  __pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  r = __timedwait_cp(addr, val, clk, at, priv);
+  __pthread_setcancelstate(cs, 0);
+  return r;
 }
diff --git a/fusl/src/thread/__tls_get_addr.c b/fusl/src/thread/__tls_get_addr.c
index 6945faa..91cd3f7 100644
--- a/fusl/src/thread/__tls_get_addr.c
+++ b/fusl/src/thread/__tls_get_addr.c
@@ -2,15 +2,13 @@
 #include "pthread_impl.h"
 #include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-void *__tls_get_new(size_t *);
+__attribute__((__visibility__("hidden"))) void* __tls_get_new(size_t*);
 
-void *__tls_get_addr(size_t *v)
-{
-	pthread_t self = __pthread_self();
-	if (v[0]<=(size_t)self->dtv[0])
-		return (char *)self->dtv[v[0]]+v[1]+DTP_OFFSET;
-	return __tls_get_new(v);
+void* __tls_get_addr(size_t* v) {
+  pthread_t self = __pthread_self();
+  if (v[0] <= (size_t)self->dtv[0])
+    return (char*)self->dtv[v[0]] + v[1] + DTP_OFFSET;
+  return __tls_get_new(v);
 }
 
 weak_alias(__tls_get_addr, __tls_get_new);
diff --git a/fusl/src/thread/__unmapself.c b/fusl/src/thread/__unmapself.c
index 1d3bee1..14676b5 100644
--- a/fusl/src/thread/__unmapself.c
+++ b/fusl/src/thread/__unmapself.c
@@ -5,25 +5,23 @@
 #include "dynlink.h"
 
 static volatile int lock;
-static void *unmap_base;
+static void* unmap_base;
 static size_t unmap_size;
 static char shared_stack[256];
 
-static void do_unmap()
-{
-	__syscall(SYS_munmap, unmap_base, unmap_size);
-	__syscall(SYS_exit);
+static void do_unmap() {
+  __syscall(SYS_munmap, unmap_base, unmap_size);
+  __syscall(SYS_exit);
 }
 
-void __unmapself(void *base, size_t size)
-{
-	int tid=__pthread_self()->tid;
-	char *stack = shared_stack + sizeof shared_stack;
-	stack -= (uintptr_t)stack % 16;
-	while (lock || a_cas(&lock, 0, tid))
-		a_spin();
-	__syscall(SYS_set_tid_address, &lock);
-	unmap_base = base;
-	unmap_size = size;
-	CRTJMP(do_unmap, stack);
+void __unmapself(void* base, size_t size) {
+  int tid = __pthread_self()->tid;
+  char* stack = shared_stack + sizeof shared_stack;
+  stack -= (uintptr_t)stack % 16;
+  while (lock || a_cas(&lock, 0, tid))
+    a_spin();
+  __syscall(SYS_set_tid_address, &lock);
+  unmap_base = base;
+  unmap_size = size;
+  CRTJMP(do_unmap, stack);
 }
diff --git a/fusl/src/thread/__wait.c b/fusl/src/thread/__wait.c
index dc33c1a..4eb13dd 100644
--- a/fusl/src/thread/__wait.c
+++ b/fusl/src/thread/__wait.c
@@ -1,17 +1,21 @@
 #include "pthread_impl.h"
 
-void __wait(volatile int *addr, volatile int *waiters, int val, int priv)
-{
-	int spins=100;
-	if (priv) priv = FUTEX_PRIVATE;
-	while (spins-- && (!waiters || !*waiters)) {
-		if (*addr==val) a_spin();
-		else return;
-	}
-	if (waiters) a_inc(waiters);
-	while (*addr==val) {
-		__syscall(SYS_futex, addr, FUTEX_WAIT|priv, val, 0) != -ENOSYS
-		|| __syscall(SYS_futex, addr, FUTEX_WAIT, val, 0);
-	}
-	if (waiters) a_dec(waiters);
+void __wait(volatile int* addr, volatile int* waiters, int val, int priv) {
+  int spins = 100;
+  if (priv)
+    priv = FUTEX_PRIVATE;
+  while (spins-- && (!waiters || !*waiters)) {
+    if (*addr == val)
+      a_spin();
+    else
+      return;
+  }
+  if (waiters)
+    a_inc(waiters);
+  while (*addr == val) {
+    __syscall(SYS_futex, addr, FUTEX_WAIT | priv, val, 0) != -ENOSYS ||
+        __syscall(SYS_futex, addr, FUTEX_WAIT, val, 0);
+  }
+  if (waiters)
+    a_dec(waiters);
 }
diff --git a/fusl/src/thread/arm/__set_thread_area.c b/fusl/src/thread/arm/__set_thread_area.c
index 61d0282..ea69652 100644
--- a/fusl/src/thread/arm/__set_thread_area.c
+++ b/fusl/src/thread/arm/__set_thread_area.c
@@ -6,44 +6,46 @@
 #define HWCAP_TLS (1 << 15)
 
 extern const unsigned char __attribute__((__visibility__("hidden")))
-	__a_barrier_dummy[], __a_barrier_oldkuser[],
-	__a_barrier_v6[], __a_barrier_v7[],
-	__a_cas_dummy[], __a_cas_v6[], __a_cas_v7[],
-	__a_gettp_dummy[];
+__a_barrier_dummy[],
+    __a_barrier_oldkuser[], __a_barrier_v6[], __a_barrier_v7[], __a_cas_dummy[],
+    __a_cas_v6[], __a_cas_v7[], __a_gettp_dummy[];
 
 #define __a_barrier_kuser 0xffff0fa0
 #define __a_cas_kuser 0xffff0fc0
 #define __a_gettp_kuser 0xffff0fe0
 
-extern uintptr_t __attribute__((__visibility__("hidden")))
-	__a_barrier_ptr, __a_cas_ptr, __a_gettp_ptr;
+extern uintptr_t __attribute__((__visibility__("hidden"))) __a_barrier_ptr,
+    __a_cas_ptr, __a_gettp_ptr;
 
-#define SET(op,ver) (__a_##op##_ptr = \
-	(uintptr_t)__a_##op##_##ver - (uintptr_t)__a_##op##_dummy)
+#define SET(op, ver) \
+  (__a_##op##_ptr = (uintptr_t)__a_##op##_##ver - (uintptr_t)__a_##op##_dummy)
 
-int __set_thread_area(void *p)
-{
+int __set_thread_area(void* p) {
 #if !__ARM_ARCH_7A__ && !__ARM_ARCH_7R__ && __ARM_ARCH < 7
-	if (__hwcap & HWCAP_TLS) {
-		size_t *aux;
-		SET(cas, v7);
-		SET(barrier, v7);
-		for (aux=libc.auxv; *aux; aux+=2) {
-			if (*aux != AT_PLATFORM) continue;
-			const char *s = (void *)aux[1];
-			if (s[0]!='v' || s[1]!='6' || s[2]-'0'<10u) break;
-			SET(cas, v6);
-			SET(barrier, v6);
-			break;
-		}
-	} else {
-		int ver = *(int *)0xffff0ffc;
-		SET(gettp, kuser);
-		SET(cas, kuser);
-		SET(barrier, kuser);
-		if (ver < 2) a_crash();
-		if (ver < 3) SET(barrier, oldkuser);
-	}
+  if (__hwcap & HWCAP_TLS) {
+    size_t* aux;
+    SET(cas, v7);
+    SET(barrier, v7);
+    for (aux = libc.auxv; *aux; aux += 2) {
+      if (*aux != AT_PLATFORM)
+        continue;
+      const char* s = (void*)aux[1];
+      if (s[0] != 'v' || s[1] != '6' || s[2] - '0' < 10u)
+        break;
+      SET(cas, v6);
+      SET(barrier, v6);
+      break;
+    }
+  } else {
+    int ver = *(int*)0xffff0ffc;
+    SET(gettp, kuser);
+    SET(cas, kuser);
+    SET(barrier, kuser);
+    if (ver < 2)
+      a_crash();
+    if (ver < 3)
+      SET(barrier, oldkuser);
+  }
 #endif
-	return __syscall(0xf0005, p);
+  return __syscall(0xf0005, p);
 }
diff --git a/fusl/src/thread/call_once.c b/fusl/src/thread/call_once.c
index a7bc935..4cc2ff4 100644
--- a/fusl/src/thread/call_once.c
+++ b/fusl/src/thread/call_once.c
@@ -1,8 +1,7 @@
 #include <threads.h>
 
-int __pthread_once(once_flag *, void (*)(void));
+int __pthread_once(once_flag*, void (*)(void));
 
-void call_once(once_flag *flag, void (*func)(void))
-{
-	__pthread_once(flag, func);
+void call_once(once_flag* flag, void (*func)(void)) {
+  __pthread_once(flag, func);
 }
diff --git a/fusl/src/thread/clone.c b/fusl/src/thread/clone.c
index be80c8e..f25ae47 100644
--- a/fusl/src/thread/clone.c
+++ b/fusl/src/thread/clone.c
@@ -1,7 +1,6 @@
 #include <errno.h>
 #include "pthread_impl.h"
 
-int __clone(int (*func)(void *), void *stack, int flags, void *arg, ...)
-{
-	return -ENOSYS;
+int __clone(int (*func)(void*), void* stack, int flags, void* arg, ...) {
+  return -ENOSYS;
 }
diff --git a/fusl/src/thread/cnd_broadcast.c b/fusl/src/thread/cnd_broadcast.c
index 85d4d3e..ca9dc86 100644
--- a/fusl/src/thread/cnd_broadcast.c
+++ b/fusl/src/thread/cnd_broadcast.c
@@ -1,10 +1,9 @@
 #include <threads.h>
 
-int __private_cond_signal(cnd_t *, int);
+int __private_cond_signal(cnd_t*, int);
 
-int cnd_broadcast(cnd_t *c)
-{
-	/* This internal function never fails, and always returns zero,
-	 * which matches the value thrd_success is defined with. */
-	return __private_cond_signal(c, -1);
+int cnd_broadcast(cnd_t* c) {
+  /* This internal function never fails, and always returns zero,
+   * which matches the value thrd_success is defined with. */
+  return __private_cond_signal(c, -1);
 }
diff --git a/fusl/src/thread/cnd_destroy.c b/fusl/src/thread/cnd_destroy.c
index 453c90b..56b9add 100644
--- a/fusl/src/thread/cnd_destroy.c
+++ b/fusl/src/thread/cnd_destroy.c
@@ -1,6 +1,5 @@
 #include <threads.h>
 
-void cnd_destroy(cnd_t *c)
-{
-	/* For private cv this is a no-op */
+void cnd_destroy(cnd_t* c) {
+  /* For private cv this is a no-op */
 }
diff --git a/fusl/src/thread/cnd_init.c b/fusl/src/thread/cnd_init.c
index 18c5085..4b6852f 100644
--- a/fusl/src/thread/cnd_init.c
+++ b/fusl/src/thread/cnd_init.c
@@ -1,7 +1,6 @@
 #include <threads.h>
 
-int cnd_init(cnd_t *c)
-{
-	*c = (cnd_t){ 0 };
-	return thrd_success;
+int cnd_init(cnd_t* c) {
+  *c = (cnd_t){0};
+  return thrd_success;
 }
diff --git a/fusl/src/thread/cnd_signal.c b/fusl/src/thread/cnd_signal.c
index 1211260..7f81363 100644
--- a/fusl/src/thread/cnd_signal.c
+++ b/fusl/src/thread/cnd_signal.c
@@ -1,10 +1,9 @@
 #include <threads.h>
 
-int __private_cond_signal(cnd_t *, int);
+int __private_cond_signal(cnd_t*, int);
 
-int cnd_signal(cnd_t *c)
-{
-	/* This internal function never fails, and always returns zero,
-	 * which matches the value thrd_success is defined with. */
-	return __private_cond_signal(c, 1);
+int cnd_signal(cnd_t* c) {
+  /* This internal function never fails, and always returns zero,
+   * which matches the value thrd_success is defined with. */
+  return __private_cond_signal(c, 1);
 }
diff --git a/fusl/src/thread/cnd_timedwait.c b/fusl/src/thread/cnd_timedwait.c
index 5997679..815dd2c 100644
--- a/fusl/src/thread/cnd_timedwait.c
+++ b/fusl/src/thread/cnd_timedwait.c
@@ -1,15 +1,21 @@
 #include <threads.h>
 #include <errno.h>
 
-int __pthread_cond_timedwait(cnd_t *restrict, mtx_t *restrict, const struct timespec *restrict);
+int __pthread_cond_timedwait(cnd_t* restrict,
+                             mtx_t* restrict,
+                             const struct timespec* restrict);
 
-int cnd_timedwait(cnd_t *restrict c, mtx_t *restrict m, const struct timespec *restrict ts)
-{
-	int ret = __pthread_cond_timedwait(c, m, ts);
-	switch (ret) {
-	/* May also return EINVAL or EPERM. */
-	default:        return thrd_error;
-	case 0:         return thrd_success;
-	case ETIMEDOUT: return thrd_timedout;
-	}
+int cnd_timedwait(cnd_t* restrict c,
+                  mtx_t* restrict m,
+                  const struct timespec* restrict ts) {
+  int ret = __pthread_cond_timedwait(c, m, ts);
+  switch (ret) {
+    /* May also return EINVAL or EPERM. */
+    default:
+      return thrd_error;
+    case 0:
+      return thrd_success;
+    case ETIMEDOUT:
+      return thrd_timedout;
+  }
 }
diff --git a/fusl/src/thread/cnd_wait.c b/fusl/src/thread/cnd_wait.c
index 602796f..694ad51 100644
--- a/fusl/src/thread/cnd_wait.c
+++ b/fusl/src/thread/cnd_wait.c
@@ -1,9 +1,8 @@
 #include <threads.h>
 
-int cnd_wait(cnd_t *c, mtx_t *m)
-{
-	/* Calling cnd_timedwait with a null pointer is an extension.
-	 * It is convenient here to avoid duplication of the logic
-	 * for return values. */
-	return cnd_timedwait(c, m, 0);
+int cnd_wait(cnd_t* c, mtx_t* m) {
+  /* Calling cnd_timedwait with a null pointer is an extension.
+   * It is convenient here to avoid duplication of the logic
+   * for return values. */
+  return cnd_timedwait(c, m, 0);
 }
diff --git a/fusl/src/thread/lock_ptc.c b/fusl/src/thread/lock_ptc.c
index 7adedab..3f905f1 100644
--- a/fusl/src/thread/lock_ptc.c
+++ b/fusl/src/thread/lock_ptc.c
@@ -2,17 +2,14 @@
 
 static pthread_rwlock_t lock = PTHREAD_RWLOCK_INITIALIZER;
 
-void __inhibit_ptc()
-{
-	pthread_rwlock_wrlock(&lock);
+void __inhibit_ptc() {
+  pthread_rwlock_wrlock(&lock);
 }
 
-void __acquire_ptc()
-{
-	pthread_rwlock_rdlock(&lock);
+void __acquire_ptc() {
+  pthread_rwlock_rdlock(&lock);
 }
 
-void __release_ptc()
-{
-	pthread_rwlock_unlock(&lock);
+void __release_ptc() {
+  pthread_rwlock_unlock(&lock);
 }
diff --git a/fusl/src/thread/mtx_destroy.c b/fusl/src/thread/mtx_destroy.c
index 40a0899..acd77ec 100644
--- a/fusl/src/thread/mtx_destroy.c
+++ b/fusl/src/thread/mtx_destroy.c
@@ -1,5 +1,3 @@
 #include <threads.h>
 
-void mtx_destroy(mtx_t *mtx)
-{
-}
+void mtx_destroy(mtx_t* mtx) {}
diff --git a/fusl/src/thread/mtx_init.c b/fusl/src/thread/mtx_init.c
index 4826f76..808b056 100644
--- a/fusl/src/thread/mtx_init.c
+++ b/fusl/src/thread/mtx_init.c
@@ -1,10 +1,10 @@
 #include "pthread_impl.h"
 #include <threads.h>
 
-int mtx_init(mtx_t *m, int type)
-{
-	*m = (mtx_t){
-		._m_type = ((type&mtx_recursive) ? PTHREAD_MUTEX_RECURSIVE : PTHREAD_MUTEX_NORMAL),
-	};
-	return thrd_success;
+int mtx_init(mtx_t* m, int type) {
+  *m = (mtx_t){
+      ._m_type = ((type & mtx_recursive) ? PTHREAD_MUTEX_RECURSIVE
+                                         : PTHREAD_MUTEX_NORMAL),
+  };
+  return thrd_success;
 }
diff --git a/fusl/src/thread/mtx_lock.c b/fusl/src/thread/mtx_lock.c
index 5c2415c..a79464a 100644
--- a/fusl/src/thread/mtx_lock.c
+++ b/fusl/src/thread/mtx_lock.c
@@ -1,12 +1,11 @@
 #include "pthread_impl.h"
 #include <threads.h>
 
-int mtx_lock(mtx_t *m)
-{
-	if (m->_m_type == PTHREAD_MUTEX_NORMAL && !a_cas(&m->_m_lock, 0, EBUSY))
-		return thrd_success;
-	/* Calling mtx_timedlock with a null pointer is an extension.
-	 * It is convenient, here to avoid duplication of the logic
-	 * for return values. */
-	return mtx_timedlock(m, 0);
+int mtx_lock(mtx_t* m) {
+  if (m->_m_type == PTHREAD_MUTEX_NORMAL && !a_cas(&m->_m_lock, 0, EBUSY))
+    return thrd_success;
+  /* Calling mtx_timedlock with a null pointer is an extension.
+   * It is convenient, here to avoid duplication of the logic
+   * for return values. */
+  return mtx_timedlock(m, 0);
 }
diff --git a/fusl/src/thread/mtx_timedlock.c b/fusl/src/thread/mtx_timedlock.c
index bcc152c..c8e448e 100644
--- a/fusl/src/thread/mtx_timedlock.c
+++ b/fusl/src/thread/mtx_timedlock.c
@@ -1,14 +1,16 @@
 #include <threads.h>
 #include <errno.h>
 
-int __pthread_mutex_timedlock(mtx_t *restrict, const struct timespec *restrict);
+int __pthread_mutex_timedlock(mtx_t* restrict, const struct timespec* restrict);
 
-int mtx_timedlock(mtx_t *restrict m, const struct timespec *restrict ts)
-{
-	int ret = __pthread_mutex_timedlock(m, ts);
-	switch (ret) {
-	default:        return thrd_error;
-	case 0:         return thrd_success;
-	case ETIMEDOUT: return thrd_timedout;
-	}
+int mtx_timedlock(mtx_t* restrict m, const struct timespec* restrict ts) {
+  int ret = __pthread_mutex_timedlock(m, ts);
+  switch (ret) {
+    default:
+      return thrd_error;
+    case 0:
+      return thrd_success;
+    case ETIMEDOUT:
+      return thrd_timedout;
+  }
 }
diff --git a/fusl/src/thread/mtx_trylock.c b/fusl/src/thread/mtx_trylock.c
index 61e7694..b7c0ca2 100644
--- a/fusl/src/thread/mtx_trylock.c
+++ b/fusl/src/thread/mtx_trylock.c
@@ -1,17 +1,19 @@
 #include "pthread_impl.h"
 #include <threads.h>
 
-int __pthread_mutex_trylock(mtx_t *);
+int __pthread_mutex_trylock(mtx_t*);
 
-int mtx_trylock(mtx_t *m)
-{
-	if (m->_m_type == PTHREAD_MUTEX_NORMAL)
-		return (a_cas(&m->_m_lock, 0, EBUSY) & EBUSY) ? thrd_busy : thrd_success;
+int mtx_trylock(mtx_t* m) {
+  if (m->_m_type == PTHREAD_MUTEX_NORMAL)
+    return (a_cas(&m->_m_lock, 0, EBUSY) & EBUSY) ? thrd_busy : thrd_success;
 
-	int ret = __pthread_mutex_trylock(m);
-	switch (ret) {
-	default:    return thrd_error;
-	case 0:     return thrd_success;
-	case EBUSY: return thrd_busy;
-	}
+  int ret = __pthread_mutex_trylock(m);
+  switch (ret) {
+    default:
+      return thrd_error;
+    case 0:
+      return thrd_success;
+    case EBUSY:
+      return thrd_busy;
+  }
 }
diff --git a/fusl/src/thread/mtx_unlock.c b/fusl/src/thread/mtx_unlock.c
index 5033ace..edc7241 100644
--- a/fusl/src/thread/mtx_unlock.c
+++ b/fusl/src/thread/mtx_unlock.c
@@ -1,11 +1,10 @@
 #include <threads.h>
 
-int __pthread_mutex_unlock(mtx_t *);
+int __pthread_mutex_unlock(mtx_t*);
 
-int mtx_unlock(mtx_t *mtx)
-{
-	/* The only cases where pthread_mutex_unlock can return an
-	 * error are undefined behavior for C11 mtx_unlock, so we can
-	 * assume it does not return an error and simply tail call. */
-	return __pthread_mutex_unlock(mtx);
+int mtx_unlock(mtx_t* mtx) {
+  /* The only cases where pthread_mutex_unlock can return an
+   * error are undefined behavior for C11 mtx_unlock, so we can
+   * assume it does not return an error and simply tail call. */
+  return __pthread_mutex_unlock(mtx);
 }
diff --git a/fusl/src/thread/pthread_atfork.c b/fusl/src/thread/pthread_atfork.c
index a40d7f6..1479a95 100644
--- a/fusl/src/thread/pthread_atfork.c
+++ b/fusl/src/thread/pthread_atfork.c
@@ -2,47 +2,53 @@
 #include "libc.h"
 
 static struct atfork_funcs {
-	void (*prepare)(void);
-	void (*parent)(void);
-	void (*child)(void);
-	struct atfork_funcs *prev, *next;
-} *funcs;
+  void (*prepare)(void);
+  void (*parent)(void);
+  void (*child)(void);
+  struct atfork_funcs *prev, *next;
+} * funcs;
 
 static volatile int lock[2];
 
-void __fork_handler(int who)
-{
-	struct atfork_funcs *p;
-	if (!funcs) return;
-	if (who < 0) {
-		LOCK(lock);
-		for (p=funcs; p; p = p->next) {
-			if (p->prepare) p->prepare();
-			funcs = p;
-		}
-	} else {
-		for (p=funcs; p; p = p->prev) {
-			if (!who && p->parent) p->parent();
-			else if (who && p->child) p->child();
-			funcs = p;
-		}
-		UNLOCK(lock);
-	}
+void __fork_handler(int who) {
+  struct atfork_funcs* p;
+  if (!funcs)
+    return;
+  if (who < 0) {
+    LOCK(lock);
+    for (p = funcs; p; p = p->next) {
+      if (p->prepare)
+        p->prepare();
+      funcs = p;
+    }
+  } else {
+    for (p = funcs; p; p = p->prev) {
+      if (!who && p->parent)
+        p->parent();
+      else if (who && p->child)
+        p->child();
+      funcs = p;
+    }
+    UNLOCK(lock);
+  }
 }
 
-int pthread_atfork(void (*prepare)(void), void (*parent)(void), void (*child)(void))
-{
-	struct atfork_funcs *new = malloc(sizeof *new);
-	if (!new) return -1;
+int pthread_atfork(void (*prepare)(void),
+                   void (*parent)(void),
+                   void (*child)(void)) {
+  struct atfork_funcs* new = malloc(sizeof *new);
+  if (!new)
+    return -1;
 
-	LOCK(lock);
-	new->next = funcs;
-	new->prev = 0;
-	new->prepare = prepare;
-	new->parent = parent;
-	new->child = child;
-	if (funcs) funcs->prev = new;
-	funcs = new;
-	UNLOCK(lock);
-	return 0;
+  LOCK(lock);
+  new->next = funcs;
+  new->prev = 0;
+  new->prepare = prepare;
+  new->parent = parent;
+  new->child = child;
+  if (funcs)
+    funcs->prev = new;
+  funcs = new;
+  UNLOCK(lock);
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_attr_destroy.c b/fusl/src/thread/pthread_attr_destroy.c
index b5845dd..8c764f6 100644
--- a/fusl/src/thread/pthread_attr_destroy.c
+++ b/fusl/src/thread/pthread_attr_destroy.c
@@ -1,6 +1,5 @@
 #include "pthread_impl.h"
 
-int pthread_attr_destroy(pthread_attr_t *a)
-{
-	return 0;
+int pthread_attr_destroy(pthread_attr_t* a) {
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_attr_get.c b/fusl/src/thread/pthread_attr_get.c
index 3d296bf..295e107 100644
--- a/fusl/src/thread/pthread_attr_get.c
+++ b/fusl/src/thread/pthread_attr_get.c
@@ -1,98 +1,98 @@
 #include "pthread_impl.h"
 
-int pthread_attr_getdetachstate(const pthread_attr_t *a, int *state)
-{
-	*state = a->_a_detach;
-	return 0;
+int pthread_attr_getdetachstate(const pthread_attr_t* a, int* state) {
+  *state = a->_a_detach;
+  return 0;
 }
-int pthread_attr_getguardsize(const pthread_attr_t *restrict a, size_t *restrict size)
-{
-	*size = a->_a_guardsize + DEFAULT_GUARD_SIZE;
-	return 0;
+int pthread_attr_getguardsize(const pthread_attr_t* restrict a,
+                              size_t* restrict size) {
+  *size = a->_a_guardsize + DEFAULT_GUARD_SIZE;
+  return 0;
 }
 
-int pthread_attr_getinheritsched(const pthread_attr_t *restrict a, int *restrict inherit)
-{
-	*inherit = a->_a_sched;
-	return 0;
+int pthread_attr_getinheritsched(const pthread_attr_t* restrict a,
+                                 int* restrict inherit) {
+  *inherit = a->_a_sched;
+  return 0;
 }
 
-int pthread_attr_getschedparam(const pthread_attr_t *restrict a, struct sched_param *restrict param)
-{
-	param->sched_priority = a->_a_prio;
-	return 0;
+int pthread_attr_getschedparam(const pthread_attr_t* restrict a,
+                               struct sched_param* restrict param) {
+  param->sched_priority = a->_a_prio;
+  return 0;
 }
 
-int pthread_attr_getschedpolicy(const pthread_attr_t *restrict a, int *restrict policy)
-{
-	*policy = a->_a_policy;
-	return 0;
+int pthread_attr_getschedpolicy(const pthread_attr_t* restrict a,
+                                int* restrict policy) {
+  *policy = a->_a_policy;
+  return 0;
 }
 
-int pthread_attr_getscope(const pthread_attr_t *restrict a, int *restrict scope)
-{
-	*scope = PTHREAD_SCOPE_SYSTEM;
-	return 0;
+int pthread_attr_getscope(const pthread_attr_t* restrict a,
+                          int* restrict scope) {
+  *scope = PTHREAD_SCOPE_SYSTEM;
+  return 0;
 }
 
-int pthread_attr_getstack(const pthread_attr_t *restrict a, void **restrict addr, size_t *restrict size)
-{
-	if (!a->_a_stackaddr)
-		return EINVAL;
-	*size = a->_a_stacksize + DEFAULT_STACK_SIZE;
-	*addr = (void *)(a->_a_stackaddr - *size);
-	return 0;
+int pthread_attr_getstack(const pthread_attr_t* restrict a,
+                          void** restrict addr,
+                          size_t* restrict size) {
+  if (!a->_a_stackaddr)
+    return EINVAL;
+  *size = a->_a_stacksize + DEFAULT_STACK_SIZE;
+  *addr = (void*)(a->_a_stackaddr - *size);
+  return 0;
 }
 
-int pthread_attr_getstacksize(const pthread_attr_t *restrict a, size_t *restrict size)
-{
-	*size = a->_a_stacksize + DEFAULT_STACK_SIZE;
-	return 0;
+int pthread_attr_getstacksize(const pthread_attr_t* restrict a,
+                              size_t* restrict size) {
+  *size = a->_a_stacksize + DEFAULT_STACK_SIZE;
+  return 0;
 }
 
-int pthread_barrierattr_getpshared(const pthread_barrierattr_t *restrict a, int *restrict pshared)
-{
-	*pshared = !!a->__attr;
-	return 0;
+int pthread_barrierattr_getpshared(const pthread_barrierattr_t* restrict a,
+                                   int* restrict pshared) {
+  *pshared = !!a->__attr;
+  return 0;
 }
 
-int pthread_condattr_getclock(const pthread_condattr_t *restrict a, clockid_t *restrict clk)
-{
-	*clk = a->__attr & 0x7fffffff;
-	return 0;
+int pthread_condattr_getclock(const pthread_condattr_t* restrict a,
+                              clockid_t* restrict clk) {
+  *clk = a->__attr & 0x7fffffff;
+  return 0;
 }
 
-int pthread_condattr_getpshared(const pthread_condattr_t *restrict a, int *restrict pshared)
-{
-	*pshared = a->__attr>>31;
-	return 0;
+int pthread_condattr_getpshared(const pthread_condattr_t* restrict a,
+                                int* restrict pshared) {
+  *pshared = a->__attr >> 31;
+  return 0;
 }
 
-int pthread_mutexattr_getprotocol(const pthread_mutexattr_t *restrict a, int *restrict protocol)
-{
-	*protocol = PTHREAD_PRIO_NONE;
-	return 0;
+int pthread_mutexattr_getprotocol(const pthread_mutexattr_t* restrict a,
+                                  int* restrict protocol) {
+  *protocol = PTHREAD_PRIO_NONE;
+  return 0;
 }
-int pthread_mutexattr_getpshared(const pthread_mutexattr_t *restrict a, int *restrict pshared)
-{
-	*pshared = a->__attr / 128U % 2;
-	return 0;
+int pthread_mutexattr_getpshared(const pthread_mutexattr_t* restrict a,
+                                 int* restrict pshared) {
+  *pshared = a->__attr / 128U % 2;
+  return 0;
 }
 
-int pthread_mutexattr_getrobust(const pthread_mutexattr_t *restrict a, int *restrict robust)
-{
-	*robust = a->__attr / 4U % 2;
-	return 0;
+int pthread_mutexattr_getrobust(const pthread_mutexattr_t* restrict a,
+                                int* restrict robust) {
+  *robust = a->__attr / 4U % 2;
+  return 0;
 }
 
-int pthread_mutexattr_gettype(const pthread_mutexattr_t *restrict a, int *restrict type)
-{
-	*type = a->__attr & 3;
-	return 0;
+int pthread_mutexattr_gettype(const pthread_mutexattr_t* restrict a,
+                              int* restrict type) {
+  *type = a->__attr & 3;
+  return 0;
 }
 
-int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t *restrict a, int *restrict pshared)
-{
-	*pshared = a->__attr[0];
-	return 0;
+int pthread_rwlockattr_getpshared(const pthread_rwlockattr_t* restrict a,
+                                  int* restrict pshared) {
+  *pshared = a->__attr[0];
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_attr_init.c b/fusl/src/thread/pthread_attr_init.c
index 969e0a3..b956ee5 100644
--- a/fusl/src/thread/pthread_attr_init.c
+++ b/fusl/src/thread/pthread_attr_init.c
@@ -1,7 +1,6 @@
 #include "pthread_impl.h"
 
-int pthread_attr_init(pthread_attr_t *a)
-{
-	*a = (pthread_attr_t){0};
-	return 0;
+int pthread_attr_init(pthread_attr_t* a) {
+  *a = (pthread_attr_t){0};
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_attr_setdetachstate.c b/fusl/src/thread/pthread_attr_setdetachstate.c
index 1b71278..36f6705 100644
--- a/fusl/src/thread/pthread_attr_setdetachstate.c
+++ b/fusl/src/thread/pthread_attr_setdetachstate.c
@@ -1,8 +1,8 @@
 #include "pthread_impl.h"
 
-int pthread_attr_setdetachstate(pthread_attr_t *a, int state)
-{
-	if (state > 1U) return EINVAL;
-	a->_a_detach = state;
-	return 0;
+int pthread_attr_setdetachstate(pthread_attr_t* a, int state) {
+  if (state > 1U)
+    return EINVAL;
+  a->_a_detach = state;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_attr_setguardsize.c b/fusl/src/thread/pthread_attr_setguardsize.c
index 9f21d24..6db7957 100644
--- a/fusl/src/thread/pthread_attr_setguardsize.c
+++ b/fusl/src/thread/pthread_attr_setguardsize.c
@@ -1,8 +1,8 @@
 #include "pthread_impl.h"
 
-int pthread_attr_setguardsize(pthread_attr_t *a, size_t size)
-{
-	if (size > SIZE_MAX/8) return EINVAL;
-	a->_a_guardsize = size - DEFAULT_GUARD_SIZE;
-	return 0;
+int pthread_attr_setguardsize(pthread_attr_t* a, size_t size) {
+  if (size > SIZE_MAX / 8)
+    return EINVAL;
+  a->_a_guardsize = size - DEFAULT_GUARD_SIZE;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_attr_setinheritsched.c b/fusl/src/thread/pthread_attr_setinheritsched.c
index c91d8f8..c067de0 100644
--- a/fusl/src/thread/pthread_attr_setinheritsched.c
+++ b/fusl/src/thread/pthread_attr_setinheritsched.c
@@ -1,8 +1,8 @@
 #include "pthread_impl.h"
 
-int pthread_attr_setinheritsched(pthread_attr_t *a, int inherit)
-{
-	if (inherit > 1U) return EINVAL;
-	a->_a_sched = inherit;
-	return 0;
+int pthread_attr_setinheritsched(pthread_attr_t* a, int inherit) {
+  if (inherit > 1U)
+    return EINVAL;
+  a->_a_sched = inherit;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_attr_setschedparam.c b/fusl/src/thread/pthread_attr_setschedparam.c
index d4c1204..6a8bd34 100644
--- a/fusl/src/thread/pthread_attr_setschedparam.c
+++ b/fusl/src/thread/pthread_attr_setschedparam.c
@@ -1,7 +1,7 @@
 #include "pthread_impl.h"
 
-int pthread_attr_setschedparam(pthread_attr_t *restrict a, const struct sched_param *restrict param)
-{
-	a->_a_prio = param->sched_priority;
-	return 0;
+int pthread_attr_setschedparam(pthread_attr_t* restrict a,
+                               const struct sched_param* restrict param) {
+  a->_a_prio = param->sched_priority;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_attr_setschedpolicy.c b/fusl/src/thread/pthread_attr_setschedpolicy.c
index bb71f39..2687433 100644
--- a/fusl/src/thread/pthread_attr_setschedpolicy.c
+++ b/fusl/src/thread/pthread_attr_setschedpolicy.c
@@ -1,7 +1,6 @@
 #include "pthread_impl.h"
 
-int pthread_attr_setschedpolicy(pthread_attr_t *a, int policy)
-{
-	a->_a_policy = policy;
-	return 0;
+int pthread_attr_setschedpolicy(pthread_attr_t* a, int policy) {
+  a->_a_policy = policy;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_attr_setscope.c b/fusl/src/thread/pthread_attr_setscope.c
index 46b520c..3ea46d88 100644
--- a/fusl/src/thread/pthread_attr_setscope.c
+++ b/fusl/src/thread/pthread_attr_setscope.c
@@ -1,13 +1,12 @@
 #include "pthread_impl.h"
 
-int pthread_attr_setscope(pthread_attr_t *a, int scope)
-{
-	switch (scope) {
-	case PTHREAD_SCOPE_SYSTEM:
-		return 0;
-	case PTHREAD_SCOPE_PROCESS:
-		return ENOTSUP;
-	default:
-		return EINVAL;
-	}
+int pthread_attr_setscope(pthread_attr_t* a, int scope) {
+  switch (scope) {
+    case PTHREAD_SCOPE_SYSTEM:
+      return 0;
+    case PTHREAD_SCOPE_PROCESS:
+      return ENOTSUP;
+    default:
+      return EINVAL;
+  }
 }
diff --git a/fusl/src/thread/pthread_attr_setstack.c b/fusl/src/thread/pthread_attr_setstack.c
index 61707a3..85c4549 100644
--- a/fusl/src/thread/pthread_attr_setstack.c
+++ b/fusl/src/thread/pthread_attr_setstack.c
@@ -1,9 +1,9 @@
 #include "pthread_impl.h"
 
-int pthread_attr_setstack(pthread_attr_t *a, void *addr, size_t size)
-{
-	if (size-PTHREAD_STACK_MIN > SIZE_MAX/4) return EINVAL;
-	a->_a_stackaddr = (size_t)addr + size;
-	a->_a_stacksize = size - DEFAULT_STACK_SIZE;
-	return 0;
+int pthread_attr_setstack(pthread_attr_t* a, void* addr, size_t size) {
+  if (size - PTHREAD_STACK_MIN > SIZE_MAX / 4)
+    return EINVAL;
+  a->_a_stackaddr = (size_t)addr + size;
+  a->_a_stacksize = size - DEFAULT_STACK_SIZE;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_attr_setstacksize.c b/fusl/src/thread/pthread_attr_setstacksize.c
index 09d3fda..b75fada 100644
--- a/fusl/src/thread/pthread_attr_setstacksize.c
+++ b/fusl/src/thread/pthread_attr_setstacksize.c
@@ -1,9 +1,9 @@
 #include "pthread_impl.h"
 
-int pthread_attr_setstacksize(pthread_attr_t *a, size_t size)
-{
-	if (size-PTHREAD_STACK_MIN > SIZE_MAX/4) return EINVAL;
-	a->_a_stackaddr = 0;
-	a->_a_stacksize = size - DEFAULT_STACK_SIZE;
-	return 0;
+int pthread_attr_setstacksize(pthread_attr_t* a, size_t size) {
+  if (size - PTHREAD_STACK_MIN > SIZE_MAX / 4)
+    return EINVAL;
+  a->_a_stackaddr = 0;
+  a->_a_stacksize = size - DEFAULT_STACK_SIZE;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_barrier_destroy.c b/fusl/src/thread/pthread_barrier_destroy.c
index 4ce0b2e..cbc585e 100644
--- a/fusl/src/thread/pthread_barrier_destroy.c
+++ b/fusl/src/thread/pthread_barrier_destroy.c
@@ -1,15 +1,14 @@
 #include "pthread_impl.h"
 
-int pthread_barrier_destroy(pthread_barrier_t *b)
-{
-	if (b->_b_limit < 0) {
-		if (b->_b_lock) {
-			int v;
-			a_or(&b->_b_lock, INT_MIN);
-			while ((v = b->_b_lock) & INT_MAX)
-				__wait(&b->_b_lock, 0, v, 0);
-		}
-		__vm_wait();
-	}
-	return 0;
+int pthread_barrier_destroy(pthread_barrier_t* b) {
+  if (b->_b_limit < 0) {
+    if (b->_b_lock) {
+      int v;
+      a_or(&b->_b_lock, INT_MIN);
+      while ((v = b->_b_lock) & INT_MAX)
+        __wait(&b->_b_lock, 0, v, 0);
+    }
+    __vm_wait();
+  }
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_barrier_init.c b/fusl/src/thread/pthread_barrier_init.c
index 4c3cb28..5cc416a 100644
--- a/fusl/src/thread/pthread_barrier_init.c
+++ b/fusl/src/thread/pthread_barrier_init.c
@@ -1,8 +1,10 @@
 #include "pthread_impl.h"
 
-int pthread_barrier_init(pthread_barrier_t *restrict b, const pthread_barrierattr_t *restrict a, unsigned count)
-{
-	if (count-1 > INT_MAX-1) return EINVAL;
-	*b = (pthread_barrier_t){ ._b_limit = count-1 | (a?a->__attr:0) };
-	return 0;
+int pthread_barrier_init(pthread_barrier_t* restrict b,
+                         const pthread_barrierattr_t* restrict a,
+                         unsigned count) {
+  if (count - 1 > INT_MAX - 1)
+    return EINVAL;
+  *b = (pthread_barrier_t){._b_limit = count - 1 | (a ? a->__attr : 0)};
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_barrier_wait.c b/fusl/src/thread/pthread_barrier_wait.c
index 06b83db..5d5f68b 100644
--- a/fusl/src/thread/pthread_barrier_wait.c
+++ b/fusl/src/thread/pthread_barrier_wait.c
@@ -1,111 +1,118 @@
 #include "pthread_impl.h"
 
-static int pshared_barrier_wait(pthread_barrier_t *b)
-{
-	int limit = (b->_b_limit & INT_MAX) + 1;
-	int ret = 0;
-	int v, w;
+static int pshared_barrier_wait(pthread_barrier_t* b) {
+  int limit = (b->_b_limit & INT_MAX) + 1;
+  int ret = 0;
+  int v, w;
 
-	if (limit==1) return PTHREAD_BARRIER_SERIAL_THREAD;
+  if (limit == 1)
+    return PTHREAD_BARRIER_SERIAL_THREAD;
 
-	while ((v=a_cas(&b->_b_lock, 0, limit)))
-		__wait(&b->_b_lock, &b->_b_waiters, v, 0);
+  while ((v = a_cas(&b->_b_lock, 0, limit)))
+    __wait(&b->_b_lock, &b->_b_waiters, v, 0);
 
-	/* Wait for <limit> threads to get to the barrier */
-	if (++b->_b_count == limit) {
-		a_store(&b->_b_count, 0);
-		ret = PTHREAD_BARRIER_SERIAL_THREAD;
-		if (b->_b_waiters2) __wake(&b->_b_count, -1, 0);
-	} else {
-		a_store(&b->_b_lock, 0);
-		if (b->_b_waiters) __wake(&b->_b_lock, 1, 0);
-		while ((v=b->_b_count)>0)
-			__wait(&b->_b_count, &b->_b_waiters2, v, 0);
-	}
+  /* Wait for <limit> threads to get to the barrier */
+  if (++b->_b_count == limit) {
+    a_store(&b->_b_count, 0);
+    ret = PTHREAD_BARRIER_SERIAL_THREAD;
+    if (b->_b_waiters2)
+      __wake(&b->_b_count, -1, 0);
+  } else {
+    a_store(&b->_b_lock, 0);
+    if (b->_b_waiters)
+      __wake(&b->_b_lock, 1, 0);
+    while ((v = b->_b_count) > 0)
+      __wait(&b->_b_count, &b->_b_waiters2, v, 0);
+  }
 
-	__vm_lock();
+  __vm_lock();
 
-	/* Ensure all threads have a vm lock before proceeding */
-	if (a_fetch_add(&b->_b_count, -1)==1-limit) {
-		a_store(&b->_b_count, 0);
-		if (b->_b_waiters2) __wake(&b->_b_count, -1, 0);
-	} else {
-		while ((v=b->_b_count))
-			__wait(&b->_b_count, &b->_b_waiters2, v, 0);
-	}
-	
-	/* Perform a recursive unlock suitable for self-sync'd destruction */
-	do {
-		v = b->_b_lock;
-		w = b->_b_waiters;
-	} while (a_cas(&b->_b_lock, v, v==INT_MIN+1 ? 0 : v-1) != v);
+  /* Ensure all threads have a vm lock before proceeding */
+  if (a_fetch_add(&b->_b_count, -1) == 1 - limit) {
+    a_store(&b->_b_count, 0);
+    if (b->_b_waiters2)
+      __wake(&b->_b_count, -1, 0);
+  } else {
+    while ((v = b->_b_count))
+      __wait(&b->_b_count, &b->_b_waiters2, v, 0);
+  }
 
-	/* Wake a thread waiting to reuse or destroy the barrier */
-	if (v==INT_MIN+1 || (v==1 && w))
-		__wake(&b->_b_lock, 1, 0);
+  /* Perform a recursive unlock suitable for self-sync'd destruction */
+  do {
+    v = b->_b_lock;
+    w = b->_b_waiters;
+  } while (a_cas(&b->_b_lock, v, v == INT_MIN + 1 ? 0 : v - 1) != v);
 
-	__vm_unlock();
+  /* Wake a thread waiting to reuse or destroy the barrier */
+  if (v == INT_MIN + 1 || (v == 1 && w))
+    __wake(&b->_b_lock, 1, 0);
 
-	return ret;
+  __vm_unlock();
+
+  return ret;
 }
 
-struct instance
-{
-	volatile int count;
-	volatile int last;
-	volatile int waiters;
-	volatile int finished;
+struct instance {
+  volatile int count;
+  volatile int last;
+  volatile int waiters;
+  volatile int finished;
 };
 
-int pthread_barrier_wait(pthread_barrier_t *b)
-{
-	int limit = b->_b_limit;
-	struct instance *inst;
+int pthread_barrier_wait(pthread_barrier_t* b) {
+  int limit = b->_b_limit;
+  struct instance* inst;
 
-	/* Trivial case: count was set at 1 */
-	if (!limit) return PTHREAD_BARRIER_SERIAL_THREAD;
+  /* Trivial case: count was set at 1 */
+  if (!limit)
+    return PTHREAD_BARRIER_SERIAL_THREAD;
 
-	/* Process-shared barriers require a separate, inefficient wait */
-	if (limit < 0) return pshared_barrier_wait(b);
+  /* Process-shared barriers require a separate, inefficient wait */
+  if (limit < 0)
+    return pshared_barrier_wait(b);
 
-	/* Otherwise we need a lock on the barrier object */
-	while (a_swap(&b->_b_lock, 1))
-		__wait(&b->_b_lock, &b->_b_waiters, 1, 1);
-	inst = b->_b_inst;
+  /* Otherwise we need a lock on the barrier object */
+  while (a_swap(&b->_b_lock, 1))
+    __wait(&b->_b_lock, &b->_b_waiters, 1, 1);
+  inst = b->_b_inst;
 
-	/* First thread to enter the barrier becomes the "instance owner" */
-	if (!inst) {
-		struct instance new_inst = { 0 };
-		int spins = 200;
-		b->_b_inst = inst = &new_inst;
-		a_store(&b->_b_lock, 0);
-		if (b->_b_waiters) __wake(&b->_b_lock, 1, 1);
-		while (spins-- && !inst->finished)
-			a_spin();
-		a_inc(&inst->finished);
-		while (inst->finished == 1)
-			__syscall(SYS_futex,&inst->finished,FUTEX_WAIT|128,1,0) != -ENOSYS
-			|| __syscall(SYS_futex,&inst->finished,FUTEX_WAIT,1,0);
-		return PTHREAD_BARRIER_SERIAL_THREAD;
-	}
+  /* First thread to enter the barrier becomes the "instance owner" */
+  if (!inst) {
+    struct instance new_inst = {0};
+    int spins = 200;
+    b->_b_inst = inst = &new_inst;
+    a_store(&b->_b_lock, 0);
+    if (b->_b_waiters)
+      __wake(&b->_b_lock, 1, 1);
+    while (spins-- && !inst->finished)
+      a_spin();
+    a_inc(&inst->finished);
+    while (inst->finished == 1)
+      __syscall(SYS_futex, &inst->finished, FUTEX_WAIT | 128, 1, 0) !=
+              -ENOSYS ||
+          __syscall(SYS_futex, &inst->finished, FUTEX_WAIT, 1, 0);
+    return PTHREAD_BARRIER_SERIAL_THREAD;
+  }
 
-	/* Last thread to enter the barrier wakes all non-instance-owners */
-	if (++inst->count == limit) {
-		b->_b_inst = 0;
-		a_store(&b->_b_lock, 0);
-		if (b->_b_waiters) __wake(&b->_b_lock, 1, 1);
-		a_store(&inst->last, 1);
-		if (inst->waiters)
-			__wake(&inst->last, -1, 1);
-	} else {
-		a_store(&b->_b_lock, 0);
-		if (b->_b_waiters) __wake(&b->_b_lock, 1, 1);
-		__wait(&inst->last, &inst->waiters, 0, 1);
-	}
+  /* Last thread to enter the barrier wakes all non-instance-owners */
+  if (++inst->count == limit) {
+    b->_b_inst = 0;
+    a_store(&b->_b_lock, 0);
+    if (b->_b_waiters)
+      __wake(&b->_b_lock, 1, 1);
+    a_store(&inst->last, 1);
+    if (inst->waiters)
+      __wake(&inst->last, -1, 1);
+  } else {
+    a_store(&b->_b_lock, 0);
+    if (b->_b_waiters)
+      __wake(&b->_b_lock, 1, 1);
+    __wait(&inst->last, &inst->waiters, 0, 1);
+  }
 
-	/* Last thread to exit the barrier wakes the instance owner */
-	if (a_fetch_add(&inst->count,-1)==1 && a_fetch_add(&inst->finished,1))
-		__wake(&inst->finished, 1, 1);
+  /* Last thread to exit the barrier wakes the instance owner */
+  if (a_fetch_add(&inst->count, -1) == 1 && a_fetch_add(&inst->finished, 1))
+    __wake(&inst->finished, 1, 1);
 
-	return 0;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_barrierattr_destroy.c b/fusl/src/thread/pthread_barrierattr_destroy.c
index adec738..04fc0fd 100644
--- a/fusl/src/thread/pthread_barrierattr_destroy.c
+++ b/fusl/src/thread/pthread_barrierattr_destroy.c
@@ -1,6 +1,5 @@
 #include "pthread_impl.h"
 
-int pthread_barrierattr_destroy(pthread_barrierattr_t *a)
-{
-	return 0;
+int pthread_barrierattr_destroy(pthread_barrierattr_t* a) {
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_barrierattr_init.c b/fusl/src/thread/pthread_barrierattr_init.c
index fa742bb..b02b806 100644
--- a/fusl/src/thread/pthread_barrierattr_init.c
+++ b/fusl/src/thread/pthread_barrierattr_init.c
@@ -1,7 +1,6 @@
 #include "pthread_impl.h"
 
-int pthread_barrierattr_init(pthread_barrierattr_t *a)
-{
-	*a = (pthread_barrierattr_t){0};
-	return 0;
+int pthread_barrierattr_init(pthread_barrierattr_t* a) {
+  *a = (pthread_barrierattr_t){0};
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_barrierattr_setpshared.c b/fusl/src/thread/pthread_barrierattr_setpshared.c
index b391461..dd0589f 100644
--- a/fusl/src/thread/pthread_barrierattr_setpshared.c
+++ b/fusl/src/thread/pthread_barrierattr_setpshared.c
@@ -1,7 +1,6 @@
 #include "pthread_impl.h"
 
-int pthread_barrierattr_setpshared(pthread_barrierattr_t *a, int pshared)
-{
-	a->__attr = pshared ? INT_MIN : 0;
-	return 0;
+int pthread_barrierattr_setpshared(pthread_barrierattr_t* a, int pshared) {
+  a->__attr = pshared ? INT_MIN : 0;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_cancel.c b/fusl/src/thread/pthread_cancel.c
index 63e24c1..43b5a2c 100644
--- a/fusl/src/thread/pthread_cancel.c
+++ b/fusl/src/thread/pthread_cancel.c
@@ -4,94 +4,98 @@
 #include "syscall.h"
 #include "libc.h"
 
-__attribute__((__visibility__("hidden")))
-long __cancel(), __syscall_cp_asm(), __syscall_cp_c();
+__attribute__((__visibility__("hidden"))) long __cancel(), __syscall_cp_asm(),
+    __syscall_cp_c();
 
-long __cancel()
-{
-	pthread_t self = __pthread_self();
-	if (self->canceldisable == PTHREAD_CANCEL_ENABLE || self->cancelasync)
-		pthread_exit(PTHREAD_CANCELED);
-	self->canceldisable = PTHREAD_CANCEL_DISABLE;
-	return -ECANCELED;
+long __cancel() {
+  pthread_t self = __pthread_self();
+  if (self->canceldisable == PTHREAD_CANCEL_ENABLE || self->cancelasync)
+    pthread_exit(PTHREAD_CANCELED);
+  self->canceldisable = PTHREAD_CANCEL_DISABLE;
+  return -ECANCELED;
 }
 
-long __syscall_cp_asm(volatile void *, syscall_arg_t,
-                      syscall_arg_t, syscall_arg_t, syscall_arg_t,
-                      syscall_arg_t, syscall_arg_t, syscall_arg_t);
+long __syscall_cp_asm(volatile void*,
+                      syscall_arg_t,
+                      syscall_arg_t,
+                      syscall_arg_t,
+                      syscall_arg_t,
+                      syscall_arg_t,
+                      syscall_arg_t,
+                      syscall_arg_t);
 
 long __syscall_cp_c(syscall_arg_t nr,
-                    syscall_arg_t u, syscall_arg_t v, syscall_arg_t w,
-                    syscall_arg_t x, syscall_arg_t y, syscall_arg_t z)
-{
-	pthread_t self;
-	long r;
-	int st;
+                    syscall_arg_t u,
+                    syscall_arg_t v,
+                    syscall_arg_t w,
+                    syscall_arg_t x,
+                    syscall_arg_t y,
+                    syscall_arg_t z) {
+  pthread_t self;
+  long r;
+  int st;
 
-	if ((st=(self=__pthread_self())->canceldisable)
-	    && (st==PTHREAD_CANCEL_DISABLE || nr==SYS_close))
-		return __syscall(nr, u, v, w, x, y, z);
+  if ((st = (self = __pthread_self())->canceldisable) &&
+      (st == PTHREAD_CANCEL_DISABLE || nr == SYS_close))
+    return __syscall(nr, u, v, w, x, y, z);
 
-	r = __syscall_cp_asm(&self->cancel, nr, u, v, w, x, y, z);
-	if (r==-EINTR && nr!=SYS_close && self->cancel &&
-	    self->canceldisable != PTHREAD_CANCEL_DISABLE)
-		r = __cancel();
-	return r;
+  r = __syscall_cp_asm(&self->cancel, nr, u, v, w, x, y, z);
+  if (r == -EINTR && nr != SYS_close && self->cancel &&
+      self->canceldisable != PTHREAD_CANCEL_DISABLE)
+    r = __cancel();
+  return r;
 }
 
-static void _sigaddset(sigset_t *set, int sig)
-{
-	unsigned s = sig-1;
-	set->__bits[s/8/sizeof *set->__bits] |= 1UL<<(s&8*sizeof *set->__bits-1);
+static void _sigaddset(sigset_t* set, int sig) {
+  unsigned s = sig - 1;
+  set->__bits[s / 8 / sizeof *set->__bits] |=
+      1UL << (s & 8 * sizeof *set->__bits - 1);
 }
 
-__attribute__((__visibility__("hidden")))
-extern const char __cp_begin[1], __cp_end[1], __cp_cancel[1];
+__attribute__((__visibility__("hidden"))) extern const char __cp_begin[1],
+    __cp_end[1], __cp_cancel[1];
 
-static void cancel_handler(int sig, siginfo_t *si, void *ctx)
-{
-	pthread_t self = __pthread_self();
-	ucontext_t *uc = ctx;
-	uintptr_t pc = uc->uc_mcontext.MC_PC;
+static void cancel_handler(int sig, siginfo_t* si, void* ctx) {
+  pthread_t self = __pthread_self();
+  ucontext_t* uc = ctx;
+  uintptr_t pc = uc->uc_mcontext.MC_PC;
 
-	a_barrier();
-	if (!self->cancel || self->canceldisable == PTHREAD_CANCEL_DISABLE) return;
+  a_barrier();
+  if (!self->cancel || self->canceldisable == PTHREAD_CANCEL_DISABLE)
+    return;
 
-	_sigaddset(&uc->uc_sigmask, SIGCANCEL);
+  _sigaddset(&uc->uc_sigmask, SIGCANCEL);
 
-	if (self->cancelasync || (pc >= (uintptr_t)__cp_begin && pc < (uintptr_t)__cp_end)) {
-		uc->uc_mcontext.MC_PC = (uintptr_t)__cp_cancel;
-		return;
-	}
+  if (self->cancelasync ||
+      (pc >= (uintptr_t)__cp_begin && pc < (uintptr_t)__cp_end)) {
+    uc->uc_mcontext.MC_PC = (uintptr_t)__cp_cancel;
+    return;
+  }
 
-	__syscall(SYS_tkill, self->tid, SIGCANCEL);
+  __syscall(SYS_tkill, self->tid, SIGCANCEL);
 }
 
-void __testcancel()
-{
-	pthread_t self = __pthread_self();
-	if (self->cancel && !self->canceldisable)
-		__cancel();
+void __testcancel() {
+  pthread_t self = __pthread_self();
+  if (self->cancel && !self->canceldisable)
+    __cancel();
 }
 
-static void init_cancellation()
-{
-	struct sigaction sa = {
-		.sa_flags = SA_SIGINFO | SA_RESTART,
-		.sa_sigaction = cancel_handler
-	};
-	memset(&sa.sa_mask, -1, _NSIG/8);
-	__libc_sigaction(SIGCANCEL, &sa, 0);
+static void init_cancellation() {
+  struct sigaction sa = {.sa_flags = SA_SIGINFO | SA_RESTART,
+                         .sa_sigaction = cancel_handler};
+  memset(&sa.sa_mask, -1, _NSIG / 8);
+  __libc_sigaction(SIGCANCEL, &sa, 0);
 }
 
-int pthread_cancel(pthread_t t)
-{
-	static int init;
-	if (!init) {
-		init_cancellation();
-		init = 1;
-	}
-	a_store(&t->cancel, 1);
-	if (t == pthread_self() && !t->cancelasync) return 0;
-	return pthread_kill(t, SIGCANCEL);
+int pthread_cancel(pthread_t t) {
+  static int init;
+  if (!init) {
+    init_cancellation();
+    init = 1;
+  }
+  a_store(&t->cancel, 1);
+  if (t == pthread_self() && !t->cancelasync)
+    return 0;
+  return pthread_kill(t, SIGCANCEL);
 }
diff --git a/fusl/src/thread/pthread_cleanup_push.c b/fusl/src/thread/pthread_cleanup_push.c
index 9b21764..f42a8f8 100644
--- a/fusl/src/thread/pthread_cleanup_push.c
+++ b/fusl/src/thread/pthread_cleanup_push.c
@@ -1,20 +1,17 @@
 #include "pthread_impl.h"
 
-static void dummy(struct __ptcb *cb)
-{
-}
+static void dummy(struct __ptcb* cb) {}
 weak_alias(dummy, __do_cleanup_push);
 weak_alias(dummy, __do_cleanup_pop);
 
-void _pthread_cleanup_push(struct __ptcb *cb, void (*f)(void *), void *x)
-{
-	cb->__f = f;
-	cb->__x = x;
-	__do_cleanup_push(cb);
+void _pthread_cleanup_push(struct __ptcb* cb, void (*f)(void*), void* x) {
+  cb->__f = f;
+  cb->__x = x;
+  __do_cleanup_push(cb);
 }
 
-void _pthread_cleanup_pop(struct __ptcb *cb, int run)
-{
-	__do_cleanup_pop(cb);
-	if (run) cb->__f(cb->__x);
+void _pthread_cleanup_pop(struct __ptcb* cb, int run) {
+  __do_cleanup_pop(cb);
+  if (run)
+    cb->__f(cb->__x);
 }
diff --git a/fusl/src/thread/pthread_cond_broadcast.c b/fusl/src/thread/pthread_cond_broadcast.c
index 69f840f..acaa4ec 100644
--- a/fusl/src/thread/pthread_cond_broadcast.c
+++ b/fusl/src/thread/pthread_cond_broadcast.c
@@ -1,12 +1,13 @@
 #include "pthread_impl.h"
 
-int __private_cond_signal(pthread_cond_t *, int);
+int __private_cond_signal(pthread_cond_t*, int);
 
-int pthread_cond_broadcast(pthread_cond_t *c)
-{
-	if (!c->_c_shared) return __private_cond_signal(c, -1);
-	if (!c->_c_waiters) return 0;
-	a_inc(&c->_c_seq);
-	__wake(&c->_c_seq, -1, 0);
-	return 0;
+int pthread_cond_broadcast(pthread_cond_t* c) {
+  if (!c->_c_shared)
+    return __private_cond_signal(c, -1);
+  if (!c->_c_waiters)
+    return 0;
+  a_inc(&c->_c_seq);
+  __wake(&c->_c_seq, -1, 0);
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_cond_destroy.c b/fusl/src/thread/pthread_cond_destroy.c
index 8c55516..fad746e 100644
--- a/fusl/src/thread/pthread_cond_destroy.c
+++ b/fusl/src/thread/pthread_cond_destroy.c
@@ -1,14 +1,13 @@
 #include "pthread_impl.h"
 
-int pthread_cond_destroy(pthread_cond_t *c)
-{
-	if (c->_c_shared && c->_c_waiters) {
-		int cnt;
-		a_or(&c->_c_waiters, 0x80000000);
-		a_inc(&c->_c_seq);
-		__wake(&c->_c_seq, -1, 0);
-		while ((cnt = c->_c_waiters) & 0x7fffffff)
-			__wait(&c->_c_waiters, 0, cnt, 0);
-	}
-	return 0;
+int pthread_cond_destroy(pthread_cond_t* c) {
+  if (c->_c_shared && c->_c_waiters) {
+    int cnt;
+    a_or(&c->_c_waiters, 0x80000000);
+    a_inc(&c->_c_seq);
+    __wake(&c->_c_seq, -1, 0);
+    while ((cnt = c->_c_waiters) & 0x7fffffff)
+      __wait(&c->_c_waiters, 0, cnt, 0);
+  }
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_cond_init.c b/fusl/src/thread/pthread_cond_init.c
index 8c484dd..b97af17 100644
--- a/fusl/src/thread/pthread_cond_init.c
+++ b/fusl/src/thread/pthread_cond_init.c
@@ -1,11 +1,12 @@
 #include "pthread_impl.h"
 
-int pthread_cond_init(pthread_cond_t *restrict c, const pthread_condattr_t *restrict a)
-{
-	*c = (pthread_cond_t){0};
-	if (a) {
-		c->_c_clock = a->__attr & 0x7fffffff;
-		if (a->__attr>>31) c->_c_shared = (void *)-1;
-	}
-	return 0;
+int pthread_cond_init(pthread_cond_t* restrict c,
+                      const pthread_condattr_t* restrict a) {
+  *c = (pthread_cond_t){0};
+  if (a) {
+    c->_c_clock = a->__attr & 0x7fffffff;
+    if (a->__attr >> 31)
+      c->_c_shared = (void*)-1;
+  }
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_cond_signal.c b/fusl/src/thread/pthread_cond_signal.c
index 119c00a..1176cc5 100644
--- a/fusl/src/thread/pthread_cond_signal.c
+++ b/fusl/src/thread/pthread_cond_signal.c
@@ -1,12 +1,13 @@
 #include "pthread_impl.h"
 
-int __private_cond_signal(pthread_cond_t *, int);
+int __private_cond_signal(pthread_cond_t*, int);
 
-int pthread_cond_signal(pthread_cond_t *c)
-{
-	if (!c->_c_shared) return __private_cond_signal(c, 1);
-	if (!c->_c_waiters) return 0;
-	a_inc(&c->_c_seq);
-	__wake(&c->_c_seq, 1, 0);
-	return 0;
+int pthread_cond_signal(pthread_cond_t* c) {
+  if (!c->_c_shared)
+    return __private_cond_signal(c, 1);
+  if (!c->_c_waiters)
+    return 0;
+  a_inc(&c->_c_seq);
+  __wake(&c->_c_seq, 1, 0);
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_cond_timedwait.c b/fusl/src/thread/pthread_cond_timedwait.c
index 3526ecf..ec44234 100644
--- a/fusl/src/thread/pthread_cond_timedwait.c
+++ b/fusl/src/thread/pthread_cond_timedwait.c
@@ -1,9 +1,9 @@
 #include "pthread_impl.h"
 
 void __pthread_testcancel(void);
-int __pthread_mutex_lock(pthread_mutex_t *);
-int __pthread_mutex_unlock(pthread_mutex_t *);
-int __pthread_setcancelstate(int, int *);
+int __pthread_mutex_lock(pthread_mutex_t*);
+int __pthread_mutex_unlock(pthread_mutex_t*);
+int __pthread_setcancelstate(int, int*);
 
 /*
  * struct waiter
@@ -28,187 +28,205 @@
  */
 
 struct waiter {
-	struct waiter *prev, *next;
-	volatile int state, barrier;
-	volatile int *notify;
+  struct waiter *prev, *next;
+  volatile int state, barrier;
+  volatile int* notify;
 };
 
 /* Self-synchronized-destruction-safe lock functions */
 
-static inline void lock(volatile int *l)
-{
-	if (a_cas(l, 0, 1)) {
-		a_cas(l, 1, 2);
-		do __wait(l, 0, 2, 1);
-		while (a_cas(l, 0, 2));
-	}
+static inline void lock(volatile int* l) {
+  if (a_cas(l, 0, 1)) {
+    a_cas(l, 1, 2);
+    do
+      __wait(l, 0, 2, 1);
+    while (a_cas(l, 0, 2));
+  }
 }
 
-static inline void unlock(volatile int *l)
-{
-	if (a_swap(l, 0)==2)
-		__wake(l, 1, 1);
+static inline void unlock(volatile int* l) {
+  if (a_swap(l, 0) == 2)
+    __wake(l, 1, 1);
 }
 
-static inline void unlock_requeue(volatile int *l, volatile int *r, int w)
-{
-	a_store(l, 0);
-	if (w) __wake(l, 1, 1);
-	else __syscall(SYS_futex, l, FUTEX_REQUEUE|128, 0, 1, r) != -ENOSYS
-		|| __syscall(SYS_futex, l, FUTEX_REQUEUE, 0, 1, r);
+static inline void unlock_requeue(volatile int* l, volatile int* r, int w) {
+  a_store(l, 0);
+  if (w)
+    __wake(l, 1, 1);
+  else
+    __syscall(SYS_futex, l, FUTEX_REQUEUE | 128, 0, 1, r) != -ENOSYS ||
+        __syscall(SYS_futex, l, FUTEX_REQUEUE, 0, 1, r);
 }
 
 enum {
-	WAITING,
-	SIGNALED,
-	LEAVING,
+  WAITING,
+  SIGNALED,
+  LEAVING,
 };
 
-int __pthread_cond_timedwait(pthread_cond_t *restrict c, pthread_mutex_t *restrict m, const struct timespec *restrict ts)
-{
-	struct waiter node = { 0 };
-	int e, seq, clock = c->_c_clock, cs, shared=0, oldstate, tmp;
-	volatile int *fut;
+int __pthread_cond_timedwait(pthread_cond_t* restrict c,
+                             pthread_mutex_t* restrict m,
+                             const struct timespec* restrict ts) {
+  struct waiter node = {0};
+  int e, seq, clock = c->_c_clock, cs, shared = 0, oldstate, tmp;
+  volatile int* fut;
 
-	if ((m->_m_type&15) && (m->_m_lock&INT_MAX) != __pthread_self()->tid)
-		return EPERM;
+  if ((m->_m_type & 15) && (m->_m_lock & INT_MAX) != __pthread_self()->tid)
+    return EPERM;
 
-	if (ts && ts->tv_nsec >= 1000000000UL)
-		return EINVAL;
+  if (ts && ts->tv_nsec >= 1000000000UL)
+    return EINVAL;
 
-	__pthread_testcancel();
+  __pthread_testcancel();
 
-	if (c->_c_shared) {
-		shared = 1;
-		fut = &c->_c_seq;
-		seq = c->_c_seq;
-		a_inc(&c->_c_waiters);
-	} else {
-		lock(&c->_c_lock);
+  if (c->_c_shared) {
+    shared = 1;
+    fut = &c->_c_seq;
+    seq = c->_c_seq;
+    a_inc(&c->_c_waiters);
+  } else {
+    lock(&c->_c_lock);
 
-		seq = node.barrier = 2;
-		fut = &node.barrier;
-		node.state = WAITING;
-		node.next = c->_c_head;
-		c->_c_head = &node;
-		if (!c->_c_tail) c->_c_tail = &node;
-		else node.next->prev = &node;
+    seq = node.barrier = 2;
+    fut = &node.barrier;
+    node.state = WAITING;
+    node.next = c->_c_head;
+    c->_c_head = &node;
+    if (!c->_c_tail)
+      c->_c_tail = &node;
+    else
+      node.next->prev = &node;
 
-		unlock(&c->_c_lock);
-	}
+    unlock(&c->_c_lock);
+  }
 
-	__pthread_mutex_unlock(m);
+  __pthread_mutex_unlock(m);
 
-	__pthread_setcancelstate(PTHREAD_CANCEL_MASKED, &cs);
-	if (cs == PTHREAD_CANCEL_DISABLE) __pthread_setcancelstate(cs, 0);
+  __pthread_setcancelstate(PTHREAD_CANCEL_MASKED, &cs);
+  if (cs == PTHREAD_CANCEL_DISABLE)
+    __pthread_setcancelstate(cs, 0);
 
-	do e = __timedwait_cp(fut, seq, clock, ts, !shared);
-	while (*fut==seq && (!e || e==EINTR));
-	if (e == EINTR) e = 0;
+  do
+    e = __timedwait_cp(fut, seq, clock, ts, !shared);
+  while (*fut == seq && (!e || e == EINTR));
+  if (e == EINTR)
+    e = 0;
 
-	if (shared) {
-		/* Suppress cancellation if a signal was potentially
-		 * consumed; this is a legitimate form of spurious
-		 * wake even if not. */
-		if (e == ECANCELED && c->_c_seq != seq) e = 0;
-		if (a_fetch_add(&c->_c_waiters, -1) == -0x7fffffff)
-			__wake(&c->_c_waiters, 1, 0);
-		oldstate = WAITING;
-		goto relock;
-	}
+  if (shared) {
+    /* Suppress cancellation if a signal was potentially
+     * consumed; this is a legitimate form of spurious
+     * wake even if not. */
+    if (e == ECANCELED && c->_c_seq != seq)
+      e = 0;
+    if (a_fetch_add(&c->_c_waiters, -1) == -0x7fffffff)
+      __wake(&c->_c_waiters, 1, 0);
+    oldstate = WAITING;
+    goto relock;
+  }
 
-	oldstate = a_cas(&node.state, WAITING, LEAVING);
+  oldstate = a_cas(&node.state, WAITING, LEAVING);
 
-	if (oldstate == WAITING) {
-		/* Access to cv object is valid because this waiter was not
-		 * yet signaled and a new signal/broadcast cannot return
-		 * after seeing a LEAVING waiter without getting notified
-		 * via the futex notify below. */
+  if (oldstate == WAITING) {
+    /* Access to cv object is valid because this waiter was not
+     * yet signaled and a new signal/broadcast cannot return
+     * after seeing a LEAVING waiter without getting notified
+     * via the futex notify below. */
 
-		lock(&c->_c_lock);
-		
-		if (c->_c_head == &node) c->_c_head = node.next;
-		else if (node.prev) node.prev->next = node.next;
-		if (c->_c_tail == &node) c->_c_tail = node.prev;
-		else if (node.next) node.next->prev = node.prev;
-		
-		unlock(&c->_c_lock);
+    lock(&c->_c_lock);
 
-		if (node.notify) {
-			if (a_fetch_add(node.notify, -1)==1)
-				__wake(node.notify, 1, 1);
-		}
-	} else {
-		/* Lock barrier first to control wake order. */
-		lock(&node.barrier);
-	}
+    if (c->_c_head == &node)
+      c->_c_head = node.next;
+    else if (node.prev)
+      node.prev->next = node.next;
+    if (c->_c_tail == &node)
+      c->_c_tail = node.prev;
+    else if (node.next)
+      node.next->prev = node.prev;
+
+    unlock(&c->_c_lock);
+
+    if (node.notify) {
+      if (a_fetch_add(node.notify, -1) == 1)
+        __wake(node.notify, 1, 1);
+    }
+  } else {
+    /* Lock barrier first to control wake order. */
+    lock(&node.barrier);
+  }
 
 relock:
-	/* Errors locking the mutex override any existing error or
-	 * cancellation, since the caller must see them to know the
-	 * state of the mutex. */
-	if ((tmp = pthread_mutex_lock(m))) e = tmp;
+  /* Errors locking the mutex override any existing error or
+   * cancellation, since the caller must see them to know the
+   * state of the mutex. */
+  if ((tmp = pthread_mutex_lock(m)))
+    e = tmp;
 
-	if (oldstate == WAITING) goto done;
+  if (oldstate == WAITING)
+    goto done;
 
-	if (!node.next) a_inc(&m->_m_waiters);
+  if (!node.next)
+    a_inc(&m->_m_waiters);
 
-	/* Unlock the barrier that's holding back the next waiter, and
-	 * either wake it or requeue it to the mutex. */
-	if (node.prev)
-		unlock_requeue(&node.prev->barrier, &m->_m_lock, m->_m_type & 128);
-	else
-		a_dec(&m->_m_waiters);
+  /* Unlock the barrier that's holding back the next waiter, and
+   * either wake it or requeue it to the mutex. */
+  if (node.prev)
+    unlock_requeue(&node.prev->barrier, &m->_m_lock, m->_m_type & 128);
+  else
+    a_dec(&m->_m_waiters);
 
-	/* Since a signal was consumed, cancellation is not permitted. */
-	if (e == ECANCELED) e = 0;
+  /* Since a signal was consumed, cancellation is not permitted. */
+  if (e == ECANCELED)
+    e = 0;
 
 done:
-	__pthread_setcancelstate(cs, 0);
+  __pthread_setcancelstate(cs, 0);
 
-	if (e == ECANCELED) {
-		__pthread_testcancel();
-		__pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, 0);
-	}
+  if (e == ECANCELED) {
+    __pthread_testcancel();
+    __pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, 0);
+  }
 
-	return e;
+  return e;
 }
 
-int __private_cond_signal(pthread_cond_t *c, int n)
-{
-	struct waiter *p, *first=0;
-	volatile int ref = 0;
-	int cur;
+int __private_cond_signal(pthread_cond_t* c, int n) {
+  struct waiter *p, *first = 0;
+  volatile int ref = 0;
+  int cur;
 
-	lock(&c->_c_lock);
-	for (p=c->_c_tail; n && p; p=p->prev) {
-		if (a_cas(&p->state, WAITING, SIGNALED) != WAITING) {
-			ref++;
-			p->notify = &ref;
-		} else {
-			n--;
-			if (!first) first=p;
-		}
-	}
-	/* Split the list, leaving any remainder on the cv. */
-	if (p) {
-		if (p->next) p->next->prev = 0;
-		p->next = 0;
-	} else {
-		c->_c_head = 0;
-	}
-	c->_c_tail = p;
-	unlock(&c->_c_lock);
+  lock(&c->_c_lock);
+  for (p = c->_c_tail; n && p; p = p->prev) {
+    if (a_cas(&p->state, WAITING, SIGNALED) != WAITING) {
+      ref++;
+      p->notify = &ref;
+    } else {
+      n--;
+      if (!first)
+        first = p;
+    }
+  }
+  /* Split the list, leaving any remainder on the cv. */
+  if (p) {
+    if (p->next)
+      p->next->prev = 0;
+    p->next = 0;
+  } else {
+    c->_c_head = 0;
+  }
+  c->_c_tail = p;
+  unlock(&c->_c_lock);
 
-	/* Wait for any waiters in the LEAVING state to remove
-	 * themselves from the list before returning or allowing
-	 * signaled threads to proceed. */
-	while ((cur = ref)) __wait(&ref, 0, cur, 1);
+  /* Wait for any waiters in the LEAVING state to remove
+   * themselves from the list before returning or allowing
+   * signaled threads to proceed. */
+  while ((cur = ref))
+    __wait(&ref, 0, cur, 1);
 
-	/* Allow first signaled waiter, if any, to proceed. */
-	if (first) unlock(&first->barrier);
+  /* Allow first signaled waiter, if any, to proceed. */
+  if (first)
+    unlock(&first->barrier);
 
-	return 0;
+  return 0;
 }
 
 weak_alias(__pthread_cond_timedwait, pthread_cond_timedwait);
diff --git a/fusl/src/thread/pthread_cond_wait.c b/fusl/src/thread/pthread_cond_wait.c
index 8735bf1..85149c5 100644
--- a/fusl/src/thread/pthread_cond_wait.c
+++ b/fusl/src/thread/pthread_cond_wait.c
@@ -1,6 +1,5 @@
 #include "pthread_impl.h"
 
-int pthread_cond_wait(pthread_cond_t *restrict c, pthread_mutex_t *restrict m)
-{
-	return pthread_cond_timedwait(c, m, 0);
+int pthread_cond_wait(pthread_cond_t* restrict c, pthread_mutex_t* restrict m) {
+  return pthread_cond_timedwait(c, m, 0);
 }
diff --git a/fusl/src/thread/pthread_condattr_destroy.c b/fusl/src/thread/pthread_condattr_destroy.c
index c54ec41..4efca98 100644
--- a/fusl/src/thread/pthread_condattr_destroy.c
+++ b/fusl/src/thread/pthread_condattr_destroy.c
@@ -1,6 +1,5 @@
 #include "pthread_impl.h"
 
-int pthread_condattr_destroy(pthread_condattr_t *a)
-{
-	return 0;
+int pthread_condattr_destroy(pthread_condattr_t* a) {
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_condattr_init.c b/fusl/src/thread/pthread_condattr_init.c
index a41741b..1375a16 100644
--- a/fusl/src/thread/pthread_condattr_init.c
+++ b/fusl/src/thread/pthread_condattr_init.c
@@ -1,7 +1,6 @@
 #include "pthread_impl.h"
 
-int pthread_condattr_init(pthread_condattr_t *a)
-{
-	*a = (pthread_condattr_t){0};
-	return 0;
+int pthread_condattr_init(pthread_condattr_t* a) {
+  *a = (pthread_condattr_t){0};
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_condattr_setclock.c b/fusl/src/thread/pthread_condattr_setclock.c
index 7112594..98c7be7 100644
--- a/fusl/src/thread/pthread_condattr_setclock.c
+++ b/fusl/src/thread/pthread_condattr_setclock.c
@@ -1,9 +1,9 @@
 #include "pthread_impl.h"
 
-int pthread_condattr_setclock(pthread_condattr_t *a, clockid_t clk)
-{
-	if (clk < 0 || clk-2U < 2) return EINVAL;
-	a->__attr &= 0x80000000;
-	a->__attr |= clk;
-	return 0;
+int pthread_condattr_setclock(pthread_condattr_t* a, clockid_t clk) {
+  if (clk < 0 || clk - 2U < 2)
+    return EINVAL;
+  a->__attr &= 0x80000000;
+  a->__attr |= clk;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_condattr_setpshared.c b/fusl/src/thread/pthread_condattr_setpshared.c
index 51453e0..7a7b623 100644
--- a/fusl/src/thread/pthread_condattr_setpshared.c
+++ b/fusl/src/thread/pthread_condattr_setpshared.c
@@ -1,9 +1,9 @@
 #include "pthread_impl.h"
 
-int pthread_condattr_setpshared(pthread_condattr_t *a, int pshared)
-{
-	if (pshared > 1U) return EINVAL;
-	a->__attr &= 0x7fffffff;
-	a->__attr |= (unsigned)pshared<<31;
-	return 0;
+int pthread_condattr_setpshared(pthread_condattr_t* a, int pshared) {
+  if (pshared > 1U)
+    return EINVAL;
+  a->__attr &= 0x7fffffff;
+  a->__attr |= (unsigned)pshared << 31;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_create.c b/fusl/src/thread/pthread_create.c
index e7df34a..2b1b5fd 100644
--- a/fusl/src/thread/pthread_create.c
+++ b/fusl/src/thread/pthread_create.c
@@ -6,298 +6,303 @@
 #include <string.h>
 #include <stddef.h>
 
-void *__mmap(void *, size_t, int, int, int, off_t);
-int __munmap(void *, size_t);
-int __mprotect(void *, size_t, int);
+void* __mmap(void*, size_t, int, int, int, off_t);
+int __munmap(void*, size_t);
+int __mprotect(void*, size_t, int);
 
-static void dummy_0()
-{
-}
+static void dummy_0() {}
 weak_alias(dummy_0, __acquire_ptc);
 weak_alias(dummy_0, __release_ptc);
 weak_alias(dummy_0, __pthread_tsd_run_dtors);
 weak_alias(dummy_0, __do_orphaned_stdio_locks);
 weak_alias(dummy_0, __dl_thread_cleanup);
 
-_Noreturn void __pthread_exit(void *result)
-{
-	pthread_t self = __pthread_self();
-	sigset_t set;
+_Noreturn void __pthread_exit(void* result) {
+  pthread_t self = __pthread_self();
+  sigset_t set;
 
-	self->canceldisable = 1;
-	self->cancelasync = 0;
-	self->result = result;
+  self->canceldisable = 1;
+  self->cancelasync = 0;
+  self->result = result;
 
-	while (self->cancelbuf) {
-		void (*f)(void *) = self->cancelbuf->__f;
-		void *x = self->cancelbuf->__x;
-		self->cancelbuf = self->cancelbuf->__next;
-		f(x);
-	}
+  while (self->cancelbuf) {
+    void (*f)(void*) = self->cancelbuf->__f;
+    void* x = self->cancelbuf->__x;
+    self->cancelbuf = self->cancelbuf->__next;
+    f(x);
+  }
 
-	__pthread_tsd_run_dtors();
+  __pthread_tsd_run_dtors();
 
-	__lock(self->exitlock);
+  __lock(self->exitlock);
 
-	/* Mark this thread dead before decrementing count */
-	__lock(self->killlock);
-	self->dead = 1;
+  /* Mark this thread dead before decrementing count */
+  __lock(self->killlock);
+  self->dead = 1;
 
-	/* Block all signals before decrementing the live thread count.
-	 * This is important to ensure that dynamically allocated TLS
-	 * is not under-allocated/over-committed, and possibly for other
-	 * reasons as well. */
-	__block_all_sigs(&set);
+  /* Block all signals before decrementing the live thread count.
+   * This is important to ensure that dynamically allocated TLS
+   * is not under-allocated/over-committed, and possibly for other
+   * reasons as well. */
+  __block_all_sigs(&set);
 
-	/* Wait to unlock the kill lock, which governs functions like
-	 * pthread_kill which target a thread id, until signals have
-	 * been blocked. This precludes observation of the thread id
-	 * as a live thread (with application code running in it) after
-	 * the thread was reported dead by ESRCH being returned. */
-	__unlock(self->killlock);
+  /* Wait to unlock the kill lock, which governs functions like
+   * pthread_kill which target a thread id, until signals have
+   * been blocked. This precludes observation of the thread id
+   * as a live thread (with application code running in it) after
+   * the thread was reported dead by ESRCH being returned. */
+  __unlock(self->killlock);
 
-	/* It's impossible to determine whether this is "the last thread"
-	 * until performing the atomic decrement, since multiple threads
-	 * could exit at the same time. For the last thread, revert the
-	 * decrement and unblock signals to give the atexit handlers and
-	 * stdio cleanup code a consistent state. */
-	if (a_fetch_add(&libc.threads_minus_1, -1)==0) {
-		libc.threads_minus_1 = 0;
-		__restore_sigs(&set);
-		exit(0);
-	}
+  /* It's impossible to determine whether this is "the last thread"
+   * until performing the atomic decrement, since multiple threads
+   * could exit at the same time. For the last thread, revert the
+   * decrement and unblock signals to give the atexit handlers and
+   * stdio cleanup code a consistent state. */
+  if (a_fetch_add(&libc.threads_minus_1, -1) == 0) {
+    libc.threads_minus_1 = 0;
+    __restore_sigs(&set);
+    exit(0);
+  }
 
-	/* Process robust list in userspace to handle non-pshared mutexes
-	 * and the detached thread case where the robust list head will
-	 * be invalid when the kernel would process it. */
-	__vm_lock();
-	volatile void *volatile *rp;
-	while ((rp=self->robust_list.head) && rp != &self->robust_list.head) {
-		pthread_mutex_t *m = (void *)((char *)rp
-			- offsetof(pthread_mutex_t, _m_next));
-		int waiters = m->_m_waiters;
-		int priv = (m->_m_type & 128) ^ 128;
-		self->robust_list.pending = rp;
-		self->robust_list.head = *rp;
-		int cont = a_swap(&m->_m_lock, self->tid|0x40000000);
-		self->robust_list.pending = 0;
-		if (cont < 0 || waiters)
-			__wake(&m->_m_lock, 1, priv);
-	}
-	__vm_unlock();
+  /* Process robust list in userspace to handle non-pshared mutexes
+   * and the detached thread case where the robust list head will
+   * be invalid when the kernel would process it. */
+  __vm_lock();
+  volatile void* volatile* rp;
+  while ((rp = self->robust_list.head) && rp != &self->robust_list.head) {
+    pthread_mutex_t* m =
+        (void*)((char*)rp - offsetof(pthread_mutex_t, _m_next));
+    int waiters = m->_m_waiters;
+    int priv = (m->_m_type & 128) ^ 128;
+    self->robust_list.pending = rp;
+    self->robust_list.head = *rp;
+    int cont = a_swap(&m->_m_lock, self->tid | 0x40000000);
+    self->robust_list.pending = 0;
+    if (cont < 0 || waiters)
+      __wake(&m->_m_lock, 1, priv);
+  }
+  __vm_unlock();
 
-	__do_orphaned_stdio_locks();
-	__dl_thread_cleanup();
+  __do_orphaned_stdio_locks();
+  __dl_thread_cleanup();
 
-	if (self->detached && self->map_base) {
-		/* Detached threads must avoid the kernel clear_child_tid
-		 * feature, since the virtual address will have been
-		 * unmapped and possibly already reused by a new mapping
-		 * at the time the kernel would perform the write. In
-		 * the case of threads that started out detached, the
-		 * initial clone flags are correct, but if the thread was
-		 * detached later (== 2), we need to clear it here. */
-		if (self->detached == 2) __syscall(SYS_set_tid_address, 0);
+  if (self->detached && self->map_base) {
+    /* Detached threads must avoid the kernel clear_child_tid
+     * feature, since the virtual address will have been
+     * unmapped and possibly already reused by a new mapping
+     * at the time the kernel would perform the write. In
+     * the case of threads that started out detached, the
+     * initial clone flags are correct, but if the thread was
+     * detached later (== 2), we need to clear it here. */
+    if (self->detached == 2)
+      __syscall(SYS_set_tid_address, 0);
 
-		/* Robust list will no longer be valid, and was already
-		 * processed above, so unregister it with the kernel. */
-		if (self->robust_list.off)
-			__syscall(SYS_set_robust_list, 0, 3*sizeof(long));
+    /* Robust list will no longer be valid, and was already
+     * processed above, so unregister it with the kernel. */
+    if (self->robust_list.off)
+      __syscall(SYS_set_robust_list, 0, 3 * sizeof(long));
 
-		/* Since __unmapself bypasses the normal munmap code path,
-		 * explicitly wait for vmlock holders first. */
-		__vm_wait();
+    /* Since __unmapself bypasses the normal munmap code path,
+     * explicitly wait for vmlock holders first. */
+    __vm_wait();
 
-		/* The following call unmaps the thread's stack mapping
-		 * and then exits without touching the stack. */
-		__unmapself(self->map_base, self->map_size);
-	}
+    /* The following call unmaps the thread's stack mapping
+     * and then exits without touching the stack. */
+    __unmapself(self->map_base, self->map_size);
+  }
 
-	for (;;) __syscall(SYS_exit, 0);
+  for (;;)
+    __syscall(SYS_exit, 0);
 }
 
-void __do_cleanup_push(struct __ptcb *cb)
-{
-	struct pthread *self = __pthread_self();
-	cb->__next = self->cancelbuf;
-	self->cancelbuf = cb;
+void __do_cleanup_push(struct __ptcb* cb) {
+  struct pthread* self = __pthread_self();
+  cb->__next = self->cancelbuf;
+  self->cancelbuf = cb;
 }
 
-void __do_cleanup_pop(struct __ptcb *cb)
-{
-	__pthread_self()->cancelbuf = cb->__next;
+void __do_cleanup_pop(struct __ptcb* cb) {
+  __pthread_self()->cancelbuf = cb->__next;
 }
 
-static int start(void *p)
-{
-	pthread_t self = p;
-	if (self->startlock[0]) {
-		__wait(self->startlock, 0, 1, 1);
-		if (self->startlock[0]) {
-			self->detached = 2;
-			pthread_exit(0);
-		}
-		__restore_sigs(self->sigmask);
-	}
-	if (self->unblock_cancel)
-		__syscall(SYS_rt_sigprocmask, SIG_UNBLOCK,
-			SIGPT_SET, 0, _NSIG/8);
-	__pthread_exit(self->start(self->start_arg));
-	return 0;
+static int start(void* p) {
+  pthread_t self = p;
+  if (self->startlock[0]) {
+    __wait(self->startlock, 0, 1, 1);
+    if (self->startlock[0]) {
+      self->detached = 2;
+      pthread_exit(0);
+    }
+    __restore_sigs(self->sigmask);
+  }
+  if (self->unblock_cancel)
+    __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, SIGPT_SET, 0, _NSIG / 8);
+  __pthread_exit(self->start(self->start_arg));
+  return 0;
 }
 
-static int start_c11(void *p)
-{
-	pthread_t self = p;
-	int (*start)(void*) = (int(*)(void*)) self->start;
-	__pthread_exit((void *)(uintptr_t)start(self->start_arg));
-	return 0;
+static int start_c11(void* p) {
+  pthread_t self = p;
+  int (*start)(void*) = (int (*)(void*))self->start;
+  __pthread_exit((void*)(uintptr_t)start(self->start_arg));
+  return 0;
 }
 
-#define ROUND(x) (((x)+PAGE_SIZE-1)&-PAGE_SIZE)
+#define ROUND(x) (((x) + PAGE_SIZE - 1) & -PAGE_SIZE)
 
 /* pthread_key_create.c overrides this */
 static volatile size_t dummy = 0;
 weak_alias(dummy, __pthread_tsd_size);
-static void *dummy_tsd[1] = { 0 };
+static void* dummy_tsd[1] = {0};
 weak_alias(dummy_tsd, __pthread_tsd_main);
 
 volatile int __block_new_threads = 0;
 
-static FILE *volatile dummy_file = 0;
+static FILE* volatile dummy_file = 0;
 weak_alias(dummy_file, __stdin_used);
 weak_alias(dummy_file, __stdout_used);
 weak_alias(dummy_file, __stderr_used);
 
-static void init_file_lock(FILE *f)
-{
-	if (f && f->lock<0) f->lock = 0;
+static void init_file_lock(FILE* f) {
+  if (f && f->lock < 0)
+    f->lock = 0;
 }
 
-void *__copy_tls(unsigned char *);
+void* __copy_tls(unsigned char*);
 
-int __pthread_create(pthread_t *restrict res, const pthread_attr_t *restrict attrp, void *(*entry)(void *), void *restrict arg)
-{
-	int ret, c11 = (attrp == __ATTRP_C11_THREAD);
-	size_t size, guard;
-	struct pthread *self, *new;
-	unsigned char *map = 0, *stack = 0, *tsd = 0, *stack_limit;
-	unsigned flags = CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND
-		| CLONE_THREAD | CLONE_SYSVSEM | CLONE_SETTLS
-		| CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID | CLONE_DETACHED;
-	int do_sched = 0;
-	pthread_attr_t attr = {0};
+int __pthread_create(pthread_t* restrict res,
+                     const pthread_attr_t* restrict attrp,
+                     void* (*entry)(void*),
+                     void* restrict arg) {
+  int ret, c11 = (attrp == __ATTRP_C11_THREAD);
+  size_t size, guard;
+  struct pthread *self, *new;
+  unsigned char *map = 0, *stack = 0, *tsd = 0, *stack_limit;
+  unsigned flags = CLONE_VM | CLONE_FS | CLONE_FILES | CLONE_SIGHAND |
+                   CLONE_THREAD | CLONE_SYSVSEM | CLONE_SETTLS |
+                   CLONE_PARENT_SETTID | CLONE_CHILD_CLEARTID | CLONE_DETACHED;
+  int do_sched = 0;
+  pthread_attr_t attr = {0};
 
-	if (!libc.can_do_threads) return ENOSYS;
-	self = __pthread_self();
-	if (!libc.threaded) {
-		for (FILE *f=*__ofl_lock(); f; f=f->next)
-			init_file_lock(f);
-		__ofl_unlock();
-		init_file_lock(__stdin_used);
-		init_file_lock(__stdout_used);
-		init_file_lock(__stderr_used);
-		__syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, SIGPT_SET, 0, _NSIG/8);
-		self->tsd = (void **)__pthread_tsd_main;
-		libc.threaded = 1;
-	}
-	if (attrp && !c11) attr = *attrp;
+  if (!libc.can_do_threads)
+    return ENOSYS;
+  self = __pthread_self();
+  if (!libc.threaded) {
+    for (FILE* f = *__ofl_lock(); f; f = f->next)
+      init_file_lock(f);
+    __ofl_unlock();
+    init_file_lock(__stdin_used);
+    init_file_lock(__stdout_used);
+    init_file_lock(__stderr_used);
+    __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, SIGPT_SET, 0, _NSIG / 8);
+    self->tsd = (void**)__pthread_tsd_main;
+    libc.threaded = 1;
+  }
+  if (attrp && !c11)
+    attr = *attrp;
 
-	__acquire_ptc();
-	if (__block_new_threads) __wait(&__block_new_threads, 0, 1, 1);
+  __acquire_ptc();
+  if (__block_new_threads)
+    __wait(&__block_new_threads, 0, 1, 1);
 
-	if (attr._a_stackaddr) {
-		size_t need = libc.tls_size + __pthread_tsd_size;
-		size = attr._a_stacksize + DEFAULT_STACK_SIZE;
-		stack = (void *)(attr._a_stackaddr & -16);
-		stack_limit = (void *)(attr._a_stackaddr - size);
-		/* Use application-provided stack for TLS only when
-		 * it does not take more than ~12% or 2k of the
-		 * application's stack space. */
-		if (need < size/8 && need < 2048) {
-			tsd = stack - __pthread_tsd_size;
-			stack = tsd - libc.tls_size;
-			memset(stack, 0, need);
-		} else {
-			size = ROUND(need);
-			guard = 0;
-		}
-	} else {
-		guard = ROUND(DEFAULT_GUARD_SIZE + attr._a_guardsize);
-		size = guard + ROUND(DEFAULT_STACK_SIZE + attr._a_stacksize
-			+ libc.tls_size +  __pthread_tsd_size);
-	}
+  if (attr._a_stackaddr) {
+    size_t need = libc.tls_size + __pthread_tsd_size;
+    size = attr._a_stacksize + DEFAULT_STACK_SIZE;
+    stack = (void*)(attr._a_stackaddr & -16);
+    stack_limit = (void*)(attr._a_stackaddr - size);
+    /* Use application-provided stack for TLS only when
+     * it does not take more than ~12% or 2k of the
+     * application's stack space. */
+    if (need < size / 8 && need < 2048) {
+      tsd = stack - __pthread_tsd_size;
+      stack = tsd - libc.tls_size;
+      memset(stack, 0, need);
+    } else {
+      size = ROUND(need);
+      guard = 0;
+    }
+  } else {
+    guard = ROUND(DEFAULT_GUARD_SIZE + attr._a_guardsize);
+    size = guard + ROUND(DEFAULT_STACK_SIZE + attr._a_stacksize +
+                         libc.tls_size + __pthread_tsd_size);
+  }
 
-	if (!tsd) {
-		if (guard) {
-			map = __mmap(0, size, PROT_NONE, MAP_PRIVATE|MAP_ANON, -1, 0);
-			if (map == MAP_FAILED) goto fail;
-			if (__mprotect(map+guard, size-guard, PROT_READ|PROT_WRITE)
-			    && errno != ENOSYS) {
-				__munmap(map, size);
-				goto fail;
-			}
-		} else {
-			map = __mmap(0, size, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANON, -1, 0);
-			if (map == MAP_FAILED) goto fail;
-		}
-		tsd = map + size - __pthread_tsd_size;
-		if (!stack) {
-			stack = tsd - libc.tls_size;
-			stack_limit = map + guard;
-		}
-	}
+  if (!tsd) {
+    if (guard) {
+      map = __mmap(0, size, PROT_NONE, MAP_PRIVATE | MAP_ANON, -1, 0);
+      if (map == MAP_FAILED)
+        goto fail;
+      if (__mprotect(map + guard, size - guard, PROT_READ | PROT_WRITE) &&
+          errno != ENOSYS) {
+        __munmap(map, size);
+        goto fail;
+      }
+    } else {
+      map = __mmap(0, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1,
+                   0);
+      if (map == MAP_FAILED)
+        goto fail;
+    }
+    tsd = map + size - __pthread_tsd_size;
+    if (!stack) {
+      stack = tsd - libc.tls_size;
+      stack_limit = map + guard;
+    }
+  }
 
-	new = __copy_tls(tsd - libc.tls_size);
-	new->map_base = map;
-	new->map_size = size;
-	new->stack = stack;
-	new->stack_size = stack - stack_limit;
-	new->start = entry;
-	new->start_arg = arg;
-	new->self = new;
-	new->tsd = (void *)tsd;
-	new->locale = &libc.global_locale;
-	if (attr._a_detach) {
-		new->detached = 1;
-		flags -= CLONE_CHILD_CLEARTID;
-	}
-	if (attr._a_sched) {
-		do_sched = new->startlock[0] = 1;
-		__block_app_sigs(new->sigmask);
-	}
-	new->robust_list.head = &new->robust_list.head;
-	new->unblock_cancel = self->cancel;
-	new->CANARY = self->CANARY;
+  new = __copy_tls(tsd - libc.tls_size);
+  new->map_base = map;
+  new->map_size = size;
+  new->stack = stack;
+  new->stack_size = stack - stack_limit;
+  new->start = entry;
+  new->start_arg = arg;
+  new->self = new;
+  new->tsd = (void*)tsd;
+  new->locale = &libc.global_locale;
+  if (attr._a_detach) {
+    new->detached = 1;
+    flags -= CLONE_CHILD_CLEARTID;
+  }
+  if (attr._a_sched) {
+    do_sched = new->startlock[0] = 1;
+    __block_app_sigs(new->sigmask);
+  }
+  new->robust_list.head = &new->robust_list.head;
+  new->unblock_cancel = self->cancel;
+  new->CANARY = self->CANARY;
 
-	a_inc(&libc.threads_minus_1);
-	ret = __clone((c11 ? start_c11 : start), stack, flags, new, &new->tid, TP_ADJ(new), &new->tid);
+  a_inc(&libc.threads_minus_1);
+  ret = __clone((c11 ? start_c11 : start), stack, flags, new, &new->tid,
+                TP_ADJ(new), &new->tid);
 
-	__release_ptc();
+  __release_ptc();
 
-	if (do_sched) {
-		__restore_sigs(new->sigmask);
-	}
+  if (do_sched) {
+    __restore_sigs(new->sigmask);
+  }
 
-	if (ret < 0) {
-		a_dec(&libc.threads_minus_1);
-		if (map) __munmap(map, size);
-		return EAGAIN;
-	}
+  if (ret < 0) {
+    a_dec(&libc.threads_minus_1);
+    if (map)
+      __munmap(map, size);
+    return EAGAIN;
+  }
 
-	if (do_sched) {
-		ret = __syscall(SYS_sched_setscheduler, new->tid,
-			attr._a_policy, &attr._a_prio);
-		a_store(new->startlock, ret<0 ? 2 : 0);
-		__wake(new->startlock, 1, 1);
-		if (ret < 0) return -ret;
-	}
+  if (do_sched) {
+    ret = __syscall(SYS_sched_setscheduler, new->tid, attr._a_policy,
+                    &attr._a_prio);
+    a_store(new->startlock, ret < 0 ? 2 : 0);
+    __wake(new->startlock, 1, 1);
+    if (ret < 0)
+      return -ret;
+  }
 
-	*res = new;
-	return 0;
+  *res = new;
+  return 0;
 fail:
-	__release_ptc();
-	return EAGAIN;
+  __release_ptc();
+  return EAGAIN;
 }
 
 weak_alias(__pthread_exit, pthread_exit);
diff --git a/fusl/src/thread/pthread_detach.c b/fusl/src/thread/pthread_detach.c
index ed77f74..3a5f70d 100644
--- a/fusl/src/thread/pthread_detach.c
+++ b/fusl/src/thread/pthread_detach.c
@@ -1,16 +1,15 @@
 #include "pthread_impl.h"
 #include <threads.h>
 
-int __pthread_join(pthread_t, void **);
+int __pthread_join(pthread_t, void**);
 
-static int __pthread_detach(pthread_t t)
-{
-	/* Cannot detach a thread that's already exiting */
-	if (a_swap(t->exitlock, 1))
-		return __pthread_join(t, 0);
-	t->detached = 2;
-	__unlock(t->exitlock);
-	return 0;
+static int __pthread_detach(pthread_t t) {
+  /* Cannot detach a thread that's already exiting */
+  if (a_swap(t->exitlock, 1))
+    return __pthread_join(t, 0);
+  t->detached = 2;
+  __unlock(t->exitlock);
+  return 0;
 }
 
 weak_alias(__pthread_detach, pthread_detach);
diff --git a/fusl/src/thread/pthread_equal.c b/fusl/src/thread/pthread_equal.c
index 7c31482..7bd03d1 100644
--- a/fusl/src/thread/pthread_equal.c
+++ b/fusl/src/thread/pthread_equal.c
@@ -2,9 +2,8 @@
 #include <threads.h>
 #include "libc.h"
 
-static int __pthread_equal(pthread_t a, pthread_t b)
-{
-	return a==b;
+static int __pthread_equal(pthread_t a, pthread_t b) {
+  return a == b;
 }
 
 weak_alias(__pthread_equal, pthread_equal);
diff --git a/fusl/src/thread/pthread_getattr_np.c b/fusl/src/thread/pthread_getattr_np.c
index 10ea512..bb9ec5f 100644
--- a/fusl/src/thread/pthread_getattr_np.c
+++ b/fusl/src/thread/pthread_getattr_np.c
@@ -3,21 +3,22 @@
 #include "libc.h"
 #include <sys/mman.h>
 
-int pthread_getattr_np(pthread_t t, pthread_attr_t *a)
-{
-	*a = (pthread_attr_t){0};
-	a->_a_detach = !!t->detached;
-	if (t->stack) {
-		a->_a_stackaddr = (uintptr_t)t->stack;
-		a->_a_stacksize = t->stack_size - DEFAULT_STACK_SIZE;
-	} else {
-		char *p = (void *)libc.auxv;
-		size_t l = PAGE_SIZE;
-		p += -(uintptr_t)p & PAGE_SIZE-1;
-		a->_a_stackaddr = (uintptr_t)p;
-		while (mremap(p-l-PAGE_SIZE, PAGE_SIZE, 2*PAGE_SIZE, 0)==MAP_FAILED && errno==ENOMEM)
-			l += PAGE_SIZE;
-		a->_a_stacksize = l - DEFAULT_STACK_SIZE;
-	}
-	return 0;
+int pthread_getattr_np(pthread_t t, pthread_attr_t* a) {
+  *a = (pthread_attr_t){0};
+  a->_a_detach = !!t->detached;
+  if (t->stack) {
+    a->_a_stackaddr = (uintptr_t)t->stack;
+    a->_a_stacksize = t->stack_size - DEFAULT_STACK_SIZE;
+  } else {
+    char* p = (void*)libc.auxv;
+    size_t l = PAGE_SIZE;
+    p += -(uintptr_t)p & PAGE_SIZE - 1;
+    a->_a_stackaddr = (uintptr_t)p;
+    while (mremap(p - l - PAGE_SIZE, PAGE_SIZE, 2 * PAGE_SIZE, 0) ==
+               MAP_FAILED &&
+           errno == ENOMEM)
+      l += PAGE_SIZE;
+    a->_a_stacksize = l - DEFAULT_STACK_SIZE;
+  }
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_getconcurrency.c b/fusl/src/thread/pthread_getconcurrency.c
index 269429a..d03d1a8 100644
--- a/fusl/src/thread/pthread_getconcurrency.c
+++ b/fusl/src/thread/pthread_getconcurrency.c
@@ -1,6 +1,5 @@
 #include <pthread.h>
 
-int pthread_getconcurrency()
-{
-	return 0;
+int pthread_getconcurrency() {
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_getcpuclockid.c b/fusl/src/thread/pthread_getcpuclockid.c
index 9df14fb..75fcc58 100644
--- a/fusl/src/thread/pthread_getcpuclockid.c
+++ b/fusl/src/thread/pthread_getcpuclockid.c
@@ -1,7 +1,6 @@
 #include "pthread_impl.h"
 
-int pthread_getcpuclockid(pthread_t t, clockid_t *clockid)
-{
-	*clockid = (-t->tid-1)*8U + 6;
-	return 0;
+int pthread_getcpuclockid(pthread_t t, clockid_t* clockid) {
+  *clockid = (-t->tid - 1) * 8U + 6;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_getschedparam.c b/fusl/src/thread/pthread_getschedparam.c
index 3053c18..3ef2659 100644
--- a/fusl/src/thread/pthread_getschedparam.c
+++ b/fusl/src/thread/pthread_getschedparam.c
@@ -1,17 +1,18 @@
 #include "pthread_impl.h"
 
-int pthread_getschedparam(pthread_t t, int *restrict policy, struct sched_param *restrict param)
-{
-	int r;
-	__lock(t->killlock);
-	if (t->dead) {
-		r = ESRCH;
-	} else {
-		r = -__syscall(SYS_sched_getparam, t->tid, param);
-		if (!r) {
-			*policy = __syscall(SYS_sched_getscheduler, t->tid);
-		}
-	}
-	__unlock(t->killlock);
-	return r;
+int pthread_getschedparam(pthread_t t,
+                          int* restrict policy,
+                          struct sched_param* restrict param) {
+  int r;
+  __lock(t->killlock);
+  if (t->dead) {
+    r = ESRCH;
+  } else {
+    r = -__syscall(SYS_sched_getparam, t->tid, param);
+    if (!r) {
+      *policy = __syscall(SYS_sched_getscheduler, t->tid);
+    }
+  }
+  __unlock(t->killlock);
+  return r;
 }
diff --git a/fusl/src/thread/pthread_getspecific.c b/fusl/src/thread/pthread_getspecific.c
index d9342a5..08f49c5 100644
--- a/fusl/src/thread/pthread_getspecific.c
+++ b/fusl/src/thread/pthread_getspecific.c
@@ -1,10 +1,9 @@
 #include "pthread_impl.h"
 #include <threads.h>
 
-static void *__pthread_getspecific(pthread_key_t k)
-{
-	struct pthread *self = __pthread_self();
-	return self->tsd[k];
+static void* __pthread_getspecific(pthread_key_t k) {
+  struct pthread* self = __pthread_self();
+  return self->tsd[k];
 }
 
 weak_alias(__pthread_getspecific, pthread_getspecific);
diff --git a/fusl/src/thread/pthread_join.c b/fusl/src/thread/pthread_join.c
index 694d377..952bf90 100644
--- a/fusl/src/thread/pthread_join.c
+++ b/fusl/src/thread/pthread_join.c
@@ -1,22 +1,25 @@
 #include "pthread_impl.h"
 #include <sys/mman.h>
 
-int __munmap(void *, size_t);
+int __munmap(void*, size_t);
 void __pthread_testcancel(void);
-int __pthread_setcancelstate(int, int *);
+int __pthread_setcancelstate(int, int*);
 
-int __pthread_join(pthread_t t, void **res)
-{
-	int tmp, cs;
-	__pthread_testcancel();
-	__pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
-	if (cs == PTHREAD_CANCEL_ENABLE) __pthread_setcancelstate(cs, 0);
-	while ((tmp = t->tid)) __timedwait_cp(&t->tid, tmp, 0, 0, 0);
-	__pthread_setcancelstate(cs, 0);
-	a_barrier();
-	if (res) *res = t->result;
-	if (t->map_base) __munmap(t->map_base, t->map_size);
-	return 0;
+int __pthread_join(pthread_t t, void** res) {
+  int tmp, cs;
+  __pthread_testcancel();
+  __pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  if (cs == PTHREAD_CANCEL_ENABLE)
+    __pthread_setcancelstate(cs, 0);
+  while ((tmp = t->tid))
+    __timedwait_cp(&t->tid, tmp, 0, 0, 0);
+  __pthread_setcancelstate(cs, 0);
+  a_barrier();
+  if (res)
+    *res = t->result;
+  if (t->map_base)
+    __munmap(t->map_base, t->map_size);
+  return 0;
 }
 
 weak_alias(__pthread_join, pthread_join);
diff --git a/fusl/src/thread/pthread_key_create.c b/fusl/src/thread/pthread_key_create.c
index a78e507..bacb4a6 100644
--- a/fusl/src/thread/pthread_key_create.c
+++ b/fusl/src/thread/pthread_key_create.c
@@ -1,55 +1,52 @@
 #include "pthread_impl.h"
 
-volatile size_t __pthread_tsd_size = sizeof(void *) * PTHREAD_KEYS_MAX;
-void *__pthread_tsd_main[PTHREAD_KEYS_MAX] = { 0 };
+volatile size_t __pthread_tsd_size = sizeof(void*) * PTHREAD_KEYS_MAX;
+void* __pthread_tsd_main[PTHREAD_KEYS_MAX] = {0};
 
-static void (*volatile keys[PTHREAD_KEYS_MAX])(void *);
+static void (*volatile keys[PTHREAD_KEYS_MAX])(void*);
 
-static void nodtor(void *dummy)
-{
+static void nodtor(void* dummy) {}
+
+int __pthread_key_create(pthread_key_t* k, void (*dtor)(void*)) {
+  unsigned i = (uintptr_t)&k / 16 % PTHREAD_KEYS_MAX;
+  unsigned j = i;
+  pthread_t self = __pthread_self();
+
+  /* This can only happen in the main thread before
+   * pthread_create has been called. */
+  if (!self->tsd)
+    self->tsd = __pthread_tsd_main;
+
+  if (!dtor)
+    dtor = nodtor;
+  do {
+    if (!a_cas_p(keys + j, 0, (void*)dtor)) {
+      *k = j;
+      return 0;
+    }
+  } while ((j = (j + 1) % PTHREAD_KEYS_MAX) != i);
+  return EAGAIN;
 }
 
-int __pthread_key_create(pthread_key_t *k, void (*dtor)(void *))
-{
-	unsigned i = (uintptr_t)&k / 16 % PTHREAD_KEYS_MAX;
-	unsigned j = i;
-	pthread_t self = __pthread_self();
-
-	/* This can only happen in the main thread before
-	 * pthread_create has been called. */
-	if (!self->tsd) self->tsd = __pthread_tsd_main;
-
-	if (!dtor) dtor = nodtor;
-	do {
-		if (!a_cas_p(keys+j, 0, (void *)dtor)) {
-			*k = j;
-			return 0;
-		}
-	} while ((j=(j+1)%PTHREAD_KEYS_MAX) != i);
-	return EAGAIN;
+int __pthread_key_delete(pthread_key_t k) {
+  keys[k] = 0;
+  return 0;
 }
 
-int __pthread_key_delete(pthread_key_t k)
-{
-	keys[k] = 0;
-	return 0;
-}
-
-void __pthread_tsd_run_dtors()
-{
-	pthread_t self = __pthread_self();
-	int i, j, not_finished = self->tsd_used;
-	for (j=0; not_finished && j<PTHREAD_DESTRUCTOR_ITERATIONS; j++) {
-		not_finished = 0;
-		for (i=0; i<PTHREAD_KEYS_MAX; i++) {
-			if (self->tsd[i] && keys[i]) {
-				void *tmp = self->tsd[i];
-				self->tsd[i] = 0;
-				keys[i](tmp);
-				not_finished = 1;
-			}
-		}
-	}
+void __pthread_tsd_run_dtors() {
+  pthread_t self = __pthread_self();
+  int i, j, not_finished = self->tsd_used;
+  for (j = 0; not_finished && j < PTHREAD_DESTRUCTOR_ITERATIONS; j++) {
+    not_finished = 0;
+    for (i = 0; i < PTHREAD_KEYS_MAX; i++) {
+      if (self->tsd[i] && keys[i]) {
+        void* tmp = self->tsd[i];
+        self->tsd[i] = 0;
+        keys[i](tmp);
+        not_finished = 1;
+      }
+    }
+  }
 }
 
 weak_alias(__pthread_key_delete, pthread_key_delete);
diff --git a/fusl/src/thread/pthread_kill.c b/fusl/src/thread/pthread_kill.c
index acdb1ea..e891eb6 100644
--- a/fusl/src/thread/pthread_kill.c
+++ b/fusl/src/thread/pthread_kill.c
@@ -1,10 +1,9 @@
 #include "pthread_impl.h"
 
-int pthread_kill(pthread_t t, int sig)
-{
-	int r;
-	__lock(t->killlock);
-	r = t->dead ? ESRCH : -__syscall(SYS_tkill, t->tid, sig);
-	__unlock(t->killlock);
-	return r;
+int pthread_kill(pthread_t t, int sig) {
+  int r;
+  __lock(t->killlock);
+  r = t->dead ? ESRCH : -__syscall(SYS_tkill, t->tid, sig);
+  __unlock(t->killlock);
+  return r;
 }
diff --git a/fusl/src/thread/pthread_mutex_consistent.c b/fusl/src/thread/pthread_mutex_consistent.c
index 96b83b5..9370ea5 100644
--- a/fusl/src/thread/pthread_mutex_consistent.c
+++ b/fusl/src/thread/pthread_mutex_consistent.c
@@ -1,10 +1,10 @@
 #include "pthread_impl.h"
 
-int pthread_mutex_consistent(pthread_mutex_t *m)
-{
-	if (!(m->_m_type & 8)) return EINVAL;
-	if ((m->_m_lock & 0x7fffffff) != __pthread_self()->tid)
-		return EPERM;
-	m->_m_type &= ~8U;
-	return 0;
+int pthread_mutex_consistent(pthread_mutex_t* m) {
+  if (!(m->_m_type & 8))
+    return EINVAL;
+  if ((m->_m_lock & 0x7fffffff) != __pthread_self()->tid)
+    return EPERM;
+  m->_m_type &= ~8U;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_mutex_destroy.c b/fusl/src/thread/pthread_mutex_destroy.c
index 6d49e68..1f60996 100644
--- a/fusl/src/thread/pthread_mutex_destroy.c
+++ b/fusl/src/thread/pthread_mutex_destroy.c
@@ -1,6 +1,5 @@
 #include <pthread.h>
 
-int pthread_mutex_destroy(pthread_mutex_t *mutex)
-{
-	return 0;
+int pthread_mutex_destroy(pthread_mutex_t* mutex) {
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_mutex_getprioceiling.c b/fusl/src/thread/pthread_mutex_getprioceiling.c
index 8c75a66..99e98ef 100644
--- a/fusl/src/thread/pthread_mutex_getprioceiling.c
+++ b/fusl/src/thread/pthread_mutex_getprioceiling.c
@@ -1,6 +1,6 @@
 #include "pthread_impl.h"
 
-int pthread_mutex_getprioceiling(const pthread_mutex_t *restrict m, int *restrict ceiling)
-{
-	return EINVAL;
+int pthread_mutex_getprioceiling(const pthread_mutex_t* restrict m,
+                                 int* restrict ceiling) {
+  return EINVAL;
 }
diff --git a/fusl/src/thread/pthread_mutex_init.c b/fusl/src/thread/pthread_mutex_init.c
index acf45a7..dad438c 100644
--- a/fusl/src/thread/pthread_mutex_init.c
+++ b/fusl/src/thread/pthread_mutex_init.c
@@ -1,8 +1,9 @@
 #include "pthread_impl.h"
 
-int pthread_mutex_init(pthread_mutex_t *restrict m, const pthread_mutexattr_t *restrict a)
-{
-	*m = (pthread_mutex_t){0};
-	if (a) m->_m_type = a->__attr;
-	return 0;
+int pthread_mutex_init(pthread_mutex_t* restrict m,
+                       const pthread_mutexattr_t* restrict a) {
+  *m = (pthread_mutex_t){0};
+  if (a)
+    m->_m_type = a->__attr;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_mutex_lock.c b/fusl/src/thread/pthread_mutex_lock.c
index d0c93ca..8135971 100644
--- a/fusl/src/thread/pthread_mutex_lock.c
+++ b/fusl/src/thread/pthread_mutex_lock.c
@@ -1,14 +1,14 @@
 #include "pthread_impl.h"
 
-int __pthread_mutex_timedlock(pthread_mutex_t *restrict, const struct timespec *restrict);
+int __pthread_mutex_timedlock(pthread_mutex_t* restrict,
+                              const struct timespec* restrict);
 
-int __pthread_mutex_lock(pthread_mutex_t *m)
-{
-	if ((m->_m_type&15) == PTHREAD_MUTEX_NORMAL
-	    && !a_cas(&m->_m_lock, 0, EBUSY))
-		return 0;
+int __pthread_mutex_lock(pthread_mutex_t* m) {
+  if ((m->_m_type & 15) == PTHREAD_MUTEX_NORMAL &&
+      !a_cas(&m->_m_lock, 0, EBUSY))
+    return 0;
 
-	return __pthread_mutex_timedlock(m, 0);
+  return __pthread_mutex_timedlock(m, 0);
 }
 
 weak_alias(__pthread_mutex_lock, pthread_mutex_lock);
diff --git a/fusl/src/thread/pthread_mutex_setprioceiling.c b/fusl/src/thread/pthread_mutex_setprioceiling.c
index 681f07c..6b411df 100644
--- a/fusl/src/thread/pthread_mutex_setprioceiling.c
+++ b/fusl/src/thread/pthread_mutex_setprioceiling.c
@@ -1,6 +1,7 @@
 #include "pthread_impl.h"
 
-int pthread_mutex_setprioceiling(pthread_mutex_t *restrict m, int ceiling, int *restrict old)
-{
-	return EINVAL;
+int pthread_mutex_setprioceiling(pthread_mutex_t* restrict m,
+                                 int ceiling,
+                                 int* restrict old) {
+  return EINVAL;
 }
diff --git a/fusl/src/thread/pthread_mutex_timedlock.c b/fusl/src/thread/pthread_mutex_timedlock.c
index 0a240e7..dcca44b 100644
--- a/fusl/src/thread/pthread_mutex_timedlock.c
+++ b/fusl/src/thread/pthread_mutex_timedlock.c
@@ -1,34 +1,37 @@
 #include "pthread_impl.h"
 
-int __pthread_mutex_timedlock(pthread_mutex_t *restrict m, const struct timespec *restrict at)
-{
-	if ((m->_m_type&15) == PTHREAD_MUTEX_NORMAL
-	    && !a_cas(&m->_m_lock, 0, EBUSY))
-		return 0;
+int __pthread_mutex_timedlock(pthread_mutex_t* restrict m,
+                              const struct timespec* restrict at) {
+  if ((m->_m_type & 15) == PTHREAD_MUTEX_NORMAL &&
+      !a_cas(&m->_m_lock, 0, EBUSY))
+    return 0;
 
-	int r, t, priv = (m->_m_type & 128) ^ 128;
+  int r, t, priv = (m->_m_type & 128) ^ 128;
 
-	r = pthread_mutex_trylock(m);
-	if (r != EBUSY) return r;
-	
-	int spins = 100;
-	while (spins-- && m->_m_lock && !m->_m_waiters) a_spin();
+  r = pthread_mutex_trylock(m);
+  if (r != EBUSY)
+    return r;
 
-	while ((r=pthread_mutex_trylock(m)) == EBUSY) {
-		if (!(r=m->_m_lock) || ((r&0x40000000) && (m->_m_type&4)))
-			continue;
-		if ((m->_m_type&3) == PTHREAD_MUTEX_ERRORCHECK
-		 && (r&0x7fffffff) == __pthread_self()->tid)
-			return EDEADLK;
+  int spins = 100;
+  while (spins-- && m->_m_lock && !m->_m_waiters)
+    a_spin();
 
-		a_inc(&m->_m_waiters);
-		t = r | 0x80000000;
-		a_cas(&m->_m_lock, r, t);
-		r = __timedwait(&m->_m_lock, t, CLOCK_REALTIME, at, priv);
-		a_dec(&m->_m_waiters);
-		if (r && r != EINTR) break;
-	}
-	return r;
+  while ((r = pthread_mutex_trylock(m)) == EBUSY) {
+    if (!(r = m->_m_lock) || ((r & 0x40000000) && (m->_m_type & 4)))
+      continue;
+    if ((m->_m_type & 3) == PTHREAD_MUTEX_ERRORCHECK &&
+        (r & 0x7fffffff) == __pthread_self()->tid)
+      return EDEADLK;
+
+    a_inc(&m->_m_waiters);
+    t = r | 0x80000000;
+    a_cas(&m->_m_lock, r, t);
+    r = __timedwait(&m->_m_lock, t, CLOCK_REALTIME, at, priv);
+    a_dec(&m->_m_waiters);
+    if (r && r != EINTR)
+      break;
+  }
+  return r;
 }
 
 weak_alias(__pthread_mutex_timedlock, pthread_mutex_timedlock);
diff --git a/fusl/src/thread/pthread_mutex_trylock.c b/fusl/src/thread/pthread_mutex_trylock.c
index 0df3ce2..bcb4913 100644
--- a/fusl/src/thread/pthread_mutex_trylock.c
+++ b/fusl/src/thread/pthread_mutex_trylock.c
@@ -1,58 +1,59 @@
 #include "pthread_impl.h"
 
-int __pthread_mutex_trylock_owner(pthread_mutex_t *m)
-{
-	int old, own;
-	int type = m->_m_type & 15;
-	pthread_t self = __pthread_self();
-	int tid = self->tid;
+int __pthread_mutex_trylock_owner(pthread_mutex_t* m) {
+  int old, own;
+  int type = m->_m_type & 15;
+  pthread_t self = __pthread_self();
+  int tid = self->tid;
 
-	old = m->_m_lock;
-	own = old & 0x7fffffff;
-	if (own == tid && (type&3) == PTHREAD_MUTEX_RECURSIVE) {
-		if ((unsigned)m->_m_count >= INT_MAX) return EAGAIN;
-		m->_m_count++;
-		return 0;
-	}
-	if (own == 0x40000000) return ENOTRECOVERABLE;
+  old = m->_m_lock;
+  own = old & 0x7fffffff;
+  if (own == tid && (type & 3) == PTHREAD_MUTEX_RECURSIVE) {
+    if ((unsigned)m->_m_count >= INT_MAX)
+      return EAGAIN;
+    m->_m_count++;
+    return 0;
+  }
+  if (own == 0x40000000)
+    return ENOTRECOVERABLE;
 
-	if (m->_m_type & 128) {
-		if (!self->robust_list.off) {
-			self->robust_list.off = (char*)&m->_m_lock-(char *)&m->_m_next;
-			__syscall(SYS_set_robust_list, &self->robust_list, 3*sizeof(long));
-		}
-		if (m->_m_waiters) tid |= 0x80000000;
-		self->robust_list.pending = &m->_m_next;
-	}
+  if (m->_m_type & 128) {
+    if (!self->robust_list.off) {
+      self->robust_list.off = (char*)&m->_m_lock - (char*)&m->_m_next;
+      __syscall(SYS_set_robust_list, &self->robust_list, 3 * sizeof(long));
+    }
+    if (m->_m_waiters)
+      tid |= 0x80000000;
+    self->robust_list.pending = &m->_m_next;
+  }
 
-	if ((own && (!(own & 0x40000000) || !(type & 4)))
-	    || a_cas(&m->_m_lock, old, tid) != old) {
-		self->robust_list.pending = 0;
-		return EBUSY;
-	}
+  if ((own && (!(own & 0x40000000) || !(type & 4))) ||
+      a_cas(&m->_m_lock, old, tid) != old) {
+    self->robust_list.pending = 0;
+    return EBUSY;
+  }
 
-	volatile void *next = self->robust_list.head;
-	m->_m_next = next;
-	m->_m_prev = &self->robust_list.head;
-	if (next != &self->robust_list.head) *(volatile void *volatile *)
-		((char *)next - sizeof(void *)) = &m->_m_next;
-	self->robust_list.head = &m->_m_next;
-	self->robust_list.pending = 0;
+  volatile void* next = self->robust_list.head;
+  m->_m_next = next;
+  m->_m_prev = &self->robust_list.head;
+  if (next != &self->robust_list.head)
+    *(volatile void* volatile*)((char*)next - sizeof(void*)) = &m->_m_next;
+  self->robust_list.head = &m->_m_next;
+  self->robust_list.pending = 0;
 
-	if (own) {
-		m->_m_count = 0;
-		m->_m_type |= 8;
-		return EOWNERDEAD;
-	}
+  if (own) {
+    m->_m_count = 0;
+    m->_m_type |= 8;
+    return EOWNERDEAD;
+  }
 
-	return 0;
+  return 0;
 }
 
-int __pthread_mutex_trylock(pthread_mutex_t *m)
-{
-	if ((m->_m_type&15) == PTHREAD_MUTEX_NORMAL)
-		return a_cas(&m->_m_lock, 0, EBUSY) & EBUSY;
-	return __pthread_mutex_trylock_owner(m);
+int __pthread_mutex_trylock(pthread_mutex_t* m) {
+  if ((m->_m_type & 15) == PTHREAD_MUTEX_NORMAL)
+    return a_cas(&m->_m_lock, 0, EBUSY) & EBUSY;
+  return __pthread_mutex_trylock_owner(m);
 }
 
 weak_alias(__pthread_mutex_trylock, pthread_mutex_trylock);
diff --git a/fusl/src/thread/pthread_mutex_unlock.c b/fusl/src/thread/pthread_mutex_unlock.c
index 02da92a..d80fde0 100644
--- a/fusl/src/thread/pthread_mutex_unlock.c
+++ b/fusl/src/thread/pthread_mutex_unlock.c
@@ -1,37 +1,36 @@
 #include "pthread_impl.h"
 
-int __pthread_mutex_unlock(pthread_mutex_t *m)
-{
-	pthread_t self;
-	int waiters = m->_m_waiters;
-	int cont;
-	int type = m->_m_type & 15;
-	int priv = (m->_m_type & 128) ^ 128;
+int __pthread_mutex_unlock(pthread_mutex_t* m) {
+  pthread_t self;
+  int waiters = m->_m_waiters;
+  int cont;
+  int type = m->_m_type & 15;
+  int priv = (m->_m_type & 128) ^ 128;
 
-	if (type != PTHREAD_MUTEX_NORMAL) {
-		self = __pthread_self();
-		if ((m->_m_lock&0x7fffffff) != self->tid)
-			return EPERM;
-		if ((type&3) == PTHREAD_MUTEX_RECURSIVE && m->_m_count)
-			return m->_m_count--, 0;
-		if (!priv) {
-			self->robust_list.pending = &m->_m_next;
-			__vm_lock();
-		}
-		volatile void *prev = m->_m_prev;
-		volatile void *next = m->_m_next;
-		*(volatile void *volatile *)prev = next;
-		if (next != &self->robust_list.head) *(volatile void *volatile *)
-			((char *)next - sizeof(void *)) = prev;
-	}
-	cont = a_swap(&m->_m_lock, (type & 8) ? 0x40000000 : 0);
-	if (type != PTHREAD_MUTEX_NORMAL && !priv) {
-		self->robust_list.pending = 0;
-		__vm_unlock();
-	}
-	if (waiters || cont<0)
-		__wake(&m->_m_lock, 1, priv);
-	return 0;
+  if (type != PTHREAD_MUTEX_NORMAL) {
+    self = __pthread_self();
+    if ((m->_m_lock & 0x7fffffff) != self->tid)
+      return EPERM;
+    if ((type & 3) == PTHREAD_MUTEX_RECURSIVE && m->_m_count)
+      return m->_m_count--, 0;
+    if (!priv) {
+      self->robust_list.pending = &m->_m_next;
+      __vm_lock();
+    }
+    volatile void* prev = m->_m_prev;
+    volatile void* next = m->_m_next;
+    *(volatile void* volatile*)prev = next;
+    if (next != &self->robust_list.head)
+      *(volatile void* volatile*)((char*)next - sizeof(void*)) = prev;
+  }
+  cont = a_swap(&m->_m_lock, (type & 8) ? 0x40000000 : 0);
+  if (type != PTHREAD_MUTEX_NORMAL && !priv) {
+    self->robust_list.pending = 0;
+    __vm_unlock();
+  }
+  if (waiters || cont < 0)
+    __wake(&m->_m_lock, 1, priv);
+  return 0;
 }
 
 weak_alias(__pthread_mutex_unlock, pthread_mutex_unlock);
diff --git a/fusl/src/thread/pthread_mutexattr_destroy.c b/fusl/src/thread/pthread_mutexattr_destroy.c
index 9fd6974..8f30e21 100644
--- a/fusl/src/thread/pthread_mutexattr_destroy.c
+++ b/fusl/src/thread/pthread_mutexattr_destroy.c
@@ -1,6 +1,5 @@
 #include "pthread_impl.h"
 
-int pthread_mutexattr_destroy(pthread_mutexattr_t *a)
-{
-	return 0;
+int pthread_mutexattr_destroy(pthread_mutexattr_t* a) {
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_mutexattr_init.c b/fusl/src/thread/pthread_mutexattr_init.c
index 0b72c1b..658f26a 100644
--- a/fusl/src/thread/pthread_mutexattr_init.c
+++ b/fusl/src/thread/pthread_mutexattr_init.c
@@ -1,7 +1,6 @@
 #include "pthread_impl.h"
 
-int pthread_mutexattr_init(pthread_mutexattr_t *a)
-{
-	*a = (pthread_mutexattr_t){0};
-	return 0;
+int pthread_mutexattr_init(pthread_mutexattr_t* a) {
+  *a = (pthread_mutexattr_t){0};
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_mutexattr_setprotocol.c b/fusl/src/thread/pthread_mutexattr_setprotocol.c
index c92a31c..05d7de4 100644
--- a/fusl/src/thread/pthread_mutexattr_setprotocol.c
+++ b/fusl/src/thread/pthread_mutexattr_setprotocol.c
@@ -1,7 +1,7 @@
 #include "pthread_impl.h"
 
-int pthread_mutexattr_setprotocol(pthread_mutexattr_t *a, int protocol)
-{
-	if (protocol) return ENOTSUP;
-	return 0;
+int pthread_mutexattr_setprotocol(pthread_mutexattr_t* a, int protocol) {
+  if (protocol)
+    return ENOTSUP;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_mutexattr_setpshared.c b/fusl/src/thread/pthread_mutexattr_setpshared.c
index 100f6ff..5e16ab9 100644
--- a/fusl/src/thread/pthread_mutexattr_setpshared.c
+++ b/fusl/src/thread/pthread_mutexattr_setpshared.c
@@ -1,9 +1,9 @@
 #include "pthread_impl.h"
 
-int pthread_mutexattr_setpshared(pthread_mutexattr_t *a, int pshared)
-{
-	if (pshared > 1U) return EINVAL;
-	a->__attr &= ~128U;
-	a->__attr |= pshared<<7;
-	return 0;
+int pthread_mutexattr_setpshared(pthread_mutexattr_t* a, int pshared) {
+  if (pshared > 1U)
+    return EINVAL;
+  a->__attr &= ~128U;
+  a->__attr |= pshared << 7;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_mutexattr_setrobust.c b/fusl/src/thread/pthread_mutexattr_setrobust.c
index dcfa4cf..2deef1d 100644
--- a/fusl/src/thread/pthread_mutexattr_setrobust.c
+++ b/fusl/src/thread/pthread_mutexattr_setrobust.c
@@ -1,9 +1,9 @@
 #include "pthread_impl.h"
 
-int pthread_mutexattr_setrobust(pthread_mutexattr_t *a, int robust)
-{
-	if (robust > 1U) return EINVAL;
-	a->__attr &= ~4;
-	a->__attr |= robust*4;
-	return 0;
+int pthread_mutexattr_setrobust(pthread_mutexattr_t* a, int robust) {
+  if (robust > 1U)
+    return EINVAL;
+  a->__attr &= ~4;
+  a->__attr |= robust * 4;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_mutexattr_settype.c b/fusl/src/thread/pthread_mutexattr_settype.c
index cd7a80e..1b95c4a 100644
--- a/fusl/src/thread/pthread_mutexattr_settype.c
+++ b/fusl/src/thread/pthread_mutexattr_settype.c
@@ -1,8 +1,8 @@
 #include "pthread_impl.h"
 
-int pthread_mutexattr_settype(pthread_mutexattr_t *a, int type)
-{
-	if ((unsigned)type > 2) return EINVAL;
-	a->__attr = (a->__attr & ~3) | type;
-	return 0;
+int pthread_mutexattr_settype(pthread_mutexattr_t* a, int type) {
+  if ((unsigned)type > 2)
+    return EINVAL;
+  a->__attr = (a->__attr & ~3) | type;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_once.c b/fusl/src/thread/pthread_once.c
index a8f8aeb..0c17d6d 100644
--- a/fusl/src/thread/pthread_once.c
+++ b/fusl/src/thread/pthread_once.c
@@ -1,50 +1,48 @@
 #include "pthread_impl.h"
 
-static void undo(void *control)
-{
-	/* Wake all waiters, since the waiter status is lost when
-	 * resetting control to the initial state. */
-	if (a_swap(control, 0) == 3)
-		__wake(control, -1, 1);
+static void undo(void* control) {
+  /* Wake all waiters, since the waiter status is lost when
+   * resetting control to the initial state. */
+  if (a_swap(control, 0) == 3)
+    __wake(control, -1, 1);
 }
 
-int __pthread_once_full(pthread_once_t *control, void (*init)(void))
-{
-	/* Try to enter initializing state. Four possibilities:
-	 *  0 - we're the first or the other cancelled; run init
-	 *  1 - another thread is running init; wait
-	 *  2 - another thread finished running init; just return
-	 *  3 - another thread is running init, waiters present; wait */
+int __pthread_once_full(pthread_once_t* control, void (*init)(void)) {
+  /* Try to enter initializing state. Four possibilities:
+   *  0 - we're the first or the other cancelled; run init
+   *  1 - another thread is running init; wait
+   *  2 - another thread finished running init; just return
+   *  3 - another thread is running init, waiters present; wait */
 
-	for (;;) switch (a_cas(control, 0, 1)) {
-	case 0:
-		pthread_cleanup_push(undo, control);
-		init();
-		pthread_cleanup_pop(0);
+  for (;;)
+    switch (a_cas(control, 0, 1)) {
+      case 0:
+        pthread_cleanup_push(undo, control);
+        init();
+        pthread_cleanup_pop(0);
 
-		if (a_swap(control, 2) == 3)
-			__wake(control, -1, 1);
-		return 0;
-	case 1:
-		/* If this fails, so will __wait. */
-		a_cas(control, 1, 3);
-	case 3:
-		__wait(control, 0, 3, 1);
-		continue;
-	case 2:
-		return 0;
-	}
+        if (a_swap(control, 2) == 3)
+          __wake(control, -1, 1);
+        return 0;
+      case 1:
+        /* If this fails, so will __wait. */
+        a_cas(control, 1, 3);
+      case 3:
+        __wait(control, 0, 3, 1);
+        continue;
+      case 2:
+        return 0;
+    }
 }
 
-int __pthread_once(pthread_once_t *control, void (*init)(void))
-{
-	/* Return immediately if init finished before, but ensure that
-	 * effects of the init routine are visible to the caller. */
-	if (*(volatile int *)control == 2) {
-		a_barrier();
-		return 0;
-	}
-	return __pthread_once_full(control, init);
+int __pthread_once(pthread_once_t* control, void (*init)(void)) {
+  /* Return immediately if init finished before, but ensure that
+   * effects of the init routine are visible to the caller. */
+  if (*(volatile int*)control == 2) {
+    a_barrier();
+    return 0;
+  }
+  return __pthread_once_full(control, init);
 }
 
 weak_alias(__pthread_once, pthread_once);
diff --git a/fusl/src/thread/pthread_rwlock_destroy.c b/fusl/src/thread/pthread_rwlock_destroy.c
index 49ecfbd..173148d 100644
--- a/fusl/src/thread/pthread_rwlock_destroy.c
+++ b/fusl/src/thread/pthread_rwlock_destroy.c
@@ -1,6 +1,5 @@
 #include "pthread_impl.h"
 
-int pthread_rwlock_destroy(pthread_rwlock_t *rw)
-{
-	return 0;
+int pthread_rwlock_destroy(pthread_rwlock_t* rw) {
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_rwlock_init.c b/fusl/src/thread/pthread_rwlock_init.c
index a2c0b47..4dd931f 100644
--- a/fusl/src/thread/pthread_rwlock_init.c
+++ b/fusl/src/thread/pthread_rwlock_init.c
@@ -1,8 +1,9 @@
 #include "pthread_impl.h"
 
-int pthread_rwlock_init(pthread_rwlock_t *restrict rw, const pthread_rwlockattr_t *restrict a)
-{
-	*rw = (pthread_rwlock_t){0};
-	if (a) rw->_rw_shared = a->__attr[0]*128;
-	return 0;
+int pthread_rwlock_init(pthread_rwlock_t* restrict rw,
+                        const pthread_rwlockattr_t* restrict a) {
+  *rw = (pthread_rwlock_t){0};
+  if (a)
+    rw->_rw_shared = a->__attr[0] * 128;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_rwlock_rdlock.c b/fusl/src/thread/pthread_rwlock_rdlock.c
index 0800d21..5869421 100644
--- a/fusl/src/thread/pthread_rwlock_rdlock.c
+++ b/fusl/src/thread/pthread_rwlock_rdlock.c
@@ -1,6 +1,5 @@
 #include "pthread_impl.h"
 
-int pthread_rwlock_rdlock(pthread_rwlock_t *rw)
-{
-	return pthread_rwlock_timedrdlock(rw, 0);
+int pthread_rwlock_rdlock(pthread_rwlock_t* rw) {
+  return pthread_rwlock_timedrdlock(rw, 0);
 }
diff --git a/fusl/src/thread/pthread_rwlock_timedrdlock.c b/fusl/src/thread/pthread_rwlock_timedrdlock.c
index 0d5d0d6..942eea8 100644
--- a/fusl/src/thread/pthread_rwlock_timedrdlock.c
+++ b/fusl/src/thread/pthread_rwlock_timedrdlock.c
@@ -1,23 +1,27 @@
 #include "pthread_impl.h"
 
-int pthread_rwlock_timedrdlock(pthread_rwlock_t *restrict rw, const struct timespec *restrict at)
-{
-	int r, t;
+int pthread_rwlock_timedrdlock(pthread_rwlock_t* restrict rw,
+                               const struct timespec* restrict at) {
+  int r, t;
 
-	r = pthread_rwlock_tryrdlock(rw);
-	if (r != EBUSY) return r;
-	
-	int spins = 100;
-	while (spins-- && rw->_rw_lock && !rw->_rw_waiters) a_spin();
+  r = pthread_rwlock_tryrdlock(rw);
+  if (r != EBUSY)
+    return r;
 
-	while ((r=pthread_rwlock_tryrdlock(rw))==EBUSY) {
-		if (!(r=rw->_rw_lock) || (r&0x7fffffff)!=0x7fffffff) continue;
-		t = r | 0x80000000;
-		a_inc(&rw->_rw_waiters);
-		a_cas(&rw->_rw_lock, r, t);
-		r = __timedwait(&rw->_rw_lock, t, CLOCK_REALTIME, at, rw->_rw_shared^128);
-		a_dec(&rw->_rw_waiters);
-		if (r && r != EINTR) return r;
-	}
-	return r;
+  int spins = 100;
+  while (spins-- && rw->_rw_lock && !rw->_rw_waiters)
+    a_spin();
+
+  while ((r = pthread_rwlock_tryrdlock(rw)) == EBUSY) {
+    if (!(r = rw->_rw_lock) || (r & 0x7fffffff) != 0x7fffffff)
+      continue;
+    t = r | 0x80000000;
+    a_inc(&rw->_rw_waiters);
+    a_cas(&rw->_rw_lock, r, t);
+    r = __timedwait(&rw->_rw_lock, t, CLOCK_REALTIME, at, rw->_rw_shared ^ 128);
+    a_dec(&rw->_rw_waiters);
+    if (r && r != EINTR)
+      return r;
+  }
+  return r;
 }
diff --git a/fusl/src/thread/pthread_rwlock_timedwrlock.c b/fusl/src/thread/pthread_rwlock_timedwrlock.c
index 7f26dad..cf4d432 100644
--- a/fusl/src/thread/pthread_rwlock_timedwrlock.c
+++ b/fusl/src/thread/pthread_rwlock_timedwrlock.c
@@ -1,23 +1,27 @@
 #include "pthread_impl.h"
 
-int pthread_rwlock_timedwrlock(pthread_rwlock_t *restrict rw, const struct timespec *restrict at)
-{
-	int r, t;
-	
-	r = pthread_rwlock_trywrlock(rw);
-	if (r != EBUSY) return r;
-	
-	int spins = 100;
-	while (spins-- && rw->_rw_lock && !rw->_rw_waiters) a_spin();
+int pthread_rwlock_timedwrlock(pthread_rwlock_t* restrict rw,
+                               const struct timespec* restrict at) {
+  int r, t;
 
-	while ((r=pthread_rwlock_trywrlock(rw))==EBUSY) {
-		if (!(r=rw->_rw_lock)) continue;
-		t = r | 0x80000000;
-		a_inc(&rw->_rw_waiters);
-		a_cas(&rw->_rw_lock, r, t);
-		r = __timedwait(&rw->_rw_lock, t, CLOCK_REALTIME, at, rw->_rw_shared^128);
-		a_dec(&rw->_rw_waiters);
-		if (r && r != EINTR) return r;
-	}
-	return r;
+  r = pthread_rwlock_trywrlock(rw);
+  if (r != EBUSY)
+    return r;
+
+  int spins = 100;
+  while (spins-- && rw->_rw_lock && !rw->_rw_waiters)
+    a_spin();
+
+  while ((r = pthread_rwlock_trywrlock(rw)) == EBUSY) {
+    if (!(r = rw->_rw_lock))
+      continue;
+    t = r | 0x80000000;
+    a_inc(&rw->_rw_waiters);
+    a_cas(&rw->_rw_lock, r, t);
+    r = __timedwait(&rw->_rw_lock, t, CLOCK_REALTIME, at, rw->_rw_shared ^ 128);
+    a_dec(&rw->_rw_waiters);
+    if (r && r != EINTR)
+      return r;
+  }
+  return r;
 }
diff --git a/fusl/src/thread/pthread_rwlock_tryrdlock.c b/fusl/src/thread/pthread_rwlock_tryrdlock.c
index fa271fc..0246fc5 100644
--- a/fusl/src/thread/pthread_rwlock_tryrdlock.c
+++ b/fusl/src/thread/pthread_rwlock_tryrdlock.c
@@ -1,13 +1,14 @@
 #include "pthread_impl.h"
 
-int pthread_rwlock_tryrdlock(pthread_rwlock_t *rw)
-{
-	int val, cnt;
-	do {
-		val = rw->_rw_lock;
-		cnt = val & 0x7fffffff;
-		if (cnt == 0x7fffffff) return EBUSY;
-		if (cnt == 0x7ffffffe) return EAGAIN;
-	} while (a_cas(&rw->_rw_lock, val, val+1) != val);
-	return 0;
+int pthread_rwlock_tryrdlock(pthread_rwlock_t* rw) {
+  int val, cnt;
+  do {
+    val = rw->_rw_lock;
+    cnt = val & 0x7fffffff;
+    if (cnt == 0x7fffffff)
+      return EBUSY;
+    if (cnt == 0x7ffffffe)
+      return EAGAIN;
+  } while (a_cas(&rw->_rw_lock, val, val + 1) != val);
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_rwlock_trywrlock.c b/fusl/src/thread/pthread_rwlock_trywrlock.c
index bb3d3a9..b68e10c 100644
--- a/fusl/src/thread/pthread_rwlock_trywrlock.c
+++ b/fusl/src/thread/pthread_rwlock_trywrlock.c
@@ -1,7 +1,7 @@
 #include "pthread_impl.h"
 
-int pthread_rwlock_trywrlock(pthread_rwlock_t *rw)
-{
-	if (a_cas(&rw->_rw_lock, 0, 0x7fffffff)) return EBUSY;
-	return 0;
+int pthread_rwlock_trywrlock(pthread_rwlock_t* rw) {
+  if (a_cas(&rw->_rw_lock, 0, 0x7fffffff))
+    return EBUSY;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_rwlock_unlock.c b/fusl/src/thread/pthread_rwlock_unlock.c
index 7b5eec8..033fbe1 100644
--- a/fusl/src/thread/pthread_rwlock_unlock.c
+++ b/fusl/src/thread/pthread_rwlock_unlock.c
@@ -1,18 +1,17 @@
 #include "pthread_impl.h"
 
-int pthread_rwlock_unlock(pthread_rwlock_t *rw)
-{
-	int val, cnt, waiters, new, priv = rw->_rw_shared^128;
+int pthread_rwlock_unlock(pthread_rwlock_t* rw) {
+  int val, cnt, waiters, new, priv = rw->_rw_shared ^ 128;
 
-	do {
-		val = rw->_rw_lock;
-		cnt = val & 0x7fffffff;
-		waiters = rw->_rw_waiters;
-		new = (cnt == 0x7fffffff || cnt == 1) ? 0 : val-1;
-	} while (a_cas(&rw->_rw_lock, val, new) != val);
+  do {
+    val = rw->_rw_lock;
+    cnt = val & 0x7fffffff;
+    waiters = rw->_rw_waiters;
+    new = (cnt == 0x7fffffff || cnt == 1) ? 0 : val - 1;
+  } while (a_cas(&rw->_rw_lock, val, new) != val);
 
-	if (!new && (waiters || val<0))
-		__wake(&rw->_rw_lock, cnt, priv);
+  if (!new && (waiters || val < 0))
+    __wake(&rw->_rw_lock, cnt, priv);
 
-	return 0;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_rwlock_wrlock.c b/fusl/src/thread/pthread_rwlock_wrlock.c
index 7f33535..c13e870 100644
--- a/fusl/src/thread/pthread_rwlock_wrlock.c
+++ b/fusl/src/thread/pthread_rwlock_wrlock.c
@@ -1,6 +1,5 @@
 #include "pthread_impl.h"
 
-int pthread_rwlock_wrlock(pthread_rwlock_t *rw)
-{
-	return pthread_rwlock_timedwrlock(rw, 0);
+int pthread_rwlock_wrlock(pthread_rwlock_t* rw) {
+  return pthread_rwlock_timedwrlock(rw, 0);
 }
diff --git a/fusl/src/thread/pthread_rwlockattr_destroy.c b/fusl/src/thread/pthread_rwlockattr_destroy.c
index fc8d611..8652405 100644
--- a/fusl/src/thread/pthread_rwlockattr_destroy.c
+++ b/fusl/src/thread/pthread_rwlockattr_destroy.c
@@ -1,6 +1,5 @@
 #include "pthread_impl.h"
 
-int pthread_rwlockattr_destroy(pthread_rwlockattr_t *a)
-{
-	return 0;
+int pthread_rwlockattr_destroy(pthread_rwlockattr_t* a) {
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_rwlockattr_init.c b/fusl/src/thread/pthread_rwlockattr_init.c
index e742069..980f86b 100644
--- a/fusl/src/thread/pthread_rwlockattr_init.c
+++ b/fusl/src/thread/pthread_rwlockattr_init.c
@@ -1,7 +1,6 @@
 #include "pthread_impl.h"
 
-int pthread_rwlockattr_init(pthread_rwlockattr_t *a)
-{
-	*a = (pthread_rwlockattr_t){0};
-	return 0;
+int pthread_rwlockattr_init(pthread_rwlockattr_t* a) {
+  *a = (pthread_rwlockattr_t){0};
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_rwlockattr_setpshared.c b/fusl/src/thread/pthread_rwlockattr_setpshared.c
index e706197..a7249de 100644
--- a/fusl/src/thread/pthread_rwlockattr_setpshared.c
+++ b/fusl/src/thread/pthread_rwlockattr_setpshared.c
@@ -1,8 +1,8 @@
 #include "pthread_impl.h"
 
-int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *a, int pshared)
-{
-	if (pshared > 1U) return EINVAL;
-	a->__attr[0] = pshared;
-	return 0;
+int pthread_rwlockattr_setpshared(pthread_rwlockattr_t* a, int pshared) {
+  if (pshared > 1U)
+    return EINVAL;
+  a->__attr[0] = pshared;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_self.c b/fusl/src/thread/pthread_self.c
index 241a620..9c05904 100644
--- a/fusl/src/thread/pthread_self.c
+++ b/fusl/src/thread/pthread_self.c
@@ -2,9 +2,8 @@
 #include <threads.h>
 #include "libc.h"
 
-static pthread_t __pthread_self_internal()
-{
-	return __pthread_self();
+static pthread_t __pthread_self_internal() {
+  return __pthread_self();
 }
 
 weak_alias(__pthread_self_internal, pthread_self);
diff --git a/fusl/src/thread/pthread_setcancelstate.c b/fusl/src/thread/pthread_setcancelstate.c
index 5ab8c33..826ebad 100644
--- a/fusl/src/thread/pthread_setcancelstate.c
+++ b/fusl/src/thread/pthread_setcancelstate.c
@@ -1,12 +1,13 @@
 #include "pthread_impl.h"
 
-int __pthread_setcancelstate(int new, int *old)
-{
-	if (new > 2U) return EINVAL;
-	struct pthread *self = __pthread_self();
-	if (old) *old = self->canceldisable;
-	self->canceldisable = new;
-	return 0;
+int __pthread_setcancelstate(int new, int* old) {
+  if (new > 2U)
+    return EINVAL;
+  struct pthread* self = __pthread_self();
+  if (old)
+    *old = self->canceldisable;
+  self->canceldisable = new;
+  return 0;
 }
 
 weak_alias(__pthread_setcancelstate, pthread_setcancelstate);
diff --git a/fusl/src/thread/pthread_setcanceltype.c b/fusl/src/thread/pthread_setcanceltype.c
index bf0a3f3..d3fb8bd 100644
--- a/fusl/src/thread/pthread_setcanceltype.c
+++ b/fusl/src/thread/pthread_setcanceltype.c
@@ -1,11 +1,13 @@
 #include "pthread_impl.h"
 
-int pthread_setcanceltype(int new, int *old)
-{
-	struct pthread *self = __pthread_self();
-	if (new > 1U) return EINVAL;
-	if (old) *old = self->cancelasync;
-	self->cancelasync = new;
-	if (new) pthread_testcancel();
-	return 0;
+int pthread_setcanceltype(int new, int* old) {
+  struct pthread* self = __pthread_self();
+  if (new > 1U)
+    return EINVAL;
+  if (old)
+    *old = self->cancelasync;
+  self->cancelasync = new;
+  if (new)
+    pthread_testcancel();
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_setconcurrency.c b/fusl/src/thread/pthread_setconcurrency.c
index 091abf9..de329f9 100644
--- a/fusl/src/thread/pthread_setconcurrency.c
+++ b/fusl/src/thread/pthread_setconcurrency.c
@@ -1,9 +1,10 @@
 #include <pthread.h>
 #include <errno.h>
 
-int pthread_setconcurrency(int val)
-{
-	if (val < 0) return EINVAL;
-	if (val > 0) return EAGAIN;
-	return 0;
+int pthread_setconcurrency(int val) {
+  if (val < 0)
+    return EINVAL;
+  if (val > 0)
+    return EAGAIN;
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_setschedparam.c b/fusl/src/thread/pthread_setschedparam.c
index c4738d6..bc3702b 100644
--- a/fusl/src/thread/pthread_setschedparam.c
+++ b/fusl/src/thread/pthread_setschedparam.c
@@ -1,10 +1,12 @@
 #include "pthread_impl.h"
 
-int pthread_setschedparam(pthread_t t, int policy, const struct sched_param *param)
-{
-	int r;
-	__lock(t->killlock);
-	r = t->dead ? ESRCH : -__syscall(SYS_sched_setscheduler, t->tid, policy, param);
-	__unlock(t->killlock);
-	return r;
+int pthread_setschedparam(pthread_t t,
+                          int policy,
+                          const struct sched_param* param) {
+  int r;
+  __lock(t->killlock);
+  r = t->dead ? ESRCH
+              : -__syscall(SYS_sched_setscheduler, t->tid, policy, param);
+  __unlock(t->killlock);
+  return r;
 }
diff --git a/fusl/src/thread/pthread_setschedprio.c b/fusl/src/thread/pthread_setschedprio.c
index e0bdc03..4f9f9f7 100644
--- a/fusl/src/thread/pthread_setschedprio.c
+++ b/fusl/src/thread/pthread_setschedprio.c
@@ -1,10 +1,9 @@
 #include "pthread_impl.h"
 
-int pthread_setschedprio(pthread_t t, int prio)
-{
-	int r;
-	__lock(t->killlock);
-	r = t->dead ? ESRCH : -__syscall(SYS_sched_setparam, t->tid, &prio);
-	__unlock(t->killlock);
-	return r;
+int pthread_setschedprio(pthread_t t, int prio) {
+  int r;
+  __lock(t->killlock);
+  r = t->dead ? ESRCH : -__syscall(SYS_sched_setparam, t->tid, &prio);
+  __unlock(t->killlock);
+  return r;
 }
diff --git a/fusl/src/thread/pthread_setspecific.c b/fusl/src/thread/pthread_setspecific.c
index 55e46a8..720495d 100644
--- a/fusl/src/thread/pthread_setspecific.c
+++ b/fusl/src/thread/pthread_setspecific.c
@@ -1,12 +1,11 @@
 #include "pthread_impl.h"
 
-int pthread_setspecific(pthread_key_t k, const void *x)
-{
-	struct pthread *self = __pthread_self();
-	/* Avoid unnecessary COW */
-	if (self->tsd[k] != x) {
-		self->tsd[k] = (void *)x;
-		self->tsd_used = 1;
-	}
-	return 0;
+int pthread_setspecific(pthread_key_t k, const void* x) {
+  struct pthread* self = __pthread_self();
+  /* Avoid unnecessary COW */
+  if (self->tsd[k] != x) {
+    self->tsd[k] = (void*)x;
+    self->tsd_used = 1;
+  }
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_sigmask.c b/fusl/src/thread/pthread_sigmask.c
index 88c333f..eb82c60 100644
--- a/fusl/src/thread/pthread_sigmask.c
+++ b/fusl/src/thread/pthread_sigmask.c
@@ -2,18 +2,20 @@
 #include <errno.h>
 #include "syscall.h"
 
-int pthread_sigmask(int how, const sigset_t *restrict set, sigset_t *restrict old)
-{
-	int ret;
-	if ((unsigned)how - SIG_BLOCK > 2U) return EINVAL;
-	ret = -__syscall(SYS_rt_sigprocmask, how, set, old, _NSIG/8);
-	if (!ret && old) {
-		if (sizeof old->__bits[0] == 8) {
-			old->__bits[0] &= ~0x380000000ULL;
-		} else {
-			old->__bits[0] &= ~0x80000000UL;
-			old->__bits[1] &= ~0x3UL;
-		}
-	}
-	return ret;
+int pthread_sigmask(int how,
+                    const sigset_t* restrict set,
+                    sigset_t* restrict old) {
+  int ret;
+  if ((unsigned)how - SIG_BLOCK > 2U)
+    return EINVAL;
+  ret = -__syscall(SYS_rt_sigprocmask, how, set, old, _NSIG / 8);
+  if (!ret && old) {
+    if (sizeof old->__bits[0] == 8) {
+      old->__bits[0] &= ~0x380000000ULL;
+    } else {
+      old->__bits[0] &= ~0x80000000UL;
+      old->__bits[1] &= ~0x3UL;
+    }
+  }
+  return ret;
 }
diff --git a/fusl/src/thread/pthread_spin_destroy.c b/fusl/src/thread/pthread_spin_destroy.c
index e65a820..fef004f 100644
--- a/fusl/src/thread/pthread_spin_destroy.c
+++ b/fusl/src/thread/pthread_spin_destroy.c
@@ -1,6 +1,5 @@
 #include "pthread_impl.h"
 
-int pthread_spin_destroy(pthread_spinlock_t *s)
-{
-	return 0;
+int pthread_spin_destroy(pthread_spinlock_t* s) {
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_spin_init.c b/fusl/src/thread/pthread_spin_init.c
index 681881c..fc0c9aa 100644
--- a/fusl/src/thread/pthread_spin_init.c
+++ b/fusl/src/thread/pthread_spin_init.c
@@ -1,6 +1,5 @@
 #include "pthread_impl.h"
 
-int pthread_spin_init(pthread_spinlock_t *s, int shared)
-{
-	return *s = 0;
+int pthread_spin_init(pthread_spinlock_t* s, int shared) {
+  return *s = 0;
 }
diff --git a/fusl/src/thread/pthread_spin_lock.c b/fusl/src/thread/pthread_spin_lock.c
index ded2b65..761941d 100644
--- a/fusl/src/thread/pthread_spin_lock.c
+++ b/fusl/src/thread/pthread_spin_lock.c
@@ -1,8 +1,8 @@
 #include "pthread_impl.h"
 #include <errno.h>
 
-int pthread_spin_lock(pthread_spinlock_t *s)
-{
-	while (*(volatile int *)s || a_cas(s, 0, EBUSY)) a_spin();
-	return 0;
+int pthread_spin_lock(pthread_spinlock_t* s) {
+  while (*(volatile int*)s || a_cas(s, 0, EBUSY))
+    a_spin();
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_spin_trylock.c b/fusl/src/thread/pthread_spin_trylock.c
index 5284fda..c521e80 100644
--- a/fusl/src/thread/pthread_spin_trylock.c
+++ b/fusl/src/thread/pthread_spin_trylock.c
@@ -1,7 +1,6 @@
 #include "pthread_impl.h"
 #include <errno.h>
 
-int pthread_spin_trylock(pthread_spinlock_t *s)
-{
-	return a_cas(s, 0, EBUSY);
+int pthread_spin_trylock(pthread_spinlock_t* s) {
+  return a_cas(s, 0, EBUSY);
 }
diff --git a/fusl/src/thread/pthread_spin_unlock.c b/fusl/src/thread/pthread_spin_unlock.c
index 724d9e0..3d34efd 100644
--- a/fusl/src/thread/pthread_spin_unlock.c
+++ b/fusl/src/thread/pthread_spin_unlock.c
@@ -1,7 +1,6 @@
 #include "pthread_impl.h"
 
-int pthread_spin_unlock(pthread_spinlock_t *s)
-{
-	a_store(s, 0);
-	return 0;
+int pthread_spin_unlock(pthread_spinlock_t* s) {
+  a_store(s, 0);
+  return 0;
 }
diff --git a/fusl/src/thread/pthread_testcancel.c b/fusl/src/thread/pthread_testcancel.c
index ee48e6d..cc92b28 100644
--- a/fusl/src/thread/pthread_testcancel.c
+++ b/fusl/src/thread/pthread_testcancel.c
@@ -1,15 +1,12 @@
 #include "pthread_impl.h"
 #include "libc.h"
 
-static void dummy()
-{
-}
+static void dummy() {}
 
 weak_alias(dummy, __testcancel);
 
-void __pthread_testcancel()
-{
-	__testcancel();
+void __pthread_testcancel() {
+  __testcancel();
 }
 
 weak_alias(__pthread_testcancel, pthread_testcancel);
diff --git a/fusl/src/thread/sem_destroy.c b/fusl/src/thread/sem_destroy.c
index f4aced5..9cf8fcd 100644
--- a/fusl/src/thread/sem_destroy.c
+++ b/fusl/src/thread/sem_destroy.c
@@ -1,6 +1,5 @@
 #include <semaphore.h>
 
-int sem_destroy(sem_t *sem)
-{
-	return 0;
+int sem_destroy(sem_t* sem) {
+  return 0;
 }
diff --git a/fusl/src/thread/sem_getvalue.c b/fusl/src/thread/sem_getvalue.c
index d9d8307..94e0e2b 100644
--- a/fusl/src/thread/sem_getvalue.c
+++ b/fusl/src/thread/sem_getvalue.c
@@ -1,8 +1,7 @@
 #include <semaphore.h>
 
-int sem_getvalue(sem_t *restrict sem, int *restrict valp)
-{
-	int val = sem->__val[0];
-	*valp = val < 0 ? 0 : val;
-	return 0;
+int sem_getvalue(sem_t* restrict sem, int* restrict valp) {
+  int val = sem->__val[0];
+  *valp = val < 0 ? 0 : val;
+  return 0;
 }
diff --git a/fusl/src/thread/sem_init.c b/fusl/src/thread/sem_init.c
index 5509243..45b2ed7 100644
--- a/fusl/src/thread/sem_init.c
+++ b/fusl/src/thread/sem_init.c
@@ -2,14 +2,13 @@
 #include <limits.h>
 #include <errno.h>
 
-int sem_init(sem_t *sem, int pshared, unsigned value)
-{
-	if (value > SEM_VALUE_MAX) {
-		errno = EINVAL;
-		return -1;
-	}
-	sem->__val[0] = value;
-	sem->__val[1] = 0;
-	sem->__val[2] = pshared ? 0 : 128;
-	return 0;
+int sem_init(sem_t* sem, int pshared, unsigned value) {
+  if (value > SEM_VALUE_MAX) {
+    errno = EINVAL;
+    return -1;
+  }
+  sem->__val[0] = value;
+  sem->__val[1] = 0;
+  sem->__val[2] = pshared ? 0 : 128;
+  return 0;
 }
diff --git a/fusl/src/thread/sem_open.c b/fusl/src/thread/sem_open.c
index fda0acd..f8ce96a 100644
--- a/fusl/src/thread/sem_open.c
+++ b/fusl/src/thread/sem_open.c
@@ -13,163 +13,169 @@
 #include <pthread.h>
 #include "libc.h"
 
-char *__shm_mapname(const char *, char *);
+char* __shm_mapname(const char*, char*);
 
 static struct {
-	ino_t ino;
-	sem_t *sem;
-	int refcnt;
-} *semtab;
+  ino_t ino;
+  sem_t* sem;
+  int refcnt;
+} * semtab;
 static volatile int lock[2];
 
-#define FLAGS (O_RDWR|O_NOFOLLOW|O_CLOEXEC|O_NONBLOCK)
+#define FLAGS (O_RDWR | O_NOFOLLOW | O_CLOEXEC | O_NONBLOCK)
 
-sem_t *sem_open(const char *name, int flags, ...)
-{
-	va_list ap;
-	mode_t mode;
-	unsigned value;
-	int fd, i, e, slot, first=1, cnt, cs;
-	sem_t newsem;
-	void *map;
-	char tmp[64];
-	struct timespec ts;
-	struct stat st;
-	char buf[NAME_MAX+10];
+sem_t* sem_open(const char* name, int flags, ...) {
+  va_list ap;
+  mode_t mode;
+  unsigned value;
+  int fd, i, e, slot, first = 1, cnt, cs;
+  sem_t newsem;
+  void* map;
+  char tmp[64];
+  struct timespec ts;
+  struct stat st;
+  char buf[NAME_MAX + 10];
 
-	if (!(name = __shm_mapname(name, buf)))
-		return SEM_FAILED;
+  if (!(name = __shm_mapname(name, buf)))
+    return SEM_FAILED;
 
-	LOCK(lock);
-	/* Allocate table if we don't have one yet */
-	if (!semtab && !(semtab = calloc(sizeof *semtab, SEM_NSEMS_MAX))) {
-		UNLOCK(lock);
-		return SEM_FAILED;
-	}
+  LOCK(lock);
+  /* Allocate table if we don't have one yet */
+  if (!semtab && !(semtab = calloc(sizeof *semtab, SEM_NSEMS_MAX))) {
+    UNLOCK(lock);
+    return SEM_FAILED;
+  }
 
-	/* Reserve a slot in case this semaphore is not mapped yet;
-	 * this is necessary because there is no way to handle
-	 * failures after creation of the file. */
-	slot = -1;
-	for (cnt=i=0; i<SEM_NSEMS_MAX; i++) {
-		cnt += semtab[i].refcnt;
-		if (!semtab[i].sem && slot < 0) slot = i;
-	}
-	/* Avoid possibility of overflow later */
-	if (cnt == INT_MAX || slot < 0) {
-		errno = EMFILE;
-		UNLOCK(lock);
-		return SEM_FAILED;
-	}
-	/* Dummy pointer to make a reservation */
-	semtab[slot].sem = (sem_t *)-1;
-	UNLOCK(lock);
+  /* Reserve a slot in case this semaphore is not mapped yet;
+   * this is necessary because there is no way to handle
+   * failures after creation of the file. */
+  slot = -1;
+  for (cnt = i = 0; i < SEM_NSEMS_MAX; i++) {
+    cnt += semtab[i].refcnt;
+    if (!semtab[i].sem && slot < 0)
+      slot = i;
+  }
+  /* Avoid possibility of overflow later */
+  if (cnt == INT_MAX || slot < 0) {
+    errno = EMFILE;
+    UNLOCK(lock);
+    return SEM_FAILED;
+  }
+  /* Dummy pointer to make a reservation */
+  semtab[slot].sem = (sem_t*)-1;
+  UNLOCK(lock);
 
-	flags &= (O_CREAT|O_EXCL);
+  flags &= (O_CREAT | O_EXCL);
 
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
 
-	/* Early failure check for exclusive open; otherwise the case
-	 * where the semaphore already exists is expensive. */
-	if (flags == (O_CREAT|O_EXCL) && access(name, F_OK) == 0) {
-		errno = EEXIST;
-		goto fail;
-	}
+  /* Early failure check for exclusive open; otherwise the case
+   * where the semaphore already exists is expensive. */
+  if (flags == (O_CREAT | O_EXCL) && access(name, F_OK) == 0) {
+    errno = EEXIST;
+    goto fail;
+  }
 
-	for (;;) {
-		/* If exclusive mode is not requested, try opening an
-		 * existing file first and fall back to creation. */
-		if (flags != (O_CREAT|O_EXCL)) {
-			fd = open(name, FLAGS);
-			if (fd >= 0) {
-				if (fstat(fd, &st) < 0 ||
-				    (map = mmap(0, sizeof(sem_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED) {
-					close(fd);
-					goto fail;
-				}
-				close(fd);
-				break;
-			}
-			if (errno != ENOENT)
-				goto fail;
-		}
-		if (!(flags & O_CREAT))
-			goto fail;
-		if (first) {
-			first = 0;
-			va_start(ap, flags);
-			mode = va_arg(ap, mode_t) & 0666;
-			value = va_arg(ap, unsigned);
-			va_end(ap);
-			if (value > SEM_VALUE_MAX) {
-				errno = EINVAL;
-				goto fail;
-			}
-			sem_init(&newsem, 1, value);
-		}
-		/* Create a temp file with the new semaphore contents
-		 * and attempt to atomically link it as the new name */
-		clock_gettime(CLOCK_REALTIME, &ts);
-		snprintf(tmp, sizeof(tmp), "/dev/shm/tmp-%d", (int)ts.tv_nsec);
-		fd = open(tmp, O_CREAT|O_EXCL|FLAGS, mode);
-		if (fd < 0) {
-			if (errno == EEXIST) continue;
-			goto fail;
-		}
-		if (write(fd, &newsem, sizeof newsem) != sizeof newsem || fstat(fd, &st) < 0 ||
-		    (map = mmap(0, sizeof(sem_t), PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0)) == MAP_FAILED) {
-			close(fd);
-			unlink(tmp);
-			goto fail;
-		}
-		close(fd);
-		e = link(tmp, name) ? errno : 0;
-		unlink(tmp);
-		if (!e) break;
-		munmap(map, sizeof(sem_t));
-		/* Failure is only fatal when doing an exclusive open;
-		 * otherwise, next iteration will try to open the
-		 * existing file. */
-		if (e != EEXIST || flags == (O_CREAT|O_EXCL))
-			goto fail;
-	}
+  for (;;) {
+    /* If exclusive mode is not requested, try opening an
+     * existing file first and fall back to creation. */
+    if (flags != (O_CREAT | O_EXCL)) {
+      fd = open(name, FLAGS);
+      if (fd >= 0) {
+        if (fstat(fd, &st) < 0 ||
+            (map = mmap(0, sizeof(sem_t), PROT_READ | PROT_WRITE, MAP_SHARED,
+                        fd, 0)) == MAP_FAILED) {
+          close(fd);
+          goto fail;
+        }
+        close(fd);
+        break;
+      }
+      if (errno != ENOENT)
+        goto fail;
+    }
+    if (!(flags & O_CREAT))
+      goto fail;
+    if (first) {
+      first = 0;
+      va_start(ap, flags);
+      mode = va_arg(ap, mode_t) & 0666;
+      value = va_arg(ap, unsigned);
+      va_end(ap);
+      if (value > SEM_VALUE_MAX) {
+        errno = EINVAL;
+        goto fail;
+      }
+      sem_init(&newsem, 1, value);
+    }
+    /* Create a temp file with the new semaphore contents
+     * and attempt to atomically link it as the new name */
+    clock_gettime(CLOCK_REALTIME, &ts);
+    snprintf(tmp, sizeof(tmp), "/dev/shm/tmp-%d", (int)ts.tv_nsec);
+    fd = open(tmp, O_CREAT | O_EXCL | FLAGS, mode);
+    if (fd < 0) {
+      if (errno == EEXIST)
+        continue;
+      goto fail;
+    }
+    if (write(fd, &newsem, sizeof newsem) != sizeof newsem ||
+        fstat(fd, &st) < 0 ||
+        (map = mmap(0, sizeof(sem_t), PROT_READ | PROT_WRITE, MAP_SHARED, fd,
+                    0)) == MAP_FAILED) {
+      close(fd);
+      unlink(tmp);
+      goto fail;
+    }
+    close(fd);
+    e = link(tmp, name) ? errno : 0;
+    unlink(tmp);
+    if (!e)
+      break;
+    munmap(map, sizeof(sem_t));
+    /* Failure is only fatal when doing an exclusive open;
+     * otherwise, next iteration will try to open the
+     * existing file. */
+    if (e != EEXIST || flags == (O_CREAT | O_EXCL))
+      goto fail;
+  }
 
-	/* See if the newly mapped semaphore is already mapped. If
-	 * so, unmap the new mapping and use the existing one. Otherwise,
-	 * add it to the table of mapped semaphores. */
-	LOCK(lock);
-	for (i=0; i<SEM_NSEMS_MAX && semtab[i].ino != st.st_ino; i++);
-	if (i<SEM_NSEMS_MAX) {
-		munmap(map, sizeof(sem_t));
-		semtab[slot].sem = 0;
-		slot = i;
-		map = semtab[i].sem;
-	}
-	semtab[slot].refcnt++;
-	semtab[slot].sem = map;
-	semtab[slot].ino = st.st_ino;
-	UNLOCK(lock);
-	pthread_setcancelstate(cs, 0);
-	return map;
+  /* See if the newly mapped semaphore is already mapped. If
+   * so, unmap the new mapping and use the existing one. Otherwise,
+   * add it to the table of mapped semaphores. */
+  LOCK(lock);
+  for (i = 0; i < SEM_NSEMS_MAX && semtab[i].ino != st.st_ino; i++)
+    ;
+  if (i < SEM_NSEMS_MAX) {
+    munmap(map, sizeof(sem_t));
+    semtab[slot].sem = 0;
+    slot = i;
+    map = semtab[i].sem;
+  }
+  semtab[slot].refcnt++;
+  semtab[slot].sem = map;
+  semtab[slot].ino = st.st_ino;
+  UNLOCK(lock);
+  pthread_setcancelstate(cs, 0);
+  return map;
 
 fail:
-	pthread_setcancelstate(cs, 0);
-	LOCK(lock);
-	semtab[slot].sem = 0;
-	UNLOCK(lock);
-	return SEM_FAILED;
+  pthread_setcancelstate(cs, 0);
+  LOCK(lock);
+  semtab[slot].sem = 0;
+  UNLOCK(lock);
+  return SEM_FAILED;
 }
 
-int sem_close(sem_t *sem)
-{
-	int i;
-	LOCK(lock);
-	for (i=0; i<SEM_NSEMS_MAX && semtab[i].sem != sem; i++);
-	if (!--semtab[i].refcnt) {
-		semtab[i].sem = 0;
-		semtab[i].ino = 0;
-	}
-	UNLOCK(lock);
-	munmap(sem, sizeof *sem);
-	return 0;
+int sem_close(sem_t* sem) {
+  int i;
+  LOCK(lock);
+  for (i = 0; i < SEM_NSEMS_MAX && semtab[i].sem != sem; i++)
+    ;
+  if (!--semtab[i].refcnt) {
+    semtab[i].sem = 0;
+    semtab[i].ino = 0;
+  }
+  UNLOCK(lock);
+  munmap(sem, sizeof *sem);
+  return 0;
 }
diff --git a/fusl/src/thread/sem_post.c b/fusl/src/thread/sem_post.c
index 31e3293..b374c51 100644
--- a/fusl/src/thread/sem_post.c
+++ b/fusl/src/thread/sem_post.c
@@ -1,17 +1,17 @@
 #include <semaphore.h>
 #include "pthread_impl.h"
 
-int sem_post(sem_t *sem)
-{
-	int val, waiters, priv = sem->__val[2];
-	do {
-		val = sem->__val[0];
-		waiters = sem->__val[1];
-		if (val == SEM_VALUE_MAX) {
-			errno = EOVERFLOW;
-			return -1;
-		}
-	} while (a_cas(sem->__val, val, val+1+(val<0)) != val);
-	if (val<0 || waiters) __wake(sem->__val, 1, priv);
-	return 0;
+int sem_post(sem_t* sem) {
+  int val, waiters, priv = sem->__val[2];
+  do {
+    val = sem->__val[0];
+    waiters = sem->__val[1];
+    if (val == SEM_VALUE_MAX) {
+      errno = EOVERFLOW;
+      return -1;
+    }
+  } while (a_cas(sem->__val, val, val + 1 + (val < 0)) != val);
+  if (val < 0 || waiters)
+    __wake(sem->__val, 1, priv);
+  return 0;
 }
diff --git a/fusl/src/thread/sem_timedwait.c b/fusl/src/thread/sem_timedwait.c
index 8132eb1..da98b5d 100644
--- a/fusl/src/thread/sem_timedwait.c
+++ b/fusl/src/thread/sem_timedwait.c
@@ -1,31 +1,31 @@
 #include <semaphore.h>
 #include "pthread_impl.h"
 
-static void cleanup(void *p)
-{
-	a_dec(p);
+static void cleanup(void* p) {
+  a_dec(p);
 }
 
-int sem_timedwait(sem_t *restrict sem, const struct timespec *restrict at)
-{
-	pthread_testcancel();
+int sem_timedwait(sem_t* restrict sem, const struct timespec* restrict at) {
+  pthread_testcancel();
 
-	if (!sem_trywait(sem)) return 0;
+  if (!sem_trywait(sem))
+    return 0;
 
-	int spins = 100;
-	while (spins-- && sem->__val[0] <= 0 && !sem->__val[1]) a_spin();
+  int spins = 100;
+  while (spins-- && sem->__val[0] <= 0 && !sem->__val[1])
+    a_spin();
 
-	while (sem_trywait(sem)) {
-		int r;
-		a_inc(sem->__val+1);
-		a_cas(sem->__val, 0, -1);
-		pthread_cleanup_push(cleanup, (void *)(sem->__val+1));
-		r = __timedwait_cp(sem->__val, -1, CLOCK_REALTIME, at, sem->__val[2]);
-		pthread_cleanup_pop(1);
-		if (r && r != EINTR) {
-			errno = r;
-			return -1;
-		}
-	}
-	return 0;
+  while (sem_trywait(sem)) {
+    int r;
+    a_inc(sem->__val + 1);
+    a_cas(sem->__val, 0, -1);
+    pthread_cleanup_push(cleanup, (void*)(sem->__val + 1));
+    r = __timedwait_cp(sem->__val, -1, CLOCK_REALTIME, at, sem->__val[2]);
+    pthread_cleanup_pop(1);
+    if (r && r != EINTR) {
+      errno = r;
+      return -1;
+    }
+  }
+  return 0;
 }
diff --git a/fusl/src/thread/sem_trywait.c b/fusl/src/thread/sem_trywait.c
index 04edf46..98998a6 100644
--- a/fusl/src/thread/sem_trywait.c
+++ b/fusl/src/thread/sem_trywait.c
@@ -1,13 +1,13 @@
 #include <semaphore.h>
 #include "pthread_impl.h"
 
-int sem_trywait(sem_t *sem)
-{
-	int val;
-	while ((val=sem->__val[0]) > 0) {
-		int new = val-1-(val==1 && sem->__val[1]);
-		if (a_cas(sem->__val, val, new)==val) return 0;
-	}
-	errno = EAGAIN;
-	return -1;
+int sem_trywait(sem_t* sem) {
+  int val;
+  while ((val = sem->__val[0]) > 0) {
+    int new = val - 1 - (val == 1 && sem->__val[1]);
+    if (a_cas(sem->__val, val, new) == val)
+      return 0;
+  }
+  errno = EAGAIN;
+  return -1;
 }
diff --git a/fusl/src/thread/sem_unlink.c b/fusl/src/thread/sem_unlink.c
index c06134b..758a7b4 100644
--- a/fusl/src/thread/sem_unlink.c
+++ b/fusl/src/thread/sem_unlink.c
@@ -1,7 +1,6 @@
 #include <semaphore.h>
 #include <sys/mman.h>
 
-int sem_unlink(const char *name)
-{
-	return shm_unlink(name);
+int sem_unlink(const char* name) {
+  return shm_unlink(name);
 }
diff --git a/fusl/src/thread/sem_wait.c b/fusl/src/thread/sem_wait.c
index 264194f..e2ae6a0 100644
--- a/fusl/src/thread/sem_wait.c
+++ b/fusl/src/thread/sem_wait.c
@@ -1,6 +1,5 @@
 #include <semaphore.h>
 
-int sem_wait(sem_t *sem)
-{
-	return sem_timedwait(sem, 0);
+int sem_wait(sem_t* sem) {
+  return sem_timedwait(sem, 0);
 }
diff --git a/fusl/src/thread/synccall.c b/fusl/src/thread/synccall.c
index 000ec4e..1f29b3a 100644
--- a/fusl/src/thread/synccall.c
+++ b/fusl/src/thread/synccall.c
@@ -9,170 +9,179 @@
 #include "../dirent/__dirent.h"
 
 static struct chain {
-	struct chain *next;
-	int tid;
-	sem_t target_sem, caller_sem;
-} *volatile head;
+  struct chain* next;
+  int tid;
+  sem_t target_sem, caller_sem;
+} * volatile head;
 
 static volatile int synccall_lock[2];
 static volatile int target_tid;
-static void (*callback)(void *), *context;
+static void (*callback)(void*), *context;
 static volatile int dummy = 0;
 weak_alias(dummy, __block_new_threads);
 
-static void handler(int sig)
-{
-	struct chain ch;
-	int old_errno = errno;
+static void handler(int sig) {
+  struct chain ch;
+  int old_errno = errno;
 
-	sem_init(&ch.target_sem, 0, 0);
-	sem_init(&ch.caller_sem, 0, 0);
+  sem_init(&ch.target_sem, 0, 0);
+  sem_init(&ch.caller_sem, 0, 0);
 
-	ch.tid = __syscall(SYS_gettid);
+  ch.tid = __syscall(SYS_gettid);
 
-	do ch.next = head;
-	while (a_cas_p(&head, ch.next, &ch) != ch.next);
+  do
+    ch.next = head;
+  while (a_cas_p(&head, ch.next, &ch) != ch.next);
 
-	if (a_cas(&target_tid, ch.tid, 0) == (ch.tid | 0x80000000))
-		__syscall(SYS_futex, &target_tid, FUTEX_UNLOCK_PI|FUTEX_PRIVATE);
+  if (a_cas(&target_tid, ch.tid, 0) == (ch.tid | 0x80000000))
+    __syscall(SYS_futex, &target_tid, FUTEX_UNLOCK_PI | FUTEX_PRIVATE);
 
-	sem_wait(&ch.target_sem);
-	callback(context);
-	sem_post(&ch.caller_sem);
-	sem_wait(&ch.target_sem);
+  sem_wait(&ch.target_sem);
+  callback(context);
+  sem_post(&ch.caller_sem);
+  sem_wait(&ch.target_sem);
 
-	errno = old_errno;
+  errno = old_errno;
 }
 
-void __synccall(void (*func)(void *), void *ctx)
-{
-	sigset_t oldmask;
-	int cs, i, r, pid, self;;
-	DIR dir = {0};
-	struct dirent *de;
-	struct sigaction sa = { .sa_flags = 0, .sa_handler = handler };
-	struct chain *cp, *next;
-	struct timespec ts;
+void __synccall(void (*func)(void*), void* ctx) {
+  sigset_t oldmask;
+  int cs, i, r, pid, self;
+  ;
+  DIR dir = {0};
+  struct dirent* de;
+  struct sigaction sa = {.sa_flags = 0, .sa_handler = handler};
+  struct chain *cp, *next;
+  struct timespec ts;
 
-	/* Blocking signals in two steps, first only app-level signals
-	 * before taking the lock, then all signals after taking the lock,
-	 * is necessary to achieve AS-safety. Blocking them all first would
-	 * deadlock if multiple threads called __synccall. Waiting to block
-	 * any until after the lock would allow re-entry in the same thread
-	 * with the lock already held. */
-	__block_app_sigs(&oldmask);
-	LOCK(synccall_lock);
-	__block_all_sigs(0);
-	pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
+  /* Blocking signals in two steps, first only app-level signals
+   * before taking the lock, then all signals after taking the lock,
+   * is necessary to achieve AS-safety. Blocking them all first would
+   * deadlock if multiple threads called __synccall. Waiting to block
+   * any until after the lock would allow re-entry in the same thread
+   * with the lock already held. */
+  __block_app_sigs(&oldmask);
+  LOCK(synccall_lock);
+  __block_all_sigs(0);
+  pthread_setcancelstate(PTHREAD_CANCEL_DISABLE, &cs);
 
-	head = 0;
+  head = 0;
 
-	if (!libc.threaded) goto single_threaded;
+  if (!libc.threaded)
+    goto single_threaded;
 
-	callback = func;
-	context = ctx;
+  callback = func;
+  context = ctx;
 
-	/* This atomic store ensures that any signaled threads will see the
-	 * above stores, and prevents more than a bounded number of threads,
-	 * those already in pthread_create, from creating new threads until
-	 * the value is cleared to zero again. */
-	a_store(&__block_new_threads, 1);
+  /* This atomic store ensures that any signaled threads will see the
+   * above stores, and prevents more than a bounded number of threads,
+   * those already in pthread_create, from creating new threads until
+   * the value is cleared to zero again. */
+  a_store(&__block_new_threads, 1);
 
-	/* Block even implementation-internal signals, so that nothing
-	 * interrupts the SIGSYNCCALL handlers. The main possible source
-	 * of trouble is asynchronous cancellation. */
-	memset(&sa.sa_mask, -1, sizeof sa.sa_mask);
-	__libc_sigaction(SIGSYNCCALL, &sa, 0);
+  /* Block even implementation-internal signals, so that nothing
+   * interrupts the SIGSYNCCALL handlers. The main possible source
+   * of trouble is asynchronous cancellation. */
+  memset(&sa.sa_mask, -1, sizeof sa.sa_mask);
+  __libc_sigaction(SIGSYNCCALL, &sa, 0);
 
-	pid = __syscall(SYS_getpid);
-	self = __syscall(SYS_gettid);
+  pid = __syscall(SYS_getpid);
+  self = __syscall(SYS_gettid);
 
-	/* Since opendir is not AS-safe, the DIR needs to be setup manually
-	 * in automatic storage. Thankfully this is easy. */
-	dir.fd = open("/proc/self/task", O_RDONLY|O_DIRECTORY|O_CLOEXEC);
-	if (dir.fd < 0) goto out;
+  /* Since opendir is not AS-safe, the DIR needs to be setup manually
+   * in automatic storage. Thankfully this is easy. */
+  dir.fd = open("/proc/self/task", O_RDONLY | O_DIRECTORY | O_CLOEXEC);
+  if (dir.fd < 0)
+    goto out;
 
-	/* Initially send one signal per counted thread. But since we can't
-	 * synchronize with thread creation/exit here, there could be too
-	 * few signals. This initial signaling is just an optimization, not
-	 * part of the logic. */
-	for (i=libc.threads_minus_1; i; i--)
-		__syscall(SYS_kill, pid, SIGSYNCCALL);
+  /* Initially send one signal per counted thread. But since we can't
+   * synchronize with thread creation/exit here, there could be too
+   * few signals. This initial signaling is just an optimization, not
+   * part of the logic. */
+  for (i = libc.threads_minus_1; i; i--)
+    __syscall(SYS_kill, pid, SIGSYNCCALL);
 
-	/* Loop scanning the kernel-provided thread list until it shows no
-	 * threads that have not already replied to the signal. */
-	for (;;) {
-		int miss_cnt = 0;
-		while ((de = readdir(&dir))) {
-			if (!isdigit(de->d_name[0])) continue;
-			int tid = atoi(de->d_name);
-			if (tid == self || !tid) continue;
+  /* Loop scanning the kernel-provided thread list until it shows no
+   * threads that have not already replied to the signal. */
+  for (;;) {
+    int miss_cnt = 0;
+    while ((de = readdir(&dir))) {
+      if (!isdigit(de->d_name[0]))
+        continue;
+      int tid = atoi(de->d_name);
+      if (tid == self || !tid)
+        continue;
 
-			/* Set the target thread as the PI futex owner before
-			 * checking if it's in the list of caught threads. If it
-			 * adds itself to the list after we check for it, then
-			 * it will see its own tid in the PI futex and perform
-			 * the unlock operation. */
-			a_store(&target_tid, tid);
+      /* Set the target thread as the PI futex owner before
+       * checking if it's in the list of caught threads. If it
+       * adds itself to the list after we check for it, then
+       * it will see its own tid in the PI futex and perform
+       * the unlock operation. */
+      a_store(&target_tid, tid);
 
-			/* Thread-already-caught is a success condition. */
-			for (cp = head; cp && cp->tid != tid; cp=cp->next);
-			if (cp) continue;
+      /* Thread-already-caught is a success condition. */
+      for (cp = head; cp && cp->tid != tid; cp = cp->next)
+        ;
+      if (cp)
+        continue;
 
-			r = -__syscall(SYS_tgkill, pid, tid, SIGSYNCCALL);
+      r = -__syscall(SYS_tgkill, pid, tid, SIGSYNCCALL);
 
-			/* Target thread exit is a success condition. */
-			if (r == ESRCH) continue;
+      /* Target thread exit is a success condition. */
+      if (r == ESRCH)
+        continue;
 
-			/* The FUTEX_LOCK_PI operation is used to loan priority
-			 * to the target thread, which otherwise may be unable
-			 * to run. Timeout is necessary because there is a race
-			 * condition where the tid may be reused by a different
-			 * process. */
-			clock_gettime(CLOCK_REALTIME, &ts);
-			ts.tv_nsec += 10000000;
-			if (ts.tv_nsec >= 1000000000) {
-				ts.tv_sec++;
-				ts.tv_nsec -= 1000000000;
-			}
-			r = -__syscall(SYS_futex, &target_tid,
-				FUTEX_LOCK_PI|FUTEX_PRIVATE, 0, &ts);
+      /* The FUTEX_LOCK_PI operation is used to loan priority
+       * to the target thread, which otherwise may be unable
+       * to run. Timeout is necessary because there is a race
+       * condition where the tid may be reused by a different
+       * process. */
+      clock_gettime(CLOCK_REALTIME, &ts);
+      ts.tv_nsec += 10000000;
+      if (ts.tv_nsec >= 1000000000) {
+        ts.tv_sec++;
+        ts.tv_nsec -= 1000000000;
+      }
+      r = -__syscall(SYS_futex, &target_tid, FUTEX_LOCK_PI | FUTEX_PRIVATE, 0,
+                     &ts);
 
-			/* Obtaining the lock means the thread responded. ESRCH
-			 * means the target thread exited, which is okay too. */
-			if (!r || r == ESRCH) continue;
+      /* Obtaining the lock means the thread responded. ESRCH
+       * means the target thread exited, which is okay too. */
+      if (!r || r == ESRCH)
+        continue;
 
-			miss_cnt++;
-		}
-		if (!miss_cnt) break;
-		rewinddir(&dir);
-	}
-	close(dir.fd);
+      miss_cnt++;
+    }
+    if (!miss_cnt)
+      break;
+    rewinddir(&dir);
+  }
+  close(dir.fd);
 
-	/* Serialize execution of callback in caught threads. */
-	for (cp=head; cp; cp=cp->next) {
-		sem_post(&cp->target_sem);
-		sem_wait(&cp->caller_sem);
-	}
+  /* Serialize execution of callback in caught threads. */
+  for (cp = head; cp; cp = cp->next) {
+    sem_post(&cp->target_sem);
+    sem_wait(&cp->caller_sem);
+  }
 
-	sa.sa_handler = SIG_IGN;
-	__libc_sigaction(SIGSYNCCALL, &sa, 0);
+  sa.sa_handler = SIG_IGN;
+  __libc_sigaction(SIGSYNCCALL, &sa, 0);
 
 single_threaded:
-	func(ctx);
+  func(ctx);
 
-	/* Only release the caught threads once all threads, including the
-	 * caller, have returned from the callback function. */
-	for (cp=head; cp; cp=next) {
-		next = cp->next;
-		sem_post(&cp->target_sem);
-	}
+  /* Only release the caught threads once all threads, including the
+   * caller, have returned from the callback function. */
+  for (cp = head; cp; cp = next) {
+    next = cp->next;
+    sem_post(&cp->target_sem);
+  }
 
 out:
-	a_store(&__block_new_threads, 0);
-	__wake(&__block_new_threads, -1, 1);
+  a_store(&__block_new_threads, 0);
+  __wake(&__block_new_threads, -1, 1);
 
-	pthread_setcancelstate(cs, 0);
-	UNLOCK(synccall_lock);
-	__restore_sigs(&oldmask);
+  pthread_setcancelstate(cs, 0);
+  UNLOCK(synccall_lock);
+  __restore_sigs(&oldmask);
 }
diff --git a/fusl/src/thread/thrd_create.c b/fusl/src/thread/thrd_create.c
index e033669..b8f604d 100644
--- a/fusl/src/thread/thrd_create.c
+++ b/fusl/src/thread/thrd_create.c
@@ -1,14 +1,20 @@
 #include "pthread_impl.h"
 #include <threads.h>
 
-int __pthread_create(pthread_t *restrict, const pthread_attr_t *restrict, void *(*)(void *), void *restrict);
+int __pthread_create(pthread_t* restrict,
+                     const pthread_attr_t* restrict,
+                     void* (*)(void*),
+                     void* restrict);
 
-int thrd_create(thrd_t *thr, thrd_start_t func, void *arg)
-{
-	int ret = __pthread_create(thr, __ATTRP_C11_THREAD, (void *(*)(void *))func, arg);
-	switch (ret) {
-	case 0:      return thrd_success;
-	case EAGAIN: return thrd_nomem;
-	default:     return thrd_error;
-	}
+int thrd_create(thrd_t* thr, thrd_start_t func, void* arg) {
+  int ret =
+      __pthread_create(thr, __ATTRP_C11_THREAD, (void* (*)(void*))func, arg);
+  switch (ret) {
+    case 0:
+      return thrd_success;
+    case EAGAIN:
+      return thrd_nomem;
+    default:
+      return thrd_error;
+  }
 }
diff --git a/fusl/src/thread/thrd_exit.c b/fusl/src/thread/thrd_exit.c
index b66bd99..e254a5f 100644
--- a/fusl/src/thread/thrd_exit.c
+++ b/fusl/src/thread/thrd_exit.c
@@ -1,9 +1,8 @@
 #include "pthread_impl.h"
 #include <threads.h>
 
-_Noreturn void __pthread_exit(void *);
+_Noreturn void __pthread_exit(void*);
 
-_Noreturn void thrd_exit(int result)
-{
-	__pthread_exit((void*)(intptr_t)result);
+_Noreturn void thrd_exit(int result) {
+  __pthread_exit((void*)(intptr_t)result);
 }
diff --git a/fusl/src/thread/thrd_join.c b/fusl/src/thread/thrd_join.c
index ac66789..d8270ea 100644
--- a/fusl/src/thread/thrd_join.c
+++ b/fusl/src/thread/thrd_join.c
@@ -3,10 +3,10 @@
 
 int __pthread_join(thrd_t, void**);
 
-int thrd_join(thrd_t t, int *res)
-{
-        void *pthread_res;
-        __pthread_join(t, &pthread_res);
-        if (res) *res = (int)(intptr_t)pthread_res;
-        return thrd_success;
+int thrd_join(thrd_t t, int* res) {
+  void* pthread_res;
+  __pthread_join(t, &pthread_res);
+  if (res)
+    *res = (int)(intptr_t)pthread_res;
+  return thrd_success;
 }
diff --git a/fusl/src/thread/thrd_sleep.c b/fusl/src/thread/thrd_sleep.c
index e8dfe40..f8eedfe 100644
--- a/fusl/src/thread/thrd_sleep.c
+++ b/fusl/src/thread/thrd_sleep.c
@@ -2,12 +2,14 @@
 #include <errno.h>
 #include "syscall.h"
 
-int thrd_sleep(const struct timespec *req, struct timespec *rem)
-{
-	int ret = __syscall(SYS_nanosleep, req, rem);
-	switch (ret) {
-	case 0:      return 0;
-	case -EINTR: return -1; /* value specified by C11 */
-	default:     return -2;
-	}
+int thrd_sleep(const struct timespec* req, struct timespec* rem) {
+  int ret = __syscall(SYS_nanosleep, req, rem);
+  switch (ret) {
+    case 0:
+      return 0;
+    case -EINTR:
+      return -1; /* value specified by C11 */
+    default:
+      return -2;
+  }
 }
diff --git a/fusl/src/thread/thrd_yield.c b/fusl/src/thread/thrd_yield.c
index f7ad132..a4ecf43 100644
--- a/fusl/src/thread/thrd_yield.c
+++ b/fusl/src/thread/thrd_yield.c
@@ -1,7 +1,6 @@
 #include <threads.h>
 #include "syscall.h"
 
-void thrd_yield()
-{
-	__syscall(SYS_sched_yield);
+void thrd_yield() {
+  __syscall(SYS_sched_yield);
 }
diff --git a/fusl/src/thread/tss_create.c b/fusl/src/thread/tss_create.c
index 251d22b..8b4199f 100644
--- a/fusl/src/thread/tss_create.c
+++ b/fusl/src/thread/tss_create.c
@@ -1,11 +1,10 @@
 #include <threads.h>
 
-int __pthread_key_create(tss_t *, void (*)(void *));
+int __pthread_key_create(tss_t*, void (*)(void*));
 
-int tss_create(tss_t *tss, tss_dtor_t dtor)
-{
-	/* Different error returns are possible. C glues them together into
-	 * just failure notification. Can't be optimized to a tail call,
-	 * unless thrd_error equals EAGAIN. */
-	return __pthread_key_create(tss, dtor) ? thrd_error : thrd_success;
+int tss_create(tss_t* tss, tss_dtor_t dtor) {
+  /* Different error returns are possible. C glues them together into
+   * just failure notification. Can't be optimized to a tail call,
+   * unless thrd_error equals EAGAIN. */
+  return __pthread_key_create(tss, dtor) ? thrd_error : thrd_success;
 }
diff --git a/fusl/src/thread/tss_delete.c b/fusl/src/thread/tss_delete.c
index 35db103..9d5a928 100644
--- a/fusl/src/thread/tss_delete.c
+++ b/fusl/src/thread/tss_delete.c
@@ -2,7 +2,6 @@
 
 int __pthread_key_delete(tss_t k);
 
-void tss_delete(tss_t key)
-{
-	__pthread_key_delete(key);
+void tss_delete(tss_t key) {
+  __pthread_key_delete(key);
 }
diff --git a/fusl/src/thread/tss_set.c b/fusl/src/thread/tss_set.c
index 70c4fb7..5a9532a 100644
--- a/fusl/src/thread/tss_set.c
+++ b/fusl/src/thread/tss_set.c
@@ -1,13 +1,12 @@
 #include "pthread_impl.h"
 #include <threads.h>
 
-int tss_set(tss_t k, void *x)
-{
-	struct pthread *self = __pthread_self();
-	/* Avoid unnecessary COW */
-	if (self->tsd[k] != x) {
-		self->tsd[k] = x;
-		self->tsd_used = 1;
-	}
-	return thrd_success;
+int tss_set(tss_t k, void* x) {
+  struct pthread* self = __pthread_self();
+  /* Avoid unnecessary COW */
+  if (self->tsd[k] != x) {
+    self->tsd[k] = x;
+    self->tsd_used = 1;
+  }
+  return thrd_success;
 }
diff --git a/fusl/src/thread/vmlock.c b/fusl/src/thread/vmlock.c
index 75f3cb7..f05fbe0 100644
--- a/fusl/src/thread/vmlock.c
+++ b/fusl/src/thread/vmlock.c
@@ -2,20 +2,17 @@
 
 static volatile int vmlock[2];
 
-void __vm_wait()
-{
-	int tmp;
-	while ((tmp=vmlock[0]))
-		__wait(vmlock, vmlock+1, tmp, 1);
+void __vm_wait() {
+  int tmp;
+  while ((tmp = vmlock[0]))
+    __wait(vmlock, vmlock + 1, tmp, 1);
 }
 
-void __vm_lock()
-{
-	a_inc(vmlock);
+void __vm_lock() {
+  a_inc(vmlock);
 }
 
-void __vm_unlock()
-{
-	if (a_fetch_add(vmlock, -1)==1 && vmlock[1])
-		__wake(vmlock, -1, 1);
+void __vm_unlock() {
+  if (a_fetch_add(vmlock, -1) == 1 && vmlock[1])
+    __wake(vmlock, -1, 1);
 }
diff --git a/fusl/src/thread/x32/syscall_cp_fixup.c b/fusl/src/thread/x32/syscall_cp_fixup.c
index b1f3a38..2688856 100644
--- a/fusl/src/thread/x32/syscall_cp_fixup.c
+++ b/fusl/src/thread/x32/syscall_cp_fixup.c
@@ -1,38 +1,61 @@
 #include <sys/syscall.h>
 
-__attribute__((__visibility__("hidden")))
-long __syscall_cp_internal(volatile void*, long long, long long, long long, long long,
-                             long long, long long, long long);
+__attribute__((__visibility__("hidden"))) long __syscall_cp_internal(
+    volatile void*,
+    long long,
+    long long,
+    long long,
+    long long,
+    long long,
+    long long,
+    long long);
 
-struct __timespec { long long tv_sec; long tv_nsec; };
-struct __timespec_kernel { long long tv_sec; long long tv_nsec; };
+struct __timespec {
+  long long tv_sec;
+  long tv_nsec;
+};
+struct __timespec_kernel {
+  long long tv_sec;
+  long long tv_nsec;
+};
 #define __tsc(X) ((struct __timespec*)(unsigned long)(X))
-#define __fixup(X) do { if(X) { \
-	ts->tv_sec = __tsc(X)->tv_sec; \
-	ts->tv_nsec = __tsc(X)->tv_nsec; \
-	(X) = (unsigned long)ts; } } while(0)
+#define __fixup(X)                     \
+  do {                                 \
+    if (X) {                           \
+      ts->tv_sec = __tsc(X)->tv_sec;   \
+      ts->tv_nsec = __tsc(X)->tv_nsec; \
+      (X) = (unsigned long)ts;         \
+    }                                  \
+  } while (0)
 
-__attribute__((__visibility__("hidden")))
-long __syscall_cp_asm (volatile void * foo, long long n, long long a1, long long a2, long long a3,
-	                     long long a4, long long a5, long long a6)
-{
-	struct __timespec_kernel ts[1];
-	switch (n) {
-	case SYS_mq_timedsend: case SYS_mq_timedreceive: case SYS_pselect6:
-		__fixup(a5);
-		break;
-	case SYS_futex:
-		if((a2 & (~128 /* FUTEX_PRIVATE_FLAG */)) == 0 /* FUTEX_WAIT */)
-			__fixup(a4);
-		break;
-	case SYS_clock_nanosleep:
-	case SYS_rt_sigtimedwait: case SYS_ppoll:
-		__fixup(a3);
-		break;
-	case SYS_nanosleep:
-		__fixup(a1);
-		break;
-	}
-	return __syscall_cp_internal(foo, n, a1, a2, a3, a4, a5, a6);
+__attribute__((__visibility__("hidden"))) long __syscall_cp_asm(
+    volatile void* foo,
+    long long n,
+    long long a1,
+    long long a2,
+    long long a3,
+    long long a4,
+    long long a5,
+    long long a6) {
+  struct __timespec_kernel ts[1];
+  switch (n) {
+    case SYS_mq_timedsend:
+    case SYS_mq_timedreceive:
+    case SYS_pselect6:
+      __fixup(a5);
+      break;
+    case SYS_futex:
+      if ((a2 & (~128 /* FUTEX_PRIVATE_FLAG */)) == 0 /* FUTEX_WAIT */)
+        __fixup(a4);
+      break;
+    case SYS_clock_nanosleep:
+    case SYS_rt_sigtimedwait:
+    case SYS_ppoll:
+      __fixup(a3);
+      break;
+    case SYS_nanosleep:
+      __fixup(a1);
+      break;
+  }
+  return __syscall_cp_internal(foo, n, a1, a2, a3, a4, a5, a6);
 }
-
diff --git a/fusl/src/time/__asctime.c b/fusl/src/time/__asctime.c
index e7e7f07..3651a2e 100644
--- a/fusl/src/time/__asctime.c
+++ b/fusl/src/time/__asctime.c
@@ -3,27 +3,23 @@
 #include <langinfo.h>
 #include "atomic.h"
 
-const char *__nl_langinfo(nl_item);
+const char* __nl_langinfo(nl_item);
 
-char *__asctime(const struct tm *restrict tm, char *restrict buf)
-{
-	/* FIXME: change __nl_langinfo to __nl_langinfo_l with explicit C
-	 * locale once we have locales */
-	if (snprintf(buf, 26, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",
-		__nl_langinfo(ABDAY_1+tm->tm_wday),
-		__nl_langinfo(ABMON_1+tm->tm_mon),
-		tm->tm_mday, tm->tm_hour,
-		tm->tm_min, tm->tm_sec,
-		1900 + tm->tm_year) >= 26)
-	{
-		/* ISO C requires us to use the above format string,
-		 * even if it will not fit in the buffer. Thus asctime_r
-		 * is _supposed_ to crash if the fields in tm are too large.
-		 * We follow this behavior and crash "gracefully" to warn
-		 * application developers that they may not be so lucky
-		 * on other implementations (e.g. stack smashing..).
-		 */
-		a_crash();
-	}
-	return buf;
+char* __asctime(const struct tm* restrict tm, char* restrict buf) {
+  /* FIXME: change __nl_langinfo to __nl_langinfo_l with explicit C
+   * locale once we have locales */
+  if (snprintf(buf, 26, "%.3s %.3s%3d %.2d:%.2d:%.2d %d\n",
+               __nl_langinfo(ABDAY_1 + tm->tm_wday),
+               __nl_langinfo(ABMON_1 + tm->tm_mon), tm->tm_mday, tm->tm_hour,
+               tm->tm_min, tm->tm_sec, 1900 + tm->tm_year) >= 26) {
+    /* ISO C requires us to use the above format string,
+     * even if it will not fit in the buffer. Thus asctime_r
+     * is _supposed_ to crash if the fields in tm are too large.
+     * We follow this behavior and crash "gracefully" to warn
+     * application developers that they may not be so lucky
+     * on other implementations (e.g. stack smashing..).
+     */
+    a_crash();
+  }
+  return buf;
 }
diff --git a/fusl/src/time/__map_file.c b/fusl/src/time/__map_file.c
index b91eb8e..88767a0 100644
--- a/fusl/src/time/__map_file.c
+++ b/fusl/src/time/__map_file.c
@@ -3,18 +3,18 @@
 #include <sys/stat.h>
 #include "syscall.h"
 
-void *__mmap(void *, size_t, int, int, int, off_t);
+void* __mmap(void*, size_t, int, int, int, off_t);
 
-const char unsigned *__map_file(const char *pathname, size_t *size)
-{
-	struct stat st;
-	const unsigned char *map = MAP_FAILED;
-	int fd = __sys_open(pathname, O_RDONLY|O_CLOEXEC|O_NONBLOCK);
-	if (fd < 0) return 0;
-	if (!__syscall(SYS_fstat, fd, &st)) {
-		map = __mmap(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
-		*size = st.st_size;
-	}
-	__syscall(SYS_close, fd);
-	return map == MAP_FAILED ? 0 : map;
+const char unsigned* __map_file(const char* pathname, size_t* size) {
+  struct stat st;
+  const unsigned char* map = MAP_FAILED;
+  int fd = __sys_open(pathname, O_RDONLY | O_CLOEXEC | O_NONBLOCK);
+  if (fd < 0)
+    return 0;
+  if (!__syscall(SYS_fstat, fd, &st)) {
+    map = __mmap(0, st.st_size, PROT_READ, MAP_SHARED, fd, 0);
+    *size = st.st_size;
+  }
+  __syscall(SYS_close, fd);
+  return map == MAP_FAILED ? 0 : map;
 }
diff --git a/fusl/src/time/__month_to_secs.c b/fusl/src/time/__month_to_secs.c
index 43248fb..ffe4133 100644
--- a/fusl/src/time/__month_to_secs.c
+++ b/fusl/src/time/__month_to_secs.c
@@ -1,10 +1,10 @@
-int __month_to_secs(int month, int is_leap)
-{
-	static const int secs_through_month[] = {
-		0, 31*86400, 59*86400, 90*86400,
-		120*86400, 151*86400, 181*86400, 212*86400,
-		243*86400, 273*86400, 304*86400, 334*86400 };
-	int t = secs_through_month[month];
-	if (is_leap && month >= 2) t+=86400;
-	return t;
+int __month_to_secs(int month, int is_leap) {
+  static const int secs_through_month[] = {
+      0,           31 * 86400,  59 * 86400,  90 * 86400,
+      120 * 86400, 151 * 86400, 181 * 86400, 212 * 86400,
+      243 * 86400, 273 * 86400, 304 * 86400, 334 * 86400};
+  int t = secs_through_month[month];
+  if (is_leap && month >= 2)
+    t += 86400;
+  return t;
 }
diff --git a/fusl/src/time/__secs_to_tm.c b/fusl/src/time/__secs_to_tm.c
index 3a3123a..6017b61 100644
--- a/fusl/src/time/__secs_to_tm.c
+++ b/fusl/src/time/__secs_to_tm.c
@@ -2,80 +2,85 @@
 #include <limits.h>
 
 /* 2000-03-01 (mod 400 year, immediately after feb29 */
-#define LEAPOCH (946684800LL + 86400*(31+29))
+#define LEAPOCH (946684800LL + 86400 * (31 + 29))
 
-#define DAYS_PER_400Y (365*400 + 97)
-#define DAYS_PER_100Y (365*100 + 24)
-#define DAYS_PER_4Y   (365*4   + 1)
+#define DAYS_PER_400Y (365 * 400 + 97)
+#define DAYS_PER_100Y (365 * 100 + 24)
+#define DAYS_PER_4Y (365 * 4 + 1)
 
-int __secs_to_tm(long long t, struct tm *tm)
-{
-	long long days, secs, years;
-	int remdays, remsecs, remyears;
-	int qc_cycles, c_cycles, q_cycles;
-	int months;
-	int wday, yday, leap;
-	static const char days_in_month[] = {31,30,31,30,31,31,30,31,30,31,31,29};
+int __secs_to_tm(long long t, struct tm* tm) {
+  long long days, secs, years;
+  int remdays, remsecs, remyears;
+  int qc_cycles, c_cycles, q_cycles;
+  int months;
+  int wday, yday, leap;
+  static const char days_in_month[] = {31, 30, 31, 30, 31, 31,
+                                       30, 31, 30, 31, 31, 29};
 
-	/* Reject time_t values whose year would overflow int */
-	if (t < INT_MIN * 31622400LL || t > INT_MAX * 31622400LL)
-		return -1;
+  /* Reject time_t values whose year would overflow int */
+  if (t < INT_MIN * 31622400LL || t > INT_MAX * 31622400LL)
+    return -1;
 
-	secs = t - LEAPOCH;
-	days = secs / 86400;
-	remsecs = secs % 86400;
-	if (remsecs < 0) {
-		remsecs += 86400;
-		days--;
-	}
+  secs = t - LEAPOCH;
+  days = secs / 86400;
+  remsecs = secs % 86400;
+  if (remsecs < 0) {
+    remsecs += 86400;
+    days--;
+  }
 
-	wday = (3+days)%7;
-	if (wday < 0) wday += 7;
+  wday = (3 + days) % 7;
+  if (wday < 0)
+    wday += 7;
 
-	qc_cycles = days / DAYS_PER_400Y;
-	remdays = days % DAYS_PER_400Y;
-	if (remdays < 0) {
-		remdays += DAYS_PER_400Y;
-		qc_cycles--;
-	}
+  qc_cycles = days / DAYS_PER_400Y;
+  remdays = days % DAYS_PER_400Y;
+  if (remdays < 0) {
+    remdays += DAYS_PER_400Y;
+    qc_cycles--;
+  }
 
-	c_cycles = remdays / DAYS_PER_100Y;
-	if (c_cycles == 4) c_cycles--;
-	remdays -= c_cycles * DAYS_PER_100Y;
+  c_cycles = remdays / DAYS_PER_100Y;
+  if (c_cycles == 4)
+    c_cycles--;
+  remdays -= c_cycles * DAYS_PER_100Y;
 
-	q_cycles = remdays / DAYS_PER_4Y;
-	if (q_cycles == 25) q_cycles--;
-	remdays -= q_cycles * DAYS_PER_4Y;
+  q_cycles = remdays / DAYS_PER_4Y;
+  if (q_cycles == 25)
+    q_cycles--;
+  remdays -= q_cycles * DAYS_PER_4Y;
 
-	remyears = remdays / 365;
-	if (remyears == 4) remyears--;
-	remdays -= remyears * 365;
+  remyears = remdays / 365;
+  if (remyears == 4)
+    remyears--;
+  remdays -= remyears * 365;
 
-	leap = !remyears && (q_cycles || !c_cycles);
-	yday = remdays + 31 + 28 + leap;
-	if (yday >= 365+leap) yday -= 365+leap;
+  leap = !remyears && (q_cycles || !c_cycles);
+  yday = remdays + 31 + 28 + leap;
+  if (yday >= 365 + leap)
+    yday -= 365 + leap;
 
-	years = remyears + 4*q_cycles + 100*c_cycles + 400LL*qc_cycles;
+  years = remyears + 4 * q_cycles + 100 * c_cycles + 400LL * qc_cycles;
 
-	for (months=0; days_in_month[months] <= remdays; months++)
-		remdays -= days_in_month[months];
+  for (months = 0; days_in_month[months] <= remdays; months++)
+    remdays -= days_in_month[months];
 
-	if (years+100 > INT_MAX || years+100 < INT_MIN)
-		return -1;
+  if (years + 100 > INT_MAX || years + 100 < INT_MIN)
+    return -1;
 
-	tm->tm_year = years + 100;
-	tm->tm_mon = months + 2;
-	if (tm->tm_mon >= 12) {
-		tm->tm_mon -=12;
-		tm->tm_year++;
-	}
-	tm->tm_mday = remdays + 1;
-	tm->tm_wday = wday;
-	tm->tm_yday = yday;
+  tm->tm_year = years + 100;
+  tm->tm_mon = months + 2;
+  if (tm->tm_mon >= 12) {
+    tm->tm_mon -= 12;
+    tm->tm_year++;
+  }
+  tm->tm_mday = remdays + 1;
+  tm->tm_wday = wday;
+  tm->tm_yday = yday;
 
-	tm->tm_hour = remsecs / 3600;
-	tm->tm_min = remsecs / 60 % 60;
-	tm->tm_sec = remsecs % 60;
+  tm->tm_hour = remsecs / 3600;
+  tm->tm_min = remsecs / 60 % 60;
+  tm->tm_sec = remsecs % 60;
 
-	return 0;
+  return 0;
 }
diff --git a/fusl/src/time/__tm_to_secs.c b/fusl/src/time/__tm_to_secs.c
index c29fa98..d3d06c1 100644
--- a/fusl/src/time/__tm_to_secs.c
+++ b/fusl/src/time/__tm_to_secs.c
@@ -1,24 +1,23 @@
 #include "time_impl.h"
 
-long long __tm_to_secs(const struct tm *tm)
-{
-	int is_leap;
-	long long year = tm->tm_year;
-	int month = tm->tm_mon;
-	if (month >= 12 || month < 0) {
-		int adj = month / 12;
-		month %= 12;
-		if (month < 0) {
-			adj--;
-			month += 12;
-		}
-		year += adj;
-	}
-	long long t = __year_to_secs(year, &is_leap);
-	t += __month_to_secs(month, is_leap);
-	t += 86400LL * (tm->tm_mday-1);
-	t += 3600LL * tm->tm_hour;
-	t += 60LL * tm->tm_min;
-	t += tm->tm_sec;
-	return t;
+long long __tm_to_secs(const struct tm* tm) {
+  int is_leap;
+  long long year = tm->tm_year;
+  int month = tm->tm_mon;
+  if (month >= 12 || month < 0) {
+    int adj = month / 12;
+    month %= 12;
+    if (month < 0) {
+      adj--;
+      month += 12;
+    }
+    year += adj;
+  }
+  long long t = __year_to_secs(year, &is_leap);
+  t += __month_to_secs(month, is_leap);
+  t += 86400LL * (tm->tm_mday - 1);
+  t += 3600LL * tm->tm_hour;
+  t += 60LL * tm->tm_min;
+  t += tm->tm_sec;
+  return t;
 }
diff --git a/fusl/src/time/__tz.c b/fusl/src/time/__tz.c
index 8b84b9b..b4f7431 100644
--- a/fusl/src/time/__tz.c
+++ b/fusl/src/time/__tz.c
@@ -5,16 +5,16 @@
 #include <string.h>
 #include "libc.h"
 
-long  __timezone = 0;
-int   __daylight = 0;
-char *__tzname[2] = { 0, 0 };
+long __timezone = 0;
+int __daylight = 0;
+char* __tzname[2] = {0, 0};
 
 weak_alias(__timezone, timezone);
 weak_alias(__daylight, daylight);
 weak_alias(__tzname, tzname);
 
-static char std_name[TZNAME_MAX+1];
-static char dst_name[TZNAME_MAX+1];
+static char std_name[TZNAME_MAX + 1];
+static char dst_name[TZNAME_MAX + 1];
 const char __gmt[] = "GMT";
 
 static int dst_off;
@@ -24,317 +24,349 @@
 static size_t map_size;
 
 static char old_tz_buf[32];
-static char *old_tz = old_tz_buf;
+static char* old_tz = old_tz_buf;
 static size_t old_tz_size = sizeof old_tz_buf;
 
 static volatile int lock[2];
 
-static int getint(const char **p)
-{
-	unsigned x;
-	for (x=0; **p-'0'<10U; (*p)++) x = **p-'0' + 10*x;
-	return x;
+static int getint(const char** p) {
+  unsigned x;
+  for (x = 0; **p - '0' < 10U; (*p)++)
+    x = **p - '0' + 10 * x;
+  return x;
 }
 
-static int getoff(const char **p)
-{
-	int neg = 0;
-	if (**p == '-') {
-		++*p;
-		neg = 1;
-	} else if (**p == '+') {
-		++*p;
-	}
-	int off = 3600*getint(p);
-	if (**p == ':') {
-		++*p;
-		off += 60*getint(p);
-		if (**p == ':') {
-			++*p;
-			off += getint(p);
-		}
-	}
-	return neg ? -off : off;
+static int getoff(const char** p) {
+  int neg = 0;
+  if (**p == '-') {
+    ++*p;
+    neg = 1;
+  } else if (**p == '+') {
+    ++*p;
+  }
+  int off = 3600 * getint(p);
+  if (**p == ':') {
+    ++*p;
+    off += 60 * getint(p);
+    if (**p == ':') {
+      ++*p;
+      off += getint(p);
+    }
+  }
+  return neg ? -off : off;
 }
 
-static void getrule(const char **p, int rule[5])
-{
-	int r = rule[0] = **p;
+static void getrule(const char** p, int rule[5]) {
+  int r = rule[0] = **p;
 
-	if (r!='M') {
-		if (r=='J') ++*p;
-		else rule[0] = 0;
-		rule[1] = getint(p);
-	} else {
-		++*p; rule[1] = getint(p);
-		++*p; rule[2] = getint(p);
-		++*p; rule[3] = getint(p);
-	}
+  if (r != 'M') {
+    if (r == 'J')
+      ++*p;
+    else
+      rule[0] = 0;
+    rule[1] = getint(p);
+  } else {
+    ++*p;
+    rule[1] = getint(p);
+    ++*p;
+    rule[2] = getint(p);
+    ++*p;
+    rule[3] = getint(p);
+  }
 
-	if (**p=='/') {
-		++*p;
-		rule[4] = getoff(p);
-	} else {
-		rule[4] = 7200;
-	}
+  if (**p == '/') {
+    ++*p;
+    rule[4] = getoff(p);
+  } else {
+    rule[4] = 7200;
+  }
 }
 
-static void getname(char *d, const char **p)
-{
-	int i;
-	if (**p == '<') {
-		++*p;
-		for (i=0; **p!='>' && i<TZNAME_MAX; i++)
-			d[i] = (*p)[i];
-		++*p;
-	} else {
-		for (i=0; ((*p)[i]|32)-'a'<26U && i<TZNAME_MAX; i++)
-			d[i] = (*p)[i];
-	}
-	*p += i;
-	d[i] = 0;
+static void getname(char* d, const char** p) {
+  int i;
+  if (**p == '<') {
+    ++*p;
+    for (i = 0; **p != '>' && i < TZNAME_MAX; i++)
+      d[i] = (*p)[i];
+    ++*p;
+  } else {
+    for (i = 0; ((*p)[i] | 32) - 'a' < 26U && i < TZNAME_MAX; i++)
+      d[i] = (*p)[i];
+  }
+  *p += i;
+  d[i] = 0;
 }
 
 #define VEC(...) ((const unsigned char[]){__VA_ARGS__})
 
-static uint32_t zi_read32(const unsigned char *z)
-{
-	return (unsigned)z[0]<<24 | z[1]<<16 | z[2]<<8 | z[3];
+static uint32_t zi_read32(const unsigned char* z) {
+  return (unsigned)z[0] << 24 | z[1] << 16 | z[2] << 8 | z[3];
 }
 
-static size_t zi_dotprod(const unsigned char *z, const unsigned char *v, size_t n)
-{
-	size_t y;
-	uint32_t x;
-	for (y=0; n; n--, z+=4, v++) {
-		x = zi_read32(z);
-		y += x * *v;
-	}
-	return y;
+static size_t zi_dotprod(const unsigned char* z,
+                         const unsigned char* v,
+                         size_t n) {
+  size_t y;
+  uint32_t x;
+  for (y = 0; n; n--, z += 4, v++) {
+    x = zi_read32(z);
+    y += x * *v;
+  }
+  return y;
 }
 
-int __munmap(void *, size_t);
+int __munmap(void*, size_t);
 
-static void do_tzset()
-{
-	char buf[NAME_MAX+25], *pathname=buf+24;
-	const char *try, *s, *p;
-	const unsigned char *map = 0;
-	size_t i;
-	static const char search[] =
-		"/usr/share/zoneinfo/\0/share/zoneinfo/\0/etc/zoneinfo/\0";
+static void do_tzset() {
+  char buf[NAME_MAX + 25], *pathname = buf + 24;
+  const char* try
+    , *s, *p;
+  const unsigned char* map = 0;
+  size_t i;
+  static const char search[] =
+      "/usr/share/zoneinfo/\0/share/zoneinfo/\0/etc/zoneinfo/\0";
 
-	s = getenv("TZ");
-	if (!s) s = "/etc/localtime";
-	if (!*s) s = __gmt;
+  s = getenv("TZ");
+  if (!s)
+    s = "/etc/localtime";
+  if (!*s)
+    s = __gmt;
 
-	if (old_tz && !strcmp(s, old_tz)) return;
+  if (old_tz && !strcmp(s, old_tz))
+    return;
 
-	if (zi) __munmap((void *)zi, map_size);
+  if (zi)
+    __munmap((void*)zi, map_size);
 
-	/* Cache the old value of TZ to check if it has changed. Avoid
-	 * free so as not to pull it into static programs. Growth
-	 * strategy makes it so free would have minimal benefit anyway. */
-	i = strlen(s);
-	if (i > PATH_MAX+1) s = __gmt, i = 3;
-	if (i >= old_tz_size) {
-		old_tz_size *= 2;
-		if (i >= old_tz_size) old_tz_size = i+1;
-		if (old_tz_size > PATH_MAX+2) old_tz_size = PATH_MAX+2;
-		old_tz = malloc(old_tz_size);
-	}
-	if (old_tz) memcpy(old_tz, s, i+1);
+  /* Cache the old value of TZ to check if it has changed. Avoid
+   * free so as not to pull it into static programs. Growth
+   * strategy makes it so free would have minimal benefit anyway. */
+  i = strlen(s);
+  if (i > PATH_MAX + 1)
+    s = __gmt, i = 3;
+  if (i >= old_tz_size) {
+    old_tz_size *= 2;
+    if (i >= old_tz_size)
+      old_tz_size = i + 1;
+    if (old_tz_size > PATH_MAX + 2)
+      old_tz_size = PATH_MAX + 2;
+    old_tz = malloc(old_tz_size);
+  }
+  if (old_tz)
+    memcpy(old_tz, s, i + 1);
 
-	/* Non-suid can use an absolute tzfile pathname or a relative
-	 * pathame beginning with "."; in secure mode, only the
-	 * standard path will be searched. */
-	if (*s == ':' || ((p=strchr(s, '/')) && !memchr(s, ',', p-s))) {
-		if (*s == ':') s++;
-		if (*s == '/' || *s == '.') {
-			if (!libc.secure || !strcmp(s, "/etc/localtime"))
-				map = __map_file(s, &map_size);
-		} else {
-			size_t l = strlen(s);
-			if (l <= NAME_MAX && !strchr(s, '.')) {
-				memcpy(pathname, s, l+1);
-				pathname[l] = 0;
-				for (try=search; !map && *try; try+=l+1) {
-					l = strlen(try);
-					memcpy(pathname-l, try, l);
-					map = __map_file(pathname-l, &map_size);
-				}
-			}
-		}
-		if (!map) s = __gmt;
-	}
-	if (map && (map_size < 44 || memcmp(map, "TZif", 4))) {
-		__munmap((void *)map, map_size);
-		map = 0;
-		s = __gmt;
-	}
+  /* Non-suid can use an absolute tzfile pathname or a relative
+   * pathame beginning with "."; in secure mode, only the
+   * standard path will be searched. */
+  if (*s == ':' || ((p = strchr(s, '/')) && !memchr(s, ',', p - s))) {
+    if (*s == ':')
+      s++;
+    if (*s == '/' || *s == '.') {
+      if (!libc.secure || !strcmp(s, "/etc/localtime"))
+        map = __map_file(s, &map_size);
+    } else {
+      size_t l = strlen(s);
+      if (l <= NAME_MAX && !strchr(s, '.')) {
+        memcpy(pathname, s, l + 1);
+        pathname[l] = 0;
+        for (try = search; !map && *try; try += l + 1) {
+          l = strlen(try);
+          memcpy(pathname - l, try, l);
+          map = __map_file(pathname - l, &map_size);
+        }
+      }
+    }
+    if (!map)
+      s = __gmt;
+  }
+  if (map && (map_size < 44 || memcmp(map, "TZif", 4))) {
+    __munmap((void*)map, map_size);
+    map = 0;
+    s = __gmt;
+  }
 
-	zi = map;
-	if (map) {
-		int scale = 2;
-		if (sizeof(time_t) > 4 && map[4]=='2') {
-			size_t skip = zi_dotprod(zi+20, VEC(1,1,8,5,6,1), 6);
-			trans = zi+skip+44+44;
-			scale++;
-		} else {
-			trans = zi+44;
-		}
-		index = trans + (zi_read32(trans-12) << scale);
-		types = index + zi_read32(trans-12);
-		abbrevs = types + 6*zi_read32(trans-8);
-		abbrevs_end = abbrevs + zi_read32(trans-4);
-		if (zi[map_size-1] == '\n') {
-			for (s = (const char *)zi+map_size-2; *s!='\n'; s--);
-			s++;
-		} else {
-			const unsigned char *p;
-			__tzname[0] = __tzname[1] = 0;
-			__daylight = __timezone = dst_off = 0;
-			for (i=0; i<5; i++) r0[i] = r1[i] = 0;
-			for (p=types; p<abbrevs; p+=6) {
-				if (!p[4] && !__tzname[0]) {
-					__tzname[0] = (char *)abbrevs + p[5];
-					__timezone = -zi_read32(p);
-				}
-				if (p[4] && !__tzname[1]) {
-					__tzname[1] = (char *)abbrevs + p[5];
-					dst_off = -zi_read32(p);
-					__daylight = 1;
-				}
-			}
-			if (!__tzname[0]) __tzname[0] = __tzname[1];
-			if (!__tzname[0]) __tzname[0] = (char *)__gmt;
-			if (!__daylight) {
-				__tzname[1] = __tzname[0];
-				dst_off = __timezone;
-			}
-			return;
-		}
-	}
+  zi = map;
+  if (map) {
+    int scale = 2;
+    if (sizeof(time_t) > 4 && map[4] == '2') {
+      size_t skip = zi_dotprod(zi + 20, VEC(1, 1, 8, 5, 6, 1), 6);
+      trans = zi + skip + 44 + 44;
+      scale++;
+    } else {
+      trans = zi + 44;
+    }
+    index = trans + (zi_read32(trans - 12) << scale);
+    types = index + zi_read32(trans - 12);
+    abbrevs = types + 6 * zi_read32(trans - 8);
+    abbrevs_end = abbrevs + zi_read32(trans - 4);
+    if (zi[map_size - 1] == '\n') {
+      for (s = (const char*)zi + map_size - 2; *s != '\n'; s--)
+        ;
+      s++;
+    } else {
+      const unsigned char* p;
+      __tzname[0] = __tzname[1] = 0;
+      __daylight = __timezone = dst_off = 0;
+      for (i = 0; i < 5; i++)
+        r0[i] = r1[i] = 0;
+      for (p = types; p < abbrevs; p += 6) {
+        if (!p[4] && !__tzname[0]) {
+          __tzname[0] = (char*)abbrevs + p[5];
+          __timezone = -zi_read32(p);
+        }
+        if (p[4] && !__tzname[1]) {
+          __tzname[1] = (char*)abbrevs + p[5];
+          dst_off = -zi_read32(p);
+          __daylight = 1;
+        }
+      }
+      if (!__tzname[0])
+        __tzname[0] = __tzname[1];
+      if (!__tzname[0])
+        __tzname[0] = (char*)__gmt;
+      if (!__daylight) {
+        __tzname[1] = __tzname[0];
+        dst_off = __timezone;
+      }
+      return;
+    }
+  }
 
-	if (!s) s = __gmt;
-	getname(std_name, &s);
-	__tzname[0] = std_name;
-	__timezone = getoff(&s);
-	getname(dst_name, &s);
-	__tzname[1] = dst_name;
-	if (dst_name[0]) {
-		__daylight = 1;
-		if (*s == '+' || *s=='-' || *s-'0'<10U)
-			dst_off = getoff(&s);
-		else
-			dst_off = __timezone - 3600;
-	} else {
-		__daylight = 0;
-		dst_off = 0;
-	}
+  if (!s)
+    s = __gmt;
+  getname(std_name, &s);
+  __tzname[0] = std_name;
+  __timezone = getoff(&s);
+  getname(dst_name, &s);
+  __tzname[1] = dst_name;
+  if (dst_name[0]) {
+    __daylight = 1;
+    if (*s == '+' || *s == '-' || *s - '0' < 10U)
+      dst_off = getoff(&s);
+    else
+      dst_off = __timezone - 3600;
+  } else {
+    __daylight = 0;
+    dst_off = 0;
+  }
 
-	if (*s == ',') s++, getrule(&s, r0);
-	if (*s == ',') s++, getrule(&s, r1);
+  if (*s == ',')
+    s++, getrule(&s, r0);
+  if (*s == ',')
+    s++, getrule(&s, r1);
 }
 
 /* Search zoneinfo rules to find the one that applies to the given time,
  * and determine alternate opposite-DST-status rule that may be needed. */
 
-static size_t scan_trans(long long t, int local, size_t *alt)
-{
-	int scale = 3 - (trans == zi+44);
-	uint64_t x;
-	int off = 0;
+static size_t scan_trans(long long t, int local, size_t* alt) {
+  int scale = 3 - (trans == zi + 44);
+  uint64_t x;
+  int off = 0;
 
-	size_t a = 0, n = (index-trans)>>scale, m;
+  size_t a = 0, n = (index - trans) >> scale, m;
 
-	if (!n) {
-		if (alt) *alt = 0;
-		return 0;
-	}
+  if (!n) {
+    if (alt)
+      *alt = 0;
+    return 0;
+  }
 
-	/* Binary search for 'most-recent rule before t'. */
-	while (n > 1) {
-		m = a + n/2;
-		x = zi_read32(trans + (m<<scale));
-		if (scale == 3) x = x<<32 | zi_read32(trans + (m<<scale) + 4);
-		else x = (int32_t)x;
-		if (local) off = (int32_t)zi_read32(types + 6 * index[m-1]);
-		if (t - off < (int64_t)x) {
-			n /= 2;
-		} else {
-			a = m;
-			n -= n/2;
-		}
-	}
+  /* Binary search for 'most-recent rule before t'. */
+  while (n > 1) {
+    m = a + n / 2;
+    x = zi_read32(trans + (m << scale));
+    if (scale == 3)
+      x = x << 32 | zi_read32(trans + (m << scale) + 4);
+    else
+      x = (int32_t)x;
+    if (local)
+      off = (int32_t)zi_read32(types + 6 * index[m - 1]);
+    if (t - off < (int64_t)x) {
+      n /= 2;
+    } else {
+      a = m;
+      n -= n / 2;
+    }
+  }
 
-	/* First and last entry are special. First means to use lowest-index
-	 * non-DST type. Last means to apply POSIX-style rule if available. */
-	n = (index-trans)>>scale;
-	if (a == n-1) return -1;
-	if (a == 0) {
-		x = zi_read32(trans + (a<<scale));
-		if (scale == 3) x = x<<32 | zi_read32(trans + (a<<scale) + 4);
-		else x = (int32_t)x;
-		if (local) off = (int32_t)zi_read32(types + 6 * index[a-1]);
-		if (t - off < (int64_t)x) {
-			for (a=0; a<(abbrevs-types)/6; a++) {
-				if (types[6*a+4] != types[4]) break;
-			}
-			if (a == (abbrevs-types)/6) a = 0;
-			if (types[6*a+4]) {
-				*alt = a;
-				return 0;
-			} else {
-				*alt = 0;
-				return a;
-			}
-		}
-	}
+  /* First and last entry are special. First means to use lowest-index
+   * non-DST type. Last means to apply POSIX-style rule if available. */
+  n = (index - trans) >> scale;
+  if (a == n - 1)
+    return -1;
+  if (a == 0) {
+    x = zi_read32(trans + (a << scale));
+    if (scale == 3)
+      x = x << 32 | zi_read32(trans + (a << scale) + 4);
+    else
+      x = (int32_t)x;
+    if (local)
+      off = (int32_t)zi_read32(types + 6 * index[a - 1]);
+    if (t - off < (int64_t)x) {
+      for (a = 0; a < (abbrevs - types) / 6; a++) {
+        if (types[6 * a + 4] != types[4])
+          break;
+      }
+      if (a == (abbrevs - types) / 6)
+        a = 0;
+      if (types[6 * a + 4]) {
+        *alt = a;
+        return 0;
+      } else {
+        *alt = 0;
+        return a;
+      }
+    }
+  }
 
-	/* Try to find a neighboring opposite-DST-status rule. */
-	if (alt) {
-		if (a && types[6*index[a-1]+4] != types[6*index[a]+4])
-			*alt = index[a-1];
-		else if (a+1<n && types[6*index[a+1]+4] != types[6*index[a]+4])
-			*alt = index[a+1];
-		else
-			*alt = index[a];
-	}
+  /* Try to find a neighboring opposite-DST-status rule. */
+  if (alt) {
+    if (a && types[6 * index[a - 1] + 4] != types[6 * index[a] + 4])
+      *alt = index[a - 1];
+    else if (a + 1 < n &&
+             types[6 * index[a + 1] + 4] != types[6 * index[a] + 4])
+      *alt = index[a + 1];
+    else
+      *alt = index[a];
+  }
 
-	return index[a];
+  return index[a];
 }
 
-static int days_in_month(int m, int is_leap)
-{
-	if (m==2) return 28+is_leap;
-	else return 30+((0xad5>>(m-1))&1);
+static int days_in_month(int m, int is_leap) {
+  if (m == 2)
+    return 28 + is_leap;
+  else
+    return 30 + ((0xad5 >> (m - 1)) & 1);
 }
 
 /* Convert a POSIX DST rule plus year to seconds since epoch. */
 
-static long long rule_to_secs(const int *rule, int year)
-{
-	int is_leap;
-	long long t = __year_to_secs(year, &is_leap);
-	int x, m, n, d;
-	if (rule[0]!='M') {
-		x = rule[1];
-		if (rule[0]=='J' && (x < 60 || !is_leap)) x--;
-		t += 86400 * x;
-	} else {
-		m = rule[1];
-		n = rule[2];
-		d = rule[3];
-		t += __month_to_secs(m-1, is_leap);
-		int wday = (int)((t + 4*86400) % (7*86400)) / 86400;
-		int days = d - wday;
-		if (days < 0) days += 7;
-		if (n == 5 && days+28 >= days_in_month(m, is_leap)) n = 4;
-		t += 86400 * (days + 7*(n-1));
-	}
-	t += rule[4];
-	return t;
+static long long rule_to_secs(const int* rule, int year) {
+  int is_leap;
+  long long t = __year_to_secs(year, &is_leap);
+  int x, m, n, d;
+  if (rule[0] != 'M') {
+    x = rule[1];
+    if (rule[0] == 'J' && (x < 60 || !is_leap))
+      x--;
+    t += 86400 * x;
+  } else {
+    m = rule[1];
+    n = rule[2];
+    d = rule[3];
+    t += __month_to_secs(m - 1, is_leap);
+    int wday = (int)((t + 4 * 86400) % (7 * 86400)) / 86400;
+    int days = d - wday;
+    if (days < 0)
+      days += 7;
+    if (n == 5 && days + 28 >= days_in_month(m, is_leap))
+      n = 4;
+    t += 86400 * (days + 7 * (n - 1));
+  }
+  t += rule[4];
+  return t;
 }
 
 /* Determine the time zone in effect for a given time in seconds since the
@@ -344,82 +376,92 @@
  * enables a caller to efficiently adjust for the case where an explicit
  * DST specification mismatches what would be in effect at the time. */
 
-void __secs_to_zone(long long t, int local, int *isdst, long *offset, long *oppoff, const char **zonename)
-{
-	LOCK(lock);
+void __secs_to_zone(long long t,
+                    int local,
+                    int* isdst,
+                    long* offset,
+                    long* oppoff,
+                    const char** zonename) {
+  LOCK(lock);
 
-	do_tzset();
+  do_tzset();
 
-	if (zi) {
-		size_t alt, i = scan_trans(t, local, &alt);
-		if (i != -1) {
-			*isdst = types[6*i+4];
-			*offset = (int32_t)zi_read32(types+6*i);
-			*zonename = (const char *)abbrevs + types[6*i+5];
-			if (oppoff) *oppoff = (int32_t)zi_read32(types+6*alt);
-			UNLOCK(lock);
-			return;
-		}
-	}
+  if (zi) {
+    size_t alt, i = scan_trans(t, local, &alt);
+    if (i != -1) {
+      *isdst = types[6 * i + 4];
+      *offset = (int32_t)zi_read32(types + 6 * i);
+      *zonename = (const char*)abbrevs + types[6 * i + 5];
+      if (oppoff)
+        *oppoff = (int32_t)zi_read32(types + 6 * alt);
+      UNLOCK(lock);
+      return;
+    }
+  }
 
-	if (!__daylight) goto std;
+  if (!__daylight)
+    goto std;
 
-	/* FIXME: may be broken if DST changes right at year boundary?
-	 * Also, this could be more efficient.*/
-	long long y = t / 31556952 + 70;
-	while (__year_to_secs(y, 0) > t) y--;
-	while (__year_to_secs(y+1, 0) < t) y++;
+  /* FIXME: may be broken if DST changes right at year boundary?
+   * Also, this could be more efficient.*/
+  long long y = t / 31556952 + 70;
+  while (__year_to_secs(y, 0) > t)
+    y--;
+  while (__year_to_secs(y + 1, 0) < t)
+    y++;
 
-	long long t0 = rule_to_secs(r0, y);
-	long long t1 = rule_to_secs(r1, y);
+  long long t0 = rule_to_secs(r0, y);
+  long long t1 = rule_to_secs(r1, y);
 
-	if (t0 < t1) {
-		if (!local) {
-			t0 += __timezone;
-			t1 += dst_off;
-		}
-		if (t >= t0 && t < t1) goto dst;
-		goto std;
-	} else {
-		if (!local) {
-			t1 += __timezone;
-			t0 += dst_off;
-		}
-		if (t >= t1 && t < t0) goto std;
-		goto dst;
-	}
+  if (t0 < t1) {
+    if (!local) {
+      t0 += __timezone;
+      t1 += dst_off;
+    }
+    if (t >= t0 && t < t1)
+      goto dst;
+    goto std;
+  } else {
+    if (!local) {
+      t1 += __timezone;
+      t0 += dst_off;
+    }
+    if (t >= t1 && t < t0)
+      goto std;
+    goto dst;
+  }
 std:
-	*isdst = 0;
-	*offset = -__timezone;
-	if (oppoff) *oppoff = -dst_off;
-	*zonename = __tzname[0];
-	UNLOCK(lock);
-	return;
+  *isdst = 0;
+  *offset = -__timezone;
+  if (oppoff)
+    *oppoff = -dst_off;
+  *zonename = __tzname[0];
+  UNLOCK(lock);
+  return;
 dst:
-	*isdst = 1;
-	*offset = -dst_off;
-	if (oppoff) *oppoff = -__timezone;
-	*zonename = __tzname[1];
-	UNLOCK(lock);
+  *isdst = 1;
+  *offset = -dst_off;
+  if (oppoff)
+    *oppoff = -__timezone;
+  *zonename = __tzname[1];
+  UNLOCK(lock);
 }
 
-void __tzset()
-{
-	LOCK(lock);
-	do_tzset();
-	UNLOCK(lock);
+void __tzset() {
+  LOCK(lock);
+  do_tzset();
+  UNLOCK(lock);
 }
 
 weak_alias(__tzset, tzset);
 
-const char *__tm_to_tzname(const struct tm *tm)
-{
-	const void *p = tm->__tm_zone;
-	LOCK(lock);
-	do_tzset();
-	if (p != __gmt && p != __tzname[0] && p != __tzname[1] &&
-	    (!zi || (uintptr_t)p-(uintptr_t)abbrevs >= abbrevs_end - abbrevs))
-		p = "";
-	UNLOCK(lock);
-	return p;
+const char* __tm_to_tzname(const struct tm* tm) {
+  const void* p = tm->__tm_zone;
+  LOCK(lock);
+  do_tzset();
+  if (p != __gmt && p != __tzname[0] && p != __tzname[1] &&
+      (!zi || (uintptr_t)p - (uintptr_t)abbrevs >= abbrevs_end - abbrevs))
+    p = "";
+  UNLOCK(lock);
+  return p;
 }
diff --git a/fusl/src/time/__year_to_secs.c b/fusl/src/time/__year_to_secs.c
index 2824ec6..4b4d198 100644
--- a/fusl/src/time/__year_to_secs.c
+++ b/fusl/src/time/__year_to_secs.c
@@ -1,47 +1,53 @@
-long long __year_to_secs(long long year, int *is_leap)
-{
-	if (year-2ULL <= 136) {
-		int y = year;
-		int leaps = (y-68)>>2;
-		if (!((y-68)&3)) {
-			leaps--;
-			if (is_leap) *is_leap = 1;
-		} else if (is_leap) *is_leap = 0;
-		return 31536000*(y-70) + 86400*leaps;
-	}
+long long __year_to_secs(long long year, int* is_leap) {
+  if (year - 2ULL <= 136) {
+    int y = year;
+    int leaps = (y - 68) >> 2;
+    if (!((y - 68) & 3)) {
+      leaps--;
+      if (is_leap)
+        *is_leap = 1;
+    } else if (is_leap)
+      *is_leap = 0;
+    return 31536000 * (y - 70) + 86400 * leaps;
+  }
 
-	int cycles, centuries, leaps, rem;
+  int cycles, centuries, leaps, rem;
 
-	if (!is_leap) is_leap = &(int){0};
-	cycles = (year-100) / 400;
-	rem = (year-100) % 400;
-	if (rem < 0) {
-		cycles--;
-		rem += 400;
-	}
-	if (!rem) {
-		*is_leap = 1;
-		centuries = 0;
-		leaps = 0;
-	} else {
-		if (rem >= 200) {
-			if (rem >= 300) centuries = 3, rem -= 300;
-			else centuries = 2, rem -= 200;
-		} else {
-			if (rem >= 100) centuries = 1, rem -= 100;
-			else centuries = 0;
-		}
-		if (!rem) {
-			*is_leap = 0;
-			leaps = 0;
-		} else {
-			leaps = rem / 4U;
-			rem %= 4U;
-			*is_leap = !rem;
-		}
-	}
+  if (!is_leap)
+    is_leap = &(int){0};
+  cycles = (year - 100) / 400;
+  rem = (year - 100) % 400;
+  if (rem < 0) {
+    cycles--;
+    rem += 400;
+  }
+  if (!rem) {
+    *is_leap = 1;
+    centuries = 0;
+    leaps = 0;
+  } else {
+    if (rem >= 200) {
+      if (rem >= 300)
+        centuries = 3, rem -= 300;
+      else
+        centuries = 2, rem -= 200;
+    } else {
+      if (rem >= 100)
+        centuries = 1, rem -= 100;
+      else
+        centuries = 0;
+    }
+    if (!rem) {
+      *is_leap = 0;
+      leaps = 0;
+    } else {
+      leaps = rem / 4U;
+      rem %= 4U;
+      *is_leap = !rem;
+    }
+  }
 
-	leaps += 97*cycles + 24*centuries - *is_leap;
+  leaps += 97 * cycles + 24 * centuries - *is_leap;
 
-	return (year-100) * 31536000LL + leaps * 86400LL + 946684800 + 86400;
+  return (year - 100) * 31536000LL + leaps * 86400LL + 946684800 + 86400;
 }
diff --git a/fusl/src/time/asctime.c b/fusl/src/time/asctime.c
index 3102eb8..eea793d 100644
--- a/fusl/src/time/asctime.c
+++ b/fusl/src/time/asctime.c
@@ -1,9 +1,8 @@
 #include <time.h>
 
-char *__asctime(const struct tm *, char *);
+char* __asctime(const struct tm*, char*);
 
-char *asctime(const struct tm *tm)
-{
-	static char buf[26];
-	return __asctime(tm, buf);
+char* asctime(const struct tm* tm) {
+  static char buf[26];
+  return __asctime(tm, buf);
 }
diff --git a/fusl/src/time/asctime_r.c b/fusl/src/time/asctime_r.c
index 7dfbb12..1674836 100644
--- a/fusl/src/time/asctime_r.c
+++ b/fusl/src/time/asctime_r.c
@@ -1,8 +1,7 @@
 #include <time.h>
 
-char *__asctime(const struct tm *restrict, char *restrict);
+char* __asctime(const struct tm* restrict, char* restrict);
 
-char *asctime_r(const struct tm *restrict tm, char *restrict buf)
-{
-	return __asctime(tm, buf);
+char* asctime_r(const struct tm* restrict tm, char* restrict buf) {
+  return __asctime(tm, buf);
 }
diff --git a/fusl/src/time/clock.c b/fusl/src/time/clock.c
index c348e39..ce03d79 100644
--- a/fusl/src/time/clock.c
+++ b/fusl/src/time/clock.c
@@ -1,18 +1,17 @@
 #include <time.h>
 #include <limits.h>
 
-int __clock_gettime(clockid_t, struct timespec *);
+int __clock_gettime(clockid_t, struct timespec*);
 
-clock_t clock()
-{
-	struct timespec ts;
+clock_t clock() {
+  struct timespec ts;
 
-	if (__clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts))
-		return -1;
+  if (__clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &ts))
+    return -1;
 
-	if (ts.tv_sec > LONG_MAX/1000000
-	 || ts.tv_nsec/1000 > LONG_MAX-1000000*ts.tv_sec)
-		return -1;
+  if (ts.tv_sec > LONG_MAX / 1000000 ||
+      ts.tv_nsec / 1000 > LONG_MAX - 1000000 * ts.tv_sec)
+    return -1;
 
-	return ts.tv_sec*1000000 + ts.tv_nsec/1000;
+  return ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
 }
diff --git a/fusl/src/time/clock_getcpuclockid.c b/fusl/src/time/clock_getcpuclockid.c
index 8a0e2d4..094a0da 100644
--- a/fusl/src/time/clock_getcpuclockid.c
+++ b/fusl/src/time/clock_getcpuclockid.c
@@ -3,12 +3,12 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int clock_getcpuclockid(pid_t pid, clockid_t *clk)
-{
-	struct timespec ts;
-	clockid_t id = (-pid-1)*8U + 2;
-	int ret = __syscall(SYS_clock_getres, id, &ts);
-	if (ret) return -ret;
-	*clk = id;
-	return 0;
+int clock_getcpuclockid(pid_t pid, clockid_t* clk) {
+  struct timespec ts;
+  clockid_t id = (-pid - 1) * 8U + 2;
+  int ret = __syscall(SYS_clock_getres, id, &ts);
+  if (ret)
+    return -ret;
+  *clk = id;
+  return 0;
 }
diff --git a/fusl/src/time/clock_getres.c b/fusl/src/time/clock_getres.c
index 36a0d69..3b20114 100644
--- a/fusl/src/time/clock_getres.c
+++ b/fusl/src/time/clock_getres.c
@@ -1,7 +1,6 @@
 #include <time.h>
 #include "syscall.h"
 
-int clock_getres(clockid_t clk, struct timespec *ts)
-{
-	return syscall(SYS_clock_getres, clk, ts);
+int clock_getres(clockid_t clk, struct timespec* ts) {
+  return syscall(SYS_clock_getres, clk, ts);
 }
diff --git a/fusl/src/time/clock_gettime.c b/fusl/src/time/clock_gettime.c
index 2412880..424e5f4 100644
--- a/fusl/src/time/clock_gettime.c
+++ b/fusl/src/time/clock_gettime.c
@@ -7,52 +7,52 @@
 
 #ifdef VDSO_CGT_SYM
 
-void *__vdsosym(const char *, const char *);
+void* __vdsosym(const char*, const char*);
 
-static void *volatile vdso_func;
+static void* volatile vdso_func;
 
-static int cgt_init(clockid_t clk, struct timespec *ts)
-{
-	void *p = __vdsosym(VDSO_CGT_VER, VDSO_CGT_SYM);
-	int (*f)(clockid_t, struct timespec *) =
-		(int (*)(clockid_t, struct timespec *))p;
-	a_cas_p(&vdso_func, (void *)cgt_init, p);
-	return f ? f(clk, ts) : -ENOSYS;
+static int cgt_init(clockid_t clk, struct timespec* ts) {
+  void* p = __vdsosym(VDSO_CGT_VER, VDSO_CGT_SYM);
+  int (*f)(clockid_t, struct timespec*) =
+      (int (*)(clockid_t, struct timespec*))p;
+  a_cas_p(&vdso_func, (void*)cgt_init, p);
+  return f ? f(clk, ts) : -ENOSYS;
 }
 
-static void *volatile vdso_func = (void *)cgt_init;
+static void* volatile vdso_func = (void*)cgt_init;
 
 #endif
 
-int __clock_gettime(clockid_t clk, struct timespec *ts)
-{
-	int r;
+int __clock_gettime(clockid_t clk, struct timespec* ts) {
+  int r;
 
 #ifdef VDSO_CGT_SYM
-	int (*f)(clockid_t, struct timespec *) =
-		(int (*)(clockid_t, struct timespec *))vdso_func;
-	if (f) {
-		r = f(clk, ts);
-		if (!r) return r;
-		if (r == -EINVAL) return __syscall_ret(r);
-		/* Fall through on errors other than EINVAL. Some buggy
-		 * vdso implementations return ENOSYS for clocks they
-		 * can't handle, rather than making the syscall. This
-		 * also handles the case where cgt_init fails to find
-		 * a vdso function to use. */
-	}
+  int (*f)(clockid_t, struct timespec*) =
+      (int (*)(clockid_t, struct timespec*))vdso_func;
+  if (f) {
+    r = f(clk, ts);
+    if (!r)
+      return r;
+    if (r == -EINVAL)
+      return __syscall_ret(r);
+    /* Fall through on errors other than EINVAL. Some buggy
+     * vdso implementations return ENOSYS for clocks they
+     * can't handle, rather than making the syscall. This
+     * also handles the case where cgt_init fails to find
+     * a vdso function to use. */
+  }
 #endif
 
-	r = __syscall(SYS_clock_gettime, clk, ts);
-	if (r == -ENOSYS) {
-		if (clk == CLOCK_REALTIME) {
-			__syscall(SYS_gettimeofday, ts, 0);
-			ts->tv_nsec = (int)ts->tv_nsec * 1000;
-			return 0;
-		}
-		r = -EINVAL;
-	}
-	return __syscall_ret(r);
+  r = __syscall(SYS_clock_gettime, clk, ts);
+  if (r == -ENOSYS) {
+    if (clk == CLOCK_REALTIME) {
+      __syscall(SYS_gettimeofday, ts, 0);
+      ts->tv_nsec = (int)ts->tv_nsec * 1000;
+      return 0;
+    }
+    r = -EINVAL;
+  }
+  return __syscall_ret(r);
 }
 
 weak_alias(__clock_gettime, clock_gettime);
diff --git a/fusl/src/time/clock_nanosleep.c b/fusl/src/time/clock_nanosleep.c
index ec87b9e..dbb8598 100644
--- a/fusl/src/time/clock_nanosleep.c
+++ b/fusl/src/time/clock_nanosleep.c
@@ -2,7 +2,9 @@
 #include "syscall.h"
 #include "libc.h"
 
-int clock_nanosleep(clockid_t clk, int flags, const struct timespec *req, struct timespec *rem)
-{
-	return -__syscall_cp(SYS_clock_nanosleep, clk, flags, req, rem);
+int clock_nanosleep(clockid_t clk,
+                    int flags,
+                    const struct timespec* req,
+                    struct timespec* rem) {
+  return -__syscall_cp(SYS_clock_nanosleep, clk, flags, req, rem);
 }
diff --git a/fusl/src/time/clock_settime.c b/fusl/src/time/clock_settime.c
index 66b8162..e38ffa1 100644
--- a/fusl/src/time/clock_settime.c
+++ b/fusl/src/time/clock_settime.c
@@ -1,7 +1,6 @@
 #include <time.h>
 #include "syscall.h"
 
-int clock_settime(clockid_t clk, const struct timespec *ts)
-{
-	return syscall(SYS_clock_settime, clk, ts);
+int clock_settime(clockid_t clk, const struct timespec* ts) {
+  return syscall(SYS_clock_settime, clk, ts);
 }
diff --git a/fusl/src/time/ctime.c b/fusl/src/time/ctime.c
index 185ec55..2a38d77 100644
--- a/fusl/src/time/ctime.c
+++ b/fusl/src/time/ctime.c
@@ -1,6 +1,5 @@
 #include <time.h>
 
-char *ctime(const time_t *t)
-{
-	return asctime(localtime(t));
+char* ctime(const time_t* t) {
+  return asctime(localtime(t));
 }
diff --git a/fusl/src/time/ctime_r.c b/fusl/src/time/ctime_r.c
index d2260a1..e1d32bd 100644
--- a/fusl/src/time/ctime_r.c
+++ b/fusl/src/time/ctime_r.c
@@ -1,8 +1,7 @@
 #include <time.h>
 
-char *ctime_r(const time_t *t, char *buf)
-{
-	struct tm tm;
-	localtime_r(t, &tm);
-	return asctime_r(&tm, buf);
+char* ctime_r(const time_t* t, char* buf) {
+  struct tm tm;
+  localtime_r(t, &tm);
+  return asctime_r(&tm, buf);
 }
diff --git a/fusl/src/time/difftime.c b/fusl/src/time/difftime.c
index 80a18cc..3d8b0b4 100644
--- a/fusl/src/time/difftime.c
+++ b/fusl/src/time/difftime.c
@@ -1,6 +1,5 @@
 #include <time.h>
 
-double difftime(time_t t1, time_t t0)
-{
-	return t1-t0;
+double difftime(time_t t1, time_t t0) {
+  return t1 - t0;
 }
diff --git a/fusl/src/time/ftime.c b/fusl/src/time/ftime.c
index a1734d0..c384eb0 100644
--- a/fusl/src/time/ftime.c
+++ b/fusl/src/time/ftime.c
@@ -1,12 +1,11 @@
 #include <sys/timeb.h>
 #include <time.h>
 
-int ftime(struct timeb *tp)
-{
-	struct timespec ts;
-	clock_gettime(CLOCK_REALTIME, &ts);
-	tp->time = ts.tv_sec;
-	tp->millitm = ts.tv_nsec / 1000000;
-	tp->timezone = tp->dstflag = 0;
-	return 0;
+int ftime(struct timeb* tp) {
+  struct timespec ts;
+  clock_gettime(CLOCK_REALTIME, &ts);
+  tp->time = ts.tv_sec;
+  tp->millitm = ts.tv_nsec / 1000000;
+  tp->timezone = tp->dstflag = 0;
+  return 0;
 }
diff --git a/fusl/src/time/getdate.c b/fusl/src/time/getdate.c
index 89f2169..5b77faa 100644
--- a/fusl/src/time/getdate.c
+++ b/fusl/src/time/getdate.c
@@ -6,40 +6,42 @@
 
 int getdate_err;
 
-struct tm *getdate(const char *s)
-{
-	static struct tm tmbuf;
-	struct tm *ret = 0;
-	char *datemsk = getenv("DATEMSK");
-	FILE *f = 0;
-	char fmt[100], *p;
-	int cs;
+struct tm* getdate(const char* s) {
+  static struct tm tmbuf;
+  struct tm* ret = 0;
+  char* datemsk = getenv("DATEMSK");
+  FILE* f = 0;
+  char fmt[100], *p;
+  int cs;
 
-	pthread_setcancelstate(PTHREAD_CANCEL_DEFERRED, &cs);
+  pthread_setcancelstate(PTHREAD_CANCEL_DEFERRED, &cs);
 
-	if (!datemsk) {
-		getdate_err = 1;
-		goto out;
-	}
+  if (!datemsk) {
+    getdate_err = 1;
+    goto out;
+  }
 
-	f = fopen(datemsk, "rbe");
-	if (!f) {
-		if (errno == ENOMEM) getdate_err = 6;
-		else getdate_err = 2;
-		goto out;
-	}
+  f = fopen(datemsk, "rbe");
+  if (!f) {
+    if (errno == ENOMEM)
+      getdate_err = 6;
+    else
+      getdate_err = 2;
+    goto out;
+  }
 
-	while (fgets(fmt, sizeof fmt, f)) {
-		p = strptime(s, fmt, &tmbuf);
-		if (p && !*p) {
-			ret = &tmbuf;
-			goto out;
-		}
-	}
+  while (fgets(fmt, sizeof fmt, f)) {
+    p = strptime(s, fmt, &tmbuf);
+    if (p && !*p) {
+      ret = &tmbuf;
+      goto out;
+    }
+  }
 
-	getdate_err = 7;
+  getdate_err = 7;
 out:
-	if (f) fclose(f);
-	pthread_setcancelstate(cs, 0);
-	return ret;
+  if (f)
+    fclose(f);
+  pthread_setcancelstate(cs, 0);
+  return ret;
 }
diff --git a/fusl/src/time/gettimeofday.c b/fusl/src/time/gettimeofday.c
index 691f8e9..16cfa6b 100644
--- a/fusl/src/time/gettimeofday.c
+++ b/fusl/src/time/gettimeofday.c
@@ -2,12 +2,12 @@
 #include <sys/time.h>
 #include "syscall.h"
 
-int gettimeofday(struct timeval *restrict tv, void *restrict tz)
-{
-	struct timespec ts;
-	if (!tv) return 0;
-	clock_gettime(CLOCK_REALTIME, &ts);
-	tv->tv_sec = ts.tv_sec;
-	tv->tv_usec = (int)ts.tv_nsec / 1000;
-	return 0;
+int gettimeofday(struct timeval* restrict tv, void* restrict tz) {
+  struct timespec ts;
+  if (!tv)
+    return 0;
+  clock_gettime(CLOCK_REALTIME, &ts);
+  tv->tv_sec = ts.tv_sec;
+  tv->tv_usec = (int)ts.tv_nsec / 1000;
+  return 0;
 }
diff --git a/fusl/src/time/gmtime.c b/fusl/src/time/gmtime.c
index 3791b24..9c9fc72 100644
--- a/fusl/src/time/gmtime.c
+++ b/fusl/src/time/gmtime.c
@@ -1,10 +1,9 @@
 #include "time_impl.h"
 #include <errno.h>
 
-struct tm *__gmtime_r(const time_t *restrict, struct tm *restrict);
+struct tm* __gmtime_r(const time_t* restrict, struct tm* restrict);
 
-struct tm *gmtime(const time_t *t)
-{
-	static struct tm tm;
-	return __gmtime_r(t, &tm);
+struct tm* gmtime(const time_t* t) {
+  static struct tm tm;
+  return __gmtime_r(t, &tm);
 }
diff --git a/fusl/src/time/gmtime_r.c b/fusl/src/time/gmtime_r.c
index 8cbdadc..d48d4c9 100644
--- a/fusl/src/time/gmtime_r.c
+++ b/fusl/src/time/gmtime_r.c
@@ -4,16 +4,15 @@
 
 extern const char __gmt[];
 
-struct tm *__gmtime_r(const time_t *restrict t, struct tm *restrict tm)
-{
-	if (__secs_to_tm(*t, tm) < 0) {
-		errno = EOVERFLOW;
-		return 0;
-	}
-	tm->tm_isdst = 0;
-	tm->__tm_gmtoff = 0;
-	tm->__tm_zone = __gmt;
-	return tm;
+struct tm* __gmtime_r(const time_t* restrict t, struct tm* restrict tm) {
+  if (__secs_to_tm(*t, tm) < 0) {
+    errno = EOVERFLOW;
+    return 0;
+  }
+  tm->tm_isdst = 0;
+  tm->__tm_gmtoff = 0;
+  tm->__tm_zone = __gmt;
+  return tm;
 }
 
 weak_alias(__gmtime_r, gmtime_r);
diff --git a/fusl/src/time/localtime.c b/fusl/src/time/localtime.c
index bb6718c..df3d949 100644
--- a/fusl/src/time/localtime.c
+++ b/fusl/src/time/localtime.c
@@ -1,9 +1,8 @@
 #include "time_impl.h"
 
-struct tm *__localtime_r(const time_t *restrict, struct tm *restrict);
+struct tm* __localtime_r(const time_t* restrict, struct tm* restrict);
 
-struct tm *localtime(const time_t *t)
-{
-	static struct tm tm;
-	return __localtime_r(t, &tm);
+struct tm* localtime(const time_t* t) {
+  static struct tm tm;
+  return __localtime_r(t, &tm);
 }
diff --git a/fusl/src/time/localtime_r.c b/fusl/src/time/localtime_r.c
index 2e62c29..61c864f 100644
--- a/fusl/src/time/localtime_r.c
+++ b/fusl/src/time/localtime_r.c
@@ -2,20 +2,19 @@
 #include <errno.h>
 #include "libc.h"
 
-struct tm *__localtime_r(const time_t *restrict t, struct tm *restrict tm)
-{
-	/* Reject time_t values whose year would overflow int because
-	 * __secs_to_zone cannot safely handle them. */
-	if (*t < INT_MIN * 31622400LL || *t > INT_MAX * 31622400LL) {
-		errno = EOVERFLOW;
-		return 0;
-	}
-	__secs_to_zone(*t, 0, &tm->tm_isdst, &tm->__tm_gmtoff, 0, &tm->__tm_zone);
-	if (__secs_to_tm((long long)*t + tm->__tm_gmtoff, tm) < 0) {
-		errno = EOVERFLOW;
-		return 0;
-	}
-	return tm;
+struct tm* __localtime_r(const time_t* restrict t, struct tm* restrict tm) {
+  /* Reject time_t values whose year would overflow int because
+   * __secs_to_zone cannot safely handle them. */
+  if (*t < INT_MIN * 31622400LL || *t > INT_MAX * 31622400LL) {
+    errno = EOVERFLOW;
+    return 0;
+  }
+  __secs_to_zone(*t, 0, &tm->tm_isdst, &tm->__tm_gmtoff, 0, &tm->__tm_zone);
+  if (__secs_to_tm((long long)*t + tm->__tm_gmtoff, tm) < 0) {
+    errno = EOVERFLOW;
+    return 0;
+  }
+  return tm;
 }
 
 weak_alias(__localtime_r, localtime_r);
diff --git a/fusl/src/time/mktime.c b/fusl/src/time/mktime.c
index bad3f07..56d2f1d 100644
--- a/fusl/src/time/mktime.c
+++ b/fusl/src/time/mktime.c
@@ -1,28 +1,29 @@
 #include "time_impl.h"
 #include <errno.h>
 
-time_t mktime(struct tm *tm)
-{
-	struct tm new;
-	long opp;
-	long long t = __tm_to_secs(tm);
+time_t mktime(struct tm* tm) {
+  struct tm new;
+  long opp;
+  long long t = __tm_to_secs(tm);
 
-	__secs_to_zone(t, 1, &new.tm_isdst, &new.__tm_gmtoff, &opp, &new.__tm_zone);
+  __secs_to_zone(t, 1, &new.tm_isdst, &new.__tm_gmtoff, &opp, &new.__tm_zone);
 
-	if (tm->tm_isdst>=0 && new.tm_isdst!=tm->tm_isdst)
-		t -= opp - new.__tm_gmtoff;
+  if (tm->tm_isdst >= 0 && new.tm_isdst != tm->tm_isdst)
+    t -= opp - new.__tm_gmtoff;
 
-	t -= new.__tm_gmtoff;
-	if ((time_t)t != t) goto error;
+  t -= new.__tm_gmtoff;
+  if ((time_t)t != t)
+    goto error;
 
-	__secs_to_zone(t, 0, &new.tm_isdst, &new.__tm_gmtoff, &opp, &new.__tm_zone);
+  __secs_to_zone(t, 0, &new.tm_isdst, &new.__tm_gmtoff, &opp, &new.__tm_zone);
 
-	if (__secs_to_tm(t + new.__tm_gmtoff, &new) < 0) goto error;
+  if (__secs_to_tm(t + new.__tm_gmtoff, &new) < 0)
+    goto error;
 
-	*tm = new;
-	return t;
+  *tm = new;
+  return t;
 
 error:
-	errno = EOVERFLOW;
-	return -1;
+  errno = EOVERFLOW;
+  return -1;
 }
diff --git a/fusl/src/time/nanosleep.c b/fusl/src/time/nanosleep.c
index a2ff483..3445b7f 100644
--- a/fusl/src/time/nanosleep.c
+++ b/fusl/src/time/nanosleep.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int nanosleep(const struct timespec *req, struct timespec *rem)
-{
-	return syscall_cp(SYS_nanosleep, req, rem);
+int nanosleep(const struct timespec* req, struct timespec* rem) {
+  return syscall_cp(SYS_nanosleep, req, rem);
 }
diff --git a/fusl/src/time/strftime.c b/fusl/src/time/strftime.c
index f1ccc4d..63bbaaa 100644
--- a/fusl/src/time/strftime.c
+++ b/fusl/src/time/strftime.c
@@ -9,266 +9,294 @@
 #include "libc.h"
 #include "time_impl.h"
 
-const char *__nl_langinfo_l(nl_item, locale_t);
+const char* __nl_langinfo_l(nl_item, locale_t);
 
-static int is_leap(int y)
-{
-	/* Avoid overflow */
-	if (y>INT_MAX-1900) y -= 2000;
-	y += 1900;
-	return !(y%4) && ((y%100) || !(y%400));
+static int is_leap(int y) {
+  /* Avoid overflow */
+  if (y > INT_MAX - 1900)
+    y -= 2000;
+  y += 1900;
+  return !(y % 4) && ((y % 100) || !(y % 400));
 }
 
-static int week_num(const struct tm *tm)
-{
-	int val = (tm->tm_yday + 7U - (tm->tm_wday+6U)%7) / 7;
-	/* If 1 Jan is just 1-3 days past Monday,
-	 * the previous week is also in this year. */
-	if ((tm->tm_wday + 371U - tm->tm_yday - 2) % 7 <= 2)
-		val++;
-	if (!val) {
-		val = 52;
-		/* If 31 December of prev year a Thursday,
-		 * or Friday of a leap year, then the
-		 * prev year has 53 weeks. */
-		int dec31 = (tm->tm_wday + 7U - tm->tm_yday - 1) % 7;
-		if (dec31 == 4 || (dec31 == 5 && is_leap(tm->tm_year%400-1)))
-			val++;
-	} else if (val == 53) {
-		/* If 1 January is not a Thursday, and not
-		 * a Wednesday of a leap year, then this
-		 * year has only 52 weeks. */
-		int jan1 = (tm->tm_wday + 371U - tm->tm_yday) % 7;
-		if (jan1 != 4 && (jan1 != 3 || !is_leap(tm->tm_year)))
-			val = 1;
-	}
-	return val;
+static int week_num(const struct tm* tm) {
+  int val = (tm->tm_yday + 7U - (tm->tm_wday + 6U) % 7) / 7;
+  /* If 1 Jan is just 1-3 days past Monday,
+   * the previous week is also in this year. */
+  if ((tm->tm_wday + 371U - tm->tm_yday - 2) % 7 <= 2)
+    val++;
+  if (!val) {
+    val = 52;
+    /* If 31 December of prev year a Thursday,
+     * or Friday of a leap year, then the
+     * prev year has 53 weeks. */
+    int dec31 = (tm->tm_wday + 7U - tm->tm_yday - 1) % 7;
+    if (dec31 == 4 || (dec31 == 5 && is_leap(tm->tm_year % 400 - 1)))
+      val++;
+  } else if (val == 53) {
+    /* If 1 January is not a Thursday, and not
+     * a Wednesday of a leap year, then this
+     * year has only 52 weeks. */
+    int jan1 = (tm->tm_wday + 371U - tm->tm_yday) % 7;
+    if (jan1 != 4 && (jan1 != 3 || !is_leap(tm->tm_year)))
+      val = 1;
+  }
+  return val;
 }
 
-const char *__tm_to_tzname(const struct tm *);
-size_t __strftime_l(char *restrict, size_t, const char *restrict, const struct tm *restrict, locale_t);
+const char* __tm_to_tzname(const struct tm*);
+size_t __strftime_l(char* restrict,
+                    size_t,
+                    const char* restrict,
+                    const struct tm* restrict,
+                    locale_t);
 
-const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm *tm, locale_t loc)
-{
-	nl_item item;
-	long long val;
-	const char *fmt = "-";
-	int width = 2;
+const char* __strftime_fmt_1(char (*s)[100],
+                             size_t* l,
+                             int f,
+                             const struct tm* tm,
+                             locale_t loc) {
+  nl_item item;
+  long long val;
+  const char* fmt = "-";
+  int width = 2;
 
-	switch (f) {
-	case 'a':
-		if (tm->tm_wday > 6U) goto string;
-		item = ABDAY_1 + tm->tm_wday;
-		goto nl_strcat;
-	case 'A':
-		if (tm->tm_wday > 6U) goto string;
-		item = DAY_1 + tm->tm_wday;
-		goto nl_strcat;
-	case 'h':
-	case 'b':
-		if (tm->tm_mon > 11U) goto string;
-		item = ABMON_1 + tm->tm_mon;
-		goto nl_strcat;
-	case 'B':
-		if (tm->tm_mon > 11U) goto string;
-		item = MON_1 + tm->tm_mon;
-		goto nl_strcat;
-	case 'c':
-		item = D_T_FMT;
-		goto nl_strftime;
-	case 'C':
-		val = (1900LL+tm->tm_year) / 100;
-		goto number;
-	case 'd':
-		val = tm->tm_mday;
-		goto number;
-	case 'D':
-		fmt = "%m/%d/%y";
-		goto recu_strftime;
-	case 'e':
-		*l = snprintf(*s, sizeof *s, "%2d", tm->tm_mday);
-		return *s;
-	case 'F':
-		fmt = "%Y-%m-%d";
-		goto recu_strftime;
-	case 'g':
-	case 'G':
-		val = tm->tm_year + 1900LL;
-		if (tm->tm_yday < 3 && week_num(tm) != 1) val--;
-		else if (tm->tm_yday > 360 && week_num(tm) == 1) val++;
-		if (f=='g') val %= 100;
-		else width = 4;
-		goto number;
-	case 'H':
-		val = tm->tm_hour;
-		goto number;
-	case 'I':
-		val = tm->tm_hour;
-		if (!val) val = 12;
-		else if (val > 12) val -= 12;
-		goto number;
-	case 'j':
-		val = tm->tm_yday+1;
-		width = 3;
-		goto number;
-	case 'm':
-		val = tm->tm_mon+1;
-		goto number;
-	case 'M':
-		val = tm->tm_min;
-		goto number;
-	case 'n':
-		*l = 1;
-		return "\n";
-	case 'p':
-		item = tm->tm_hour >= 12 ? PM_STR : AM_STR;
-		goto nl_strcat;
-	case 'r':
-		item = T_FMT_AMPM;
-		goto nl_strftime;
-	case 'R':
-		fmt = "%H:%M";
-		goto recu_strftime;
-	case 's':
-		val = __tm_to_secs(tm) - tm->__tm_gmtoff;
-		width = 1;
-		goto number;
-	case 'S':
-		val = tm->tm_sec;
-		goto number;
-	case 't':
-		*l = 1;
-		return "\t";
-	case 'T':
-		fmt = "%H:%M:%S";
-		goto recu_strftime;
-	case 'u':
-		val = tm->tm_wday ? tm->tm_wday : 7;
-		width = 1;
-		goto number;
-	case 'U':
-		val = (tm->tm_yday + 7U - tm->tm_wday) / 7;
-		goto number;
-	case 'W':
-		val = (tm->tm_yday + 7U - (tm->tm_wday+6U)%7) / 7;
-		goto number;
-	case 'V':
-		val = week_num(tm);
-		goto number;
-	case 'w':
-		val = tm->tm_wday;
-		width = 1;
-		goto number;
-	case 'x':
-		item = D_FMT;
-		goto nl_strftime;
-	case 'X':
-		item = T_FMT;
-		goto nl_strftime;
-	case 'y':
-		val = tm->tm_year % 100;
-		goto number;
-	case 'Y':
-		val = tm->tm_year + 1900LL;
-		if (val >= 10000) {
-			*l = snprintf(*s, sizeof *s, "+%lld", val);
-			return *s;
-		}
-		width = 4;
-		goto number;
-	case 'z':
-		if (tm->tm_isdst < 0) {
-			*l = 0;
-			return "";
-		}
-		*l = snprintf(*s, sizeof *s, "%+.2d%.2d",
-			(tm->__tm_gmtoff)/3600,
-			abs(tm->__tm_gmtoff%3600)/60);
-		return *s;
-	case 'Z':
-		if (tm->tm_isdst < 0) {
-			*l = 0;
-			return "";
-		}
-		fmt = __tm_to_tzname(tm);
-		goto string;
-	case '%':
-		*l = 1;
-		return "%";
-	default:
-		return 0;
-	}
+  switch (f) {
+    case 'a':
+      if (tm->tm_wday > 6U)
+        goto string;
+      item = ABDAY_1 + tm->tm_wday;
+      goto nl_strcat;
+    case 'A':
+      if (tm->tm_wday > 6U)
+        goto string;
+      item = DAY_1 + tm->tm_wday;
+      goto nl_strcat;
+    case 'h':
+    case 'b':
+      if (tm->tm_mon > 11U)
+        goto string;
+      item = ABMON_1 + tm->tm_mon;
+      goto nl_strcat;
+    case 'B':
+      if (tm->tm_mon > 11U)
+        goto string;
+      item = MON_1 + tm->tm_mon;
+      goto nl_strcat;
+    case 'c':
+      item = D_T_FMT;
+      goto nl_strftime;
+    case 'C':
+      val = (1900LL + tm->tm_year) / 100;
+      goto number;
+    case 'd':
+      val = tm->tm_mday;
+      goto number;
+    case 'D':
+      fmt = "%m/%d/%y";
+      goto recu_strftime;
+    case 'e':
+      *l = snprintf(*s, sizeof *s, "%2d", tm->tm_mday);
+      return *s;
+    case 'F':
+      fmt = "%Y-%m-%d";
+      goto recu_strftime;
+    case 'g':
+    case 'G':
+      val = tm->tm_year + 1900LL;
+      if (tm->tm_yday < 3 && week_num(tm) != 1)
+        val--;
+      else if (tm->tm_yday > 360 && week_num(tm) == 1)
+        val++;
+      if (f == 'g')
+        val %= 100;
+      else
+        width = 4;
+      goto number;
+    case 'H':
+      val = tm->tm_hour;
+      goto number;
+    case 'I':
+      val = tm->tm_hour;
+      if (!val)
+        val = 12;
+      else if (val > 12)
+        val -= 12;
+      goto number;
+    case 'j':
+      val = tm->tm_yday + 1;
+      width = 3;
+      goto number;
+    case 'm':
+      val = tm->tm_mon + 1;
+      goto number;
+    case 'M':
+      val = tm->tm_min;
+      goto number;
+    case 'n':
+      *l = 1;
+      return "\n";
+    case 'p':
+      item = tm->tm_hour >= 12 ? PM_STR : AM_STR;
+      goto nl_strcat;
+    case 'r':
+      item = T_FMT_AMPM;
+      goto nl_strftime;
+    case 'R':
+      fmt = "%H:%M";
+      goto recu_strftime;
+    case 's':
+      val = __tm_to_secs(tm) - tm->__tm_gmtoff;
+      width = 1;
+      goto number;
+    case 'S':
+      val = tm->tm_sec;
+      goto number;
+    case 't':
+      *l = 1;
+      return "\t";
+    case 'T':
+      fmt = "%H:%M:%S";
+      goto recu_strftime;
+    case 'u':
+      val = tm->tm_wday ? tm->tm_wday : 7;
+      width = 1;
+      goto number;
+    case 'U':
+      val = (tm->tm_yday + 7U - tm->tm_wday) / 7;
+      goto number;
+    case 'W':
+      val = (tm->tm_yday + 7U - (tm->tm_wday + 6U) % 7) / 7;
+      goto number;
+    case 'V':
+      val = week_num(tm);
+      goto number;
+    case 'w':
+      val = tm->tm_wday;
+      width = 1;
+      goto number;
+    case 'x':
+      item = D_FMT;
+      goto nl_strftime;
+    case 'X':
+      item = T_FMT;
+      goto nl_strftime;
+    case 'y':
+      val = tm->tm_year % 100;
+      goto number;
+    case 'Y':
+      val = tm->tm_year + 1900LL;
+      if (val >= 10000) {
+        *l = snprintf(*s, sizeof *s, "+%lld", val);
+        return *s;
+      }
+      width = 4;
+      goto number;
+    case 'z':
+      if (tm->tm_isdst < 0) {
+        *l = 0;
+        return "";
+      }
+      *l = snprintf(*s, sizeof *s, "%+.2d%.2d", (tm->__tm_gmtoff) / 3600,
+                    abs(tm->__tm_gmtoff % 3600) / 60);
+      return *s;
+    case 'Z':
+      if (tm->tm_isdst < 0) {
+        *l = 0;
+        return "";
+      }
+      fmt = __tm_to_tzname(tm);
+      goto string;
+    case '%':
+      *l = 1;
+      return "%";
+    default:
+      return 0;
+  }
 number:
-	*l = snprintf(*s, sizeof *s, "%0*lld", width, val);
-	return *s;
+  *l = snprintf(*s, sizeof *s, "%0*lld", width, val);
+  return *s;
 nl_strcat:
-	fmt = __nl_langinfo_l(item, loc);
+  fmt = __nl_langinfo_l(item, loc);
 string:
-	*l = strlen(fmt);
-	return fmt;
+  *l = strlen(fmt);
+  return fmt;
 nl_strftime:
-	fmt = __nl_langinfo_l(item, loc);
+  fmt = __nl_langinfo_l(item, loc);
 recu_strftime:
-	*l = __strftime_l(*s, sizeof *s, fmt, tm, loc);
-	if (!*l) return 0;
-	return *s;
+  *l = __strftime_l(*s, sizeof *s, fmt, tm, loc);
+  if (!*l)
+    return 0;
+  return *s;
 }
 
-size_t __strftime_l(char *restrict s, size_t n, const char *restrict f, const struct tm *restrict tm, locale_t loc)
-{
-	size_t l, k;
-	char buf[100];
-	char *p;
-	const char *t;
-	int plus;
-	unsigned long width;
-	for (l=0; l<n; f++) {
-		if (!*f) {
-			s[l] = 0;
-			return l;
-		}
-		if (*f != '%') {
-			s[l++] = *f;
-			continue;
-		}
-		f++;
-		if ((plus = (*f == '+'))) f++;
-		width = strtoul(f, &p, 10);
-		if (*p == 'C' || *p == 'F' || *p == 'G' || *p == 'Y') {
-			if (!width && p!=f) width = 1;
-		} else {
-			width = 0;
-		}
-		f = p;
-		if (*f == 'E' || *f == 'O') f++;
-		t = __strftime_fmt_1(&buf, &k, *f, tm, loc);
-		if (!t) break;
-		if (width) {
-			for (; *t=='+' || *t=='-' || (*t=='0'&&t[1]); t++, k--);
-			width--;
-			if (plus && tm->tm_year >= 10000-1900)
-				s[l++] = '+';
-			else if (tm->tm_year < -1900)
-				s[l++] = '-';
-			else
-				width++;
-			for (; width > k && l < n; width--)
-				s[l++] = '0';
-		}
-		if (k > n-l) k = n-l;
-		memcpy(s+l, t, k);
-		l += k;
-	}
-	if (n) {
-		if (l==n) l=n-1;
-		s[l] = 0;
-	}
-	return 0;
+size_t __strftime_l(char* restrict s,
+                    size_t n,
+                    const char* restrict f,
+                    const struct tm* restrict tm,
+                    locale_t loc) {
+  size_t l, k;
+  char buf[100];
+  char* p;
+  const char* t;
+  int plus;
+  unsigned long width;
+  for (l = 0; l < n; f++) {
+    if (!*f) {
+      s[l] = 0;
+      return l;
+    }
+    if (*f != '%') {
+      s[l++] = *f;
+      continue;
+    }
+    f++;
+    if ((plus = (*f == '+')))
+      f++;
+    width = strtoul(f, &p, 10);
+    if (*p == 'C' || *p == 'F' || *p == 'G' || *p == 'Y') {
+      if (!width && p != f)
+        width = 1;
+    } else {
+      width = 0;
+    }
+    f = p;
+    if (*f == 'E' || *f == 'O')
+      f++;
+    t = __strftime_fmt_1(&buf, &k, *f, tm, loc);
+    if (!t)
+      break;
+    if (width) {
+      for (; *t == '+' || *t == '-' || (*t == '0' && t[1]); t++, k--)
+        ;
+      width--;
+      if (plus && tm->tm_year >= 10000 - 1900)
+        s[l++] = '+';
+      else if (tm->tm_year < -1900)
+        s[l++] = '-';
+      else
+        width++;
+      for (; width > k && l < n; width--)
+        s[l++] = '0';
+    }
+    if (k > n - l)
+      k = n - l;
+    memcpy(s + l, t, k);
+    l += k;
+  }
+  if (n) {
+    if (l == n)
+      l = n - 1;
+    s[l] = 0;
+  }
+  return 0;
 }
 
-size_t strftime(char *restrict s, size_t n, const char *restrict f, const struct tm *restrict tm)
-{
-	return __strftime_l(s, n, f, tm, CURRENT_LOCALE);
+size_t strftime(char* restrict s,
+                size_t n,
+                const char* restrict f,
+                const struct tm* restrict tm) {
+  return __strftime_l(s, n, f, tm, CURRENT_LOCALE);
 }
 
 weak_alias(__strftime_l, strftime_l);
diff --git a/fusl/src/time/strptime.c b/fusl/src/time/strptime.c
index f41f55f..3a1bfce 100644
--- a/fusl/src/time/strptime.c
+++ b/fusl/src/time/strptime.c
@@ -6,192 +6,223 @@
 #include <string.h>
 #include <strings.h>
 
-char *strptime(const char *restrict s, const char *restrict f, struct tm *restrict tm)
-{
-	int i, w, neg, adj, min, range, *dest, dummy;
-	const char *ex;
-	size_t len;
-	int want_century = 0, century = 0;
-	while (*f) {
-		if (*f != '%') {
-			if (isspace(*f)) for (; *s && isspace(*s); s++);
-			else if (*s != *f) return 0;
-			else s++;
-			f++;
-			continue;
-		}
-		f++;
-		if (*f == '+') f++;
-		if (isdigit(*f)) w=strtoul(f, (void *)&f, 10);
-		else w=-1;
-		adj=0;
-		switch (*f++) {
-		case 'a': case 'A':
-			dest = &tm->tm_wday;
-			min = ABDAY_1;
-			range = 7;
-			goto symbolic_range;
-		case 'b': case 'B': case 'h':
-			dest = &tm->tm_mon;
-			min = ABMON_1;
-			range = 12;
-			goto symbolic_range;
-		case 'c':
-			s = strptime(s, nl_langinfo(D_T_FMT), tm);
-			if (!s) return 0;
-			break;
-		case 'C':
-			dest = &century;
-			if (w<0) w=2;
-			want_century |= 2;
-			goto numeric_digits;
-		case 'd': case 'e':
-			dest = &tm->tm_mday;
-			min = 1;
-			range = 31;
-			goto numeric_range;
-		case 'D':
-			s = strptime(s, "%m/%d/%y", tm);
-			if (!s) return 0;
-			break;
-		case 'H':
-			dest = &tm->tm_hour;
-			min = 0;
-			range = 24;
-			goto numeric_range;
-		case 'I':
-			dest = &tm->tm_hour;
-			min = 1;
-			range = 12;
-			goto numeric_range;
-		case 'j':
-			dest = &tm->tm_yday;
-			min = 1;
-			range = 366;
-			goto numeric_range;
-		case 'm':
-			dest = &tm->tm_mon;
-			min = 1;
-			range = 12;
-			adj = 1;
-			goto numeric_range;
-		case 'M':
-			dest = &tm->tm_min;
-			min = 0;
-			range = 60;
-			goto numeric_range;
-		case 'n': case 't':
-			for (; *s && isspace(*s); s++);
-			break;
-		case 'p':
-			ex = nl_langinfo(AM_STR);
-			len = strlen(ex);
-			if (!strncasecmp(s, ex, len)) {
-				tm->tm_hour %= 12;
-				break;
-			}
-			ex = nl_langinfo(PM_STR);
-			len = strlen(ex);
-			if (!strncasecmp(s, ex, len)) {
-				tm->tm_hour %= 12;
-				tm->tm_hour += 12;
-				break;
-			}
-			return 0;
-		case 'r':
-			s = strptime(s, nl_langinfo(T_FMT_AMPM), tm);
-			if (!s) return 0;
-			break;
-		case 'R':
-			s = strptime(s, "%H:%M", tm);
-			if (!s) return 0;
-			break;
-		case 'S':
-			dest = &tm->tm_sec;
-			min = 0;
-			range = 61;
-			goto numeric_range;
-		case 'T':
-			s = strptime(s, "%H:%M:%S", tm);
-			if (!s) return 0;
-			break;
-		case 'U':
-		case 'W':
-			/* Throw away result, for now. (FIXME?) */
-			dest = &dummy;
-			min = 0;
-			range = 54;
-			goto numeric_range;
-		case 'w':
-			dest = &tm->tm_wday;
-			min = 0;
-			range = 7;
-			goto numeric_range;
-		case 'x':
-			s = strptime(s, nl_langinfo(D_FMT), tm);
-			if (!s) return 0;
-			break;
-		case 'X':
-			s = strptime(s, nl_langinfo(T_FMT), tm);
-			if (!s) return 0;
-			break;
-		case 'y':
-			dest = &tm->tm_year;
-			w = 2;
-			want_century |= 1;
-			goto numeric_digits;
-		case 'Y':
-			dest = &tm->tm_year;
-			if (w<0) w=4;
-			adj = 1900;
-			want_century = 0;
-			goto numeric_digits;
-		case '%':
-			if (*s++ != '%') return 0;
-			break;
-		default:
-			return 0;
-		numeric_range:
-			if (!isdigit(*s)) return 0;
-			*dest = 0;
-			for (i=1; i<=min+range && isdigit(*s); i*=10)
-				*dest = *dest * 10 + *s++ - '0';
-			if (*dest - min >= (unsigned)range) return 0;
-			*dest -= adj;
-			switch((char *)dest - (char *)tm) {
-			case offsetof(struct tm, tm_yday):
-				;
-			}
-			goto update;
-		numeric_digits:
-			neg = 0;
-			if (*s == '+') s++;
-			else if (*s == '-') neg=1, s++;
-			if (!isdigit(*s)) return 0;
-			for (*dest=i=0; i<w && isdigit(*s); i++)
-				*dest = *dest * 10 + *s++ - '0';
-			if (neg) *dest = -*dest;
-			*dest -= adj;
-			goto update;
-		symbolic_range:
-			for (i=2*range-1; i>=0; i--) {
-				ex = nl_langinfo(min+i);
-				len = strlen(ex);
-				if (strncasecmp(s, ex, len)) continue;
-				s += len;
-				*dest = i % range;
-				break;
-			}
-			if (i<0) return 0;
-			goto update;
-		update:
-			//FIXME
-			;
-		}
-	}
-	if (want_century) {
-		if (want_century & 2) tm->tm_year += century * 100 - 1900;
-		else if (tm->tm_year <= 68) tm->tm_year += 100;
-	}
-	return (char *)s;
+char* strptime(const char* restrict s,
+               const char* restrict f,
+               struct tm* restrict tm) {
+  int i, w, neg, adj, min, range, *dest, dummy;
+  const char* ex;
+  size_t len;
+  int want_century = 0, century = 0;
+  while (*f) {
+    if (*f != '%') {
+      if (isspace(*f))
+        for (; *s && isspace(*s); s++)
+          ;
+      else if (*s != *f)
+        return 0;
+      else
+        s++;
+      f++;
+      continue;
+    }
+    f++;
+    if (*f == '+')
+      f++;
+    if (isdigit(*f))
+      w = strtoul(f, (void*)&f, 10);
+    else
+      w = -1;
+    adj = 0;
+    switch (*f++) {
+      case 'a':
+      case 'A':
+        dest = &tm->tm_wday;
+        min = ABDAY_1;
+        range = 7;
+        goto symbolic_range;
+      case 'b':
+      case 'B':
+      case 'h':
+        dest = &tm->tm_mon;
+        min = ABMON_1;
+        range = 12;
+        goto symbolic_range;
+      case 'c':
+        s = strptime(s, nl_langinfo(D_T_FMT), tm);
+        if (!s)
+          return 0;
+        break;
+      case 'C':
+        dest = &century;
+        if (w < 0)
+          w = 2;
+        want_century |= 2;
+        goto numeric_digits;
+      case 'd':
+      case 'e':
+        dest = &tm->tm_mday;
+        min = 1;
+        range = 31;
+        goto numeric_range;
+      case 'D':
+        s = strptime(s, "%m/%d/%y", tm);
+        if (!s)
+          return 0;
+        break;
+      case 'H':
+        dest = &tm->tm_hour;
+        min = 0;
+        range = 24;
+        goto numeric_range;
+      case 'I':
+        dest = &tm->tm_hour;
+        min = 1;
+        range = 12;
+        goto numeric_range;
+      case 'j':
+        dest = &tm->tm_yday;
+        min = 1;
+        range = 366;
+        goto numeric_range;
+      case 'm':
+        dest = &tm->tm_mon;
+        min = 1;
+        range = 12;
+        adj = 1;
+        goto numeric_range;
+      case 'M':
+        dest = &tm->tm_min;
+        min = 0;
+        range = 60;
+        goto numeric_range;
+      case 'n':
+      case 't':
+        for (; *s && isspace(*s); s++)
+          ;
+        break;
+      case 'p':
+        ex = nl_langinfo(AM_STR);
+        len = strlen(ex);
+        if (!strncasecmp(s, ex, len)) {
+          tm->tm_hour %= 12;
+          break;
+        }
+        ex = nl_langinfo(PM_STR);
+        len = strlen(ex);
+        if (!strncasecmp(s, ex, len)) {
+          tm->tm_hour %= 12;
+          tm->tm_hour += 12;
+          break;
+        }
+        return 0;
+      case 'r':
+        s = strptime(s, nl_langinfo(T_FMT_AMPM), tm);
+        if (!s)
+          return 0;
+        break;
+      case 'R':
+        s = strptime(s, "%H:%M", tm);
+        if (!s)
+          return 0;
+        break;
+      case 'S':
+        dest = &tm->tm_sec;
+        min = 0;
+        range = 61;
+        goto numeric_range;
+      case 'T':
+        s = strptime(s, "%H:%M:%S", tm);
+        if (!s)
+          return 0;
+        break;
+      case 'U':
+      case 'W':
+        /* Throw away result, for now. (FIXME?) */
+        dest = &dummy;
+        min = 0;
+        range = 54;
+        goto numeric_range;
+      case 'w':
+        dest = &tm->tm_wday;
+        min = 0;
+        range = 7;
+        goto numeric_range;
+      case 'x':
+        s = strptime(s, nl_langinfo(D_FMT), tm);
+        if (!s)
+          return 0;
+        break;
+      case 'X':
+        s = strptime(s, nl_langinfo(T_FMT), tm);
+        if (!s)
+          return 0;
+        break;
+      case 'y':
+        dest = &tm->tm_year;
+        w = 2;
+        want_century |= 1;
+        goto numeric_digits;
+      case 'Y':
+        dest = &tm->tm_year;
+        if (w < 0)
+          w = 4;
+        adj = 1900;
+        want_century = 0;
+        goto numeric_digits;
+      case '%':
+        if (*s++ != '%')
+          return 0;
+        break;
+      default:
+        return 0;
+      numeric_range:
+        if (!isdigit(*s))
+          return 0;
+        *dest = 0;
+        for (i = 1; i <= min + range && isdigit(*s); i *= 10)
+          *dest = *dest * 10 + *s++ - '0';
+        if (*dest - min >= (unsigned)range)
+          return 0;
+        *dest -= adj;
+        switch ((char*)dest - (char*)tm) { case offsetof(struct tm, tm_yday):; }
+        goto update;
+      numeric_digits:
+        neg = 0;
+        if (*s == '+')
+          s++;
+        else if (*s == '-')
+          neg = 1, s++;
+        if (!isdigit(*s))
+          return 0;
+        for (*dest = i = 0; i < w && isdigit(*s); i++)
+          *dest = *dest * 10 + *s++ - '0';
+        if (neg)
+          *dest = -*dest;
+        *dest -= adj;
+        goto update;
+      symbolic_range:
+        for (i = 2 * range - 1; i >= 0; i--) {
+          ex = nl_langinfo(min + i);
+          len = strlen(ex);
+          if (strncasecmp(s, ex, len))
+            continue;
+          s += len;
+          *dest = i % range;
+          break;
+        }
+        if (i < 0)
+          return 0;
+        goto update;
+      update:
+          // FIXME
+          ;
+    }
+  }
+  if (want_century) {
+    if (want_century & 2)
+      tm->tm_year += century * 100 - 1900;
+    else if (tm->tm_year <= 68)
+      tm->tm_year += 100;
+  }
+  return (char*)s;
 }
diff --git a/fusl/src/time/time.c b/fusl/src/time/time.c
index 4b95e75..49e3d64 100644
--- a/fusl/src/time/time.c
+++ b/fusl/src/time/time.c
@@ -1,12 +1,12 @@
 #include <time.h>
 #include "syscall.h"
 
-int __clock_gettime(clockid_t, struct timespec *);
+int __clock_gettime(clockid_t, struct timespec*);
 
-time_t time(time_t *t)
-{
-	struct timespec ts;
-	__clock_gettime(CLOCK_REALTIME, &ts);
-	if (t) *t = ts.tv_sec;
-	return ts.tv_sec;
+time_t time(time_t* t) {
+  struct timespec ts;
+  __clock_gettime(CLOCK_REALTIME, &ts);
+  if (t)
+    *t = ts.tv_sec;
+  return ts.tv_sec;
 }
diff --git a/fusl/src/time/time_impl.h b/fusl/src/time/time_impl.h
index 2e9a2c0..fae2def 100644
--- a/fusl/src/time/time_impl.h
+++ b/fusl/src/time/time_impl.h
@@ -2,8 +2,8 @@
 
 int __days_in_month(int, int);
 int __month_to_secs(int, int);
-long long __year_to_secs(long long, int *);
-long long __tm_to_secs(const struct tm *);
-int __secs_to_tm(long long, struct tm *);
-void __secs_to_zone(long long, int, int *, long *, long *, const char **);
-const unsigned char *__map_file(const char *, size_t *);
+long long __year_to_secs(long long, int*);
+long long __tm_to_secs(const struct tm*);
+int __secs_to_tm(long long, struct tm*);
+void __secs_to_zone(long long, int, int*, long*, long*, const char**);
+const unsigned char* __map_file(const char*, size_t*);
diff --git a/fusl/src/time/timegm.c b/fusl/src/time/timegm.c
index b5dae8b..5f43840 100644
--- a/fusl/src/time/timegm.c
+++ b/fusl/src/time/timegm.c
@@ -4,17 +4,16 @@
 
 extern const char __gmt[];
 
-time_t timegm(struct tm *tm)
-{
-	struct tm new;
-	long long t = __tm_to_secs(tm);
-	if (__secs_to_tm(t, &new) < 0) {
-		errno = EOVERFLOW;
-		return -1;
-	}
-	*tm = new;
-	tm->tm_isdst = 0;
-	tm->__tm_gmtoff = 0;
-	tm->__tm_zone = __gmt;
-	return t;
+time_t timegm(struct tm* tm) {
+  struct tm new;
+  long long t = __tm_to_secs(tm);
+  if (__secs_to_tm(t, &new) < 0) {
+    errno = EOVERFLOW;
+    return -1;
+  }
+  *tm = new;
+  tm->tm_isdst = 0;
+  tm->__tm_gmtoff = 0;
+  tm->__tm_zone = __gmt;
+  return t;
 }
diff --git a/fusl/src/time/timer_create.c b/fusl/src/time/timer_create.c
index b54a524..4f76c26 100644
--- a/fusl/src/time/timer_create.c
+++ b/fusl/src/time/timer_create.c
@@ -3,139 +3,132 @@
 #include "pthread_impl.h"
 
 struct ksigevent {
-	union sigval sigev_value;
-	int sigev_signo;
-	int sigev_notify;
-	int sigev_tid;
+  union sigval sigev_value;
+  int sigev_signo;
+  int sigev_notify;
+  int sigev_tid;
 };
 
 struct start_args {
-	pthread_barrier_t b;
-	struct sigevent *sev;
+  pthread_barrier_t b;
+  struct sigevent* sev;
 };
 
-static void dummy_1(pthread_t self)
-{
-}
+static void dummy_1(pthread_t self) {}
 weak_alias(dummy_1, __pthread_tsd_run_dtors);
 
 void __reset_tls();
 
-static void cleanup_fromsig(void *p)
-{
-	pthread_t self = __pthread_self();
-	__pthread_tsd_run_dtors(self);
-	self->cancel = 0;
-	self->cancelbuf = 0;
-	self->canceldisable = 0;
-	self->cancelasync = 0;
-	self->unblock_cancel = 0;
-	__reset_tls();
-	longjmp(p, 1);
+static void cleanup_fromsig(void* p) {
+  pthread_t self = __pthread_self();
+  __pthread_tsd_run_dtors(self);
+  self->cancel = 0;
+  self->cancelbuf = 0;
+  self->canceldisable = 0;
+  self->cancelasync = 0;
+  self->unblock_cancel = 0;
+  __reset_tls();
+  longjmp(p, 1);
 }
 
-static void timer_handler(int sig, siginfo_t *si, void *ctx)
-{
-	pthread_t self = __pthread_self();
-	jmp_buf jb;
-	void (*notify)(union sigval) = (void (*)(union sigval))self->start;
-	union sigval val = { .sival_ptr = self->start_arg };
+static void timer_handler(int sig, siginfo_t* si, void* ctx) {
+  pthread_t self = __pthread_self();
+  jmp_buf jb;
+  void (*notify)(union sigval) = (void (*)(union sigval))self->start;
+  union sigval val = {.sival_ptr = self->start_arg};
 
-	if (!setjmp(jb) && si->si_code == SI_TIMER) {
-		pthread_cleanup_push(cleanup_fromsig, jb);
-		notify(val);
-		pthread_cleanup_pop(1);
-	}
+  if (!setjmp(jb) && si->si_code == SI_TIMER) {
+    pthread_cleanup_push(cleanup_fromsig, jb);
+    notify(val);
+    pthread_cleanup_pop(1);
+  }
 }
 
-static void install_handler()
-{
-	struct sigaction sa = {
-		.sa_sigaction = timer_handler,
-		.sa_flags = SA_SIGINFO | SA_RESTART
-	};
-	__libc_sigaction(SIGTIMER, &sa, 0);
+static void install_handler() {
+  struct sigaction sa = {.sa_sigaction = timer_handler,
+                         .sa_flags = SA_SIGINFO | SA_RESTART};
+  __libc_sigaction(SIGTIMER, &sa, 0);
 }
 
-static void *start(void *arg)
-{
-	pthread_t self = __pthread_self();
-	struct start_args *args = arg;
-	int id;
+static void* start(void* arg) {
+  pthread_t self = __pthread_self();
+  struct start_args* args = arg;
+  int id;
 
-	/* Reuse no-longer-needed thread structure fields to avoid
-	 * needing the timer address in the signal handler. */
-	self->start = (void *(*)(void *))args->sev->sigev_notify_function;
-	self->start_arg = args->sev->sigev_value.sival_ptr;
+  /* Reuse no-longer-needed thread structure fields to avoid
+   * needing the timer address in the signal handler. */
+  self->start = (void* (*)(void*))args->sev->sigev_notify_function;
+  self->start_arg = args->sev->sigev_value.sival_ptr;
 
-	pthread_barrier_wait(&args->b);
-	if ((id = self->timer_id) >= 0) {
-		__syscall(SYS_rt_sigprocmask, SIG_UNBLOCK,
-			SIGTIMER_SET, 0, _NSIG/8);
-		__wait(&self->timer_id, 0, id, 1);
-		__syscall(SYS_timer_delete, id);
-	}
-	return 0;
+  pthread_barrier_wait(&args->b);
+  if ((id = self->timer_id) >= 0) {
+    __syscall(SYS_rt_sigprocmask, SIG_UNBLOCK, SIGTIMER_SET, 0, _NSIG / 8);
+    __wait(&self->timer_id, 0, id, 1);
+    __syscall(SYS_timer_delete, id);
+  }
+  return 0;
 }
 
-int timer_create(clockid_t clk, struct sigevent *restrict evp, timer_t *restrict res)
-{
-	static pthread_once_t once = PTHREAD_ONCE_INIT;
-	pthread_t td;
-	pthread_attr_t attr;
-	int r;
-	struct start_args args;
-	struct ksigevent ksev, *ksevp=0;
-	int timerid;
-	sigset_t set;
+int timer_create(clockid_t clk,
+                 struct sigevent* restrict evp,
+                 timer_t* restrict res) {
+  static pthread_once_t once = PTHREAD_ONCE_INIT;
+  pthread_t td;
+  pthread_attr_t attr;
+  int r;
+  struct start_args args;
+  struct ksigevent ksev, *ksevp = 0;
+  int timerid;
+  sigset_t set;
 
-	switch (evp ? evp->sigev_notify : SIGEV_SIGNAL) {
-	case SIGEV_NONE:
-	case SIGEV_SIGNAL:
-		if (evp) {
-			ksev.sigev_value = evp->sigev_value;
-			ksev.sigev_signo = evp->sigev_signo;
-			ksev.sigev_notify = evp->sigev_notify;
-			ksev.sigev_tid = 0;
-			ksevp = &ksev;
-		}
-		if (syscall(SYS_timer_create, clk, ksevp, &timerid) < 0)
-			return -1;
-		*res = (void *)(intptr_t)timerid;
-		break;
-	case SIGEV_THREAD:
-		pthread_once(&once, install_handler);
-		if (evp->sigev_notify_attributes)
-			attr = *evp->sigev_notify_attributes;
-		else
-			pthread_attr_init(&attr);
-		pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
-		pthread_barrier_init(&args.b, 0, 2);
-		args.sev = evp;
+  switch (evp ? evp->sigev_notify : SIGEV_SIGNAL) {
+    case SIGEV_NONE:
+    case SIGEV_SIGNAL:
+      if (evp) {
+        ksev.sigev_value = evp->sigev_value;
+        ksev.sigev_signo = evp->sigev_signo;
+        ksev.sigev_notify = evp->sigev_notify;
+        ksev.sigev_tid = 0;
+        ksevp = &ksev;
+      }
+      if (syscall(SYS_timer_create, clk, ksevp, &timerid) < 0)
+        return -1;
+      *res = (void*)(intptr_t)timerid;
+      break;
+    case SIGEV_THREAD:
+      pthread_once(&once, install_handler);
+      if (evp->sigev_notify_attributes)
+        attr = *evp->sigev_notify_attributes;
+      else
+        pthread_attr_init(&attr);
+      pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
+      pthread_barrier_init(&args.b, 0, 2);
+      args.sev = evp;
 
-		__block_app_sigs(&set);
-		r = pthread_create(&td, &attr, start, &args);
-		__restore_sigs(&set);
-		if (r) {
-			errno = r;
-			return -1;
-		}
+      __block_app_sigs(&set);
+      r = pthread_create(&td, &attr, start, &args);
+      __restore_sigs(&set);
+      if (r) {
+        errno = r;
+        return -1;
+      }
 
-		ksev.sigev_value.sival_ptr = 0;
-		ksev.sigev_signo = SIGTIMER;
-		ksev.sigev_notify = 4; /* SIGEV_THREAD_ID */
-		ksev.sigev_tid = td->tid;
-		if (syscall(SYS_timer_create, clk, &ksev, &timerid) < 0)
-			timerid = -1;
-		td->timer_id = timerid;
-		pthread_barrier_wait(&args.b);
-		if (timerid < 0) return -1;
-		*res = (void *)(INTPTR_MIN | (uintptr_t)td>>1);
-		break;
-	default:
-		errno = EINVAL;
-		return -1;
-	}
+      ksev.sigev_value.sival_ptr = 0;
+      ksev.sigev_signo = SIGTIMER;
+      ksev.sigev_notify = 4; /* SIGEV_THREAD_ID */
+      ksev.sigev_tid = td->tid;
+      if (syscall(SYS_timer_create, clk, &ksev, &timerid) < 0)
+        timerid = -1;
+      td->timer_id = timerid;
+      pthread_barrier_wait(&args.b);
+      if (timerid < 0)
+        return -1;
+      *res = (void*)(INTPTR_MIN | (uintptr_t)td >> 1);
+      break;
+    default:
+      errno = EINVAL;
+      return -1;
+  }
 
-	return 0;
+  return 0;
 }
diff --git a/fusl/src/time/timer_delete.c b/fusl/src/time/timer_delete.c
index 7c97eeb..89586e6 100644
--- a/fusl/src/time/timer_delete.c
+++ b/fusl/src/time/timer_delete.c
@@ -2,13 +2,12 @@
 #include <limits.h>
 #include "pthread_impl.h"
 
-int timer_delete(timer_t t)
-{
-	if ((intptr_t)t < 0) {
-		pthread_t td = (void *)((uintptr_t)t << 1);
-		a_store(&td->timer_id, td->timer_id | INT_MIN);
-		__wake(&td->timer_id, 1, 1);
-		return 0;
-	}
-	return __syscall(SYS_timer_delete, t);
+int timer_delete(timer_t t) {
+  if ((intptr_t)t < 0) {
+    pthread_t td = (void*)((uintptr_t)t << 1);
+    a_store(&td->timer_id, td->timer_id | INT_MIN);
+    __wake(&td->timer_id, 1, 1);
+    return 0;
+  }
+  return __syscall(SYS_timer_delete, t);
 }
diff --git a/fusl/src/time/timer_getoverrun.c b/fusl/src/time/timer_getoverrun.c
index e7f891e..9ba649e 100644
--- a/fusl/src/time/timer_getoverrun.c
+++ b/fusl/src/time/timer_getoverrun.c
@@ -2,11 +2,10 @@
 #include <limits.h>
 #include "pthread_impl.h"
 
-int timer_getoverrun(timer_t t)
-{
-	if ((intptr_t)t < 0) {
-		pthread_t td = (void *)((uintptr_t)t << 1);
-		t = (void *)(uintptr_t)(td->timer_id & INT_MAX);
-	}
-	return syscall(SYS_timer_getoverrun, t);
+int timer_getoverrun(timer_t t) {
+  if ((intptr_t)t < 0) {
+    pthread_t td = (void*)((uintptr_t)t << 1);
+    t = (void*)(uintptr_t)(td->timer_id & INT_MAX);
+  }
+  return syscall(SYS_timer_getoverrun, t);
 }
diff --git a/fusl/src/time/timer_gettime.c b/fusl/src/time/timer_gettime.c
index ed6d8d6..ef15741 100644
--- a/fusl/src/time/timer_gettime.c
+++ b/fusl/src/time/timer_gettime.c
@@ -2,11 +2,10 @@
 #include <limits.h>
 #include "pthread_impl.h"
 
-int timer_gettime(timer_t t, struct itimerspec *val)
-{
-	if ((intptr_t)t < 0) {
-		pthread_t td = (void *)((uintptr_t)t << 1);
-		t = (void *)(uintptr_t)(td->timer_id & INT_MAX);
-	}
-	return syscall(SYS_timer_gettime, t, val);
+int timer_gettime(timer_t t, struct itimerspec* val) {
+  if ((intptr_t)t < 0) {
+    pthread_t td = (void*)((uintptr_t)t << 1);
+    t = (void*)(uintptr_t)(td->timer_id & INT_MAX);
+  }
+  return syscall(SYS_timer_gettime, t, val);
 }
diff --git a/fusl/src/time/timer_settime.c b/fusl/src/time/timer_settime.c
index 62631aa..c7b4edc 100644
--- a/fusl/src/time/timer_settime.c
+++ b/fusl/src/time/timer_settime.c
@@ -2,11 +2,13 @@
 #include <limits.h>
 #include "pthread_impl.h"
 
-int timer_settime(timer_t t, int flags, const struct itimerspec *restrict val, struct itimerspec *restrict old)
-{
-	if ((intptr_t)t < 0) {
-		pthread_t td = (void *)((uintptr_t)t << 1);
-		t = (void *)(uintptr_t)(td->timer_id & INT_MAX);
-	}
-	return syscall(SYS_timer_settime, t, flags, val, old);
+int timer_settime(timer_t t,
+                  int flags,
+                  const struct itimerspec* restrict val,
+                  struct itimerspec* restrict old) {
+  if ((intptr_t)t < 0) {
+    pthread_t td = (void*)((uintptr_t)t << 1);
+    t = (void*)(uintptr_t)(td->timer_id & INT_MAX);
+  }
+  return syscall(SYS_timer_settime, t, flags, val, old);
 }
diff --git a/fusl/src/time/times.c b/fusl/src/time/times.c
index c4a100f..b6f49cc 100644
--- a/fusl/src/time/times.c
+++ b/fusl/src/time/times.c
@@ -1,7 +1,6 @@
 #include <sys/times.h>
 #include "syscall.h"
 
-clock_t times(struct tms *tms)
-{
-	return __syscall(SYS_times, tms);
+clock_t times(struct tms* tms) {
+  return __syscall(SYS_times, tms);
 }
diff --git a/fusl/src/time/timespec_get.c b/fusl/src/time/timespec_get.c
index 03c5a77..60f5774 100644
--- a/fusl/src/time/timespec_get.c
+++ b/fusl/src/time/timespec_get.c
@@ -1,12 +1,12 @@
 #include <time.h>
 
-int __clock_gettime(clockid_t, struct timespec *);
+int __clock_gettime(clockid_t, struct timespec*);
 
 /* There is no other implemented value than TIME_UTC; all other values
  * are considered erroneous. */
-int timespec_get(struct timespec * ts, int base)
-{
-	if (base != TIME_UTC) return 0;
-	int ret = __clock_gettime(CLOCK_REALTIME, ts);
-	return ret < 0 ? 0 : base;
+int timespec_get(struct timespec* ts, int base) {
+  if (base != TIME_UTC)
+    return 0;
+  int ret = __clock_gettime(CLOCK_REALTIME, ts);
+  return ret < 0 ? 0 : base;
 }
diff --git a/fusl/src/time/utime.c b/fusl/src/time/utime.c
index e7592b2..3f02351 100644
--- a/fusl/src/time/utime.c
+++ b/fusl/src/time/utime.c
@@ -3,9 +3,10 @@
 #include <time.h>
 #include <fcntl.h>
 
-int utime(const char *path, const struct utimbuf *times)
-{
-	return utimensat(AT_FDCWD, path, times ? ((struct timespec [2]){
-		{ .tv_sec = times->actime }, { .tv_sec = times->modtime }})
-		: 0, 0);
+int utime(const char* path, const struct utimbuf* times) {
+  return utimensat(AT_FDCWD, path,
+                   times ? ((struct timespec[2]){{.tv_sec = times->actime},
+                                                 {.tv_sec = times->modtime}})
+                         : 0,
+                   0);
 }
diff --git a/fusl/src/time/wcsftime.c b/fusl/src/time/wcsftime.c
index 638e64f..0acf012 100644
--- a/fusl/src/time/wcsftime.c
+++ b/fusl/src/time/wcsftime.c
@@ -4,68 +4,85 @@
 #include "locale_impl.h"
 #include "libc.h"
 
-const char *__strftime_fmt_1(char (*s)[100], size_t *l, int f, const struct tm *tm, locale_t loc);
+const char* __strftime_fmt_1(char (*s)[100],
+                             size_t* l,
+                             int f,
+                             const struct tm* tm,
+                             locale_t loc);
 
-size_t __wcsftime_l(wchar_t *restrict s, size_t n, const wchar_t *restrict f, const struct tm *restrict tm, locale_t loc)
-{
-	size_t l, k;
-	char buf[100];
-	wchar_t wbuf[100];
-	wchar_t *p;
-	const char *t_mb;
-	const wchar_t *t;
-	int plus;
-	unsigned long width;
-	for (l=0; l<n; f++) {
-		if (!*f) {
-			s[l] = 0;
-			return l;
-		}
-		if (*f != '%') {
-			s[l++] = *f;
-			continue;
-		}
-		f++;
-		if ((plus = (*f == '+'))) f++;
-		width = wcstoul(f, &p, 10);
-		if (*p == 'C' || *p == 'F' || *p == 'G' || *p == 'Y') {
-			if (!width && p!=f) width = 1;
-		} else {
-			width = 0;
-		}
-		f = p;
-		if (*f == 'E' || *f == 'O') f++;
-		t_mb = __strftime_fmt_1(&buf, &k, *f, tm, loc);
-		if (!t_mb) break;
-		k = mbstowcs(wbuf, t_mb, sizeof wbuf / sizeof *wbuf);
-		if (k == (size_t)-1) return 0;
-		t = wbuf;
-		if (width) {
-			for (; *t=='+' || *t=='-' || (*t=='0'&&t[1]); t++, k--);
-			width--;
-			if (plus && tm->tm_year >= 10000-1900)
-				s[l++] = '+';
-			else if (tm->tm_year < -1900)
-				s[l++] = '-';
-			else
-				width++;
-			for (; width > k && l < n; width--)
-				s[l++] = '0';
-		}
-		if (k >= n-l) k = n-l;
-		wmemcpy(s+l, t, k);
-		l += k;
-	}
-	if (n) {
-		if (l==n) l=n-1;
-		s[l] = 0;
-	}
-	return 0;
+size_t __wcsftime_l(wchar_t* restrict s,
+                    size_t n,
+                    const wchar_t* restrict f,
+                    const struct tm* restrict tm,
+                    locale_t loc) {
+  size_t l, k;
+  char buf[100];
+  wchar_t wbuf[100];
+  wchar_t* p;
+  const char* t_mb;
+  const wchar_t* t;
+  int plus;
+  unsigned long width;
+  for (l = 0; l < n; f++) {
+    if (!*f) {
+      s[l] = 0;
+      return l;
+    }
+    if (*f != '%') {
+      s[l++] = *f;
+      continue;
+    }
+    f++;
+    if ((plus = (*f == '+')))
+      f++;
+    width = wcstoul(f, &p, 10);
+    if (*p == 'C' || *p == 'F' || *p == 'G' || *p == 'Y') {
+      if (!width && p != f)
+        width = 1;
+    } else {
+      width = 0;
+    }
+    f = p;
+    if (*f == 'E' || *f == 'O')
+      f++;
+    t_mb = __strftime_fmt_1(&buf, &k, *f, tm, loc);
+    if (!t_mb)
+      break;
+    k = mbstowcs(wbuf, t_mb, sizeof wbuf / sizeof *wbuf);
+    if (k == (size_t)-1)
+      return 0;
+    t = wbuf;
+    if (width) {
+      for (; *t == '+' || *t == '-' || (*t == '0' && t[1]); t++, k--)
+        ;
+      width--;
+      if (plus && tm->tm_year >= 10000 - 1900)
+        s[l++] = '+';
+      else if (tm->tm_year < -1900)
+        s[l++] = '-';
+      else
+        width++;
+      for (; width > k && l < n; width--)
+        s[l++] = '0';
+    }
+    if (k >= n - l)
+      k = n - l;
+    wmemcpy(s + l, t, k);
+    l += k;
+  }
+  if (n) {
+    if (l == n)
+      l = n - 1;
+    s[l] = 0;
+  }
+  return 0;
 }
 
-size_t wcsftime(wchar_t *restrict wcs, size_t n, const wchar_t *restrict f, const struct tm *restrict tm)
-{
-	return __wcsftime_l(wcs, n, f, tm, CURRENT_LOCALE);
+size_t wcsftime(wchar_t* restrict wcs,
+                size_t n,
+                const wchar_t* restrict f,
+                const struct tm* restrict tm) {
+  return __wcsftime_l(wcs, n, f, tm, CURRENT_LOCALE);
 }
 
 weak_alias(__wcsftime_l, wcsftime_l);
diff --git a/fusl/src/unistd/_exit.c b/fusl/src/unistd/_exit.c
index 7699482..2341198 100644
--- a/fusl/src/unistd/_exit.c
+++ b/fusl/src/unistd/_exit.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include <stdlib.h>
 
-_Noreturn void _exit(int status)
-{
-	_Exit(status);
+_Noreturn void _exit(int status) {
+  _Exit(status);
 }
diff --git a/fusl/src/unistd/access.c b/fusl/src/unistd/access.c
index d6eed68..56f975b 100644
--- a/fusl/src/unistd/access.c
+++ b/fusl/src/unistd/access.c
@@ -2,11 +2,10 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int access(const char *filename, int amode)
-{
+int access(const char* filename, int amode) {
 #ifdef SYS_access
-	return syscall(SYS_access, filename, amode);
+  return syscall(SYS_access, filename, amode);
 #else
-	return syscall(SYS_faccessat, AT_FDCWD, filename, amode, 0);
+  return syscall(SYS_faccessat, AT_FDCWD, filename, amode, 0);
 #endif
 }
diff --git a/fusl/src/unistd/acct.c b/fusl/src/unistd/acct.c
index f6f25a8..aee69c9 100644
--- a/fusl/src/unistd/acct.c
+++ b/fusl/src/unistd/acct.c
@@ -3,7 +3,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int acct(const char *filename)
-{
-	return syscall(SYS_acct, filename);
+int acct(const char* filename) {
+  return syscall(SYS_acct, filename);
 }
diff --git a/fusl/src/unistd/alarm.c b/fusl/src/unistd/alarm.c
index 2e3263a..fbee382 100644
--- a/fusl/src/unistd/alarm.c
+++ b/fusl/src/unistd/alarm.c
@@ -2,9 +2,8 @@
 #include <sys/time.h>
 #include "syscall.h"
 
-unsigned alarm(unsigned seconds)
-{
-	struct itimerval it = { .it_value.tv_sec = seconds };
-	__syscall(SYS_setitimer, ITIMER_REAL, &it, &it);
-	return it.it_value.tv_sec + !!it.it_value.tv_usec;
+unsigned alarm(unsigned seconds) {
+  struct itimerval it = {.it_value.tv_sec = seconds};
+  __syscall(SYS_setitimer, ITIMER_REAL, &it, &it);
+  return it.it_value.tv_sec + !!it.it_value.tv_usec;
 }
diff --git a/fusl/src/unistd/chdir.c b/fusl/src/unistd/chdir.c
index 5ba78b6..ba11836 100644
--- a/fusl/src/unistd/chdir.c
+++ b/fusl/src/unistd/chdir.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int chdir(const char *path)
-{
-	return syscall(SYS_chdir, path);
+int chdir(const char* path) {
+  return syscall(SYS_chdir, path);
 }
diff --git a/fusl/src/unistd/chown.c b/fusl/src/unistd/chown.c
index 14b0325..f8f2910 100644
--- a/fusl/src/unistd/chown.c
+++ b/fusl/src/unistd/chown.c
@@ -2,11 +2,10 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int chown(const char *path, uid_t uid, gid_t gid)
-{
+int chown(const char* path, uid_t uid, gid_t gid) {
 #ifdef SYS_chown
-	return syscall(SYS_chown, path, uid, gid);
+  return syscall(SYS_chown, path, uid, gid);
 #else
-	return syscall(SYS_fchownat, AT_FDCWD, path, uid, gid, 0);
+  return syscall(SYS_fchownat, AT_FDCWD, path, uid, gid, 0);
 #endif
 }
diff --git a/fusl/src/unistd/close.c b/fusl/src/unistd/close.c
index fa3c6ca..2f632e6 100644
--- a/fusl/src/unistd/close.c
+++ b/fusl/src/unistd/close.c
@@ -3,17 +3,16 @@
 #include "syscall.h"
 #include "libc.h"
 
-static int dummy(int fd)
-{
-	return fd;
+static int dummy(int fd) {
+  return fd;
 }
 
 weak_alias(dummy, __aio_close);
 
-int close(int fd)
-{
-	fd = __aio_close(fd);
-	int r = __syscall_cp(SYS_close, fd);
-	if (r == -EINTR) r = 0;
-	return __syscall_ret(r);
+int close(int fd) {
+  fd = __aio_close(fd);
+  int r = __syscall_cp(SYS_close, fd);
+  if (r == -EINTR)
+    r = 0;
+  return __syscall_ret(r);
 }
diff --git a/fusl/src/unistd/ctermid.c b/fusl/src/unistd/ctermid.c
index 1612770..5d48428 100644
--- a/fusl/src/unistd/ctermid.c
+++ b/fusl/src/unistd/ctermid.c
@@ -1,7 +1,6 @@
 #include <stdio.h>
 #include <string.h>
 
-char *ctermid(char *s)
-{
-	return s ? strcpy(s, "/dev/tty") : "/dev/tty";
+char* ctermid(char* s) {
+  return s ? strcpy(s, "/dev/tty") : "/dev/tty";
 }
diff --git a/fusl/src/unistd/dup.c b/fusl/src/unistd/dup.c
index 7fee012..8778d27 100644
--- a/fusl/src/unistd/dup.c
+++ b/fusl/src/unistd/dup.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int dup(int fd)
-{
-	return syscall(SYS_dup, fd);
+int dup(int fd) {
+  return syscall(SYS_dup, fd);
 }
diff --git a/fusl/src/unistd/dup2.c b/fusl/src/unistd/dup2.c
index 8f43c6d..5ffd9b0 100644
--- a/fusl/src/unistd/dup2.c
+++ b/fusl/src/unistd/dup2.c
@@ -3,18 +3,20 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int dup2(int old, int new)
-{
-	int r;
+int dup2(int old, int new) {
+  int r;
 #ifdef SYS_dup2
-	while ((r=__syscall(SYS_dup2, old, new))==-EBUSY);
+  while ((r = __syscall(SYS_dup2, old, new)) == -EBUSY)
+    ;
 #else
-	if (old==new) {
-		r = __syscall(SYS_fcntl, old, F_GETFD);
-		if (r >= 0) return old;
-	} else {
-		while ((r=__syscall(SYS_dup3, old, new, 0))==-EBUSY);
-	}
+  if (old == new) {
+    r = __syscall(SYS_fcntl, old, F_GETFD);
+    if (r >= 0)
+      return old;
+  } else {
+    while ((r = __syscall(SYS_dup3, old, new, 0)) == -EBUSY)
+      ;
+  }
 #endif
-	return __syscall_ret(r);
+  return __syscall_ret(r);
 }
diff --git a/fusl/src/unistd/dup3.c b/fusl/src/unistd/dup3.c
index 0eb6caf..1a694a7 100644
--- a/fusl/src/unistd/dup3.c
+++ b/fusl/src/unistd/dup3.c
@@ -5,21 +5,26 @@
 #include "syscall.h"
 #include "libc.h"
 
-int __dup3(int old, int new, int flags)
-{
-	int r;
+int __dup3(int old, int new, int flags) {
+  int r;
 #ifdef SYS_dup2
-	if (old==new) return __syscall_ret(-EINVAL);
-	if (flags & O_CLOEXEC) {
-		while ((r=__syscall(SYS_dup3, old, new, flags))==-EBUSY);
-		if (r!=-ENOSYS) return __syscall_ret(r);
-	}
-	while ((r=__syscall(SYS_dup2, old, new))==-EBUSY);
-	if (flags & O_CLOEXEC) __syscall(SYS_fcntl, new, F_SETFD, FD_CLOEXEC);
+  if (old == new)
+    return __syscall_ret(-EINVAL);
+  if (flags & O_CLOEXEC) {
+    while ((r = __syscall(SYS_dup3, old, new, flags)) == -EBUSY)
+      ;
+    if (r != -ENOSYS)
+      return __syscall_ret(r);
+  }
+  while ((r = __syscall(SYS_dup2, old, new)) == -EBUSY)
+    ;
+  if (flags & O_CLOEXEC)
+    __syscall(SYS_fcntl, new, F_SETFD, FD_CLOEXEC);
 #else
-	while ((r=__syscall(SYS_dup3, old, new, flags))==-EBUSY);
+  while ((r = __syscall(SYS_dup3, old, new, flags)) == -EBUSY)
+    ;
 #endif
-	return __syscall_ret(r);
+  return __syscall_ret(r);
 }
 
 weak_alias(__dup3, dup3);
diff --git a/fusl/src/unistd/faccessat.c b/fusl/src/unistd/faccessat.c
index 3347895..408df85 100644
--- a/fusl/src/unistd/faccessat.c
+++ b/fusl/src/unistd/faccessat.c
@@ -6,58 +6,55 @@
 #include "pthread_impl.h"
 
 struct ctx {
-	int fd;
-	const char *filename;
-	int amode;
+  int fd;
+  const char* filename;
+  int amode;
 };
 
 static const int errors[] = {
-	0, -EACCES, -ELOOP, -ENAMETOOLONG, -ENOENT, -ENOTDIR,
-	-EROFS, -EBADF, -EINVAL, -ETXTBSY,
-	-EFAULT, -EIO, -ENOMEM,
-	-EBUSY
-};
+    0,      -EACCES, -ELOOP,   -ENAMETOOLONG, -ENOENT, -ENOTDIR, -EROFS,
+    -EBADF, -EINVAL, -ETXTBSY, -EFAULT,       -EIO,    -ENOMEM,  -EBUSY};
 
-static int checker(void *p)
-{
-	struct ctx *c = p;
-	int ret;
-	int i;
-	if (__syscall(SYS_setregid, __syscall(SYS_getegid), -1)
-	    || __syscall(SYS_setreuid, __syscall(SYS_geteuid), -1))
-		__syscall(SYS_exit, 1);
-	ret = __syscall(SYS_faccessat, c->fd, c->filename, c->amode, 0);
-	for (i=0; i < sizeof errors/sizeof *errors - 1 && ret!=errors[i]; i++);
-	return i;
+static int checker(void* p) {
+  struct ctx* c = p;
+  int ret;
+  int i;
+  if (__syscall(SYS_setregid, __syscall(SYS_getegid), -1) ||
+      __syscall(SYS_setreuid, __syscall(SYS_geteuid), -1))
+    __syscall(SYS_exit, 1);
+  ret = __syscall(SYS_faccessat, c->fd, c->filename, c->amode, 0);
+  for (i = 0; i < sizeof errors / sizeof *errors - 1 && ret != errors[i]; i++)
+    ;
+  return i;
 }
 
-int faccessat(int fd, const char *filename, int amode, int flag)
-{
-	if (!flag || (flag==AT_EACCESS && getuid()==geteuid() && getgid()==getegid()))
-		return syscall(SYS_faccessat, fd, filename, amode, flag);
+int faccessat(int fd, const char* filename, int amode, int flag) {
+  if (!flag ||
+      (flag == AT_EACCESS && getuid() == geteuid() && getgid() == getegid()))
+    return syscall(SYS_faccessat, fd, filename, amode, flag);
 
-	if (flag != AT_EACCESS)
-		return __syscall_ret(-EINVAL);
+  if (flag != AT_EACCESS)
+    return __syscall_ret(-EINVAL);
 
-	char stack[1024];
-	sigset_t set;
-	pid_t pid;
-	int ret = -EBUSY;
-	struct ctx c = { .fd = fd, .filename = filename, .amode = amode };
+  char stack[1024];
+  sigset_t set;
+  pid_t pid;
+  int ret = -EBUSY;
+  struct ctx c = {.fd = fd, .filename = filename, .amode = amode};
 
-	__block_all_sigs(&set);
-	
-	pid = __clone(checker, stack+sizeof stack, 0, &c);
-	if (pid > 0) {
-		int status;
-		do {
-			__syscall(SYS_wait4, pid, &status, __WCLONE, 0);
-		} while (!WIFEXITED(status) && !WIFSIGNALED(status));
-		if (WIFEXITED(status))
-			ret = errors[WEXITSTATUS(status)];
-	}
+  __block_all_sigs(&set);
 
-	__restore_sigs(&set);
+  pid = __clone(checker, stack + sizeof stack, 0, &c);
+  if (pid > 0) {
+    int status;
+    do {
+      __syscall(SYS_wait4, pid, &status, __WCLONE, 0);
+    } while (!WIFEXITED(status) && !WIFSIGNALED(status));
+    if (WIFEXITED(status))
+      ret = errors[WEXITSTATUS(status)];
+  }
 
-	return __syscall_ret(ret);
+  __restore_sigs(&set);
+
+  return __syscall_ret(ret);
 }
diff --git a/fusl/src/unistd/fchdir.c b/fusl/src/unistd/fchdir.c
index 72c3915..fbfe668 100644
--- a/fusl/src/unistd/fchdir.c
+++ b/fusl/src/unistd/fchdir.c
@@ -3,15 +3,14 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-void __procfdname(char *, unsigned);
+void __procfdname(char*, unsigned);
 
-int fchdir(int fd)
-{
-	int ret = __syscall(SYS_fchdir, fd);
-	if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0)
-		return __syscall_ret(ret);
+int fchdir(int fd) {
+  int ret = __syscall(SYS_fchdir, fd);
+  if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0)
+    return __syscall_ret(ret);
 
-	char buf[15+3*sizeof(int)];
-	__procfdname(buf, fd);
-	return syscall(SYS_chdir, buf);
+  char buf[15 + 3 * sizeof(int)];
+  __procfdname(buf, fd);
+  return syscall(SYS_chdir, buf);
 }
diff --git a/fusl/src/unistd/fchown.c b/fusl/src/unistd/fchown.c
index 0345984..72a3fa0 100644
--- a/fusl/src/unistd/fchown.c
+++ b/fusl/src/unistd/fchown.c
@@ -3,20 +3,18 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-void __procfdname(char *, unsigned);
+void __procfdname(char*, unsigned);
 
-int fchown(int fd, uid_t uid, gid_t gid)
-{
-	int ret = __syscall(SYS_fchown, fd, uid, gid);
-	if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0)
-		return __syscall_ret(ret);
+int fchown(int fd, uid_t uid, gid_t gid) {
+  int ret = __syscall(SYS_fchown, fd, uid, gid);
+  if (ret != -EBADF || __syscall(SYS_fcntl, fd, F_GETFD) < 0)
+    return __syscall_ret(ret);
 
-	char buf[15+3*sizeof(int)];
-	__procfdname(buf, fd);
+  char buf[15 + 3 * sizeof(int)];
+  __procfdname(buf, fd);
 #ifdef SYS_chown
-	return syscall(SYS_chown, buf, uid, gid);
+  return syscall(SYS_chown, buf, uid, gid);
 #else
-	return syscall(SYS_fchownat, AT_FDCWD, buf, uid, gid);
+  return syscall(SYS_fchownat, AT_FDCWD, buf, uid, gid);
 #endif
-
 }
diff --git a/fusl/src/unistd/fchownat.c b/fusl/src/unistd/fchownat.c
index 62457a3..55887a6 100644
--- a/fusl/src/unistd/fchownat.c
+++ b/fusl/src/unistd/fchownat.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int fchownat(int fd, const char *path, uid_t uid, gid_t gid, int flag)
-{
-	return syscall(SYS_fchownat, fd, path, uid, gid, flag);
+int fchownat(int fd, const char* path, uid_t uid, gid_t gid, int flag) {
+  return syscall(SYS_fchownat, fd, path, uid, gid, flag);
 }
diff --git a/fusl/src/unistd/fdatasync.c b/fusl/src/unistd/fdatasync.c
index 3895ae5..429bd43 100644
--- a/fusl/src/unistd/fdatasync.c
+++ b/fusl/src/unistd/fdatasync.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int fdatasync(int fd)
-{
-	return syscall_cp(SYS_fdatasync, fd);
+int fdatasync(int fd) {
+  return syscall_cp(SYS_fdatasync, fd);
 }
diff --git a/fusl/src/unistd/fsync.c b/fusl/src/unistd/fsync.c
index 7a1c80b..48e56dd 100644
--- a/fusl/src/unistd/fsync.c
+++ b/fusl/src/unistd/fsync.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int fsync(int fd)
-{
-	return syscall_cp(SYS_fsync, fd);
+int fsync(int fd) {
+  return syscall_cp(SYS_fsync, fd);
 }
diff --git a/fusl/src/unistd/ftruncate.c b/fusl/src/unistd/ftruncate.c
index 467135f..b1e7cdb 100644
--- a/fusl/src/unistd/ftruncate.c
+++ b/fusl/src/unistd/ftruncate.c
@@ -2,9 +2,8 @@
 #include "syscall.h"
 #include "libc.h"
 
-int ftruncate(int fd, off_t length)
-{
-	return syscall(SYS_ftruncate, fd, __SYSCALL_LL_O(length));
+int ftruncate(int fd, off_t length) {
+  return syscall(SYS_ftruncate, fd, __SYSCALL_LL_O(length));
 }
 
 LFS64(ftruncate);
diff --git a/fusl/src/unistd/getcwd.c b/fusl/src/unistd/getcwd.c
index a7b925d..3523bd1 100644
--- a/fusl/src/unistd/getcwd.c
+++ b/fusl/src/unistd/getcwd.c
@@ -4,16 +4,16 @@
 #include <string.h>
 #include "syscall.h"
 
-char *getcwd(char *buf, size_t size)
-{
-	char tmp[PATH_MAX];
-	if (!buf) {
-		buf = tmp;
-		size = PATH_MAX;
-	} else if (!size) {
-		errno = EINVAL;
-		return 0;
-	}
-	if (syscall(SYS_getcwd, buf, size) < 0) return 0;
-	return buf == tmp ? strdup(buf) : buf;
+char* getcwd(char* buf, size_t size) {
+  char tmp[PATH_MAX];
+  if (!buf) {
+    buf = tmp;
+    size = PATH_MAX;
+  } else if (!size) {
+    errno = EINVAL;
+    return 0;
+  }
+  if (syscall(SYS_getcwd, buf, size) < 0)
+    return 0;
+  return buf == tmp ? strdup(buf) : buf;
 }
diff --git a/fusl/src/unistd/getegid.c b/fusl/src/unistd/getegid.c
index 6287490..2f1f1d9 100644
--- a/fusl/src/unistd/getegid.c
+++ b/fusl/src/unistd/getegid.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-gid_t getegid(void)
-{
-	return __syscall(SYS_getegid);
+gid_t getegid(void) {
+  return __syscall(SYS_getegid);
 }
diff --git a/fusl/src/unistd/geteuid.c b/fusl/src/unistd/geteuid.c
index 88f2cd5..14e7229 100644
--- a/fusl/src/unistd/geteuid.c
+++ b/fusl/src/unistd/geteuid.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-uid_t geteuid(void)
-{
-	return __syscall(SYS_geteuid);
+uid_t geteuid(void) {
+  return __syscall(SYS_geteuid);
 }
diff --git a/fusl/src/unistd/getgid.c b/fusl/src/unistd/getgid.c
index 1c9fe71..6dd7975 100644
--- a/fusl/src/unistd/getgid.c
+++ b/fusl/src/unistd/getgid.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-gid_t getgid(void)
-{
-	return __syscall(SYS_getgid);
+gid_t getgid(void) {
+  return __syscall(SYS_getgid);
 }
diff --git a/fusl/src/unistd/getgroups.c b/fusl/src/unistd/getgroups.c
index 0e6e63a..077cf18 100644
--- a/fusl/src/unistd/getgroups.c
+++ b/fusl/src/unistd/getgroups.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int getgroups(int count, gid_t list[])
-{
-	return syscall(SYS_getgroups, count, list);
+int getgroups(int count, gid_t list[]) {
+  return syscall(SYS_getgroups, count, list);
 }
diff --git a/fusl/src/unistd/gethostname.c b/fusl/src/unistd/gethostname.c
index f984b7d..64b2e44 100644
--- a/fusl/src/unistd/gethostname.c
+++ b/fusl/src/unistd/gethostname.c
@@ -1,13 +1,16 @@
 #include <unistd.h>
 #include <sys/utsname.h>
 
-int gethostname(char *name, size_t len)
-{
-	size_t i;
-	struct utsname uts;
-	if (uname(&uts)) return -1;
-	if (len > sizeof uts.nodename) len = sizeof uts.nodename;
-	for (i=0; i<len && (name[i] = uts.nodename[i]); i++);
-	if (i==len) name[i-1] = 0;
-	return 0;
+int gethostname(char* name, size_t len) {
+  size_t i;
+  struct utsname uts;
+  if (uname(&uts))
+    return -1;
+  if (len > sizeof uts.nodename)
+    len = sizeof uts.nodename;
+  for (i = 0; i < len && (name[i] = uts.nodename[i]); i++)
+    ;
+  if (i == len)
+    name[i - 1] = 0;
+  return 0;
 }
diff --git a/fusl/src/unistd/getlogin.c b/fusl/src/unistd/getlogin.c
index 0601191..d149057 100644
--- a/fusl/src/unistd/getlogin.c
+++ b/fusl/src/unistd/getlogin.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include <stdlib.h>
 
-char *getlogin(void)
-{
-	return getenv("LOGNAME");
+char* getlogin(void) {
+  return getenv("LOGNAME");
 }
diff --git a/fusl/src/unistd/getlogin_r.c b/fusl/src/unistd/getlogin_r.c
index 53866c6..54a3565 100644
--- a/fusl/src/unistd/getlogin_r.c
+++ b/fusl/src/unistd/getlogin_r.c
@@ -2,11 +2,12 @@
 #include <string.h>
 #include <errno.h>
 
-int getlogin_r(char *name, size_t size)
-{
-	char *logname = getlogin();
-	if (!logname) return ENXIO; /* or...? */
-	if (strlen(logname) >= size) return ERANGE;
-	strcpy(name, logname);
-	return 0;
+int getlogin_r(char* name, size_t size) {
+  char* logname = getlogin();
+  if (!logname)
+    return ENXIO; /* or...? */
+  if (strlen(logname) >= size)
+    return ERANGE;
+  strcpy(name, logname);
+  return 0;
 }
diff --git a/fusl/src/unistd/getpgid.c b/fusl/src/unistd/getpgid.c
index d295bfd..4673a0f 100644
--- a/fusl/src/unistd/getpgid.c
+++ b/fusl/src/unistd/getpgid.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-pid_t getpgid(pid_t pid)
-{
-	return syscall(SYS_getpgid, pid);
+pid_t getpgid(pid_t pid) {
+  return syscall(SYS_getpgid, pid);
 }
diff --git a/fusl/src/unistd/getpgrp.c b/fusl/src/unistd/getpgrp.c
index 90e9bb0..6035de9 100644
--- a/fusl/src/unistd/getpgrp.c
+++ b/fusl/src/unistd/getpgrp.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-pid_t getpgrp(void)
-{
-	return __syscall(SYS_getpgid, 0);
+pid_t getpgrp(void) {
+  return __syscall(SYS_getpgid, 0);
 }
diff --git a/fusl/src/unistd/getpid.c b/fusl/src/unistd/getpid.c
index a6d4e6d..3728c1a 100644
--- a/fusl/src/unistd/getpid.c
+++ b/fusl/src/unistd/getpid.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-pid_t getpid(void)
-{
-	return __syscall(SYS_getpid);
+pid_t getpid(void) {
+  return __syscall(SYS_getpid);
 }
diff --git a/fusl/src/unistd/getppid.c b/fusl/src/unistd/getppid.c
index 05cade5..a61d735 100644
--- a/fusl/src/unistd/getppid.c
+++ b/fusl/src/unistd/getppid.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-pid_t getppid(void)
-{
-	return __syscall(SYS_getppid);
+pid_t getppid(void) {
+  return __syscall(SYS_getppid);
 }
diff --git a/fusl/src/unistd/getsid.c b/fusl/src/unistd/getsid.c
index 93ba690..a80f8d7 100644
--- a/fusl/src/unistd/getsid.c
+++ b/fusl/src/unistd/getsid.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-pid_t getsid(pid_t pid)
-{
-	return syscall(SYS_getsid, pid);
+pid_t getsid(pid_t pid) {
+  return syscall(SYS_getsid, pid);
 }
diff --git a/fusl/src/unistd/getuid.c b/fusl/src/unistd/getuid.c
index 61309d1..4814b8a 100644
--- a/fusl/src/unistd/getuid.c
+++ b/fusl/src/unistd/getuid.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-uid_t getuid(void)
-{
-	return __syscall(SYS_getuid);
+uid_t getuid(void) {
+  return __syscall(SYS_getuid);
 }
diff --git a/fusl/src/unistd/isatty.c b/fusl/src/unistd/isatty.c
index c8badaf..6d73c17 100644
--- a/fusl/src/unistd/isatty.c
+++ b/fusl/src/unistd/isatty.c
@@ -2,8 +2,7 @@
 #include <sys/ioctl.h>
 #include "syscall.h"
 
-int isatty(int fd)
-{
-	struct winsize wsz;
-	return !__syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz);
+int isatty(int fd) {
+  struct winsize wsz;
+  return !__syscall(SYS_ioctl, fd, TIOCGWINSZ, &wsz);
 }
diff --git a/fusl/src/unistd/lchown.c b/fusl/src/unistd/lchown.c
index ccd5ee0..43d0a75 100644
--- a/fusl/src/unistd/lchown.c
+++ b/fusl/src/unistd/lchown.c
@@ -2,11 +2,10 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int lchown(const char *path, uid_t uid, gid_t gid)
-{
+int lchown(const char* path, uid_t uid, gid_t gid) {
 #ifdef SYS_lchown
-	return syscall(SYS_lchown, path, uid, gid);
+  return syscall(SYS_lchown, path, uid, gid);
 #else
-	return syscall(SYS_fchownat, AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW);
+  return syscall(SYS_fchownat, AT_FDCWD, path, uid, gid, AT_SYMLINK_NOFOLLOW);
 #endif
 }
diff --git a/fusl/src/unistd/link.c b/fusl/src/unistd/link.c
index feec18e..79e3ee9 100644
--- a/fusl/src/unistd/link.c
+++ b/fusl/src/unistd/link.c
@@ -2,11 +2,10 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int link(const char *existing, const char *new)
-{
+int link(const char* existing, const char* new) {
 #ifdef SYS_link
-	return syscall(SYS_link, existing, new);
+  return syscall(SYS_link, existing, new);
 #else
-	return syscall(SYS_linkat, AT_FDCWD, existing, AT_FDCWD, new, 0);
+  return syscall(SYS_linkat, AT_FDCWD, existing, AT_FDCWD, new, 0);
 #endif
 }
diff --git a/fusl/src/unistd/linkat.c b/fusl/src/unistd/linkat.c
index 6a9a0b7..77fab1a 100644
--- a/fusl/src/unistd/linkat.c
+++ b/fusl/src/unistd/linkat.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int linkat(int fd1, const char *existing, int fd2, const char *new, int flag)
-{
-	return syscall(SYS_linkat, fd1, existing, fd2, new, flag);
+int linkat(int fd1, const char* existing, int fd2, const char* new, int flag) {
+  return syscall(SYS_linkat, fd1, existing, fd2, new, flag);
 }
diff --git a/fusl/src/unistd/lseek.c b/fusl/src/unistd/lseek.c
index 0a5ed39..6eec8ac 100644
--- a/fusl/src/unistd/lseek.c
+++ b/fusl/src/unistd/lseek.c
@@ -2,13 +2,14 @@
 #include "syscall.h"
 #include "libc.h"
 
-off_t lseek(int fd, off_t offset, int whence)
-{
+off_t lseek(int fd, off_t offset, int whence) {
 #ifdef SYS__llseek
-	off_t result;
-	return syscall(SYS__llseek, fd, offset>>32, offset, &result, whence) ? -1 : result;
+  off_t result;
+  return syscall(SYS__llseek, fd, offset >> 32, offset, &result, whence)
+             ? -1
+             : result;
 #else
-	return syscall(SYS_lseek, fd, offset, whence);
+  return syscall(SYS_lseek, fd, offset, whence);
 #endif
 }
 
diff --git a/fusl/src/unistd/nice.c b/fusl/src/unistd/nice.c
index da56996..d72a893 100644
--- a/fusl/src/unistd/nice.c
+++ b/fusl/src/unistd/nice.c
@@ -2,11 +2,10 @@
 #include <sys/resource.h>
 #include "syscall.h"
 
-int nice(int inc)
-{
+int nice(int inc) {
 #ifdef SYS_nice
-	return syscall(SYS_nice, inc);
+  return syscall(SYS_nice, inc);
 #else
-	return setpriority(PRIO_PROCESS, 0, getpriority(PRIO_PROCESS, 0)+inc);
+  return setpriority(PRIO_PROCESS, 0, getpriority(PRIO_PROCESS, 0) + inc);
 #endif
 }
diff --git a/fusl/src/unistd/pause.c b/fusl/src/unistd/pause.c
index 56eb171..7530fd2 100644
--- a/fusl/src/unistd/pause.c
+++ b/fusl/src/unistd/pause.c
@@ -3,11 +3,10 @@
 #include "syscall.h"
 #include "libc.h"
 
-int pause(void)
-{
+int pause(void) {
 #ifdef SYS_pause
-	return syscall_cp(SYS_pause);
+  return syscall_cp(SYS_pause);
 #else
-	return syscall_cp(SYS_ppoll, 0, 0, 0, 0);
+  return syscall_cp(SYS_ppoll, 0, 0, 0, 0);
 #endif
 }
diff --git a/fusl/src/unistd/pipe.c b/fusl/src/unistd/pipe.c
index d07b8d2..9b8bde4 100644
--- a/fusl/src/unistd/pipe.c
+++ b/fusl/src/unistd/pipe.c
@@ -1,11 +1,10 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int pipe(int fd[2])
-{
+int pipe(int fd[2]) {
 #ifdef SYS_pipe
-	return syscall(SYS_pipe, fd);
+  return syscall(SYS_pipe, fd);
 #else
-	return syscall(SYS_pipe2, fd, 0);
+  return syscall(SYS_pipe2, fd, 0);
 #endif
 }
diff --git a/fusl/src/unistd/pipe2.c b/fusl/src/unistd/pipe2.c
index f24f74f..6f5911a 100644
--- a/fusl/src/unistd/pipe2.c
+++ b/fusl/src/unistd/pipe2.c
@@ -3,20 +3,22 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int pipe2(int fd[2], int flag)
-{
-	if (!flag) return pipe(fd);
-	int ret = __syscall(SYS_pipe2, fd, flag);
-	if (ret != -ENOSYS) return __syscall_ret(ret);
-	ret = pipe(fd);
-	if (ret) return ret;
-	if (flag & O_CLOEXEC) {
-		__syscall(SYS_fcntl, fd[0], F_SETFD, FD_CLOEXEC);
-		__syscall(SYS_fcntl, fd[1], F_SETFD, FD_CLOEXEC);
-	}
-	if (flag & O_NONBLOCK) {
-		__syscall(SYS_fcntl, fd[0], F_SETFL, O_NONBLOCK);
-		__syscall(SYS_fcntl, fd[1], F_SETFL, O_NONBLOCK);
-	}
-	return 0;
+int pipe2(int fd[2], int flag) {
+  if (!flag)
+    return pipe(fd);
+  int ret = __syscall(SYS_pipe2, fd, flag);
+  if (ret != -ENOSYS)
+    return __syscall_ret(ret);
+  ret = pipe(fd);
+  if (ret)
+    return ret;
+  if (flag & O_CLOEXEC) {
+    __syscall(SYS_fcntl, fd[0], F_SETFD, FD_CLOEXEC);
+    __syscall(SYS_fcntl, fd[1], F_SETFD, FD_CLOEXEC);
+  }
+  if (flag & O_NONBLOCK) {
+    __syscall(SYS_fcntl, fd[0], F_SETFL, O_NONBLOCK);
+    __syscall(SYS_fcntl, fd[1], F_SETFL, O_NONBLOCK);
+  }
+  return 0;
 }
diff --git a/fusl/src/unistd/posix_close.c b/fusl/src/unistd/posix_close.c
index 90f51a8..4865b95 100644
--- a/fusl/src/unistd/posix_close.c
+++ b/fusl/src/unistd/posix_close.c
@@ -1,6 +1,5 @@
 #include <unistd.h>
 
-int posix_close(int fd, int flags)
-{
-	return close(fd);
+int posix_close(int fd, int flags) {
+  return close(fd);
 }
diff --git a/fusl/src/unistd/pread.c b/fusl/src/unistd/pread.c
index 3d2799f..d888a2c 100644
--- a/fusl/src/unistd/pread.c
+++ b/fusl/src/unistd/pread.c
@@ -2,9 +2,8 @@
 #include "syscall.h"
 #include "libc.h"
 
-ssize_t pread(int fd, void *buf, size_t size, off_t ofs)
-{
-	return syscall_cp(SYS_pread, fd, buf, size, __SYSCALL_LL_O(ofs));
+ssize_t pread(int fd, void* buf, size_t size, off_t ofs) {
+  return syscall_cp(SYS_pread, fd, buf, size, __SYSCALL_LL_O(ofs));
 }
 
 LFS64(pread);
diff --git a/fusl/src/unistd/preadv.c b/fusl/src/unistd/preadv.c
index 46d9ece..cfb5957 100644
--- a/fusl/src/unistd/preadv.c
+++ b/fusl/src/unistd/preadv.c
@@ -4,10 +4,8 @@
 #include "syscall.h"
 #include "libc.h"
 
-ssize_t preadv(int fd, const struct iovec *iov, int count, off_t ofs)
-{
-	return syscall_cp(SYS_preadv, fd, iov, count,
-		(long)(ofs), (long)(ofs>>32));
+ssize_t preadv(int fd, const struct iovec* iov, int count, off_t ofs) {
+  return syscall_cp(SYS_preadv, fd, iov, count, (long)(ofs), (long)(ofs >> 32));
 }
 
 LFS64(preadv);
diff --git a/fusl/src/unistd/pwrite.c b/fusl/src/unistd/pwrite.c
index bbe4c34..438168e 100644
--- a/fusl/src/unistd/pwrite.c
+++ b/fusl/src/unistd/pwrite.c
@@ -2,9 +2,8 @@
 #include "syscall.h"
 #include "libc.h"
 
-ssize_t pwrite(int fd, const void *buf, size_t size, off_t ofs)
-{
-	return syscall_cp(SYS_pwrite, fd, buf, size, __SYSCALL_LL_O(ofs));
+ssize_t pwrite(int fd, const void* buf, size_t size, off_t ofs) {
+  return syscall_cp(SYS_pwrite, fd, buf, size, __SYSCALL_LL_O(ofs));
 }
 
 LFS64(pwrite);
diff --git a/fusl/src/unistd/pwritev.c b/fusl/src/unistd/pwritev.c
index aec5d32..14e8610 100644
--- a/fusl/src/unistd/pwritev.c
+++ b/fusl/src/unistd/pwritev.c
@@ -4,10 +4,9 @@
 #include "syscall.h"
 #include "libc.h"
 
-ssize_t pwritev(int fd, const struct iovec *iov, int count, off_t ofs)
-{
-	return syscall_cp(SYS_pwritev, fd, iov, count,
-		(long)(ofs), (long)(ofs>>32));
+ssize_t pwritev(int fd, const struct iovec* iov, int count, off_t ofs) {
+  return syscall_cp(SYS_pwritev, fd, iov, count, (long)(ofs),
+                    (long)(ofs >> 32));
 }
 
 LFS64(pwritev);
diff --git a/fusl/src/unistd/read.c b/fusl/src/unistd/read.c
index eb882fc..2b41055 100644
--- a/fusl/src/unistd/read.c
+++ b/fusl/src/unistd/read.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-ssize_t read(int fd, void *buf, size_t count)
-{
-	return syscall_cp(SYS_read, fd, buf, count);
+ssize_t read(int fd, void* buf, size_t count) {
+  return syscall_cp(SYS_read, fd, buf, count);
 }
diff --git a/fusl/src/unistd/readlink.c b/fusl/src/unistd/readlink.c
index a152d52..512ae39 100644
--- a/fusl/src/unistd/readlink.c
+++ b/fusl/src/unistd/readlink.c
@@ -2,11 +2,12 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-ssize_t readlink(const char *restrict path, char *restrict buf, size_t bufsize)
-{
+ssize_t readlink(const char* restrict path,
+                 char* restrict buf,
+                 size_t bufsize) {
 #ifdef SYS_readlink
-	return syscall(SYS_readlink, path, buf, bufsize);
+  return syscall(SYS_readlink, path, buf, bufsize);
 #else
-	return syscall(SYS_readlinkat, AT_FDCWD, path, buf, bufsize);
+  return syscall(SYS_readlinkat, AT_FDCWD, path, buf, bufsize);
 #endif
 }
diff --git a/fusl/src/unistd/readlinkat.c b/fusl/src/unistd/readlinkat.c
index 9af45cd..ca9d856 100644
--- a/fusl/src/unistd/readlinkat.c
+++ b/fusl/src/unistd/readlinkat.c
@@ -1,7 +1,9 @@
 #include <unistd.h>
 #include "syscall.h"
 
-ssize_t readlinkat(int fd, const char *restrict path, char *restrict buf, size_t bufsize)
-{
-	return syscall(SYS_readlinkat, fd, path, buf, bufsize);
+ssize_t readlinkat(int fd,
+                   const char* restrict path,
+                   char* restrict buf,
+                   size_t bufsize) {
+  return syscall(SYS_readlinkat, fd, path, buf, bufsize);
 }
diff --git a/fusl/src/unistd/readv.c b/fusl/src/unistd/readv.c
index e45cb48..adad6a8 100644
--- a/fusl/src/unistd/readv.c
+++ b/fusl/src/unistd/readv.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-ssize_t readv(int fd, const struct iovec *iov, int count)
-{
-	return syscall_cp(SYS_readv, fd, iov, count);
+ssize_t readv(int fd, const struct iovec* iov, int count) {
+  return syscall_cp(SYS_readv, fd, iov, count);
 }
diff --git a/fusl/src/unistd/renameat.c b/fusl/src/unistd/renameat.c
index 1257482..d988a54 100644
--- a/fusl/src/unistd/renameat.c
+++ b/fusl/src/unistd/renameat.c
@@ -1,7 +1,6 @@
 #include <stdio.h>
 #include "syscall.h"
 
-int renameat(int oldfd, const char *old, int newfd, const char *new)
-{
-	return syscall(SYS_renameat, oldfd, old, newfd, new);
+int renameat(int oldfd, const char* old, int newfd, const char* new) {
+  return syscall(SYS_renameat, oldfd, old, newfd, new);
 }
diff --git a/fusl/src/unistd/rmdir.c b/fusl/src/unistd/rmdir.c
index 6825ffc..89c6c73 100644
--- a/fusl/src/unistd/rmdir.c
+++ b/fusl/src/unistd/rmdir.c
@@ -2,11 +2,10 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int rmdir(const char *path)
-{
+int rmdir(const char* path) {
 #ifdef SYS_rmdir
-	return syscall(SYS_rmdir, path);
+  return syscall(SYS_rmdir, path);
 #else
-	return syscall(SYS_unlinkat, AT_FDCWD, path, AT_REMOVEDIR);
+  return syscall(SYS_unlinkat, AT_FDCWD, path, AT_REMOVEDIR);
 #endif
 }
diff --git a/fusl/src/unistd/setegid.c b/fusl/src/unistd/setegid.c
index e6da257..ee77699 100644
--- a/fusl/src/unistd/setegid.c
+++ b/fusl/src/unistd/setegid.c
@@ -2,7 +2,6 @@
 #include "libc.h"
 #include "syscall.h"
 
-int setegid(gid_t egid)
-{
-	return __setxid(SYS_setresgid, -1, egid, -1);
+int setegid(gid_t egid) {
+  return __setxid(SYS_setresgid, -1, egid, -1);
 }
diff --git a/fusl/src/unistd/seteuid.c b/fusl/src/unistd/seteuid.c
index ef8b9df..7996ad3 100644
--- a/fusl/src/unistd/seteuid.c
+++ b/fusl/src/unistd/seteuid.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int seteuid(uid_t euid)
-{
-	return __setxid(SYS_setresuid, -1, euid, -1);
+int seteuid(uid_t euid) {
+  return __setxid(SYS_setresuid, -1, euid, -1);
 }
diff --git a/fusl/src/unistd/setgid.c b/fusl/src/unistd/setgid.c
index bae4616..79daec9 100644
--- a/fusl/src/unistd/setgid.c
+++ b/fusl/src/unistd/setgid.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int setgid(gid_t gid)
-{
-	return __setxid(SYS_setgid, gid, 0, 0);
+int setgid(gid_t gid) {
+  return __setxid(SYS_setgid, gid, 0, 0);
 }
diff --git a/fusl/src/unistd/setpgid.c b/fusl/src/unistd/setpgid.c
index 0616069..f1e1716 100644
--- a/fusl/src/unistd/setpgid.c
+++ b/fusl/src/unistd/setpgid.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int setpgid(pid_t pid, pid_t pgid)
-{
-	return syscall(SYS_setpgid, pid, pgid);
+int setpgid(pid_t pid, pid_t pgid) {
+  return syscall(SYS_setpgid, pid, pgid);
 }
diff --git a/fusl/src/unistd/setpgrp.c b/fusl/src/unistd/setpgrp.c
index a2a37f6..624b1c8 100644
--- a/fusl/src/unistd/setpgrp.c
+++ b/fusl/src/unistd/setpgrp.c
@@ -1,6 +1,5 @@
 #include <unistd.h>
 
-pid_t setpgrp(void)
-{
-	return setpgid(0, 0);
+pid_t setpgrp(void) {
+  return setpgid(0, 0);
 }
diff --git a/fusl/src/unistd/setregid.c b/fusl/src/unistd/setregid.c
index f5a8972..21197e5 100644
--- a/fusl/src/unistd/setregid.c
+++ b/fusl/src/unistd/setregid.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int setregid(gid_t rgid, gid_t egid)
-{
-	return __setxid(SYS_setregid, rgid, egid, 0);
+int setregid(gid_t rgid, gid_t egid) {
+  return __setxid(SYS_setregid, rgid, egid, 0);
 }
diff --git a/fusl/src/unistd/setresgid.c b/fusl/src/unistd/setresgid.c
index b9af540..eee471e 100644
--- a/fusl/src/unistd/setresgid.c
+++ b/fusl/src/unistd/setresgid.c
@@ -3,7 +3,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int setresgid(gid_t rgid, gid_t egid, gid_t sgid)
-{
-	return __setxid(SYS_setresgid, rgid, egid, sgid);
+int setresgid(gid_t rgid, gid_t egid, gid_t sgid) {
+  return __setxid(SYS_setresgid, rgid, egid, sgid);
 }
diff --git a/fusl/src/unistd/setresuid.c b/fusl/src/unistd/setresuid.c
index 83692b4..8ada20b 100644
--- a/fusl/src/unistd/setresuid.c
+++ b/fusl/src/unistd/setresuid.c
@@ -3,7 +3,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int setresuid(uid_t ruid, uid_t euid, uid_t suid)
-{
-	return __setxid(SYS_setresuid, ruid, euid, suid);
+int setresuid(uid_t ruid, uid_t euid, uid_t suid) {
+  return __setxid(SYS_setresuid, ruid, euid, suid);
 }
diff --git a/fusl/src/unistd/setreuid.c b/fusl/src/unistd/setreuid.c
index 3fcc59e..fe38d46 100644
--- a/fusl/src/unistd/setreuid.c
+++ b/fusl/src/unistd/setreuid.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int setreuid(uid_t ruid, uid_t euid)
-{
-	return __setxid(SYS_setreuid, ruid, euid, 0);
+int setreuid(uid_t ruid, uid_t euid) {
+  return __setxid(SYS_setreuid, ruid, euid, 0);
 }
diff --git a/fusl/src/unistd/setsid.c b/fusl/src/unistd/setsid.c
index 609bbe4..6f380d4 100644
--- a/fusl/src/unistd/setsid.c
+++ b/fusl/src/unistd/setsid.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-pid_t setsid(void)
-{
-	return syscall(SYS_setsid);
+pid_t setsid(void) {
+  return syscall(SYS_setsid);
 }
diff --git a/fusl/src/unistd/setuid.c b/fusl/src/unistd/setuid.c
index 602ecbb..2cb6dfe 100644
--- a/fusl/src/unistd/setuid.c
+++ b/fusl/src/unistd/setuid.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-int setuid(uid_t uid)
-{
-	return __setxid(SYS_setuid, uid, 0, 0);
+int setuid(uid_t uid) {
+  return __setxid(SYS_setuid, uid, 0, 0);
 }
diff --git a/fusl/src/unistd/setxid.c b/fusl/src/unistd/setxid.c
index 0239f8a..2695f66 100644
--- a/fusl/src/unistd/setxid.c
+++ b/fusl/src/unistd/setxid.c
@@ -5,35 +5,35 @@
 #include "pthread_impl.h"
 
 struct ctx {
-	int id, eid, sid;
-	int nr, err;
+  int id, eid, sid;
+  int nr, err;
 };
 
-static void do_setxid(void *p)
-{
-	struct ctx *c = p;
-	if (c->err>0) return;
-	int ret = -__syscall(c->nr, c->id, c->eid, c->sid);
-	if (ret && !c->err) {
-		/* If one thread fails to set ids after another has already
-		 * succeeded, forcibly killing the process is the only safe
-		 * thing to do. State is inconsistent and dangerous. Use
-		 * SIGKILL because it is uncatchable. */
-		__block_all_sigs(0);
-		__syscall(SYS_kill, __syscall(SYS_getpid), SIGKILL);
-	}
-	c->err = ret;
+static void do_setxid(void* p) {
+  struct ctx* c = p;
+  if (c->err > 0)
+    return;
+  int ret = -__syscall(c->nr, c->id, c->eid, c->sid);
+  if (ret && !c->err) {
+    /* If one thread fails to set ids after another has already
+     * succeeded, forcibly killing the process is the only safe
+     * thing to do. State is inconsistent and dangerous. Use
+     * SIGKILL because it is uncatchable. */
+    __block_all_sigs(0);
+    __syscall(SYS_kill, __syscall(SYS_getpid), SIGKILL);
+  }
+  c->err = ret;
 }
 
-int __setxid(int nr, int id, int eid, int sid)
-{
-	/* err is initially nonzero so that failure of the first thread does not
-	 * trigger the safety kill above. */
-	struct ctx c = { .nr = nr, .id = id, .eid = eid, .sid = sid, .err = -1 };
-	__synccall(do_setxid, &c);
-	if (c.err) {
-		if (c.err>0) errno = c.err;
-		return -1;
-	}
-	return 0;
+int __setxid(int nr, int id, int eid, int sid) {
+  /* err is initially nonzero so that failure of the first thread does not
+   * trigger the safety kill above. */
+  struct ctx c = {.nr = nr, .id = id, .eid = eid, .sid = sid, .err = -1};
+  __synccall(do_setxid, &c);
+  if (c.err) {
+    if (c.err > 0)
+      errno = c.err;
+    return -1;
+  }
+  return 0;
 }
diff --git a/fusl/src/unistd/sleep.c b/fusl/src/unistd/sleep.c
index d645094..e54f669 100644
--- a/fusl/src/unistd/sleep.c
+++ b/fusl/src/unistd/sleep.c
@@ -1,10 +1,9 @@
 #include <unistd.h>
 #include <time.h>
 
-unsigned sleep(unsigned seconds)
-{
-	struct timespec tv = { .tv_sec = seconds, .tv_nsec = 0 };
-	if (nanosleep(&tv, &tv))
-		return tv.tv_sec;
-	return 0;
+unsigned sleep(unsigned seconds) {
+  struct timespec tv = {.tv_sec = seconds, .tv_nsec = 0};
+  if (nanosleep(&tv, &tv))
+    return tv.tv_sec;
+  return 0;
 }
diff --git a/fusl/src/unistd/symlink.c b/fusl/src/unistd/symlink.c
index 0973d78..e4f9054 100644
--- a/fusl/src/unistd/symlink.c
+++ b/fusl/src/unistd/symlink.c
@@ -2,11 +2,10 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int symlink(const char *existing, const char *new)
-{
+int symlink(const char* existing, const char* new) {
 #ifdef SYS_symlink
-	return syscall(SYS_symlink, existing, new);
+  return syscall(SYS_symlink, existing, new);
 #else
-	return syscall(SYS_symlinkat, existing, AT_FDCWD, new);
+  return syscall(SYS_symlinkat, existing, AT_FDCWD, new);
 #endif
 }
diff --git a/fusl/src/unistd/symlinkat.c b/fusl/src/unistd/symlinkat.c
index d1c59b4..f59eb2e 100644
--- a/fusl/src/unistd/symlinkat.c
+++ b/fusl/src/unistd/symlinkat.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int symlinkat(const char *existing, int fd, const char *new)
-{
-	return syscall(SYS_symlinkat, existing, fd, new);
+int symlinkat(const char* existing, int fd, const char* new) {
+  return syscall(SYS_symlinkat, existing, fd, new);
 }
diff --git a/fusl/src/unistd/sync.c b/fusl/src/unistd/sync.c
index f18765a..287a3ab 100644
--- a/fusl/src/unistd/sync.c
+++ b/fusl/src/unistd/sync.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-void sync(void)
-{
-	__syscall(SYS_sync);
+void sync(void) {
+  __syscall(SYS_sync);
 }
diff --git a/fusl/src/unistd/tcgetpgrp.c b/fusl/src/unistd/tcgetpgrp.c
index 50080c7..8e89ac9 100644
--- a/fusl/src/unistd/tcgetpgrp.c
+++ b/fusl/src/unistd/tcgetpgrp.c
@@ -2,10 +2,9 @@
 #include <termios.h>
 #include <sys/ioctl.h>
 
-pid_t tcgetpgrp(int fd)
-{
-	int pgrp;
-	if (ioctl(fd, TIOCGPGRP, &pgrp) < 0)
-		return -1;
-	return pgrp;
+pid_t tcgetpgrp(int fd) {
+  int pgrp;
+  if (ioctl(fd, TIOCGPGRP, &pgrp) < 0)
+    return -1;
+  return pgrp;
 }
diff --git a/fusl/src/unistd/tcsetpgrp.c b/fusl/src/unistd/tcsetpgrp.c
index 67c38cb..1e02343 100644
--- a/fusl/src/unistd/tcsetpgrp.c
+++ b/fusl/src/unistd/tcsetpgrp.c
@@ -2,8 +2,7 @@
 #include <termios.h>
 #include <sys/ioctl.h>
 
-int tcsetpgrp(int fd, pid_t pgrp)
-{
-	int pgrp_int = pgrp;
-	return ioctl(fd, TIOCSPGRP, &pgrp_int);
+int tcsetpgrp(int fd, pid_t pgrp) {
+  int pgrp_int = pgrp;
+  return ioctl(fd, TIOCSPGRP, &pgrp_int);
 }
diff --git a/fusl/src/unistd/truncate.c b/fusl/src/unistd/truncate.c
index 8e65655..0d57c65 100644
--- a/fusl/src/unistd/truncate.c
+++ b/fusl/src/unistd/truncate.c
@@ -2,9 +2,8 @@
 #include "syscall.h"
 #include "libc.h"
 
-int truncate(const char *path, off_t length)
-{
-	return syscall(SYS_truncate, path, __SYSCALL_LL_O(length));
+int truncate(const char* path, off_t length) {
+  return syscall(SYS_truncate, path, __SYSCALL_LL_O(length));
 }
 
 LFS64(truncate);
diff --git a/fusl/src/unistd/ttyname.c b/fusl/src/unistd/ttyname.c
index 0f3e114..096e72e 100644
--- a/fusl/src/unistd/ttyname.c
+++ b/fusl/src/unistd/ttyname.c
@@ -2,13 +2,12 @@
 #include <errno.h>
 #include <limits.h>
 
-char *ttyname(int fd)
-{
-	static char buf[TTY_NAME_MAX];
-	int result;
-	if ((result = ttyname_r(fd, buf, sizeof buf))) {
-		errno = result;
-		return NULL;
-	}
-	return buf;
+char* ttyname(int fd) {
+  static char buf[TTY_NAME_MAX];
+  int result;
+  if ((result = ttyname_r(fd, buf, sizeof buf))) {
+    errno = result;
+    return NULL;
+  }
+  return buf;
 }
diff --git a/fusl/src/unistd/ttyname_r.c b/fusl/src/unistd/ttyname_r.c
index 8bac7b2..6cd459c 100644
--- a/fusl/src/unistd/ttyname_r.c
+++ b/fusl/src/unistd/ttyname_r.c
@@ -1,22 +1,24 @@
 #include <unistd.h>
 #include <errno.h>
 
-void __procfdname(char *, unsigned);
+void __procfdname(char*, unsigned);
 
-int ttyname_r(int fd, char *name, size_t size)
-{
-	char procname[sizeof "/proc/self/fd/" + 3*sizeof(int) + 2];
-	ssize_t l;
+int ttyname_r(int fd, char* name, size_t size) {
+  char procname[sizeof "/proc/self/fd/" + 3 * sizeof(int) + 2];
+  ssize_t l;
 
-	if (!isatty(fd)) return ENOTTY;
+  if (!isatty(fd))
+    return ENOTTY;
 
-	__procfdname(procname, fd);
-	l = readlink(procname, name, size);
+  __procfdname(procname, fd);
+  l = readlink(procname, name, size);
 
-	if (l < 0) return errno;
-	else if (l == size) return ERANGE;
-	else {
-		name[l] = 0;
-		return 0;
-	}
+  if (l < 0)
+    return errno;
+  else if (l == size)
+    return ERANGE;
+  else {
+    name[l] = 0;
+    return 0;
+  }
 }
diff --git a/fusl/src/unistd/ualarm.c b/fusl/src/unistd/ualarm.c
index 855504b..7150632 100644
--- a/fusl/src/unistd/ualarm.c
+++ b/fusl/src/unistd/ualarm.c
@@ -2,12 +2,9 @@
 #include <unistd.h>
 #include <sys/time.h>
 
-unsigned ualarm(unsigned value, unsigned interval)
-{
-	struct itimerval it = {
-		.it_interval.tv_usec = interval,
-		.it_value.tv_usec = value
-	};
-	setitimer(ITIMER_REAL, &it, &it);
-	return it.it_value.tv_sec*1000000 + it.it_value.tv_usec;
+unsigned ualarm(unsigned value, unsigned interval) {
+  struct itimerval it = {.it_interval.tv_usec = interval,
+                         .it_value.tv_usec = value};
+  setitimer(ITIMER_REAL, &it, &it);
+  return it.it_value.tv_sec * 1000000 + it.it_value.tv_usec;
 }
diff --git a/fusl/src/unistd/unlink.c b/fusl/src/unistd/unlink.c
index c40c28d..0de7231 100644
--- a/fusl/src/unistd/unlink.c
+++ b/fusl/src/unistd/unlink.c
@@ -2,11 +2,10 @@
 #include <fcntl.h>
 #include "syscall.h"
 
-int unlink(const char *path)
-{
+int unlink(const char* path) {
 #ifdef SYS_unlink
-	return syscall(SYS_unlink, path);
+  return syscall(SYS_unlink, path);
 #else
-	return syscall(SYS_unlinkat, AT_FDCWD, path, 0);
+  return syscall(SYS_unlinkat, AT_FDCWD, path, 0);
 #endif
 }
diff --git a/fusl/src/unistd/unlinkat.c b/fusl/src/unistd/unlinkat.c
index e0e25d2..c10529b 100644
--- a/fusl/src/unistd/unlinkat.c
+++ b/fusl/src/unistd/unlinkat.c
@@ -1,7 +1,6 @@
 #include <unistd.h>
 #include "syscall.h"
 
-int unlinkat(int fd, const char *path, int flag)
-{
-	return syscall(SYS_unlinkat, fd, path, flag);
+int unlinkat(int fd, const char* path, int flag) {
+  return syscall(SYS_unlinkat, fd, path, flag);
 }
diff --git a/fusl/src/unistd/usleep.c b/fusl/src/unistd/usleep.c
index 6c96652..dc7327d 100644
--- a/fusl/src/unistd/usleep.c
+++ b/fusl/src/unistd/usleep.c
@@ -2,11 +2,8 @@
 #include <unistd.h>
 #include <time.h>
 
-int usleep(unsigned useconds)
-{
-	struct timespec tv = {
-		.tv_sec = useconds/1000000,
-		.tv_nsec = (useconds%1000000)*1000
-	};
-	return nanosleep(&tv, &tv);
+int usleep(unsigned useconds) {
+  struct timespec tv = {.tv_sec = useconds / 1000000,
+                        .tv_nsec = (useconds % 1000000) * 1000};
+  return nanosleep(&tv, &tv);
 }
diff --git a/fusl/src/unistd/write.c b/fusl/src/unistd/write.c
index e2f7e1f..a147ac5 100644
--- a/fusl/src/unistd/write.c
+++ b/fusl/src/unistd/write.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-ssize_t write(int fd, const void *buf, size_t count)
-{
-	return syscall_cp(SYS_write, fd, buf, count);
+ssize_t write(int fd, const void* buf, size_t count) {
+  return syscall_cp(SYS_write, fd, buf, count);
 }
diff --git a/fusl/src/unistd/writev.c b/fusl/src/unistd/writev.c
index ef300dd..8e93e62 100644
--- a/fusl/src/unistd/writev.c
+++ b/fusl/src/unistd/writev.c
@@ -2,7 +2,6 @@
 #include "syscall.h"
 #include "libc.h"
 
-ssize_t writev(int fd, const struct iovec *iov, int count)
-{
-	return syscall_cp(SYS_writev, fd, iov, count);
+ssize_t writev(int fd, const struct iovec* iov, int count) {
+  return syscall_cp(SYS_writev, fd, iov, count);
 }
