	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.section	__TEXT,__literal8,8byte_literals
	.p2align	3                               ## -- Begin function Atari800_Frame
LCPI0_0:
	.quad	0x3f91111111111111              ## double 0.016666666666666666
	.section	__TEXT,__text,regular,pure_instructions
	.globl	_Atari800_Frame
	.p2align	4, 0x90
_Atari800_Frame:                        ## @Atari800_Frame
	.cfi_startproc
## %bb.0:
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset %rbp, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register %rbp
	pushq	%rbx
	pushq	%rax
	.cfi_offset %rbx, -24
	movq	_INPUT_key_code@GOTPCREL(%rip), %rax
	movl	(%rax), %eax
	addl	$-128, %eax
	cmpl	$7, %eax
	ja	LBB0_10
## %bb.1:
	leaq	LJTI0_0(%rip), %rcx
	movslq	(%rcx,%rax,4), %rax
	addq	%rcx, %rax
	jmpq	*%rax
LBB0_3:
	xorl	%eax, %eax
	callq	_Atari800_Warmstart
	jmp	LBB0_10
LBB0_6:
	xorl	%eax, %eax
	callq	_UI_Run
	jmp	LBB0_10
LBB0_5:
	movq	_Atari800_turbo@GOTPCREL(%rip), %rax
	xorl	%ecx, %ecx
	cmpl	$0, (%rax)
	sete	%cl
	movl	%ecx, (%rax)
	jmp	LBB0_10
LBB0_8:
	movq	_TRUE@GOTPCREL(%rip), %rax
	jmp	LBB0_9
LBB0_7:
	movq	_FALSE@GOTPCREL(%rip), %rax
LBB0_9:
	movq	(%rax), %rdi
	callq	_Screen_SaveNextScreenshot
	jmp	LBB0_10
LBB0_2:
	xorl	%eax, %eax
	callq	_Atari800_Coldstart
LBB0_10:
	xorl	%eax, %eax
	callq	_Devices_Frame
	xorl	%eax, %eax
	callq	_INPUT_Frame
	xorl	%eax, %eax
	callq	_GTIA_Frame
	movl	_Atari800_Frame.refresh_counter(%rip), %eax
	incl	%eax
	movl	%eax, _Atari800_Frame.refresh_counter(%rip)
	movq	_Atari800_refresh_rate@GOTPCREL(%rip), %rcx
	cmpl	(%rcx), %eax
	jge	LBB0_11
## %bb.12:
	movq	_Atari800_collisions_in_skipped_frames@GOTPCREL(%rip), %rax
	movq	(%rax), %rdi
	callq	_ANTIC_Frame
	movq	_FALSE@GOTPCREL(%rip), %rbx
	jmp	LBB0_13
LBB0_11:
	movl	$0, _Atari800_Frame.refresh_counter(%rip)
	movq	_TRUE@GOTPCREL(%rip), %rbx
	movq	(%rbx), %rdi
	callq	_ANTIC_Frame
	xorl	%eax, %eax
	callq	_INPUT_DrawMousePointer
	xorl	%eax, %eax
	callq	_Util_time
	callq	_Screen_DrawAtariSpeed
	xorl	%eax, %eax
	callq	_Screen_DrawDiskLED
	xorl	%eax, %eax
	callq	_Screen_Draw1200LED
LBB0_13:
	movq	(%rbx), %rax
	movq	_Atari800_display_screen@GOTPCREL(%rip), %rbx
	movq	%rax, (%rbx)
	xorl	%eax, %eax
	callq	_POKEY_Frame
	movq	_Atari800_nframes@GOTPCREL(%rip), %rax
	incq	(%rax)
	movq	_Atari800_turbo@GOTPCREL(%rip), %rax
	cmpl	$0, (%rax)
	je	LBB0_16
## %bb.14:
	xorl	%eax, %eax
	callq	_Util_time
	movapd	%xmm0, %xmm1
	subsd	_Atari800_Frame.last_display_screen_time(%rip), %xmm1
	ucomisd	LCPI0_0(%rip), %xmm1
	jbe	LBB0_17
## %bb.15:
	movsd	%xmm0, _Atari800_Frame.last_display_screen_time(%rip)
	jmp	LBB0_18
