/********************/
/* Before Unrustify */
/********************/

#define MACRO(cond, action)    if ((cond)) \
      (action)

void hurz(murks)
{
   if (murks = 4)              // This comment belongs to (murks = 4)
   {
      schrott();               // And this to schrott()
   }
#ifdef SCHNIEPEL
   else if (murks = 6)         // This comment belongs to (murks = 6)
   {                           // I had to write more comment than one line
                               // so I inserted some comment only blocks
      schniepel();
   }
#endif // SCHNIEPEL
   else
   {
      flursen();
   }

   if (murks = 4)              // This comment belongs to (murks = 4)
#ifdef FOO
   {
      foo();
   }
#else
   {
      bar();
   }
#endif
   if (murks = 4)                 // This comment belongs to (murks = 4)
   {
      schrott();                  // And this to schrott()
   }
   return;
} // hurz()

