text:
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 VREPRINT 12
#define VDISCARD 13
#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 IMAXBEL 0020000
#define IUTF8   0040000

#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 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 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 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
#define B2000000 0010013
#define B2500000 0010014
#define B3000000 0010015
#define B3500000 0010016
#define B4000000 0010017

#define CBAUD    0010017

#define CSIZE  0000060
#define CS5    0000000
#define CS6    0000020
#define CS7    0000040
#define CS8    0000060
#define CSTOPB 0000100
#define CREAD  0000200
#define PARENB 0000400
#define PARODD 0001000
#define HUPCL  0002000
#define CLOCAL 0004000

#define ISIG   0000001
#define ICANON 0000002
#define XCASE  0000004
#define ECHO   0000010
#define ECHOE  0000020
#define ECHOK  0000040
#define ECHONL 0000100
#define NOFLSH 0000200
#define IEXTEN 0000400
#define ECHOCTL 0001000
#define ECHOPRT 0002000
#define ECHOKE 0004000
#define FLUSHO 0020000
#define PENDIN 0040000
#define TOSTOP 0100000
#define ITOSTOP 0100000

#define TCOOFF 0
#define TCOON  1
#define TCIOFF 2
#define TCION  3

#define TCIFLUSH  0
#define TCOFLUSH  1
#define TCIOFLUSH 2

#define TCSANOW   0
#define TCSADRAIN 1
#define TCSAFLUSH 2

#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define CBAUDEX 0010000
#define CIBAUD   002003600000
#define IBSHIFT 16
#define CMSPAR   010000000000
#define CRTSCTS  020000000000
#define EXTPROC 0200000
#define XTABS  0014000
#define TIOCSER_TEMT 1
#endif


text: typedef unsigned long long __jmp_buf[13];

repo_language: C

mime_type: text/x-c


text:
#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_ASYNC      010000
#define O_DIRECT    0100000
#define O_LARGEFILE  020000
#define O_NOATIME  01000000
#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_SETOWN 24
#define F_GETOWN 23
#define F_SETSIG 10
#define F_GETSIG 11

#define F_GETLK 33
#define F_SETLK 34
#define F_SETLKW 35

#define F_SETOWN_EX 15
#define F_GETOWN_EX 16

#define F_GETOWNER_UIDS 17


text:
#undef __WORDSIZE
#define __WORDSIZE 32

#define EF_R0 6
#define EF_R1 7
#define EF_R2 8
#define EF_R3 9
#define EF_R4 10
#define EF_R5 11
#define EF_R6 12
#define EF_R7 13
#define EF_R8 14
#define EF_R9 15
#define EF_R10 16
#define EF_R11 17
#define EF_R12 18
#define EF_R13 19
#define EF_R14 20
#define EF_R15 21
#define EF_R16 22
#define EF_R17 23
#define EF_R18 24
#define EF_R19 25
#define EF_R20 26
#define EF_R21 27
#define EF_R22 28
#define EF_R23 29
#define EF_R24 30
#define EF_R25 31

#define EF_R26 32
#define EF_R27 33
#define EF_R28 34
#define EF_R29 35
#define EF_R30 36
#define EF_R31 37

#define EF_LO 38
#define EF_HI 39

#define EF_CP0_EPC 40
#define EF_CP0_BADVADDR 41
#define EF_CP0_STATUS 42
#define EF_CP0_CAUSE 43
#define EF_UNUSED0 44

#define EF_SIZE 180


text:
struct semid_ds {
	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)];
#else
	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
	unsigned short sem_nsems;
#endif
	time_t __unused3;
	time_t __unused4;
};


text:
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;
#else
	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];
};


text:
#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 EINIT           141
#define EREMDEV         142
#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


text:
#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	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_EXECUTABLE 0x4000
#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 MS_ASYNC        1
#define MS_INVALIDATE   2
#define MS_SYNC         4

#define MCL_CURRENT     1
#define MCL_FUTURE      2

#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_UNMERGEABLE 13
#define MADV_HUGEPAGE    14
#define MADV_NOHUGEPAGE  15
#define MADV_DONTDUMP    16
#define MADV_DODUMP      17
#define MADV_HWPOISON    100

