/* encrypt and decrypt functions. Tweaked version from REC output. */ encryptData(A8, Ac, A10) /* length */ int A8; /* input message */ unsigned char Ac[]; /* return PTR */ unsigned char A10[]; { long eax,ecx,edx,al; eax = sprintf(A10, "%c", Ac[23]); ecx = 1; if(1 != A8) { do { edx = A10[ecx - 1] & 255; eax = edx + (Ac[ecx] & 255) + 23; A10[ecx] = eax; ecx = ecx + 1; } while(ecx != A8); } } decryptData(A8, Ac, A10) /* unknown */ int A8; /* unknown */ unsigned char Ac[]; /* unknown */ unsigned char A10[]; { /* unknown */ int ebx,al,edx,ecx,cl,esp,ebp,eax; /* unknown * void esi; */ /* unknown */ unsigned char Vfffffffc[500]; ebx = A8 - 1; al = A8 + 3 & 252; A10[0] = 0; if(ebx >= 0) { do { edx = ebx - 1; if(ebx == 0) { eax = Ac[0] & 255; } else { eax = Ac[ebx] & 255; eax = eax - ( Ac[edx] & 255); } ecx = eax - 23; if(ecx < 0) { do { ecx = ecx + 256; } while(ecx < 0); } edx = 0; if(0 < A8) { do { al = A10[edx]; Vfffffffc[edx] = al; edx = edx + 1; } while(edx < A8); } A10[0] = cl; edx = 1; if(1 < A8) { do { al = Vfffffffc[edx - 1]; A10[edx] = al; edx = edx + 1; } while(edx < A8); } eax = sprintf(A10, "%c%s", ecx, Vfffffffc); } while(ebx = ebx - 1); } esp = ebp - 16; }