--- /dev/null
+--- Crypt-RC6-1.0/_rc6.c.orig 2002-03-16 22:54:10.000000000 +0000
++++ Crypt-RC6-1.0/_rc6.c 2004-05-09 00:14:37.000000000 +0000
+@@ -5,6 +5,14 @@
+ \r
+ #include "platform.h"\r
+ \r
++#include <endian.h>\r
++#if __BYTE_ORDER == __BIG_ENDIAN\r
++# include <byteswap.h>\r
++# define regswp(x) bswap_32(x)\r
++#else\r
++# define regswp(x) x\r
++#endif\r
++\r
+ /*\r
+ function: rc6_generateKeySchedule\r
+ \r
+@@ -27,6 +35,8 @@
+ /* Move the bytes of initKey into L, little-endian fashion. */\r
+ \r
+ memcpy(bPtr, initKey, keyLength);\r
++ for(i=0; i<8; i++)\r
++ L[i] = regswp(L[i]);\r
+ \r
+ /* Set S[0] to the constant P32, then generate the rest of S. */\r
+ \r
+@@ -61,10 +71,10 @@
+ \r
+ regPtr = (unsigned char*)®s[0];\r
+ memcpy(regPtr, input, 16);\r
+- A = regs[0]; /* Cook up A, B, C, and D as our four 32-bit registers. */\r
+- B = regs[1];\r
+- C = regs[2];\r
+- D = regs[3];\r
++ A = regswp(regs[0]); /* Cook up A, B, C, and D as our four 32-bit registers. */\r
++ B = regswp(regs[1]);\r
++ C = regswp(regs[2]);\r
++ D = regswp(regs[3]);\r
+ B += S[0];\r
+ D += S[1];\r
+ for (j = 1; j <= 20; j++) /* Perform 20 rounds. */\r
+@@ -81,10 +91,10 @@
+ }\r
+ A += S[42];\r
+ C += S[43];\r
+- regs[0] = A;\r
+- regs[1] = B;\r
+- regs[2] = C;\r
+- regs[3] = D;\r
++ regs[0] = regswp(A);\r
++ regs[1] = regswp(B);\r
++ regs[2] = regswp(C);\r
++ regs[3] = regswp(D);\r
+ memcpy(output, regPtr, 16);\r
+ }\r
+ \r
+@@ -104,10 +114,10 @@
+ \r
+ regPtr = (unsigned char*)®s[0];\r
+ memcpy(regPtr, input, 16);\r
+- A = regs[0];\r
+- B = regs[1];\r
+- C = regs[2];\r
+- D = regs[3];\r
++ A = regswp(regs[0]);\r
++ B = regswp(regs[1]);\r
++ C = regswp(regs[2]);\r
++ D = regswp(regs[3]);\r
+ C -= S[43];\r
+ A -= S[42];\r
+ for (j = 20; j >= 1; j--)\r
+@@ -126,10 +136,10 @@
+ }\r
+ D -= S[1];\r
+ B -= S[0];\r
+- regs[0] = A;\r
+- regs[1] = B;\r
+- regs[2] = C;\r
+- regs[3] = D;\r
++ regs[0] = regswp(A);\r
++ regs[1] = regswp(B);\r
++ regs[2] = regswp(C);\r
++ regs[3] = regswp(D);\r
+ memcpy(output, regPtr, 16);\r
+ }\r
+ \r