How would you do this?

      if (Sinstate() == LOW) {            //Sine Things
                         }
      else {
        if (Sinstate() == HIGH) {

If the sin pin isn't LOW, there is no possible value other than HIGH. It is useless to test for it to then be HIGH. It MUST be, if it isn't LOW.

Still no Serial.print() statements, to validate that the pin states are being read correctly. Why not? It almost seems like you are not interested in helping solve YOUR problem.