| .486 |
| .model flat |
| extrn __fltused:near |
| extrn __ftol:near |
| _DATA segment |
| public _x |
| align 4 |
| _x label byte |
| dd 1 |
| db 2 |
| db 3 dup (0) |
| db 03H |
| db 040H |
| db 2 dup (0) |
| db 050H |
| db 6 |
| db 2 dup (0) |
| public _i |
| align 4 |
| _i label byte |
| dd 16 |
| public _y |
| align 4 |
| _y label byte |
| db 023H |
| db 3 dup (0) |
| db 09H |
| db 00H |
| db 00H |
| db 00H |
| public _main |
| _DATA ends |
| _TEXT segment |
| _main: |
| push ebx |
| push esi |
| push edi |
| push ebp |
| mov ebp,esp |
| movsx edi,byte ptr (_x+13) |
| push edi |
| mov edi,dword ptr (_x+12) |
| sal edi,25 |
| sar edi,29 |
| push edi |
| mov edi,dword ptr (_x+8) |
| sal edi,16 |
| sar edi,28 |
| push edi |
| mov edi,dword ptr (_x+8) |
| sal edi,20 |
| sar edi,20 |
| push edi |
| movsx edi,byte ptr (_x+4) |
| push edi |
| mov edi,dword ptr (_x) |
| push edi |
| lea edi,(L4) |
| push edi |
| call _printf |
| add esp,28 |
| mov edi,dword ptr (_y+4) |
| push edi |
| mov edi,dword ptr (_y) |
| mov esi,edi |
| shr esi,2 |
| and esi,15 |
| push esi |
| and edi,3 |
| push edi |
| lea edi,(L10) |
| push edi |
| call _printf |
| add esp,16 |
| mov edi,dword ptr (_x+8) |
| and edi,0ffff0fffH |
| mov esi,dword ptr (_i) |
| sal esi,28 |
| sar esi,28 |
| shl esi,12 |
| and esi,0f000H |
| or edi,esi |
| mov dword ptr (_x+8),edi |
| mov edi,dword ptr (_x+12) |
| and edi,0ffffff8fH |
| mov dword ptr (_x+12),edi |
| movsx edi,byte ptr (_x+13) |
| push edi |
| mov edi,dword ptr (_x+12) |
| sal edi,25 |
| sar edi,29 |
| push edi |
| mov edi,dword ptr (_x+8) |
| sal edi,16 |
| sar edi,28 |
| push edi |
| mov edi,dword ptr (_x+8) |
| sal edi,20 |
| sar edi,20 |
| push edi |
| movsx edi,byte ptr (_x+4) |
| push edi |
| mov edi,dword ptr (_x) |
| push edi |
| lea edi,(L4) |
| push edi |
| call _printf |
| add esp,28 |
| mov edi,dword ptr (_y) |
| and edi,0fffffffcH |
| or edi,2 |
| mov dword ptr (_y),edi |
| mov edi,dword ptr (_i) |
| mov dword ptr (_y+4),edi |
| mov edi,dword ptr (_y+4) |
| push edi |
| mov edi,dword ptr (_y) |
| mov esi,edi |
| shr esi,2 |
| and esi,15 |
| push esi |
| and edi,3 |
| push edi |
| lea edi,(L10) |
| push edi |
| call _printf |
| add esp,16 |
| lea edi,(_x) |
| push edi |
| call _f2 |
| add esp,4 |
| mov eax,0 |
| L3: |
| mov esp,ebp |
| pop ebp |
| pop edi |
| pop esi |
| pop ebx |
| ret |
| public _f1 |
| _f1: |
| push ebx |
| push esi |
| push edi |
| push ebp |
| mov ebp,esp |
| mov edi,dword ptr (20)[ebp] |
| and dword ptr [edi],0ffffffc3H |
| mov edi,dword ptr (20)[ebp] |
| mov esi,dword ptr [edi] |
| and esi,0fffffffcH |
| mov ebx,0 |
| and ebx,3 |
| and ebx,3 |
| or esi,ebx |
| mov dword ptr [edi],esi |
| mov edi,dword ptr (20)[ebp] |
| mov edi,dword ptr [edi] |
| and edi,60 |
| cmp edi,0 |
| je L22 |
| lea edi,(L24) |
| push edi |
| call _printf |
| add esp,4 |
| L22: |
| mov edi,dword ptr (20)[ebp] |
| or dword ptr [edi],3 |
| mov edi,dword ptr (20)[ebp] |
| or dword ptr [edi],60 |
| mov edi,dword ptr (20)[ebp] |
| mov edi,dword ptr [edi] |
| mov esi,edi |
| shr esi,2 |
| and esi,15 |
| push esi |
| and edi,3 |
| push edi |
| lea edi,(L25) |
| push edi |
| call _printf |
| add esp,12 |
| mov eax,0 |
| L21: |
| mov esp,ebp |
| pop ebp |
| pop edi |
| pop esi |
| pop ebx |
| ret |
| public _f2 |
| _f2: |
| push ebx |
| push esi |
| push edi |
| push ebp |
| mov ebp,esp |
| sub esp,4 |
| cmp dword ptr (_i),0 |
| jne L28 |
| mov dword ptr (-4)[ebp],1 |
| jmp L29 |
| L28: |
| mov dword ptr (-4)[ebp],0 |
| L29: |
| mov edi,dword ptr (20)[ebp] |
| mov esi,dword ptr [edi] |
| and esi,0fffffffcH |
| mov ebx,dword ptr (-4)[ebp] |
| and ebx,3 |
| and ebx,3 |
| or esi,ebx |
| mov dword ptr [edi],esi |
| mov edi,dword ptr (20)[ebp] |
| push edi |
| call _f1 |
| add esp,4 |
| mov esi,dword ptr [edi] |
| and esi,0ffffffc3H |
| mov ebx,0 |
| and ebx,15 |
| lea ebx,[ebx*4] |
| and ebx,60 |
| or esi,ebx |
| mov dword ptr [edi],esi |
| mov eax,0 |
| L26: |
| mov esp,ebp |
| pop ebp |
| pop edi |
| pop esi |
| pop ebx |
| ret |
| _TEXT ends |
| extrn _printf:near |
| _TEXT segment |
| _TEXT ends |
| _TEXT segment |
| align 1 |
| L25 label byte |
| db 112 |
| db 45 |
| db 62 |
| db 97 |
| db 32 |
| db 61 |
| db 32 |
| db 48 |
| db 120 |
| db 37 |
| db 120 |
| db 44 |
| db 32 |
| db 112 |
| db 45 |
| db 62 |
| db 98 |
| db 32 |
| db 61 |
| db 32 |
| db 48 |
| db 120 |
| db 37 |
| db 120 |
| db 10 |
| db 0 |
| align 1 |
| L24 label byte |
| db 112 |
| db 45 |
| db 62 |
| db 98 |
| db 32 |
| db 33 |
| db 61 |
| db 32 |
| db 48 |
| db 33 |
| db 10 |
| db 0 |
| align 1 |
| L10 label byte |
| db 121 |
| db 32 |
| db 61 |
| db 32 |
| db 37 |
| db 100 |
| db 32 |
| db 37 |
| db 100 |
| db 32 |
| db 37 |
| db 100 |
| db 10 |
| db 0 |
| align 1 |
| L4 label byte |
| db 120 |
| db 32 |
| db 61 |
| db 32 |
| db 37 |
| db 100 |
| db 32 |
| db 37 |
| db 100 |
| db 32 |
| db 37 |
| db 100 |
| db 32 |
| db 37 |
| db 100 |
| db 32 |
| db 37 |
| db 100 |
| db 32 |
| db 37 |
| db 100 |
| db 10 |
| db 0 |
| _TEXT ends |
| end |