rendered paste body;
; Alan
; You shouldnt use DS: SS: etc, Windows is a flat memory model
; mov dword ptr [something], eax
;
; Saves a byte too ;)
;
CalcProc proc hWnd:HWND
Local ebxstore:DWORD
Local lenstore:DWORD
invoke RtlZeroMemory,addr NameBuffer,sizeof NameBuffer
invoke RtlZeroMemory,addr SerialBuffer,sizeof SerialBuffer
invoke RtlZeroMemory,addr TempBuffer,sizeof TempBuffer
invoke RtlZeroMemory,addr TempiBuffer,sizeof TempiBuffer
invoke RtlZeroMemory,addr TempjBuffer,sizeof TempjBuffer
invoke RtlZeroMemory,addr rBuffer,sizeof rBuffer
invoke RtlZeroMemory,addr sBuffer,sizeof sBuffer
invoke GetDlgItemText,hWnd,1024,addr NameBuffer,sizeof NameBuffer
mov ebx,eax
cmp eax,3h
ja lenok
invoke SetDlgItemText,hWnd,1007,chr$("Name too Short . . .")
jmp end0
lenok:
cmp eax,0fh
jb lenoki
invoke SetDlgItemText,hWnd,1007,chr$("Name too Long . . .")
jmp end0
lenoki:
add eax,4h
mov dword ptr ds:[lenstore],eax
invoke GetTickCount
bswap eax
xor eax,ecx
add ebx,ecx
add eax,ebx
xor eax,esi
add al,dl
xor ebx,eax
bswap ebx
add ebx,0DEADBEEFh
xor ebx,eax
push ebx
bswap eax
add eax,ebx
add eax,esp
bswap eax
mov edi,eax
push eax
push edx
cmp edx,0h
jne ecxnot
mov ecx,0ABCDh
ecxnot:
xor edx,edx
cdq
xor edx,edx
div ecx
bswap edx
add eax,edx
xor eax,ebx
add ecx,eax
pop eax
pop edx
add eax,ecx
xor eax,edi
invoke wsprintf,addr rBuffer,chr$("%X"),eax
mov esi,offset rBuffer
;mov byte ptr ds:[esi+2h],49h
;mov byte ptr ds:[esi+3h],49h
mov ecx,4h
add esi,4h
nn:
mov byte ptr ds:[esi],00h
inc esi
dec ecx
cmp ecx,0h
jne nn
invoke lstrcpy,addr TempBuffer,addr rBuffer
invoke CharUpper,addr NameBuffer
invoke lstrcat,addr rBuffer,addr NameBuffer
mov dword ptr ds:[ebxstore],02D44Fh
mov esi,offset rBuffer
mov ecx,dword ptr ds:[lenstore]
mov ebx,dword ptr ds:[ebxstore]
nxtch:
xor eax,eax
mov al,byte ptr ds:[esi]
imul ebx
add eax,dword ptr ds:[ebxstore]
mov ebx,eax
inc esi
dec dword ptr ds:[lenstore]
cmp dword ptr ds:[lenstore],0h
jne nxtch
invoke wsprintf,addr sBuffer,chr$("%lX"),eax
invoke lstrcat,addr TempBuffer,chr$("i")
mov esi,offset sBuffer
mov edi,offset TempBuffer
add edi,5h
mov ecx,8h
notyet:
mov al,byte ptr ds:[esi]
mov byte ptr ds:[edi],al
inc esi
inc edi
cmp ecx,05h
jne notd
mov byte ptr ds:[edi],02Dh
inc edi
notd:
dec ecx
cmp ecx,0h
jne notyet
invoke lstrcpy,addr SerialBuffer,addr TempBuffer
invoke SetDlgItemText,hWnd,1007,addr SerialBuffer
end0:
xor eax,eax
ret
CalcProc EndP