#define MREMAP_MAYMOVE  1
#define MREMAP_FIXED    2
#endif


text:
/* 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];
};


text:
typedef int32_t int_fast16_t;
typedef int32_t int_fast32_t;
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_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


text:
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];
};


text:
#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


text:
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;
};

#define SOCK_STREAM    2
#define SOCK_DGRAM     1

#define SOL_SOCKET     65535

#define SO_DEBUG        1
#define SO_REUSEADDR    4
#define SO_TYPE         0x1008
#define SO_ERROR        0x1007
#define SO_DONTROUTE    16
#define SO_BROADCAST    32
#define SO_SNDBUF       0x1001
#define SO_RCVBUF       0x1002
#define SO_KEEPALIVE    8
#define SO_OOBINLINE    256
#define SO_NO_CHECK     11
#define SO_PRIORITY     12
#define SO_LINGER       128
#define SO_BSDCOMPAT    14
#define SO_REUSEPORT    512
#define SO_PASSCRED     17
#define SO_PEERCRED     18
#define SO_RCVLOWAT     0x1004
#define SO_SNDLOWAT     0x1003
#define SO_RCVTIMEO     0x1006
#define SO_SNDTIMEO     0x1005
#define SO_SNDBUFFORCE  31
#define SO_RCVBUFFORCE  33

#define SOCK_NONBLOCK     0200
#define SOCK_CLOEXEC  02000000


text:
#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

/* 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


text:
#define _Addr int
#define _Int64 long long
#define _Reg int

TYPEDEF __builtin_va_list va_list;
TYPEDEF __builtin_va_list __isoc_va_list;

#ifndef __cplusplus
TYPEDEF int wchar_t;
#endif
TYPEDEF unsigned wint_t;

TYPEDEF float float_t;
TYPEDEF double double_t;

TYPEDEF struct { long long __ll; long double __ld; } max_align_t;

TYPEDEF long time_t;
TYPEDEF long suseconds_t;

TYPEDEF struct { union { int __i[9]; unsigned __s[9]; } __u; } pthread_attr_t;
TYPEDEF struct { union { int __i[6]; volatile void *volatile __p[6]; } __u; } pthread_mutex_t;
TYPEDEF struct { union { int __i[6]; volatile void *volatile __p[6]; } __u; } mtx_t;
TYPEDEF struct { union { int __i[12]; void *__p[12]; } __u; } pthread_cond_t;
TYPEDEF struct { union { int __i[12]; void *__p[12]; } __u; } cnd_t;
TYPEDEF struct { union { int __i[8]; void *__p[8]; } __u; } pthread_rwlock_t;
TYPEDEF struct { union { int __i[5]; void *__p[5]; } __u; } pthread_barrier_t;


text:
static inline struct pthread *__pthread_self()
{
	struct pthread *self;
	__asm__ __volatile__ ("movl %%gs:0,%0" : "=r" (self) );
	return self;
}

#define TP_ADJ(p) (p)

#define CANCEL_REG_IP 14


text:
#include <string.h>
#include <elf.h>

#define LDSO_ARCH "i386"

static int remap_rel(int type)
{
	switch(type) {
	case R_386_32:
		return REL_SYMBOLIC;
	case R_386_PC32:
		return REL_OFFSET;
	case R_386_GLOB_DAT:
		return REL_GOT;
	case R_386_JMP_SLOT:
		return REL_PLT;
	case R_386_RELATIVE:
		return REL_RELATIVE;
	case R_386_COPY:
		return REL_COPY;
	case R_386_TLS_DTPMOD32:
		return REL_DTPMOD;
	case R_386_TLS_DTPOFF32:
		return REL_DTPOFF;
	case R_386_TLS_TPOFF:
		return REL_TPOFF;
	case R_386_TLS_TPOFF32:
		return REL_TPOFF_NEG;
	case R_386_TLS_DESC:
		return REL_TLSDESC;
	}
	return 0;
}


text:
#ifndef _INTERNAL_ATOMIC_H
#define _INTERNAL_ATOMIC_H

#include <stdint.h>

static inline int a_ctz_64(uint64_t x)
{
	int r;
	__asm__( "bsf %1,%0 ; jnz 1f ; bsf %2,%0 ; addl $32,%0\n1:"
		: "=r"(r) : "r"((unsigned)x), "r"((unsigned)(x>>32)) );
	return r;
}

static inline int a_ctz_l(unsigned long x)
{
	long r;
	__asm__( "bsf %1,%0" : "=r"(r) : "r"(x) );
	return r;
}

static inline void a_and_64(volatile uint64_t *p, uint64_t v)
{
	__asm__( "lock ; andl %1, (%0) ; lock ; andl %2, 4(%0)"
		: : "r"((long *)p), "r"((unsigned)v), "r"((unsigned)(v>>32)) : "memory" );
}

static inline void a_or_64(volatile uint64_t *p, uint64_t v)
{
	__asm__( "lock ; orl %1, (%0) ; lock ; orl %2, 4(%0)"
		: : "r"((long *)p), "r"((unsigned)v), "r"((unsigned)(v>>32)) : "memory" );
}

static inline void a_or_l(volatile void *p, long v)
{
	__asm__( "lock ; orl %1, %0"
		: "=m"(*(long *)p) : "r"(v) : "memory" );
}

static inline void *a_cas_p(volatile void *p, void *t, void *s)
{
	__asm__( "lock ; cmpxchg %3, %1"
		: "=a"(t), "=m"(*(long *)p) : "a"(t), "r"(s) : "memory" );
	return t;
}

static inline int a_cas(volatile int *p, int t, int s)
{
	__asm__( "lock ; cmpxchg %3, %1"
		: "=a"(t), "=m"(*p) : "a"(t), "r"(s) : "memory" );
	return t;
}

static inline void a_or(volatile void *p, int v)
{
	__asm__( "lock ; orl %1, %0"
		: "=m"(*(int *)p) : "r"(v) : "memory" );
}

static inline void a_and(volatile void *p, int v)
{
	__asm__( "lock ; andl %1, %0"
		: "=m"(*(int *)p) : "r"(v) : "memory" );
}

static inline int a_swap(volatile int *x, int v)
{
	__asm__( "xchg %0, %1" : "=r"(v), "=m"(*x) : "0"(v) : "memory" );
	return v;
}

#define a_xchg a_swap

static inline int a_fetch_add(volatile int *x, int v)
{
	__asm__( "lock ; xadd %0, %1" : "=r"(v), "=m"(*x) : "0"(v) : "memory" );
	return v;
}

static inline void a_inc(volatile int *x)
{
	__asm__( "lock ; incl %0" : "=m"(*x) : "m"(*x) : "memory" );
}

static inline void a_dec(volatile int *x)
{
	__asm__( "lock ; decl %0" : "=m"(*x) : "m"(*x) : "memory" );
}

static inline void a_store(volatile int *p, int x)
{
	__asm__( "movl %1, %0" : "=m"(*p) : "r"(x) : "memory" );
}

static inline void a_spin()
{
	__asm__ __volatile__( "pause" : : : "memory" );
}

static inline void a_barrier()
{
	__asm__ __volatile__( "" : : : "memory" );
}

static inline void a_crash()
{
	__asm__ __volatile__( "hlt" : : : "memory" );
}

#endif


text:
#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]
#define __SYSCALL_LL_O(x) __SYSCALL_LL_E((x))

static inline long __syscall0(long n)
{
	unsigned long __ret;
	__asm__ __volatile__ ("call __vsyscall" : "=a"(__ret) : "a"(n) : "memory");
	return __ret;
}

static inline long __syscall1(long n, long a1)
{
	unsigned long __ret;
	__asm__ __volatile__ ("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__ ("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__ ("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__ ("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 ; 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 ; 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
#define VDSO_CGT_SYM "__vdso_clock_gettime"
#define VDSO_CGT_VER "LINUX_2.6"


text:
__asm__("\
.text \n\
.global _start \n\
_start: \n\
	xor %ebp,%ebp \n\
	mov %esp,%eax \n\
	and $-16,%esp \n\
	push %eax \n\
	push %eax \n\
	push %eax \n\
	push %eax \n\
	call __cstart \n\
");


text:
#undef __WORDSIZE
#define __WORDSIZE 32

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];
} 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;
};

#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];
};

#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)


text: #define __BYTE_ORDER __LITTLE_ENDIAN


text:
#define FLT_ROUNDS 1
#ifdef __FLT_EVAL_METHOD__
#define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
#else
#define FLT_EVAL_METHOD 2
#endif

#define LDBL_TRUE_MIN 3.6451995318824746025e-4951L
#define LDBL_MIN     3.3621031431120935063e-4932L
#define LDBL_MAX     1.1897314953572317650e+4932L
#define LDBL_EPSILON 1.0842021724855044340e-19L

#define LDBL_MANT_DIG 64
#define LDBL_MIN_EXP (-16381)
#define LDBL_MAX_EXP 16384

#define LDBL_DIG 18
#define LDBL_MIN_10_EXP (-4931)
#define LDBL_MAX_10_EXP 4932

#define DECIMAL_DIG 21


text:
#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_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;
} fenv_t;

#define FE_DFL_ENV      ((const fenv_t *) -1)


text:
#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 _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 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 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

struct winsize {
	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_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 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 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 SIOCGIFBR       0x8940
#define SIOCSIFBR       0x8941

#define SIOCGIFTXQLEN   0x8942
#define SIOCSIFTXQLEN   0x8943

#define SIOCDARP        0x8953
#define SIOCGARP        0x8954
#define SIOCSARP        0x8955

#define SIOCDRARP       0x8960
#define SIOCGRARP       0x8961
#define SIOCSRARP       0x8962

#define SIOCGIFMAP      0x8970
#define SIOCSIFMAP      0x8971

#define SIOCADDDLCI     0x8980
#define SIOCDELDLCI     0x8981

#define SIOCDEVPRIVATE		0x89F0
#define SIOCPROTOPRIVATE	0x89E0


text:
#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 shminfo {
	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;
};


text:
#if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \
 || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE)

#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
#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;
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;
};
typedef struct {
	gregset_t gregs;
	fpregset_t fpregs;
	unsigned long oldmask, cr2;
} mcontext_t;
#else
typedef struct {
	unsigned __space[22];
} mcontext_t;
#endif

struct sigaltstack {
	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];
} 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

#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 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 SIGVTALRM 26
#define SIGPROF   27
#define SIGWINCH  28
#define SIGIO     29
#define SIGPOLL   29
#define SIGPWR    30
#define SIGSYS    31
#define SIGUNUSED SIGSYS

#define _NSIG 65


text:
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


text:
#define _POSIX_V6_ILP32_OFFBIG  1
#define _POSIX_V7_ILP32_OFFBIG  1


text:
#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_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)) )


text:
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 VREPRINT 12
#define VDISCARD 13
#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 IMAXBEL 0020000
#define IUTF8   0040000

#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 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 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 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
#define B2000000 0010013
#define B2500000 0010014
#define B3000000 0010015
#define B3500000 0010016
#define B4000000 0010017

#define CBAUD    0010017

#define CSIZE  0000060
#define CS5    0000000
#define CS6    0000020
#define CS7    0000040
#define CS8    0000060
#define CSTOPB 0000100
#define CREAD  0000200
#define PARENB 0000400
#define PARODD 0001000
#define HUPCL  0002000
#define CLOCAL 0004000

#define ISIG   0000001
#define ICANON 0000002
#define ECHO   0000010
#define ECHOE  0000020
#define ECHOK  0000040
#define ECHONL 0000100
#define NOFLSH 0000200
#define TOSTOP 0000400
#define IEXTEN 0100000

#define ECHOCTL 0001000
#define ECHOPRT 0002000
#define ECHOKE 0004000
#define FLUSHO 0010000
#define PENDIN 0040000

#define TCOOFF 0
#define TCOON  1
#define TCIOFF 2
#define TCION  3

#define TCIFLUSH  0
#define TCOFLUSH  1
#define TCIOFLUSH 2

#define TCSANOW   0
#define TCSADRAIN 1
#define TCSAFLUSH 2

#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define CBAUDEX 0010000
#define CRTSCTS  020000000000
#define EXTPROC 0200000
#define XTABS  0014000
#endif


text: typedef unsigned long __jmp_buf[6];


text:
#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_ASYNC      020000
#define O_DIRECT     040000
#define O_LARGEFILE 0100000
#define O_NOATIME  01000000
#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_SETOWN 8
#define F_GETOWN 9
#define F_SETSIG 10
#define F_GETSIG 11

#define F_GETLK 12
#define F_SETLK 13
#define F_SETLKW 14

#define F_SETOWN_EX 15
#define F_GETOWN_EX 16

#define F_GETOWNER_UIDS 17


text:
#undef __WORDSIZE
#define __WORDSIZE 32
#define EBX 0
#define ECX 1
#define EDX 2
#define ESI 3
#define EDI 4
#define EBP 5
#define EAX 6
#define DS 7
#define ES 8
#define FS 9
#define GS 10
#define ORIG_EAX 11
#define EIP 12
#define CS 13
#define EFL 14
#define UESP 15
#define SS 16


text:
struct semid_ds {
	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)];
#else
	char __sem_nsems_pad[sizeof(time_t)-sizeof(short)];
	unsigned short sem_nsems;
#endif
	time_t __unused3;
	time_t __unused4;
};


text:
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];
};


text:
#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 ENOTRECOVERABLE 131
#define ERFKILL         132
#define EHWPOISON       133


text:
#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	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_EXECUTABLE 0x1000
#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 MS_ASYNC        1
#define MS_INVALIDATE   2
#define MS_SYNC         4

#define MCL_CURRENT     1
#define MCL_FUTURE      2

#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_UNMERGEABLE 13
#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

#define MREMAP_MAYMOVE  1
#define MREMAP_FIXED    2
#endif


text:
/* 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;
};


text:
typedef int32_t int_fast16_t;
typedef int32_t int_fast32_t;
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_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


text:
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 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 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 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 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 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));
}


text:
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];
};


text:
#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


text:
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;
};


text:
#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
/* 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_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

/* 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
/* 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
/* 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_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


text:
#define _Addr int
#define _Int64 long long
#define _Reg int

#if __GNUC__ >= 3
TYPEDEF __builtin_va_list va_list;
TYPEDEF __builtin_va_list __isoc_va_list;
#else
TYPEDEF struct __va_list * va_list;
TYPEDEF struct __va_list * __isoc_va_list;
#endif

#ifndef __cplusplus
#ifdef __WCHAR_TYPE__
TYPEDEF __WCHAR_TYPE__ wchar_t;
#else
TYPEDEF long wchar_t;
#endif
#endif
TYPEDEF unsigned wint_t;

#if defined(__FLT_EVAL_METHOD__) && __FLT_EVAL_METHOD__ == 0
TYPEDEF float float_t;
TYPEDEF double double_t;
#else
TYPEDEF long double float_t;
TYPEDEF long double double_t;
#endif

#ifdef __cplusplus
TYPEDEF struct { alignas(8) long long __ll; long double __ld; } max_align_t;
#else
TYPEDEF struct { _Alignas(8) long long __ll; long double __ld; } max_align_t;
#endif

TYPEDEF long time_t;
TYPEDEF long suseconds_t;

TYPEDEF struct { union { int __i[9]; unsigned __s[9]; } __u; } pthread_attr_t;
TYPEDEF struct { union { int __i[6]; volatile void *volatile __p[6]; } __u; } pthread_mutex_t;
TYPEDEF struct { union { int __i[6]; volatile void *volatile __p[6]; } __u; } mtx_t;
TYPEDEF struct { union { int __i[12]; void *__p[12]; } __u; } pthread_cond_t;
TYPEDEF struct { union { int __i[12]; void *__p[12]; } __u; } cnd_t;
TYPEDEF struct { union { int __i[8]; void *__p[8]; } __u; } pthread_rwlock_t;
TYPEDEF struct { union { int __i[5]; void *__p[5]; } __u; } pthread_barrier_t;


text:
static inline struct pthread *__pthread_self()
{
	struct pthread *self;
	__asm__ __volatile__ ("mov %%fs:0,%0" : "=r" (self) );
	return self;
}

#define TP_ADJ(p) (p)

#define CANCEL_REG_IP 16


text:
#include <stdint.h>
#include <string.h>
#include <elf.h>

#define LDSO_ARCH "x32"

/* FIXME: x32 is very strange in its use of 64-bit relocation types in
 * a 32-bit environment. As long as the memory at reloc_addr is
 * zero-filled prior to relocations, just treating 64-bit relocations
 * as operating on 32-bit slots should be fine, but this should be
 * checked. In particular, R_X86_64_64, R_X86_64_DTPOFF64, and
 * R_X86_64_TPOFF64 may need checking. */

