Intel SGX demystified part 2: understanding CPUs and their vulnerabilities