format ELF
include "public_stdcall.inc"
section '.text' executable
extrn malloc
public_stdcall _ksys_start_thread,12
;arg1 - proc
;arg2 - stacksize
;arg3 - pid
  push  dword [esp+8]
  call  malloc
  test  eax,eax
  jz    .no_mem
  push  ebx
  mov   edx,eax
  add   edx,[esp+12]
  mov   [edx-4],dword 0
  mov   ecx,[esp+8]
  mov   ebx,1
  mov   eax,51
  int   0x40
  mov   ebx,[esp+16]
  test  ebx,ebx
  jz    .no_val
  mov   [ebx],eax
.no_val:  
  mov   eax,edx
  sub   eax,[esp+12]
  pop   ebx
  ret   12
.no_mem:
  mov   ecx,[esp+12]
  mov   [ecx],eax
  ret   12