이중 연결리스트에서의 삽입 함수를 공부중입미다

typedef int element
typedef struct DlistNode{
element data
struct DlistNode *llink
struct DlistNode *rlink
}DlistNode

void dinsert_node(DlistNode *before, DlistNode *new_node)
{
new_node->llink=before
new_node->rlink=before->rlink
before->rlink->llink=new_node
before->rlink=new_node
}

노드 new_node응 노드 before의 오른쪽에 삽입하는 함수입니다. 제가 매번 헷갈리는게

함수의 첫째줄인 new_node->llink=before 는
before라는 포인터의 주소를 new_node의 왼쪽 링크필드에 대입하는 것인가요??
삽입해서 연결하려면
new_node->llink=before->rlink처럼
before의 오른쪽 링크필드가 가리키는 것이
새로운 노드의 왼쪽 필드에 들어가야 하는게 아닌가요...? 이게 그림을 보고 하는데도 잘 이해가 안갑니다.. =라는 연산이 후위대입?이라 생각하는게 아닌가요??