section .text

extern _init
extern main
extern _fini
extern initialize_libc
extern exit

global _start
_start:
	; Set up end of the stack frame linked list.
	xor rbp, rbp
	push rbp ; rip=0
	push rbp ; rbp=0
	mov rbp, rsp

	push rdi
	push rsi

	call initialize_libc

	call _init

	pop rsi ; argv
	pop rdi ; argc

	call main

    push rax

    call _fini

    pop rdi

	call exit