// Copyright (c) 2016 Nuxi (https://nuxi.nl/) and contributors.
//
// Redistribution and use in source and binary forms, with or without
// modification, are permitted provided that the following conditions
// are met:
// 1. Redistributions of source code must retain the above copyright
//    notice, this list of conditions and the following disclaimer.
// 2. Redistributions in binary form must reproduce the above copyright
//    notice, this list of conditions and the following disclaimer in the
//    documentation and/or other materials provided with the distribution.
//
// THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
// ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
// OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
// HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
// LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
// OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
// SUCH DAMAGE.
//
// This file is automatically generated. Do not edit.
//
// Source: https://github.com/NuxiNL/cloudabi

#define ENTRY(name)      \
  .text;                 \
  .p2align 2, 0x90;      \
  .global name;          \
  .type name, @function; \
name:

#define END(name) .size name, . - name

ENTRY(cloudabi_sys_clock_res_get)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov $0, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 12(%ebp), %ecx
  mov -16(%ebp), %edx
  mov %edx, 0(%ecx)
  mov -12(%ebp), %edx
  mov %edx, 4(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_clock_res_get)

ENTRY(cloudabi_sys_clock_time_get)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -4(%ebp)
  mov $1, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 20(%ebp), %ecx
  mov -16(%ebp), %edx
  mov %edx, 0(%ecx)
  mov -12(%ebp), %edx
  mov %edx, 4(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_clock_time_get)

ENTRY(cloudabi_sys_condvar_signal)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $2, %eax
  mov %ebp, %ecx
  sub $24, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_condvar_signal)

ENTRY(cloudabi_sys_fd_close)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov $3, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_fd_close)

ENTRY(cloudabi_sys_fd_create1)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov $4, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 12(%ebp), %ecx
  mov -16(%ebp), %edx
  mov %edx, 0(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_fd_create1)

ENTRY(cloudabi_sys_fd_create2)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov $5, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 12(%ebp), %ecx
  mov -16(%ebp), %edx
  mov %edx, 0(%ecx)
  mov 16(%ebp), %ecx
  mov -8(%ebp), %edx
  mov %edx, 0(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_fd_create2)

ENTRY(cloudabi_sys_fd_datasync)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov $6, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_fd_datasync)

ENTRY(cloudabi_sys_fd_dup)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov $7, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 12(%ebp), %ecx
  mov -16(%ebp), %edx
  mov %edx, 0(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_fd_dup)