static int remap_rel(int type)
{
	switch(type) {
	case R_X86_64_64:
	case R_X86_64_32:
		return REL_SYMBOLIC;
	case R_X86_64_PC32:
		return REL_OFFSET;
	case R_X86_64_GLOB_DAT:
		return REL_GOT;
	case R_X86_64_JUMP_SLOT:
		return REL_PLT;
	case R_X86_64_RELATIVE:
		return REL_RELATIVE;
	case R_X86_64_COPY:
		return REL_COPY;
	case R_X86_64_DTPMOD64:
		return REL_DTPMOD;
	case R_X86_64_DTPOFF64:
	case R_X86_64_DTPOFF32:
		return REL_DTPOFF;
	case R_X86_64_TPOFF64:
	case R_X86_64_TPOFF32:
		return REL_TPOFF;
	}
	return 0;
}


text:
#ifndef _INTERNAL_ATOMIC_H
#define _INTERNAL_ATOMIC_H

#include <stdint.h>

static inline int a_ctz_64(uint64_t 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;
}

static inline void a_and_64(volatile uint64_t *p, uint64_t v)
{
	__asm__( "lock ; and %1, %0"
			 : "=m"(*p) : "r"(v) : "memory" );
}

static inline void a_or_64(volatile uint64_t *p, uint64_t v)
{
	__asm__( "lock ; or %1, %0"
			 : "=m"(*p) : "r"(v) : "memory" );
}

