gerarSerial proc hwnd:HWND xor eax, eax xor ebx, ebx xor edx, edx xor ecx, ecx invoke randzime @peloMenos_9: invoke range, 0, 9 mov valorEBX, eax invoke range, 0, 9 mov ecx, eax mov valorECX, ecx ;soma add ecx, valorEBX mov valorSoma, ecx .if ecx == 9 @fecha_18: xor eax, eax invoke randzime invoke range, 0, 9 mov valorEDX, eax add eax, valorSoma .if eax == 18 jmp @mostraResult .else jmp @fecha_18 .endif .else jmp @peloMenos_9 .endif @mostraResult: xor ebx, ebx xor ecx, ecx xor edx, edx mov ebx, valorEBX mov ecx, valorECX mov edx, valorEDX invoke range, 0, 9 mov s1, eax invoke range, 0, 9 mov s3, eax invoke range, 0, 9 mov s4, eax invoke range, 0, 9 mov s5, eax invoke range, 0, 9 mov s6, eax invoke range, 0, 9 mov s7, eax invoke range, 0, 9 mov s8, eax invoke range, 0, 9 mov s10, eax invoke range, 0, 9 mov s11, eax invoke range, 0, 9 mov s13, eax invoke range, 0, 9 mov s14, eax invoke range, 0, 9 mov s15, eax invoke range, 0, 9 mov s16, eax invoke range, 0, 9 mov s17, eax invoke range, 0, 9 mov s18, eax ;concatena tudo push s1 push ebx push s3 push s4 push s5 push s6 push s7 push s8 push ecx push s10 push s11 push edx push s13 push s14 push s15 push s16 push s17 push s18 pop s18 pop s17 pop s16 pop s15 pop s14 pop s13 pop edx pop s11 pop s10 pop ecx pop s8 pop s7 pop s6 pop s5 pop s4 pop s3 pop ebx pop s1 invoke wsprintf, addr fimString, offset SERIAL_FORMAT, s1, ebx, s3, s4, s5, s6, s7, s8, ecx, s10, s11, edx, s13, s14, s15, s16, s17, s18 invoke SetDlgItemText, hwnd, edtSerial, addr fimString ret gerarSerial endp