diff --git a/src/syncterm/st_crypt.h b/src/syncterm/st_crypt.h
index 06296cc30f69ecaaf94d911c0a47ef2ab45f4159..a303bdc841e01d2e00ac21ebeaf03d4fef666062 100644
--- a/src/syncterm/st_crypt.h
+++ b/src/syncterm/st_crypt.h
@@ -8,33 +8,42 @@
 	#define C_RET int
 #endif
 
+#ifdef _WIN32
+	#define HACK_HACK_HACK __stdcall
+#else
+	#define HACK_HACK_HACK
+#endif
+
 struct crypt_funcs {
-	C_RET (*PopData)( C_IN CRYPT_HANDLE envelope, C_OUT void C_PTR buffer,
+	C_RET (HACK_HACK_HACK *PopData)( C_IN CRYPT_HANDLE envelope, C_OUT void C_PTR buffer,
 		C_IN int length, C_OUT int C_PTR bytesCopied );
-	C_RET (*PushData)( C_IN CRYPT_HANDLE envelope, C_IN void C_PTR buffer,
+	C_RET (HACK_HACK_HACK *PushData)( C_IN CRYPT_HANDLE envelope, C_IN void C_PTR buffer,
 		C_IN int length, C_OUT int C_PTR bytesCopied );
-	C_RET (*FlushData)( C_IN CRYPT_HANDLE envelope );
-	C_RET (*Init)( void );
-	C_RET (*End)( void );
-	C_RET (*CreateSession)( C_OUT CRYPT_SESSION C_PTR session,
+	C_RET (HACK_HACK_HACK *FlushData)( C_IN CRYPT_HANDLE envelope );
+	C_RET (HACK_HACK_HACK *Init)( void );
+	C_RET (HACK_HACK_HACK *End)( void );
+	C_RET (HACK_HACK_HACK *CreateSession)( C_OUT CRYPT_SESSION C_PTR session,
 		C_IN CRYPT_USER cryptUser,
 		C_IN CRYPT_SESSION_TYPE formatType );
-	C_RET (*GetAttribute)( C_IN CRYPT_HANDLE cryptHandle,
+	C_RET (HACK_HACK_HACK *GetAttribute)( C_IN CRYPT_HANDLE cryptHandle,
 		C_IN CRYPT_ATTRIBUTE_TYPE attributeType,
 		C_OUT int C_PTR value );
-	C_RET (*GetAttributeString)( C_IN CRYPT_HANDLE cryptHandle,
+	C_RET (HACK_HACK_HACK *GetAttributeString)( C_IN CRYPT_HANDLE cryptHandle,
 		C_IN CRYPT_ATTRIBUTE_TYPE attributeType,
 		C_OUT void C_PTR value,
 		C_OUT int C_PTR valueLength );
-	C_RET (*SetAttribute)( C_IN CRYPT_HANDLE cryptHandle,
+	C_RET (HACK_HACK_HACK *SetAttribute)( C_IN CRYPT_HANDLE cryptHandle,
 		C_IN CRYPT_ATTRIBUTE_TYPE attributeType,
 		C_IN int value );
-	C_RET (*SetAttributeString)( C_IN CRYPT_HANDLE cryptHandle,
+	C_RET (HACK_HACK_HACK *SetAttributeString)( C_IN CRYPT_HANDLE cryptHandle,
 		C_IN CRYPT_ATTRIBUTE_TYPE attributeType,
 		C_IN void C_PTR value, C_IN int valueLength );
-	C_RET (*DestroySession)( C_IN CRYPT_SESSION session );
-	C_RET (*AddRandom)( C_IN void C_PTR randomData, C_IN int randomDataLength );
+	C_RET (HACK_HACK_HACK *DestroySession)( C_IN CRYPT_SESSION session );
+	C_RET (HACK_HACK_HACK *AddRandom)( C_IN void C_PTR randomData, C_IN int randomDataLength );
 };
+
+#undef HACK_HACK_HACK
+
 extern struct crypt_funcs cl;
 extern int crypt_loaded;