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

	TITLE	C:\Beefy\BeefySysLib\third_party\libffi\src\prep_cif.c
	.686P
	.XMM
	include listing.inc
	.model	flat

INCLUDELIB LIBCMTD
INCLUDELIB OLDNAMES

PUBLIC	_ffi_prep_cif_core
PUBLIC	_ffi_prep_closure
PUBLIC	_ffi_prep_cif
PUBLIC	_ffi_prep_cif_var
EXTRN	_ffi_prep_closure_loc:PROC
EXTRN	_ffi_prep_cif_machdep:PROC
; Function compile flags: /Odtp
_TEXT	SEGMENT
tv139 = -20						; size = 4
tv83 = -16						; size = 4
tv75 = -12						; size = 4
tv67 = -8						; size = 4
_ptr$ = -4						; size = 4
_arg$ = 8						; size = 4
_initialize_aggregate PROC
; File c:\beefy\beefysyslib\third_party\libffi\src\prep_cif.c
; Line 38
	push	ebp
	mov	ebp, esp
	sub	esp, 20					; 00000014H
; Line 41
	cmp	DWORD PTR _arg$[ebp], 0
	je	SHORT $LN10@initialize
	mov	eax, DWORD PTR _arg$[ebp]
	cmp	DWORD PTR [eax+8], 0
	je	SHORT $LN10@initialize
	mov	DWORD PTR tv67[ebp], 0
	jmp	SHORT $LN11@initialize
$LN10@initialize:
	mov	DWORD PTR tv67[ebp], 1
$LN11@initialize:
	cmp	DWORD PTR tv67[ebp], 0
	je	SHORT $LN7@initialize
; Line 42
	mov	eax, 1
	jmp	$LN8@initialize
$LN7@initialize:
; Line 44
	mov	ecx, DWORD PTR _arg$[ebp]
	mov	DWORD PTR [ecx], 0
; Line 45
	xor	edx, edx
	mov	eax, DWORD PTR _arg$[ebp]
	mov	WORD PTR [eax+4], dx
; Line 47
	mov	ecx, 4
	imul	edx, ecx, 0
	mov	eax, DWORD PTR _arg$[ebp]
	add	edx, DWORD PTR [eax+8]
	mov	DWORD PTR _ptr$[ebp], edx
; Line 49
	jne	SHORT $LN12@initialize
	mov	DWORD PTR tv75[ebp], 1
	jmp	SHORT $LN13@initialize
$LN12@initialize:
	mov	DWORD PTR tv75[ebp], 0
$LN13@initialize:
	cmp	DWORD PTR tv75[ebp], 0
	je	SHORT $LN5@initialize
; Line 50
	mov	eax, 1
	jmp	$LN8@initialize
$LN5@initialize:
; Line 52
	mov	ecx, DWORD PTR _ptr$[ebp]
	cmp	DWORD PTR [ecx], 0
	je	$LN4@initialize
; Line 55
	mov	edx, DWORD PTR _ptr$[ebp]
	mov	eax, DWORD PTR [edx]
	cmp	DWORD PTR [eax], 0
	jne	SHORT $LN14@initialize
	mov	ecx, DWORD PTR _ptr$[ebp]
	mov	edx, DWORD PTR [ecx]
	push	edx
	call	_initialize_aggregate
	add	esp, 4
	test	eax, eax
	je	SHORT $LN14@initialize
	mov	DWORD PTR tv83[ebp], 1
	jmp	SHORT $LN15@initialize
$LN14@initialize:
	mov	DWORD PTR tv83[ebp], 0
$LN15@initialize:
	cmp	DWORD PTR tv83[ebp], 0
	je	SHORT $LN3@initialize
; Line 56
	mov	eax, 1
	jmp	$LN8@initialize
$LN3@initialize:
; Line 61
	mov	eax, DWORD PTR _arg$[ebp]
	mov	ecx, DWORD PTR [eax]
	sub	ecx, 1
	mov	edx, DWORD PTR _ptr$[ebp]
	mov	eax, DWORD PTR [edx]
	movzx	edx, WORD PTR [eax+4]
	sub	edx, 1
	or	ecx, edx
	add	ecx, 1
	mov	eax, DWORD PTR _arg$[ebp]
	mov	DWORD PTR [eax], ecx
; Line 62
	mov	ecx, DWORD PTR _ptr$[ebp]
	mov	edx, DWORD PTR [ecx]
	mov	eax, DWORD PTR _arg$[ebp]
	mov	ecx, DWORD PTR [eax]
	add	ecx, DWORD PTR [edx]
	mov	edx, DWORD PTR _arg$[ebp]
	mov	DWORD PTR [edx], ecx
; Line 65
	mov	eax, DWORD PTR _arg$[ebp]
	movzx	ecx, WORD PTR [eax+4]
	mov	edx, DWORD PTR _ptr$[ebp]
	mov	eax, DWORD PTR [edx]
	movzx	edx, WORD PTR [eax+4]
	cmp	ecx, edx
	jle	SHORT $LN16@initialize
	mov	eax, DWORD PTR _arg$[ebp]
	movzx	ecx, WORD PTR [eax+4]
	mov	DWORD PTR tv139[ebp], ecx
	jmp	SHORT $LN17@initialize