LBB0_16:
	xorl	%eax, %eax
	addq	$8, %rsp
	popq	%rbx
	popq	%rbp
	jmp	_Atari800_Sync                  ## TAILCALL
LBB0_17:
	movq	_FALSE@GOTPCREL(%rip), %rax
	movq	(%rax), %rax
	movq	%rax, (%rbx)
LBB0_18:
	addq	$8, %rsp
	popq	%rbx
	popq	%rbp
	retq
LBB0_4:
	movq	_FALSE@GOTPCREL(%rip), %rax
	movq	(%rax), %rdi
	callq	_Atari800_Exit
	xorl	%edi, %edi
	callq	_exit
	.cfi_endproc
	.p2align	2, 0x90
	.data_region jt32
.set L0_0_set_3, LBB0_3-LJTI0_0
.set L0_0_set_6, LBB0_6-LJTI0_0
.set L0_0_set_5, LBB0_5-LJTI0_0
.set L0_0_set_8, LBB0_8-LJTI0_0
.set L0_0_set_7, LBB0_7-LJTI0_0
.set L0_0_set_10, LBB0_10-LJTI0_0
.set L0_0_set_4, LBB0_4-LJTI0_0
.set L0_0_set_2, LBB0_2-LJTI0_0
LJTI0_0:
	.long	L0_0_set_3
	.long	L0_0_set_6
	.long	L0_0_set_5
	.long	L0_0_set_8
	.long	L0_0_set_7
	.long	L0_0_set_10
	.long	L0_0_set_4
	.long	L0_0_set_2
	.end_data_region
                                        ## -- End function
.zerofill __DATA,__bss,_Atari800_Frame.refresh_counter,4,2 ## @Atari800_Frame.refresh_counter
	.comm	_INPUT_key_code,4,2             ## @INPUT_key_code
	.comm	_FALSE,8,3                      ## @FALSE
	.comm	_Atari800_turbo,4,2             ## @Atari800_turbo
	.comm	_TRUE,8,3                       ## @TRUE
	.comm	_Atari800_refresh_rate,4,2      ## @Atari800_refresh_rate
	.comm	_Atari800_display_screen,8,3    ## @Atari800_display_screen
	.comm	_Atari800_collisions_in_skipped_frames,8,3 ## @Atari800_collisions_in_skipped_frames
	.comm	_Atari800_nframes,8,3           ## @Atari800_nframes
.zerofill __DATA,__bss,_Atari800_Frame.last_display_screen_time,8,3 ## @Atari800_Frame.last_display_screen_time
	.comm	_BENCHMARK,8,3                  ## @BENCHMARK
	.comm	_UI_MENU_MONITOR,4,2            ## @UI_MENU_MONITOR
	.comm	_UI_alt_function,4,2            ## @UI_alt_function
	.comm	_benchmark_start_time,8,3       ## @benchmark_start_time
	.comm	_sigint_flag,8,3                ## @sigint_flag
.subsections_via_symbols

	.section	__TEXT,__text,regular,pure_instructions
	.build_version macos, 13, 0	sdk_version 13, 3
	.globl	_Atari800_Frame                 ; -- Begin function Atari800_Frame
	.p2align	2
_Atari800_Frame:                        ; @Atari800_Frame
	.cfi_startproc
