| 1 | title   631asmc.c | 
|---|
| 2 | .386 | 
|---|
| 3 | .387 | 
|---|
| 4 | CODE32  segment para use32 public 'CODE' | 
|---|
| 5 | CODE32  ends | 
|---|
| 6 | DATA32  segment para use32 public 'DATA' | 
|---|
| 7 | DATA32  ends | 
|---|
| 8 | CONST32_RO      segment para use32 public 'CONST' | 
|---|
| 9 | CONST32_RO      ends | 
|---|
| 10 | BSS32   segment para use32 public 'BSS' | 
|---|
| 11 | BSS32   ends | 
|---|
| 12 | DGROUP  group BSS32, DATA32 | 
|---|
| 13 | assume  cs:FLAT, ds:FLAT, ss:FLAT, es:FLAT | 
|---|
| 14 | CODE32  segment | 
|---|
| 15 |  | 
|---|
| 16 | ; 107 struct ret16bytes __stdcall asmfoostd16(void) | 
|---|
| 17 | align 010h | 
|---|
| 18 |  | 
|---|
| 19 | public _asmfoostd16@0 | 
|---|
| 20 | _asmfoostd16@0  proc | 
|---|
| 21 | push    ebp | 
|---|
| 22 | mov     ebp,esp | 
|---|
| 23 |  | 
|---|
| 24 | ; 110     return ret; | 
|---|
| 25 | mov     eax,[ebp+08h];  @CBE10 | 
|---|
| 26 |  | 
|---|
| 27 | ; 109     struct ret16bytes ret = {1,2,3,4}; | 
|---|
| 28 | mov     dword ptr [ebp-010h],01h;       ret | 
|---|
| 29 | mov     dword ptr [ebp-0ch],02h;        ret | 
|---|
| 30 |  | 
|---|
| 31 | ; 110     return ret; | 
|---|
| 32 | mov     ecx,[ebp-010h]; ret | 
|---|
| 33 | mov     edx,[ebp-0ch];  ret | 
|---|
| 34 | mov     [eax],ecx | 
|---|
| 35 |  | 
|---|
| 36 | ; 109     struct ret16bytes ret = {1,2,3,4}; | 
|---|
| 37 | mov     dword ptr [ebp-08h],03h;        ret | 
|---|
| 38 |  | 
|---|
| 39 | ; 110     return ret; | 
|---|
| 40 | mov     [eax+04h],edx | 
|---|
| 41 | mov     edx,[ebp-08h];  ret | 
|---|
| 42 |  | 
|---|
| 43 | ; 109     struct ret16bytes ret = {1,2,3,4}; | 
|---|
| 44 | mov     dword ptr [ebp-04h],04h;        ret | 
|---|
| 45 |  | 
|---|
| 46 | ; 110     return ret; | 
|---|
| 47 | mov     ecx,[ebp-04h];  ret | 
|---|
| 48 | mov     [eax+08h],edx | 
|---|
| 49 | mov     [eax+0ch],ecx | 
|---|
| 50 | pop     ebp | 
|---|
| 51 | ret     04h | 
|---|
| 52 | _asmfoostd16@0  endp | 
|---|
| 53 |  | 
|---|
| 54 | ; 101 struct ret12bytes __stdcall asmfoostd12(void) | 
|---|
| 55 | align 010h | 
|---|
| 56 |  | 
|---|
| 57 | public _asmfoostd12@0 | 
|---|
| 58 | _asmfoostd12@0  proc | 
|---|
| 59 |  | 
|---|
| 60 | ; 104     return ret; | 
|---|
| 61 | mov     eax,[esp+04h];  @CBE9 | 
|---|
| 62 |  | 
|---|
| 63 | ; 103     struct ret12bytes ret = {1,2,3}; | 
|---|
| 64 | mov     dword ptr [esp-0ch],01h;        ret | 
|---|
| 65 | mov     dword ptr [esp-08h],02h;        ret | 
|---|
| 66 |  | 
|---|
| 67 | ; 104     return ret; | 
|---|
| 68 | mov     edx,[esp-0ch];  ret | 
|---|
| 69 | mov     ecx,[esp-08h];  ret | 
|---|
| 70 | mov     [eax],edx | 
|---|
| 71 |  | 
|---|
| 72 | ; 103     struct ret12bytes ret = {1,2,3}; | 
|---|
| 73 | mov     dword ptr [esp-04h],03h;        ret | 
|---|
| 74 |  | 
|---|
| 75 | ; 104     return ret; | 
|---|
| 76 | mov     [eax+04h],ecx | 
|---|
| 77 | mov     ecx,[esp-04h];  ret | 
|---|
| 78 | mov     [eax+08h],ecx | 
|---|
| 79 | ret     04h | 
|---|
| 80 | _asmfoostd12@0  endp | 
|---|
| 81 |  | 
|---|
| 82 | ; 95 struct ret8bytes __stdcall  asmfoostd8(void) | 
|---|
| 83 | align 010h | 
|---|
| 84 |  | 
|---|
| 85 | public _asmfoostd8@0 | 
|---|
| 86 | _asmfoostd8@0   proc | 
|---|
| 87 |  | 
|---|
| 88 | ; 97     struct ret8bytes ret = {1,2}; | 
|---|
| 89 | mov     dword ptr [esp-08h],01h;        ret | 
|---|
| 90 | mov     dword ptr [esp-04h],02h;        ret | 
|---|
| 91 |  | 
|---|
| 92 | ; 98     return ret; | 
|---|
| 93 | mov     eax,[esp-08h];  ret | 
|---|
| 94 | mov     edx,[esp-04h];  ret | 
|---|
| 95 | ret | 
|---|
| 96 | _asmfoostd8@0   endp | 
|---|
| 97 |  | 
|---|
| 98 | ; 89 struct ret4bytes __stdcall  asmfoostd4(void) | 
|---|
| 99 | align 010h | 
|---|
| 100 |  | 
|---|
| 101 | public _asmfoostd4@0 | 
|---|
| 102 | _asmfoostd4@0   proc | 
|---|
| 103 |  | 
|---|
| 104 | ; 91     struct ret4bytes ret = {1}; | 
|---|
| 105 | mov     dword ptr [esp-04h],01h;        ret | 
|---|
| 106 |  | 
|---|
| 107 | ; 92     return ret; | 
|---|
| 108 | mov     eax,[esp-04h];  ret | 
|---|
| 109 | ret | 
|---|
| 110 | _asmfoostd4@0   endp | 
|---|
| 111 |  | 
|---|
| 112 | ; 81 struct ret16bytes _Optlink  asmfooopt16(void) | 
|---|
| 113 | align 010h | 
|---|
| 114 |  | 
|---|
| 115 | public asmfooopt16 | 
|---|
| 116 | asmfooopt16     proc | 
|---|
| 117 | push    ebp | 
|---|
| 118 | mov     ebp,esp | 
|---|
| 119 |  | 
|---|
| 120 | ; 84     return ret; | 
|---|
| 121 | mov     eax,[ebp+08h];  @CBE8 | 
|---|
| 122 |  | 
|---|
| 123 | ; 83     struct ret16bytes ret = {1,2,3,4}; | 
|---|
| 124 | mov     dword ptr [ebp-010h],01h;       ret | 
|---|
| 125 | mov     dword ptr [ebp-0ch],02h;        ret | 
|---|
| 126 |  | 
|---|
| 127 | ; 84     return ret; | 
|---|
| 128 | mov     ecx,[ebp-010h]; ret | 
|---|
| 129 | mov     edx,[ebp-0ch];  ret | 
|---|
| 130 | mov     [eax],ecx | 
|---|
| 131 |  | 
|---|
| 132 | ; 83     struct ret16bytes ret = {1,2,3,4}; | 
|---|
| 133 | mov     dword ptr [ebp-08h],03h;        ret | 
|---|
| 134 |  | 
|---|
| 135 | ; 84     return ret; | 
|---|
| 136 | mov     [eax+04h],edx | 
|---|
| 137 | mov     edx,[ebp-08h];  ret | 
|---|
| 138 |  | 
|---|
| 139 | ; 83     struct ret16bytes ret = {1,2,3,4}; | 
|---|
| 140 | mov     dword ptr [ebp-04h],04h;        ret | 
|---|
| 141 |  | 
|---|
| 142 | ; 84     return ret; | 
|---|
| 143 | mov     ecx,[ebp-04h];  ret | 
|---|
| 144 | mov     [eax+08h],edx | 
|---|
| 145 | mov     [eax+0ch],ecx | 
|---|
| 146 | pop     ebp | 
|---|
| 147 | ret | 
|---|
| 148 | asmfooopt16     endp | 
|---|
| 149 |  | 
|---|
| 150 | ; 75 struct ret12bytes _Optlink  asmfooopt12(void) | 
|---|
| 151 | align 010h | 
|---|
| 152 |  | 
|---|
| 153 | public asmfooopt12 | 
|---|
| 154 | asmfooopt12     proc | 
|---|
| 155 |  | 
|---|
| 156 | ; 78     return ret; | 
|---|
| 157 | mov     eax,[esp+04h];  @CBE7 | 
|---|
| 158 |  | 
|---|
| 159 | ; 77     struct ret12bytes ret = {1,2,3}; | 
|---|
| 160 | mov     dword ptr [esp-0ch],01h;        ret | 
|---|
| 161 | mov     dword ptr [esp-08h],02h;        ret | 
|---|
| 162 |  | 
|---|
| 163 | ; 78     return ret; | 
|---|
| 164 | mov     edx,[esp-0ch];  ret | 
|---|
| 165 | mov     ecx,[esp-08h];  ret | 
|---|
| 166 | mov     [eax],edx | 
|---|
| 167 |  | 
|---|
| 168 | ; 77     struct ret12bytes ret = {1,2,3}; | 
|---|
| 169 | mov     dword ptr [esp-04h],03h;        ret | 
|---|
| 170 |  | 
|---|
| 171 | ; 78     return ret; | 
|---|
| 172 | mov     [eax+04h],ecx | 
|---|
| 173 | mov     ecx,[esp-04h];  ret | 
|---|
| 174 | mov     [eax+08h],ecx | 
|---|
| 175 | ret | 
|---|
| 176 | asmfooopt12     endp | 
|---|
| 177 |  | 
|---|
| 178 | ; 69 struct ret8bytes _Optlink   asmfooopt8(void) | 
|---|
| 179 | align 010h | 
|---|
| 180 |  | 
|---|
| 181 | public asmfooopt8 | 
|---|
| 182 | asmfooopt8      proc | 
|---|
| 183 |  | 
|---|
| 184 | ; 72     return ret; | 
|---|
| 185 | mov     eax,[esp+04h];  @CBE6 | 
|---|
| 186 |  | 
|---|
| 187 | ; 71     struct ret8bytes ret = {1,2}; | 
|---|
| 188 | mov     dword ptr [esp-08h],01h;        ret | 
|---|
| 189 | mov     dword ptr [esp-04h],02h;        ret | 
|---|
| 190 |  | 
|---|
| 191 | ; 72     return ret; | 
|---|
| 192 | mov     edx,[esp-08h];  ret | 
|---|
| 193 | mov     ecx,[esp-04h];  ret | 
|---|
| 194 | mov     [eax],edx | 
|---|
| 195 | mov     [eax+04h],ecx | 
|---|
| 196 | ret | 
|---|
| 197 | asmfooopt8      endp | 
|---|
| 198 |  | 
|---|
| 199 | ; 63 struct ret4bytes _Optlink   asmfooopt4(void) | 
|---|
| 200 | align 010h | 
|---|
| 201 |  | 
|---|
| 202 | public asmfooopt4 | 
|---|
| 203 | asmfooopt4      proc | 
|---|
| 204 |  | 
|---|
| 205 | ; 66     return ret; | 
|---|
| 206 | mov     eax,[esp+04h];  @CBE5 | 
|---|
| 207 |  | 
|---|
| 208 | ; 65     struct ret4bytes ret = {1}; | 
|---|
| 209 | mov     dword ptr [esp-04h],01h;        ret | 
|---|
| 210 |  | 
|---|
| 211 | ; 66     return ret; | 
|---|
| 212 | mov     ecx,[esp-04h];  ret | 
|---|
| 213 | mov     [eax],ecx | 
|---|
| 214 | ret | 
|---|
| 215 | asmfooopt4      endp | 
|---|
| 216 |  | 
|---|
| 217 | ; 56 struct ret16bytes _System   asmfoosys16(void) | 
|---|
| 218 | align 010h | 
|---|
| 219 |  | 
|---|
| 220 | public asmfoosys16 | 
|---|
| 221 | asmfoosys16     proc | 
|---|
| 222 | push    ebp | 
|---|
| 223 | mov     ebp,esp | 
|---|
| 224 |  | 
|---|
| 225 | ; 59     return ret; | 
|---|
| 226 | mov     eax,[ebp+08h];  @CBE4 | 
|---|
| 227 |  | 
|---|
| 228 | ; 58     struct ret16bytes ret = {1,2,3,4}; | 
|---|
| 229 | mov     dword ptr [ebp-010h],01h;       ret | 
|---|
| 230 | mov     dword ptr [ebp-0ch],02h;        ret | 
|---|
| 231 |  | 
|---|
| 232 | ; 59     return ret; | 
|---|
| 233 | mov     ecx,[ebp-010h]; ret | 
|---|
| 234 | mov     edx,[ebp-0ch];  ret | 
|---|
| 235 | mov     [eax],ecx | 
|---|
| 236 |  | 
|---|
| 237 | ; 58     struct ret16bytes ret = {1,2,3,4}; | 
|---|
| 238 | mov     dword ptr [ebp-08h],03h;        ret | 
|---|
| 239 |  | 
|---|
| 240 | ; 59     return ret; | 
|---|
| 241 | mov     [eax+04h],edx | 
|---|
| 242 | mov     edx,[ebp-08h];  ret | 
|---|
| 243 |  | 
|---|
| 244 | ; 58     struct ret16bytes ret = {1,2,3,4}; | 
|---|
| 245 | mov     dword ptr [ebp-04h],04h;        ret | 
|---|
| 246 |  | 
|---|
| 247 | ; 59     return ret; | 
|---|
| 248 | mov     ecx,[ebp-04h];  ret | 
|---|
| 249 | mov     [eax+08h],edx | 
|---|
| 250 | mov     [eax+0ch],ecx | 
|---|
| 251 | pop     ebp | 
|---|
| 252 | ret | 
|---|
| 253 | asmfoosys16     endp | 
|---|
| 254 |  | 
|---|
| 255 | ; 50 struct ret12bytes _System   asmfoosys12(void) | 
|---|
| 256 | align 010h | 
|---|
| 257 |  | 
|---|
| 258 | public asmfoosys12 | 
|---|
| 259 | asmfoosys12     proc | 
|---|
| 260 |  | 
|---|
| 261 | ; 53     return ret; | 
|---|
| 262 | mov     eax,[esp+04h];  @CBE3 | 
|---|
| 263 |  | 
|---|
| 264 | ; 52     struct ret12bytes ret = {1,2,3}; | 
|---|
| 265 | mov     dword ptr [esp-0ch],01h;        ret | 
|---|
| 266 | mov     dword ptr [esp-08h],02h;        ret | 
|---|
| 267 |  | 
|---|
| 268 | ; 53     return ret; | 
|---|
| 269 | mov     edx,[esp-0ch];  ret | 
|---|
| 270 | mov     ecx,[esp-08h];  ret | 
|---|
| 271 | mov     [eax],edx | 
|---|
| 272 |  | 
|---|
| 273 | ; 52     struct ret12bytes ret = {1,2,3}; | 
|---|
| 274 | mov     dword ptr [esp-04h],03h;        ret | 
|---|
| 275 |  | 
|---|
| 276 | ; 53     return ret; | 
|---|
| 277 | mov     [eax+04h],ecx | 
|---|
| 278 | mov     ecx,[esp-04h];  ret | 
|---|
| 279 | mov     [eax+08h],ecx | 
|---|
| 280 | ret | 
|---|
| 281 | asmfoosys12     endp | 
|---|
| 282 |  | 
|---|
| 283 | ; 44 struct ret8bytes _System    asmfoosys8(void) | 
|---|
| 284 | align 010h | 
|---|
| 285 |  | 
|---|
| 286 | public asmfoosys8 | 
|---|
| 287 | asmfoosys8      proc | 
|---|
| 288 |  | 
|---|
| 289 | ; 47     return ret; | 
|---|
| 290 | mov     eax,[esp+04h];  @CBE2 | 
|---|
| 291 |  | 
|---|
| 292 | ; 46     struct ret8bytes ret = {1,2}; | 
|---|
| 293 | mov     dword ptr [esp-08h],01h;        ret | 
|---|
| 294 | mov     dword ptr [esp-04h],02h;        ret | 
|---|
| 295 |  | 
|---|
| 296 | ; 47     return ret; | 
|---|
| 297 | mov     edx,[esp-08h];  ret | 
|---|
| 298 | mov     ecx,[esp-04h];  ret | 
|---|
| 299 | mov     [eax],edx | 
|---|
| 300 | mov     [eax+04h],ecx | 
|---|
| 301 | ret | 
|---|
| 302 | asmfoosys8      endp | 
|---|
| 303 |  | 
|---|
| 304 | ; 38 struct ret4bytes _System    asmfoosys4(void) | 
|---|
| 305 | align 010h | 
|---|
| 306 |  | 
|---|
| 307 | public asmfoosys4 | 
|---|
| 308 | asmfoosys4      proc | 
|---|
| 309 |  | 
|---|
| 310 | ; 41     return ret; | 
|---|
| 311 | mov     eax,[esp+04h];  @CBE1 | 
|---|
| 312 |  | 
|---|
| 313 | ; 40     struct ret4bytes ret = {1}; | 
|---|
| 314 | mov     dword ptr [esp-04h],01h;        ret | 
|---|
| 315 |  | 
|---|
| 316 | ; 41     return ret; | 
|---|
| 317 | mov     ecx,[esp-04h];  ret | 
|---|
| 318 | mov     [eax],ecx | 
|---|
| 319 | ret | 
|---|
| 320 | asmfoosys4      endp | 
|---|
| 321 |  | 
|---|
| 322 |  | 
|---|
| 323 |  | 
|---|
| 324 |  | 
|---|
| 325 | public _asmfoodef4_gcc | 
|---|
| 326 | _asmfoodef4_gcc: | 
|---|
| 327 | mov         eax, 1 | 
|---|
| 328 | ret | 
|---|
| 329 |  | 
|---|
| 330 | public _asmfoodef8_gcc | 
|---|
| 331 | _asmfoodef8_gcc: | 
|---|
| 332 | mov         eax, 1 | 
|---|
| 333 | mov         edx, 2 | 
|---|
| 334 | ret | 
|---|
| 335 |  | 
|---|
| 336 | public _asmfoodef12_gcc | 
|---|
| 337 | _asmfoodef12_gcc: | 
|---|
| 338 | push    ebp | 
|---|
| 339 | mov     ebp, esp | 
|---|
| 340 | sub     esp, 24 | 
|---|
| 341 | mov     eax, [ebp + 8] | 
|---|
| 342 | mov     dword ptr [eax + 0], 1 | 
|---|
| 343 | mov     dword ptr [eax + 4], 2 | 
|---|
| 344 | mov     dword ptr [eax + 8], 3 | 
|---|
| 345 | leave | 
|---|
| 346 | ret     4 | 
|---|
| 347 |  | 
|---|
| 348 | public _asmfoodef16_gcc | 
|---|
| 349 | _asmfoodef16_gcc: | 
|---|
| 350 | push    ebp | 
|---|
| 351 | mov     ebp, esp | 
|---|
| 352 | sub     esp, 24 | 
|---|
| 353 | mov     eax, [ebp + 8] | 
|---|
| 354 | mov     dword ptr [eax + 0], 1 | 
|---|
| 355 | mov     dword ptr [eax + 4], 2 | 
|---|
| 356 | mov     dword ptr [eax + 8], 3 | 
|---|
| 357 | mov     dword ptr [eax +12], 4 | 
|---|
| 358 | leave | 
|---|
| 359 | ret     4 | 
|---|
| 360 |  | 
|---|
| 361 | CODE32  ends | 
|---|
| 362 | end | 
|---|