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


: (%box-long-long) ( n -- )
    [
        EDX over next-stack@ MOV
        EAX swap cell - next-stack@ MOV 
    ] when* ;

M:: x86.32 %box-long-long ( dst n func -- )

    ! 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
