Skip to content

Instantly share code, notes, and snippets.

@AraHaan
Created July 15, 2021 22:49
Show Gist options
  • Save AraHaan/8e57e85c085ea980c24dd4b13ee84ef8 to your computer and use it in GitHub Desktop.
Save AraHaan/8e57e85c085ea980c24dd4b13ee84ef8 to your computer and use it in GitHub Desktop.
Some old asm code of mine.
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