ENTRY(cloudabi_sys_fd_pread)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -32(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov 24(%ebp), %ecx
  mov %ecx, -4(%ebp)
  mov $8, %eax
  mov %ebp, %ecx
  sub $32, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 28(%ebp), %ecx
  mov -32(%ebp), %edx
  mov %edx, 0(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_fd_pread)

ENTRY(cloudabi_sys_fd_pwrite)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -32(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov 24(%ebp), %ecx
  mov %ecx, -4(%ebp)
  mov $9, %eax
  mov %ebp, %ecx
  sub $32, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 28(%ebp), %ecx
  mov -32(%ebp), %edx
  mov %edx, 0(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_fd_pwrite)

ENTRY(cloudabi_sys_fd_read)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -24(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $10, %eax
  mov %ebp, %ecx
  sub $24, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 20(%ebp), %ecx
  mov -24(%ebp), %edx
  mov %edx, 0(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_fd_read)

ENTRY(cloudabi_sys_fd_replace)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $11, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_fd_replace)

ENTRY(cloudabi_sys_fd_seek)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -24(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -12(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $12, %eax
  mov %ebp, %ecx
  sub $24, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 24(%ebp), %ecx
  mov -24(%ebp), %edx
  mov %edx, 0(%ecx)
  mov -20(%ebp), %edx
  mov %edx, 4(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_fd_seek)

ENTRY(cloudabi_sys_fd_stat_get)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $13, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_fd_stat_get)

ENTRY(cloudabi_sys_fd_stat_put)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -24(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $14, %eax
  mov %ebp, %ecx
  sub $24, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_fd_stat_put)

ENTRY(cloudabi_sys_fd_sync)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov $15, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_fd_sync)

ENTRY(cloudabi_sys_fd_write)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -24(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $16, %eax
  mov %ebp, %ecx
  sub $24, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 20(%ebp), %ecx
  mov -24(%ebp), %edx
  mov %edx, 0(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_fd_write)

ENTRY(cloudabi_sys_file_advise)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -32(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -24(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -20(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov 24(%ebp), %ecx
  mov %ecx, -12(%ebp)
  mov 28(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $17, %eax
  mov %ebp, %ecx
  sub $32, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_file_advise)

ENTRY(cloudabi_sys_file_allocate)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -24(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -12(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov 24(%ebp), %ecx
  mov %ecx, -4(%ebp)
  mov $18, %eax
  mov %ebp, %ecx
  sub $24, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_file_allocate)

ENTRY(cloudabi_sys_file_create)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -32(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $19, %eax
  mov %ebp, %ecx
  sub $32, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_file_create)

ENTRY(cloudabi_sys_file_link)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -48(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -44(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -40(%ebp)
  movl $0, -36(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -32(%ebp)
  movl $0, -28(%ebp)
  mov 24(%ebp), %ecx
  mov %ecx, -24(%ebp)
  mov 28(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 32(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $20, %eax
  mov %ebp, %ecx
  sub $48, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_file_link)

ENTRY(cloudabi_sys_file_open)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -40(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -36(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -32(%ebp)
  movl $0, -28(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 24(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov 28(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $21, %eax
  mov %ebp, %ecx
  sub $40, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 32(%ebp), %ecx
  mov -40(%ebp), %edx
  mov %edx, 0(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_file_open)

ENTRY(cloudabi_sys_file_readdir)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -32(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov 24(%ebp), %ecx
  mov %ecx, -4(%ebp)
  mov $22, %eax
  mov %ebp, %ecx
  sub $32, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 28(%ebp), %ecx
  mov -32(%ebp), %edx
  mov %edx, 0(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_file_readdir)

ENTRY(cloudabi_sys_file_readlink)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -40(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -32(%ebp)
  movl $0, -28(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 24(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $23, %eax
  mov %ebp, %ecx
  sub $40, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 28(%ebp), %ecx
  mov -40(%ebp), %edx
  mov %edx, 0(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_file_readlink)

ENTRY(cloudabi_sys_file_rename)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -48(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -40(%ebp)
  movl $0, -36(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -32(%ebp)
  movl $0, -28(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -24(%ebp)
  mov 24(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 28(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $24, %eax
  mov %ebp, %ecx
  sub $48, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_file_rename)

ENTRY(cloudabi_sys_file_stat_fget)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $25, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_file_stat_fget)

ENTRY(cloudabi_sys_file_stat_fput)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -24(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $26, %eax
  mov %ebp, %ecx
  sub $24, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_file_stat_fput)

ENTRY(cloudabi_sys_file_stat_get)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -32(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -28(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 24(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $27, %eax
  mov %ebp, %ecx
  sub $32, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_file_stat_get)

ENTRY(cloudabi_sys_file_stat_put)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -40(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -36(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -32(%ebp)
  movl $0, -28(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 24(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 28(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $28, %eax
  mov %ebp, %ecx
  sub $40, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_file_stat_put)

ENTRY(cloudabi_sys_file_symlink)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -40(%ebp)
  movl $0, -36(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -32(%ebp)
  movl $0, -28(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -24(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 24(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $29, %eax
  mov %ebp, %ecx
  sub $40, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_file_symlink)

ENTRY(cloudabi_sys_file_unlink)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -32(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $30, %eax
  mov %ebp, %ecx
  sub $32, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_file_unlink)

ENTRY(cloudabi_sys_lock_unlock)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $31, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_lock_unlock)

ENTRY(cloudabi_sys_mem_advise)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $32, %eax
  mov %ebp, %ecx
  sub $24, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_mem_advise)

ENTRY(cloudabi_sys_mem_map)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -48(%ebp)
  movl $0, -44(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -40(%ebp)
  movl $0, -36(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -32(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -24(%ebp)
  mov 24(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov 28(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov 32(%ebp), %ecx
  mov %ecx, -4(%ebp)
  mov $33, %eax
  mov %ebp, %ecx
  sub $48, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 36(%ebp), %ecx
  mov -48(%ebp), %edx
  mov %edx, 0(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_mem_map)

ENTRY(cloudabi_sys_mem_protect)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $34, %eax
  mov %ebp, %ecx
  sub $24, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_mem_protect)

ENTRY(cloudabi_sys_mem_sync)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $35, %eax
  mov %ebp, %ecx
  sub $24, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_mem_sync)

ENTRY(cloudabi_sys_mem_unmap)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $36, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_mem_unmap)

ENTRY(cloudabi_sys_poll)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $37, %eax
  mov %ebp, %ecx
  sub $24, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 20(%ebp), %ecx
  mov -24(%ebp), %edx
  mov %edx, 0(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_poll)

ENTRY(cloudabi_sys_proc_exec)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -40(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -32(%ebp)
  movl $0, -28(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -24(%ebp)
  movl $0, -20(%ebp)
  mov 20(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 24(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $38, %eax
  mov %ebp, %ecx
  sub $40, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_proc_exec)

ENTRY(cloudabi_sys_proc_exit)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov $39, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
END(cloudabi_sys_proc_exit)

ENTRY(cloudabi_sys_proc_fork)
  push %ebp
  mov %esp, %ebp
  mov $40, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 8(%ebp), %ecx
  mov -16(%ebp), %edx
  mov %edx, 0(%ecx)
  mov 12(%ebp), %ecx
  mov -8(%ebp), %edx
  mov %edx, 0(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_proc_fork)

ENTRY(cloudabi_sys_proc_raise)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov $41, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_proc_raise)

ENTRY(cloudabi_sys_random_get)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $42, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_random_get)

ENTRY(cloudabi_sys_sock_recv)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -24(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $43, %eax
  mov %ebp, %ecx
  sub $24, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_sock_recv)

ENTRY(cloudabi_sys_sock_send)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -24(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 16(%ebp), %ecx
  mov %ecx, -8(%ebp)
  movl $0, -4(%ebp)
  mov $44, %eax
  mov %ebp, %ecx
  sub $24, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_sock_send)

ENTRY(cloudabi_sys_sock_shutdown)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $45, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_sock_shutdown)

ENTRY(cloudabi_sys_thread_create)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov $46, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  test %eax, %eax
  jnz 1f
  mov 12(%ebp), %ecx
  mov -16(%ebp), %edx
  mov %edx, 0(%ecx)
1:
  pop %ebp
  ret
END(cloudabi_sys_thread_create)

ENTRY(cloudabi_sys_thread_exit)
  push %ebp
  mov %esp, %ebp
  mov 8(%ebp), %ecx
  mov %ecx, -16(%ebp)
  movl $0, -12(%ebp)
  mov 12(%ebp), %ecx
  mov %ecx, -8(%ebp)
  mov $47, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
END(cloudabi_sys_thread_exit)

ENTRY(cloudabi_sys_thread_yield)
  push %ebp
  mov %esp, %ebp
  mov $48, %eax
  mov %ebp, %ecx
  sub $16, %ecx
  int $0x80
  pop %ebp
  ret
END(cloudabi_sys_thread_yield)
