diff --git a/MASM x64/Splash_x64.vcxproj b/MASM x64/Splash_x64.vcxproj index 689c737..f4a8342 100644 --- a/MASM x64/Splash_x64.vcxproj +++ b/MASM x64/Splash_x64.vcxproj @@ -48,7 +48,8 @@ false - true + + diff --git a/MASM x86/MASM x86 splash.lst b/MASM x86/MASM x86 splash.lst index 6a2b998..3b5481e 100644 --- a/MASM x86/MASM x86 splash.lst +++ b/MASM x86/MASM x86 splash.lst @@ -1,4 +1,4 @@ -Microsoft (R) Macro Assembler Version 14.29.30136.0 10/19/21 14:15:41 +Microsoft (R) Macro Assembler Version 14.31.31104.0 02/26/22 12:20:53 Main.asm Page 1 - 1 @@ -40335,14 +40335,14 @@ Main.asm Page 1 - 1 C 000000C8 C STD_ALERT struct 00000000 00000000 C alrt_timestamp dd ? - C ;alrt_eventname WCHAR [EVLEN + 1] dup(?) 00000004 00000011 [ C alrt_eventname WCHAR EVLEN+1 dup(?) 0000 ] - C ;alrt_servicename WCHAR [SNLEN + 1] dup(?) + C ;alrt_eventname WCHAR [17] dup(?) 00000026 00000051 [ C alrt_servicename WCHAR SNLEN+1 dup(?) 0000 ] + C ;alrt_servicename WCHAR [81] dup(?) C STD_ALERT ends C 00000008 C ADMIN_OTHER_INFO struct @@ -55702,7 +55702,6 @@ Main.asm Page 1 - 1 C htodw PROTO :DWORD ; return value in eax C dwtoa PROTO :DWORD,:DWORD ; value - buffer C dw2a PROTO :DWORD,:DWORD - C dw2ah PROTO:DWORD,:DWORD C dw2hex PROTO :DWORD,:DWORD C C ustr2dw PROTO :DWORD @@ -71096,10 +71095,10 @@ Main.asm Page 1 - 1 00000000 C CFile_initdata LABEL BYTE 00000000 0000002D R C DWORD OFFSET CFile_Destructor 00000004 00000059 R C DWORD OFFSET CFile_OpenFile - 00000008 0000014E R C DWORD OFFSET CFile_CloseFile + 00000008 00000156 R C DWORD OFFSET CFile_CloseFile 0000000C 0000012D R C DWORD OFFSET CFile_Dispose - 00000010 00000158 R C DWORD OFFSET CFile_ConvertToLine - 00000014 00000183 R C DWORD OFFSET CFile_GetLine + 00000010 00000160 R C DWORD OFFSET CFile_ConvertToLine + 00000014 0000018B R C DWORD OFFSET CFile_GetLine 00000018 0000 C WORD 0 0000001A 00000000 C DWORD 0, 0, 0, 0 00000000 @@ -71177,24 +71176,20 @@ Main.asm Page 1 - 1 00000059 C CFile_OpenFile proc uses eax ebx edi lpTHIS:DWORD, lpszFileName:DWORD C ; C ; Opens a file, creates a handle and creates a w_char pointer - C ; Receives: EAX, EBX, ECX, the three integers. May be - C ; signed or unsigned. - C ; Returns: EAX = sum, and the status flags (Carry, ; Overflow, etc.) are changed. + C ; Receives: + C ; Returns: C ; Requires: nothing + C ; https://stackoverflow.com/questions/56506869/how-to-initialize-a-local-struct-in-masm-assembly C ;--------------------------------------------------------- - C ; https://stackoverflow.com/questions/56506869/how-to-initialize-a-local-struct-in-masm-assembly - C ;LOCAL fileSize: LARGE_INTEGER <> - C ;LOCAL hMemory: DWORD - C ;LOCAL pMemory: DWORD - C ;LOCAL pMemoryW: DWORD - C - C ;push ebp ; save base pointer - C ;mov ebp,esp ; base of stack frame - 0000005F 83 EC 08 C sub esp,8 ; save space for 2 DWORD locals - C - 00000062 8B 7D 08 C mov edi, [ebp+8] ; get the parameter passed on the stack to the function - 00000065 8B 7D 08 C mov edi, lpTHIS ; get the parameter passed on the stack to the function + C LOCAL hHeap: DWORD + C LOCAL lpMem: DWORD + C + 00000062 8B 7D 08 C mov edi, [ebp+8] ; get the parameter lpszFileName passed on the stack to the function + 00000065 8B 7D 08 C mov edi, lpTHIS ; get the parameter lpTHIS passed on the stack to the function C ASSUME edi:PTR CFile + C + C invoke GetProcessHeap + 0000006D 89 45 FC C mov hHeap, eax C C invoke CreateFile, lpszFileName,\ C GENERIC_READ or GENERIC_WRITE ,\ @@ -71202,19 +71197,19 @@ Main.asm Page 1 - 1 C NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,\ C NULL C ;mov edx, eax - 0000007F 89 47 1A C mov [edi].handle, eax + 00000087 89 47 1A C mov [edi].handle, eax C C invoke GetFileSizeEx, [edi].handle, ADDR fileSize2 - 0000008F A1 0000002A R C mov eax, fileSize2.LowPart - 00000094 40 C inc eax ; One bit for the NULL terminated - 00000095 8B D8 C mov ebx,eax - 00000097 89 5F 26 C mov [edi].bytesRead, ebx ; Save the size in the in-memory struct - C - C invoke GlobalAlloc, GMEM_MOVEABLE or GMEM_ZEROINIT, eax - 000000A2 89 45 FC C mov DWORD PTR [ebp-4], eax - C invoke GlobalLock, eax - 000000AB 89 45 F8 C mov DWORD PTR [ebp-8], eax - C invoke ReadFile, [edi].handle, DWORD PTR [ebp-8], fileSize2.LowPart, ADDR SizeReadWrite2, NULL + 00000097 A1 0000002A R C mov eax, fileSize2.LowPart + 0000009C 40 C inc eax ; One bit for the NULL terminated + 0000009D 8B D8 C mov ebx,eax + 0000009F 89 5F 26 C mov [edi].bytesRead, ebx ; Save the size in the in-memory struct + C + C ; Allocates memory space for the File + C invoke HeapAlloc, hHeap, HEAP_ZERO_MEMORY, ebx + 000000AD 89 45 F8 C mov lpMem, eax + C + C invoke ReadFile, [edi].handle, eax, fileSize2.LowPart, ADDR SizeReadWrite2, NULL C ;mov DWORD PTR [ebp-8], eax C invoke CloseHandle, [edi].handle C .IF eax @@ -71222,12 +71217,12 @@ Main.asm Page 1 - 1 00000000 C .ENDIF C + C ; Allocates memory space for the converstion to Unicode 000000D9 8B C3 C mov eax, ebx 000000DB D1 E0 C shl eax, 1 ;Multiply by 2 in order to convert from char to wchar - C invoke GlobalAlloc, GMEM_ZEROINIT, eax - C ;mov pMemoryW,eax - 000000E5 89 47 1E C mov [edi].ptrHeapText, eax - 000000E8 89 47 22 C mov [edi].ptrLine, eax + C invoke HeapAlloc, hHeap, HEAP_ZERO_MEMORY , eax + 000000E8 89 47 1E C mov [edi].ptrHeapText, eax + 000000EB 89 47 22 C mov [edi].ptrLine, eax C C ; Convert byte string to word string C invoke MultiByteToWideChar, CP_UTF8, 0, DWORD PTR [ebp-8], -1, [edi].ptrHeapText, 0 @@ -71237,8 +71232,7 @@ Main.asm Page 1 - 1 C ;print [edi].ptrHeapText C ;invoke MessageBox, NULL, [edi].ptrHeapText, NULL, MB_OK C - C invoke GlobalUnlock,DWORD PTR [ebp-8] - C invoke GlobalFree,DWORD PTR [ebp-4] + C invoke HeapFree, hHeap, NULL, lpMem C C assume edi:nothing C @@ -71262,16 +71256,18 @@ Main.asm Page 1 - 1 00000131 8B 7D 08 C mov edi, lpTHIS C ASSUME edi: PTR CFile C .IF ( [edi].ptrHeapText != 0) - C invoke GlobalFree, [edi].ptrHeapText - 00000142 C7 47 1E C mov [edi].ptrHeapText, 0 + C invoke GetProcessHeap + C invoke HeapFree, eax, NULL, [edi].ptrHeapText + C ;invoke GlobalFree, [edi].ptrHeapText + 0000014A C7 47 1E C mov [edi].ptrHeapText, 0 00000000 C .ENDIF C ASSUME edi: nothing C ret - 0000014E C CFile_Dispose endp + 00000156 C CFile_Dispose endp C C ;-------------------------------------------------------- - 0000014E C CFile_CloseFile proc lpTHIS:DWORD + 00000156 C CFile_CloseFile proc lpTHIS:DWORD C ; C ; Opens a file, creates a handle and creates a w_char pointer C ; Receives: EAX, EBX, ECX, the three integers. May be @@ -71279,15 +71275,15 @@ Main.asm Page 1 - 1 C ; Returns: EAX = sum, and the status flags (Carry, ; Overflow, etc.) are changed. C ; Requires: nothing C ;--------------------------------------------------------- - 00000151 8B 7D 08 C mov edi, lpTHIS + 00000159 8B 7D 08 C mov edi, lpTHIS C ASSUME edi: PTR CFile C ASSUME edi: nothing C ret - 00000158 C CFile_CloseFile endp + 00000160 C CFile_CloseFile endp C C C ;-------------------------------------------------------- - 00000158 C CFile_ConvertToLine proc uses ax edi esi lpTHIS:DWORD + 00000160 C CFile_ConvertToLine proc uses ax edi esi lpTHIS:DWORD C ; C ; Opens a file, creates a handle and creates a w_char pointer C ; Receives: EAX, EBX, ECX, the three integers. May be @@ -71295,19 +71291,19 @@ Main.asm Page 1 - 1 C ; Returns: EAX = sum, and the status flags (Carry, ; Overflow, etc.) are changed. C ; Requires: nothing C ;--------------------------------------------------------- - 0000015F 8B 7D 08 C mov edi, lpTHIS ; get the parameter passed on the stack to the function + 00000167 8B 7D 08 C mov edi, lpTHIS ; get the parameter passed on the stack to the function C ASSUME edi:PTR CFile C - 00000162 8B 4F 26 C mov ecx, [edi].bytesRead - 00000165 8B 77 1E C mov esi, [edi].ptrHeapText + 0000016A 8B 4F 26 C mov ecx, [edi].bytesRead + 0000016D 8B 77 1E C mov esi, [edi].ptrHeapText C ;shr ecx, 1 C - 00000168 C loop_ConvertToLine: - 00000168 66| 8B 06 C mov ax, WORD PTR [esi] + 00000170 C loop_ConvertToLine: + 00000170 66| 8B 06 C mov ax, WORD PTR [esi] C ;movzx eax, al C ;push ecx C .IF (ax==13) - 00000171 66| C7 06 0000 C mov WORD PTR [esi], 0 + 00000179 66| C7 06 0000 C mov WORD PTR [esi], 0 C .ENDIF C ;.IF (ax==10) C ; mov WORD PTR [esi], 0 @@ -71316,8 +71312,8 @@ Main.asm Page 1 - 1 C ;print eax C ;print chr$(eax) C ;pop ecx - 00000176 83 C6 02 C add esi, 2 - 00000179 E2 ED C loop loop_ConvertToLine + 0000017E 83 C6 02 C add esi, 2 + 00000181 E2 ED C loop loop_ConvertToLine C C ;print [edi].ptrHeapText, 13, 10 C ;inkey @@ -71325,59 +71321,59 @@ Main.asm Page 1 - 1 C ASSUME edi: nothing C C ret - 00000183 C CFile_ConvertToLine endp + 0000018B C CFile_ConvertToLine endp C - 00000183 C CFile_GetLine proc uses ecx edi esi lpTHIS:DWORD - 00000189 8B 7D 08 C mov edi, lpTHIS ; get the parameter passed on the stack to the function + 0000018B C CFile_GetLine proc uses ecx edi esi lpTHIS:DWORD + 00000191 8B 7D 08 C mov edi, lpTHIS ; get the parameter passed on the stack to the function C ASSUME edi:PTR CFile C - 0000018C 8B 77 22 C mov esi, [edi].ptrLine + 00000194 8B 77 22 C mov esi, [edi].ptrLine C ;mov ecx, [edi].ptrHeapText C ;sub ecx, esi C ;shr ecx, 1 C ;add ecx, [edi].bytesRead C - 0000018F 8B 4F 26 C mov ecx, [edi].bytesRead - 00000192 D1 E1 C shl ecx, 1 ;multiply by 2 since we are using Words for each character - 00000194 03 4F 1E C add ecx, [edi].ptrHeapText - 00000197 2B CE C sub ecx, esi - 00000199 D1 E9 C shr ecx, 1 ;divide by 2 to get the number of characters + 00000197 8B 4F 26 C mov ecx, [edi].bytesRead + 0000019A D1 E1 C shl ecx, 1 ;multiply by 2 since we are using Words for each character + 0000019C 03 4F 1E C add ecx, [edi].ptrHeapText + 0000019F 2B CE C sub ecx, esi + 000001A1 D1 E9 C shr ecx, 1 ;divide by 2 to get the number of characters C - 0000019B 33 C0 C xor eax, eax + 000001A3 33 C0 C xor eax, eax C C ; If we are at the beginning of the text, just return the address C .IF esi == [edi].ptrHeapText - 000001A2 8B C6 C mov eax, esi - 000001A4 83 C6 02 C add esi, 2 - 000001A7 EB 1E C jmp exit_GetLine + 000001AA 8B C6 C mov eax, esi + 000001AC 83 C6 02 C add esi, 2 + 000001AF EB 1E C jmp exit_GetLine C .ENDIF C - 000001A9 C iterate: - 000001A9 66| 8B 06 C mov ax, WORD PTR [esi] + 000001B1 C iterate: + 000001B1 66| 8B 06 C mov ax, WORD PTR [esi] C .IF (eax==0) C .IF (ecx==1) ;If we are at the end, return NULL - 000001B5 33 C0 C xor eax, eax + 000001BD 33 C0 C xor eax, eax C .ELSE - 000001B9 83 C6 04 C add esi, 4 ;Move 2+2 (Chr 13 + chr 10) - 000001BC 8B C6 C mov eax, esi + 000001C1 83 C6 04 C add esi, 4 ;Move 2+2 (Chr 13 + chr 10) + 000001C4 8B C6 C mov eax, esi C .ENDIF - 000001BE EB 07 C jmp exit_GetLine + 000001C6 EB 07 C jmp exit_GetLine C .ELSE - 000001C2 83 C6 02 C add esi, 2 ;Move to the next character + 000001CA 83 C6 02 C add esi, 2 ;Move to the next character C .ENDIF - 000001C5 E2 E2 C loop iterate + 000001CD E2 E2 C loop iterate C - 000001C7 C exit_GetLine: + 000001CF C exit_GetLine: C .IF ecx== 1 ;If we are at the end, just reset the Line pointer to the beginning of the text - 000001CC 8B 4F 1E C mov ecx, [edi].ptrHeapText - 000001CF 89 4F 22 C mov [edi].ptrLine, ecx + 000001D4 8B 4F 1E C mov ecx, [edi].ptrHeapText + 000001D7 89 4F 22 C mov [edi].ptrLine, ecx C .ELSE - 000001D4 89 77 22 C mov [edi].ptrLine, esi + 000001DC 89 77 22 C mov [edi].ptrLine, esi C .ENDIF C C ASSUME edi: nothing C ret - 000001DE C CFile_GetLine endp + 000001E6 C CFile_GetLine endp C C ENDIF C @@ -71415,12 +71411,12 @@ Main.asm Page 1 - 1 00000032 C .data C 00000032 C CSplashScreen_initdata LABEL BYTE - 00000032 00000238 R C DWORD OFFSET CSplashScreen_Destructor - 00000036 00000244 R C DWORD OFFSET CSplashScreen_Show - 0000003A 00000368 R C DWORD OFFSET CSplashScreen_CreateBitmapImage - 0000003E 00000482 R C DWORD OFFSET CSplashScreen_RegisterWindowClass - 00000042 000004BE R C DWORD OFFSET CSplashScreen_UnregisterWindowClass - 00000046 00000368 R C DWORD OFFSET CSplashScreen_CreateBitmapImage + 00000032 00000240 R C DWORD OFFSET CSplashScreen_Destructor + 00000036 0000024C R C DWORD OFFSET CSplashScreen_Show + 0000003A 00000370 R C DWORD OFFSET CSplashScreen_CreateBitmapImage + 0000003E 0000048A R C DWORD OFFSET CSplashScreen_RegisterWindowClass + 00000042 000004C6 R C DWORD OFFSET CSplashScreen_UnregisterWindowClass + 00000046 00000370 R C DWORD OFFSET CSplashScreen_CreateBitmapImage 0000004A 00000000 C DWORD 0, 0, 0, 0, 0, 0 00000000 00000000 @@ -71529,34 +71525,34 @@ Main.asm Page 1 - 1 = 00000104 C MAXPATH equ 260 C C - 000001DE C .code + 000001E6 C .code C C ; --=====================================================================================-- C ; CLASS CONSTRUCTOR C ; --=====================================================================================-- - 000001DE C CSplashScreen_Init PROC uses eax ecx esi edi lpTHIS:DWORD, hInstance:DWORD, strImage:DWORD, strApp:DWORD, intFadeOutTime:DWORD - 000001E5 FC C cld - 000001E6 BE 00000032 R C mov esi, OFFSET CSplashScreen_initdata - 000001EB 8B 7D 08 C mov edi, lpTHIS - 000001EE B9 00000030 C mov ecx, CSplashScreen_initend - 000001F3 C1 E9 02 C shr ecx, 2 - 000001F6 F3/ A5 C rep movsd - 000001F8 B9 00000030 C mov ecx, CSplashScreen_initend - 000001FD 83 E1 03 C and ecx, 3 - 00000200 F3/ A4 C rep movsb + 000001E6 C CSplashScreen_Init PROC uses eax ecx esi edi lpTHIS:DWORD, hInstance:DWORD, strImage:DWORD, strApp:DWORD, intFadeOutTime:DWORD + 000001ED FC C cld + 000001EE BE 00000032 R C mov esi, OFFSET CSplashScreen_initdata + 000001F3 8B 7D 08 C mov edi, lpTHIS + 000001F6 B9 00000030 C mov ecx, CSplashScreen_initend + 000001FB C1 E9 02 C shr ecx, 2 + 000001FE F3/ A5 C rep movsd + 00000200 B9 00000030 C mov ecx, CSplashScreen_initend + 00000205 83 E1 03 C and ecx, 3 + 00000208 F3/ A4 C rep movsb C C ; Personalized initialization code - 00000202 8B 7D 08 C mov edi, lpTHIS + 0000020A 8B 7D 08 C mov edi, lpTHIS C assume edi:PTR CSplashScreen - 00000205 8B 45 0C C mov eax, hInstance - 00000208 89 47 14 C mov [edi].lpModuleName, eax - 0000020B 8B 45 10 C mov eax, strImage - 0000020E 89 47 18 C mov [edi].lpszImagePath, eax - 00000211 8B 45 14 C mov eax, strApp - 00000214 89 47 1C C mov [edi].lpszAppPath, eax - 00000217 8B 45 18 C mov eax, intFadeOutTime - 0000021A 89 47 20 C mov [edi].intFadeOutTime, eax - 0000021D C7 47 24 C mov [edi].intFadeOutEnd, 0 + 0000020D 8B 45 0C C mov eax, hInstance + 00000210 89 47 14 C mov [edi].lpModuleName, eax + 00000213 8B 45 10 C mov eax, strImage + 00000216 89 47 18 C mov [edi].lpszImagePath, eax + 00000219 8B 45 14 C mov eax, strApp + 0000021C 89 47 1C C mov [edi].lpszAppPath, eax + 0000021F 8B 45 18 C mov eax, intFadeOutTime + 00000222 89 47 20 C mov [edi].intFadeOutTime, eax + 00000225 C7 47 24 C mov [edi].intFadeOutEnd, 0 00000000 C C ;invoke MessageBox, NULL, [edi].lpModuleName, NULL, MB_OK @@ -71565,29 +71561,29 @@ Main.asm Page 1 - 1 C ;invoke MessageBox, NULL, [edi].intFadeOutTime, NULL, MB_OK C C ;Initialize blend member with zeroes - 00000224 B9 00000004 C mov ecx, sizeof BLENDFUNCTION - 00000229 33 C0 C xor eax, eax - 0000022B 8D 7F 28 C lea edi, [edi].blend - 0000022E F3/ AA C rep stosb + 0000022C B9 00000004 C mov ecx, sizeof BLENDFUNCTION + 00000231 33 C0 C xor eax, eax + 00000233 8D 7F 28 C lea edi, [edi].blend + 00000236 F3/ AA C rep stosb C assume edi:nothing C C ret - 00000238 C CSplashScreen_Init ENDP + 00000240 C CSplashScreen_Init ENDP C C ; --=====================================================================================-- C ; destructor METHOD BEHAVIOR C ; --=====================================================================================-- - 00000238 C CSplashScreen_Destructor PROC uses edi lpTHIS:DWORD - 0000023C 8B 7D 08 C mov edi, lpTHIS + 00000240 C CSplashScreen_Destructor PROC uses edi lpTHIS:DWORD + 00000244 8B 7D 08 C mov edi, lpTHIS C assume edi:PTR CSplashScreen C C assume edi:nothing C ret - 00000244 C CSplashScreen_Destructor ENDP + 0000024C C CSplashScreen_Destructor ENDP C C C - 00000244 C CSplashScreen_Show PROC uses edi lpTHIS:DWORD + 0000024C C CSplashScreen_Show PROC uses edi lpTHIS:DWORD C LOCAL hCloseSplashEvent :DWORD C LOCAL hCloseSplashWithoutFadeEvent :DWORD C LOCAL hBitmap :DWORD @@ -71595,13 +71591,13 @@ Main.asm Page 1 - 1 C LOCAL hSplashWnd :HANDLE C LOCAL hdcScreen :HDC C - 0000024B 8B 7D 08 C mov edi, lpTHIS + 00000253 8B 7D 08 C mov edi, lpTHIS C assume edi:PTR CSplashScreen C C ; Open the COM library C invoke CoInitializeEx, 0, COINIT_APARTMENTTHREADED or COINIT_DISABLE_OLE1DDE C .IF (eax != S_OK) ; Operation successful 0x00000000h - 0000025B E9 000000C6 C jmp exit_Show ; Exit if the COM library could not be opened + 00000263 E9 000000C6 C jmp exit_Show ; Exit if the COM library could not be opened C .ENDIF C C ; Create the named close splash screen event, making sure we're the first process to create it @@ -71609,72 +71605,72 @@ Main.asm Page 1 - 1 C C ; Create the event CloseSplashScreenEvent C invoke CreateEvent, NULL, TRUE, FALSE, ADDR strEventName_1 - 00000277 89 45 FC C mov hCloseSplashEvent, eax + 0000027F 89 45 FC C mov hCloseSplashEvent, eax C C invoke GetLastError C .IF (eax == ERROR_ALREADY_EXISTS) ; ERROR_ALREADY_EXISTS = 183 C invoke ExitProcess, 0 - 0000028D E9 00000094 C jmp exit_Show + 00000295 E9 00000094 C jmp exit_Show C .ENDIF C C ; Create the event CloseSplashScreenWithoutFadeEvent C invoke CreateEvent, NULL, TRUE, FALSE, ADDR strEventName_2 - 000002A2 89 45 F8 C mov hCloseSplashWithoutFadeEvent, eax + 000002AA 89 45 F8 C mov hCloseSplashWithoutFadeEvent, eax C C invoke GetLastError C .IF (eax == ERROR_ALREADY_EXISTS) ; ERROR_ALREADY_EXISTS = 183 C invoke ExitProcess, 0 - 000002B8 EB 6C C jmp exit_Show + 000002C0 EB 6C C jmp exit_Show C .ENDIF C C ; Create the bitmap (from file or default) that will be shown in the splash window - 000002BA 57 C push edi - 000002BB E8 000000A8 C call CSplashScreen_CreateBitmapImage - 000002C0 89 45 F4 C mov hBitmap, eax + 000002C2 57 C push edi + 000002C3 E8 000000A8 C call CSplashScreen_CreateBitmapImage + 000002C8 89 45 F4 C mov hBitmap, eax C - 000002C3 57 C push edi - 000002C4 E8 000001B9 C call CSplashScreen_RegisterWindowClass + 000002CB 57 C push edi + 000002CC E8 000001B9 C call CSplashScreen_RegisterWindowClass C C .IF (hBitmap!=NULL) - 000002CF 57 C push edi - 000002D0 E8 00000202 C call CSplashScreen_CreateSplashWindow - 000002D5 89 45 E4 C mov hSplashWnd, eax - 000002D8 FF 75 F4 C push hBitmap - 000002DB 50 C push eax - 000002DC 57 C push edi - 000002DD E8 00000228 C call CSplashScreen_SetSplashImage + 000002D7 57 C push edi + 000002D8 E8 00000202 C call CSplashScreen_CreateSplashWindow + 000002DD 89 45 E4 C mov hSplashWnd, eax + 000002E0 FF 75 F4 C push hBitmap + 000002E3 50 C push eax + 000002E4 57 C push edi + 000002E5 E8 00000228 C call CSplashScreen_SetSplashImage C .ENDIF C C .IF (eax!=0) ;if file exists C ; Launch the application - 000002E6 57 C push edi - 000002E7 E8 00000331 C call CSplashScreen_LaunchApplication ; Returns the handle of the launched application in eax - 000002EC 8B D8 C mov ebx, eax + 000002EE 57 C push edi + 000002EF E8 00000331 C call CSplashScreen_LaunchApplication ; Returns the handle of the launched application in eax + 000002F4 8B D8 C mov ebx, eax C invoke GetProcessId, eax C invoke AllowSetForegroundWindow, eax C C ; Graphic display operations C invoke GetDC, NULL - 00000301 89 45 E0 C mov hdcScreen, eax - C - 00000304 8D 45 E8 C lea eax, aHandles - 00000307 89 18 C mov DWORD PTR [eax + 0], ebx - 00000309 8B 5D FC C mov ebx, hCloseSplashEvent - 0000030C 89 58 04 C mov DWORD PTR [eax + 4], ebx - 0000030F 8B 5D F8 C mov ebx, hCloseSplashWithoutFadeEvent - 00000312 89 58 08 C mov DWORD PTR [eax + 8], ebx + 00000309 89 45 E0 C mov hdcScreen, eax + C + 0000030C 8D 45 E8 C lea eax, aHandles + 0000030F 89 18 C mov DWORD PTR [eax + 0], ebx + 00000311 8B 5D FC C mov ebx, hCloseSplashEvent + 00000314 89 58 04 C mov DWORD PTR [eax + 4], ebx + 00000317 8B 5D F8 C mov ebx, hCloseSplashWithoutFadeEvent + 0000031A 89 58 08 C mov DWORD PTR [eax + 8], ebx C - 00000315 FF 75 E0 C push hdcScreen - 00000318 6A FF C push INFINITE - 0000031A 50 C push eax - 0000031B 6A 03 C push 3 - 0000031D FF 75 E4 C push hSplashWnd - 00000320 57 C push edi - 00000321 E8 000003B7 C call CSplashScreen_PumpMsgWaitForMultipleObjects ; lpTHIS:DWORD, hwndSplash:HWND, nCount:DWORD, pHandles:LPHANDLE, dwMilliseconds:DWORD + 0000031D FF 75 E0 C push hdcScreen + 00000320 6A FF C push INFINITE + 00000322 50 C push eax + 00000323 6A 03 C push 3 + 00000325 FF 75 E4 C push hSplashWnd + 00000328 57 C push edi + 00000329 E8 000003B7 C call CSplashScreen_PumpMsgWaitForMultipleObjects ; lpTHIS:DWORD, hwndSplash:HWND, nCount:DWORD, pHandles:LPHANDLE, dwMilliseconds:DWORD C C .ENDIF C - 00000326 C exit_Show: + 0000032E C exit_Show: C C invoke ReleaseDC, NULL, hdcScreen C @@ -71690,18 +71686,18 @@ Main.asm Page 1 - 1 C C ; Destroy the window and unregister the class C invoke DestroyWindow, hSplashWnd - 00000358 57 C push edi - 00000359 E8 00000160 C call CSplashScreen_UnregisterWindowClass + 00000360 57 C push edi + 00000361 E8 00000160 C call CSplashScreen_UnregisterWindowClass C C ; Close the COM library C invoke CoUninitialize C C assume edi:nothing C ret - 00000368 C CSplashScreen_Show ENDP + 00000370 C CSplashScreen_Show ENDP C C - 00000368 C CSplashScreen_CreateBitmapImage PROC uses edi lpTHIS:DWORD + 00000370 C CSplashScreen_CreateBitmapImage PROC uses edi lpTHIS:DWORD C ;LOCAL hGdiImage :DWORD C ;LOCAL wbuffer :DWORD C LOCAL hBitmap :DWORD @@ -71712,45 +71708,45 @@ Main.asm Page 1 - 1 C LOCAL lpImage :DWORD C C ;mov hGdiImage, 0 - 0000036F C7 45 FC C mov hBitmap, 0 + 00000377 C7 45 FC C mov hBitmap, 0 00000000 - 00000376 C7 45 E0 C mov GpBitmap, 0 + 0000037E C7 45 E0 C mov GpBitmap, 0 00000000 - 0000037D C7 45 DC C mov GpGraphics, 0 + 00000385 C7 45 DC C mov GpGraphics, 0 00000000 - 00000384 C7 45 D8 C mov GpSolidFill, 0 + 0000038C C7 45 D8 C mov GpSolidFill, 0 00000000 C - 0000038B 8B 7D 08 C mov edi, lpTHIS + 00000393 8B 7D 08 C mov edi, lpTHIS C assume edi:PTR CSplashScreen C - 0000038E C7 05 00000066 R C mov gdipSI.GdiplusVersion, 1 + 00000396 C7 05 00000066 R C mov gdipSI.GdiplusVersion, 1 00000001 - 00000398 C7 05 0000006E R C mov gdipSI.SuppressBackgroundThread, 0 + 000003A0 C7 05 0000006E R C mov gdipSI.SuppressBackgroundThread, 0 00000000 C invoke GdiplusStartup, ADDR gdiToken, ADDR gdipSI, NULL C C ; If GDI could not be started, then exit C .IF gdiToken == 0 - 000003BC E9 000000AF C jmp exit_CreateBitmapImage + 000003C4 E9 000000AF C jmp exit_CreateBitmapImage C .ENDIF C C ;invoke GdipCreateBitmapFromFile, ADDR ImagePath, ADDR hGdiImage C invoke GdipCreateBitmapFromFile, [edi].lpszImagePath, ADDR GpBitmap C .IF (GpBitmap == NULL) - 000003D3 EB 23 C jmp exit_DefaultBitmap + 000003DB EB 23 C jmp exit_DefaultBitmap C .ENDIF C invoke GdipCreateHBITMAPFromBitmap, GpBitmap, ADDR hBitmap, m_SplashBackgroundColor C .IF (hBitmap == NULL) - 000003EC EB 0A C jmp exit_DefaultBitmap + 000003F4 EB 0A C jmp exit_DefaultBitmap C .ENDIF C invoke GdipDisposeImage, GpBitmap C ;invoke GetObject, hBitmap, SIZEOF image, ADDR image - 000003F6 EB 78 C jmp exit_CreateBitmapImage + 000003FE EB 78 C jmp exit_CreateBitmapImage C C ; Creates a default bitmap (colors and dimensions defined atop) C ; More information here: http://masm32.com/board/index.php?topic=5731.15 - 000003F8 C exit_DefaultBitmap: + 00000400 C exit_DefaultBitmap: C C invoke GdipCreateBitmapFromScan0, m_nSplashWidth, m_nSplashHeight, 0, PixelFormat32bppARGB, NULL, ADDR GpBitmap C invoke GdipGetImageGraphicsContext, GpBitmap, ADDR GpGraphics @@ -71764,41 +71760,41 @@ Main.asm Page 1 - 1 C C C - 00000470 C exit_CreateBitmapImage: + 00000478 C exit_CreateBitmapImage: C C invoke GdiplusShutdown, ADDR gdiToken - 0000047A 8B 45 FC C mov eax, hBitmap ; This has to be deallocated later by the user + 00000482 8B 45 FC C mov eax, hBitmap ; This has to be deallocated later by the user C C assume edi:nothing C ret - 00000482 C CSplashScreen_CreateBitmapImage ENDP + 0000048A C CSplashScreen_CreateBitmapImage ENDP CSplashScreen.asm(292) : warning A6004:procedure argument or local not referenced : image CSplashScreen.asm(292) : warning A6004:procedure argument or local not referenced : lpImage C C ; --=====================================================================================-- C ; Registers a window class for the splash and splash owner windows. C ; --=====================================================================================-- - 00000482 C CSplashScreen_RegisterWindowClass PROC uses edi lpTHIS:DWORD + 0000048A C CSplashScreen_RegisterWindowClass PROC uses edi lpTHIS:DWORD C ; https://gist.github.com/DrFrankenstein/9810bbf5cad98b110281 C LOCAL wc: WNDCLASS C C ;Initialize wc with zeroes - 00000489 B9 00000028 C mov ecx, sizeof WNDCLASS - 0000048E 33 C0 C xor eax, eax - 00000490 8D 7D D8 C lea edi, wc - 00000493 F3/ AA C rep stosb + 00000491 B9 00000028 C mov ecx, sizeof WNDCLASS + 00000496 33 C0 C xor eax, eax + 00000498 8D 7D D8 C lea edi, wc + 0000049B F3/ AA C rep stosb C C ; Get this pointer - 00000495 8B 7D 08 C mov edi, lpTHIS + 0000049D 8B 7D 08 C mov edi, lpTHIS C assume edi:PTR CSplashScreen C C ;Register the window class C ;mov wc.lpfnWndProc, OFFSET WindowProc - 00000498 C7 45 DC C mov wc.lpfnWndProc, DefWindowProc ; http://masm32.com/board/index.php?topic=2469.0 + 000004A0 C7 45 DC C mov wc.lpfnWndProc, DefWindowProc ; http://masm32.com/board/index.php?topic=2469.0 00000000 E C invoke GetModuleHandle, 0 - 000004A6 89 45 E8 C mov wc.hInstance, eax - 000004A9 C7 45 FC C mov wc.lpszClassName, OFFSET strClassName + 000004AE 89 45 E8 C mov wc.hInstance, eax + 000004B1 C7 45 FC C mov wc.lpszClassName, OFFSET strClassName 000000E8 R C invoke RegisterClass, ADDR wc C @@ -71811,13 +71807,13 @@ CSplashScreen.asm(292) : warning A6004:procedure argument or local not reference C C assume edi:nothing C ret - 000004BE C CSplashScreen_RegisterWindowClass ENDP + 000004C6 C CSplashScreen_RegisterWindowClass ENDP C C ; --=====================================================================================-- C ; Registers a window class for the splash and splash owner windows. C ; --=====================================================================================-- - 000004BE C CSplashScreen_UnregisterWindowClass PROC uses edi lpTHIS:DWORD - 000004C2 8B 7D 08 C mov edi, lpTHIS + 000004C6 C CSplashScreen_UnregisterWindowClass PROC uses edi lpTHIS:DWORD + 000004CA 8B 7D 08 C mov edi, lpTHIS C assume edi:PTR CSplashScreen C C ;invoke GetModuleHandle, 0 @@ -71825,11 +71821,11 @@ CSplashScreen.asm(292) : warning A6004:procedure argument or local not reference C C assume edi:nothing C ret - 000004D7 C CSplashScreen_UnregisterWindowClass ENDP + 000004DF C CSplashScreen_UnregisterWindowClass ENDP C C - 000004D7 C CSplashScreen_CreateSplashWindow PROC uses edi lpTHIS:DWORD - 000004DB 8B 7D 08 C mov edi, lpTHIS + 000004DF C CSplashScreen_CreateSplashWindow PROC uses edi lpTHIS:DWORD + 000004E3 8B 7D 08 C mov edi, lpTHIS C assume edi:PTR CSplashScreen C C ;push NULL @@ -71854,9 +71850,9 @@ CSplashScreen.asm(292) : warning A6004:procedure argument or local not reference C C assume edi:nothing C ret - 0000050A C CSplashScreen_CreateSplashWindow ENDP + 00000512 C CSplashScreen_CreateSplashWindow ENDP C - 0000050A C CSplashScreen_SetSplashImage PROC uses edi lpTHIS:DWORD, hwndSplash:HWND, hbmpSplash:HBITMAP + 00000512 C CSplashScreen_SetSplashImage PROC uses edi lpTHIS:DWORD, hwndSplash:HWND, hbmpSplash:HBITMAP C LOCAL bm :BITMAP ; defined in wingdi.h C LOCAL ptZero :POINT ; defined in windef.h C LOCAL ptOrigin :POINT ; defined in windef.h @@ -71870,63 +71866,63 @@ CSplashScreen.asm(292) : warning A6004:procedure argument or local not reference C ;LOCAL blend :BLENDFUNCTION ; defined in wingdi.h C C ; Initialize structs - 00000511 C7 45 E0 C mov ptZero.x, 0 + 00000519 C7 45 E0 C mov ptZero.x, 0 00000000 - 00000518 C7 45 E4 C mov ptZero.y, 0 + 00000520 C7 45 E4 C mov ptZero.y, 0 00000000 C - 0000051F B9 00000028 C mov ecx, SIZEOF monitorinfo - 00000524 33 C0 C xor eax, eax - 00000526 8D 7D A4 C lea edi, monitorinfo - 00000529 F3/ AA C rep stosb + 00000527 B9 00000028 C mov ecx, SIZEOF monitorinfo + 0000052C 33 C0 C xor eax, eax + 0000052E 8D 7D A4 C lea edi, monitorinfo + 00000531 F3/ AA C rep stosb C C ; Get this pointer - 0000052B 8B 7D 08 C mov edi, lpTHIS + 00000533 8B 7D 08 C mov edi, lpTHIS C assume edi:PTR CSplashScreen C C ; Get the dimensions of the bitmap used as the splash screen C invoke GetObject, hbmpSplash, SIZEOF bm, ADDR bm - 0000053C 8B 45 EC C mov eax, bm.bmWidth - 0000053F 89 45 D0 C mov sizeSplash.x, eax - 00000542 8B 45 F0 C mov eax, bm.bmHeight - 00000545 89 45 D4 C mov sizeSplash.y, eax + 00000544 8B 45 EC C mov eax, bm.bmWidth + 00000547 89 45 D0 C mov sizeSplash.x, eax + 0000054A 8B 45 F0 C mov eax, bm.bmHeight + 0000054D 89 45 D4 C mov sizeSplash.y, eax C C ; Get the primary monitor's info C invoke MonitorFromPoint, ptZero.x, ptZero.y, MONITOR_DEFAULTTOPRIMARY ; 0x00000001 - 00000555 89 45 CC C mov hmonPrimary, eax - 00000558 B8 00000028 C mov eax, SIZEOF monitorinfo - 0000055D 89 45 A4 C mov monitorinfo.cbSize, eax + 0000055D 89 45 CC C mov hmonPrimary, eax + 00000560 B8 00000028 C mov eax, SIZEOF monitorinfo + 00000565 89 45 A4 C mov monitorinfo.cbSize, eax C invoke GetMonitorInfo, hmonPrimary, ADDR monitorinfo C C ; Center the bitmap into the primary monitor - 0000056C 8B 45 B0 C mov eax, monitorinfo.rcMonitor.right ; rcWork plus the windows taskbar - 0000056F 2B 45 A8 C sub eax, monitorinfo.rcMonitor.left - 00000572 2B 45 D0 C sub eax, sizeSplash.x - 00000575 D1 E8 C shr eax, 1 - 00000577 03 45 A8 C add eax, monitorinfo.rcMonitor.left - 0000057A 89 45 D8 C mov ptOrigin.x, eax - C - 0000057D 8B 45 B4 C mov eax, monitorinfo.rcMonitor.bottom - 00000580 2B 45 AC C sub eax, monitorinfo.rcMonitor.top - 00000583 2B 45 D4 C sub eax, sizeSplash.y - 00000586 D1 E8 C shr eax, 1 - 00000588 03 45 AC C add eax, monitorinfo.rcMonitor.top - 0000058B 89 45 DC C mov ptOrigin.y, eax + 00000574 8B 45 B0 C mov eax, monitorinfo.rcMonitor.right ; rcWork plus the windows taskbar + 00000577 2B 45 A8 C sub eax, monitorinfo.rcMonitor.left + 0000057A 2B 45 D0 C sub eax, sizeSplash.x + 0000057D D1 E8 C shr eax, 1 + 0000057F 03 45 A8 C add eax, monitorinfo.rcMonitor.left + 00000582 89 45 D8 C mov ptOrigin.x, eax + C + 00000585 8B 45 B4 C mov eax, monitorinfo.rcMonitor.bottom + 00000588 2B 45 AC C sub eax, monitorinfo.rcMonitor.top + 0000058B 2B 45 D4 C sub eax, sizeSplash.y + 0000058E D1 E8 C shr eax, 1 + 00000590 03 45 AC C add eax, monitorinfo.rcMonitor.top + 00000593 89 45 DC C mov ptOrigin.y, eax C C ; Create a memory DC holding the splash bitmap C invoke GetDC, 0 - 00000595 89 45 A0 C mov hdcScreen, eax + 0000059D 89 45 A0 C mov hdcScreen, eax C invoke CreateCompatibleDC, hdcScreen - 000005A0 89 45 9C C mov hdcMem, eax + 000005A8 89 45 9C C mov hdcMem, eax C invoke SelectObject, hdcMem, hbmpSplash - 000005AE 89 45 98 C mov hbmpOld, eax + 000005B6 89 45 98 C mov hbmpOld, eax C C ; Use the source image's alpha channel for blending - 000005B1 C6 47 28 00 C mov [edi].blend.BlendOp, AC_SRC_OVER ; 0x00 - 000005B5 C6 47 29 00 C mov [edi].blend.BlendFlags, 0 ; 0x00 - 000005B9 C6 47 2A FF C mov [edi].blend.SourceConstantAlpha, 255 ; 0xFF - 000005BD C6 47 2B 01 C mov [edi].blend.AlphaFormat, AC_SRC_ALPHA ; 0x01 - 000005C1 8D 47 28 C lea eax, [edi].blend + 000005B9 C6 47 28 00 C mov [edi].blend.BlendOp, AC_SRC_OVER ; 0x00 + 000005BD C6 47 29 00 C mov [edi].blend.BlendFlags, 0 ; 0x00 + 000005C1 C6 47 2A FF C mov [edi].blend.SourceConstantAlpha, 255 ; 0xFF + 000005C5 C6 47 2B 01 C mov [edi].blend.AlphaFormat, AC_SRC_ALPHA ; 0x01 + 000005C9 8D 47 28 C lea eax, [edi].blend C ; Paint the window (in the right location) with the alpha-blended bitmap C invoke UpdateLayeredWindow, hwndSplash, hdcScreen, ADDR ptOrigin, ADDR sizeSplash, hdcMem, ADDR ptZero, 000000000h, eax, ULW_ALPHA C @@ -71946,49 +71942,49 @@ CSplashScreen.asm(292) : warning A6004:procedure argument or local not reference C C assume edi:nothing C ret - 0000061D C CSplashScreen_SetSplashImage ENDP + 00000625 C CSplashScreen_SetSplashImage ENDP C - 0000061D C CSplashScreen_LaunchApplication PROC uses edi lpTHIS:DWORD + 00000625 C CSplashScreen_LaunchApplication PROC uses edi lpTHIS:DWORD C LOCAL szCurrentFolder[MAX_PATH]:WORD C LOCAL szApplicationPath[MAX_PATH]:WORD C LOCAL startupinfo:STARTUPINFO C LOCAL processinfo:PROCESS_INFORMATION C C ; Initialize structs to 0 - 00000627 B9 00000044 C mov ecx, SIZEOF startupinfo - 0000062C 33 C0 C xor eax, eax - 0000062E 8D BD FFFFFBAC C lea edi, startupinfo - 00000634 F3/ AA C rep stosb + 0000062F B9 00000044 C mov ecx, SIZEOF startupinfo + 00000634 33 C0 C xor eax, eax + 00000636 8D BD FFFFFBAC C lea edi, startupinfo + 0000063C F3/ AA C rep stosb C - 00000636 B9 00000010 C mov ecx, SIZEOF processinfo - 0000063B 33 C0 C xor eax, eax - 0000063D 8D BD FFFFFB9C C lea edi, processinfo - 00000643 F3/ AA C rep stosb + 0000063E B9 00000010 C mov ecx, SIZEOF processinfo + 00000643 33 C0 C xor eax, eax + 00000645 8D BD FFFFFB9C C lea edi, processinfo + 0000064B F3/ AA C rep stosb C C ; Set this pointer - 00000645 8B 7D 08 C mov edi, lpTHIS + 0000064D 8B 7D 08 C mov edi, lpTHIS C assume edi:PTR CSplashScreen C C ; Get folder of the current process C invoke GetModuleFileName, NULL, ADDR szCurrentFolder, MAX_PATH C invoke PathRemoveFileSpec, ADDR szCurrentFolder ; http://masm32.com/board/index.php?topic=3646.0 C - 00000667 8B 5F 1C C mov ebx, [edi].lpszAppPath + 0000066F 8B 5F 1C C mov ebx, [edi].lpszAppPath C C ; Add the application name to the path C .IF (WORD PTR[ebx+2]==58 && WORD PTR[ebx+4]==92) ; ":" && "\\" C ;mov lpszApplicationPath, eax C .ELSE - 0000067A 8D 9D FFFFFBF0 C lea ebx, szApplicationPath + 00000682 8D 9D FFFFFBF0 C lea ebx, szApplicationPath C invoke PathCombine, ebx, ADDR szCurrentFolder, [edi].lpszAppPath C ;invoke PathCombine, ADDR szApplicationPath, ADDR szCurrentFolder, [edi].lpszAppPath C .ENDIF C C ; Start the application - 00000690 C7 85 FFFFFBAC C mov startupinfo.cb, SIZEOF startupinfo + 00000698 C7 85 FFFFFBAC C mov startupinfo.cb, SIZEOF startupinfo 00000044 C invoke GetCommandLine - 0000069F 8B C8 C mov ecx, eax + 000006A7 8B C8 C mov ecx, eax C invoke CreateProcess, ebx, ecx, NULL, NULL, FALSE, 0, NULL, ADDR szCurrentFolder, ADDR startupinfo, ADDR processinfo C ;mov ebx, eax C ;invoke CreateProcess, ADDR szApplicationPath, ebx, NULL, NULL, FALSE, 0, NULL, ADDR szCurrentFolder, ADDR startupinfo, ADDR processinfo @@ -71997,13 +71993,13 @@ CSplashScreen.asm(292) : warning A6004:procedure argument or local not reference C invoke CloseHandle, processinfo.hThread C C ; Return the handle of the launched application. The caller should release this using CloseHandle - 000006D2 8B 85 FFFFFB9C C mov eax, processinfo.hProcess + 000006DA 8B 85 FFFFFB9C C mov eax, processinfo.hProcess C C assume edi:nothing C ret - 000006DD C CSplashScreen_LaunchApplication ENDP + 000006E5 C CSplashScreen_LaunchApplication ENDP C - 000006DD C CSplashScreen_PumpMsgWaitForMultipleObjects PROC uses edi lpTHIS:DWORD, hwndSplash:HWND, nCount:DWORD, pHandles:LPHANDLE, dwMilliseconds:DWORD, hdcScreen:HDC + 000006E5 C CSplashScreen_PumpMsgWaitForMultipleObjects PROC uses edi lpTHIS:DWORD, hwndSplash:HWND, nCount:DWORD, pHandles:LPHANDLE, dwMilliseconds:DWORD, hdcScreen:HDC C LOCAL dwStartTickCount :DWORD C LOCAL dwElapsed :DWORD C LOCAL dwTimeOut :DWORD @@ -72011,120 +72007,120 @@ CSplashScreen.asm(292) : warning A6004:procedure argument or local not reference C ;LOCAL hdcScreen :HDC C LOCAL msg :MSG C - 000006E4 8B 7D 08 C mov edi, lpTHIS + 000006EC 8B 7D 08 C mov edi, lpTHIS C assume edi: PTR CSplashScreen C C invoke GetTickCount - 000006EC 89 45 FC C mov dwStartTickCount, eax + 000006F4 89 45 FC C mov dwStartTickCount, eax C - 000006EF C Wait_Loop: + 000006F7 C Wait_Loop: C ; Calculate timeout C invoke GetTickCount - 000006F4 2B 45 FC C sub eax, dwStartTickCount - 000006F7 89 45 F8 C mov dwElapsed, eax + 000006FC 2B 45 FC C sub eax, dwStartTickCount + 000006FF 89 45 F8 C mov dwElapsed, eax C C .IF (dwMilliseconds == INFINITE) - 00000700 C7 45 F4 C mov dwTimeOut, INFINITE + 00000708 C7 45 F4 C mov dwTimeOut, INFINITE FFFFFFFF C .ELSE C .IF (eax < dwMilliseconds) ; dwElapsed < dwMilliseconds - 0000070E 8B 45 18 C mov eax, dwMilliseconds - 00000711 2B 45 F8 C sub eax, dwElapsed - 00000714 89 45 F4 C mov dwTimeOut, eax + 00000716 8B 45 18 C mov eax, dwMilliseconds + 00000719 2B 45 F8 C sub eax, dwElapsed + 0000071C 89 45 F4 C mov dwTimeOut, eax C ;sub dwTimeOut, dwElapsed C .ELSE - 00000719 C7 45 F4 C mov dwTimeOut, 0 + 00000721 C7 45 F4 C mov dwTimeOut, 0 00000000 C .ENDIF C .ENDIF C C ; Wait for a handle to be signaled or a message C invoke MsgWaitForMultipleObjects, nCount, pHandles, FALSE, dwTimeOut, QS_ALLINPUT - 00000735 89 45 F0 C mov dwWaitResult, eax - 00000738 B8 00000000 C mov eax, WAIT_OBJECT_0 - 0000073D 03 45 10 C add eax, nCount + 0000073D 89 45 F0 C mov dwWaitResult, eax + 00000740 B8 00000000 C mov eax, WAIT_OBJECT_0 + 00000745 03 45 10 C add eax, nCount C .IF ( dwWaitResult == eax ) ; dwWaitResult == WAIT_OBJECT_0 + nCount C - 00000745 EB 25 C jmp While_Peek_Condition ; While PeekMessage != FALSE + 0000074D EB 25 C jmp While_Peek_Condition ; While PeekMessage != FALSE C - 00000747 C While_Peek_Start: + 0000074F C While_Peek_Start: C .IF (msg.message == WM_QUIT) C ; Repost quit message and return C invoke PostQuitMessage, msg.wParam C ;return WAIT_OBJECT_0 + nCount; - 00000755 E9 000000B2 C jmp exit_PumpMsgWaitForMultipleObjects + 0000075D E9 000000B2 C jmp exit_PumpMsgWaitForMultipleObjects C .ENDIF C ; Dispatch thread message C invoke TranslateMessage, ADDR msg C invoke DispatchMessage, ADDR msg C - 0000076C C While_Peek_Condition: + 00000774 C While_Peek_Condition: C invoke PeekMessage, ADDR msg, NULL, 0, 0, PM_REMOVE - 0000077D 83 F8 00 C cmp eax, FALSE - 00000780 75 C5 C jne While_Peek_Start ; execute while eax != FALSE + 00000785 83 F8 00 C cmp eax, FALSE + 00000788 75 C5 C jne While_Peek_Start ; execute while eax != FALSE C C .ELSE C ; Check fade event (pHandles[1]). If the fade event is not set then we simply need to exit. C ; if the fade event is set then we need to fade out - 00000787 8B 5D 14 C mov ebx, pHandles ; Pointer to the beginning of the array - 0000078A 83 C3 04 C add ebx, 4 ; Point to the second element: pHandles[1] + 0000078F 8B 5D 14 C mov ebx, pHandles ; Pointer to the beginning of the array + 00000792 83 C3 04 C add ebx, 4 ; Point to the second element: pHandles[1] C invoke MsgWaitForMultipleObjects, 1, ebx, FALSE, 0, QS_ALLINPUT C .IF (eax == WAIT_OBJECT_0) C C ; Timeout on actual wait or any other object C invoke SetTimer, hwndSplash, 1, 30, NULL C invoke GetTickCount - 000007B5 03 47 20 C add eax, [edi].intFadeOutTime - 000007B8 89 47 24 C mov [edi].intFadeOutEnd, eax + 000007BD 03 47 20 C add eax, [edi].intFadeOutTime + 000007C0 89 47 24 C mov [edi].intFadeOutEnd, eax C - 000007BB EB 33 C jmp FadeWindow_Condition + 000007C3 EB 33 C jmp FadeWindow_Condition C - 000007BD C FadeWindow_Start: + 000007C5 C FadeWindow_Start: C .IF (eax == -1) C ; Handle the error and possibly exit C .ELSE C .IF (msg.message == WM_TIMER) - 000007CD FF 75 1C C push hdcScreen - 000007D0 FF 75 0C C push hwndSplash - 000007D3 57 C push edi - 000007D4 E8 00000038 C call CSplashScreen_FadeWindowOut - 000007D9 83 F8 01 C cmp eax, 1 - 000007DC 74 2E C je exit_PumpMsgWaitForMultipleObjects + 000007D5 FF 75 1C C push hdcScreen + 000007D8 FF 75 0C C push hwndSplash + 000007DB 57 C push edi + 000007DC E8 00000038 C call CSplashScreen_FadeWindowOut + 000007E1 83 F8 01 C cmp eax, 1 + 000007E4 74 2E C je exit_PumpMsgWaitForMultipleObjects C .ENDIF C ; Dispatch thread message C invoke TranslateMessage, ADDR msg C invoke DispatchMessage, ADDR msg C .ENDIF - 000007F0 C FadeWindow_Condition: + 000007F8 C FadeWindow_Condition: C invoke GetMessage, ADDR msg, hwndSplash, 0, 0 - 00000800 83 F8 00 C cmp eax, FALSE - 00000803 75 B8 C jne FadeWindow_Start + 00000808 83 F8 00 C cmp eax, FALSE + 0000080B 75 B8 C jne FadeWindow_Start C .ENDIF C - 00000805 EB 05 C jmp exit_PumpMsgWaitForMultipleObjects + 0000080D EB 05 C jmp exit_PumpMsgWaitForMultipleObjects C C .ENDIF - 00000807 E9 FFFFFEE3 C jmp Wait_Loop + 0000080F E9 FFFFFEE3 C jmp Wait_Loop C - 0000080C C exit_PumpMsgWaitForMultipleObjects: + 00000814 C exit_PumpMsgWaitForMultipleObjects: C C assume edi:nothing C ret - 00000811 C CSplashScreen_PumpMsgWaitForMultipleObjects ENDP + 00000819 C CSplashScreen_PumpMsgWaitForMultipleObjects ENDP C - 00000811 C CSplashScreen_FadeWindowOut PROC uses edi lpTHIS:DWORD, hWindow:HWND, hdcScreen:HDC + 00000819 C CSplashScreen_FadeWindowOut PROC uses edi lpTHIS:DWORD, hWindow:HWND, hdcScreen:HDC C LOCAL dtNow:DWORD C LOCAL cte:DWORD C LOCAL result:DWORD C - 00000818 8B 7D 08 C mov edi, lpTHIS + 00000820 8B 7D 08 C mov edi, lpTHIS C assume edi:PTR CSplashScreen C C invoke GetTickCount - 00000820 89 45 FC C mov dtNow, eax + 00000828 89 45 FC C mov dtNow, eax C C .IF (eax >= [edi].intFadeOutEnd) - 00000828 B8 00000001 C mov eax, 1 ; Return true (we are done with the fade out) + 00000830 B8 00000001 C mov eax, 1 ; Return true (we are done with the fade out) C .ELSE C ; Floating point computation of the blend parameter C ;mov cte, 255 @@ -72140,32 +72136,32 @@ CSplashScreen.asm(292) : warning A6004:procedure argument or local not reference C C ; Same computation using SSE C ; double fade = ((double)m_nFadeoutEnd - (double)dtNow) / (double)m_nFadeoutTime; - 0000082F 0F 57 C0 C xorps xmm0, xmm0 ; 128-bit wide registers - 00000832 0F 57 C9 C xorps xmm1, xmm1 - 00000835 8B 47 24 C mov eax, [edi].intFadeOutEnd - 00000838 F2/ 0F 2A C0 C cvtsi2sd xmm0, eax - 0000083C 8B 45 FC C mov eax, dtNow - 0000083F F2/ 0F 2A C8 C cvtsi2sd xmm1, eax - 00000843 F2/ 0F 5C C1 C subsd xmm0, xmm1 - 00000847 8B 47 20 C mov eax, [edi].intFadeOutTime - 0000084A F2/ 0F 2A C8 C cvtsi2sd xmm1, eax - 0000084E F2/ 0F 5E C1 C divsd xmm0, xmm1 + 00000837 0F 57 C0 C xorps xmm0, xmm0 ; 128-bit wide registers + 0000083A 0F 57 C9 C xorps xmm1, xmm1 + 0000083D 8B 47 24 C mov eax, [edi].intFadeOutEnd + 00000840 F2/ 0F 2A C0 C cvtsi2sd xmm0, eax + 00000844 8B 45 FC C mov eax, dtNow + 00000847 F2/ 0F 2A C8 C cvtsi2sd xmm1, eax + 0000084B F2/ 0F 5C C1 C subsd xmm0, xmm1 + 0000084F 8B 47 20 C mov eax, [edi].intFadeOutTime + 00000852 F2/ 0F 2A C8 C cvtsi2sd xmm1, eax + 00000856 F2/ 0F 5E C1 C divsd xmm0, xmm1 C - 00000852 B8 000000FF C mov eax, 255d - 00000857 F2/ 0F 2A C8 C cvtsi2sd xmm1, eax + 0000085A B8 000000FF C mov eax, 255d + 0000085F F2/ 0F 2A C8 C cvtsi2sd xmm1, eax C ;movsd xmm1, mmword ptr[255] - 0000085B F2/ 0F 59 C1 C mulsd xmm0, xmm1 - 0000085F F2/ 0F 2C C0 C cvttsd2si eax, xmm0 + 00000863 F2/ 0F 59 C1 C mulsd xmm0, xmm1 + 00000867 F2/ 0F 2C C0 C cvttsd2si eax, xmm0 C - 00000863 88 47 2A C mov [edi].blend.SourceConstantAlpha, al ; BYTE PTR [eax] - 00000866 8D 47 28 C lea eax, [edi].blend + 0000086B 88 47 2A C mov [edi].blend.SourceConstantAlpha, al ; BYTE PTR [eax] + 0000086E 8D 47 28 C lea eax, [edi].blend C invoke UpdateLayeredWindow, hWindow, hdcScreen, NULL, NULL, NULL, NULL, 000000000h, eax, ULW_ALPHA - 00000881 B8 00000000 C mov eax, 0 ; Return false (we are still fading out the window) + 00000889 B8 00000000 C mov eax, 0 ; Return false (we are still fading out the window) C .ENDIF C C assume edi:nothing C ret - 0000088B C CSplashScreen_FadeWindowOut ENDP + 00000893 C CSplashScreen_FadeWindowOut ENDP CSplashScreen.asm(677) : warning A6004:procedure argument or local not referenced : cte CSplashScreen.asm(677) : warning A6004:procedure argument or local not referenced : result C @@ -72173,7 +72169,7 @@ CSplashScreen.asm(677) : warning A6004:procedure argument or local not reference C C C - 0000088B C CenterWindow proc hWindow:DWORD + 00000893 C CenterWindow proc hWindow:DWORD C LOCAL DlgHeight:DWORD C LOCAL DlgWidth:DWORD C LOCAL DlgRect:RECT @@ -72181,57 +72177,57 @@ CSplashScreen.asm(677) : warning A6004:procedure argument or local not reference C C invoke GetWindowRect,hWindow,addr DlgRect C invoke GetDesktopWindow - 000008A2 8B C8 C mov ecx,eax + 000008AA 8B C8 C mov ecx,eax C invoke GetWindowRect,ecx,addr DesktopRect - 000008AE 6A 00 C push 0 - 000008B0 8B 45 F4 C mov eax,DlgRect.bottom - 000008B3 2B 45 EC C sub eax,DlgRect.top - 000008B6 89 45 FC C mov DlgHeight,eax - 000008B9 50 C push eax - 000008BA 8B 45 F0 C mov eax,DlgRect.right - 000008BD 2B 45 E8 C sub eax,DlgRect.left - 000008C0 89 45 F8 C mov DlgWidth,eax - 000008C3 50 C push eax - 000008C4 8B 45 E4 C mov eax,DesktopRect.bottom - 000008C7 2B 45 FC C sub eax,DlgHeight - 000008CA D1 E8 C shr eax,1 - 000008CC 50 C push eax - 000008CD 8B 45 E0 C mov eax,DesktopRect.right - 000008D0 2B 45 F8 C sub eax,DlgWidth - 000008D3 D1 E8 C shr eax,1 - 000008D5 50 C push eax - 000008D6 FF 75 08 C push hWindow - 000008D9 E8 00000000 E C call MoveWindow + 000008B6 6A 00 C push 0 + 000008B8 8B 45 F4 C mov eax,DlgRect.bottom + 000008BB 2B 45 EC C sub eax,DlgRect.top + 000008BE 89 45 FC C mov DlgHeight,eax + 000008C1 50 C push eax + 000008C2 8B 45 F0 C mov eax,DlgRect.right + 000008C5 2B 45 E8 C sub eax,DlgRect.left + 000008C8 89 45 F8 C mov DlgWidth,eax + 000008CB 50 C push eax + 000008CC 8B 45 E4 C mov eax,DesktopRect.bottom + 000008CF 2B 45 FC C sub eax,DlgHeight + 000008D2 D1 E8 C shr eax,1 + 000008D4 50 C push eax + 000008D5 8B 45 E0 C mov eax,DesktopRect.right + 000008D8 2B 45 F8 C sub eax,DlgWidth + 000008DB D1 E8 C shr eax,1 + 000008DD 50 C push eax + 000008DE FF 75 08 C push hWindow + 000008E1 E8 00000000 E C call MoveWindow C ret - 000008E2 C CenterWindow endp + 000008EA C CenterWindow endp C C - 000008E2 C WindowProc PROC ;, hwnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM ; must be naked + 000008EA C WindowProc PROC ;, hwnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM ; must be naked = DWORD PTR [esp + 8] C uMsg textequ < DWORD PTR [esp + 8] > - 000008E2 83 7C 24 08 02 C cmp uMsg, WM_DESTROY - 000008E7 74 0D C je OnDestroy - 000008E9 83 7C 24 08 0F C cmp uMsg, WM_PAINT - 000008EE 74 10 C je OnPaint - 000008F0 E9 00000000 E C jmp DefWindowProc - 000008F5 CC C int 3 + 000008EA 83 7C 24 08 02 C cmp uMsg, WM_DESTROY + 000008EF 74 0D C je OnDestroy + 000008F1 83 7C 24 08 0F C cmp uMsg, WM_PAINT + 000008F6 74 10 C je OnPaint + 000008F8 E9 00000000 E C jmp DefWindowProc + 000008FD CC C int 3 C - 000008F6 C WindowProc ENDP + 000008FE C WindowProc ENDP C - 000008F6 C OnDestroy PROC ;, hwnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM + 000008FE C OnDestroy PROC ;, hwnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM C invoke PostQuitMessage, 0 - 000008FD 33 C0 C xor eax, eax - 000008FF C3 C ret - 00000900 C OnDestroy ENDP + 00000905 33 C0 C xor eax, eax + 00000907 C3 C ret + 00000908 C OnDestroy ENDP C - 00000900 C OnPaint PROC ;, hwnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM + 00000908 C OnPaint PROC ;, hwnd:HWND, uMsg:UINT, wParam:WPARAM, lParam:LPARAM C ;local ps:PAINTSTRUCT C ;invoke BeginPaint, hwnd, addr ps C ;invoke FillRect, ps.hdc, addr ps.rcPaint, COLOR_WINDOW + 1 C ;invoke EndPaint, hwnd, addr ps C - 00000900 33 C0 C xor eax, eax - 00000902 C3 C ret - 00000903 C OnPaint ENDP + 00000908 33 C0 C xor eax, eax + 0000090A C3 C ret + 0000090B C OnPaint ENDP C C C @@ -72259,9 +72255,8 @@ CSplashScreen.asm(677) : warning A6004:procedure argument or local not reference = 0000FFFF MEMSIZE equ 65535 0000010C .data - ;UCSTR fileName, "C:\Users\Arthurit\Documents\Visual Studio 2017\Projects\SplashScreen\MASM x86\Debug\settings.txt",0 - UCSTR fileName, "settings.txt",0 - 0000010C 0000000D [ 1 ucstr_lbl WORD ucstr_size dup (?) + UCSTR fileName, "settings.splash",0 + 0000010C 00000010 [ 1 ucstr_lbl WORD ucstr_size dup (?) 0000 ] 0000010C 0073 3 ucstr_char @@ -72273,11 +72268,14 @@ CSplashScreen.asm(677) : warning A6004:procedure argument or local not reference 00000118 0067 3 ucstr_char 0000011A 0073 3 ucstr_char 0000011C 002E 3 ucstr_char - 0000011E 0074 3 ucstr_char - 00000120 0078 3 ucstr_char - 00000122 0074 3 ucstr_char - 00000124 0000 2 dw 0 - 00000126 41 6E 20 75 6E ErrorSettings BYTE "An unexpected error ocurred while reading 'settings.txt'.", 13, 10, "Please make sure the file and format are correct.", 0 + 0000011E 0073 3 ucstr_char + 00000120 0070 3 ucstr_char + 00000122 006C 3 ucstr_char + 00000124 0061 3 ucstr_char + 00000126 0073 3 ucstr_char + 00000128 0068 3 ucstr_char + 0000012A 0000 2 dw 0 + 0000012C 41 6E 20 75 6E ErrorSettings BYTE "An unexpected error ocurred while reading 'settings.splash'.", 13, 10, "Please make sure the file and format are correct.", 0 65 78 70 65 63 74 65 64 20 65 72 72 @@ -72289,22 +72287,23 @@ CSplashScreen.asm(677) : warning A6004:procedure argument or local not reference 64 69 6E 67 20 27 73 65 74 74 69 6E - 67 73 2E 74 - 78 74 27 2E - 0D 0A 50 6C - 65 61 73 65 - 20 6D 61 6B - 65 20 73 75 - 72 65 20 74 - 68 65 20 66 - 69 6C 65 20 - 61 6E 64 20 - 66 6F 72 6D - 61 74 20 61 - 72 65 20 63 - 6F 72 72 65 - 63 74 2E 00 - 00000193 43 6F 75 6C 64 ErrorApp BYTE "Could not find the file in the following path:", 13, 10, 0 + 67 73 2E 73 + 70 6C 61 73 + 68 27 2E 0D + 0A 50 6C 65 + 61 73 65 20 + 6D 61 6B 65 + 20 73 75 72 + 65 20 74 68 + 65 20 66 69 + 6C 65 20 61 + 6E 64 20 66 + 6F 72 6D 61 + 74 20 61 72 + 65 20 63 6F + 72 72 65 63 + 74 2E 00 + 0000019C 43 6F 75 6C 64 ErrorApp BYTE "Could not find the file in the following path:", 13, 10, 0 20 6E 6F 74 20 66 69 6E 64 20 74 68 @@ -72317,150 +72316,150 @@ CSplashScreen.asm(677) : warning A6004:procedure argument or local not reference 70 61 74 68 3A 0D 0A 00 - 000001C4 00000000 file DWORD NULL - 000001C8 00000000 splash DWORD NULL - 000001CC 00000000 nFadeoutTime DWORD NULL - 000001D0 00000000 lpModuleName LPCSTR NULL - 000001D4 00000000 lpszImagePath LPCTSTR NULL - 000001D8 00000000 lpszPrefix LPCTSTR NULL - 000001DC 00000000 lpszAppFileName LPCTSTR NULL + 000001CD 00000000 file DWORD NULL + 000001D1 00000000 splash DWORD NULL + 000001D5 00000000 nFadeoutTime DWORD NULL + 000001D9 00000000 lpModuleName LPCSTR NULL + 000001DD 00000000 lpszImagePath LPCTSTR NULL + 000001E1 00000000 lpszPrefix LPCTSTR NULL + 000001E5 00000000 lpszAppFileName LPCTSTR NULL 00000004 .data? - 00000903 .code + 0000090B .code - 00000903 main proc + 0000090B main proc ; Get the current handle invoke GetModuleHandle,NULL - 0000090A A3 000001D0 R mov lpModuleName, eax + 00000912 A3 000001D9 R mov lpModuleName, eax .IF (eax==NULL) - 00000913 E9 00000178 jmp exit_main + 0000091B E9 00000177 jmp exit_main .ENDIF - ; If settings.txt doesn't exist, then exit the program + ; If settings.splash doesn't exist, then exit the program invoke GetFileAttributes, OFFSET fileName .IF ( eax == INVALID_FILE_ATTRIBUTES or FILE_ATTRIBUTE_DIRECTORY ) ; 0FFFFFFFF invoke MessageBoxA, NULL, OFFSET ErrorSettings, NULL, MB_ICONERROR ; https://stackoverflow.com/questions/46439802/multiple-lines-of-output-in-a-message-box-assembly-language - 00000937 0F 84 00000153 je exit_main + 0000093F E9 00000153 jmp exit_main .ENDIF ; Create CFile instance - 0000093D B8 0000002A mov eax, SIZEOF CFile + 00000944 B8 0000002A mov eax, SIZEOF CFile invoke GetProcessHeap invoke HeapAlloc, eax, NULL, SIZEOF CFile - 00000951 A3 000001C4 R mov file, eax - 00000956 50 push eax - 00000957 E8 FFFFF6A4 call CFile_Init + 00000958 A3 000001CD R mov file, eax + 0000095D 50 push eax + 0000095E E8 FFFFF69D call CFile_Init ;invoke CFile_Init, eax - 0000095C 8D 64 24 FC lea esp, [esp-4] - 00000960 C7 04 24 mov [esp], OFFSET fileName + 00000963 8D 64 24 FC lea esp, [esp-4] + 00000967 C7 04 24 mov [esp], OFFSET fileName 0000010C R - 00000967 8D 64 24 FC lea esp, [esp-4] - 0000096B A1 000001C4 R mov eax, file - 00000970 89 04 24 mov [esp], eax - 00000973 FF 50 04 call (CFile PTR [eax]).OpenFile + 0000096E 8D 64 24 FC lea esp, [esp-4] + 00000972 A1 000001CD R mov eax, file + 00000977 89 04 24 mov [esp], eax + 0000097A FF 50 04 call (CFile PTR [eax]).OpenFile ;invoke (CFile PTR [eax]).OpenFile, eax ;lea esp, [esp+4] - 00000976 A1 000001C4 R mov eax, file + 0000097D A1 000001CD R mov eax, file ;invoke MessageBox, NULL, (CFile PTR [eax]).ptrHeapText, NULL, MB_OK - 0000097B 8D 64 24 FC lea esp, [esp-4] - 0000097F A1 000001C4 R mov eax, file - 00000984 89 04 24 mov [esp], eax - 00000987 FF 50 10 call (CFile PTR [eax]).ConvertToLine + 00000982 8D 64 24 FC lea esp, [esp-4] + 00000986 A1 000001CD R mov eax, file + 0000098B 89 04 24 mov [esp], eax + 0000098E FF 50 10 call (CFile PTR [eax]).ConvertToLine ;invoke (CFile PTR [eax]).OpenFile, eax ;lea esp, [esp+4] ; Read the first line: the image path - 0000098A 8D 64 24 FC lea esp, [esp-4] - 0000098E A1 000001C4 R mov eax, file - 00000993 89 04 24 mov [esp], eax - 00000996 FF 50 14 call (CFile PTR [eax]).GetLine + 00000991 8D 64 24 FC lea esp, [esp-4] + 00000995 A1 000001CD R mov eax, file + 0000099A 89 04 24 mov [esp], eax + 0000099D FF 50 14 call (CFile PTR [eax]).GetLine ;invoke (CFile PTR [eax]).OpenFile, eax ;lea esp, [esp+4] .IF eax!=0 ;invoke MessageBox, NULL, eax, NULL, MB_OK - 0000099D A3 000001D4 R mov lpszImagePath, eax + 000009A4 A3 000001DD R mov lpszImagePath, eax ;jmp salto .ENDIF ; Read the second line: the application path - 000009A2 8D 64 24 FC lea esp, [esp-4] - 000009A6 A1 000001C4 R mov eax, file - 000009AB 89 04 24 mov [esp], eax - 000009AE FF 50 14 call (CFile PTR [eax]).GetLine + 000009A9 8D 64 24 FC lea esp, [esp-4] + 000009AD A1 000001CD R mov eax, file + 000009B2 89 04 24 mov [esp], eax + 000009B5 FF 50 14 call (CFile PTR [eax]).GetLine .IF eax!=0 - 000009B5 A3 000001DC R mov lpszAppFileName, eax + 000009BC A3 000001E5 R mov lpszAppFileName, eax .ENDIF ; Read the third line: the fadeout milliseconds - 000009BA 8D 64 24 FC lea esp, [esp-4] - 000009BE A1 000001C4 R mov eax, file - 000009C3 89 04 24 mov [esp], eax - 000009C6 FF 50 14 call (CFile PTR [eax]).GetLine + 000009C1 8D 64 24 FC lea esp, [esp-4] + 000009C5 A1 000001CD R mov eax, file + 000009CA 89 04 24 mov [esp], eax + 000009CD FF 50 14 call (CFile PTR [eax]).GetLine .IF (eax != 0) - 000009CD A3 000001CC R mov nFadeoutTime, eax - 000009D2 FF 35 000001CC R push nFadeoutTime - 000009D8 E8 000000BA call StringToInt - 000009DD A3 000001CC R mov nFadeoutTime, eax + 000009D4 A3 000001D5 R mov nFadeoutTime, eax + 000009D9 FF 35 000001D5 R push nFadeoutTime + 000009DF E8 000000BA call StringToInt + 000009E4 A3 000001D5 R mov nFadeoutTime, eax .ENDIF ; If the application doesn't exist, then exit the program invoke GetFileAttributes, lpszAppFileName .IF ( eax == INVALID_FILE_ATTRIBUTES or FILE_ATTRIBUTE_DIRECTORY ) ; 0FFFFFFFF invoke MessageBoxA, NULL, OFFSET ErrorApp, NULL, MB_ICONERROR - 00000A02 74 40 je exit_main_deallocate + 00000A09 EB 40 jmp exit_main_deallocate .ENDIF ;invoke GetFileAttributes, lpszImagePath ;invoke GetFileAttributes, lpszAppFileName ; Create CSplashScreen instance - 00000A04 B8 0000002C mov eax, SIZEOF CSplashScreen + 00000A0B B8 0000002C mov eax, SIZEOF CSplashScreen invoke GetProcessHeap invoke HeapAlloc, eax, NULL, SIZEOF CSplashScreen - 00000A18 A3 000001C8 R mov splash, eax - 00000A1D FF 35 000001CC R push nFadeoutTime - 00000A23 FF 35 000001DC R push lpszAppFileName - 00000A29 FF 35 000001D4 R push lpszImagePath - 00000A2F FF 35 000001D0 R push lpModuleName - 00000A35 50 push eax - 00000A36 E8 FFFFF7A3 call CSplashScreen_Init + 00000A1F A3 000001D1 R mov splash, eax + 00000A24 FF 35 000001D5 R push nFadeoutTime + 00000A2A FF 35 000001E5 R push lpszAppFileName + 00000A30 FF 35 000001DD R push lpszImagePath + 00000A36 FF 35 000001D9 R push lpModuleName + 00000A3C 50 push eax + 00000A3D E8 FFFFF7A4 call CSplashScreen_Init - 00000A3B FF 35 000001C8 R push splash - 00000A41 FF 50 04 call (CSplashScreen PTR [eax]).Show + 00000A42 FF 35 000001D1 R push splash + 00000A48 FF 50 04 call (CSplashScreen PTR [eax]).Show - 00000A44 exit_main_deallocate: + 00000A4B exit_main_deallocate: ; Destroy CFile instance from heap - 00000A44 83 3D 000001C4 R cmp file, NULL + 00000A4B 83 3D 000001CD R cmp file, NULL 00 - 00000A4B 74 43 je exit_main - 00000A4D A1 000001C4 R mov eax, file - 00000A52 50 push eax - 00000A53 FF 10 call DWORD PTR [eax] - 00000A55 50 push eax + 00000A52 74 43 je exit_main + 00000A54 A1 000001CD R mov eax, file + 00000A59 50 push eax + 00000A5A FF 10 call DWORD PTR [eax] + 00000A5C 50 push eax invoke GetProcessHeap invoke HeapFree, eax, NULL, file - 00000A69 58 pop eax + 00000A70 58 pop eax ; Destroy CSplash instance from heap - 00000A6A 83 3D 000001C8 R cmp splash, NULL + 00000A71 83 3D 000001D1 R cmp splash, NULL 00 - 00000A71 74 1D je exit_main - 00000A73 A1 000001C8 R mov eax, splash - 00000A78 50 push eax - 00000A79 FF 10 call DWORD PTR [eax] - 00000A7B 50 push eax + 00000A78 74 1D je exit_main + 00000A7A A1 000001D1 R mov eax, splash + 00000A7F 50 push eax + 00000A80 FF 10 call DWORD PTR [eax] + 00000A82 50 push eax invoke GetProcessHeap invoke HeapFree, eax, NULL, splash - 00000A8F 58 pop eax + 00000A96 58 pop eax - 00000A90 exit_main: + 00000A97 exit_main: - invoke ExitProcess,0 + invoke ExitProcess, 0 - 00000A97 main endp + 00000A9E main endp @@ -72473,45 +72472,45 @@ CSplashScreen.asm(677) : warning A6004:procedure argument or local not reference ; Registers changed: eax, ebx, ecx, esi ; https://stackoverflow.com/questions/13664778/converting-string-to-integer-in-masm-esi-difficulty ;************************************************* - 00000A97 StringToInt PROC uses ebx ecx esi lpString:DWORD - 00000A9D 33 C0 xor eax, eax ; Total counter - 00000A9F 33 DB xor ebx, ebx ; Char pointer - 00000AA1 B9 0000000A mov ecx, 10d ; Decimal factor multiplier + 00000A9E StringToInt PROC uses ebx ecx esi lpString:DWORD + 00000AA4 33 C0 xor eax, eax ; Total counter + 00000AA6 33 DB xor ebx, ebx ; Char pointer + 00000AA8 B9 0000000A mov ecx, 10d ; Decimal factor multiplier ;xor esi, esi - 00000AA6 8B 75 08 mov esi, DWORD PTR [lpString] ; Point at the beginning of the string + 00000AAD 8B 75 08 mov esi, DWORD PTR [lpString] ; Point at the beginning of the string ; Loop through each char in string - 00000AA9 loopString: + 00000AB0 loopString: ; Check whether we reached the end of the string - 00000AA9 66| 83 3E 00 cmp WORD PTR [esi], 0000h - 00000AAD 74 23 je exit_StringToInt + 00000AB0 66| 83 3E 00 cmp WORD PTR [esi], 0000h + 00000AB4 74 23 je exit_StringToInt ; Multiply the accumulated quantity by 10 - 00000AAF F7 E1 mul ecx + 00000AB6 F7 E1 mul ecx ; Subtract 48 from ASCII value (number 0) of current char to get integer - 00000AB1 66| 8B 1E mov bx, WORD PTR [esi] - 00000AB4 66| 83 EB 30 sub bx, 0048d + 00000AB8 66| 8B 1E mov bx, WORD PTR [esi] + 00000ABB 66| 83 EB 30 sub bx, 0048d ; Error checking to ensure values are digits 0-9 - 00000AB8 66| 83 FB 00 cmp bx, 0 - 00000ABC 7C 0F jl invalidInput - 00000ABE 66| 83 FB 09 cmp bx, 9 - 00000AC2 7F 09 jg invalidInput + 00000ABF 66| 83 FB 00 cmp bx, 0 + 00000AC3 7C 0F jl invalidInput + 00000AC5 66| 83 FB 09 cmp bx, 9 + 00000AC9 7F 09 jg invalidInput ; If it's a digit, add to the total and go on with the loop - 00000AC4 03 C3 add eax, ebx ; Add to total counter - 00000AC6 83 C6 02 add esi, 2 ; Point to next char (2 bytes per char) - 00000AC9 EB DE jmp loopString + 00000ACB 03 C3 add eax, ebx ; Add to total counter + 00000ACD 83 C6 02 add esi, 2 ; Point to next char (2 bytes per char) + 00000AD0 EB DE jmp loopString - 00000ACB EB 05 jmp exit_StringToInt + 00000AD2 EB 05 jmp exit_StringToInt - 00000ACD invalidInput: ; Reset registers and variables to 0 - 00000ACD B8 00000000 mov eax, 0 + 00000AD4 invalidInput: ; Reset registers and variables to 0 + 00000AD4 B8 00000000 mov eax, 0 - 00000AD2 exit_StringToInt: + 00000AD9 exit_StringToInt: ret - 00000AD9 StringToInt ENDP + 00000AE0 StringToInt ENDP end main @@ -72543,7 +72542,7 @@ CSplashScreen.asm(677) : warning A6004:procedure argument or local not reference ; Dynamic string allocation http://www.asmcommunity.net/forums/topic/?id=13531 ; C++ strings https://stackoverflow.com/questions/19697296/what-is-stdwifstreamgetline-doing-to-my-wchar-t-array-its-treated-like-a-b - Microsoft (R) Macro Assembler Version 14.29.30136.0 10/19/21 14:15:41 + Microsoft (R) Macro Assembler Version 14.31.31104.0 02/26/22 12:20:53 Main.asm Symbols 2 - 1 @@ -83038,8 +83037,8 @@ CONST . . . . . . . . . . . . . 32 Bit 00000000 Para Public 'CONST' ReadOn FLAT . . . . . . . . . . . . . . GROUP STACK . . . . . . . . . . . . . 32 Bit 00001000 Para Stack 'STACK' _BSS . . . . . . . . . . . . . . 32 Bit 00000004 Para Public 'BSS' -_DATA . . . . . . . . . . . . . 32 Bit 000001E0 Para Public 'DATA' -_TEXT . . . . . . . . . . . . . 32 Bit 00000AD9 Para Public 'CODE' +_DATA . . . . . . . . . . . . . 32 Bit 000001E9 Para Public 'DATA' +_TEXT . . . . . . . . . . . . . 32 Bit 00000AE0 Para Public 'CODE' Procedures, parameters, and locals: @@ -83125,24 +83124,26 @@ BuildCommDCBAndTimeoutsA . . . . P Near 00000000 FLAT Length= 00000000 External BuildCommDCBAndTimeoutsW . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL BuildCommDCBA . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL BuildCommDCBW . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL -CFile_CloseFile . . . . . . . . P Near 0000014E _TEXT Length= 0000000A Public STDCALL +CFile_CloseFile . . . . . . . . P Near 00000156 _TEXT Length= 0000000A Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 -CFile_ConvertToLine . . . . . . P Near 00000158 _TEXT Length= 0000002B Public STDCALL +CFile_ConvertToLine . . . . . . P Near 00000160 _TEXT Length= 0000002B Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 - loop_ConvertToLine . . . . . . L Near 00000168 _TEXT + loop_ConvertToLine . . . . . . L Near 00000170 _TEXT CFile_Destructor . . . . . . . . P Near 0000002D _TEXT Length= 0000002C Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 -CFile_Dispose . . . . . . . . . P Near 0000012D _TEXT Length= 00000021 Public STDCALL +CFile_Dispose . . . . . . . . . P Near 0000012D _TEXT Length= 00000029 Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 -CFile_GetLine . . . . . . . . . P Near 00000183 _TEXT Length= 0000005B Public STDCALL +CFile_GetLine . . . . . . . . . P Near 0000018B _TEXT Length= 0000005B Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 - iterate . . . . . . . . . . . L Near 000001A9 _TEXT - exit_GetLine . . . . . . . . . L Near 000001C7 _TEXT + iterate . . . . . . . . . . . L Near 000001B1 _TEXT + exit_GetLine . . . . . . . . . L Near 000001CF _TEXT CFile_Init . . . . . . . . . . . P Near 00000000 _TEXT Length= 0000002D Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 CFile_OpenFile . . . . . . . . . P Near 00000059 _TEXT Length= 000000D4 Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 lpszFileName . . . . . . . . . DWord bp + 0000000C + hHeap . . . . . . . . . . . . DWord bp - 00000004 + lpMem . . . . . . . . . . . . DWord bp - 00000008 CLIPFORMAT_UserFree . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL CLIPFORMAT_UserMarshal . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL CLIPFORMAT_UserSize . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL @@ -83150,7 +83151,7 @@ CLIPFORMAT_UserUnmarshal . . . . P Near 00000000 FLAT Length= 00000000 External CLSIDFromProgIDEx . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL CLSIDFromProgID . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL CLSIDFromString . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL -CSplashScreen_CreateBitmapImage P Near 00000368 _TEXT Length= 0000011A Public STDCALL +CSplashScreen_CreateBitmapImage P Near 00000370 _TEXT Length= 0000011A Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 hBitmap . . . . . . . . . . . DWord bp - 00000004 image . . . . . . . . . . . . bp - 0000001C @@ -83158,32 +83159,32 @@ CSplashScreen_CreateBitmapImage P Near 00000368 _TEXT Length= 0000011A Public GpGraphics . . . . . . . . . . DWord bp - 00000024 GpSolidFill . . . . . . . . . DWord bp - 00000028 lpImage . . . . . . . . . . . DWord bp - 0000002C - exit_DefaultBitmap . . . . . . L Near 000003F8 _TEXT - exit_CreateBitmapImage . . . . L Near 00000470 _TEXT -CSplashScreen_CreateSplashWindow . P Near 000004D7 _TEXT Length= 00000033 Public STDCALL + exit_DefaultBitmap . . . . . . L Near 00000400 _TEXT + exit_CreateBitmapImage . . . . L Near 00000478 _TEXT +CSplashScreen_CreateSplashWindow . P Near 000004DF _TEXT Length= 00000033 Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 -CSplashScreen_Destructor . . . . P Near 00000238 _TEXT Length= 0000000C Public STDCALL +CSplashScreen_Destructor . . . . P Near 00000240 _TEXT Length= 0000000C Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 -CSplashScreen_FadeWindowOut . . P Near 00000811 _TEXT Length= 0000007A Public STDCALL +CSplashScreen_FadeWindowOut . . P Near 00000819 _TEXT Length= 0000007A Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 hWindow . . . . . . . . . . . DWord bp + 0000000C hdcScreen . . . . . . . . . . DWord bp + 00000010 dtNow . . . . . . . . . . . . DWord bp - 00000004 cte . . . . . . . . . . . . . DWord bp - 00000008 result . . . . . . . . . . . . DWord bp - 0000000C -CSplashScreen_Init . . . . . . . P Near 000001DE _TEXT Length= 0000005A Public STDCALL +CSplashScreen_Init . . . . . . . P Near 000001E6 _TEXT Length= 0000005A Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 hInstance . . . . . . . . . . DWord bp + 0000000C strImage . . . . . . . . . . . DWord bp + 00000010 strApp . . . . . . . . . . . . DWord bp + 00000014 intFadeOutTime . . . . . . . . DWord bp + 00000018 -CSplashScreen_LaunchApplication P Near 0000061D _TEXT Length= 000000C0 Public STDCALL +CSplashScreen_LaunchApplication P Near 00000625 _TEXT Length= 000000C0 Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 szCurrentFolder . . . . . . . Word bp - 00000208 szApplicationPath . . . . . . Word bp - 00000410 startupinfo . . . . . . . . . 00000044 bp - 00000454 processinfo . . . . . . . . . XmmWord bp - 00000464 -CSplashScreen_PumpMsgWaitForMultipleObjects P Near 000006DD _TEXT Length= 00000134 Public STDCALL +CSplashScreen_PumpMsgWaitForMultipleObjects P Near 000006E5 _TEXT Length= 00000134 Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 hwndSplash . . . . . . . . . . DWord bp + 0000000C nCount . . . . . . . . . . . . DWord bp + 00000010 @@ -83195,16 +83196,16 @@ CSplashScreen_PumpMsgWaitForMultipleObjects P Near 000006DD _TEXT Length= 000 dwTimeOut . . . . . . . . . . DWord bp - 0000000C dwWaitResult . . . . . . . . . DWord bp - 00000010 msg . . . . . . . . . . . . . bp - 0000002C - Wait_Loop . . . . . . . . . . L Near 000006EF _TEXT - While_Peek_Start . . . . . . . L Near 00000747 _TEXT - While_Peek_Condition . . . . . L Near 0000076C _TEXT - FadeWindow_Start . . . . . . . L Near 000007BD _TEXT - FadeWindow_Condition . . . . . L Near 000007F0 _TEXT - exit_PumpMsgWaitForMultipleObjects . L Near 0000080C _TEXT -CSplashScreen_RegisterWindowClass P Near 00000482 _TEXT Length= 0000003C Public STDCALL + Wait_Loop . . . . . . . . . . L Near 000006F7 _TEXT + While_Peek_Start . . . . . . . L Near 0000074F _TEXT + While_Peek_Condition . . . . . L Near 00000774 _TEXT + FadeWindow_Start . . . . . . . L Near 000007C5 _TEXT + FadeWindow_Condition . . . . . L Near 000007F8 _TEXT + exit_PumpMsgWaitForMultipleObjects . L Near 00000814 _TEXT +CSplashScreen_RegisterWindowClass P Near 0000048A _TEXT Length= 0000003C Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 wc . . . . . . . . . . . . . . bp - 00000028 -CSplashScreen_SetSplashImage . . P Near 0000050A _TEXT Length= 00000113 Public STDCALL +CSplashScreen_SetSplashImage . . P Near 00000512 _TEXT Length= 00000113 Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 hwndSplash . . . . . . . . . . DWord bp + 0000000C hbmpSplash . . . . . . . . . . DWord bp + 00000010 @@ -83217,7 +83218,7 @@ CSplashScreen_SetSplashImage . . P Near 0000050A _TEXT Length= 00000113 Public hdcScreen . . . . . . . . . . DWord bp - 00000060 hdcMem . . . . . . . . . . . . DWord bp - 00000064 hbmpOld . . . . . . . . . . . DWord bp - 00000068 -CSplashScreen_Show . . . . . . . P Near 00000244 _TEXT Length= 00000124 Public STDCALL +CSplashScreen_Show . . . . . . . P Near 0000024C _TEXT Length= 00000124 Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 hCloseSplashEvent . . . . . . DWord bp - 00000004 hCloseSplashWithoutFadeEvent . DWord bp - 00000008 @@ -83225,8 +83226,8 @@ CSplashScreen_Show . . . . . . . P Near 00000244 _TEXT Length= 00000124 Public aHandles . . . . . . . . . . . DWord bp - 00000018 hSplashWnd . . . . . . . . . . DWord bp - 0000001C hdcScreen . . . . . . . . . . DWord bp - 00000020 - exit_Show . . . . . . . . . . L Near 00000326 _TEXT -CSplashScreen_UnregisterWindowClass P Near 000004BE _TEXT Length= 00000019 Public STDCALL + exit_Show . . . . . . . . . . L Near 0000032E _TEXT +CSplashScreen_UnregisterWindowClass P Near 000004C6 _TEXT Length= 00000019 Public STDCALL lpTHIS . . . . . . . . . . . . DWord bp + 00000008 CallMsgFilterA . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL CallMsgFilterW . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL @@ -83242,7 +83243,7 @@ CancelTimerQueueTimer . . . . . P Near 00000000 FLAT Length= 00000000 External CancelWaitableTimer . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL CascadeChildWindows . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL CascadeWindows . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL -CenterWindow . . . . . . . . . . P Near 0000088B _TEXT Length= 00000057 Public STDCALL +CenterWindow . . . . . . . . . . P Near 00000893 _TEXT Length= 00000057 Public STDCALL hWindow . . . . . . . . . . . DWord bp + 00000008 DlgHeight . . . . . . . . . . DWord bp - 00000004 DlgWidth . . . . . . . . . . . DWord bp - 00000008 @@ -85356,8 +85357,8 @@ OleSetContainedObject . . . . . P Near 00000000 FLAT Length= 00000000 External OleSetMenuDescriptor . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL OleTranslateAccelerator . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL OleUninitialize . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL -OnDestroy . . . . . . . . . . . P Near 000008F6 _TEXT Length= 0000000A Public STDCALL -OnPaint . . . . . . . . . . . . P Near 00000900 _TEXT Length= 00000003 Public STDCALL +OnDestroy . . . . . . . . . . . P Near 000008FE _TEXT Length= 0000000A Public STDCALL +OnPaint . . . . . . . . . . . . P Near 00000908 _TEXT Length= 00000003 Public STDCALL OpenClipboard . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL OpenDesktopA . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL OpenDesktopW . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL @@ -86095,11 +86096,11 @@ StretchDIBits . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External StringFromCLSID . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL StringFromGUID2 . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL StringFromIID . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL -StringToInt . . . . . . . . . . P Near 00000A97 _TEXT Length= 00000042 Public STDCALL +StringToInt . . . . . . . . . . P Near 00000A9E _TEXT Length= 00000042 Public STDCALL lpString . . . . . . . . . . . DWord bp + 00000008 - loopString . . . . . . . . . . L Near 00000AA9 _TEXT - invalidInput . . . . . . . . . L Near 00000ACD _TEXT - exit_StringToInt . . . . . . . L Near 00000AD2 _TEXT + loopString . . . . . . . . . . L Near 00000AB0 _TEXT + invalidInput . . . . . . . . . L Near 00000AD4 _TEXT + exit_StringToInt . . . . . . . L Near 00000AD9 _TEXT StripLF . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL StripRangeI . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL StripRangeX . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL @@ -86253,7 +86254,7 @@ WinHelpA . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External WinHelpW . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL WindowFromDC . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL WindowFromPoint . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL -WindowProc . . . . . . . . . . . P Near 000008E2 _TEXT Length= 00000014 Public STDCALL +WindowProc . . . . . . . . . . . P Near 000008EA _TEXT Length= 00000014 Public STDCALL WordCount . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL WriteClassStg . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL WriteClassStm . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL @@ -86341,7 +86342,6 @@ decomment . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External dissort . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL dsqsort . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL dssort . . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL -dw2ah . . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL dw2a . . . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL dw2bin_ex . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL dw2hex_ex . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL @@ -86383,9 +86383,9 @@ lstrlenA . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External lstrlenW . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL ltoa . . . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL ltok . . . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL -main . . . . . . . . . . . . . . P Near 00000903 _TEXT Length= 00000194 Public STDCALL - exit_main_deallocate . . . . . L Near 00000A44 _TEXT - exit_main . . . . . . . . . . L Near 00000A90 _TEXT +main . . . . . . . . . . . . . . P Near 0000090B _TEXT Length= 00000193 Public STDCALL + exit_main_deallocate . . . . . L Near 00000A4B _TEXT + exit_main . . . . . . . . . . L Near 00000A97 _TEXT memfill . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL mouse_event . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL nrQsortA . . . . . . . . . . . . P Near 00000000 FLAT Length= 00000000 External STDCALL @@ -96133,8 +96133,8 @@ EnumTimeFormats . . . . . . . . Text EnumTimeFormatsW EnumUILanguages . . . . . . . . Text EnumUILanguagesW EnumWindowStations . . . . . . . Text EnumWindowStationsW EnumerateLocalComputerNames . . Text EnumerateLocalComputerNamesW -ErrorApp . . . . . . . . . . . . Byte 00000193 _DATA -ErrorSettings . . . . . . . . . Byte 00000126 _DATA +ErrorApp . . . . . . . . . . . . Byte 0000019C _DATA +ErrorSettings . . . . . . . . . Byte 0000012C _DATA EudcLoadLink . . . . . . . . . . Text EudcLoadLinkW EudcUnloadLink . . . . . . . . . Text EudcUnloadLinkW ExceptionCollidedUnwind . . . . Number 00000003h @@ -124673,7 +124673,7 @@ endsel . . . . . . . . . . . . . Text endsw fMapiUnicode . . . . . . . . . . Number 00000000h fileName . . . . . . . . . . . . Word 0000010C _DATA fileSize2 . . . . . . . . . . . LARGE_INTEGER 0000002A _DATA -file . . . . . . . . . . . . . . DWord 000001C4 _DATA +file . . . . . . . . . . . . . . DWord 000001CD _DATA fnevCriticalError . . . . . . . Number 00000001h fnevExtended . . . . . . . . . . Number -80000000h fnevNewMail . . . . . . . . . . Number 00000002h @@ -124718,10 +124718,10 @@ istring . . . . . . . . . . . . Text find$ lDefaultTab . . . . . . . . . . Number 000002D0h lcase . . . . . . . . . . . . . Text szLower lnstr . . . . . . . . . . . . . Text szLen -lpModuleName . . . . . . . . . . DWord 000001D0 _DATA -lpszAppFileName . . . . . . . . DWord 000001DC _DATA -lpszImagePath . . . . . . . . . DWord 000001D4 _DATA -lpszPrefix . . . . . . . . . . . DWord 000001D8 _DATA +lpModuleName . . . . . . . . . . DWord 000001D9 _DATA +lpszAppFileName . . . . . . . . DWord 000001E5 _DATA +lpszImagePath . . . . . . . . . DWord 000001DD _DATA +lpszPrefix . . . . . . . . . . . DWord 000001E1 _DATA lst10 . . . . . . . . . . . . . Number 00000469h lst11 . . . . . . . . . . . . . Number 0000046Ah lst12 . . . . . . . . . . . . . Number 0000046Bh @@ -124752,7 +124752,7 @@ m_nSplashHeight . . . . . . . . Number 000001F4h m_nSplashWidth . . . . . . . . . Number 00000320h midstr . . . . . . . . . . . . . Text szMid mouse_eventC . . . . . . . . . . Number 00000002h -nFadeoutTime . . . . . . . . . . DWord 000001CC _DATA +nFadeoutTime . . . . . . . . . . DWord 000001D5 _DATA psh10 . . . . . . . . . . . . . Number 00000409h psh11 . . . . . . . . . . . . . Number 0000040Ah psh12 . . . . . . . . . . . . . Number 0000040Bh @@ -124801,7 +124801,7 @@ scr5 . . . . . . . . . . . . . . Number 00000494h scr6 . . . . . . . . . . . . . . Number 00000495h scr7 . . . . . . . . . . . . . . Number 00000496h scr8 . . . . . . . . . . . . . . Number 00000497h -splash . . . . . . . . . . . . . DWord 000001C8 _DATA +splash . . . . . . . . . . . . . DWord 000001D1 _DATA stc10 . . . . . . . . . . . . . Number 00000449h stc11 . . . . . . . . . . . . . Number 0000044Ah stc12 . . . . . . . . . . . . . Number 0000044Bh @@ -125270,14 +125270,14 @@ tagTVSORTCB . . . . . . . . . . Text _TV_SORTCB trim . . . . . . . . . . . . . . Text szTrim uMsg . . . . . . . . . . . . . . Text DWORD PTR [esp + 8] ucase . . . . . . . . . . . . . Text szUpper -ucstr_char . . . . . . . . . . . Text dw "t" +ucstr_char . . . . . . . . . . . Text dw "h" ucstr_flg . . . . . . . . . . . Number 00000003h ucstr_iarg . . . . . . . . . . . Number 00000005h ucstr_lbl_cntr . . . . . . . . . Number 00000000h ucstr_lbl . . . . . . . . . . . Text fileName ucstr_pos . . . . . . . . . . . Number 00000001h ucstr_quote . . . . . . . . . . Text " -ucstr_size . . . . . . . . . . . Number 0000000Dh +ucstr_size . . . . . . . . . . . Number 00000010h vLabel . . . . . . . . . . . . . Number 00001000h val . . . . . . . . . . . . . . Text uval wnsprintf . . . . . . . . . . . Text wnsprintfW diff --git a/Test - WinForms/Test - WinForms.csproj b/Test - WinForms/Test - WinForms.csproj index 1e2b41d..6f81231 100644 --- a/Test - WinForms/Test - WinForms.csproj +++ b/Test - WinForms/Test - WinForms.csproj @@ -1,4 +1,4 @@ - + WinExe