### Passing Conforming Parameters to an Unprototyped Routine

This example differs from the example of passing conforming parameters to a prototyped routine by providing:

- An eyecatcher after the call to `foo` in the caller's code
- The code necessary to perform the default widening rules required by ANSI
- The instruction to clean up the parameters from the stack.

If `foo` were an ellipsis routine with fewer than three conforming parameters in the invariant portion of its parameter list, it would also include the code to interpret the eyecatchers in its prolog.

       y = foo('A', x, y+x, y);

Caller's code surrounding call:

       PUSH     y                ; Push p4 onto the run-time stack
       SUB      ESP, 12          ; Allocate stack space for register parameters
       MOV      EAX, 00000041h   ; Put p1 into EAX (41 hex = A ASCII)
       MOVSX    EDX, x           ; Put p2 into EDX
       MOV      ECX, y           ; Load y to calculate p3
       ADD      ECX, x           ; Calculate p3 and put it into ECX
       CALL     FOO              ; Make call
       TEST     EAX, 00540000h   ; Eyecatcher indicating 3 general-purpose
                                 ;  register parameters
       ADD      ESP, 16          ; Clean up parameters after return

Calling Conventions
Eyecatchers

Examples of Passing Parameters Using _Optlink