All pastes #840287 Raw Edit

Untitled

public text v1 · immutable
#840287 ·published 2007-12-31 17:45 UTC
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