#include "zasm_GOOS_GOARCH.h"
#include "../../cmd/ld/textflag.h"
#define maxargs 16
TEXT runtime·asmstdcall(SB),NOSPLIT,$0
PUSHQ CX
MOVQ libcall_fn(CX), AX
MOVQ libcall_args(CX), SI
MOVQ libcall_n(CX), CX
MOVQ 0x30(GS), DI
MOVL $0, 0x68(DI)
SUBQ $(maxargs*8), SP
CMPL CX, $4
JLE loadregs
CMPL CX, $maxargs
JLE 2(PC)
INT $3
MOVQ SP, DI
CLD
REP; MOVSQ
MOVQ SP, SI
loadregs:
MOVQ 0(SI), CX
MOVQ 8(SI), DX
MOVQ 16(SI), R8
MOVQ 24(SI), R9
CALL AX
ADDQ $(maxargs*8), SP
POPQ CX
MOVQ AX, libcall_r1(CX)
MOVQ 0x30(GS), DI
MOVL 0x68(DI), AX
MOVQ AX, libcall_err(CX)
RET
TEXT runtime·badsignal2(SB),NOSPLIT,$48
MOVQ $-12, CX
MOVQ CX, 0(SP)
MOVQ runtime·GetStdHandle(SB), AX
CALL AX
MOVQ AX, CX
MOVQ CX, 0(SP)
MOVQ $runtime·badsignalmsg(SB), DX
MOVQ DX, 8(SP)
MOVL $runtime·badsignallen(SB), R8
MOVQ R8, 16(SP)
LEAQ 40(SP), R9
MOVQ $0, 0(R9)
MOVQ R9, 24(SP)
MOVQ $0, 32(SP)
MOVQ runtime·WriteFile(SB), AX
CALL AX
RET
TEXT runtime·getlasterror(SB),NOSPLIT,$0
MOVQ 0x30(GS), AX
MOVL 0x68(AX), AX
RET
TEXT runtime·setlasterror(SB),NOSPLIT,$0
MOVL err+0(FP), AX
MOVQ 0x30(GS), CX
MOVL AX, 0x68(CX)
RET
TEXT runtime·sigtramp(SB),NOSPLIT,$0-0
PUSHFQ
SUBQ $88, SP
MOVQ DI, 80(SP)
MOVQ SI, 72(SP)
MOVQ BP, 64(SP)
MOVQ BX, 56(SP)
MOVQ R12, 48(SP)
MOVQ R13, 40(SP)
MOVQ R14, 32(SP)
MOVQ R15, 24(SP)
MOVQ 0(CX), BX
MOVQ 8(CX), CX
get_tls(DX)
MOVQ m(DX), AX
CMPQ AX, $0
JNE 2(PC)
CALL runtime·badsignal2(SB)
MOVQ g(DX), DX
MOVQ BX, 0(SP)
MOVQ CX, 8(SP)
MOVQ DX, 16(SP)
CALL runtime·sighandler(SB)
MOVQ 24(SP), R15
MOVQ 32(SP), R14
MOVQ 40(SP), R13
MOVQ 48(SP), R12
MOVQ 56(SP), BX
MOVQ 64(SP), BP
MOVQ 72(SP), SI
MOVQ 80(SP), DI
ADDQ $88, SP
POPFQ
RET
TEXT runtime·ctrlhandler(SB),NOSPLIT,$8
MOVQ CX, 16(SP)
MOVQ $runtime·ctrlhandler1(SB), CX
MOVQ CX, 0(SP)
CALL runtime·externalthreadhandler(SB)
RET
TEXT runtime·profileloop(SB),NOSPLIT,$8
MOVQ $runtime·profileloop1(SB), CX
MOVQ CX, 0(SP)
CALL runtime·externalthreadhandler(SB)
RET
TEXT runtime·externalthreadhandler(SB),NOSPLIT,$0
PUSHQ BP
MOVQ SP, BP
PUSHQ BX
PUSHQ SI
PUSHQ DI
PUSHQ 0x28(GS)
MOVQ SP, DX
SUBQ $m_end, SP
MOVQ SP, 0(SP)
MOVQ $m_end, 8(SP)
CALL runtime·memclr(SB)
LEAQ m_tls(SP), CX
MOVQ CX, 0x28(GS)
MOVQ SP, m(CX)
MOVQ SP, BX
SUBQ $g_end, SP
MOVQ SP, g(CX)
MOVQ SP, m_g0(BX)
MOVQ SP, 0(SP)
MOVQ $g_end, 8(SP)
CALL runtime·memclr(SB)
LEAQ -8192(SP), CX
MOVQ CX, g_stackguard(SP)
MOVQ DX, g_stackbase(SP)
PUSHQ 32(BP)
CALL 16(BP)
POPQ CX
get_tls(CX)
MOVQ g(CX), CX
MOVQ g_stackbase(CX), SP
POPQ 0x28(GS)
POPQ DI
POPQ SI
POPQ BX
POPQ BP
RET
GLOBL runtime·cbctxts(SB), $8
TEXT runtime·callbackasm1(SB),NOSPLIT,$0
MOVQ CX, (16+0)(SP)
MOVQ DX, (16+8)(SP)
MOVQ R8, (16+16)(SP)
MOVQ R9, (16+24)(SP)
MOVQ 0(SP), AX
ADDQ $8, SP
SUBQ $runtime·callbackasm(SB), AX
MOVQ $0, DX
MOVQ $5, CX
DIVL CX,
MOVQ runtime·cbctxts(SB), CX
MOVQ -8(CX)(AX*8), AX
MOVQ cbctxt_argsize(AX), DX
MOVQ cbctxt_gobody(AX), AX
LEAQ 8(SP), CX
PUSHQ 0(CX)(DX*1)
ADDQ $8, DX
PUSHFQ
SUBQ $64, SP
MOVQ DI, 56(SP)
MOVQ SI, 48(SP)
MOVQ BP, 40(SP)
MOVQ BX, 32(SP)
MOVQ R12, 24(SP)
MOVQ R13, 16(SP)
MOVQ R14, 8(SP)
MOVQ R15, 0(SP)
SUBQ $24, SP
MOVQ DX, 16(SP)
MOVQ CX, 8(SP)
MOVQ AX, 0(SP)
CLD
CALL runtime·cgocallback_gofunc(SB)
MOVQ 0(SP), AX
MOVQ 8(SP), CX
MOVQ 16(SP), DX
ADDQ $24, SP
MOVQ 0(SP), R15
MOVQ 8(SP), R14
MOVQ 16(SP), R13
MOVQ 24(SP), R12
MOVQ 32(SP), BX
MOVQ 40(SP), BP
MOVQ 48(SP), SI
MOVQ 56(SP), DI
ADDQ $64, SP
POPFQ
MOVL -8(CX)(DX*1), AX
POPQ -8(CX)(DX*1)
RET
TEXT runtime·tstart_stdcall(SB),NOSPLIT,$0
MOVQ m_g0(CX), DX
MOVQ SP, AX
MOVQ AX, g_stackbase(DX)
SUBQ $(64*1024), AX
MOVQ AX, g_stackguard(DX)
LEAQ m_tls(CX), SI
MOVQ SI, 0x28(GS)
MOVQ CX, m(SI)
MOVQ DX, g(SI)
CLD
CALL runtime·stackcheck(SB)
CALL runtime·mstart(SB)
XORL AX, AX
RET
TEXT runtime·settls(SB),NOSPLIT,$0
MOVQ DI, 0x28(GS)
RET
TEXT runtime·usleep1(SB),NOSPLIT,$0
MOVL duration+0(FP), BX
MOVQ $runtime·usleep2(SB), AX
get_tls(R15)
CMPQ R15, $0
JNE 3(PC)
CALL AX
RET
MOVQ m(R15), R13
MOVQ (SP), R12
MOVQ R12, m_libcallpc(R13)
MOVQ g(R15), R12
MOVQ R12, m_libcallg(R13)
LEAQ 8(SP), R12
MOVQ R12, m_libcallsp(R13)
MOVQ m_g0(R13), R14
CMPQ g(R15), R14
JNE usleep1_switch
CALL AX
JMP usleep1_ret
usleep1_switch:
MOVQ (g_sched+gobuf_sp)(R14), R14
MOVQ SP, -8(R14)
LEAQ -8(R14), SP
CALL AX
MOVQ 0(SP), SP
usleep1_ret:
MOVQ $0, m_libcallsp(R13)
RET
TEXT runtime·usleep2(SB),NOSPLIT,$8
NEGQ BX
MOVQ SP, R8
MOVQ BX, (R8)
MOVQ $-1, CX
MOVQ $0, DX
MOVQ runtime·NtWaitForSingleObject(SB), AX
CALL AX
RET