| Index: nss/lib/freebl/rijndael.c
 | 
| diff --git a/nss/lib/freebl/rijndael.c b/nss/lib/freebl/rijndael.c
 | 
| index 8bb8905130f30095cd114cb41185e263b28c0d75..970386749b2f4f97dc2f6b30d84fae3736d835fe 100644
 | 
| --- a/nss/lib/freebl/rijndael.c
 | 
| +++ b/nss/lib/freebl/rijndael.c
 | 
| @@ -1063,8 +1063,10 @@ aes_InitContext(AESContext *cx, const unsigned char *key, unsigned int keysize,
 | 
|  				intel_aes_cbc_worker(encrypt, keysize);
 | 
|  	} else
 | 
|  #endif
 | 
| +	{
 | 
|  	    cx->worker = (freeblCipherFunc) (encrypt
 | 
|  			  ? &rijndael_encryptCBC : &rijndael_decryptCBC);
 | 
| +	}
 | 
|      } else {
 | 
|  #if  USE_HW_AES
 | 
|  	if (use_hw_aes) {
 | 
| @@ -1072,8 +1074,10 @@ aes_InitContext(AESContext *cx, const unsigned char *key, unsigned int keysize,
 | 
|  				intel_aes_ecb_worker(encrypt, keysize);
 | 
|  	} else
 | 
|  #endif
 | 
| +	{
 | 
|  	    cx->worker = (freeblCipherFunc) (encrypt
 | 
|  			  ? &rijndael_encryptECB : &rijndael_decryptECB);
 | 
| +	}
 | 
|      }
 | 
|      PORT_Assert((cx->Nb * (cx->Nr + 1)) <= RIJNDAEL_MAX_EXP_KEY_SIZE);
 | 
|      if ((cx->Nb * (cx->Nr + 1)) > RIJNDAEL_MAX_EXP_KEY_SIZE) {
 | 
| @@ -1171,7 +1175,14 @@ AES_InitContext(AESContext *cx, const unsigned char *key, unsigned int keysize,
 | 
|  	break;
 | 
|      case NSS_AES_CTR:
 | 
|  	cx->worker_cx = CTR_CreateContext(cx, cx->worker, iv, blocksize);
 | 
| -	cx->worker = (freeblCipherFunc) CTR_Update ;
 | 
| +#if defined(USE_HW_AES) && defined(_MSC_VER)
 | 
| +	if (use_hw_aes) {
 | 
| +	    cx->worker = (freeblCipherFunc) CTR_Update_HW_AES;
 | 
| +	} else
 | 
| +#endif
 | 
| +	{
 | 
| +	    cx->worker = (freeblCipherFunc) CTR_Update;
 | 
| +	}
 | 
|  	cx->destroy = (freeblDestroyFunc) CTR_DestroyContext;
 | 
|  	cx->isBlock = PR_FALSE;
 | 
|  	break;
 | 
| 
 |