global ft_list_push_front extern malloc ft_list_push_front: push rdi ; caller saved (begin_list) push rsi ; caller saved (data) mov rdi, 16 ; sizeof(t_list) call malloc WRT ..plt cmp rax, 0 je .done pop rsi ; restore data pop rdi ; restore begin_list mov [rax], rsi ; new_node->data = data(rsi) mov rdx, [rdi] ; rdx = *begin_list mov [rax + 8], rdx ; new_node->next = *begin_list mov [rdi], rax ; *begin_list = new_node .done: ret