struc s_stat
{
    .st_dev dq 0
    .st_ino dq 0
    .st_nlink dq 0
    .st_mode dd 0
    .st_uid dd 0
    .st_gid dq 0
    .st_rdev dq 0
    .st_size dq 0
    .st_blksize dq 0
    .st_blocks dq 0
    .st_atim dq 0
    .st_atim_nano dq 0
    .st_mtim dq 0
    .st_mtim_nano dq 0
    .st_ctim dq 0
    .st_ctim_nano dq 0
    .st_atim_idk dq 0
    .st_mtim_idk dq 0
    .st_ctim_idk dq 0
}

macro syscall1 nr, arg1
{
   mov rax, nr
   mov rdi, arg1
   syscall
}

macro syscall2 nr, arg1, arg2
{
   mov rax, nr
   mov rdi, arg1
   mov rsi, arg2
   syscall
}

macro syscall3 nr, arg1, arg2, arg3
{
   mov rax, nr
   mov rdi, arg1
   mov rsi, arg2
   mov rdx, arg3
   syscall
}

macro syscall4 nr, arg1, arg2, arg3, arg4
{
   mov rax, nr
   mov rdi, arg1
   mov rsi, arg2
   mov rdx, arg3
   mov r10, arg4
   syscall
}

macro syscall5 nr, arg1, arg2, arg3, arg4, arg5
{
   mov rax, nr
   mov rdi, arg1
   mov rsi, arg2
   mov rdx, arg3
   mov r10, arg4
   mov r8, arg5
   syscall
}

macro syscall6 nr, arg1, arg2, arg3, arg4, arg5, arg6
{
   mov rax, nr
   mov rdi, arg1
   mov rsi, arg2
   mov rdx, arg3
   mov r10, arg4
   mov r8, arg5
   mov r9, arg6
   syscall
}