// File: errantlinguist[P]Forecast/src/console_weather/writers/SynchronicDataPointConsoleWriter.cpp
// Function: console_weather::writers::SynchronicDataPointConsoleWriter::write(forecast_io::DataPoint const&, std::ostream&)
void SynchronicDataPointConsoleWriter::write(const forecast_io::DataPoint& value, std::ostream& output)
{
	output << "Time: ";
	const time_t time = value.getTime();
	timeWriter.write(time, output);
	output << '\n';

	const forecast_io::DataOverview& overview = value.getOverview();
	output << "Summary: " << overview.getSummary() << '\n';
	output << headerRowSeparator << '\n';
	// TODO: Finish console writer for DataPoint
	output << "Cloud cover: " << value.getCloudCover() << '\n';
	output << "Dew point: " << value.getDewPoint() << DEGREE_SYMBOL << ' ' << TEMPERATURE_UNITS << '\n';
	output << "Humidity: " << value.getHumidity() << '\n';
	output << "Ozone: " << value.getOzone() << ' ' << AREA_DENSITY_UNITS << '\n';

	const forecast_io::Precipitation& precipitation = value.getPrecipitation();
	output << precipitationSectionHeader << '\n';
	writers::write(precipitation, output);
	output << headerRowSeparator << '\n';

	output << "Pressure: " << value.getPressure() << ' ' << PRESSURE_UNITS << '\n';
	output << "Visibility: " << value.getVisibility() << ' ' << DISTANCE_UNITS << '\n';

	output << windSectionHeader << '\n';
	const math::RadialVelocity& wind = value.getWind();
	writers::write(wind,output);
	output << headerRowSeparator << '\n';
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xc0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x88(%rbp)
movq -0x18(%rbp), %rdi
leaq 0x2c33c(%rip), %rsi     # 0x67429
callq 0xa4a0
movq -0x10(%rbp), %rdi
callq 0x3b660
movq -0x88(%rbp), %rdi
movq %rax, -0x20(%rbp)
movq -0x18(%rbp), %rdx
leaq -0x20(%rbp), %rsi
callq 0x37e60
movq -0x18(%rbp), %rdi
movl $0xa, %esi
callq 0xa550
movq -0x10(%rbp), %rdi
callq 0x3b680
movq %rax, -0x28(%rbp)
movq -0x18(%rbp), %rdi
leaq 0x2c2f7(%rip), %rsi     # 0x67430
callq 0xa4a0
movq %rax, -0x80(%rbp)
movq -0x28(%rbp), %rsi
leaq -0x48(%rbp), %rdi
movq %rdi, -0x78(%rbp)
callq 0x3b6a0
movq -0x80(%rbp), %rdi
movq -0x78(%rbp), %rsi
callq 0xa240
movq %rax, -0x70(%rbp)
jmp 0x3b166
movq -0x70(%rbp), %rdi
movl $0xa, %esi
callq 0xa550
jmp 0x3b176
leaq -0x48(%rbp), %rdi
callq 0xa978
movq -0x88(%rbp), %rsi
movq -0x18(%rbp), %rdi
addq $0x18, %rsi
callq 0xa240
movq %rax, %rdi
movl $0xa, %esi
callq 0xa550
movq -0x18(%rbp), %rdi
leaq 0x2c28f(%rip), %rsi     # 0x6743a
callq 0xa4a0
movq %rax, -0xb8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x3b6d0
movq -0xb8(%rbp), %rdi
callq 0xa680
movq %rax, %rdi
movl $0xa, %esi
callq 0xa550
movq -0x18(%rbp), %rdi
leaq 0x2c264(%rip), %rsi     # 0x67448
callq 0xa4a0
movq %rax, -0xb0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x3b6f0
movq -0xb0(%rbp), %rdi
callq 0xa680
movq %rax, %rdi
leaq 0x2c245(%rip), %rsi     # 0x67454
callq 0xa4a0
movq %rax, %rdi
movl $0x20, %esi
callq 0xa550
movq %rax, %rdi
movl $0x46, %esi
callq 0xa550
movq %rax, %rdi
movl $0xa, %esi
callq 0xa550
movq -0x18(%rbp), %rdi
leaq 0x2c211(%rip), %rsi     # 0x67457
callq 0xa4a0
movq %rax, -0xa8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x3b710
movq -0xa8(%rbp), %rdi
callq 0xa680
movq %rax, %rdi
movl $0xa, %esi
callq 0xa550
movq -0x18(%rbp), %rdi
leaq 0x2c1e3(%rip), %rsi     # 0x67462
callq 0xa4a0
movq %rax, -0xa0(%rbp)
movq -0x10(%rbp), %rdi
callq 0x3b730
movq -0xa0(%rbp), %rdi
callq 0xa680
movq %rax, %rdi
movl $0x20, %esi
callq 0xa550
movq %rax, %rdi
leaq 0x2c1b3(%rip), %rsi     # 0x6746a
callq 0xa4a0
movq %rax, %rdi
movl $0xa, %esi
callq 0xa550
movq -0x10(%rbp), %rdi
callq 0x3b750
movq -0x88(%rbp), %rsi
movq %rax, -0x60(%rbp)
movq -0x18(%rbp), %rdi
addq $0x58, %rsi
callq 0xa240
movq %rax, %rdi
movl $0xa, %esi
callq 0xa550
movq -0x60(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3b460
movq -0x88(%rbp), %rsi
movq -0x18(%rbp), %rdi
addq $0x18, %rsi
callq 0xa240
movq %rax, %rdi
movl $0xa, %esi
callq 0xa550
movq -0x18(%rbp), %rdi
leaq 0x2c13d(%rip), %rsi     # 0x6746d
callq 0xa4a0
movq %rax, -0x98(%rbp)
movq -0x10(%rbp), %rdi
callq 0x3b770
movq -0x98(%rbp), %rdi
callq 0xa680
movq %rax, %rdi
movl $0x20, %esi
callq 0xa550
movq %rax, %rdi
leaq 0x2c110(%rip), %rsi     # 0x67478
callq 0xa4a0
movq %rax, %rdi
movl $0xa, %esi
callq 0xa550
movq -0x18(%rbp), %rdi
leaq 0x2c0f6(%rip), %rsi     # 0x6747b
callq 0xa4a0
movq %rax, -0x90(%rbp)
movq -0x10(%rbp), %rdi
callq 0x3b790
movq -0x90(%rbp), %rdi
callq 0xa680
movq %rax, %rdi
movl $0x20, %esi
callq 0xa550
movq %rax, %rdi
leaq 0x2c0cb(%rip), %rsi     # 0x67488
callq 0xa4a0
movq %rax, %rdi
movl $0xa, %esi
callq 0xa550
movq -0x88(%rbp), %rsi
movq -0x18(%rbp), %rdi
addq $0x78, %rsi
callq 0xa240
movq %rax, %rdi
movl $0xa, %esi
callq 0xa550
movq -0x10(%rbp), %rdi
callq 0x3b7b0
movq %rax, -0x68(%rbp)
movq -0x68(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3b570
movq -0x88(%rbp), %rsi
movq -0x18(%rbp), %rdi
addq $0x18, %rsi
callq 0xa240
movq %rax, %rdi
movl $0xa, %esi
callq 0xa550
addq $0xc0, %rsp
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0xa978
movq -0x50(%rbp), %rdi
callq 0xa520
nopw %cs:(%rax,%rax)