Created
October 28, 2018 22:18
-
-
Save AraHaan/92dd36aa4790991227102cee1c513146 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
TITLE main.asm | |
.686P | |
.XMM | |
include listing.inc | |
.model flat | |
INCLUDELIB LIBCMT | |
INCLUDELIB OLDNAMES | |
PUBLIC _memcpy | |
PUBLIC _memset | |
PUBLIC _wWinMain@16 | |
PUBLIC ?WndProc@@YGJPAUHWND__@@IIJ@Z | |
PUBLIC ?LoadPNG@@YAPAUHBITMAP__@@PAUHINSTANCE__@@PB_W1@Z | |
PUBLIC ?CreateHBITMAP@@YAPAUHBITMAP__@@PAUIWICBitmapSource@@@Z | |
PUBLIC ?LoadBitmapFromStream@@YAPAUIWICBitmapSource@@PAUIStream@@@Z | |
PUBLIC ?CreateStreamOnResource@@YAPAUIStream@@PAUHINSTANCE__@@PB_W1@Z | |
PUBLIC ?SetSplashImage@@YAXPAUHWND__@@PAUHBITMAP__@@@Z | |
PUBLIC _wWinMainCRTStartup | |
PUBLIC __GUID_9edde9e7_8dee_47ea_99df_e6faf2ed44bf | |
EXTRN __imp__GetCommandLineW@0:PROC | |
EXTRN __imp__ExitProcess@4:PROC | |
EXTRN __imp__GetStartupInfoW@4:PROC | |
EXTRN __imp__GetModuleHandleW@4:PROC | |
EXTRN __imp__LoadResource@8:PROC | |
EXTRN __imp__LoadStringW@16:PROC | |
EXTRN __imp__LockResource@4:PROC | |
EXTRN __imp__SizeofResource@8:PROC | |
EXTRN __imp__FindResourceW@12:PROC | |
EXTRN __imp__GlobalAlloc@8:PROC | |
EXTRN __imp__GlobalUnlock@4:PROC | |
EXTRN __imp__GlobalLock@4:PROC | |
EXTRN __imp__GlobalFree@4:PROC | |
EXTRN __imp__CreateCompatibleDC@4:PROC | |
EXTRN __imp__DeleteDC@4:PROC | |
EXTRN __imp__DeleteObject@4:PROC | |
EXTRN __imp__SelectObject@8:PROC | |
EXTRN __imp__CreateDIBSection@24:PROC | |
EXTRN __imp__GetObjectW@12:PROC | |
EXTRN __imp__GetMessageW@16:PROC | |
EXTRN __imp__TranslateMessage@4:PROC | |
EXTRN __imp__DispatchMessageW@4:PROC | |
EXTRN __imp__DefWindowProcW@16:PROC | |
EXTRN __imp__PostQuitMessage@4:PROC | |
EXTRN __imp__UnregisterClassW@8:PROC | |
EXTRN __imp__RegisterClassExW@4:PROC | |
EXTRN __imp__CreateWindowExW@48:PROC | |
EXTRN __imp__ShowWindow@8:PROC | |
EXTRN __imp__UpdateLayeredWindow@36:PROC | |
EXTRN __imp__SetWindowPos@28:PROC | |
EXTRN __imp__GetDC@4:PROC | |
EXTRN __imp__ReleaseDC@8:PROC | |
EXTRN __imp__GetWindowRect@8:PROC | |
EXTRN __imp__SetCursor@4:PROC | |
EXTRN __imp__LoadCursorW@8:PROC | |
EXTRN __imp__LoadIconW@8:PROC | |
EXTRN __imp__LoadImageW@24:PROC | |
EXTRN __imp__MonitorFromPoint@12:PROC | |
EXTRN __imp__GetMonitorInfoW@8:PROC | |
EXTRN __imp__CreateStreamOnHGlobal@12:PROC | |
EXTRN __imp__CoUninitialize@0:PROC | |
EXTRN __imp__CoCreateInstance@20:PROC | |
EXTRN __imp__CoInitialize@4:PROC | |
EXTRN _WICConvertBitmapSource@12:PROC | |
EXTRN _memset:PROC | |
EXTRN _CLSID_WICPngDecoder2:BYTE | |
EXTRN _GUID_WICPixelFormat32bppPBGRA:BYTE | |
CONST SEGMENT | |
__GUID_9edde9e7_8dee_47ea_99df_e6faf2ed44bf DD 09edde9e7H | |
DW 08deeH | |
DW 047eaH | |
DB 099H | |
DB 0dfH | |
DB 0e6H | |
DB 0faH | |
DB 0f2H | |
DB 0edH | |
DB 044H | |
DB 0bfH | |
CONST ENDS | |
_TEXT SEGMENT | |
_startup_info$ = -68 | |
_wWinMainCRTStartup PROC | |
push ebp | |
mov ebp, esp | |
sub esp, 68 | |
push 68 | |
lea eax, DWORD PTR _startup_info$[ebp] | |
push 0 | |
push eax | |
call _memset | |
add esp, 12 | |
lea eax, DWORD PTR _startup_info$[ebp] | |
push eax | |
call DWORD PTR __imp__GetStartupInfoW@4 | |
test BYTE PTR _startup_info$[ebp+44], 1 | |
movzx eax, WORD PTR _startup_info$[ebp+48] | |
jne SHORT $LN4@wWinMainCR | |
mov eax, 10 | |
$LN4@wWinMainCR: | |
movzx eax, ax | |
push eax | |
call DWORD PTR __imp__GetCommandLineW@0 | |
push eax | |
push 0 | |
push 0 | |
call DWORD PTR __imp__GetModuleHandleW@4 | |
push eax | |
call _wWinMain@16 | |
mov esp, ebp | |
pop ebp | |
ret 0 | |
_wWinMainCRTStartup ENDP | |
_TEXT ENDS | |
_TEXT SEGMENT | |
_bm$ = -48 | |
_ptZero$ = -24 | |
_sizeSplash$ = -16 | |
_hbmpOld$1$ = -8 | |
_blend$ = -4 | |
_hwndSplash$ = 8 | |
_hbmpSplash$ = 12 | |
?SetSplashImage@@YAXPAUHWND__@@PAUHBITMAP__@@@Z PROC | |
push ebp | |
mov ebp, esp | |
sub esp, 48 | |
push ebx | |
push esi | |
mov esi, DWORD PTR _hbmpSplash$[ebp] | |
lea eax, DWORD PTR _bm$[ebp] | |
push edi | |
push eax | |
push 24 | |
push esi | |
call DWORD PTR __imp__GetObjectW@12 | |
mov eax, DWORD PTR _bm$[ebp+4] | |
xorps xmm0, xmm0 | |
mov DWORD PTR _sizeSplash$[ebp], eax | |
mov eax, DWORD PTR _bm$[ebp+8] | |
push 0 | |
mov DWORD PTR _sizeSplash$[ebp+4], eax | |
movlpd QWORD PTR _ptZero$[ebp], xmm0 | |
call DWORD PTR __imp__GetDC@4 | |
mov ebx, eax | |
push ebx | |
call DWORD PTR __imp__CreateCompatibleDC@4 | |
push esi | |
mov esi, DWORD PTR __imp__SelectObject@8 | |
mov edi, eax | |
push edi | |
call esi | |
push 2 | |
mov DWORD PTR _hbmpOld$1$[ebp], eax | |
lea eax, DWORD PTR _blend$[ebp] | |
push eax | |
push 0 | |
lea eax, DWORD PTR _ptZero$[ebp] | |
mov DWORD PTR _blend$[ebp], 0 | |
push eax | |
push edi | |
lea eax, DWORD PTR _sizeSplash$[ebp] | |
mov WORD PTR _blend$[ebp+2], 511 | |
push eax | |
push 0 | |
push ebx | |
push DWORD PTR _hwndSplash$[ebp] | |
call DWORD PTR __imp__UpdateLayeredWindow@36 | |
test eax, eax | |
jne SHORT $LN2@SetSplashI | |
push 1 | |
call DWORD PTR __imp__ExitProcess@4 | |
$LN2@SetSplashI: | |
push DWORD PTR _hbmpOld$1$[ebp] | |
push edi | |
call esi | |
push edi | |
call DWORD PTR __imp__DeleteDC@4 | |
push ebx | |
push 0 | |
call DWORD PTR __imp__ReleaseDC@8 | |
pop edi | |
pop esi | |
pop ebx | |
mov esp, ebp | |
pop ebp | |
ret 0 | |
$LN4@SetSplashI: | |
?SetSplashImage@@YAXPAUHWND__@@PAUHBITMAP__@@@Z ENDP | |
_TEXT ENDS | |
_TEXT SEGMENT | |
_ipStream$ = -4 | |
_hModule$ = 8 | |
_lpName$ = 12 | |
_lpType$ = 16 | |
?CreateStreamOnResource@@YAPAUIStream@@PAUHINSTANCE__@@PB_W1@Z PROC | |
push ebp | |
mov ebp, esp | |
push ecx | |
push ebx | |
push esi | |
push edi | |
push DWORD PTR _lpType$[ebp] | |
mov edi, DWORD PTR _hModule$[ebp] | |
push DWORD PTR _lpName$[ebp] | |
mov DWORD PTR _ipStream$[ebp], 0 | |
push edi | |
call DWORD PTR __imp__FindResourceW@12 | |
mov ebx, eax | |
test ebx, ebx | |
je SHORT $LN7@CreateStre | |
push ebx | |
push edi | |
call DWORD PTR __imp__SizeofResource@8 | |
push ebx | |
push edi | |
mov esi, eax | |
call DWORD PTR __imp__LoadResource@8 | |
test eax, eax | |
je SHORT $LN7@CreateStre | |
push eax | |
call DWORD PTR __imp__LockResource@4 | |
mov edi, eax | |
test edi, edi | |
je SHORT $LN7@CreateStre | |
push esi | |
push 66 | |
call DWORD PTR __imp__GlobalAlloc@8 | |
mov ebx, eax | |
test ebx, ebx | |
je SHORT $LN7@CreateStre | |
push ebx | |
call DWORD PTR __imp__GlobalLock@4 | |
mov ecx, eax | |
test ecx, ecx | |
jne SHORT $LN6@CreateStre | |
push ebx | |
call DWORD PTR __imp__GlobalFree@4 | |
mov eax, DWORD PTR _ipStream$[ebp] | |
pop edi | |
pop esi | |
pop ebx | |
mov esp, ebp | |
pop ebp | |
ret 0 | |
$LN6@CreateStre: | |
test esi, esi | |
je SHORT $LN14@CreateStre | |
sub edi, ecx | |
npad 6 | |
$LL10@CreateStre: | |
mov al, BYTE PTR [edi+ecx] | |
lea ecx, DWORD PTR [ecx+1] | |
mov BYTE PTR [ecx-1], al | |
sub esi, 1 | |
jne SHORT $LL10@CreateStre | |
$LN14@CreateStre: | |
push ebx | |
call DWORD PTR __imp__GlobalUnlock@4 | |
lea eax, DWORD PTR _ipStream$[ebp] | |
push eax | |
push 1 | |
push ebx | |
call DWORD PTR __imp__CreateStreamOnHGlobal@12 | |
$LN7@CreateStre: | |
mov eax, DWORD PTR _ipStream$[ebp] | |
pop edi | |
pop esi | |
pop ebx | |
mov esp, ebp | |
pop ebp | |
ret 0 | |
?CreateStreamOnResource@@YAPAUIStream@@PAUHINSTANCE__@@PB_W1@Z ENDP | |
_TEXT ENDS | |
_TEXT SEGMENT | |
_nFrameCount$ = -16 | |
_ipFrame$ = -12 | |
_ipBitmap$ = -8 | |
_ipDecoder$ = -4 | |
_ipImageStream$ = 8 | |
?LoadBitmapFromStream@@YAPAUIWICBitmapSource@@PAUIStream@@@Z PROC | |
push ebp | |
mov ebp, esp | |
sub esp, 16 | |
push 0 | |
mov DWORD PTR _ipBitmap$[ebp], 0 | |
mov DWORD PTR _ipDecoder$[ebp], 0 | |
call DWORD PTR __imp__CoInitialize@4 | |
test eax, eax | |
jne $LN8@LoadBitmap | |
lea eax, DWORD PTR _ipDecoder$[ebp] | |
push eax | |
push OFFSET __GUID_9edde9e7_8dee_47ea_99df_e6faf2ed44bf | |
push 1 | |
push 0 | |
push OFFSET _CLSID_WICPngDecoder2 | |
call DWORD PTR __imp__CoCreateInstance@20 | |
test eax, eax | |
jne SHORT $LN8@LoadBitmap | |
mov eax, DWORD PTR _ipDecoder$[ebp] | |
push 1 | |
push DWORD PTR _ipImageStream$[ebp] | |
mov ecx, DWORD PTR [eax] | |
push eax | |
call DWORD PTR [ecx+16] | |
test eax, eax | |
js SHORT $LN8@LoadBitmap | |
mov eax, DWORD PTR _ipDecoder$[ebp] | |
lea edx, DWORD PTR _nFrameCount$[ebp] | |
mov DWORD PTR _nFrameCount$[ebp], 0 | |
push edx | |
push eax | |
mov ecx, DWORD PTR [eax] | |
call DWORD PTR [ecx+48] | |
test eax, eax | |
mov eax, DWORD PTR _ipDecoder$[ebp] | |
js SHORT $LN9@LoadBitmap | |
lea edx, DWORD PTR _ipFrame$[ebp] | |
mov DWORD PTR _ipFrame$[ebp], 0 | |
mov ecx, DWORD PTR [eax] | |
push edx | |
push 0 | |
push eax | |
call DWORD PTR [ecx+52] | |
test eax, eax | |
js SHORT $LN10@LoadBitmap | |
lea eax, DWORD PTR _ipBitmap$[ebp] | |
push eax | |
push DWORD PTR _ipFrame$[ebp] | |
push OFFSET _GUID_WICPixelFormat32bppPBGRA | |
call _WICConvertBitmapSource@12 | |
call DWORD PTR __imp__CoUninitialize@0 | |
mov eax, DWORD PTR _ipFrame$[ebp] | |
push eax | |
mov ecx, DWORD PTR [eax] | |
call DWORD PTR [ecx+8] | |
$LN10@LoadBitmap: | |
mov eax, DWORD PTR _ipDecoder$[ebp] | |
$LN9@LoadBitmap: | |
mov ecx, DWORD PTR [eax] | |
push eax | |
call DWORD PTR [ecx+8] | |
$LN8@LoadBitmap: | |
mov eax, DWORD PTR _ipBitmap$[ebp] | |
mov esp, ebp | |
pop ebp | |
ret 0 | |
?LoadBitmapFromStream@@YAPAUIWICBitmapSource@@PAUIStream@@@Z ENDP | |
_TEXT ENDS | |
_TEXT SEGMENT | |
_bminfo$ = -52 | |
_height$ = -8 | |
_width$ = -4 | |
_pvImageBits$ = 8 | |
_ipBitmap$ = 8 | |
?CreateHBITMAP@@YAPAUHBITMAP__@@PAUIWICBitmapSource@@@Z PROC | |
push ebp | |
mov ebp, esp | |
sub esp, 52 | |
push ebx | |
mov ebx, DWORD PTR _ipBitmap$[ebp] | |
lea ecx, DWORD PTR _height$[ebp] | |
push edi | |
push ecx | |
lea ecx, DWORD PTR _width$[ebp] | |
mov DWORD PTR _width$[ebp], 0 | |
mov eax, DWORD PTR [ebx] | |
push ecx | |
push ebx | |
mov DWORD PTR _height$[ebp], 0 | |
call DWORD PTR [eax+12] | |
test eax, eax | |
js $LN3@CreateHBIT | |
mov ecx, DWORD PTR _width$[ebp] | |
test ecx, ecx | |
je $LN3@CreateHBIT | |
mov eax, DWORD PTR _height$[ebp] | |
test eax, eax | |
je $LN3@CreateHBIT | |
xorps xmm0, xmm0 | |
mov DWORD PTR _bminfo$[ebp+40], 0 | |
movups XMMWORD PTR _bminfo$[ebp], xmm0 | |
push esi | |
neg eax | |
movq QWORD PTR _bminfo$[ebp+32], xmm0 | |
movups XMMWORD PTR _bminfo$[ebp+16], xmm0 | |
push 0 | |
mov DWORD PTR _bminfo$[ebp], 40 | |
mov DWORD PTR _bminfo$[ebp+4], ecx | |
mov DWORD PTR _bminfo$[ebp+8], eax | |
mov DWORD PTR _bminfo$[ebp+12], 2097153 | |
mov DWORD PTR _bminfo$[ebp+16], 0 | |
mov DWORD PTR _pvImageBits$[ebp], 0 | |
call DWORD PTR __imp__GetDC@4 | |
push 0 | |
mov esi, eax | |
lea eax, DWORD PTR _pvImageBits$[ebp] | |
push 0 | |
push eax | |
push 0 | |
lea eax, DWORD PTR _bminfo$[ebp] | |
push eax | |
push esi | |
call DWORD PTR __imp__CreateDIBSection@24 | |
push esi | |
push 0 | |
mov edi, eax | |
call DWORD PTR __imp__ReleaseDC@8 | |
pop esi | |
test edi, edi | |
je SHORT $LN3@CreateHBIT | |
mov ecx, DWORD PTR _width$[ebp] | |
push DWORD PTR _pvImageBits$[ebp] | |
lea edx, DWORD PTR [ecx*4] | |
mov ecx, DWORD PTR [ebx] | |
mov eax, edx | |
imul eax, DWORD PTR _height$[ebp] | |
push eax | |
push edx | |
push 0 | |
push ebx | |
call DWORD PTR [ecx+28] | |
test eax, eax | |
jns SHORT $LN5@CreateHBIT | |
push edi | |
call DWORD PTR __imp__DeleteObject@4 | |
xor edi, edi | |
$LN5@CreateHBIT: | |
mov eax, edi | |
pop edi | |
pop ebx | |
mov esp, ebp | |
pop ebp | |
ret 0 | |
$LN3@CreateHBIT: | |
pop edi | |
xor eax, eax | |
pop ebx | |
mov esp, ebp | |
pop ebp | |
ret 0 | |
?CreateHBITMAP@@YAPAUHBITMAP__@@PAUIWICBitmapSource@@@Z ENDP | |
_TEXT ENDS | |
_TEXT SEGMENT | |
_bminfo$1 = -80 | |
_nFrameCount$2 = -36 | |
_hbmpSplash$1$ = -32 | |
_pvImageBits$3 = -28 | |
_height$4 = -24 | |
_width$5 = -20 | |
_ipFrame$6 = -16 | |
_ipBitmap$7 = -12 | |
_ipDecoder$8 = -8 | |
_ipStream$9 = -4 | |
_hModule$ = 8 | |
_lpName$ = 12 | |
_lpType$ = 16 | |
?LoadPNG@@YAPAUHBITMAP__@@PAUHINSTANCE__@@PB_W1@Z PROC | |
push ebp | |
mov ebp, esp | |
sub esp, 80 | |
push ebx | |
push esi | |
push edi | |
push DWORD PTR _lpType$[ebp] | |
mov edi, DWORD PTR _hModule$[ebp] | |
push DWORD PTR _lpName$[ebp] | |
mov DWORD PTR _ipStream$9[ebp], 0 | |
push edi | |
call DWORD PTR __imp__FindResourceW@12 | |
mov ebx, eax | |
test ebx, ebx | |
jne SHORT $LN6@LoadPNG | |
mov esi, DWORD PTR _ipStream$9[ebp] | |
mov edi, esi | |
mov eax, edi | |
jmp $LN5@LoadPNG | |
$LN6@LoadPNG: | |
push ebx | |
push edi | |
call DWORD PTR __imp__SizeofResource@8 | |
push ebx | |
push edi | |
mov esi, eax | |
call DWORD PTR __imp__LoadResource@8 | |
test eax, eax | |
jne SHORT $LN7@LoadPNG | |
mov esi, DWORD PTR _ipStream$9[ebp] | |
mov edi, esi | |
mov eax, edi | |
jmp SHORT $LN5@LoadPNG | |
$LN7@LoadPNG: | |
push eax | |
call DWORD PTR __imp__LockResource@4 | |
mov edi, eax | |
test edi, edi | |
jne SHORT $LN8@LoadPNG | |
mov esi, DWORD PTR _ipStream$9[ebp] | |
mov edi, esi | |
mov eax, edi | |
jmp SHORT $LN5@LoadPNG | |
$LN8@LoadPNG: | |
push esi | |
push 66 | |
call DWORD PTR __imp__GlobalAlloc@8 | |
mov ebx, eax | |
test ebx, ebx | |
jne SHORT $LN9@LoadPNG | |
mov esi, DWORD PTR _ipStream$9[ebp] | |
mov edi, esi | |
mov eax, edi | |
jmp SHORT $LN5@LoadPNG | |
$LN9@LoadPNG: | |
push ebx | |
call DWORD PTR __imp__GlobalLock@4 | |
mov ecx, eax | |
test ecx, ecx | |
jne SHORT $LN10@LoadPNG | |
push ebx | |
call DWORD PTR __imp__GlobalFree@4 | |
mov esi, DWORD PTR _ipStream$9[ebp] | |
mov edi, esi | |
mov eax, edi | |
jmp SHORT $LN5@LoadPNG | |
$LN10@LoadPNG: | |
test esi, esi | |
je SHORT $LN36@LoadPNG | |
sub edi, ecx | |
$LL14@LoadPNG: | |
mov al, BYTE PTR [edi+ecx] | |
lea ecx, DWORD PTR [ecx+1] | |
mov BYTE PTR [ecx-1], al | |
sub esi, 1 | |
jne SHORT $LL14@LoadPNG | |
$LN36@LoadPNG: | |
push ebx | |
call DWORD PTR __imp__GlobalUnlock@4 | |
lea eax, DWORD PTR _ipStream$9[ebp] | |
push eax | |
push 1 | |
push ebx | |
call DWORD PTR __imp__CreateStreamOnHGlobal@12 | |
mov esi, DWORD PTR _ipStream$9[ebp] | |
test eax, eax | |
mov edi, esi | |
mov eax, edi | |
jns SHORT $LN5@LoadPNG | |
$LN5@LoadPNG: | |
test eax, eax | |
je $LN45@LoadPNG | |
push 0 | |
mov DWORD PTR _ipBitmap$7[ebp], 0 | |
mov DWORD PTR _ipDecoder$8[ebp], 0 | |
call DWORD PTR __imp__CoInitialize@4 | |
test eax, eax | |
je SHORT $LN18@LoadPNG | |
mov ecx, DWORD PTR _ipBitmap$7[ebp] | |
mov ebx, ecx | |
mov eax, ebx | |
jmp $LN17@LoadPNG | |
$LN18@LoadPNG: | |
lea eax, DWORD PTR _ipDecoder$8[ebp] | |
push eax | |
push OFFSET __GUID_9edde9e7_8dee_47ea_99df_e6faf2ed44bf | |
push 1 | |
push 0 | |
push OFFSET _CLSID_WICPngDecoder2 | |
call DWORD PTR __imp__CoCreateInstance@20 | |
test eax, eax | |
je SHORT $LN19@LoadPNG | |
mov ecx, DWORD PTR _ipBitmap$7[ebp] | |
mov ebx, ecx | |
mov eax, ebx | |
jmp $LN17@LoadPNG | |
$LN19@LoadPNG: | |
mov eax, DWORD PTR _ipDecoder$8[ebp] | |
push 1 | |
push esi | |
push eax | |
mov ecx, DWORD PTR [eax] | |
call DWORD PTR [ecx+16] | |
test eax, eax | |
jns SHORT $LN20@LoadPNG | |
mov ecx, DWORD PTR _ipBitmap$7[ebp] | |
mov ebx, ecx | |
mov eax, ebx | |
jmp $LN17@LoadPNG | |
$LN20@LoadPNG: | |
mov eax, DWORD PTR _ipDecoder$8[ebp] | |
lea edx, DWORD PTR _nFrameCount$2[ebp] | |
mov DWORD PTR _nFrameCount$2[ebp], 0 | |
push edx | |
push eax | |
mov ecx, DWORD PTR [eax] | |
call DWORD PTR [ecx+48] | |
test eax, eax | |
mov eax, DWORD PTR _ipDecoder$8[ebp] | |
jns SHORT $LN21@LoadPNG | |
mov ecx, DWORD PTR [eax] | |
push eax | |
call DWORD PTR [ecx+8] | |
mov ecx, DWORD PTR _ipBitmap$7[ebp] | |
mov ebx, ecx | |
mov eax, ebx | |
jmp SHORT $LN17@LoadPNG | |
$LN21@LoadPNG: | |
lea edx, DWORD PTR _ipFrame$6[ebp] | |
mov DWORD PTR _ipFrame$6[ebp], 0 | |
mov ecx, DWORD PTR [eax] | |
push edx | |
push 0 | |
push eax | |
call DWORD PTR [ecx+52] | |
test eax, eax | |
jns SHORT $LN22@LoadPNG | |
mov eax, DWORD PTR _ipDecoder$8[ebp] | |
push eax | |
mov ecx, DWORD PTR [eax] | |
call DWORD PTR [ecx+8] | |
mov ecx, DWORD PTR _ipBitmap$7[ebp] | |
mov ebx, ecx | |
mov eax, ebx | |
jmp SHORT $LN17@LoadPNG | |
$LN22@LoadPNG: | |
lea eax, DWORD PTR _ipBitmap$7[ebp] | |
push eax | |
push DWORD PTR _ipFrame$6[ebp] | |
push OFFSET _GUID_WICPixelFormat32bppPBGRA | |
call _WICConvertBitmapSource@12 | |
call DWORD PTR __imp__CoUninitialize@0 | |
mov eax, DWORD PTR _ipFrame$6[ebp] | |
push eax | |
mov ecx, DWORD PTR [eax] | |
call DWORD PTR [ecx+8] | |
mov eax, DWORD PTR _ipDecoder$8[ebp] | |
push eax | |
mov ecx, DWORD PTR [eax] | |
call DWORD PTR [ecx+8] | |
mov ecx, DWORD PTR _ipBitmap$7[ebp] | |
mov ebx, ecx | |
mov eax, ecx | |
$LN17@LoadPNG: | |
test eax, eax | |
jne SHORT $LN3@LoadPNG | |
mov eax, DWORD PTR [edi] | |
push edi | |
call DWORD PTR [eax+8] | |
$LN45@LoadPNG: | |
pop edi | |
pop esi | |
xor eax, eax | |
pop ebx | |
mov esp, ebp | |
pop ebp | |
ret 0 | |
$LN3@LoadPNG: | |
mov eax, DWORD PTR [ecx] | |
lea edx, DWORD PTR _height$4[ebp] | |
push edx | |
lea edx, DWORD PTR _width$5[ebp] | |
mov DWORD PTR _width$5[ebp], 0 | |
push edx | |
push ecx | |
mov DWORD PTR _height$4[ebp], 0 | |
call DWORD PTR [eax+12] | |
test eax, eax | |
js $LN26@LoadPNG | |
mov ecx, DWORD PTR _width$5[ebp] | |
test ecx, ecx | |
je $LN26@LoadPNG | |
mov eax, DWORD PTR _height$4[ebp] | |
test eax, eax | |
je $LN26@LoadPNG | |
xorps xmm0, xmm0 | |
mov DWORD PTR _bminfo$1[ebp+40], 0 | |
movups XMMWORD PTR _bminfo$1[ebp], xmm0 | |
neg eax | |
mov DWORD PTR _bminfo$1[ebp], 40 | |
movq QWORD PTR _bminfo$1[ebp+32], xmm0 | |
movups XMMWORD PTR _bminfo$1[ebp+16], xmm0 | |
push 0 | |
mov DWORD PTR _bminfo$1[ebp+4], ecx | |
mov DWORD PTR _bminfo$1[ebp+8], eax | |
mov DWORD PTR _bminfo$1[ebp+12], 2097153 | |
mov DWORD PTR _bminfo$1[ebp+16], 0 | |
mov DWORD PTR _pvImageBits$3[ebp], 0 | |
call DWORD PTR __imp__GetDC@4 | |
push 0 | |
mov esi, eax | |
lea eax, DWORD PTR _pvImageBits$3[ebp] | |
push 0 | |
push eax | |
push 0 | |
lea eax, DWORD PTR _bminfo$1[ebp] | |
push eax | |
push esi | |
call DWORD PTR __imp__CreateDIBSection@24 | |
push esi | |
push 0 | |
mov DWORD PTR _hbmpSplash$1$[ebp], eax | |
call DWORD PTR __imp__ReleaseDC@8 | |
mov esi, DWORD PTR _hbmpSplash$1$[ebp] | |
test esi, esi | |
je SHORT $LN26@LoadPNG | |
mov eax, DWORD PTR _width$5[ebp] | |
push DWORD PTR _pvImageBits$3[ebp] | |
mov ecx, DWORD PTR [ebx] | |
lea edx, DWORD PTR [eax*4] | |
mov eax, edx | |
imul eax, DWORD PTR _height$4[ebp] | |
push eax | |
push edx | |
push 0 | |
push ebx | |
call DWORD PTR [ecx+28] | |
test eax, eax | |
jns SHORT $LN44@LoadPNG | |
push esi | |
call DWORD PTR __imp__DeleteObject@4 | |
$LN26@LoadPNG: | |
xor esi, esi | |
$LN24@LoadPNG: | |
mov ecx, DWORD PTR [ebx] | |
push ebx | |
call DWORD PTR [ecx+8] | |
mov ecx, DWORD PTR [edi] | |
push edi | |
call DWORD PTR [ecx+8] | |
pop edi | |
mov eax, esi | |
pop esi | |
pop ebx | |
mov esp, ebp | |
pop ebp | |
ret 0 | |
$LN44@LoadPNG: | |
mov esi, DWORD PTR _hbmpSplash$1$[ebp] | |
jmp SHORT $LN24@LoadPNG | |
?LoadPNG@@YAPAUHBITMAP__@@PAUHINSTANCE__@@PB_W1@Z ENDP | |
_TEXT ENDS | |
_TEXT SEGMENT | |
_bm$1 = -40 | |
_ptZero$2 = -16 | |
_sizeSplash$3 = -8 | |
_hWnd$ = 8 | |
_blend$4 = 12 | |
_message$ = 12 | |
_hbmpOld$1$ = 16 | |
_wParam$ = 16 | |
_hdcScreen$1$ = 20 | |
_lParam$ = 20 | |
?WndProc@@YGJPAUHWND__@@IIJ@Z PROC | |
push ebp | |
mov ebp, esp | |
mov eax, DWORD PTR _message$[ebp] | |
sub esp, 40 | |
push edi | |
xor edi, edi | |
cmp eax, 132 | |
jne SHORT $LN2@WndProc | |
mov edi, 2 | |
$LN11@WndProc: | |
mov eax, edi | |
pop edi | |
mov esp, ebp | |
pop ebp | |
ret 16 | |
$LN2@WndProc: | |
cmp eax, 32 | |
jne SHORT $LN4@WndProc | |
push 1 | |
push 0 | |
call DWORD PTR __imp__GetModuleHandleW@4 | |
push eax | |
call DWORD PTR __imp__LoadCursorW@8 | |
push eax | |
call DWORD PTR __imp__SetCursor@4 | |
mov edi, 1 | |
mov eax, edi | |
pop edi | |
mov esp, ebp | |
pop ebp | |
ret 16 | |
$LN4@WndProc: | |
cmp eax, 1 | |
jne $LN6@WndProc | |
push ebx | |
push esi | |
push 10 | |
push eax | |
push 0 | |
call DWORD PTR __imp__GetModuleHandleW@4 | |
push eax | |
call ?LoadPNG@@YAPAUHBITMAP__@@PAUHINSTANCE__@@PB_W1@Z | |
add esp, 12 | |
mov esi, eax | |
lea eax, DWORD PTR _bm$1[ebp] | |
push eax | |
push 24 | |
push esi | |
call DWORD PTR __imp__GetObjectW@12 | |
mov eax, DWORD PTR _bm$1[ebp+4] | |
xorps xmm0, xmm0 | |
mov DWORD PTR _sizeSplash$3[ebp], eax | |
mov eax, DWORD PTR _bm$1[ebp+8] | |
push 0 | |
mov DWORD PTR _sizeSplash$3[ebp+4], eax | |
movlpd QWORD PTR _ptZero$2[ebp], xmm0 | |
call DWORD PTR __imp__GetDC@4 | |
push eax | |
mov DWORD PTR _hdcScreen$1$[ebp], eax | |
call DWORD PTR __imp__CreateCompatibleDC@4 | |
mov ebx, eax | |
push esi | |
push ebx | |
call DWORD PTR __imp__SelectObject@8 | |
mov esi, DWORD PTR _hdcScreen$1$[ebp] | |
push 2 | |
mov DWORD PTR _hbmpOld$1$[ebp], eax | |
lea eax, DWORD PTR _blend$4[ebp] | |
push eax | |
push 0 | |
lea eax, DWORD PTR _ptZero$2[ebp] | |
mov DWORD PTR _blend$4[ebp], edi | |
push eax | |
push ebx | |
lea eax, DWORD PTR _sizeSplash$3[ebp] | |
mov WORD PTR _blend$4[ebp+2], 511 | |
push eax | |
push 0 | |
push esi | |
push DWORD PTR _hWnd$[ebp] | |
call DWORD PTR __imp__UpdateLayeredWindow@36 | |
test eax, eax | |
jne SHORT $LN14@WndProc | |
push 1 | |
call DWORD PTR __imp__ExitProcess@4 | |
$LN14@WndProc: | |
push DWORD PTR _hbmpOld$1$[ebp] | |
push ebx | |
call DWORD PTR __imp__SelectObject@8 | |
push ebx | |
call DWORD PTR __imp__DeleteDC@4 | |
push esi | |
push 0 | |
call DWORD PTR __imp__ReleaseDC@8 | |
pop esi | |
pop ebx | |
mov eax, edi | |
pop edi | |
mov esp, ebp | |
pop ebp | |
ret 16 | |
$LN6@WndProc: | |
cmp eax, 20 | |
je $LN11@WndProc | |
cmp eax, 2 | |
jne SHORT $LN10@WndProc | |
push 0 | |
call DWORD PTR __imp__PostQuitMessage@4 | |
mov eax, edi | |
pop edi | |
mov esp, ebp | |
pop ebp | |
ret 16 | |
$LN10@WndProc: | |
push DWORD PTR _lParam$[ebp] | |
push DWORD PTR _wParam$[ebp] | |
push eax | |
push DWORD PTR _hWnd$[ebp] | |
call DWORD PTR __imp__DefWindowProcW@16 | |
pop edi | |
mov esp, ebp | |
pop ebp | |
ret 16 | |
$LN17@WndProc: | |
?WndProc@@YGJPAUHWND__@@IIJ@Z ENDP | |
_TEXT ENDS | |
_TEXT SEGMENT | |
_szTitle$ = -540 | |
_szWindowClass$ = -340 | |
_monitorinfo$1 = -140 | |
_msg$ = -100 | |
_rc$2 = -72 | |
_wcex$ = -56 | |
_ptZero$3 = -8 | |
_hInstance$ = 8 | |
_hPrevInstance$ = 12 | |
_lpCmdLine$ = 16 | |
_nCmdShow$ = 20 | |
_wWinMain@16 PROC | |
push ebp | |
mov ebp, esp | |
sub esp, 540 | |
push esi | |
mov esi, DWORD PTR __imp__LoadStringW@16 | |
lea eax, DWORD PTR _szTitle$[ebp] | |
push edi | |
mov edi, DWORD PTR _hInstance$[ebp] | |
push 200 | |
push eax | |
push 1 | |
push edi | |
call esi | |
push 200 | |
lea eax, DWORD PTR _szWindowClass$[ebp] | |
push eax | |
push 2 | |
push edi | |
call esi | |
xorps xmm0, xmm0 | |
mov DWORD PTR _wcex$[ebp], 48 | |
push 1 | |
push edi | |
movlpd QWORD PTR _wcex$[ebp+12], xmm0 | |
movlpd QWORD PTR _wcex$[ebp+24], xmm0 | |
movlpd QWORD PTR _wcex$[ebp+32], xmm0 | |
movlpd QWORD PTR _wcex$[ebp+40], xmm0 | |
mov DWORD PTR _wcex$[ebp+4], 3 | |
mov DWORD PTR _wcex$[ebp+8], OFFSET ?WndProc@@YGJPAUHWND__@@IIJ@Z | |
mov DWORD PTR _wcex$[ebp+20], edi | |
call DWORD PTR __imp__LoadIconW@8 | |
push 32768 | |
push 16 | |
push 16 | |
push 1 | |
mov DWORD PTR _wcex$[ebp+24], eax | |
lea eax, DWORD PTR _szWindowClass$[ebp] | |
push 1 | |
push edi | |
mov DWORD PTR _wcex$[ebp+40], eax | |
call DWORD PTR __imp__LoadImageW@24 | |
mov DWORD PTR _wcex$[ebp+44], eax | |
lea eax, DWORD PTR _wcex$[ebp] | |
push eax | |
call DWORD PTR __imp__RegisterClassExW@4 | |
push 0 | |
push edi | |
push 0 | |
push 0 | |
push 340 | |
push 283 | |
push -2147483648 | |
push -2147483648 | |
push -2147483648 | |
lea eax, DWORD PTR _szTitle$[ebp] | |
push eax | |
lea eax, DWORD PTR _szWindowClass$[ebp] | |
push eax | |
push 786440 | |
call DWORD PTR __imp__CreateWindowExW@48 | |
mov esi, eax | |
test esi, esi | |
je $LN14@wWinMain | |
lea eax, DWORD PTR _rc$2[ebp] | |
push eax | |
push esi | |
call DWORD PTR __imp__GetWindowRect@8 | |
xorps xmm0, xmm0 | |
push 1 | |
movlpd QWORD PTR _ptZero$3[ebp], xmm0 | |
push DWORD PTR _ptZero$3[ebp+4] | |
push DWORD PTR _ptZero$3[ebp] | |
call DWORD PTR __imp__MonitorFromPoint@12 | |
xorps xmm0, xmm0 | |
lea ecx, DWORD PTR _monitorinfo$1[ebp] | |
push ecx | |
movups XMMWORD PTR _monitorinfo$1[ebp], xmm0 | |
push eax | |
movups XMMWORD PTR _monitorinfo$1[ebp+16], xmm0 | |
mov DWORD PTR _monitorinfo$1[ebp], 40 | |
movq QWORD PTR _monitorinfo$1[ebp+32], xmm0 | |
call DWORD PTR __imp__GetMonitorInfoW@8 | |
mov eax, DWORD PTR _monitorinfo$1[ebp+32] | |
sub eax, DWORD PTR _rc$2[ebp+12] | |
cdq | |
push 5 | |
sub eax, edx | |
push 0 | |
sar eax, 1 | |
push 0 | |
push eax | |
mov eax, DWORD PTR _monitorinfo$1[ebp+28] | |
sub eax, DWORD PTR _rc$2[ebp+8] | |
cdq | |
sub eax, edx | |
sar eax, 1 | |
push eax | |
push 0 | |
push esi | |
call DWORD PTR __imp__SetWindowPos@28 | |
push DWORD PTR _nCmdShow$[ebp] | |
push esi | |
call DWORD PTR __imp__ShowWindow@8 | |
push 0 | |
push 0 | |
push esi | |
lea eax, DWORD PTR _msg$[ebp] | |
push eax | |
call DWORD PTR __imp__GetMessageW@16 | |
test eax, eax | |
je SHORT $LN15@wWinMain | |
push ebx | |
mov ebx, DWORD PTR __imp__TranslateMessage@4 | |
$LL2@wWinMain: | |
cmp eax, -1 | |
je SHORT $LN16@wWinMain | |
lea eax, DWORD PTR _msg$[ebp] | |
push eax | |
call ebx | |
lea eax, DWORD PTR _msg$[ebp] | |
push eax | |
call DWORD PTR __imp__DispatchMessageW@4 | |
push 0 | |
push 0 | |
push esi | |
lea eax, DWORD PTR _msg$[ebp] | |
push eax | |
call DWORD PTR __imp__GetMessageW@16 | |
test eax, eax | |
jne SHORT $LL2@wWinMain | |
$LN16@wWinMain: | |
pop ebx | |
$LN15@wWinMain: | |
push edi | |
lea eax, DWORD PTR _szWindowClass$[ebp] | |
push eax | |
call DWORD PTR __imp__UnregisterClassW@8 | |
mov eax, DWORD PTR _msg$[ebp+8] | |
pop edi | |
pop esi | |
mov esp, ebp | |
pop ebp | |
ret 16 | |
$LN14@wWinMain: | |
pop edi | |
xor eax, eax | |
pop esi | |
mov esp, ebp | |
pop ebp | |
ret 16 | |
_wWinMain@16 ENDP | |
_TEXT ENDS | |
_TEXT SEGMENT | |
_dest$ = 8 | |
_c$ = 12 | |
_count$ = 16 | |
_memset PROC | |
push ebp | |
mov ebp, esp | |
mov ecx, DWORD PTR _count$[ebp] | |
test ecx, ecx | |
je SHORT $LN10@memset | |
movzx eax, BYTE PTR _c$[ebp] | |
push esi | |
mov esi, ecx | |
imul eax, 16843009 | |
push edi | |
mov edi, DWORD PTR _dest$[ebp] | |
shr ecx, 2 | |
rep stosd | |
mov ecx, esi | |
and ecx, 3 | |
rep stosb | |
pop edi | |
pop esi | |
$LN10@memset: | |
mov eax, DWORD PTR _dest$[ebp] | |
pop ebp | |
ret 0 | |
_memset ENDP | |
_TEXT ENDS | |
_TEXT SEGMENT | |
_dest$ = 8 | |
_src$ = 12 | |
_count$ = 16 | |
_memcpy PROC | |
push ebp | |
mov ebp, esp | |
mov eax, DWORD PTR _dest$[ebp] | |
mov edx, eax | |
push esi | |
mov esi, DWORD PTR _count$[ebp] | |
test esi, esi | |
je SHORT $LN6@memcpy | |
push edi | |
mov edi, DWORD PTR _src$[ebp] | |
sub edi, eax | |
$LL2@memcpy: | |
mov cl, BYTE PTR [edi+edx] | |
lea edx, DWORD PTR [edx+1] | |
mov BYTE PTR [edx-1], cl | |
sub esi, 1 | |
jne SHORT $LL2@memcpy | |
pop edi | |
$LN6@memcpy: | |
pop esi | |
pop ebp | |
ret 0 | |
_memcpy ENDP | |
_TEXT ENDS | |
END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment