diff --git a/common/rfb/d3des.c b/common/rfb/d3des.c
index eaca581..b5bffa4 100644
--- a/common/rfb/d3des.c
+++ b/common/rfb/d3des.c
@@ -63,9 +63,7 @@
 	40, 51, 30, 36, 46, 54, 29, 39, 50, 44, 32, 47,
 	43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31 };
 
-void deskey(key, edf)	/* Thanks to James Gillogly & Phil Karn! */
-unsigned char *key;
-int edf;
+void deskey(unsigned char *key, int edf) /* Thanks to James Gillogly & Phil Karn! */
 {
 	register int i, j, l, m, n;
 	unsigned char pc1m[56], pcr[56];
@@ -100,8 +98,7 @@
 	return;
 	}
 
-static void cookey(raw1)
-register unsigned long *raw1;
+static void cookey(register unsigned long *raw1)
 {
 	register unsigned long *cook, *raw0;
 	unsigned long dough[32];
@@ -123,8 +120,7 @@
 	return;
 	}
 
-void cpkey(into)
-register unsigned long *into;
+void cpkey(register unsigned long *into)
 {
 	register unsigned long *from, *endp;
 
@@ -133,8 +129,7 @@
 	return;
 	}
 
-void usekey(from)
-register unsigned long *from;
+void usekey(register unsigned long *from)
 {
 	register unsigned long *to, *endp;
 
@@ -143,8 +138,7 @@
 	return;
 	}
 
-void des(inblock, outblock)
-unsigned char *inblock, *outblock;
+void des(unsigned char *inblock, unsigned char *outblock)
 {
 	unsigned long work[2];
 
@@ -154,9 +148,8 @@
 	return;
 	}
 
-static void scrunch(outof, into)
-register unsigned char *outof;
-register unsigned long *into;
+static void scrunch(register unsigned char *outof,
+                    register unsigned long *into)
 {
 	*into	 = (*outof++ & 0xffL) << 24;
 	*into	|= (*outof++ & 0xffL) << 16;
@@ -169,9 +162,8 @@
 	return;
 	}
 
-static void unscrun(outof, into)
-register unsigned long *outof;
-register unsigned char *into;
+static void unscrun(register unsigned long *outof,
+                    register unsigned char *into)
 {
 	*into++ = (unsigned char)((*outof >> 24) & 0xffL);
 	*into++ = (unsigned char)((*outof >> 16) & 0xffL);
@@ -328,8 +320,8 @@
 	0x10041040L, 0x00041000L, 0x00041000L, 0x00001040L,
 	0x00001040L, 0x00040040L, 0x10000000L, 0x10041000L };
 
-static void desfunc(block, keys)
-register unsigned long *block, *keys;
+static void desfunc(register unsigned long *block,
+                    register unsigned long *keys)
 {
 	register unsigned long fval, work, right, leftt;
 	register int round;
