// File: /workspace/github_c_makefile_star2_O0/Ihsoh[P]ilang/compiler/frontend/semantics.c
// Function: set_constexpr_double
static void _set_constexpr_double(
	ParserContext *ctx,
	ParserASTNode *node,
	uint8_t target_type,
	double value
) {
	assert(ctx);
	assert(node);

	#define	_A(type)	\
		case FE_TYPE_##type: {	\
			FE_EXPR_AST_NODE_SET_CONSTEXPR_RESULT_##type##_VAL(node, value);	\
			break;	\
		}

	switch (target_type) {
		_A(CHAR)
		_A(INT8)
		_A(INT16)
		_A(INT32)
		_A(INT64)
		_A(UINT8)
		_A(UINT16)
		_A(UINT32)
		_A(UINT64)
		_A(FLOAT)
		_A(DOUBLE)
		_A(POINTER)
		default: {
			assert(0);
		}
	}

	#undef	_A
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %dl, %al
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movb %al, -0x11(%rbp)
movsd %xmm0, -0x20(%rbp)
cmpq $0x0, -0x8(%rbp)
je 0x5c3f3
jmp 0x5c412
leaq 0x2015c(%rip), %rdi     # 0x7c556
leaq 0x21e49(%rip), %rsi     # 0x7e24a
movl $0x958, %edx            # imm = 0x958
leaq 0x23507(%rip), %rcx     # 0x7f914
callq 0x30a0
cmpq $0x0, -0x10(%rbp)
je 0x5c41b
jmp 0x5c43a
leaq 0x19bb1(%rip), %rdi     # 0x75fd3
leaq 0x21e21(%rip), %rsi     # 0x7e24a
movl $0x959, %edx            # imm = 0x959
leaq 0x234df(%rip), %rcx     # 0x7f914
callq 0x30a0
movzbl -0x11(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x28(%rbp)
subl $0xf, %eax
ja 0x5c61f
movq -0x28(%rbp), %rax
leaq 0x21d2e(%rip), %rcx     # 0x7e188
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movsd -0x20(%rbp), %xmm0
cvttsd2si %xmm0, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x88(%rax)
movq -0x10(%rbp), %rax
movb $0x1, 0x71(%rax)
jmp 0x5c63e
movsd -0x20(%rbp), %xmm0
cvttsd2si %xmm0, %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x88(%rax)
movq -0x10(%rbp), %rax
movb $0x2, 0x71(%rax)
jmp 0x5c63e
movsd -0x20(%rbp), %xmm0
cvttsd2si %xmm0, %eax
movw %ax, %cx
movq -0x10(%rbp), %rax
movw %cx, 0x88(%rax)
movq -0x10(%rbp), %rax
movb $0x3, 0x71(%rax)
jmp 0x5c63e
cvttsd2si -0x20(%rbp), %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x88(%rax)
movq -0x10(%rbp), %rax
movb $0x4, 0x71(%rax)
jmp 0x5c63e
cvttsd2si -0x20(%rbp), %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x10(%rbp), %rax
movb $0x5, 0x71(%rax)
jmp 0x5c63e
cvttsd2si -0x20(%rbp), %eax
movb %al, %cl
movq -0x10(%rbp), %rax
movb %cl, 0x88(%rax)
movq -0x10(%rbp), %rax
movb $0x6, 0x71(%rax)
jmp 0x5c63e
cvttsd2si -0x20(%rbp), %eax
movw %ax, %cx
movq -0x10(%rbp), %rax
movw %cx, 0x88(%rax)
movq -0x10(%rbp), %rax
movb $0x7, 0x71(%rax)
jmp 0x5c63e
cvttsd2si -0x20(%rbp), %rax
movl %eax, %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x88(%rax)
movq -0x10(%rbp), %rax
movb $0x8, 0x71(%rax)
jmp 0x5c63e
movsd -0x20(%rbp), %xmm0
movsd 0x21c99(%rip), %xmm2    # 0x7e208
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
cvttsd2si %xmm1, %rax
cvttsd2si %xmm0, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
andq %rdx, %rax
orq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x10(%rbp), %rax
movb $0x9, 0x71(%rax)
jmp 0x5c63e
movsd -0x20(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x10(%rbp), %rax
movss %xmm0, 0x88(%rax)
movq -0x10(%rbp), %rax
movb $0xa, 0x71(%rax)
jmp 0x5c63e
movsd -0x20(%rbp), %xmm0
movq -0x10(%rbp), %rax
movsd %xmm0, 0x88(%rax)
movq -0x10(%rbp), %rax
movb $0xb, 0x71(%rax)
jmp 0x5c63e
movsd -0x20(%rbp), %xmm0
movsd 0x21c1c(%rip), %xmm2    # 0x7e208
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
cvttsd2si %xmm1, %rax
cvttsd2si %xmm0, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
andq %rdx, %rax
orq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x88(%rax)
movq -0x10(%rbp), %rax
movb $0x10, 0x71(%rax)
jmp 0x5c63e
leaq 0x15e35(%rip), %rdi     # 0x7245b
leaq 0x21c1d(%rip), %rsi     # 0x7e24a
movl $0x96f, %edx            # imm = 0x96F
leaq 0x232db(%rip), %rcx     # 0x7f914
callq 0x30a0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)