// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/frontend/irgen_c.c
// Function: ir_expr_assign
static bool _ir_expr_assign(
	IRGeneratorCContext *ctx,
	ResizableString *rstr,
	ParserASTNode *node_expr
) {
	assert(ctx);
	assert(rstr);
	assert(node_expr);

	#define	_IR_EXPR_ASSIGN(str_opt)	\
	{	\
		assert(node_expr->nchilds == 2);	\
		rstr_append_with_cstr(rstr, "(");	\
		_ir_expr(ctx, rstr, node_expr->childs[0]);	\
		rstr_append_with_cstr(rstr, (str_opt));	\
		_ir_expr(ctx, rstr, node_expr->childs[1]);	\
		rstr_append_with_cstr(rstr, ")");	\
	}

	switch (node_expr->type) {
		case FE_NODE_EXPR_ASSIGN: {
			_IR_EXPR_ASSIGN(" = ")
			return true;
		}
		case FE_NODE_EXPR_ADD_ASSIGN: {
			_IR_EXPR_ASSIGN(" += ")
			return true;
		}
		case FE_NODE_EXPR_SUB_ASSIGN: {
			_IR_EXPR_ASSIGN(" -= ")
			return true;
		}
		case FE_NODE_EXPR_MUL_ASSIGN: {
			_IR_EXPR_ASSIGN(" *= ")
			return true;
		}
		case FE_NODE_EXPR_DIV_ASSIGN: {
			_IR_EXPR_ASSIGN(" /= ")
			return true;
		}
		case FE_NODE_EXPR_MOD_ASSIGN: {
			_IR_EXPR_ASSIGN(" %= ")
			return true;
		}
		case FE_NODE_EXPR_BAND_ASSIGN: {
			_IR_EXPR_ASSIGN(" &= ")
			return true;
		}
		case FE_NODE_EXPR_BOR_ASSIGN: {
			_IR_EXPR_ASSIGN(" |= ")
			return true;
		}
		case FE_NODE_EXPR_BXOR_ASSIGN: {
			_IR_EXPR_ASSIGN(" ^= ")
			return true;
		}
		case FE_NODE_EXPR_SHIFT_LEFT_ASSIGN: {
			_IR_EXPR_ASSIGN(" <<= ")
			return true;
		}
		case FE_NODE_EXPR_SHIFT_RIGHT_ASSIGN: {
			_IR_EXPR_ASSIGN(" >>= ")
			return true;
		}
		default: {
			return false;
		}
	}

	#undef	_IR_EXPR_ASSIGN
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0x2523d
jmp 0x2525c
leaq 0x57312(%rip), %rdi     # 0x7c556
leaq 0x51b9d(%rip), %rsi     # 0x76de8
movl $0x423, %edx            # imm = 0x423
leaq 0x5259c(%rip), %rcx     # 0x777f3
callq 0x30a0
cmpq $0x0, -0x18(%rbp)
je 0x25265
jmp 0x25284
leaq 0x4d8a2(%rip), %rdi     # 0x72b0e
leaq 0x51b75(%rip), %rsi     # 0x76de8
movl $0x424, %edx            # imm = 0x424
leaq 0x52574(%rip), %rcx     # 0x777f3
callq 0x30a0
cmpq $0x0, -0x20(%rbp)
je 0x2528d
jmp 0x252ac
leaq 0x51e61(%rip), %rdi     # 0x770f5
leaq 0x51b4d(%rip), %rsi     # 0x76de8
movl $0x425, %edx            # imm = 0x425
leaq 0x5254c(%rip), %rcx     # 0x777f3
callq 0x30a0
movq -0x20(%rbp), %rax
movl (%rax), %eax
addl $0xfffff1f0, %eax       # imm = 0xFFFFF1F0
movl %eax, %ecx
movq %rcx, -0x28(%rbp)
subl $0xa, %eax
ja 0x2593e
movq -0x28(%rbp), %rax
leaq 0x51aeb(%rip), %rcx     # 0x76dbc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x252e6
jmp 0x25305
leaq 0x5202b(%rip), %rdi     # 0x77318
leaq 0x51af4(%rip), %rsi     # 0x76de8
movl $0x433, %edx            # imm = 0x433
leaq 0x524f3(%rip), %rcx     # 0x777f3
callq 0x30a0
movq -0x18(%rbp), %rdi
leaq 0x5274d(%rip), %rsi     # 0x77a5d
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x5384c(%rip), %rsi     # 0x78b84
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x51c3d(%rip), %rsi     # 0x76f9e
callq 0x8d70
movb $0x1, -0x1(%rbp)
jmp 0x25942
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x2537b
jmp 0x2539a
leaq 0x51f96(%rip), %rdi     # 0x77318
leaq 0x51a5f(%rip), %rsi     # 0x76de8
movl $0x437, %edx            # imm = 0x437
leaq 0x5245e(%rip), %rcx     # 0x777f3
callq 0x30a0
movq -0x18(%rbp), %rdi
leaq 0x526b8(%rip), %rsi     # 0x77a5d
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x52477(%rip), %rsi     # 0x77844
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x51ba8(%rip), %rsi     # 0x76f9e
callq 0x8d70
movb $0x1, -0x1(%rbp)
jmp 0x25942
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x25410
jmp 0x2542f
leaq 0x51f01(%rip), %rdi     # 0x77318
leaq 0x519ca(%rip), %rsi     # 0x76de8
movl $0x43b, %edx            # imm = 0x43B
leaq 0x523c9(%rip), %rcx     # 0x777f3
callq 0x30a0
movq -0x18(%rbp), %rdi
leaq 0x52623(%rip), %rsi     # 0x77a5d
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x523e7(%rip), %rsi     # 0x77849
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x51b13(%rip), %rsi     # 0x76f9e
callq 0x8d70
movb $0x1, -0x1(%rbp)
jmp 0x25942
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x254a5
jmp 0x254c4
leaq 0x51e6c(%rip), %rdi     # 0x77318
leaq 0x51935(%rip), %rsi     # 0x76de8
movl $0x43f, %edx            # imm = 0x43F
leaq 0x52334(%rip), %rcx     # 0x777f3
callq 0x30a0
movq -0x18(%rbp), %rdi
leaq 0x5258e(%rip), %rsi     # 0x77a5d
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x52357(%rip), %rsi     # 0x7784e
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x51a7e(%rip), %rsi     # 0x76f9e
callq 0x8d70
movb $0x1, -0x1(%rbp)
jmp 0x25942
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x2553a
jmp 0x25559
leaq 0x51dd7(%rip), %rdi     # 0x77318
leaq 0x518a0(%rip), %rsi     # 0x76de8
movl $0x443, %edx            # imm = 0x443
leaq 0x5229f(%rip), %rcx     # 0x777f3
callq 0x30a0
movq -0x18(%rbp), %rdi
leaq 0x524f9(%rip), %rsi     # 0x77a5d
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x522c7(%rip), %rsi     # 0x77853
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x519e9(%rip), %rsi     # 0x76f9e
callq 0x8d70
movb $0x1, -0x1(%rbp)
jmp 0x25942
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x255cf
jmp 0x255ee
leaq 0x51d42(%rip), %rdi     # 0x77318
leaq 0x5180b(%rip), %rsi     # 0x76de8
movl $0x447, %edx            # imm = 0x447
leaq 0x5220a(%rip), %rcx     # 0x777f3
callq 0x30a0
movq -0x18(%rbp), %rdi
leaq 0x52464(%rip), %rsi     # 0x77a5d
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x52237(%rip), %rsi     # 0x77858
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x51954(%rip), %rsi     # 0x76f9e
callq 0x8d70
movb $0x1, -0x1(%rbp)
jmp 0x25942
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x25664
jmp 0x25683
leaq 0x51cad(%rip), %rdi     # 0x77318
leaq 0x51776(%rip), %rsi     # 0x76de8
movl $0x44b, %edx            # imm = 0x44B
leaq 0x52175(%rip), %rcx     # 0x777f3
callq 0x30a0
movq -0x18(%rbp), %rdi
leaq 0x523cf(%rip), %rsi     # 0x77a5d
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x521a7(%rip), %rsi     # 0x7785d
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x518bf(%rip), %rsi     # 0x76f9e
callq 0x8d70
movb $0x1, -0x1(%rbp)
jmp 0x25942
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x256f9
jmp 0x25718
leaq 0x51c18(%rip), %rdi     # 0x77318
leaq 0x516e1(%rip), %rsi     # 0x76de8
movl $0x44f, %edx            # imm = 0x44F
leaq 0x520e0(%rip), %rcx     # 0x777f3
callq 0x30a0
movq -0x18(%rbp), %rdi
leaq 0x5233a(%rip), %rsi     # 0x77a5d
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x52117(%rip), %rsi     # 0x77862
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x5182a(%rip), %rsi     # 0x76f9e
callq 0x8d70
movb $0x1, -0x1(%rbp)
jmp 0x25942
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x2578e
jmp 0x257ad
leaq 0x51b83(%rip), %rdi     # 0x77318
leaq 0x5164c(%rip), %rsi     # 0x76de8
movl $0x453, %edx            # imm = 0x453
leaq 0x5204b(%rip), %rcx     # 0x777f3
callq 0x30a0
movq -0x18(%rbp), %rdi
leaq 0x522a5(%rip), %rsi     # 0x77a5d
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x52087(%rip), %rsi     # 0x77867
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x51795(%rip), %rsi     # 0x76f9e
callq 0x8d70
movb $0x1, -0x1(%rbp)
jmp 0x25942
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x25823
jmp 0x25842
leaq 0x51aee(%rip), %rdi     # 0x77318
leaq 0x515b7(%rip), %rsi     # 0x76de8
movl $0x457, %edx            # imm = 0x457
leaq 0x51fb6(%rip), %rcx     # 0x777f3
callq 0x30a0
movq -0x18(%rbp), %rdi
leaq 0x52210(%rip), %rsi     # 0x77a5d
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x51ff7(%rip), %rsi     # 0x7786c
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x51700(%rip), %rsi     # 0x76f9e
callq 0x8d70
movb $0x1, -0x1(%rbp)
jmp 0x25942
movq -0x20(%rbp), %rax
cmpl $0x2, 0x44(%rax)
jne 0x258b8
jmp 0x258d7
leaq 0x51a59(%rip), %rdi     # 0x77318
leaq 0x51522(%rip), %rsi     # 0x76de8
movl $0x45b, %edx            # imm = 0x45B
leaq 0x51f21(%rip), %rcx     # 0x777f3
callq 0x30a0
movq -0x18(%rbp), %rdi
leaq 0x5217b(%rip), %rsi     # 0x77a5d
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq (%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x51f68(%rip), %rsi     # 0x77872
callq 0x8d70
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x48(%rax), %rax
movq 0x8(%rax), %rdx
callq 0x227b0
movq -0x18(%rbp), %rdi
leaq 0x5166b(%rip), %rsi     # 0x76f9e
callq 0x8d70
movb $0x1, -0x1(%rbp)
jmp 0x25942
movb $0x0, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x30, %rsp
popq %rbp
retq
nopl (%rax)