// File: /workspace/github_cpp_makefile_star2_O3/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
movl $0x1, %edx
xorl %ecx, %ecx
xorl %esi, %esi
xorl %edi, %edi
movl $0x0, 0x34(%rsp)
movl $0x0, 0x30(%rsp)
xorl %r8d, %r8d
xorl %r9d, %r9d
movl $0x1, %r10d
xorl %ebx, %ebx
xorl %r11d, %r11d
xorl %r13d, %r13d
movl %r13d, %r12d
movq %r11, 0x20(%rsp)
movl %ebx, %r13d
movl %r10d, %r15d
movl %r9d, %ebx
movl %r8d, %ebp
movq %rdi, 0x10(%rsp)
movl %esi, 0xc(%rsp)
movl %edx, %r14d
movb %cl, 0x9(%rsp)
movb %al, 0x18(%rsp)
movq 0x40(%rsp), %rdi
callq 0xe152
cmpb $0x2b, %al
movb %bpl, 0xa(%rsp)
movb %r12b, 0xb(%rsp)
movq %r14, 0x28(%rsp)
je 0xe71e
movzbl %al, %ecx
cmpl $0x2d, %ecx
je 0xe70d
movq %r15, %rbp
movl %r13d, %r15d
movl %ebx, %r14d
testl %ecx, %ecx
je 0xe935
leal -0x30(%rax), %edx
cmpb $0x9, %dl
ja 0xe770
testb $0x1, 0xb(%rsp)
je 0xe809
cmpl $0x19999999, %ebp       # imm = 0x19999999
jb 0xe887
movb 0xa(%rsp), %r8b
movl %r8d, %eax
xorb $0x1, %al
movl 0x30(%rsp), %ecx
orb %al, %cl
movl %ecx, 0x30(%rsp)
movb 0x18(%rsp), %al
movb 0x9(%rsp), %cl
movq 0x28(%rsp), %rdx
movl 0xc(%rsp), %esi
movq 0x10(%rsp), %rdi
jmp 0xe91a
testb $0x1, %r12b
je 0xe76c
movq %r14, %rsi
movl %ebx, %r14d
movb $0x1, %r9b
jmp 0xe731
testb $0x1, %r12b
je 0xe7ca
movq %r14, %rsi
movl %ebx, %r14d
xorl %r9d, %r9d
movb 0x18(%rsp), %al
movb 0x9(%rsp), %cl
movl %esi, %edx
movl 0xc(%rsp), %esi
movq 0x10(%rsp), %rdi
movl %ebp, %r8d
movq %r15, %rbp
movl %r15d, %r10d
movl %r13d, %r15d
movl %r13d, %ebx
movl $0x0, %r11d
movl %r12d, %r13d
cmpl $0x0, 0x20(%rsp)
je 0xe65d
jmp 0xe935
movb $0x1, %cl
jmp 0xe7cc
cmpb $0x2e, %al
jne 0xe841
movb 0xb(%rsp), %r12b
testb $0x1, %r12b
movl %r14d, %r9d
je 0xe8c1
movb $0x1, %r8b
movb 0x18(%rsp), %al
movb 0x9(%rsp), %cl
movq 0x28(%rsp), %rdx
movl 0xc(%rsp), %esi
movq 0x10(%rsp), %rdi
movl $0x1, %r10d
movq 0x20(%rsp), %r11
movl %r11d, %ebx
movl $0x0, %r11d
movl %r12d, %r13d
testb $0x1, 0xa(%rsp)
je 0xe65d
jmp 0xe935
xorl %ecx, %ecx
movb 0x18(%rsp), %al
movl %r14d, %edx
movl 0xc(%rsp), %esi
movl $0x0, %edi
movl %ebp, %r8d
movl %ebx, %r14d
movl %ebx, %r9d
movq %r15, %rbp
movl %r15d, %r10d
movl %r13d, %r15d
movl %r13d, %ebx
movq 0x20(%rsp), %r11
movl %r12d, %r13d
cmpl $0x0, 0x10(%rsp)
je 0xe65d
jmp 0xe935
movq 0x28(%rsp), %rdx
cmpl $0x19999999, %edx       # imm = 0x19999999
jb 0xe8f6
movb 0x18(%rsp), %sil
movl %esi, %eax
xorb $0x1, %al
movl 0x34(%rsp), %ecx
orb %al, %cl
movl %ecx, 0x34(%rsp)
movl %esi, %eax
movb 0x9(%rsp), %cl
movl 0xc(%rsp), %esi
movq 0x10(%rsp), %rdi
jmp 0xe915
andb $-0x21, %al
cmpb $0x45, %al
jne 0xe935
movb $0x1, %r13b
movb 0x18(%rsp), %al
movb 0x9(%rsp), %cl
movq 0x28(%rsp), %rdx
movl 0xc(%rsp), %esi
movq 0x10(%rsp), %rdi
movb 0xa(%rsp), %r8b
movl %r14d, %r9d
movl %ebp, %r10d
movl %r15d, %ebx
movq 0x20(%rsp), %r11
testb $0x1, 0xb(%rsp)
je 0xe65d
jmp 0xe935
movq 0x20(%rsp), %rax
leal (%rax,%rax,4), %eax
leal (%rcx,%rax,2), %r11d
addl $-0x30, %r11d
addl %ebp, %ebp
leal (%rbp,%rbp,4), %r10d
movb 0x18(%rsp), %al
movb 0x9(%rsp), %cl
movq 0x28(%rsp), %rdx
movl 0xc(%rsp), %esi
movq 0x10(%rsp), %rdi
movb 0xa(%rsp), %r8b
movl %r14d, %r9d
movl %r15d, %ebx
jmp 0xe928
movb $0x1, %al
movb 0x9(%rsp), %cl
movl $0x1, %edx
movq 0x10(%rsp), %rsi
movl $0x0, %edi
movb 0xa(%rsp), %r8b
movl %ebp, %r10d
movl %r15d, %ebx
movq 0x20(%rsp), %r11
movl %r12d, %r13d
testb $0x1, 0x18(%rsp)
je 0xe65d
jmp 0xe935
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 0x18(%rsp), %al
movb 0x9(%rsp), %cl
movl 0xc(%rsp), %esi
movb 0xa(%rsp), %r8b
movl %r14d, %r9d
movl %ebp, %r10d
movl %r15d, %ebx
movq 0x20(%rsp), %r11
movb 0xb(%rsp), %bpl
movl %ebp, %r13d
jmp 0xe65d
movl 0x34(%rsp), %eax
orb 0x30(%rsp), %al
testb $0x1, %al
je 0xe94a
movq 0x38(%rsp), %rax
movb $0x1, 0x1b(%rax)
testb $0x1, 0xb(%rsp)
je 0xe97d
testb $0x1, 0x18(%rsp)
je 0xe9a9
movl 0xc(%rsp), %eax
cvtsi2ss %rax, %xmm1
movl 0x10(%rsp), %eax
cvtsi2ss %rax, %xmm0
movl 0x28(%rsp), %eax
cvtsi2ss %rax, %xmm2
divss %xmm2, %xmm0
addss %xmm1, %xmm0
jmp 0xe9b2
testb $0x1, 0x18(%rsp)
je 0xe9ef
movl 0xc(%rsp), %eax
cvtsi2ss %rax, %xmm1
movl 0x10(%rsp), %eax
cvtsi2ss %rax, %xmm0
movl 0x28(%rsp), %eax
cvtsi2ss %rax, %xmm2
divss %xmm2, %xmm0
addss %xmm1, %xmm0
jmp 0xe9f8
movl 0x10(%rsp), %eax
cvtsi2ss %rax, %xmm0
testb $0x1, 0x9(%rsp)
je 0xe9c0
xorps 0x16a0(%rip), %xmm0     # 0x10060
testb $0x1, 0xa(%rsp)
je 0xea08
movl %r15d, %eax
xorps %xmm2, %xmm2
cvtsi2ss %rax, %xmm2
movl 0x20(%rsp), %eax
xorps %xmm1, %xmm1
cvtsi2ss %rax, %xmm1
movl %ebp, %eax
cvtsi2ss %rax, %xmm3
divss %xmm3, %xmm1
addss %xmm2, %xmm1
jmp 0xea14
movl 0x10(%rsp), %eax
cvtsi2ss %rax, %xmm0
testb $0x1, 0x9(%rsp)
je 0xea46
xorps 0x165a(%rip), %xmm0     # 0x10060
jmp 0xea46
movl 0x20(%rsp), %eax
xorps %xmm1, %xmm1
cvtsi2ss %rax, %xmm1
cvtss2sd %xmm0, %xmm0
movsd %xmm0, 0x18(%rsp)
testb $0x1, %r14b
je 0xea2b
xorps 0x1635(%rip), %xmm1     # 0x10060
cvtss2sd %xmm1, %xmm1
movsd 0x17b9(%rip), %xmm0     # 0x101f0
callq 0x4350
mulsd 0x18(%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 0x9baf