static inline void a_or_l(volatile void *p, long v)
{
	__asm__( "lock ; or %1, %0"
		: "=m"(*(long *)p) : "r"(v) : "memory" );
}

static inline void *a_cas_p(volatile void *p, void *t, void *s)
{
	__asm__( "lock ; cmpxchg %3, %1"
		: "=a"(t), "=m"(*(long *)p) : "a"(t), "r"(s) : "memory" );
	return t;
}

static inline int a_cas(volatile int *p, int t, int s)
{
	__asm__( "lock ; cmpxchg %3, %1"
		: "=a"(t), "=m"(*p) : "a"(t), "r"(s) : "memory" );
	return t;
}

static inline void a_or(volatile void *p, int v)
{
	__asm__( "lock ; or %1, %0"
		: "=m"(*(int *)p) : "r"(v) : "memory" );
}

static inline void a_and(volatile void *p, int v)
{
	__asm__( "lock ; and %1, %0"
		: "=m"(*(int *)p) : "r"(v) : "memory" );
}

static inline int a_swap(volatile int *x, int v)
{
	__asm__( "xchg %0, %1" : "=r"(v), "=m"(*x) : "0"(v) : "memory" );
	return v;
}

static inline int a_fetch_add(volatile int *x, int v)
{
	__asm__( "lock ; xadd %0, %1" : "=r"(v), "=m"(*x) : "0"(v) : "memory" );
	return v;
}

static inline void a_inc(volatile int *x)
{
	__asm__( "lock ; incl %0" : "=m"(*x) : "m"(*x) : "memory" );
}

static inline void a_dec(volatile int *x)
{
	__asm__( "lock ; decl %0" : "=m"(*x) : "m"(*x) : "memory" );
}

static inline void a_store(volatile int *p, int x)
{
	__asm__( "mov %1, %0" : "=m"(*p) : "r"(x) : "memory" );
}

static inline void a_spin()
{
	__asm__ __volatile__( "pause" : : : "memory" );
}

static inline void a_barrier()
{
	__asm__ __volatile__( "" : : : "memory" );
}

static inline void a_crash()
{
	__asm__ __volatile__( "hlt" : : : "memory" );
}

#endif