	.file	"gen2_3.ll"
	.text
	.globl	bs15.gen2.3
	.align	16, 0x90
	.type	bs15.gen2.3,@function
bs15.gen2.3:                            # @bs15.gen2.3
# BB#0:                                 # %Entry
	pushq	%rbp
	pushq	%r14
	pushq	%r13
	pushq	%r12
	pushq	%rbx
	subq	$576, %rsp              # imm = 0x240
	movq	%rdi, 48(%rsp)          # 8-byte Spill
	movq	%rdx, 560(%rsp)
	movq	%rsi, 552(%rsp)
	movq	%rcx, 528(%rsp)
	movq	%r8, 536(%rsp)
	movq	%r9, 544(%rsp)
	movl	528(%rsp), %eax
	andl	536(%rsp), %eax
	andq	$15, %rax
	cmpq	$15, %rax
	jne	.LBB0_50
# BB#1:                                 # %L4
	movq	536(%rsp), %rax
	addq	$-15, %rax
	movq	528(%rsp), %rcx
	subq	%rax, %rcx
	movq	%rcx, 520(%rsp)
	jo	.LBB0_50
# BB#2:
	leaq	520(%rsp), %rdx
.LBB0_3:                                # %L2
	movq	(%rdx), %rax
	andq	$15, %rax
	cmpq	$15, %rax
	jne	.LBB0_48
# BB#4:                                 # %L10
	cmpq	$15, (%rdx)
	jl	.LBB0_49
.LBB0_5:                                # %L6
	movq	(%rdx), %rax
	andq	$15, %rax
	cmpq	$15, %rax
	jne	.LBB0_47
# BB#6:                                 # %L13
	movq	(%rdx), %rax
	addq	$0, %rax
	movq	%rax, 512(%rsp)
	jo	.LBB0_47
# BB#7:
	movq	%rdx, 32(%rsp)          # 8-byte Spill
	leaq	512(%rsp), %rbp
.LBB0_8:                                # %L11
	movq	536(%rsp), %rax
	andq	$15, %rax
	cmpq	$15, %rax
	jne	.LBB0_45
# BB#9:                                 # %L19
	cmpq	$15, 536(%rsp)
	jl	.LBB0_46
.LBB0_10:                               # %L15
	movl	536(%rsp), %eax
	andl	(%rbp), %eax
	andq	$15, %rax
	cmpq	$15, %rax
	jne	.LBB0_44
# BB#11:                                # %L22
	movq	(%rbp), %rax
	addq	$-15, %rax
	addq	536(%rsp), %rax
	movq	%rax, 504(%rsp)
	jo	.LBB0_44
# BB#12:
	leaq	504(%rsp), %rbp
.LBB0_13:                               # %L20
	movq	560(%rsp), %rax
	movq	8(%rax), %rax
	subq	552(%rsp), %rax
	cmpq	$127, %rax
	jg	.LBB0_15
# BB#14:                                # %L72
	movq	552(%rsp), %rsi
	movq	560(%rsp), %rdx
	leaq	224(%rsp), %rdi
	movl	$271, %ecx              # imm = 0x10F
	callq	gc_1
	movq	224(%rsp), %rax
	movq	232(%rsp), %rcx
	movq	%rcx, 560(%rsp)
	movq	%rax, 552(%rsp)
.LBB0_15:                               # %L71
	movq	(%rbp), %rax
	andq	$15, %rax
	cmpq	$15, %rax
	jne	.LBB0_40
# BB#16:                                # %L39
	movq	(%rbp), %rax
	movq	$-5, (%rbp)
	sarq	$4, %rax
	testq	%rax, %rax
	js	.LBB0_39
.LBB0_17:                               # %L41
	movq	%rax, %rdx
	shrq	$3, %rdx
	movq	%rax, %rcx
	andq	$7, %rcx
	movq	%rcx, 24(%rsp)          # 8-byte Spill
	jne	.LBB0_38
# BB#18:                                # %L32
	movq	%rdx, %rbp
.LBB0_19:                               # %L37
	movq	%rdx, 16(%rsp)          # 8-byte Spill
	movabsq	$2305843009213693951, %rcx # imm = 0x1FFFFFFFFFFFFFFF
	cmpq	%rcx, %rax
	jg	.LBB0_37
# BB#20:                                # %L34
	cmpq	$64, %rbp
	jg	.LBB0_36
