Could a hacker jump around the protection code and then be able to run the program successfully?

The KeyValue pairs can be an effective measure to create random authentication in the code to confuse hackers and make it difficult to crack.
You could terminate the application immediately (e.g. with exit code) if the Key Value check is failed. But, we don't recommend that because it could allow a hacker to crack the code easier.
You may consider the following code examples:
private void feature4ToolStripMenuItem_Click(object sender, EventArgs e)
{
  if (m_wValue == ValueTable[m_nKeyValueIdx]) // example of checking Key Value in an important function
  {
      MessageBox.Show("This is Feature-4.", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);
  }
}
In the above code, if the Key Value check is failed, such function will not work.
Or, you may add some bug in the function if the Key Value check is failed.
int add(int a, int b)
{
  if (m_wValue == ValueTable[m_nKeyValueIdx]) // example of checking Key Value in an important function
      return a + b;
  else
      return a + b + 1;
}
Given the above examples, a hacker would have to work harder to crack the application completely. You can add the Key Value check as many as you want throughout the code. This would make the cracked version not working properly. As a result, the user would need to buy a license for the software with full functionality.