; Listing generated by Microsoft (R) Optimizing Compiler Version 18.00.30723.0 

include listing.inc

INCLUDELIB LIBCMT
INCLUDELIB OLDNAMES

_DATA	SEGMENT
$SG3094	DB	0aH, '%d %p %d = %d', 00H
_DATA	ENDS
PUBLIC	ActionCarrier
PUBLIC	sum
PUBLIC	difference
PUBLIC	product
PUBLIC	quotient
PUBLIC	modulus
PUBLIC	main
EXTRN	printf:PROC
pdata	SEGMENT
$pdata$ActionCarrier DD imagerel $LN3
	DD	imagerel $LN3+65
	DD	imagerel $unwind$ActionCarrier
$pdata$main DD	imagerel $LN3
	DD	imagerel $LN3+132
	DD	imagerel $unwind$main
pdata	ENDS
xdata	SEGMENT
$unwind$ActionCarrier DD 011201H
	DD	06212H
$unwind$main DD	010401H
	DD	06204H
xdata	ENDS
; Function compile flags: /Odtp
_TEXT	SEGMENT
b$ = 32
a$ = 36
main	PROC
; File c:\src\blog posts\function pointers and delegates\function pointer.c
; Line 11
$LN3:
	sub	rsp, 56					; 00000038H
; Line 12
	mov	DWORD PTR a$[rsp], 20
	mov	DWORD PTR b$[rsp], 7
; Line 13
	mov	r8d, DWORD PTR b$[rsp]
	mov	edx, DWORD PTR a$[rsp]
	lea	rcx, OFFSET FLAT:sum
	call	ActionCarrier
; Line 14
	mov	r8d, DWORD PTR b$[rsp]
	mov	edx, DWORD PTR a$[rsp]
	lea	rcx, OFFSET FLAT:difference
	call	ActionCarrier
; Line 15
	mov	r8d, DWORD PTR b$[rsp]
	mov	edx, DWORD PTR a$[rsp]
	lea	rcx, OFFSET FLAT:product
	call	ActionCarrier
; Line 16
	mov	r8d, DWORD PTR b$[rsp]
	mov	edx, DWORD PTR a$[rsp]
	lea	rcx, OFFSET FLAT:quotient
	call	ActionCarrier
; Line 17
	mov	r8d, DWORD PTR b$[rsp]
	mov	edx, DWORD PTR a$[rsp]
	lea	rcx, OFFSET FLAT:modulus
	call	ActionCarrier
; Line 18
	xor	eax, eax
	add	rsp, 56					; 00000038H
	ret	0
main	ENDP
_TEXT	ENDS
; Function compile flags: /Odtp
_TEXT	SEGMENT
a$ = 8
b$ = 16
modulus	PROC
; File c:\src\blog posts\function pointers and delegates\function pointer.c
; Line 36
	mov	DWORD PTR [rsp+16], edx
	mov	DWORD PTR [rsp+8], ecx
; Line 37
	mov	eax, DWORD PTR a$[rsp]
	cdq
	idiv	DWORD PTR b$[rsp]
	mov	eax, edx
; Line 38
	ret	0
modulus	ENDP
_TEXT	ENDS
; Function compile flags: /Odtp
_TEXT	SEGMENT
a$ = 8
b$ = 16
quotient PROC
; File c:\src\blog posts\function pointers and delegates\function pointer.c
; Line 33
	mov	DWORD PTR [rsp+16], edx
	mov	DWORD PTR [rsp+8], ecx
; Line 34
	mov	eax, DWORD PTR a$[rsp]
	cdq
	idiv	DWORD PTR b$[rsp]
; Line 35
	ret	0
quotient ENDP
_TEXT	ENDS
; Function compile flags: /Odtp
_TEXT	SEGMENT
a$ = 8
b$ = 16
product	PROC
; File c:\src\blog posts\function pointers and delegates\function pointer.c
; Line 30
	mov	DWORD PTR [rsp+16], edx
	mov	DWORD PTR [rsp+8], ecx
; Line 31
	mov	eax, DWORD PTR a$[rsp]
	imul	eax, DWORD PTR b$[rsp]
; Line 32
	ret	0
product	ENDP
_TEXT	ENDS
; Function compile flags: /Odtp
_TEXT	SEGMENT
a$ = 8
b$ = 16
difference PROC
; File c:\src\blog posts\function pointers and delegates\function pointer.c
; Line 27
	mov	DWORD PTR [rsp+16], edx
	mov	DWORD PTR [rsp+8], ecx
; Line 28
	mov	eax, DWORD PTR b$[rsp]
	mov	ecx, DWORD PTR a$[rsp]
	sub	ecx, eax
	mov	eax, ecx
; Line 29
	ret	0
difference ENDP
_TEXT	ENDS
; Function compile flags: /Odtp
_TEXT	SEGMENT
a$ = 8
b$ = 16
sum	PROC
; File c:\src\blog posts\function pointers and delegates\function pointer.c
; Line 24
	mov	DWORD PTR [rsp+16], edx
	mov	DWORD PTR [rsp+8], ecx
; Line 25
	mov	eax, DWORD PTR b$[rsp]
	mov	ecx, DWORD PTR a$[rsp]
	add	ecx, eax
	mov	eax, ecx
; Line 26
	ret	0
sum	ENDP
_TEXT	ENDS
; Function compile flags: /Odtp
_TEXT	SEGMENT
action$ = 64
a$ = 72
b$ = 80
ActionCarrier PROC
; File c:\src\blog posts\function pointers and delegates\function pointer.c
; Line 20
$LN3:
	mov	DWORD PTR [rsp+24], r8d
	mov	DWORD PTR [rsp+16], edx
	mov	QWORD PTR [rsp+8], rcx
	sub	rsp, 56					; 00000038H
; Line 21
	mov	edx, DWORD PTR b$[rsp]
	mov	ecx, DWORD PTR a$[rsp]
	call	QWORD PTR action$[rsp]
	mov	DWORD PTR [rsp+32], eax
	mov	r9d, DWORD PTR b$[rsp]
	mov	r8, QWORD PTR action$[rsp]
	mov	edx, DWORD PTR a$[rsp]
	lea	rcx, OFFSET FLAT:$SG3094
	call	printf
; Line 22
	add	rsp, 56					; 00000038H
	ret	0
ActionCarrier ENDP
_TEXT	ENDS
END
