while (1) {
uint16_t offset1 = m_offset;
__sync_synchronize();
uint16_t tcnt = TCNT1;
__sync_synchronize();
uint16_t offset2 = m_offset;
if (offset1 == offset2) {
return (((TimeType)offset1 << 16) + tcnt);
}
}
ICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICB1aW50MTZfdCBvZmZzZXQxID0gbV9vZmZzZXQ7CiAgICAgICAgICAgIF9fc3luY19zeW5jaHJvbml6ZSgpOwogICAgICAgICAgICB1aW50MTZfdCB0Y250ID0gVENOVDE7CiAgICAgICAgICAgIF9fc3luY19zeW5jaHJvbml6ZSgpOwogICAgICAgICAgICB1aW50MTZfdCBvZmZzZXQyID0gbV9vZmZzZXQ7CiAgICAgICAgICAgIGlmIChvZmZzZXQxID09IG9mZnNldDIpIHsKICAgICAgICAgICAgICAgIHJldHVybiAoKChUaW1lVHlwZSlvZmZzZXQxIDw8IDE2KSArIHRjbnQpOwogICAgICAgICAgICB9CiAgICAgICAgfQ==