// File: /workspace/github_c_makefile_star2_O0/fukunagatsu[P]RIblast/./fmath.hpp
// Function: fmath::local::LogVar<12ul>::LogVar()
LogVar()
		: c_log2(::logf(2.0f) / (1 << 23))
	{
		const double e = 1 / double(1 << 24);
		const double h = 1 / double(1 << LEN);
		const size_t n = 1U << LEN;
		for (size_t i = 0; i < n; i++) {
			double x = 1 + double(i) / n;
			double a = ::log(x);
			tbl[i].app = (float)a;
			if (i < n - 1) {
				double b = ::log(x + h - e);
				tbl[i].rev = (float)((b - a) / ((h - e) * (1 << 23)));
			} else {
				tbl[i].rev = (float)(1 / (x * (1 << 23)));
			}
		}
		for (int i = 0; i < 4; i++) {
			m1[i] = mask(8) << 23;
			m2[i] = mask(LEN) << (23 - LEN);
			m3[i] = mask(23 - LEN);
			m4[i] = c_log2;
			m5[i] = 127U << 23;
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x50(%rbp)
movss 0x22dc4(%rip), %xmm0    # 0x389b0
callq 0x3510
movq -0x50(%rbp), %rax
movss 0x22dc7(%rip), %xmm1    # 0x389c4
divss %xmm1, %xmm0
movss %xmm0, 0x4050(%rax)
movsd 0x22d7f(%rip), %xmm0    # 0x38990
movsd %xmm0, -0x10(%rbp)
movsd 0x22d5a(%rip), %xmm0    # 0x38978
movsd %xmm0, -0x18(%rbp)
movq $0x800, -0x20(%rbp)     # imm = 0x800
movq $0x0, -0x28(%rbp)
cmpq $0x800, -0x28(%rbp)     # imm = 0x800
jae 0x15d40
movaps 0x22d88(%rip), %xmm0    # 0x389d0
movq -0x28(%rbp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movapd 0x22d87(%rip), %xmm0    # 0x389e0
subpd %xmm0, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movsd 0x22cf8(%rip), %xmm0    # 0x38968
divsd %xmm0, %xmm1
movsd 0x22cd4(%rip), %xmm0    # 0x38950
addsd %xmm1, %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x30(%rbp), %xmm0
callq 0x3220
movq -0x50(%rbp), %rax
movsd %xmm0, -0x38(%rbp)
movsd -0x38(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x28(%rbp), %rcx
movss %xmm0, 0x50(%rax,%rcx,8)
cmpq $0x7ff, -0x28(%rbp)     # imm = 0x7FF
jae 0x15d02
movsd 0x22cbb(%rip), %xmm0    # 0x38978
addsd -0x30(%rbp), %xmm0
movsd 0x22cc6(%rip), %xmm1    # 0x38990
subsd %xmm1, %xmm0
callq 0x3220
movq -0x50(%rbp), %rax
movsd %xmm0, -0x40(%rbp)
movsd -0x40(%rbp), %xmm0
subsd -0x38(%rbp), %xmm0
movsd 0x22cb2(%rip), %xmm1    # 0x389a0
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x28(%rbp), %rcx
movss %xmm0, 0x54(%rax,%rcx,8)
jmp 0x15d2d
movq -0x50(%rbp), %rax
movsd 0x22c8a(%rip), %xmm1    # 0x38998
mulsd -0x30(%rbp), %xmm1
movsd 0x22c35(%rip), %xmm0    # 0x38950
divsd %xmm1, %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x28(%rbp), %rcx
movss %xmm0, 0x54(%rax,%rcx,8)
jmp 0x15d2f
movq -0x28(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x28(%rbp)
jmp 0x15c33
movl $0x0, -0x44(%rbp)
cmpl $0x4, -0x44(%rbp)
jge 0x15dc3
movl $0x8, %edi
callq 0x15dd0
movl %eax, %edx
movq -0x50(%rbp), %rax
shll $0x17, %edx
movslq -0x44(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl $0xb, %edi
callq 0x15dd0
movl %eax, %edx
movq -0x50(%rbp), %rax
shll $0xc, %edx
movslq -0x44(%rbp), %rcx
movl %edx, 0x10(%rax,%rcx,4)
movl $0xc, %edi
callq 0x15dd0
movl %eax, %edx
movq -0x50(%rbp), %rax
movslq -0x44(%rbp), %rcx
movl %edx, 0x20(%rax,%rcx,4)
movss 0x4050(%rax), %xmm0
movslq -0x44(%rbp), %rcx
movss %xmm0, 0x30(%rax,%rcx,4)
movslq -0x44(%rbp), %rcx
movl $0x3f800000, 0x40(%rax,%rcx,4) # imm = 0x3F800000
movl -0x44(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x44(%rbp)
jmp 0x15d47
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)