; Listing generated by Microsoft (R) Optimizing Compiler Version 14.00.50727.762 TITLE hello.c .686P .XMM include listing.inc .model flat INCLUDELIB LIBCMT INCLUDELIB OLDNAMES PUBLIC _g_pD3D PUBLIC _g_pd3dDevice PUBLIC _g_pd3dFont PUBLIC _g_rect _BSS SEGMENT _g_pD3D DD 01H DUP (?) _g_pd3dDevice DD 01H DUP (?) _g_pd3dFont DD 01H DUP (?) _g_rect DB 010H DUP (?) _BSS ENDS _DATA SEGMENT $SG94060 DB 082H, 'l', 082H, 'r ', 083H, 'S', 083H, 'V', 083H, 'b', 083H DB 'N', 00H ORG $+2 $SG94064 DB 'Hello, DirectX(MASM) World!', 00H $SG94084 DB 'Hello, DirectX(MASM) World!', 00H $SG94116 DB 'helloWindow', 00H $SG94118 DB 'Hello, World!', 00H _DATA ENDS PUBLIC _InitD3D EXTRN _Direct3DCreate9@4:PROC ; Function compile flags: /Odtp _TEXT SEGMENT _d3dpp$ = -60 ; size = 56 _hr$ = -4 ; size = 4 _hWnd$ = 8 ; size = 4 _InitD3D PROC ; File hello.c ; Line 17 push ebp mov ebp, esp sub esp, 60 ; 0000003cH ; Line 20 push 32 ; 00000020H call _Direct3DCreate9@4 mov DWORD PTR _g_pD3D, eax ; Line 21 cmp DWORD PTR _g_pD3D, 0 jne SHORT $LN2@InitD3D ; Line 23 mov eax, -2147467259 ; 80004005H jmp $LN3@InitD3D $LN2@InitD3D: ; Line 26 mov DWORD PTR _d3dpp$[ebp], 0 ; Line 27 mov DWORD PTR _d3dpp$[ebp+4], 0 ; Line 28 mov DWORD PTR _d3dpp$[ebp+8], 0 ; Line 29 mov DWORD PTR _d3dpp$[ebp+12], 0 ; Line 30 mov DWORD PTR _d3dpp$[ebp+16], 0 ; Line 31 mov DWORD PTR _d3dpp$[ebp+20], 0 ; Line 32 mov DWORD PTR _d3dpp$[ebp+24], 1 ; Line 33 mov DWORD PTR _d3dpp$[ebp+28], 0 ; Line 34 mov DWORD PTR _d3dpp$[ebp+32], 1 ; Line 35 mov DWORD PTR _d3dpp$[ebp+36], 0 ; Line 36 mov DWORD PTR _d3dpp$[ebp+40], 0 ; Line 37 mov DWORD PTR _d3dpp$[ebp+44], 0 ; Line 38 mov DWORD PTR _d3dpp$[ebp+48], 0 ; Line 39 mov DWORD PTR _d3dpp$[ebp+52], 0 ; Line 49 push OFFSET _g_pd3dDevice lea eax, DWORD PTR _d3dpp$[ebp] push eax push 32 ; 00000020H mov ecx, DWORD PTR _hWnd$[ebp] push ecx push 1 push 0 mov edx, DWORD PTR _g_pD3D push edx mov eax, DWORD PTR _g_pD3D mov ecx, DWORD PTR [eax] mov edx, DWORD PTR [ecx+64] call edx mov DWORD PTR _hr$[ebp], eax ; Line 51 cmp DWORD PTR _hr$[ebp], 0 jge SHORT $LN1@InitD3D ; Line 53 mov eax, -2147467259 ; 80004005H jmp SHORT $LN3@InitD3D $LN1@InitD3D: ; Line 56 xor eax, eax $LN3@InitD3D: ; Line 57 mov esp, ebp pop ebp ret 0 _InitD3D ENDP _TEXT ENDS PUBLIC _Cleanup PUBLIC __$ArrayPad$ PUBLIC _InitFont EXTRN _D3DXCreateFontIndirectA@12:PROC EXTRN __imp__lstrcpyA@8:PROC EXTRN ___security_cookie:DWORD EXTRN @__security_check_cookie@4:PROC ; Function compile flags: /Odtp _TEXT SEGMENT _hr$ = -64 ; size = 4 _lf$ = -60 ; size = 56 __$ArrayPad$ = -4 ; size = 4 _InitFont PROC ; Line 60 push ebp mov ebp, esp sub esp, 64 ; 00000040H mov eax, DWORD PTR ___security_cookie xor eax, ebp mov DWORD PTR __$ArrayPad$[ebp], eax ; Line 64 mov DWORD PTR _lf$[ebp], 16 ; 00000010H ; Line 65 mov DWORD PTR _lf$[ebp+4], 0 ; Line 66 mov DWORD PTR _lf$[ebp+8], 0 ; Line 67 mov DWORD PTR _lf$[ebp+12], 1 ; Line 68 mov DWORD PTR _lf$[ebp+16], 0 ; Line 69 mov BYTE PTR _lf$[ebp+20], 128 ; 00000080H ; Line 70 mov BYTE PTR _lf$[ebp+21], 7 ; Line 71 mov BYTE PTR _lf$[ebp+22], 2 ; Line 72 mov BYTE PTR _lf$[ebp+23], 49 ; 00000031H ; Line 73 push OFFSET $SG94060 lea eax, DWORD PTR _lf$[ebp+24] push eax call DWORD PTR __imp__lstrcpyA@8 ; Line 75 push OFFSET _g_pd3dFont lea ecx, DWORD PTR _lf$[ebp] push ecx mov edx, DWORD PTR _g_pd3dDevice push edx call _D3DXCreateFontIndirectA@12 mov DWORD PTR _hr$[ebp], eax ; Line 76 cmp DWORD PTR _hr$[ebp], 0 jge SHORT $LN2@InitFont ; Line 78 call _Cleanup ; Line 79 mov eax, DWORD PTR _hr$[ebp] jmp SHORT $LN3@InitFont $LN2@InitFont: ; Line 90 push -1 push 1056 ; 00000420H push OFFSET _g_rect push -1 push OFFSET $SG94064 push 0 mov eax, DWORD PTR _g_pd3dFont push eax mov ecx, DWORD PTR _g_pd3dFont mov edx, DWORD PTR [ecx] mov eax, DWORD PTR [edx+56] call eax mov DWORD PTR _hr$[ebp], eax ; Line 92 cmp DWORD PTR _hr$[ebp], 0 jge SHORT $LN1@InitFont ; Line 94 call _Cleanup ; Line 95 mov eax, DWORD PTR _hr$[ebp] jmp SHORT $LN3@InitFont $LN1@InitFont: ; Line 98 mov eax, DWORD PTR _hr$[ebp] $LN3@InitFont: ; Line 99 mov ecx, DWORD PTR __$ArrayPad$[ebp] xor ecx, ebp call @__security_check_cookie@4 mov esp, ebp pop ebp ret 0 _InitFont ENDP ; Function compile flags: /Odtp _Cleanup PROC ; Line 102 push ebp mov ebp, esp ; Line 103 cmp DWORD PTR _g_pd3dFont, 0 je SHORT $LN3@Cleanup ; Line 105 mov eax, DWORD PTR _g_pd3dFont push eax mov ecx, DWORD PTR _g_pd3dFont mov edx, DWORD PTR [ecx] mov eax, DWORD PTR [edx+8] call eax $LN3@Cleanup: ; Line 108 cmp DWORD PTR _g_pd3dDevice, 0 je SHORT $LN2@Cleanup ; Line 110 mov ecx, DWORD PTR _g_pd3dDevice push ecx mov edx, DWORD PTR _g_pd3dDevice mov eax, DWORD PTR [edx] mov ecx, DWORD PTR [eax+8] call ecx $LN2@Cleanup: ; Line 113 cmp DWORD PTR _g_pD3D, 0 je SHORT $LN4@Cleanup ; Line 115 mov edx, DWORD PTR _g_pD3D push edx mov eax, DWORD PTR _g_pD3D mov ecx, DWORD PTR [eax] mov edx, DWORD PTR [ecx+8] call edx $LN4@Cleanup: ; Line 117 pop ebp ret 0 _Cleanup ENDP _TEXT ENDS PUBLIC __real@3f800000 PUBLIC _Render EXTRN __fltused:DWORD ; COMDAT __real@3f800000 CONST SEGMENT __real@3f800000 DD 03f800000r ; 1 ; Function compile flags: /Odtp CONST ENDS _TEXT SEGMENT _Render PROC ; Line 120 push ebp mov ebp, esp ; Line 121 cmp DWORD PTR _g_pd3dDevice, 0 jne SHORT $LN3@Render ; Line 123 jmp $LN4@Render $LN3@Render: ; Line 126 cmp DWORD PTR _g_pd3dFont, 0 jne SHORT $LN2@Render ; Line 128 jmp $LN4@Render $LN2@Render: ; Line 139 push 0 push ecx fld1 fstp DWORD PTR [esp] push -16776961 ; ff0000ffH push 1 push 0 push 0 mov eax, DWORD PTR _g_pd3dDevice push eax mov ecx, DWORD PTR _g_pd3dDevice mov edx, DWORD PTR [ecx] mov eax, DWORD PTR [edx+172] call eax ; Line 141 mov ecx, DWORD PTR _g_pd3dDevice push ecx mov edx, DWORD PTR _g_pd3dDevice mov eax, DWORD PTR [edx] mov ecx, DWORD PTR [eax+164] call ecx test eax, eax jl SHORT $LN1@Render ; Line 151 push -1 push 32 ; 00000020H push OFFSET _g_rect push -1 push OFFSET $SG94084 push 0 mov edx, DWORD PTR _g_pd3dFont push edx mov eax, DWORD PTR _g_pd3dFont mov ecx, DWORD PTR [eax] mov edx, DWORD PTR [ecx+56] call edx ; Line 153 mov eax, DWORD PTR _g_pd3dDevice push eax mov ecx, DWORD PTR _g_pd3dDevice mov edx, DWORD PTR [ecx] mov eax, DWORD PTR [edx+168] call eax $LN1@Render: ; Line 156 push 0 push 0 push 0 push 0 mov ecx, DWORD PTR _g_pd3dDevice push ecx mov edx, DWORD PTR _g_pd3dDevice mov eax, DWORD PTR [edx] mov ecx, DWORD PTR [eax+68] call ecx $LN4@Render: ; Line 157 pop ebp ret 0 _Render ENDP _TEXT ENDS PUBLIC _WndProc@16 EXTRN __imp__DefWindowProcA@16:PROC EXTRN __imp__ValidateRect@8:PROC EXTRN __imp__PostQuitMessage@4:PROC ; Function compile flags: /Odtp _TEXT SEGMENT tv64 = -4 ; size = 4 _hWnd$ = 8 ; size = 4 _message$ = 12 ; size = 4 _wParam$ = 16 ; size = 4 _lParam$ = 20 ; size = 4 _WndProc@16 PROC ; Line 160 push ebp mov ebp, esp push ecx ; Line 161 mov eax, DWORD PTR _message$[ebp] mov DWORD PTR tv64[ebp], eax cmp DWORD PTR tv64[ebp], 2 je SHORT $LN2@WndProc cmp DWORD PTR tv64[ebp], 15 ; 0000000fH je SHORT $LN1@WndProc jmp SHORT $LN3@WndProc $LN2@WndProc: ; Line 164 call _Cleanup ; Line 165 push 0 call DWORD PTR __imp__PostQuitMessage@4 ; Line 166 xor eax, eax jmp SHORT $LN5@WndProc $LN1@WndProc: ; Line 169 call _Render ; Line 170 push 0 mov ecx, DWORD PTR _hWnd$[ebp] push ecx call DWORD PTR __imp__ValidateRect@8 ; Line 171 xor eax, eax jmp SHORT $LN5@WndProc $LN3@WndProc: ; Line 174 mov edx, DWORD PTR _lParam$[ebp] push edx mov eax, DWORD PTR _wParam$[ebp] push eax mov ecx, DWORD PTR _message$[ebp] push ecx mov edx, DWORD PTR _hWnd$[ebp] push edx call DWORD PTR __imp__DefWindowProcA@16 $LN5@WndProc: ; Line 175 mov esp, ebp pop ebp ret 16 ; 00000010H _WndProc@16 ENDP _TEXT ENDS PUBLIC _WinMain@16 EXTRN __imp__DispatchMessageA@4:PROC EXTRN __imp__TranslateMessage@4:PROC EXTRN __imp__GetMessageA@16:PROC EXTRN __imp__UpdateWindow@4:PROC EXTRN __imp__ShowWindow@8:PROC EXTRN __imp__CreateWindowExA@48:PROC EXTRN __imp__RegisterClassExA@4:PROC EXTRN __imp__LoadCursorA@8:PROC EXTRN __imp__LoadIconA@8:PROC ; Function compile flags: /Odtp _TEXT SEGMENT _lpszClassName$ = -88 ; size = 4 _msg$ = -84 ; size = 28 _wcex$ = -56 ; size = 48 _hWnd$ = -8 ; size = 4 _lpszWindowName$ = -4 ; size = 4 _hInstance$ = 8 ; size = 4 _hPrevInstance$ = 12 ; size = 4 _lpCmdLine$ = 16 ; size = 4 _nCmdShow$ = 20 ; size = 4 _WinMain@16 PROC ; Line 178 push ebp mov ebp, esp sub esp, 88 ; 00000058H ; Line 179 mov DWORD PTR _lpszClassName$[ebp], OFFSET $SG94116 ; Line 180 mov DWORD PTR _lpszWindowName$[ebp], OFFSET $SG94118 ; Line 185 mov DWORD PTR _wcex$[ebp], 48 ; 00000030H ; Line 186 mov DWORD PTR _wcex$[ebp+4], 3 ; Line 187 mov DWORD PTR _wcex$[ebp+8], OFFSET _WndProc@16 ; Line 188 mov DWORD PTR _wcex$[ebp+12], 0 ; Line 189 mov DWORD PTR _wcex$[ebp+16], 0 ; Line 190 mov eax, DWORD PTR _hInstance$[ebp] mov DWORD PTR _wcex$[ebp+20], eax ; Line 191 push 32512 ; 00007f00H mov ecx, DWORD PTR _hInstance$[ebp] push ecx call DWORD PTR __imp__LoadIconA@8 mov DWORD PTR _wcex$[ebp+24], eax ; Line 192 push 32512 ; 00007f00H push 0 call DWORD PTR __imp__LoadCursorA@8 mov DWORD PTR _wcex$[ebp+28], eax ; Line 193 mov DWORD PTR _wcex$[ebp+32], 6 ; Line 194 mov DWORD PTR _wcex$[ebp+36], 0 ; Line 195 mov edx, DWORD PTR _lpszClassName$[ebp] mov DWORD PTR _wcex$[ebp+40], edx ; Line 196 push 32512 ; 00007f00H mov eax, DWORD PTR _hInstance$[ebp] push eax call DWORD PTR __imp__LoadIconA@8 mov DWORD PTR _wcex$[ebp+44], eax ; Line 198 lea ecx, DWORD PTR _wcex$[ebp] push ecx call DWORD PTR __imp__RegisterClassExA@4 ; Line 205 push 0 mov edx, DWORD PTR _hInstance$[ebp] push edx push 0 push 0 push 480 ; 000001e0H push 640 ; 00000280H push -2147483648 ; 80000000H push -2147483648 ; 80000000H push 13565952 ; 00cf0000H mov eax, DWORD PTR _lpszWindowName$[ebp] push eax mov ecx, DWORD PTR _lpszClassName$[ebp] push ecx push 0 call DWORD PTR __imp__CreateWindowExA@48 mov DWORD PTR _hWnd$[ebp], eax ; Line 207 mov edx, DWORD PTR _hWnd$[ebp] push edx call _InitD3D add esp, 4 ; Line 208 call _InitFont ; Line 210 push 10 ; 0000000aH mov eax, DWORD PTR _hWnd$[ebp] push eax call DWORD PTR __imp__ShowWindow@8 ; Line 211 mov ecx, DWORD PTR _hWnd$[ebp] push ecx call DWORD PTR __imp__UpdateWindow@4 $LN2@WinMain: ; Line 213 push 0 push 0 push 0 lea edx, DWORD PTR _msg$[ebp] push edx call DWORD PTR __imp__GetMessageA@16 test eax, eax je SHORT $LN1@WinMain ; Line 215 lea eax, DWORD PTR _msg$[ebp] push eax call DWORD PTR __imp__TranslateMessage@4 ; Line 216 lea ecx, DWORD PTR _msg$[ebp] push ecx call DWORD PTR __imp__DispatchMessageA@4 ; Line 217 jmp SHORT $LN2@WinMain $LN1@WinMain: ; Line 219 xor eax, eax ; Line 220 mov esp, ebp pop ebp ret 16 ; 00000010H _WinMain@16 ENDP _TEXT ENDS END