; %bb.0:
	stp	x20, x19, [sp, #-32]!           ; 16-byte Folded Spill
	.cfi_def_cfa_offset 32
	stp	x29, x30, [sp, #16]             ; 16-byte Folded Spill
	add	x29, sp, #16
	.cfi_def_cfa w29, 16
	.cfi_offset w30, -8
	.cfi_offset w29, -16
	.cfi_offset w19, -24
	.cfi_offset w20, -32
Lloh0:
	adrp	x8, _INPUT_key_code@GOTPAGE
Lloh1:
	ldr	x8, [x8, _INPUT_key_code@GOTPAGEOFF]
Lloh2:
	ldr	w8, [x8]
	sub	w8, w8, #128
Lloh3:
	adrp	x19, _Atari800_turbo@GOTPAGE
Lloh4:
	ldr	x19, [x19, _Atari800_turbo@GOTPAGEOFF]
	cmp	w8, #7
	b.hi	LBB0_9
; %bb.1:
Lloh5:
	adrp	x9, lJTI0_0@PAGE
Lloh6:
	add	x9, x9, lJTI0_0@PAGEOFF
	adr	x10, LBB0_2
	ldrb	w11, [x9, x8]
	add	x10, x10, x11, lsl #2
	br	x10
LBB0_2:
	bl	_Atari800_Warmstart
	b	LBB0_9
LBB0_3:
	bl	_UI_Run
	b	LBB0_9
LBB0_4:
	ldr	w8, [x19]
	cmp	w8, #0
	cset	w8, eq
	str	w8, [x19]
	b	LBB0_9
LBB0_5:
Lloh7:
	adrp	x8, _TRUE@GOTPAGE
Lloh8:
	ldr	x8, [x8, _TRUE@GOTPAGEOFF]
	b	LBB0_7
LBB0_6:
Lloh9:
	adrp	x8, _FALSE@GOTPAGE
Lloh10:
	ldr	x8, [x8, _FALSE@GOTPAGEOFF]
LBB0_7:
	ldr	x0, [x8]
	bl	_Screen_SaveNextScreenshot
	b	LBB0_9
LBB0_8:
	bl	_Atari800_Coldstart
LBB0_9:
	bl	_Devices_Frame
	bl	_INPUT_Frame
	bl	_GTIA_Frame
	adrp	x8, _Atari800_Frame.refresh_counter@PAGE
	ldr	w9, [x8, _Atari800_Frame.refresh_counter@PAGEOFF]
	add	w9, w9, #1
	str	w9, [x8, _Atari800_Frame.refresh_counter@PAGEOFF]
Lloh11:
	adrp	x10, _Atari800_refresh_rate@GOTPAGE
Lloh12:
	ldr	x10, [x10, _Atari800_refresh_rate@GOTPAGEOFF]
Lloh13:
	ldr	w10, [x10]
	cmp	w9, w10
	b.ge	LBB0_11
; %bb.10:
Lloh14:
	adrp	x8, _Atari800_collisions_in_skipped_frames@GOTPAGE
Lloh15:
	ldr	x8, [x8, _Atari800_collisions_in_skipped_frames@GOTPAGEOFF]
Lloh16:
	ldr	x0, [x8]
	bl	_ANTIC_Frame
Lloh17:
	adrp	x20, _FALSE@GOTPAGE
Lloh18:
	ldr	x20, [x20, _FALSE@GOTPAGEOFF]
	b	LBB0_12
LBB0_11:
	str	wzr, [x8, _Atari800_Frame.refresh_counter@PAGEOFF]
Lloh19:
	adrp	x20, _TRUE@GOTPAGE
Lloh20:
	ldr	x20, [x20, _TRUE@GOTPAGEOFF]
	ldr	x0, [x20]
	bl	_ANTIC_Frame
	bl	_INPUT_DrawMousePointer
	bl	_Util_time
	bl	_Screen_DrawAtariSpeed
	bl	_Screen_DrawDiskLED
	bl	_Screen_Draw1200LED
LBB0_12:
	ldr	x8, [x20]
Lloh21:
	adrp	x20, _Atari800_display_screen@GOTPAGE
Lloh22:
	ldr	x20, [x20, _Atari800_display_screen@GOTPAGEOFF]
	str	x8, [x20]
	bl	_POKEY_Frame
Lloh23:
	adrp	x8, _Atari800_nframes@GOTPAGE
Lloh24:
	ldr	x8, [x8, _Atari800_nframes@GOTPAGEOFF]
	ldr	x9, [x8]
	add	x9, x9, #1
	str	x9, [x8]
	ldr	w8, [x19]
	cbz	w8, LBB0_15
; %bb.13:
	bl	_Util_time
	adrp	x8, _Atari800_Frame.last_display_screen_time@PAGE
	ldr	d1, [x8, _Atari800_Frame.last_display_screen_time@PAGEOFF]
	fsub	d1, d0, d1
	mov	x9, #1229782938247303441
	movk	x9, #16273, lsl #48
	fmov	d2, x9
	fcmp	d1, d2
	b.le	LBB0_16
; %bb.14:
	str	d0, [x8, _Atari800_Frame.last_display_screen_time@PAGEOFF]
	b	LBB0_17
LBB0_15:
	ldp	x29, x30, [sp, #16]             ; 16-byte Folded Reload
	ldp	x20, x19, [sp], #32             ; 16-byte Folded Reload
	b	_Atari800_Sync
LBB0_16:
Lloh25:
	adrp	x8, _FALSE@GOTPAGE
Lloh26:
	ldr	x8, [x8, _FALSE@GOTPAGEOFF]
Lloh27:
	ldr	x8, [x8]
	str	x8, [x20]
LBB0_17:
	ldp	x29, x30, [sp, #16]             ; 16-byte Folded Reload
	ldp	x20, x19, [sp], #32             ; 16-byte Folded Reload
	ret
LBB0_18:
Lloh28:
	adrp	x8, _FALSE@GOTPAGE
Lloh29:
	ldr	x8, [x8, _FALSE@GOTPAGEOFF]
Lloh30:
	ldr	x0, [x8]
	bl	_Atari800_Exit
	mov	w0, #0
	bl	_exit
	.loh AdrpLdrGot	Lloh3, Lloh4
	.loh AdrpLdrGotLdr	Lloh0, Lloh1, Lloh2
	.loh AdrpAdd	Lloh5, Lloh6
	.loh AdrpLdrGot	Lloh7, Lloh8
	.loh AdrpLdrGot	Lloh9, Lloh10
	.loh AdrpLdrGotLdr	Lloh11, Lloh12, Lloh13
	.loh AdrpLdrGot	Lloh17, Lloh18
	.loh AdrpLdrGotLdr	Lloh14, Lloh15, Lloh16
	.loh AdrpLdrGot	Lloh19, Lloh20
	.loh AdrpLdrGot	Lloh23, Lloh24
	.loh AdrpLdrGot	Lloh21, Lloh22
	.loh AdrpLdrGotLdr	Lloh25, Lloh26, Lloh27
	.loh AdrpLdrGotLdr	Lloh28, Lloh29, Lloh30
	.cfi_endproc
	.section	__TEXT,__const
lJTI0_0:
	.byte	(LBB0_2-LBB0_2)>>2
	.byte	(LBB0_3-LBB0_2)>>2
	.byte	(LBB0_4-LBB0_2)>>2
	.byte	(LBB0_5-LBB0_2)>>2
	.byte	(LBB0_6-LBB0_2)>>2
	.byte	(LBB0_9-LBB0_2)>>2
	.byte	(LBB0_18-LBB0_2)>>2
	.byte	(LBB0_8-LBB0_2)>>2
                                        ; -- End function
.zerofill __DATA,__bss,_Atari800_Frame.refresh_counter,4,2 ; @Atari800_Frame.refresh_counter
	.comm	_INPUT_key_code,4,2             ; @INPUT_key_code
	.comm	_FALSE,8,3                      ; @FALSE
	.comm	_Atari800_turbo,4,2             ; @Atari800_turbo
	.comm	_TRUE,8,3                       ; @TRUE
	.comm	_Atari800_refresh_rate,4,2      ; @Atari800_refresh_rate
	.comm	_Atari800_display_screen,8,3    ; @Atari800_display_screen
	.comm	_Atari800_collisions_in_skipped_frames,8,3 ; @Atari800_collisions_in_skipped_frames
	.comm	_Atari800_nframes,8,3           ; @Atari800_nframes
.zerofill __DATA,__bss,_Atari800_Frame.last_display_screen_time,8,3 ; @Atari800_Frame.last_display_screen_time
	.comm	_BENCHMARK,8,3                  ; @BENCHMARK
	.comm	_UI_MENU_MONITOR,4,2            ; @UI_MENU_MONITOR
	.comm	_UI_alt_function,4,2            ; @UI_alt_function
	.comm	_benchmark_start_time,8,3       ; @benchmark_start_time
	.comm	_sigint_flag,8,3                ; @sigint_flag
.subsections_via_symbols