# BB#21:                                # %L29
	leaq	7(%rbp), %rcx
	movabsq	$2305843009213693944, %rax # imm = 0x1FFFFFFFFFFFFFF8
	andq	%rcx, %rax
	leaq	100(,%rax,8), %rax
	movq	552(%rsp), %rdx
	movq	%rax, (%rdx)
	movq	552(%rsp), %rax
	movq	%rbp, 8(%rax)
	movq	552(%rsp), %rax
	leaq	23(%rax,%rbp), %rcx
	andq	$-8, %rcx
	movq	%rcx, 552(%rsp)
	addq	$16, %rdx
	movq	%rdx, 40(%rsp)          # 8-byte Spill
	addq	$2, %rax
.LBB0_22:                               # %L38
	xorl	%edi, %edi
	movq	24(%rsp), %rsi          # 8-byte Reload
	testq	%rsi, %rsi
	jne	.LBB0_35
# BB#23:                                # %L35
	movq	%rax, 488(%rsp)
	leaq	488(%rsp), %rdx
.LBB0_24:                               # %L24
	movq	%rdx, 24(%rsp)          # 8-byte Spill
	movq	536(%rsp), %rax
	andq	$15, %rax
	cmpq	$15, %rax
	jne	.LBB0_27
# BB#25:                                # %L50
	cmpq	$15, 536(%rsp)
	jl	.LBB0_27
# BB#26:                                # %L51
	movq	536(%rsp), %rbp
	movq	$-5, 536(%rsp)
	movq	552(%rsp), %rsi
	movq	560(%rsp), %rdx
	movq	544(%rsp), %rcx
	movq	%rdi, (%rsp)
	movq	$2, 8(%rsp)
	sarq	$4, %rbp
	leaq	128(%rsp), %rdi
	movq	%rbp, %r8
	movq	40(%rsp), %r9           # 8-byte Reload
	callq	bs_put_big_integer
	movq	128(%rsp), %rax
	movq	136(%rsp), %rcx
	cmpq	$0, 144(%rsp)
	movq	%rcx, 560(%rsp)
	movq	%rax, 552(%rsp)
	jne	.LBB0_30
.LBB0_27:                               # %L46
	movl	$badarg, %eax
	movq	%rax, 472(%rsp)
	movq	$-5, 472(%rsp)
	movq	552(%rsp), %rsi
	movq	560(%rsp), %rdx
	leaq	56(%rsp), %rdi
	movl	$badarg, %ecx
	callq	erlang.error.1
	movq	56(%rsp), %rax
	movq	64(%rsp), %rcx
.LBB0_28:                               # %L46
	movq	%rcx, 560(%rsp)
	movq	%rax, 552(%rsp)
	movq	48(%rsp), %rcx          # 8-byte Reload
	movq	%rax, (%rcx)
	movq	560(%rsp), %rax
	movq	%rax, 8(%rcx)
	movq	$15, 16(%rcx)
.LBB0_29:                               # %L46
	addq	$576, %rsp              # imm = 0x240
	popq	%rbx
	popq	%r12
	popq	%r13
	popq	%r14
	popq	%rbp
	ret
.LBB0_30:                               # %L52
	movq	32(%rsp), %rcx          # 8-byte Reload
	movq	(%rcx), %rax
	andq	$15, %rax
	cmpq	$15, %rax
	jne	.LBB0_33
# BB#31:                                # %L61
	cmpq	$15, (%rcx)
	jl	.LBB0_33
# BB#32:                                # %L62
	xorl	%eax, %eax
	addq	%rbp, %rax
	movq	(%rcx), %r8
	movq	$-5, (%rcx)
	movq	544(%rsp), %rcx
	movq	$-5, 544(%rsp)
	movq	552(%rsp), %rsi
	movq	560(%rsp), %rdx
	sarq	$4, %r8
	leaq	104(%rsp), %rdi
	movq	%rax, (%rsp)
	movq	$2, 8(%rsp)
	movq	40(%rsp), %r9           # 8-byte Reload
	callq	bs_put_big_integer
	movq	104(%rsp), %rax
	movq	112(%rsp), %rcx
	cmpq	$0, 120(%rsp)
	movq	%rcx, 560(%rsp)
	movq	%rax, 552(%rsp)
	jne	.LBB0_34
