     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 -- )

    dst dst [] MOV
    temp "datastack" context-field-offset [+] bootstrap-cell SUB ;

:: call-unbox-func ( src func -- )
    EAX src tagged-rep %copy
    4 save-vm-ptr
    0 stack@ EAX MOV
    func f %alien-invoke ;

M:: x86.32 %unbox ( src n rep func -- )
    ! If n is f, we're unboxing a return value about to be
