| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 | // Copyright 2012 The Go Authors. All rights reserved.// Use of this source code is governed by a BSD-style// license that can be found in the LICENSE file.// +build windows// func servicemain(argc uint32, argv **uint16)TEXT ·servicemain(SB),7,$0	MOVL	argc+0(FP), AX	MOVL	AX, ·sArgc(SB)	MOVL	argv+4(FP), AX	MOVL	AX, ·sArgv(SB)	PUSHL	BP	PUSHL	BX	PUSHL	SI	PUSHL	DI	SUBL	$12, SP	MOVL	·sName(SB), AX	MOVL	AX, (SP)	MOVL	$·servicectlhandler(SB), AX	MOVL	AX, 4(SP)	MOVL	$0, 8(SP)	MOVL	·cRegisterServiceCtrlHandlerExW(SB), AX	MOVL	SP, BP	CALL	AX	MOVL	BP, SP	CMPL	AX, $0	JE	exit	MOVL	AX, ·ssHandle(SB)	MOVL	·goWaitsH(SB), AX	MOVL	AX, (SP)	MOVL	·cSetEvent(SB), AX	MOVL	SP, BP	CALL	AX	MOVL	BP, SP	MOVL	·cWaitsH(SB), AX	MOVL	AX, (SP)	MOVL	$-1, AX	MOVL	AX, 4(SP)	MOVL	·cWaitForSingleObject(SB), AX	MOVL	SP, BP	CALL	AX	MOVL	BP, SPexit:	ADDL	$12, SP	POPL	DI	POPL	SI	POPL	BX	POPL	BP	MOVL	0(SP), CX	ADDL	$12, SP	JMP	CX// I do not know why, but this seems to be the only way to call// ctlHandlerProc on Windows 7.// func servicectlhandler(ctl uint32, evtype uint32, evdata uintptr, context uintptr) uintptr {TEXT ·servicectlhandler(SB),7,$0	MOVL	·ctlHandlerExProc(SB), CX	JMP	CX
 |