// File: /workspace/github_cpp_makefile_star2_O1/hirakuni45[P]input_class/./input.hpp
// Function: float utils::basic_input<utils::def_chainp>::real_<float>()
T real_() noexcept
		{
			struct real_t {
				uint32_t	a;
				uint32_t	b;
				uint32_t	c;
				bool		sign;
				bool		p;
				bool		ovf;

				real_t() : a(0), b(0), c(1), sign(false), p(false), ovf(false) { }

				void set_sign(bool sig = true) {
					sign = sig;
				}

				void add(char ch)
				{
					if(c >= (0xffff'ffff / 10)) {
						if(!p) ovf = true;
					} else {
						a *= 10;
						a += static_cast<uint32_t>(ch - '0');
						c *= 10;
					}
				}

				void point() {
					b = a;
					a = 0;
					c = 1;
					p = true;
				}

				T get() const {
					if(p) {
						T tmp = static_cast<T>(b) + static_cast<T>(a) / static_cast<T>(c);
						if(sign) return -tmp;
						return tmp;
					} else {
						T tmp = static_cast<T>(a);
						if(sign) return -tmp;
						else return tmp;
					}				
				}
			};

			real_t	base;
			real_t	exp;
			bool expf = false;
			char ch;
			while((ch = inp_()) != 0) {
				if(ch == '+') {
					if(expf) {
						if(exp.a != 0) break; 
						exp.set_sign(false);
					} else {
						if(base.a != 0) break;
						base.set_sign(false);
					}
				} else if(ch == '-') {
					if(expf) {
						if(exp.a != 0) break; 
						exp.set_sign();
					} else {
						if(base.a != 0) break;
						base.set_sign();
					}
				} else if(ch >= '0' && ch <= '9') {
					if(expf) {
						exp.add(ch);
					} else { 
						base.add(ch);
					}
				} else if(ch == '.') {
					if(expf) {
						if(exp.p) break;
						exp.point();
					} else {
						if(base.p) break;
						base.point();
					}
				} else if(ch == 'e' || ch == 'E') {
					if(expf) break;
					expf = true;
				} else {
					break;
				}
			}

			if(base.ovf || exp.ovf) {
				ovf_ = true;
			}

			if(expf) {
				return base.get() * pow(static_cast<T>(10), exp.get());
			} else {
				return base.get();
			}
		}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rdi, 0x38(%rsp)
leaq 0x8(%rdi), %rax
movq %rax, 0x40(%rsp)
xorl %eax, %eax
xorl %ecx, %ecx
movl $0x1, %edx
xorl %esi, %esi
xorl %edi, %edi
movl $0x0, 0x2c(%rsp)
movl $0x0, 0x28(%rsp)
xorl %r8d, %r8d
xorl %r9d, %r9d
movl $0x1, %r10d
xorl %r13d, %r13d
xorl %r11d, %r11d
xorl %r12d, %r12d
movl %r12d, %ebx
movq %r11, 0x18(%rsp)
movl %r10d, %ebp
movl %r9d, %r12d
movl %r8d, %r14d
movq %rdi, 0x10(%rsp)
movl %esi, 0xc(%rsp)
movl %edx, %r15d
movb %cl, 0x9(%rsp)
movb %al, 0x8(%rsp)
movq 0x40(%rsp), %rdi
callq 0xdf1c
cmpb $0x2b, %al
movb %bl, 0xa(%rsp)
movq %rbp, 0x30(%rsp)
movq %r15, 0x20(%rsp)
je 0xe522
movzbl %al, %ecx
cmpl $0x2d, %ecx
je 0xe512
movl %r13d, %ebp
movl %r12d, %r15d
testl %ecx, %ecx
je 0xe73b
leal -0x30(%rax), %edx
cmpb $0x9, %dl
ja 0xe577
testb $0x1, 0xa(%rsp)
je 0xe607
movq 0x30(%rsp), %rbx
cmpl $0x19999999, %ebx       # imm = 0x19999999
jb 0xe693
movl 0x28(%rsp), %ecx
movzbl %cl, %ecx
testb $0x1, %r14b
movl $0x1, %eax
cmovel %eax, %ecx
movl %ecx, 0x28(%rsp)
movb 0x8(%rsp), %al
movb 0x9(%rsp), %cl
movq 0x20(%rsp), %rdx
jmp 0xe63f
testb $0x1, %bl
je 0xe573
movq %r15, %rsi
movl %r12d, %r15d
movb $0x1, %r9b
jmp 0xe534
testb $0x1, %bl
je 0xe5ce
movq %r15, %rsi
movl %r12d, %r15d
xorl %r9d, %r9d
movb 0x8(%rsp), %al
movb 0x9(%rsp), %cl
movl %esi, %edx
movl 0xc(%rsp), %esi
movq 0x10(%rsp), %rdi
movl %r14d, %r8d
movl %ebp, %r10d
movl %r13d, %ebp
movq 0x18(%rsp), %r11
movb %r14b, 0xb(%rsp)
movq %r11, %r14
movl %ebx, %r12d
testl %r14d, %r14d
movb 0xb(%rsp), %r14b
je 0xe46a
jmp 0xe73b
movb $0x1, %cl
jmp 0xe5d0
cmpb $0x2e, %al
jne 0xe64d
movb 0xa(%rsp), %bl
testb $0x1, %bl
movl %r15d, %r9d
je 0xe6ca
movb $0x1, %r8b
movb 0x8(%rsp), %al
movb 0x9(%rsp), %cl
movq 0x20(%rsp), %rdx
movl 0xc(%rsp), %esi
movq 0x10(%rsp), %rdi
movl $0x1, %r10d
movq 0x18(%rsp), %r11
movl %r11d, %r13d
movl $0x0, %r11d
movl %ebx, %r12d
testb $0x1, %r14b
je 0xe46a
jmp 0xe73b
xorl %ecx, %ecx
movb 0x8(%rsp), %al
movl %r15d, %edx
movl 0xc(%rsp), %esi
movq 0x10(%rsp), %rdi
movl %r14d, %r8d
movl %r12d, %r15d
movl %r12d, %r9d
movl %ebp, %r10d
movl %r13d, %ebp
movq 0x18(%rsp), %r11
movl %ebx, %r12d
cmpl $0x0, 0x10(%rsp)
je 0xe46a
jmp 0xe73b
movq 0x20(%rsp), %rdx
cmpl $0x19999999, %edx       # imm = 0x19999999
movq 0x30(%rsp), %rbx
jb 0xe6ff
movl 0x2c(%rsp), %ecx
movzbl %cl, %ecx
movb 0x8(%rsp), %sil
testb $0x1, %sil
movl $0x1, %eax
cmovel %eax, %ecx
movl %ecx, 0x2c(%rsp)
movl %esi, %eax
movb 0x9(%rsp), %cl
movl 0xc(%rsp), %esi
movq 0x10(%rsp), %rdi
jmp 0xe71e
andb $-0x21, %al
cmpb $0x45, %al
jne 0xe73b
movb $0x1, %r12b
movb 0x8(%rsp), %al
movb 0x9(%rsp), %cl
movq 0x20(%rsp), %rdx
movl 0xc(%rsp), %esi
movq 0x10(%rsp), %rdi
movl %r14d, %r8d
movl %r15d, %r9d
movq 0x30(%rsp), %r10
movl %ebp, %r13d
movq 0x18(%rsp), %r11
testb $0x1, 0xa(%rsp)
je 0xe46a
jmp 0xe73b
movq 0x18(%rsp), %rax
leal (%rax,%rax,4), %eax
leal (%rcx,%rax,2), %r11d
addl $-0x30, %r11d
addl %ebx, %ebx
leal (%rbx,%rbx,4), %r10d
movb 0x8(%rsp), %al
movb 0x9(%rsp), %cl
movq 0x20(%rsp), %rdx
movl 0xc(%rsp), %esi
movq 0x10(%rsp), %rdi
movl %r14d, %r8d
movl %r15d, %r9d
movl %ebp, %r13d
jmp 0xe72f
movb $0x1, %al
movb 0x9(%rsp), %cl
movl $0x1, %edx
movq 0x10(%rsp), %rsi
movl $0x0, %edi
movl %r14d, %r8d
movq 0x30(%rsp), %r10
movl %ebp, %r13d
movq 0x18(%rsp), %r11
movl %ebx, %r12d
testb $0x1, 0x8(%rsp)
je 0xe46a
jmp 0xe73b
movq 0x10(%rsp), %rax
leal (%rax,%rax,4), %eax
leal (%rcx,%rax,2), %edi
addl $-0x30, %edi
addl %edx, %edx
leal (%rdx,%rdx,4), %edx
movb 0x8(%rsp), %al
movb 0x9(%rsp), %cl
movl 0xc(%rsp), %esi
movl %r14d, %r8d
movl %r15d, %r9d
movl %ebx, %r10d
movl %ebp, %r13d
movq 0x18(%rsp), %r11
movb 0xa(%rsp), %bl
movl %ebx, %r12d
jmp 0xe46a
testb $0x1, 0x2c(%rsp)
jne 0xe749
testb $0x1, 0x28(%rsp)
je 0xe752
movq 0x38(%rsp), %rax
movb $0x1, 0x1b(%rax)
testb $0x1, 0xa(%rsp)
je 0xe785
testb $0x1, 0x8(%rsp)
je 0xe7ca
movl 0xc(%rsp), %eax
cvtsi2ss %rax, %xmm1
movl 0x10(%rsp), %eax
cvtsi2ss %rax, %xmm0
movl 0x20(%rsp), %eax
cvtsi2ss %rax, %xmm2
divss %xmm2, %xmm0
addss %xmm1, %xmm0
jmp 0xe7d3
testb $0x1, 0x8(%rsp)
je 0xe810
movl 0xc(%rsp), %eax
cvtsi2ss %rax, %xmm1
movl 0x10(%rsp), %eax
cvtsi2ss %rax, %xmm0
movl 0x20(%rsp), %eax
cvtsi2ss %rax, %xmm2
divss %xmm2, %xmm0
addss %xmm1, %xmm0
testb $0x1, 0x9(%rsp)
je 0xe867
xorps 0x189b(%rip), %xmm0     # 0x10060
jmp 0xe867
movl 0x10(%rsp), %eax
cvtsi2ss %rax, %xmm0
testb $0x1, 0x9(%rsp)
je 0xe7e1
xorps 0x187f(%rip), %xmm0     # 0x10060
testb $0x1, %r14b
je 0xe829
movl %ebp, %eax
xorps %xmm2, %xmm2
cvtsi2ss %rax, %xmm2
movl 0x18(%rsp), %eax
xorps %xmm1, %xmm1
cvtsi2ss %rax, %xmm1
movl 0x30(%rsp), %eax
cvtsi2ss %rax, %xmm3
divss %xmm3, %xmm1
addss %xmm2, %xmm1
jmp 0xe835
movl 0x10(%rsp), %eax
cvtsi2ss %rax, %xmm0
testb $0x1, 0x9(%rsp)
je 0xe867
orps 0x1839(%rip), %xmm0     # 0x10060
jmp 0xe867
movl 0x18(%rsp), %eax
xorps %xmm1, %xmm1
cvtsi2ss %rax, %xmm1
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x10(%rsp)
testb $0x1, %r15b
je 0xe84c
xorps 0x1814(%rip), %xmm1     # 0x10060
cvtss2sd %xmm1, %xmm1
movsd 0x19a8(%rip), %xmm0     # 0x10200
callq 0x4350
mulsd 0x10(%rsp), %xmm0
cvtsd2ss %xmm0, %xmm0
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rdi
callq 0x9b1f