 
 : (%box-long-long) ( n -- )
     [
-        EDX over next-stack@ MOV
-        EAX swap cell - next-stack@ MOV 
+        [ EDX swap next-stack@ MOV ]
+        [ EAX swap cell - next-stack@ MOV ] bi
     ] when* ;
 
 M:: x86.32 %box-long-long ( dst n func -- )

    n [ n local@ rep store-return-reg ] when ;

M:: x86.32 %unbox-long-long ( src n func -- )
    call-unbox-func
    ! Store the return value on the C stack
    [
        [ local@ EAX MOV ]
        [ 4 + local@ EDX MOV ] bi
    ] when* ;

    ! Store it as the first parameter
    0 local@ EAX MOV ;

M:: x86.32 %box-small-struct ( dst c-type -- )
    #! Box a <= 8-byte struct returned in EAX:EDX. OS X only.
    12 save-vm-ptr
    8 stack@ c-type heap-size MOV
    4 stack@ EDX MOV
    0 stack@ EAX MOV
    "from_small_struct" f %alien-invoke
