global _setjmp global setjmp _setjmp: setjmp: mov rsi, 0 mov [rdi], rbx mov [rdi+8], r12 mov [rdi+16], r13 mov [rdi+24], r14 mov [rdi+32], r15 mov [rdi+40], rbp mov [rdi+48], rsp mov rax, [rsp] mov [rdi+56], rax xor rax, rax ret global _longjmp global longjmp _longjmp: longjmp: mov rax, rsi cmp rax, 0 jne .nonzero mov rax, 1 .nonzero: mov rbx, [rdi] mov r12, [rdi+8] mov r13, [rdi+16] mov r14, [rdi+24] mov r15, [rdi+32] mov rbp, [rdi+40] mov rsp, [rdi+48] mov rcx, [rdi+56] mov [rsp], rcx ret