$LN16@initialize:
	mov	edx, DWORD PTR _ptr$[ebp]
	mov	eax, DWORD PTR [edx]
	movzx	ecx, WORD PTR [eax+4]
	mov	DWORD PTR tv139[ebp], ecx
$LN17@initialize:
	mov	edx, DWORD PTR _arg$[ebp]
	mov	ax, WORD PTR tv139[ebp]
	mov	WORD PTR [edx+4], ax
; Line 67
	mov	ecx, DWORD PTR _ptr$[ebp]
	add	ecx, 4
	mov	DWORD PTR _ptr$[ebp], ecx
; Line 68
	jmp	$LN5@initialize
$LN4@initialize:
; Line 77
	mov	edx, DWORD PTR _arg$[ebp]
	mov	eax, DWORD PTR [edx]
	sub	eax, 1
	mov	ecx, DWORD PTR _arg$[ebp]
	movzx	edx, WORD PTR [ecx+4]
	sub	edx, 1
	or	eax, edx
	add	eax, 1
	mov	ecx, DWORD PTR _arg$[ebp]
	mov	DWORD PTR [ecx], eax
; Line 79
	mov	edx, DWORD PTR _arg$[ebp]
	cmp	DWORD PTR [edx], 0
	jne	SHORT $LN2@initialize
; Line 80
	mov	eax, 1
	jmp	SHORT $LN8@initialize
; Line 81
	jmp	SHORT $LN8@initialize
$LN2@initialize:
; Line 82
	xor	eax, eax
$LN8@initialize:
; Line 83
	mov	esp, ebp
	pop	ebp
	ret	0
_initialize_aggregate ENDP
_TEXT	ENDS
; Function compile flags: /Odtp
_TEXT	SEGMENT
_cif$ = 8						; size = 4
_abi$ = 12						; size = 4
_nfixedargs$ = 16					; size = 4
_ntotalargs$ = 20					; size = 4
_rtype$ = 24						; size = 4
_atypes$ = 28						; size = 4
_ffi_prep_cif_var PROC
; File c:\beefy\beefysyslib\third_party\libffi\src\prep_cif.c
; Line 222
	push	ebp
	mov	ebp, esp
; Line 223
	mov	eax, DWORD PTR _atypes$[ebp]
	push	eax
	mov	ecx, DWORD PTR _rtype$[ebp]
	push	ecx
	mov	edx, DWORD PTR _ntotalargs$[ebp]
	push	edx
	mov	eax, DWORD PTR _nfixedargs$[ebp]
	push	eax
	push	1
	mov	ecx, DWORD PTR _abi$[ebp]
	push	ecx
	mov	edx, DWORD PTR _cif$[ebp]
	push	edx
	call	_ffi_prep_cif_core
	add	esp, 28					; 0000001cH
; Line 224
	pop	ebp
	ret	0
_ffi_prep_cif_var ENDP
_TEXT	ENDS
; Function compile flags: /Odtp
_TEXT	SEGMENT
_cif$ = 8						; size = 4
_abi$ = 12						; size = 4
_nargs$ = 16						; size = 4
_rtype$ = 20						; size = 4
_atypes$ = 24						; size = 4
_ffi_prep_cif PROC
; File c:\beefy\beefysyslib\third_party\libffi\src\prep_cif.c
; Line 212
	push	ebp
	mov	ebp, esp
; Line 213
	mov	eax, DWORD PTR _atypes$[ebp]
	push	eax
	mov	ecx, DWORD PTR _rtype$[ebp]
	push	ecx
	mov	edx, DWORD PTR _nargs$[ebp]
	push	edx
	mov	eax, DWORD PTR _nargs$[ebp]
	push	eax
	push	0
	mov	ecx, DWORD PTR _abi$[ebp]
	push	ecx
	mov	edx, DWORD PTR _cif$[ebp]
	push	edx
	call	_ffi_prep_cif_core
	add	esp, 28					; 0000001cH
; Line 214
	pop	ebp
	ret	0
_ffi_prep_cif ENDP
_TEXT	ENDS
; Function compile flags: /Odtp
_TEXT	SEGMENT
_closure$ = 8						; size = 4
_cif$ = 12						; size = 4
_fun$ = 16						; size = 4
_user_data$ = 20					; size = 4
_ffi_prep_closure PROC
; File c:\beefy\beefysyslib\third_party\libffi\src\prep_cif.c
; Line 233
	push	ebp
	mov	ebp, esp
; Line 234
	mov	eax, DWORD PTR _closure$[ebp]
	push	eax
	mov	ecx, DWORD PTR _user_data$[ebp]
	push	ecx
	mov	edx, DWORD PTR _fun$[ebp]
	push	edx
	mov	eax, DWORD PTR _cif$[ebp]
	push	eax
	mov	ecx, DWORD PTR _closure$[ebp]
	push	ecx
	call	_ffi_prep_closure_loc
	add	esp, 20					; 00000014H
; Line 235
	pop	ebp
	ret	0
