// File: /workspace/github_c_makefile_star2_O0/Openvario[P]sensord/main.c
// Function: temperature_measurement_handler
static void temperature_measurement_handler(void)
{
	static int done = 0, temp_counter = 0, rollover=0;

	temp_sensor.temp_valid=temp_sensor.humidity_valid=0;
	if (temp_sensor.temp_present|temp_sensor.humidity_present) {
		switch (temp_sensor.sensor_type) {
			case DS18B20 :
				if (temp_sensor.temp_present) {
					if (temp_counter==0) {
						if (OWReset(&temp_sensor)==1) { // Reset
							if (OWWriteByte(&temp_sensor,0xCC)==1) { // Skip ROM
								OWWriteByte(&temp_sensor,0x44); // Initiate Conversion
							}
						}
						temp_counter=1;
						done=0;
					} else {
						if (!done) {
							if (OWReadByte(&temp_sensor)>0) {
								if (OWReset(&temp_sensor)==1) {  // Reset
									if (OWWriteByte(&temp_sensor,0xCC)==1) { // Skip ROM
										if (OWWriteByte(&temp_sensor,0xBE)==1) { //Read Scratchpad
											OWReadTemperature(&temp_sensor); // Convert output to temperature
											done = temp_sensor.temp_valid+1;
										}
									}
								}
							}
						}
						if (++temp_counter>=temp_sensor.rollover) {
							if (done) temp_counter=0;
								else if (temp_counter>temp_sensor.maxrollover) temp_counter=0;
						} else if (done==1) temp_counter=0;
					}
				}
				break;
			case AM2321 :
				if (++temp_counter>=temp_sensor.rollover) {
					if (!am2321_read(&temp_sensor)) done=temp_sensor.temp_valid+1;
					temp_counter=0;
				}
				break;
			case HTU21D :
				if (temp_counter==0) {
					if ((temp_sensor.humidity_present) && (rollover)) {
						si7021_read_humidity(&temp_sensor);
						fprintf(stderr, "Humidity: %f\n",temp_sensor.humidity);
					}
					if (temp_sensor.temp_present) si7021_start_temp(&temp_sensor);
					if (temp_sensor.temp_valid) temp_sensor.compensate=1; else temp_sensor.compensate=0;
				}
				if (temp_counter==temp_sensor.rollover/2) {
					if (temp_sensor.temp_present) {
						si7021_read_temp(&temp_sensor);
						fprintf(stderr, "Temperature: %f\n",temp_sensor.temperature);
					}
					if (temp_sensor.humidity_present) si7021_start_humidity(&temp_sensor);
				}
				if (++temp_counter>=temp_sensor.rollover) {
					temp_counter=0;
					rollover=1;
				}
				break;
			case HTU31D : case SI7021 : case SHT4X : case SHT85 :
				if (temp_counter==0) {
					if (rollover) si7021_read_humidity(&temp_sensor);
					si7021_start_humidity(&temp_sensor);
				}
				if (++temp_counter>=temp_sensor.rollover) {
					temp_counter=0;
					rollover=1;
				}
				break;

		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x10, %rsp
movb $0x0, 0x9990(%rip)      # 0xf38f
movb $0x0, 0x9988(%rip)      # 0xf38e
movsbl 0x997f(%rip), %eax      # 0xf38c
movsbl 0x9979(%rip), %ecx      # 0xf38d
orl %ecx, %eax
cmpl $0x0, %eax
je 0x5d56
movsbl 0x996a(%rip), %eax      # 0xf390
decl %eax
movl %eax, %ecx
movq %rcx, -0x8(%rbp)
subl $0x6, %eax
ja 0x5d54
movq -0x8(%rbp), %rax
leaq 0x5c2e(%rip), %rcx      # 0xb670
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpb $0x0, 0x993a(%rip)      # 0xf38c
je 0x5b90
cmpl $0x0, 0x99b9(%rip)      # 0xf418
jne 0x5ab4
leaq 0x98f8(%rip), %rdi      # 0xf360
callq 0x7bf0
cmpl $0x1, %eax
jne 0x5a9b
leaq 0x98e7(%rip), %rdi      # 0xf360
movl $0xcc, %esi
callq 0x7cf0
cmpl $0x1, %eax
jne 0x5a99
leaq 0x98d1(%rip), %rdi      # 0xf360
movl $0x44, %esi
callq 0x7cf0
jmp 0x5a9b
movl $0x1, 0x9973(%rip)      # 0xf418
movl $0x0, 0x9965(%rip)      # 0xf414
jmp 0x5b8e
cmpl $0x0, 0x9959(%rip)      # 0xf414
jne 0x5b2f
leaq 0x989c(%rip), %rdi      # 0xf360
callq 0x7e80
cmpl $0x0, %eax
jle 0x5b2d
leaq 0x988b(%rip), %rdi      # 0xf360
callq 0x7bf0
cmpl $0x1, %eax
jne 0x5b2b
leaq 0x987a(%rip), %rdi      # 0xf360
movl $0xcc, %esi
callq 0x7cf0
cmpl $0x1, %eax
jne 0x5b29
leaq 0x9864(%rip), %rdi      # 0xf360
movl $0xbe, %esi
callq 0x7cf0
cmpl $0x1, %eax
jne 0x5b27
leaq 0x984e(%rip), %rdi      # 0xf360
callq 0x86a0
movsbl 0x9870(%rip), %eax      # 0xf38e
addl $0x1, %eax
movl %eax, 0x98ed(%rip)      # 0xf414
jmp 0x5b29
jmp 0x5b2b
jmp 0x5b2d
jmp 0x5b2f
movl 0x98e3(%rip), %eax      # 0xf418
addl $0x1, %eax
movl %eax, 0x98da(%rip)      # 0xf418
cmpl 0x9864(%rip), %eax      # 0xf3a8
jl 0x5b77
cmpl $0x0, 0x98c7(%rip)      # 0xf414
je 0x5b5b
movl $0x0, 0x98bf(%rip)      # 0xf418
jmp 0x5b75
movl 0x98b7(%rip), %eax      # 0xf418
cmpl 0x9845(%rip), %eax      # 0xf3ac
jle 0x5b73
movl $0x0, 0x98a5(%rip)      # 0xf418
jmp 0x5b75
jmp 0x5b8c
cmpl $0x1, 0x9896(%rip)      # 0xf414
jne 0x5b8a
movl $0x0, 0x988e(%rip)      # 0xf418
jmp 0x5b8c
jmp 0x5b8e
jmp 0x5b90
jmp 0x5d54
movl 0x987d(%rip), %eax      # 0xf418
addl $0x1, %eax
movl %eax, 0x9874(%rip)      # 0xf418
cmpl 0x97fe(%rip), %eax      # 0xf3a8
jl 0x5bd7
leaq 0x97ad(%rip), %rdi      # 0xf360
callq 0xa150
cmpl $0x0, %eax
jne 0x5bcd
movsbl 0x97ca(%rip), %eax      # 0xf38e
addl $0x1, %eax
movl %eax, 0x9847(%rip)      # 0xf414
movl $0x0, 0x9841(%rip)      # 0xf418
jmp 0x5d54
cmpl $0x0, 0x9835(%rip)      # 0xf418
jne 0x5c60
movsbl 0x97a1(%rip), %eax      # 0xf38d
cmpl $0x0, %eax
je 0x5c2a
cmpl $0x0, 0x9824(%rip)      # 0xf41c
je 0x5c2a
leaq 0x975f(%rip), %rdi      # 0xf360
callq 0x97d0
movq 0x93eb(%rip), %rax      # 0xeff8
movq (%rax), %rdi
movss 0x9770(%rip), %xmm0     # 0xf388
cvtss2sd %xmm0, %xmm0
leaq 0x62e6(%rip), %rsi      # 0xbf09
movb $0x1, %al
callq 0x21d0
cmpb $0x0, 0x975b(%rip)      # 0xf38c
je 0x5c3f
leaq 0x9726(%rip), %rdi      # 0xf360
callq 0x9630
cmpb $0x0, 0x9748(%rip)      # 0xf38e
je 0x5c54
movl $0x1, 0x975e(%rip)      # 0xf3b0
jmp 0x5c5e
movl $0x0, 0x9752(%rip)      # 0xf3b0
jmp 0x5c60
movl 0x97b2(%rip), %eax      # 0xf418
movl %eax, -0xc(%rbp)
movl 0x9739(%rip), %eax      # 0xf3a8
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0xc(%rbp), %eax
cmpl %ecx, %eax
jne 0x5cd0
cmpb $0x0, 0x9705(%rip)      # 0xf38c
je 0x5cb9
leaq 0x96d0(%rip), %rdi      # 0xf360
callq 0x96e0
movq 0x935c(%rip), %rax      # 0xeff8
movq (%rax), %rdi
movss 0x96dd(%rip), %xmm0     # 0xf384
cvtss2sd %xmm0, %xmm0
leaq 0x6265(%rip), %rsi      # 0xbf17
movb $0x1, %al
callq 0x21d0
cmpb $0x0, 0x96cd(%rip)      # 0xf38d
je 0x5cce
leaq 0x9697(%rip), %rdi      # 0xf360
callq 0x9590
jmp 0x5cd0
movl 0x9742(%rip), %eax      # 0xf418
addl $0x1, %eax
movl %eax, 0x9739(%rip)      # 0xf418
cmpl 0x96c3(%rip), %eax      # 0xf3a8
jl 0x5cfb
movl $0x0, 0x9727(%rip)      # 0xf418
movl $0x1, 0x9721(%rip)      # 0xf41c
jmp 0x5d54
cmpl $0x0, 0x9714(%rip)      # 0xf418
jne 0x5d27
cmpl $0x0, 0x970f(%rip)      # 0xf41c
je 0x5d1b
leaq 0x964a(%rip), %rdi      # 0xf360
callq 0x97d0
leaq 0x963e(%rip), %rdi      # 0xf360
callq 0x9590
movl 0x96eb(%rip), %eax      # 0xf418
addl $0x1, %eax
movl %eax, 0x96e2(%rip)      # 0xf418
cmpl 0x966c(%rip), %eax      # 0xf3a8
jl 0x5d52
movl $0x0, 0x96d0(%rip)      # 0xf418
movl $0x1, 0x96ca(%rip)      # 0xf41c
jmp 0x5d54
jmp 0x5d56
addq $0x10, %rsp
popq %rbp
retq
nopl (%rax)