diff -urpN john-1.7.8-jumbo-7b/src/dynamic_fmt.c john-1.7.8-jumbo-6b/src/dynamic_fmt.c
--- john-1.7.8-jumbo-7b/src/dynamic_fmt.c	2011-10-27 17:47:43.984375000 +0000
+++ john-1.7.8-jumbo-6b/src/dynamic_fmt.c	2011-10-31 15:46:27.718750000 +0000
@@ -353,7 +353,7 @@ extern void MD5_body(MD5_word x[15],MD5_
 #define DoMD5(A,L,C) do{if(!force_md5_ctx&&(L)<55) {A.x1.b[L]=0x80;A.x1.w[14]=(L<<3);MD5_swap(A.x1.w,A.x1.w,((L+4)>>2));MD5_body(A.x1.w,C.x1.w);MD5_swap(C.x1.w,C.x1.w,4);} else {MD5_CTX ctx; MD5_Init(&ctx); MD5_Update(&ctx,A.x1.b,L); MD5_Final((unsigned char *)(C.x1.b),&ctx); } }while(0)
 #define DoMD5o(A,L,C) do{if((L)<55) {MD5_body(A.x1.w,C.x1.w);} else {MD5_CTX ctx; MD5_Init(&ctx); MD5_Update(&ctx,A.x1.b,L); MD5_Final((unsigned char *)(C.x1.b),&ctx); } }while(0)
 #define DoMD5a(A,L,C) do{MD5_body(A->x1.w,C->x1.w);}while(0)
-#define DoMD5a2(A,L,C,D)  do{MD5_body(A->x1.w,tmpOut.x1.w);MD5_swap(C->x1.w,C->x1.w,(D+5)>>2);memcpy(&(C->x1.b[D]),tmpOut.x1.b,16); MD5_swap(C->x1.w,C->x1.w,(D+5)>>2);}while(0)
+#define DoMD5a2(A,L,C,D)  do{MD5_body(A->x1.w,tmpOut.x1.w); MD5_swap(C->x1.w,C->x1.w,(D[0]+21)>>2);memcpy(&(C->x1.b[D[0]]),tmpOut.x1.b,16); MD5_swap(C->x1.w,C->x1.w,(D[0]+21)>>2);}while(0)
 #endif
 #endif
 SHA_CTX sha_ctx;