_ffi_prep_closure ENDP
_TEXT	ENDS
; Function compile flags: /Odtp
_TEXT	SEGMENT
_bytes$ = -12						; size = 4
_i$ = -8						; size = 4
_ptr$ = -4						; size = 4
_cif$ = 8						; size = 4
_abi$ = 12						; size = 4
_isvariadic$ = 16					; size = 4
_nfixedargs$ = 20					; size = 4
_ntotalargs$ = 24					; size = 4
_rtype$ = 28						; size = 4
_atypes$ = 32						; size = 4
_ffi_prep_cif_core PROC
; File c:\beefy\beefysyslib\third_party\libffi\src\prep_cif.c
; Line 105
	push	ebp
	mov	ebp, esp
	sub	esp, 12					; 0000000cH
; Line 106
	mov	DWORD PTR _bytes$[ebp], 0
; Line 118
	cmp	DWORD PTR _abi$[ebp], 0
	jle	SHORT $LN6@ffi_prep_c
	cmp	DWORD PTR _abi$[ebp], 6
	jl	SHORT $LN7@ffi_prep_c
$LN6@ffi_prep_c:
	cmp	DWORD PTR _abi$[ebp], 3
	je	SHORT $LN7@ffi_prep_c
; Line 119
	mov	eax, 2
	jmp	$LN8@ffi_prep_c
$LN7@ffi_prep_c:
; Line 122
	mov	eax, DWORD PTR _cif$[ebp]
	mov	ecx, DWORD PTR _abi$[ebp]
	mov	DWORD PTR [eax], ecx
; Line 123
	mov	edx, DWORD PTR _cif$[ebp]
	mov	eax, DWORD PTR _atypes$[ebp]
	mov	DWORD PTR [edx+8], eax
; Line 124
	mov	ecx, DWORD PTR _cif$[ebp]
	mov	edx, DWORD PTR _ntotalargs$[ebp]
	mov	DWORD PTR [ecx+4], edx
; Line 125
	mov	eax, DWORD PTR _cif$[ebp]
	mov	ecx, DWORD PTR _rtype$[ebp]
	mov	DWORD PTR [eax+12], ecx
; Line 127
	mov	edx, DWORD PTR _cif$[ebp]
	mov	DWORD PTR [edx+20], 0
; Line 130
	mov	eax, DWORD PTR _cif$[ebp]
	mov	ecx, DWORD PTR [eax+12]
	cmp	DWORD PTR [ecx], 0
	jne	SHORT $LN5@ffi_prep_c
	mov	edx, DWORD PTR _cif$[ebp]
	mov	eax, DWORD PTR [edx+12]
	push	eax
	call	_initialize_aggregate
	add	esp, 4
	test	eax, eax
	je	SHORT $LN5@ffi_prep_c
; Line 131
	mov	eax, 1
	jmp	SHORT $LN8@ffi_prep_c
$LN5@ffi_prep_c:
; Line 154
	mov	ecx, DWORD PTR _cif$[ebp]
	mov	edx, DWORD PTR [ecx+8]
	mov	DWORD PTR _ptr$[ebp], edx
	mov	eax, DWORD PTR _cif$[ebp]
	mov	ecx, DWORD PTR [eax+4]
	mov	DWORD PTR _i$[ebp], ecx
	jmp	SHORT $LN4@ffi_prep_c
$LN3@ffi_prep_c:
	mov	edx, DWORD PTR _i$[ebp]
	sub	edx, 1
	mov	DWORD PTR _i$[ebp], edx
	mov	eax, DWORD PTR _ptr$[ebp]
	add	eax, 4
	mov	DWORD PTR _ptr$[ebp], eax
$LN4@ffi_prep_c:
	cmp	DWORD PTR _i$[ebp], 0
	jbe	SHORT $LN2@ffi_prep_c
; Line 158
	mov	ecx, DWORD PTR _ptr$[ebp]
	mov	edx, DWORD PTR [ecx]
	cmp	DWORD PTR [edx], 0
	jne	SHORT $LN1@ffi_prep_c
	mov	eax, DWORD PTR _ptr$[ebp]
	mov	ecx, DWORD PTR [eax]
	push	ecx
	call	_initialize_aggregate
	add	esp, 4
	test	eax, eax
	je	SHORT $LN1@ffi_prep_c
; Line 159
	mov	eax, 1
	jmp	SHORT $LN8@ffi_prep_c
$LN1@ffi_prep_c:
; Line 196
	jmp	SHORT $LN3@ffi_prep_c
$LN2@ffi_prep_c:
; Line 198
	mov	edx, DWORD PTR _cif$[ebp]
	mov	eax, DWORD PTR _bytes$[ebp]
	mov	DWORD PTR [edx+16], eax
; Line 206
	mov	ecx, DWORD PTR _cif$[ebp]
	push	ecx
	call	_ffi_prep_cif_machdep
	add	esp, 4
$LN8@ffi_prep_c:
; Line 207
	mov	esp, ebp
	pop	ebp
	ret	0
_ffi_prep_cif_core ENDP
_TEXT	ENDS
END