.LBB0_33:                               # %L57
	movl	$badarg, %eax
	movq	%rax, 480(%rsp)
	movq	$-5, 480(%rsp)
	movq	552(%rsp), %rsi
	movq	560(%rsp), %rdx
	leaq	80(%rsp), %rdi
	movl	$badarg, %ecx
	callq	erlang.error.1
	movq	80(%rsp), %rax
	movq	88(%rsp), %rcx
	jmp	.LBB0_28
.LBB0_34:                               # %L63
	movq	24(%rsp), %rcx          # 8-byte Reload
	movq	(%rcx), %rax
	movq	$-5, (%rcx)
	movq	48(%rsp), %rcx          # 8-byte Reload
	movq	%rax, 16(%rcx)
	movq	560(%rsp), %rax
	movq	%rax, 8(%rcx)
	movq	552(%rsp), %rax
	movq	%rax, (%rcx)
	jmp	.LBB0_29
.LBB0_35:                               # %L36
	movq	552(%rsp), %rcx
	leaq	2(%rcx), %rdx
	movq	%rdx, 496(%rsp)
	movq	$232, (%rcx)
	movq	496(%rsp), %rcx
	movq	16(%rsp), %rdx          # 8-byte Reload
	movq	%rdx, 6(%rcx)
	leaq	496(%rsp), %rdx
	movq	496(%rsp), %rcx
	movq	$0, 14(%rcx)
	movq	496(%rsp), %rcx
	movb	%sil, 22(%rcx)
	movq	496(%rsp), %rcx
	movb	$0, 23(%rcx)
	movq	496(%rsp), %rcx
	movb	$0, 24(%rcx)
	movq	496(%rsp), %rcx
	movq	%rax, 30(%rcx)
	addq	$40, 552(%rsp)
	jmp	.LBB0_24
.LBB0_36:                               # %L30
	movq	552(%rsp), %rsi
	movq	560(%rsp), %rdx
	leaq	152(%rsp), %rdi
	movq	%rbp, %rcx
	callq	bs_allocate
	movq	168(%rsp), %rdi
	movq	%rdi, 40(%rsp)          # 8-byte Spill
	movq	152(%rsp), %rax
	movq	160(%rsp), %rcx
	movq	%rcx, 560(%rsp)
	movq	%rax, 552(%rsp)
	movq	$352, (%rax)            # imm = 0x160
	movq	552(%rsp), %rcx
	movq	%rbp, 8(%rcx)
	movq	560(%rsp), %rcx
	addq	$2, %rax
	movq	584(%rcx), %rdx
	movq	552(%rsp), %rsi
	leaq	-24(%rdi), %rcx
	movq	%rdx, 16(%rsi)
	movq	552(%rsp), %rdx
	movq	560(%rsp), %rsi
	movq	%rdx, 584(%rsi)
	movq	552(%rsp), %rdx
	movq	%rcx, 24(%rdx)
	movq	552(%rsp), %rcx
	movq	%rdi, 32(%rcx)
	movq	552(%rsp), %rcx
	movq	$0, 40(%rcx)
	addq	$48, 552(%rsp)
	jmp	.LBB0_22
.LBB0_37:                               # %L27
	movl	$system_limit, %eax
	movq	%rax, 464(%rsp)
	movq	$-5, 464(%rsp)
	movq	552(%rsp), %rsi
	movq	560(%rsp), %rdx
	leaq	176(%rsp), %rdi
	movl	$system_limit, %ecx
	callq	erlang.error.1
	movq	176(%rsp), %rax
	movq	184(%rsp), %rcx
	jmp	.LBB0_28
.LBB0_38:                               # %L33
	leaq	1(%rdx), %rbp
	jmp	.LBB0_19
.LBB0_39:                               # %L25
	movl	$badarg, %eax
	movq	%rax, 456(%rsp)
	movq	$-5, 456(%rsp)
	movq	552(%rsp), %rsi
	movq	560(%rsp), %rdx
	leaq	200(%rsp), %rdi
	movl	$badarg, %ecx
	callq	erlang.error.1
	movq	200(%rsp), %rax
	movq	208(%rsp), %rcx
	jmp	.LBB0_28
.LBB0_40:                               # %L40
	testb	$1, (%rbp)
	jne	.LBB0_39
# BB#41:                                # %L43
	movq	(%rbp), %rax
	movq	-2(%rax), %rax
	andq	$63, %rax
	cmpq	$8, %rax
	jne	.LBB0_39
# BB#42:                                # %L42
	movq	(%rbp), %rax
	cmpq	$72, -2(%rax)
	jne	.LBB0_37
# BB#43:                                # %L44
	movq	(%rbp), %rax
	movq	$-5, (%rbp)
	movq	6(%rax), %rax
	jmp	.LBB0_17
.LBB0_44:                               # %L21
	movq	(%rbp), %r8
	movq	536(%rsp), %rcx
	movq	$-5, (%rbp)
	movq	552(%rsp), %rsi
	movq	560(%rsp), %rdx
	leaq	248(%rsp), %rdi
	callq	bif_add
	leaq	448(%rsp), %rbp
	movq	264(%rsp), %rax
	movq	248(%rsp), %rcx
	movq	256(%rsp), %rdx
	movq	%rdx, 560(%rsp)
	movq	%rcx, 552(%rsp)
	movq	%rax, 448(%rsp)
	jmp	.LBB0_13
.LBB0_45:                               # %L17
	movq	552(%rsp), %rsi
	movq	560(%rsp), %rdx
	movq	536(%rsp), %rcx
	leaq	296(%rsp), %rdi
	movl	$15, %r8d
	callq	cmp_2
	movq	296(%rsp), %rax
	movq	304(%rsp), %rcx
	cmpq	$0, 312(%rsp)
	movq	%rcx, 560(%rsp)
	movq	%rax, 552(%rsp)
	jns	.LBB0_10
.LBB0_46:                               # %L16
	movl	$badarg, %eax
	movq	%rax, 440(%rsp)
	movq	$-5, 440(%rsp)
	movq	552(%rsp), %rsi
	movq	560(%rsp), %rdx
	leaq	272(%rsp), %rdi
	movl	$badarg, %ecx
	callq	erlang.error.1
	movq	272(%rsp), %rax
	movq	280(%rsp), %rcx
	jmp	.LBB0_28
.LBB0_47:                               # %L12
	movq	(%rdx), %rcx
	movq	%rdx, 32(%rsp)          # 8-byte Spill
	movq	552(%rsp), %rsi
	movq	560(%rsp), %rdx
	leaq	320(%rsp), %rdi
	movl	$15, %r8d
	callq	bif_add
	movq	336(%rsp), %rax
	movq	320(%rsp), %rcx
	movq	328(%rsp), %rdx
	movq	%rdx, 560(%rsp)
	movq	%rcx, 552(%rsp)
	leaq	432(%rsp), %rbp
	movq	%rax, 432(%rsp)
	jmp	.LBB0_8
.LBB0_48:                               # %L8
	movq	(%rdx), %rcx
	movq	552(%rsp), %rsi
	movq	%rdx, %rbp
	movq	560(%rsp), %rdx
	leaq	368(%rsp), %rdi
	movl	$15, %r8d
	callq	cmp_2
	movq	%rbp, %rdx
	movq	368(%rsp), %rax
	movq	376(%rsp), %rcx
	cmpq	$0, 384(%rsp)
	movq	%rcx, 560(%rsp)
	movq	%rax, 552(%rsp)
	jns	.LBB0_5
.LBB0_49:                               # %L7
	movl	$badarg, %eax
	movq	%rax, 424(%rsp)
	movq	$-5, 424(%rsp)
	movq	552(%rsp), %rsi
	movq	560(%rsp), %rdx
	leaq	344(%rsp), %rdi
	movl	$badarg, %ecx
	callq	erlang.error.1
	movq	344(%rsp), %rax
	movq	352(%rsp), %rcx
	jmp	.LBB0_28
.LBB0_50:                               # %L3
	movq	528(%rsp), %rcx
	movq	$-5, 528(%rsp)
	movq	552(%rsp), %rsi
	movq	560(%rsp), %rdx
	movq	536(%rsp), %r8
	leaq	392(%rsp), %rdi
	callq	bif_sub
	movq	408(%rsp), %rax
	movq	392(%rsp), %rcx
	movq	400(%rsp), %rdx
	movq	%rdx, 560(%rsp)
	leaq	416(%rsp), %rdx
	movq	%rcx, 552(%rsp)
	movq	%rax, 416(%rsp)
	jmp	.LBB0_3
.Ltmp0:
	.size	bs15.gen2.3, .Ltmp0-bs15.gen2.3


	.section	".note.GNU-stack","",@progbits
